From e6a10ae35095cca10a35e91d78a6118263df85db Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Sat, 15 May 2021 08:46:32 +0100 Subject: [PATCH 001/192] [swift5][client] add option to generate or not the model additional properties (#9375) * [swift5][client] add option to generate or not the models additional properties * [swift5][client] update sample projects * [swift5][client] format code * [swift5][client] format code * [swift5][client] format code * [swift5][client] update docs --- bin/configs/swift5-rxswiftLibrary.yaml | 1 + docs/generators/swift5.md | 1 + .../languages/Swift5ClientCodegen.java | 14 +++ .../main/resources/swift5/Extensions.mustache | 4 +- .../resources/swift5/modelObject.mustache | 24 +++--- .../options/Swift5OptionsProvider.java | 2 + .../codegen/swift5/Swift5OptionsTest.java | 1 + .../Models/AdditionalPropertiesClass.swift | 4 +- .../Classes/OpenAPIs/Models/Animal.swift | 4 +- .../Classes/OpenAPIs/Models/ApiResponse.swift | 4 +- .../Models/ArrayOfArrayOfNumberOnly.swift | 4 +- .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/ArrayTest.swift | 4 +- .../OpenAPIs/Models/Capitalization.swift | 4 +- .../Classes/OpenAPIs/Models/Cat.swift | 4 +- .../Classes/OpenAPIs/Models/CatAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/Category.swift | 4 +- .../Classes/OpenAPIs/Models/ClassModel.swift | 4 +- .../Classes/OpenAPIs/Models/Client.swift | 4 +- .../Classes/OpenAPIs/Models/Dog.swift | 4 +- .../Classes/OpenAPIs/Models/DogAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/EnumArrays.swift | 4 +- .../Classes/OpenAPIs/Models/EnumTest.swift | 4 +- .../Classes/OpenAPIs/Models/File.swift | 4 +- .../OpenAPIs/Models/FileSchemaTestClass.swift | 4 +- .../Classes/OpenAPIs/Models/FormatTest.swift | 4 +- .../OpenAPIs/Models/HasOnlyReadOnly.swift | 4 +- .../Classes/OpenAPIs/Models/List.swift | 4 +- .../Classes/OpenAPIs/Models/MapTest.swift | 4 +- ...opertiesAndAdditionalPropertiesClass.swift | 4 +- .../OpenAPIs/Models/Model200Response.swift | 4 +- .../Classes/OpenAPIs/Models/Name.swift | 4 +- .../Classes/OpenAPIs/Models/NumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/Order.swift | 4 +- .../OpenAPIs/Models/OuterComposite.swift | 4 +- .../Classes/OpenAPIs/Models/Pet.swift | 4 +- .../OpenAPIs/Models/ReadOnlyFirst.swift | 4 +- .../Classes/OpenAPIs/Models/Return.swift | 4 +- .../OpenAPIs/Models/SpecialModelName.swift | 4 +- .../OpenAPIs/Models/StringBooleanMap.swift | 4 +- .../Classes/OpenAPIs/Models/Tag.swift | 4 +- .../OpenAPIs/Models/TypeHolderDefault.swift | 4 +- .../OpenAPIs/Models/TypeHolderExample.swift | 4 +- .../Classes/OpenAPIs/Models/User.swift | 4 +- .../Models/AdditionalPropertiesClass.swift | 4 +- .../Classes/OpenAPIs/Models/Animal.swift | 4 +- .../Classes/OpenAPIs/Models/ApiResponse.swift | 4 +- .../Models/ArrayOfArrayOfNumberOnly.swift | 4 +- .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/ArrayTest.swift | 4 +- .../OpenAPIs/Models/Capitalization.swift | 4 +- .../Classes/OpenAPIs/Models/Cat.swift | 4 +- .../Classes/OpenAPIs/Models/CatAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/Category.swift | 4 +- .../Classes/OpenAPIs/Models/ClassModel.swift | 4 +- .../Classes/OpenAPIs/Models/Client.swift | 4 +- .../Classes/OpenAPIs/Models/Dog.swift | 4 +- .../Classes/OpenAPIs/Models/DogAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/EnumArrays.swift | 4 +- .../Classes/OpenAPIs/Models/EnumTest.swift | 4 +- .../Classes/OpenAPIs/Models/File.swift | 4 +- .../OpenAPIs/Models/FileSchemaTestClass.swift | 4 +- .../Classes/OpenAPIs/Models/FormatTest.swift | 4 +- .../OpenAPIs/Models/HasOnlyReadOnly.swift | 4 +- .../Classes/OpenAPIs/Models/List.swift | 4 +- .../Classes/OpenAPIs/Models/MapTest.swift | 4 +- ...opertiesAndAdditionalPropertiesClass.swift | 4 +- .../OpenAPIs/Models/Model200Response.swift | 4 +- .../Classes/OpenAPIs/Models/Name.swift | 4 +- .../Classes/OpenAPIs/Models/NumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/Order.swift | 4 +- .../OpenAPIs/Models/OuterComposite.swift | 4 +- .../Classes/OpenAPIs/Models/Pet.swift | 4 +- .../OpenAPIs/Models/ReadOnlyFirst.swift | 4 +- .../Classes/OpenAPIs/Models/Return.swift | 4 +- .../OpenAPIs/Models/SpecialModelName.swift | 4 +- .../OpenAPIs/Models/StringBooleanMap.swift | 4 +- .../Classes/OpenAPIs/Models/Tag.swift | 4 +- .../OpenAPIs/Models/TypeHolderDefault.swift | 4 +- .../OpenAPIs/Models/TypeHolderExample.swift | 4 +- .../Classes/OpenAPIs/Models/User.swift | 4 +- .../Models/AdditionalPropertiesAnyType.swift | 4 +- .../Models/AdditionalPropertiesArray.swift | 4 +- .../Models/AdditionalPropertiesBoolean.swift | 4 +- .../Models/AdditionalPropertiesClass.swift | 4 +- .../Models/AdditionalPropertiesInteger.swift | 4 +- .../Models/AdditionalPropertiesNumber.swift | 4 +- .../Models/AdditionalPropertiesObject.swift | 4 +- .../Models/AdditionalPropertiesString.swift | 4 +- .../Classes/OpenAPIs/Models/Animal.swift | 4 +- .../Classes/OpenAPIs/Models/ApiResponse.swift | 4 +- .../Models/ArrayOfArrayOfNumberOnly.swift | 4 +- .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/ArrayTest.swift | 4 +- .../Classes/OpenAPIs/Models/BigCat.swift | 4 +- .../Classes/OpenAPIs/Models/BigCatAllOf.swift | 4 +- .../OpenAPIs/Models/Capitalization.swift | 4 +- .../Classes/OpenAPIs/Models/Cat.swift | 4 +- .../Classes/OpenAPIs/Models/CatAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/Category.swift | 4 +- .../Classes/OpenAPIs/Models/ClassModel.swift | 4 +- .../Classes/OpenAPIs/Models/Client.swift | 4 +- .../Classes/OpenAPIs/Models/Dog.swift | 4 +- .../Classes/OpenAPIs/Models/DogAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/EnumArrays.swift | 4 +- .../Classes/OpenAPIs/Models/EnumTest.swift | 4 +- .../Classes/OpenAPIs/Models/File.swift | 4 +- .../OpenAPIs/Models/FileSchemaTestClass.swift | 4 +- .../Classes/OpenAPIs/Models/FormatTest.swift | 4 +- .../OpenAPIs/Models/HasOnlyReadOnly.swift | 4 +- .../Classes/OpenAPIs/Models/List.swift | 4 +- .../Classes/OpenAPIs/Models/MapTest.swift | 4 +- ...opertiesAndAdditionalPropertiesClass.swift | 4 +- .../OpenAPIs/Models/Model200Response.swift | 4 +- .../Classes/OpenAPIs/Models/Name.swift | 4 +- .../Classes/OpenAPIs/Models/NumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/Order.swift | 4 +- .../OpenAPIs/Models/OuterComposite.swift | 4 +- .../Classes/OpenAPIs/Models/Pet.swift | 4 +- .../OpenAPIs/Models/ReadOnlyFirst.swift | 4 +- .../Classes/OpenAPIs/Models/Return.swift | 4 +- .../OpenAPIs/Models/SpecialModelName.swift | 4 +- .../OpenAPIs/Models/StringBooleanMap.swift | 4 +- .../Classes/OpenAPIs/Models/Tag.swift | 4 +- .../OpenAPIs/Models/TypeHolderDefault.swift | 4 +- .../OpenAPIs/Models/TypeHolderExample.swift | 4 +- .../Classes/OpenAPIs/Models/User.swift | 4 +- .../Classes/OpenAPIs/Models/XmlItem.swift | 4 +- .../Classes/OpenAPIs/Models/ApiResponse.swift | 4 +- .../Classes/OpenAPIs/Models/Category.swift | 4 +- .../Classes/OpenAPIs/Models/Order.swift | 4 +- .../Classes/OpenAPIs/Models/Pet.swift | 4 +- .../Classes/OpenAPIs/Models/Tag.swift | 4 +- .../Classes/OpenAPIs/Models/User.swift | 4 +- .../Models/AdditionalPropertiesClass.swift | 4 +- .../Classes/OpenAPIs/Models/Animal.swift | 4 +- .../Classes/OpenAPIs/Models/ApiResponse.swift | 4 +- .../Models/ArrayOfArrayOfNumberOnly.swift | 4 +- .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/ArrayTest.swift | 4 +- .../OpenAPIs/Models/Capitalization.swift | 4 +- .../Classes/OpenAPIs/Models/Cat.swift | 4 +- .../Classes/OpenAPIs/Models/CatAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/Category.swift | 4 +- .../Classes/OpenAPIs/Models/ClassModel.swift | 4 +- .../Classes/OpenAPIs/Models/Client.swift | 4 +- .../Classes/OpenAPIs/Models/Dog.swift | 4 +- .../Classes/OpenAPIs/Models/DogAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/EnumArrays.swift | 4 +- .../Classes/OpenAPIs/Models/EnumTest.swift | 4 +- .../Classes/OpenAPIs/Models/File.swift | 4 +- .../OpenAPIs/Models/FileSchemaTestClass.swift | 4 +- .../Classes/OpenAPIs/Models/FormatTest.swift | 4 +- .../OpenAPIs/Models/HasOnlyReadOnly.swift | 4 +- .../Classes/OpenAPIs/Models/List.swift | 4 +- .../Classes/OpenAPIs/Models/MapTest.swift | 4 +- ...opertiesAndAdditionalPropertiesClass.swift | 4 +- .../OpenAPIs/Models/Model200Response.swift | 4 +- .../Classes/OpenAPIs/Models/Name.swift | 4 +- .../Classes/OpenAPIs/Models/NumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/Order.swift | 4 +- .../OpenAPIs/Models/OuterComposite.swift | 4 +- .../Classes/OpenAPIs/Models/Pet.swift | 4 +- .../OpenAPIs/Models/ReadOnlyFirst.swift | 4 +- .../Classes/OpenAPIs/Models/Return.swift | 4 +- .../OpenAPIs/Models/SpecialModelName.swift | 4 +- .../OpenAPIs/Models/StringBooleanMap.swift | 4 +- .../Classes/OpenAPIs/Models/Tag.swift | 4 +- .../OpenAPIs/Models/TypeHolderDefault.swift | 4 +- .../OpenAPIs/Models/TypeHolderExample.swift | 4 +- .../Classes/OpenAPIs/Models/User.swift | 4 +- .../Models/AdditionalPropertiesClass.swift | 4 +- .../Classes/OpenAPIs/Models/Animal.swift | 4 +- .../Classes/OpenAPIs/Models/ApiResponse.swift | 4 +- .../Models/ArrayOfArrayOfNumberOnly.swift | 4 +- .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/ArrayTest.swift | 4 +- .../OpenAPIs/Models/Capitalization.swift | 4 +- .../Classes/OpenAPIs/Models/Cat.swift | 4 +- .../Classes/OpenAPIs/Models/CatAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/Category.swift | 4 +- .../Classes/OpenAPIs/Models/ClassModel.swift | 4 +- .../Classes/OpenAPIs/Models/Client.swift | 4 +- .../Classes/OpenAPIs/Models/Dog.swift | 4 +- .../Classes/OpenAPIs/Models/DogAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/EnumArrays.swift | 4 +- .../Classes/OpenAPIs/Models/EnumTest.swift | 4 +- .../Classes/OpenAPIs/Models/File.swift | 4 +- .../OpenAPIs/Models/FileSchemaTestClass.swift | 4 +- .../Classes/OpenAPIs/Models/FormatTest.swift | 4 +- .../OpenAPIs/Models/HasOnlyReadOnly.swift | 4 +- .../Classes/OpenAPIs/Models/List.swift | 4 +- .../Classes/OpenAPIs/Models/MapTest.swift | 4 +- ...opertiesAndAdditionalPropertiesClass.swift | 4 +- .../OpenAPIs/Models/Model200Response.swift | 4 +- .../Classes/OpenAPIs/Models/Name.swift | 4 +- .../Classes/OpenAPIs/Models/NumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/Order.swift | 4 +- .../OpenAPIs/Models/OuterComposite.swift | 4 +- .../Classes/OpenAPIs/Models/Pet.swift | 4 +- .../OpenAPIs/Models/ReadOnlyFirst.swift | 4 +- .../Classes/OpenAPIs/Models/Return.swift | 4 +- .../OpenAPIs/Models/SpecialModelName.swift | 4 +- .../OpenAPIs/Models/StringBooleanMap.swift | 4 +- .../Classes/OpenAPIs/Models/Tag.swift | 4 +- .../OpenAPIs/Models/TypeHolderDefault.swift | 4 +- .../OpenAPIs/Models/TypeHolderExample.swift | 4 +- .../Classes/OpenAPIs/Models/User.swift | 4 +- .../Models/AdditionalPropertiesClass.swift | 4 +- .../Classes/OpenAPIs/Models/Animal.swift | 4 +- .../Classes/OpenAPIs/Models/ApiResponse.swift | 4 +- .../Models/ArrayOfArrayOfNumberOnly.swift | 4 +- .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/ArrayTest.swift | 4 +- .../OpenAPIs/Models/Capitalization.swift | 4 +- .../Classes/OpenAPIs/Models/Cat.swift | 4 +- .../Classes/OpenAPIs/Models/CatAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/Category.swift | 4 +- .../Classes/OpenAPIs/Models/ClassModel.swift | 4 +- .../Classes/OpenAPIs/Models/Client.swift | 4 +- .../Classes/OpenAPIs/Models/Dog.swift | 4 +- .../Classes/OpenAPIs/Models/DogAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/EnumArrays.swift | 4 +- .../Classes/OpenAPIs/Models/EnumTest.swift | 4 +- .../Classes/OpenAPIs/Models/File.swift | 4 +- .../OpenAPIs/Models/FileSchemaTestClass.swift | 4 +- .../Classes/OpenAPIs/Models/FormatTest.swift | 4 +- .../OpenAPIs/Models/HasOnlyReadOnly.swift | 4 +- .../Classes/OpenAPIs/Models/List.swift | 4 +- .../Classes/OpenAPIs/Models/MapTest.swift | 4 +- ...opertiesAndAdditionalPropertiesClass.swift | 4 +- .../OpenAPIs/Models/Model200Response.swift | 4 +- .../Classes/OpenAPIs/Models/Name.swift | 4 +- .../Classes/OpenAPIs/Models/NumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/Order.swift | 4 +- .../OpenAPIs/Models/OuterComposite.swift | 4 +- .../Classes/OpenAPIs/Models/Pet.swift | 4 +- .../OpenAPIs/Models/ReadOnlyFirst.swift | 4 +- .../Classes/OpenAPIs/Models/Return.swift | 4 +- .../OpenAPIs/Models/SpecialModelName.swift | 4 +- .../OpenAPIs/Models/StringBooleanMap.swift | 4 +- .../Classes/OpenAPIs/Models/Tag.swift | 4 +- .../OpenAPIs/Models/TypeHolderDefault.swift | 4 +- .../OpenAPIs/Models/TypeHolderExample.swift | 4 +- .../Classes/OpenAPIs/Models/User.swift | 4 +- .../Models/AdditionalPropertiesClass.swift | 4 +- .../Classes/OpenAPIs/Models/Animal.swift | 4 +- .../Classes/OpenAPIs/Models/ApiResponse.swift | 4 +- .../Models/ArrayOfArrayOfNumberOnly.swift | 4 +- .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/ArrayTest.swift | 4 +- .../OpenAPIs/Models/Capitalization.swift | 4 +- .../Classes/OpenAPIs/Models/Cat.swift | 4 +- .../Classes/OpenAPIs/Models/CatAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/Category.swift | 4 +- .../Classes/OpenAPIs/Models/ClassModel.swift | 4 +- .../Classes/OpenAPIs/Models/Client.swift | 4 +- .../Classes/OpenAPIs/Models/Dog.swift | 4 +- .../Classes/OpenAPIs/Models/DogAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/EnumArrays.swift | 4 +- .../Classes/OpenAPIs/Models/EnumTest.swift | 4 +- .../Classes/OpenAPIs/Models/File.swift | 4 +- .../OpenAPIs/Models/FileSchemaTestClass.swift | 4 +- .../Classes/OpenAPIs/Models/FormatTest.swift | 4 +- .../OpenAPIs/Models/HasOnlyReadOnly.swift | 4 +- .../Classes/OpenAPIs/Models/List.swift | 4 +- .../Classes/OpenAPIs/Models/MapTest.swift | 4 +- ...opertiesAndAdditionalPropertiesClass.swift | 4 +- .../OpenAPIs/Models/Model200Response.swift | 4 +- .../Classes/OpenAPIs/Models/Name.swift | 4 +- .../Classes/OpenAPIs/Models/NumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/Order.swift | 4 +- .../OpenAPIs/Models/OuterComposite.swift | 4 +- .../Classes/OpenAPIs/Models/Pet.swift | 4 +- .../OpenAPIs/Models/ReadOnlyFirst.swift | 4 +- .../Classes/OpenAPIs/Models/Return.swift | 4 +- .../OpenAPIs/Models/SpecialModelName.swift | 4 +- .../OpenAPIs/Models/StringBooleanMap.swift | 4 +- .../Classes/OpenAPIs/Models/Tag.swift | 4 +- .../OpenAPIs/Models/TypeHolderDefault.swift | 4 +- .../OpenAPIs/Models/TypeHolderExample.swift | 4 +- .../Classes/OpenAPIs/Models/User.swift | 4 +- .../Models/AdditionalPropertiesClass.swift | 4 +- .../Classes/OpenAPIs/Models/Animal.swift | 4 +- .../Classes/OpenAPIs/Models/ApiResponse.swift | 4 +- .../Models/ArrayOfArrayOfNumberOnly.swift | 4 +- .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/ArrayTest.swift | 4 +- .../OpenAPIs/Models/Capitalization.swift | 4 +- .../Classes/OpenAPIs/Models/Cat.swift | 4 +- .../Classes/OpenAPIs/Models/CatAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/Category.swift | 4 +- .../Classes/OpenAPIs/Models/ClassModel.swift | 4 +- .../Classes/OpenAPIs/Models/Client.swift | 4 +- .../Classes/OpenAPIs/Models/Dog.swift | 4 +- .../Classes/OpenAPIs/Models/DogAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/EnumArrays.swift | 4 +- .../Classes/OpenAPIs/Models/EnumTest.swift | 4 +- .../Classes/OpenAPIs/Models/File.swift | 4 +- .../OpenAPIs/Models/FileSchemaTestClass.swift | 4 +- .../Classes/OpenAPIs/Models/FormatTest.swift | 4 +- .../OpenAPIs/Models/HasOnlyReadOnly.swift | 4 +- .../Classes/OpenAPIs/Models/List.swift | 4 +- .../Classes/OpenAPIs/Models/MapTest.swift | 4 +- ...opertiesAndAdditionalPropertiesClass.swift | 4 +- .../OpenAPIs/Models/Model200Response.swift | 4 +- .../Classes/OpenAPIs/Models/Name.swift | 4 +- .../Classes/OpenAPIs/Models/NumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/Order.swift | 4 +- .../OpenAPIs/Models/OuterComposite.swift | 4 +- .../Classes/OpenAPIs/Models/Pet.swift | 4 +- .../OpenAPIs/Models/ReadOnlyFirst.swift | 4 +- .../Classes/OpenAPIs/Models/Return.swift | 4 +- .../OpenAPIs/Models/SpecialModelName.swift | 4 +- .../OpenAPIs/Models/StringBooleanMap.swift | 4 +- .../Classes/OpenAPIs/Models/Tag.swift | 4 +- .../OpenAPIs/Models/TypeHolderDefault.swift | 4 +- .../OpenAPIs/Models/TypeHolderExample.swift | 4 +- .../Classes/OpenAPIs/Models/User.swift | 4 +- .../Classes/OpenAPIs/Extensions.swift | 86 ------------------- .../Models/AdditionalPropertiesClass.swift | 4 +- .../Classes/OpenAPIs/Models/Animal.swift | 4 +- .../Classes/OpenAPIs/Models/ApiResponse.swift | 4 +- .../Models/ArrayOfArrayOfNumberOnly.swift | 4 +- .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/ArrayTest.swift | 4 +- .../OpenAPIs/Models/Capitalization.swift | 4 +- .../Classes/OpenAPIs/Models/Cat.swift | 4 +- .../Classes/OpenAPIs/Models/CatAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/Category.swift | 4 +- .../Classes/OpenAPIs/Models/ClassModel.swift | 4 +- .../Classes/OpenAPIs/Models/Client.swift | 4 +- .../Classes/OpenAPIs/Models/Dog.swift | 4 +- .../Classes/OpenAPIs/Models/DogAllOf.swift | 4 +- .../Classes/OpenAPIs/Models/EnumArrays.swift | 4 +- .../Classes/OpenAPIs/Models/EnumTest.swift | 4 +- .../Classes/OpenAPIs/Models/File.swift | 4 +- .../OpenAPIs/Models/FileSchemaTestClass.swift | 4 +- .../Classes/OpenAPIs/Models/FormatTest.swift | 4 +- .../OpenAPIs/Models/HasOnlyReadOnly.swift | 4 +- .../Classes/OpenAPIs/Models/List.swift | 4 +- .../Classes/OpenAPIs/Models/MapTest.swift | 4 +- ...opertiesAndAdditionalPropertiesClass.swift | 4 +- .../OpenAPIs/Models/Model200Response.swift | 4 +- .../Classes/OpenAPIs/Models/Name.swift | 4 +- .../Classes/OpenAPIs/Models/NumberOnly.swift | 4 +- .../Classes/OpenAPIs/Models/Order.swift | 4 +- .../OpenAPIs/Models/OuterComposite.swift | 4 +- .../Classes/OpenAPIs/Models/Pet.swift | 4 +- .../OpenAPIs/Models/ReadOnlyFirst.swift | 4 +- .../Classes/OpenAPIs/Models/Return.swift | 4 +- .../OpenAPIs/Models/SpecialModelName.swift | 4 +- .../OpenAPIs/Models/StringBooleanMap.swift | 28 +----- .../Classes/OpenAPIs/Models/Tag.swift | 4 +- .../OpenAPIs/Models/TypeHolderDefault.swift | 4 +- .../OpenAPIs/Models/TypeHolderExample.swift | 4 +- .../Classes/OpenAPIs/Models/User.swift | 4 +- .../Models/AdditionalPropertiesClass.swift | 4 +- .../PetstoreClient/Models/Animal.swift | 4 +- .../PetstoreClient/Models/ApiResponse.swift | 4 +- .../Models/ArrayOfArrayOfNumberOnly.swift | 4 +- .../Models/ArrayOfNumberOnly.swift | 4 +- .../PetstoreClient/Models/ArrayTest.swift | 4 +- .../Models/Capitalization.swift | 4 +- .../Sources/PetstoreClient/Models/Cat.swift | 4 +- .../PetstoreClient/Models/CatAllOf.swift | 4 +- .../PetstoreClient/Models/Category.swift | 4 +- .../PetstoreClient/Models/ClassModel.swift | 4 +- .../PetstoreClient/Models/Client.swift | 4 +- .../Sources/PetstoreClient/Models/Dog.swift | 4 +- .../PetstoreClient/Models/DogAllOf.swift | 4 +- .../PetstoreClient/Models/EnumArrays.swift | 4 +- .../PetstoreClient/Models/EnumTest.swift | 4 +- .../Sources/PetstoreClient/Models/File.swift | 4 +- .../Models/FileSchemaTestClass.swift | 4 +- .../PetstoreClient/Models/FormatTest.swift | 4 +- .../Models/HasOnlyReadOnly.swift | 4 +- .../Sources/PetstoreClient/Models/List.swift | 4 +- .../PetstoreClient/Models/MapTest.swift | 4 +- ...opertiesAndAdditionalPropertiesClass.swift | 4 +- .../Models/Model200Response.swift | 4 +- .../Sources/PetstoreClient/Models/Name.swift | 4 +- .../PetstoreClient/Models/NumberOnly.swift | 4 +- .../Sources/PetstoreClient/Models/Order.swift | 4 +- .../Models/OuterComposite.swift | 4 +- .../Sources/PetstoreClient/Models/Pet.swift | 4 +- .../PetstoreClient/Models/ReadOnlyFirst.swift | 4 +- .../PetstoreClient/Models/Return.swift | 4 +- .../Models/SpecialModelName.swift | 4 +- .../Models/StringBooleanMap.swift | 4 +- .../Sources/PetstoreClient/Models/Tag.swift | 4 +- .../Models/TypeHolderDefault.swift | 4 +- .../Models/TypeHolderExample.swift | 4 +- .../Sources/PetstoreClient/Models/User.swift | 4 +- 394 files changed, 434 insertions(+), 1267 deletions(-) diff --git a/bin/configs/swift5-rxswiftLibrary.yaml b/bin/configs/swift5-rxswiftLibrary.yaml index 49d0e24cca5..8751d347912 100644 --- a/bin/configs/swift5-rxswiftLibrary.yaml +++ b/bin/configs/swift5-rxswiftLibrary.yaml @@ -10,3 +10,4 @@ additionalProperties: projectName: PetstoreClient podHomepage: https://github.com/openapitools/openapi-generator useBacktickEscapes: true + generateModelAdditionalProperties: false diff --git a/docs/generators/swift5.md b/docs/generators/swift5.md index 9774b434f13..eb9bb6c3d71 100644 --- a/docs/generators/swift5.md +++ b/docs/generators/swift5.md @@ -11,6 +11,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |apiNamePrefix|Prefix that will be appended to all API names ('tags'). Default: empty string. e.g. Pet => Pet.| |null| |disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true| |ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true| +|generateModelAdditionalProperties|Generate model additional properties (default: true)| |true| |hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true| |legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|
**true**
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
**false**
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
|true| |lenientTypeCast|Accept and cast values for simple types (string->bool, string->int, int->string)| |false| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index 5d7f86a40d3..a4ab7ecec20 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -64,6 +64,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig public static final String USE_SPM_FILE_STRUCTURE = "useSPMFileStructure"; public static final String SWIFT_PACKAGE_PATH = "swiftPackagePath"; public static final String USE_BACKTICK_ESCAPES = "useBacktickEscapes"; + public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES = "generateModelAdditionalProperties"; protected static final String LIBRARY_ALAMOFIRE = "alamofire"; protected static final String LIBRARY_URLSESSION = "urlsession"; protected static final String RESPONSE_LIBRARY_PROMISE_KIT = "PromiseKit"; @@ -80,6 +81,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig protected boolean useSPMFileStructure = false; protected String swiftPackagePath = "Classes" + File.separator + "OpenAPIs"; protected boolean useBacktickEscapes = false; + protected boolean generateModelAdditionalProperties = true; protected String[] responseAs = new String[0]; protected String sourceFolder = swiftPackagePath; protected HashSet objcReservedWords; @@ -267,6 +269,9 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig cliOptions.add(new CliOption(USE_BACKTICK_ESCAPES, "Escape reserved words using backticks (default: false)") .defaultValue(Boolean.FALSE.toString())); + cliOptions.add(new CliOption(GENERATE_MODEL_ADDITIONAL_PROPERTIES, + "Generate model additional properties (default: true)") + .defaultValue(Boolean.TRUE.toString())); cliOptions.add(new CliOption(CodegenConstants.API_NAME_PREFIX, CodegenConstants.API_NAME_PREFIX_DESC)); cliOptions.add(new CliOption(USE_SPM_FILE_STRUCTURE, "Use SPM file structure" @@ -448,6 +453,11 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig setUseBacktickEscapes(convertPropertyToBooleanAndWriteBack(USE_BACKTICK_ESCAPES)); } + if (additionalProperties.containsKey(GENERATE_MODEL_ADDITIONAL_PROPERTIES)) { + setGenerateModelAdditionalProperties(convertPropertyToBooleanAndWriteBack(GENERATE_MODEL_ADDITIONAL_PROPERTIES)); + } + additionalProperties.put(GENERATE_MODEL_ADDITIONAL_PROPERTIES, generateModelAdditionalProperties); + setLenientTypeCast(convertPropertyToBooleanAndWriteBack(LENIENT_TYPE_CAST)); // make api and model doc path available in mustache template @@ -862,6 +872,10 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig this.useBacktickEscapes = useBacktickEscapes; } + public void setGenerateModelAdditionalProperties(boolean generateModelAdditionalProperties) { + this.generateModelAdditionalProperties = generateModelAdditionalProperties; + } + @Override public String toEnumValue(String value, String datatype) { // for string, array of string diff --git a/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache b/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache index 7e6dcc1994f..7a7ec22715c 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache @@ -92,7 +92,7 @@ extension UUID: JSONEncodable { func encodeToJSON() -> Any { return self.uuidString } -} +}{{#generateModelAdditionalProperties}} extension String: CodingKey { @@ -178,7 +178,7 @@ extension KeyedDecodingContainerProtocol { return map } -} +}{{/generateModelAdditionalProperties}} extension HTTPURLResponse { var isStatusCodeSuccessful: Bool { diff --git a/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache b/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache index c119f723a2a..bc6f9c64e70 100644 --- a/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache @@ -36,12 +36,13 @@ {{/allVars}} } {{/hasVars}} + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum CodingKeys: {{#hasVars}}String, {{/hasVars}}CodingKey, CaseIterable { {{#allVars}} case {{{name}}}{{#vendorExtensions.x-codegen-escaped-property-name}} = "{{{baseName}}}"{{/vendorExtensions.x-codegen-escaped-property-name}} {{/allVars}} - } -{{#additionalPropertiesType}} + }{{#generateModelAdditionalProperties}}{{#additionalPropertiesType}} + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#readonlyProperties}}private(set) {{/readonlyProperties}}var additionalProperties: [String: {{{additionalPropertiesType}}}] = [:] {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} subscript(key: String) -> {{{additionalPropertiesType}}}? { @@ -55,8 +56,7 @@ set { additionalProperties[key] = newValue } - } -{{/additionalPropertiesType}} + }{{/additionalPropertiesType}}{{/generateModelAdditionalProperties}} // Encodable protocol methods @@ -65,13 +65,14 @@ {{#allVars}} try container.encode{{^required}}IfPresent{{/required}}({{{name}}}, forKey: .{{{name}}}) {{/allVars}} + {{#generateModelAdditionalProperties}} {{#additionalPropertiesType}} var additionalPropertiesContainer = encoder.container(keyedBy: String.self) try additionalPropertiesContainer.encodeMap(additionalProperties) {{/additionalPropertiesType}} - } + {{/generateModelAdditionalProperties}} + }{{#generateModelAdditionalProperties}}{{#additionalPropertiesType}} -{{#additionalPropertiesType}} // Decodable protocol methods {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}}{{#objcCompatible}} required{{/objcCompatible}} init(from decoder: Decoder) throws { @@ -85,22 +86,19 @@ nonAdditionalPropertyKeys.insert("{{{baseName}}}") {{/allVars}} additionalProperties = try container.decodeMap({{{additionalPropertiesType}}}.self, excludedKeys: nonAdditionalPropertyKeys) - } -{{/additionalPropertiesType}} + }{{/additionalPropertiesType}}{{/generateModelAdditionalProperties}}{{^objcCompatible}}{{#useClasses}} -{{^objcCompatible}}{{#useClasses}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func == (lhs: {{classname}}, rhs: {{classname}}) -> Bool { {{#allVars}} lhs.{{{name}}} == rhs.{{{name}}}{{^-last}} &&{{/-last}} {{/allVars}} - {{#additionalPropertiesType}}{{#hasVars}}&& {{/hasVars}}lhs.additionalProperties == rhs.additionalProperties{{/additionalPropertiesType}} + {{#generateModelAdditionalProperties}}{{#additionalPropertiesType}}{{#hasVars}}&& {{/hasVars}}lhs.additionalProperties == rhs.additionalProperties{{/additionalPropertiesType}}{{/generateModelAdditionalProperties}} } {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func hash(into hasher: inout Hasher) { {{#allVars}} hasher.combine({{{name}}}{{^required}}?{{/required}}.hashValue) {{/allVars}} - {{#additionalPropertiesType}}hasher.combine(additionalProperties.hashValue){{/additionalPropertiesType}} - } -{{/useClasses}}{{/objcCompatible}} + {{#generateModelAdditionalProperties}}{{#additionalPropertiesType}}hasher.combine(additionalProperties.hashValue){{/additionalPropertiesType}}{{/generateModelAdditionalProperties}} + }{{/useClasses}}{{/objcCompatible}} } \ No newline at end of file diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java index 9e2a4a3b36f..5ed11f1036c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java @@ -47,6 +47,7 @@ public class Swift5OptionsProvider implements OptionsProvider { public static final String READONLY_PROPERTIES_VALUE = "false"; public static final String SWIFT_USE_API_NAMESPACE_VALUE = "swiftUseApiNamespace"; public static final String USE_BACKTICKS_ESCAPES_VALUE = "false"; + public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE = "true"; public static final String ALLOW_UNICODE_IDENTIFIERS_VALUE = "false"; public static final String PREPEND_FORM_OR_BODY_PARAMETERS_VALUE = "true"; public static final String LIBRARY_VALUE = "alamofire"; @@ -91,6 +92,7 @@ public class Swift5OptionsProvider implements OptionsProvider { .put(CodegenConstants.DISALLOW_ADDITIONAL_PROPERTIES_IF_NOT_PRESENT, "true") .put(Swift5ClientCodegen.USE_SPM_FILE_STRUCTURE, USE_SPM_FILE_STRUCTURE_VALUE) .put(Swift5ClientCodegen.SWIFT_PACKAGE_PATH, SWIFT_PACKAGE_PATH_VALUE) + .put(Swift5ClientCodegen.GENERATE_MODEL_ADDITIONAL_PROPERTIES, GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE) .build(); } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5OptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5OptionsTest.java index 65e97494cfa..ca237bb7daf 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5OptionsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5OptionsTest.java @@ -48,5 +48,6 @@ public class Swift5OptionsTest extends AbstractOptionsTest { verify(clientCodegen).setLenientTypeCast(Boolean.parseBoolean(Swift5OptionsProvider.LENIENT_TYPE_CAST_VALUE)); verify(clientCodegen).setPrependFormOrBodyParameters(Boolean.valueOf(Swift5OptionsProvider.PREPEND_FORM_OR_BODY_PARAMETERS_VALUE)); verify(clientCodegen).setReadonlyProperties(Boolean.parseBoolean(Swift5OptionsProvider.READONLY_PROPERTIES_VALUE)); + verify(clientCodegen).setGenerateModelAdditionalProperties(Boolean.parseBoolean(Swift5OptionsProvider.GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE)); } } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 75ab9bc8d0a..23c4af6d4ff 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -17,6 +17,7 @@ public struct AdditionalPropertiesClass: Codable, Hashable { self.mapString = mapString self.mapMapString = mapMapString } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapString = "map_string" case mapMapString = "map_map_string" @@ -29,7 +30,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapString, forKey: .mapString) try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 0f825cf24d0..a422ee73b55 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -17,6 +17,7 @@ public struct Animal: Codable, Hashable { self.className = className self.color = color } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -29,7 +30,4 @@ public struct Animal: Codable, Hashable { try container.encode(className, forKey: .className) try container.encodeIfPresent(color, forKey: .color) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 2b66af2dc94..7f7c6a34bdf 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -19,6 +19,7 @@ public struct ApiResponse: Codable, Hashable { self.type = type self.message = message } + public enum CodingKeys: String, CodingKey, CaseIterable { case code case type @@ -33,7 +34,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(type, forKey: .type) try container.encodeIfPresent(message, forKey: .message) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 06f0640475c..0221229e7dd 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { public init(arrayArrayNumber: [[Double]]? = nil) { self.arrayArrayNumber = arrayArrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayArrayNumber = "ArrayArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index 8c50c7fa1e4..b5c7ca501e7 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfNumberOnly: Codable, Hashable { public init(arrayNumber: [Double]? = nil) { self.arrayNumber = arrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayNumber = "ArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 461ec7cd9ac..9074d9ab4aa 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -19,6 +19,7 @@ public struct ArrayTest: Codable, Hashable { self.arrayArrayOfInteger = arrayArrayOfInteger self.arrayArrayOfModel = arrayArrayOfModel } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayOfString = "array_of_string" case arrayArrayOfInteger = "array_array_of_integer" @@ -33,7 +34,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfInteger, forKey: .arrayArrayOfInteger) try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index fbe62983d5e..f0ca1a76f27 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -26,6 +26,7 @@ public struct Capitalization: Codable, Hashable { self.sCAETHFlowPoints = sCAETHFlowPoints self.ATT_NAME = ATT_NAME } + public enum CodingKeys: String, CodingKey, CaseIterable { case smallCamel case capitalCamel = "CapitalCamel" @@ -46,7 +47,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(sCAETHFlowPoints, forKey: .sCAETHFlowPoints) try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 7f3a86932f1..89aaea45b91 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -19,6 +19,7 @@ public struct Cat: Codable, Hashable { self.color = color self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8df23954832..c80f7549e69 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -15,6 +15,7 @@ public struct CatAllOf: Codable, Hashable { public init(declawed: Bool? = nil) { self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case declawed } @@ -25,7 +26,4 @@ public struct CatAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 4109db4d1ef..0def88b1fc8 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -17,6 +17,7 @@ public struct Category: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Category: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encode(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 7269ddbef6f..90e4986e7f6 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -16,6 +16,7 @@ public struct ClassModel: Codable, Hashable { public init(_class: String? = nil) { self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case _class } @@ -26,7 +27,4 @@ public struct ClassModel: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 7d6eff2ffe1..4e031806901 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -15,6 +15,7 @@ public struct Client: Codable, Hashable { public init(client: String? = nil) { self.client = client } + public enum CodingKeys: String, CodingKey, CaseIterable { case client } @@ -25,7 +26,4 @@ public struct Client: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(client, forKey: .client) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index b5f2bcea38a..2387b3e7b2c 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -19,6 +19,7 @@ public struct Dog: Codable, Hashable { self.color = color self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 1bfa23d7bc6..4317578cee4 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -15,6 +15,7 @@ public struct DogAllOf: Codable, Hashable { public init(breed: String? = nil) { self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case breed } @@ -25,7 +26,4 @@ public struct DogAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 73368c42143..01b8960fe34 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -25,6 +25,7 @@ public struct EnumArrays: Codable, Hashable { self.justSymbol = justSymbol self.arrayEnum = arrayEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case justSymbol = "just_symbol" case arrayEnum = "array_enum" @@ -37,7 +38,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(justSymbol, forKey: .justSymbol) try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 60a81bcac77..9c8e2e9ac84 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -41,6 +41,7 @@ public struct EnumTest: Codable, Hashable { self.enumNumber = enumNumber self.outerEnum = outerEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case enumString = "enum_string" case enumStringRequired = "enum_string_required" @@ -59,7 +60,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(enumNumber, forKey: .enumNumber) try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 90283656d1b..2a9c769ca6c 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -17,6 +17,7 @@ public struct File: Codable, Hashable { public init(sourceURI: String? = nil) { self.sourceURI = sourceURI } + public enum CodingKeys: String, CodingKey, CaseIterable { case sourceURI } @@ -27,7 +28,4 @@ public struct File: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index cff92673bbe..cd8a9a0e9fe 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -17,6 +17,7 @@ public struct FileSchemaTestClass: Codable, Hashable { self.file = file self.files = files } + public enum CodingKeys: String, CodingKey, CaseIterable { case file case files @@ -29,7 +30,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(file, forKey: .file) try container.encodeIfPresent(files, forKey: .files) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index fc86676eec3..11493f7ce28 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -39,6 +39,7 @@ public struct FormatTest: Codable, Hashable { self.uuid = uuid self.password = password } + public enum CodingKeys: String, CodingKey, CaseIterable { case integer case int32 @@ -73,7 +74,4 @@ public struct FormatTest: Codable, Hashable { try container.encodeIfPresent(uuid, forKey: .uuid) try container.encode(password, forKey: .password) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index d7960f5c800..b7a1449830a 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -17,6 +17,7 @@ public struct HasOnlyReadOnly: Codable, Hashable { self.bar = bar self.foo = foo } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case foo @@ -29,7 +30,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(foo, forKey: .foo) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index c5d4f2cae56..8d484cf0a33 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -15,6 +15,7 @@ public struct List: Codable, Hashable { public init(_123list: String? = nil) { self._123list = _123list } + public enum CodingKeys: String, CodingKey, CaseIterable { case _123list = "123-list" } @@ -25,7 +26,4 @@ public struct List: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_123list, forKey: ._123list) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index b54bd01e5dc..4b56880fed6 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -25,6 +25,7 @@ public struct MapTest: Codable, Hashable { self.directMap = directMap self.indirectMap = indirectMap } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapMapOfString = "map_map_of_string" case mapOfEnumString = "map_of_enum_string" @@ -41,7 +42,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(directMap, forKey: .directMap) try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index c8f639ef43d..f07f8132af7 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -19,6 +19,7 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { self.dateTime = dateTime self.map = map } + public enum CodingKeys: String, CodingKey, CaseIterable { case uuid case dateTime @@ -33,7 +34,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(dateTime, forKey: .dateTime) try container.encodeIfPresent(map, forKey: .map) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 5368032f09b..dc99e8cb8dd 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -18,6 +18,7 @@ public struct Model200Response: Codable, Hashable { self.name = name self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case _class = "class" @@ -30,7 +31,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index 84a40e1c101..d9f893c86ba 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -22,6 +22,7 @@ public struct Name: Codable, Hashable { self.property = property self._123number = _123number } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case snakeCase = "snake_case" @@ -38,7 +39,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(property, forKey: .property) try container.encodeIfPresent(_123number, forKey: ._123number) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 710f41648f9..8c1ad5ddd4b 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -15,6 +15,7 @@ public struct NumberOnly: Codable, Hashable { public init(justNumber: Double? = nil) { self.justNumber = justNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case justNumber = "JustNumber" } @@ -25,7 +26,4 @@ public struct NumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(justNumber, forKey: .justNumber) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 15726ab16a4..c474a6e657b 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -31,6 +31,7 @@ public struct Order: Codable, Hashable { self.status = status self.complete = complete } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case petId @@ -51,7 +52,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) try container.encodeIfPresent(complete, forKey: .complete) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 36904afbd50..cdaad279b0f 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -19,6 +19,7 @@ public struct OuterComposite: Codable, Hashable { self.myString = myString self.myBoolean = myBoolean } + public enum CodingKeys: String, CodingKey, CaseIterable { case myNumber = "my_number" case myString = "my_string" @@ -33,7 +34,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myString, forKey: .myString) try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 7a1c2826a19..ea9ece39161 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -31,6 +31,7 @@ public struct Pet: Codable, Hashable { self.tags = tags self.status = status } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case category @@ -51,7 +52,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(tags, forKey: .tags) try container.encodeIfPresent(status, forKey: .status) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 38fb57af328..d08a673dbf4 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -17,6 +17,7 @@ public struct ReadOnlyFirst: Codable, Hashable { self.bar = bar self.baz = baz } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case baz @@ -29,7 +30,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(baz, forKey: .baz) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index ed7e538a06d..d34dc71ec37 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -16,6 +16,7 @@ public struct Return: Codable, Hashable { public init(_return: Int? = nil) { self._return = _return } + public enum CodingKeys: String, CodingKey, CaseIterable { case _return = "return" } @@ -26,7 +27,4 @@ public struct Return: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_return, forKey: ._return) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index 18747e071bc..e0e0ea6ae29 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -15,6 +15,7 @@ public struct SpecialModelName: Codable, Hashable { public init(specialPropertyName: Int64? = nil) { self.specialPropertyName = specialPropertyName } + public enum CodingKeys: String, CodingKey, CaseIterable { case specialPropertyName = "$special[property.name]" } @@ -25,7 +26,4 @@ public struct SpecialModelName: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 0699c25ff7e..8fb1b40e5ee 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -10,8 +10,10 @@ import AnyCodable public struct StringBooleanMap: Codable, Hashable { + public enum CodingKeys: CodingKey, CaseIterable { } + public var additionalProperties: [String: Bool] = [:] public subscript(key: String) -> Bool? { @@ -43,6 +45,4 @@ public struct StringBooleanMap: Codable, Hashable { var nonAdditionalPropertyKeys = Set() additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 11c5f7a750b..5d90c8a7400 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -17,6 +17,7 @@ public struct Tag: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encodeIfPresent(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 35b1a5833b9..e6e6530dc51 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -23,6 +23,7 @@ public struct TypeHolderDefault: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 37277a4ac00..17c811b2edc 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -23,6 +23,7 @@ public struct TypeHolderExample: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 2bbc31806ff..f93cecfc5d0 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -30,6 +30,7 @@ public struct User: Codable, Hashable { self.phone = phone self.userStatus = userStatus } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case username @@ -54,7 +55,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(phone, forKey: .phone) try container.encodeIfPresent(userStatus, forKey: .userStatus) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 75ab9bc8d0a..23c4af6d4ff 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -17,6 +17,7 @@ public struct AdditionalPropertiesClass: Codable, Hashable { self.mapString = mapString self.mapMapString = mapMapString } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapString = "map_string" case mapMapString = "map_map_string" @@ -29,7 +30,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapString, forKey: .mapString) try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 0f825cf24d0..a422ee73b55 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -17,6 +17,7 @@ public struct Animal: Codable, Hashable { self.className = className self.color = color } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -29,7 +30,4 @@ public struct Animal: Codable, Hashable { try container.encode(className, forKey: .className) try container.encodeIfPresent(color, forKey: .color) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 2b66af2dc94..7f7c6a34bdf 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -19,6 +19,7 @@ public struct ApiResponse: Codable, Hashable { self.type = type self.message = message } + public enum CodingKeys: String, CodingKey, CaseIterable { case code case type @@ -33,7 +34,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(type, forKey: .type) try container.encodeIfPresent(message, forKey: .message) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 06f0640475c..0221229e7dd 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { public init(arrayArrayNumber: [[Double]]? = nil) { self.arrayArrayNumber = arrayArrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayArrayNumber = "ArrayArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index 8c50c7fa1e4..b5c7ca501e7 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfNumberOnly: Codable, Hashable { public init(arrayNumber: [Double]? = nil) { self.arrayNumber = arrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayNumber = "ArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 461ec7cd9ac..9074d9ab4aa 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -19,6 +19,7 @@ public struct ArrayTest: Codable, Hashable { self.arrayArrayOfInteger = arrayArrayOfInteger self.arrayArrayOfModel = arrayArrayOfModel } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayOfString = "array_of_string" case arrayArrayOfInteger = "array_array_of_integer" @@ -33,7 +34,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfInteger, forKey: .arrayArrayOfInteger) try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index fbe62983d5e..f0ca1a76f27 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -26,6 +26,7 @@ public struct Capitalization: Codable, Hashable { self.sCAETHFlowPoints = sCAETHFlowPoints self.ATT_NAME = ATT_NAME } + public enum CodingKeys: String, CodingKey, CaseIterable { case smallCamel case capitalCamel = "CapitalCamel" @@ -46,7 +47,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(sCAETHFlowPoints, forKey: .sCAETHFlowPoints) try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 7f3a86932f1..89aaea45b91 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -19,6 +19,7 @@ public struct Cat: Codable, Hashable { self.color = color self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8df23954832..c80f7549e69 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -15,6 +15,7 @@ public struct CatAllOf: Codable, Hashable { public init(declawed: Bool? = nil) { self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case declawed } @@ -25,7 +26,4 @@ public struct CatAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 4109db4d1ef..0def88b1fc8 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -17,6 +17,7 @@ public struct Category: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Category: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encode(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 7269ddbef6f..90e4986e7f6 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -16,6 +16,7 @@ public struct ClassModel: Codable, Hashable { public init(_class: String? = nil) { self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case _class } @@ -26,7 +27,4 @@ public struct ClassModel: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 7d6eff2ffe1..4e031806901 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -15,6 +15,7 @@ public struct Client: Codable, Hashable { public init(client: String? = nil) { self.client = client } + public enum CodingKeys: String, CodingKey, CaseIterable { case client } @@ -25,7 +26,4 @@ public struct Client: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(client, forKey: .client) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index b5f2bcea38a..2387b3e7b2c 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -19,6 +19,7 @@ public struct Dog: Codable, Hashable { self.color = color self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 1bfa23d7bc6..4317578cee4 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -15,6 +15,7 @@ public struct DogAllOf: Codable, Hashable { public init(breed: String? = nil) { self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case breed } @@ -25,7 +26,4 @@ public struct DogAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 73368c42143..01b8960fe34 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -25,6 +25,7 @@ public struct EnumArrays: Codable, Hashable { self.justSymbol = justSymbol self.arrayEnum = arrayEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case justSymbol = "just_symbol" case arrayEnum = "array_enum" @@ -37,7 +38,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(justSymbol, forKey: .justSymbol) try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 60a81bcac77..9c8e2e9ac84 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -41,6 +41,7 @@ public struct EnumTest: Codable, Hashable { self.enumNumber = enumNumber self.outerEnum = outerEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case enumString = "enum_string" case enumStringRequired = "enum_string_required" @@ -59,7 +60,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(enumNumber, forKey: .enumNumber) try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 90283656d1b..2a9c769ca6c 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -17,6 +17,7 @@ public struct File: Codable, Hashable { public init(sourceURI: String? = nil) { self.sourceURI = sourceURI } + public enum CodingKeys: String, CodingKey, CaseIterable { case sourceURI } @@ -27,7 +28,4 @@ public struct File: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index cff92673bbe..cd8a9a0e9fe 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -17,6 +17,7 @@ public struct FileSchemaTestClass: Codable, Hashable { self.file = file self.files = files } + public enum CodingKeys: String, CodingKey, CaseIterable { case file case files @@ -29,7 +30,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(file, forKey: .file) try container.encodeIfPresent(files, forKey: .files) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index fc86676eec3..11493f7ce28 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -39,6 +39,7 @@ public struct FormatTest: Codable, Hashable { self.uuid = uuid self.password = password } + public enum CodingKeys: String, CodingKey, CaseIterable { case integer case int32 @@ -73,7 +74,4 @@ public struct FormatTest: Codable, Hashable { try container.encodeIfPresent(uuid, forKey: .uuid) try container.encode(password, forKey: .password) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index d7960f5c800..b7a1449830a 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -17,6 +17,7 @@ public struct HasOnlyReadOnly: Codable, Hashable { self.bar = bar self.foo = foo } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case foo @@ -29,7 +30,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(foo, forKey: .foo) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index c5d4f2cae56..8d484cf0a33 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -15,6 +15,7 @@ public struct List: Codable, Hashable { public init(_123list: String? = nil) { self._123list = _123list } + public enum CodingKeys: String, CodingKey, CaseIterable { case _123list = "123-list" } @@ -25,7 +26,4 @@ public struct List: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_123list, forKey: ._123list) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index b54bd01e5dc..4b56880fed6 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -25,6 +25,7 @@ public struct MapTest: Codable, Hashable { self.directMap = directMap self.indirectMap = indirectMap } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapMapOfString = "map_map_of_string" case mapOfEnumString = "map_of_enum_string" @@ -41,7 +42,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(directMap, forKey: .directMap) try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index c8f639ef43d..f07f8132af7 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -19,6 +19,7 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { self.dateTime = dateTime self.map = map } + public enum CodingKeys: String, CodingKey, CaseIterable { case uuid case dateTime @@ -33,7 +34,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(dateTime, forKey: .dateTime) try container.encodeIfPresent(map, forKey: .map) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 5368032f09b..dc99e8cb8dd 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -18,6 +18,7 @@ public struct Model200Response: Codable, Hashable { self.name = name self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case _class = "class" @@ -30,7 +31,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index 84a40e1c101..d9f893c86ba 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -22,6 +22,7 @@ public struct Name: Codable, Hashable { self.property = property self._123number = _123number } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case snakeCase = "snake_case" @@ -38,7 +39,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(property, forKey: .property) try container.encodeIfPresent(_123number, forKey: ._123number) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 710f41648f9..8c1ad5ddd4b 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -15,6 +15,7 @@ public struct NumberOnly: Codable, Hashable { public init(justNumber: Double? = nil) { self.justNumber = justNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case justNumber = "JustNumber" } @@ -25,7 +26,4 @@ public struct NumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(justNumber, forKey: .justNumber) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 15726ab16a4..c474a6e657b 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -31,6 +31,7 @@ public struct Order: Codable, Hashable { self.status = status self.complete = complete } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case petId @@ -51,7 +52,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) try container.encodeIfPresent(complete, forKey: .complete) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 36904afbd50..cdaad279b0f 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -19,6 +19,7 @@ public struct OuterComposite: Codable, Hashable { self.myString = myString self.myBoolean = myBoolean } + public enum CodingKeys: String, CodingKey, CaseIterable { case myNumber = "my_number" case myString = "my_string" @@ -33,7 +34,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myString, forKey: .myString) try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 7a1c2826a19..ea9ece39161 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -31,6 +31,7 @@ public struct Pet: Codable, Hashable { self.tags = tags self.status = status } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case category @@ -51,7 +52,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(tags, forKey: .tags) try container.encodeIfPresent(status, forKey: .status) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 38fb57af328..d08a673dbf4 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -17,6 +17,7 @@ public struct ReadOnlyFirst: Codable, Hashable { self.bar = bar self.baz = baz } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case baz @@ -29,7 +30,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(baz, forKey: .baz) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index ed7e538a06d..d34dc71ec37 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -16,6 +16,7 @@ public struct Return: Codable, Hashable { public init(_return: Int? = nil) { self._return = _return } + public enum CodingKeys: String, CodingKey, CaseIterable { case _return = "return" } @@ -26,7 +27,4 @@ public struct Return: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_return, forKey: ._return) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index 18747e071bc..e0e0ea6ae29 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -15,6 +15,7 @@ public struct SpecialModelName: Codable, Hashable { public init(specialPropertyName: Int64? = nil) { self.specialPropertyName = specialPropertyName } + public enum CodingKeys: String, CodingKey, CaseIterable { case specialPropertyName = "$special[property.name]" } @@ -25,7 +26,4 @@ public struct SpecialModelName: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 0699c25ff7e..8fb1b40e5ee 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -10,8 +10,10 @@ import AnyCodable public struct StringBooleanMap: Codable, Hashable { + public enum CodingKeys: CodingKey, CaseIterable { } + public var additionalProperties: [String: Bool] = [:] public subscript(key: String) -> Bool? { @@ -43,6 +45,4 @@ public struct StringBooleanMap: Codable, Hashable { var nonAdditionalPropertyKeys = Set() additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 11c5f7a750b..5d90c8a7400 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -17,6 +17,7 @@ public struct Tag: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encodeIfPresent(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 35b1a5833b9..e6e6530dc51 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -23,6 +23,7 @@ public struct TypeHolderDefault: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 37277a4ac00..17c811b2edc 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -23,6 +23,7 @@ public struct TypeHolderExample: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 2bbc31806ff..f93cecfc5d0 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -30,6 +30,7 @@ public struct User: Codable, Hashable { self.phone = phone self.userStatus = userStatus } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case username @@ -54,7 +55,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(phone, forKey: .phone) try container.encodeIfPresent(userStatus, forKey: .userStatus) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift index dd9fdef5c97..d178f10df64 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift @@ -15,9 +15,11 @@ public struct AdditionalPropertiesAnyType: Codable, Hashable { public init(name: String? = nil) { self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case name } + public var additionalProperties: [String: AnyCodable] = [:] public subscript(key: String) -> AnyCodable? { @@ -52,6 +54,4 @@ public struct AdditionalPropertiesAnyType: Codable, Hashable { nonAdditionalPropertyKeys.insert("name") additionalProperties = try container.decodeMap(AnyCodable.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift index 03708059804..8ddb4720d6d 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift @@ -15,9 +15,11 @@ public struct AdditionalPropertiesArray: Codable, Hashable { public init(name: String? = nil) { self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case name } + public var additionalProperties: [String: [AnyCodable]] = [:] public subscript(key: String) -> [AnyCodable]? { @@ -52,6 +54,4 @@ public struct AdditionalPropertiesArray: Codable, Hashable { nonAdditionalPropertyKeys.insert("name") additionalProperties = try container.decodeMap([AnyCodable].self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift index 6a8bd72e6e5..efa557ee7a8 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift @@ -15,9 +15,11 @@ public struct AdditionalPropertiesBoolean: Codable, Hashable { public init(name: String? = nil) { self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case name } + public var additionalProperties: [String: Bool] = [:] public subscript(key: String) -> Bool? { @@ -52,6 +54,4 @@ public struct AdditionalPropertiesBoolean: Codable, Hashable { nonAdditionalPropertyKeys.insert("name") additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index abe4a181890..10b6866249a 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -35,6 +35,7 @@ public struct AdditionalPropertiesClass: Codable, Hashable { self.anytype2 = anytype2 self.anytype3 = anytype3 } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapString = "map_string" case mapNumber = "map_number" @@ -65,7 +66,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(anytype2, forKey: .anytype2) try container.encodeIfPresent(anytype3, forKey: .anytype3) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift index 90109260d02..4274f8bde69 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift @@ -15,9 +15,11 @@ public struct AdditionalPropertiesInteger: Codable, Hashable { public init(name: String? = nil) { self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case name } + public var additionalProperties: [String: Int] = [:] public subscript(key: String) -> Int? { @@ -52,6 +54,4 @@ public struct AdditionalPropertiesInteger: Codable, Hashable { nonAdditionalPropertyKeys.insert("name") additionalProperties = try container.decodeMap(Int.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift index 2cae455cf24..5bacbca4808 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift @@ -15,9 +15,11 @@ public struct AdditionalPropertiesNumber: Codable, Hashable { public init(name: String? = nil) { self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case name } + public var additionalProperties: [String: Double] = [:] public subscript(key: String) -> Double? { @@ -52,6 +54,4 @@ public struct AdditionalPropertiesNumber: Codable, Hashable { nonAdditionalPropertyKeys.insert("name") additionalProperties = try container.decodeMap(Double.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift index 6f86abd07ab..cd460f79f64 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift @@ -15,9 +15,11 @@ public struct AdditionalPropertiesObject: Codable, Hashable { public init(name: String? = nil) { self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case name } + public var additionalProperties: [String: [String: AnyCodable]] = [:] public subscript(key: String) -> [String: AnyCodable]? { @@ -52,6 +54,4 @@ public struct AdditionalPropertiesObject: Codable, Hashable { nonAdditionalPropertyKeys.insert("name") additionalProperties = try container.decodeMap([String: AnyCodable].self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift index b8b54f04b1b..a5b9c4d43ee 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift @@ -15,9 +15,11 @@ public struct AdditionalPropertiesString: Codable, Hashable { public init(name: String? = nil) { self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case name } + public var additionalProperties: [String: String] = [:] public subscript(key: String) -> String? { @@ -52,6 +54,4 @@ public struct AdditionalPropertiesString: Codable, Hashable { nonAdditionalPropertyKeys.insert("name") additionalProperties = try container.decodeMap(String.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 0f825cf24d0..a422ee73b55 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -17,6 +17,7 @@ public struct Animal: Codable, Hashable { self.className = className self.color = color } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -29,7 +30,4 @@ public struct Animal: Codable, Hashable { try container.encode(className, forKey: .className) try container.encodeIfPresent(color, forKey: .color) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 2b66af2dc94..7f7c6a34bdf 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -19,6 +19,7 @@ public struct ApiResponse: Codable, Hashable { self.type = type self.message = message } + public enum CodingKeys: String, CodingKey, CaseIterable { case code case type @@ -33,7 +34,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(type, forKey: .type) try container.encodeIfPresent(message, forKey: .message) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 06f0640475c..0221229e7dd 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { public init(arrayArrayNumber: [[Double]]? = nil) { self.arrayArrayNumber = arrayArrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayArrayNumber = "ArrayArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index 8c50c7fa1e4..b5c7ca501e7 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfNumberOnly: Codable, Hashable { public init(arrayNumber: [Double]? = nil) { self.arrayNumber = arrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayNumber = "ArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 461ec7cd9ac..9074d9ab4aa 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -19,6 +19,7 @@ public struct ArrayTest: Codable, Hashable { self.arrayArrayOfInteger = arrayArrayOfInteger self.arrayArrayOfModel = arrayArrayOfModel } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayOfString = "array_of_string" case arrayArrayOfInteger = "array_array_of_integer" @@ -33,7 +34,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfInteger, forKey: .arrayArrayOfInteger) try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift index 9c3f0f237a3..288d1f5c29f 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift @@ -21,6 +21,7 @@ public struct BigCat: Codable, Hashable { public init(kind: Kind? = nil) { self.kind = kind } + public enum CodingKeys: String, CodingKey, CaseIterable { case kind } @@ -31,7 +32,4 @@ public struct BigCat: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(kind, forKey: .kind) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift index 6b78ab7b42a..b4e5595c22f 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift @@ -21,6 +21,7 @@ public struct BigCatAllOf: Codable, Hashable { public init(kind: Kind? = nil) { self.kind = kind } + public enum CodingKeys: String, CodingKey, CaseIterable { case kind } @@ -31,7 +32,4 @@ public struct BigCatAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(kind, forKey: .kind) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index fbe62983d5e..f0ca1a76f27 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -26,6 +26,7 @@ public struct Capitalization: Codable, Hashable { self.sCAETHFlowPoints = sCAETHFlowPoints self.ATT_NAME = ATT_NAME } + public enum CodingKeys: String, CodingKey, CaseIterable { case smallCamel case capitalCamel = "CapitalCamel" @@ -46,7 +47,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(sCAETHFlowPoints, forKey: .sCAETHFlowPoints) try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 7f3a86932f1..89aaea45b91 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -19,6 +19,7 @@ public struct Cat: Codable, Hashable { self.color = color self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8df23954832..c80f7549e69 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -15,6 +15,7 @@ public struct CatAllOf: Codable, Hashable { public init(declawed: Bool? = nil) { self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case declawed } @@ -25,7 +26,4 @@ public struct CatAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 611a8a32e39..d695f78bb4e 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -17,6 +17,7 @@ public struct Category: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Category: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encode(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 7269ddbef6f..90e4986e7f6 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -16,6 +16,7 @@ public struct ClassModel: Codable, Hashable { public init(_class: String? = nil) { self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case _class } @@ -26,7 +27,4 @@ public struct ClassModel: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 7d6eff2ffe1..4e031806901 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -15,6 +15,7 @@ public struct Client: Codable, Hashable { public init(client: String? = nil) { self.client = client } + public enum CodingKeys: String, CodingKey, CaseIterable { case client } @@ -25,7 +26,4 @@ public struct Client: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(client, forKey: .client) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index b5f2bcea38a..2387b3e7b2c 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -19,6 +19,7 @@ public struct Dog: Codable, Hashable { self.color = color self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 1bfa23d7bc6..4317578cee4 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -15,6 +15,7 @@ public struct DogAllOf: Codable, Hashable { public init(breed: String? = nil) { self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case breed } @@ -25,7 +26,4 @@ public struct DogAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 73368c42143..01b8960fe34 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -25,6 +25,7 @@ public struct EnumArrays: Codable, Hashable { self.justSymbol = justSymbol self.arrayEnum = arrayEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case justSymbol = "just_symbol" case arrayEnum = "array_enum" @@ -37,7 +38,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(justSymbol, forKey: .justSymbol) try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 60a81bcac77..9c8e2e9ac84 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -41,6 +41,7 @@ public struct EnumTest: Codable, Hashable { self.enumNumber = enumNumber self.outerEnum = outerEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case enumString = "enum_string" case enumStringRequired = "enum_string_required" @@ -59,7 +60,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(enumNumber, forKey: .enumNumber) try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 90283656d1b..2a9c769ca6c 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -17,6 +17,7 @@ public struct File: Codable, Hashable { public init(sourceURI: String? = nil) { self.sourceURI = sourceURI } + public enum CodingKeys: String, CodingKey, CaseIterable { case sourceURI } @@ -27,7 +28,4 @@ public struct File: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index cff92673bbe..cd8a9a0e9fe 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -17,6 +17,7 @@ public struct FileSchemaTestClass: Codable, Hashable { self.file = file self.files = files } + public enum CodingKeys: String, CodingKey, CaseIterable { case file case files @@ -29,7 +30,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(file, forKey: .file) try container.encodeIfPresent(files, forKey: .files) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index ea348c3581e..8b16c3a2013 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -41,6 +41,7 @@ public struct FormatTest: Codable, Hashable { self.password = password self.bigDecimal = bigDecimal } + public enum CodingKeys: String, CodingKey, CaseIterable { case integer case int32 @@ -77,7 +78,4 @@ public struct FormatTest: Codable, Hashable { try container.encode(password, forKey: .password) try container.encodeIfPresent(bigDecimal, forKey: .bigDecimal) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index d7960f5c800..b7a1449830a 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -17,6 +17,7 @@ public struct HasOnlyReadOnly: Codable, Hashable { self.bar = bar self.foo = foo } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case foo @@ -29,7 +30,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(foo, forKey: .foo) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/List.swift index c5d4f2cae56..8d484cf0a33 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -15,6 +15,7 @@ public struct List: Codable, Hashable { public init(_123list: String? = nil) { self._123list = _123list } + public enum CodingKeys: String, CodingKey, CaseIterable { case _123list = "123-list" } @@ -25,7 +26,4 @@ public struct List: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_123list, forKey: ._123list) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index b54bd01e5dc..4b56880fed6 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -25,6 +25,7 @@ public struct MapTest: Codable, Hashable { self.directMap = directMap self.indirectMap = indirectMap } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapMapOfString = "map_map_of_string" case mapOfEnumString = "map_of_enum_string" @@ -41,7 +42,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(directMap, forKey: .directMap) try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index c8f639ef43d..f07f8132af7 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -19,6 +19,7 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { self.dateTime = dateTime self.map = map } + public enum CodingKeys: String, CodingKey, CaseIterable { case uuid case dateTime @@ -33,7 +34,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(dateTime, forKey: .dateTime) try container.encodeIfPresent(map, forKey: .map) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 5368032f09b..dc99e8cb8dd 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -18,6 +18,7 @@ public struct Model200Response: Codable, Hashable { self.name = name self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case _class = "class" @@ -30,7 +31,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index 84a40e1c101..d9f893c86ba 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -22,6 +22,7 @@ public struct Name: Codable, Hashable { self.property = property self._123number = _123number } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case snakeCase = "snake_case" @@ -38,7 +39,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(property, forKey: .property) try container.encodeIfPresent(_123number, forKey: ._123number) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 710f41648f9..8c1ad5ddd4b 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -15,6 +15,7 @@ public struct NumberOnly: Codable, Hashable { public init(justNumber: Double? = nil) { self.justNumber = justNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case justNumber = "JustNumber" } @@ -25,7 +26,4 @@ public struct NumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(justNumber, forKey: .justNumber) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 15726ab16a4..c474a6e657b 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -31,6 +31,7 @@ public struct Order: Codable, Hashable { self.status = status self.complete = complete } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case petId @@ -51,7 +52,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) try container.encodeIfPresent(complete, forKey: .complete) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 36904afbd50..cdaad279b0f 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -19,6 +19,7 @@ public struct OuterComposite: Codable, Hashable { self.myString = myString self.myBoolean = myBoolean } + public enum CodingKeys: String, CodingKey, CaseIterable { case myNumber = "my_number" case myString = "my_string" @@ -33,7 +34,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myString, forKey: .myString) try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 03e81af5d05..a1a04b93d26 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -31,6 +31,7 @@ public struct Pet: Codable, Hashable { self.tags = tags self.status = status } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case category @@ -51,7 +52,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(tags, forKey: .tags) try container.encodeIfPresent(status, forKey: .status) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 38fb57af328..d08a673dbf4 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -17,6 +17,7 @@ public struct ReadOnlyFirst: Codable, Hashable { self.bar = bar self.baz = baz } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case baz @@ -29,7 +30,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(baz, forKey: .baz) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index ed7e538a06d..d34dc71ec37 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -16,6 +16,7 @@ public struct Return: Codable, Hashable { public init(_return: Int? = nil) { self._return = _return } + public enum CodingKeys: String, CodingKey, CaseIterable { case _return = "return" } @@ -26,7 +27,4 @@ public struct Return: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_return, forKey: ._return) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index 18747e071bc..e0e0ea6ae29 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -15,6 +15,7 @@ public struct SpecialModelName: Codable, Hashable { public init(specialPropertyName: Int64? = nil) { self.specialPropertyName = specialPropertyName } + public enum CodingKeys: String, CodingKey, CaseIterable { case specialPropertyName = "$special[property.name]" } @@ -25,7 +26,4 @@ public struct SpecialModelName: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 0699c25ff7e..8fb1b40e5ee 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -10,8 +10,10 @@ import AnyCodable public struct StringBooleanMap: Codable, Hashable { + public enum CodingKeys: CodingKey, CaseIterable { } + public var additionalProperties: [String: Bool] = [:] public subscript(key: String) -> Bool? { @@ -43,6 +45,4 @@ public struct StringBooleanMap: Codable, Hashable { var nonAdditionalPropertyKeys = Set() additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 11c5f7a750b..5d90c8a7400 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -17,6 +17,7 @@ public struct Tag: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encodeIfPresent(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 35b1a5833b9..e6e6530dc51 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -23,6 +23,7 @@ public struct TypeHolderDefault: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 66dc3819f2a..3e25b228846 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -25,6 +25,7 @@ public struct TypeHolderExample: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -45,7 +46,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 2bbc31806ff..f93cecfc5d0 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -30,6 +30,7 @@ public struct User: Codable, Hashable { self.phone = phone self.userStatus = userStatus } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case username @@ -54,7 +55,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(phone, forKey: .phone) try container.encodeIfPresent(userStatus, forKey: .userStatus) } - - - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift index daa3716aeca..d7fa1248dcd 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift @@ -71,6 +71,7 @@ public struct XmlItem: Codable, Hashable { self.prefixNsArray = prefixNsArray self.prefixNsWrappedArray = prefixNsWrappedArray } + public enum CodingKeys: String, CodingKey, CaseIterable { case attributeString = "attribute_string" case attributeNumber = "attribute_number" @@ -137,7 +138,4 @@ public struct XmlItem: Codable, Hashable { try container.encodeIfPresent(prefixNsArray, forKey: .prefixNsArray) try container.encodeIfPresent(prefixNsWrappedArray, forKey: .prefixNsWrappedArray) } - - - } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 8ed4cc03185..665bc7675c1 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -20,6 +20,7 @@ public struct ApiResponse: Codable, Hashable { self.type = type self.message = message } + public enum CodingKeys: String, CodingKey, CaseIterable { case code case type @@ -34,7 +35,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(type, forKey: .type) try container.encodeIfPresent(message, forKey: .message) } - - - } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 508c796f626..3212f61529d 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -18,6 +18,7 @@ public struct Category: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -30,7 +31,4 @@ public struct Category: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encodeIfPresent(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 11ee45fef69..f98e4977639 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -33,6 +33,7 @@ public struct Order: Codable, Hashable { self.status = status self.complete = complete } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case petId @@ -53,7 +54,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) try container.encodeIfPresent(complete, forKey: .complete) } - - - } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index c1bac661e1f..7ade27d71a0 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -33,6 +33,7 @@ public struct Pet: Codable, Hashable { self.tags = tags self.status = status } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case category @@ -53,7 +54,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(tags, forKey: .tags) try container.encodeIfPresent(status, forKey: .status) } - - - } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 5a275f11b25..864a0dbbf99 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -18,6 +18,7 @@ public struct Tag: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -30,7 +31,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encodeIfPresent(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 058360d1249..7b8fee0dd9f 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -31,6 +31,7 @@ public struct User: Codable, Hashable { self.phone = phone self.userStatus = userStatus } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case username @@ -55,7 +56,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(phone, forKey: .phone) try container.encodeIfPresent(userStatus, forKey: .userStatus) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 675937c90fa..d9dd5e56501 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -17,6 +17,7 @@ internal struct AdditionalPropertiesClass: Codable, Hashable { self.mapString = mapString self.mapMapString = mapMapString } + internal enum CodingKeys: String, CodingKey, CaseIterable { case mapString = "map_string" case mapMapString = "map_map_string" @@ -29,7 +30,4 @@ internal struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapString, forKey: .mapString) try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 8c8ffe45faa..db644cbd921 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -17,6 +17,7 @@ internal struct Animal: Codable, Hashable { self.className = className self.color = color } + internal enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -29,7 +30,4 @@ internal struct Animal: Codable, Hashable { try container.encode(className, forKey: .className) try container.encodeIfPresent(color, forKey: .color) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 25f5c34054b..4b3bb87eef8 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -19,6 +19,7 @@ internal struct ApiResponse: Codable, Hashable { self.type = type self.message = message } + internal enum CodingKeys: String, CodingKey, CaseIterable { case code case type @@ -33,7 +34,4 @@ internal struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(type, forKey: .type) try container.encodeIfPresent(message, forKey: .message) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 48daaaffa2f..709e7f19109 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ internal struct ArrayOfArrayOfNumberOnly: Codable, Hashable { internal init(arrayArrayNumber: [[Double]]? = nil) { self.arrayArrayNumber = arrayArrayNumber } + internal enum CodingKeys: String, CodingKey, CaseIterable { case arrayArrayNumber = "ArrayArrayNumber" } @@ -25,7 +26,4 @@ internal struct ArrayOfArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index b38ece08cc8..960702ef37e 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ internal struct ArrayOfNumberOnly: Codable, Hashable { internal init(arrayNumber: [Double]? = nil) { self.arrayNumber = arrayNumber } + internal enum CodingKeys: String, CodingKey, CaseIterable { case arrayNumber = "ArrayNumber" } @@ -25,7 +26,4 @@ internal struct ArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 60f642f72a9..eeb73442a48 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -19,6 +19,7 @@ internal struct ArrayTest: Codable, Hashable { self.arrayArrayOfInteger = arrayArrayOfInteger self.arrayArrayOfModel = arrayArrayOfModel } + internal enum CodingKeys: String, CodingKey, CaseIterable { case arrayOfString = "array_of_string" case arrayArrayOfInteger = "array_array_of_integer" @@ -33,7 +34,4 @@ internal struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfInteger, forKey: .arrayArrayOfInteger) try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index 1184a9c9c78..5c5341e77a7 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -26,6 +26,7 @@ internal struct Capitalization: Codable, Hashable { self.sCAETHFlowPoints = sCAETHFlowPoints self.ATT_NAME = ATT_NAME } + internal enum CodingKeys: String, CodingKey, CaseIterable { case smallCamel case capitalCamel = "CapitalCamel" @@ -46,7 +47,4 @@ internal struct Capitalization: Codable, Hashable { try container.encodeIfPresent(sCAETHFlowPoints, forKey: .sCAETHFlowPoints) try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 47016f63e3b..61463086913 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -19,6 +19,7 @@ internal struct Cat: Codable, Hashable { self.color = color self.declawed = declawed } + internal enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ internal struct Cat: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 9d01dbd6391..7c742b83be1 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -15,6 +15,7 @@ internal struct CatAllOf: Codable, Hashable { internal init(declawed: Bool? = nil) { self.declawed = declawed } + internal enum CodingKeys: String, CodingKey, CaseIterable { case declawed } @@ -25,7 +26,4 @@ internal struct CatAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index b99e1f159fc..9ee881909bf 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -17,6 +17,7 @@ internal struct Category: Codable, Hashable { self.id = id self.name = name } + internal enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ internal struct Category: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encode(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index efb0200fe33..3ed6d33da0f 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -16,6 +16,7 @@ internal struct ClassModel: Codable, Hashable { internal init(_class: String? = nil) { self._class = _class } + internal enum CodingKeys: String, CodingKey, CaseIterable { case _class } @@ -26,7 +27,4 @@ internal struct ClassModel: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 84457478611..390f624be4f 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -15,6 +15,7 @@ internal struct Client: Codable, Hashable { internal init(client: String? = nil) { self.client = client } + internal enum CodingKeys: String, CodingKey, CaseIterable { case client } @@ -25,7 +26,4 @@ internal struct Client: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(client, forKey: .client) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 580fc9003c7..71848669f32 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -19,6 +19,7 @@ internal struct Dog: Codable, Hashable { self.color = color self.breed = breed } + internal enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ internal struct Dog: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 33f2e3a8c1e..d26c5f5d87d 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -15,6 +15,7 @@ internal struct DogAllOf: Codable, Hashable { internal init(breed: String? = nil) { self.breed = breed } + internal enum CodingKeys: String, CodingKey, CaseIterable { case breed } @@ -25,7 +26,4 @@ internal struct DogAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 33a4472b1a7..553e1b1de09 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -25,6 +25,7 @@ internal struct EnumArrays: Codable, Hashable { self.justSymbol = justSymbol self.arrayEnum = arrayEnum } + internal enum CodingKeys: String, CodingKey, CaseIterable { case justSymbol = "just_symbol" case arrayEnum = "array_enum" @@ -37,7 +38,4 @@ internal struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(justSymbol, forKey: .justSymbol) try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 476bf2dbbaa..23817dcd6d5 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -41,6 +41,7 @@ internal struct EnumTest: Codable, Hashable { self.enumNumber = enumNumber self.outerEnum = outerEnum } + internal enum CodingKeys: String, CodingKey, CaseIterable { case enumString = "enum_string" case enumStringRequired = "enum_string_required" @@ -59,7 +60,4 @@ internal struct EnumTest: Codable, Hashable { try container.encodeIfPresent(enumNumber, forKey: .enumNumber) try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 668a27c089f..f14a3a326ca 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -17,6 +17,7 @@ internal struct File: Codable, Hashable { internal init(sourceURI: String? = nil) { self.sourceURI = sourceURI } + internal enum CodingKeys: String, CodingKey, CaseIterable { case sourceURI } @@ -27,7 +28,4 @@ internal struct File: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 29e7ce62f3b..ff5e1a2bf00 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -17,6 +17,7 @@ internal struct FileSchemaTestClass: Codable, Hashable { self.file = file self.files = files } + internal enum CodingKeys: String, CodingKey, CaseIterable { case file case files @@ -29,7 +30,4 @@ internal struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(file, forKey: .file) try container.encodeIfPresent(files, forKey: .files) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index e42c76fb1b5..a03e2aaa930 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -39,6 +39,7 @@ internal struct FormatTest: Codable, Hashable { self.uuid = uuid self.password = password } + internal enum CodingKeys: String, CodingKey, CaseIterable { case integer case int32 @@ -73,7 +74,4 @@ internal struct FormatTest: Codable, Hashable { try container.encodeIfPresent(uuid, forKey: .uuid) try container.encode(password, forKey: .password) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index fff4dc5bef6..3e928855ab4 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -17,6 +17,7 @@ internal struct HasOnlyReadOnly: Codable, Hashable { self.bar = bar self.foo = foo } + internal enum CodingKeys: String, CodingKey, CaseIterable { case bar case foo @@ -29,7 +30,4 @@ internal struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(foo, forKey: .foo) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 71249ab1f5c..80d8b0c4071 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -15,6 +15,7 @@ internal struct List: Codable, Hashable { internal init(_123list: String? = nil) { self._123list = _123list } + internal enum CodingKeys: String, CodingKey, CaseIterable { case _123list = "123-list" } @@ -25,7 +26,4 @@ internal struct List: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_123list, forKey: ._123list) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index c1057f3ebf5..d61a6e2bd7f 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -25,6 +25,7 @@ internal struct MapTest: Codable, Hashable { self.directMap = directMap self.indirectMap = indirectMap } + internal enum CodingKeys: String, CodingKey, CaseIterable { case mapMapOfString = "map_map_of_string" case mapOfEnumString = "map_of_enum_string" @@ -41,7 +42,4 @@ internal struct MapTest: Codable, Hashable { try container.encodeIfPresent(directMap, forKey: .directMap) try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index ebf6ae145dd..a8d53ffb288 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -19,6 +19,7 @@ internal struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { self.dateTime = dateTime self.map = map } + internal enum CodingKeys: String, CodingKey, CaseIterable { case uuid case dateTime @@ -33,7 +34,4 @@ internal struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(dateTime, forKey: .dateTime) try container.encodeIfPresent(map, forKey: .map) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 1efae876cbf..14656a218e7 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -18,6 +18,7 @@ internal struct Model200Response: Codable, Hashable { self.name = name self._class = _class } + internal enum CodingKeys: String, CodingKey, CaseIterable { case name case _class = "class" @@ -30,7 +31,4 @@ internal struct Model200Response: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index aa9337dedc4..f61b75d6533 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -22,6 +22,7 @@ internal struct Name: Codable, Hashable { self.property = property self._123number = _123number } + internal enum CodingKeys: String, CodingKey, CaseIterable { case name case snakeCase = "snake_case" @@ -38,7 +39,4 @@ internal struct Name: Codable, Hashable { try container.encodeIfPresent(property, forKey: .property) try container.encodeIfPresent(_123number, forKey: ._123number) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 0748cf0a096..dcae16adea4 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -15,6 +15,7 @@ internal struct NumberOnly: Codable, Hashable { internal init(justNumber: Double? = nil) { self.justNumber = justNumber } + internal enum CodingKeys: String, CodingKey, CaseIterable { case justNumber = "JustNumber" } @@ -25,7 +26,4 @@ internal struct NumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(justNumber, forKey: .justNumber) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 378e41056a8..a2aed66bc25 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -31,6 +31,7 @@ internal struct Order: Codable, Hashable { self.status = status self.complete = complete } + internal enum CodingKeys: String, CodingKey, CaseIterable { case id case petId @@ -51,7 +52,4 @@ internal struct Order: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) try container.encodeIfPresent(complete, forKey: .complete) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 76508a79a26..5bd719c715f 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -19,6 +19,7 @@ internal struct OuterComposite: Codable, Hashable { self.myString = myString self.myBoolean = myBoolean } + internal enum CodingKeys: String, CodingKey, CaseIterable { case myNumber = "my_number" case myString = "my_string" @@ -33,7 +34,4 @@ internal struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myString, forKey: .myString) try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index c28c280608f..0d1ec07d3e5 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -31,6 +31,7 @@ internal struct Pet: Codable, Hashable { self.tags = tags self.status = status } + internal enum CodingKeys: String, CodingKey, CaseIterable { case id case category @@ -51,7 +52,4 @@ internal struct Pet: Codable, Hashable { try container.encodeIfPresent(tags, forKey: .tags) try container.encodeIfPresent(status, forKey: .status) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 7f9cf4abd2e..46101e49730 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -17,6 +17,7 @@ internal struct ReadOnlyFirst: Codable, Hashable { self.bar = bar self.baz = baz } + internal enum CodingKeys: String, CodingKey, CaseIterable { case bar case baz @@ -29,7 +30,4 @@ internal struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(baz, forKey: .baz) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index bd512e38ac3..144e53c1759 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -16,6 +16,7 @@ internal struct Return: Codable, Hashable { internal init(_return: Int? = nil) { self._return = _return } + internal enum CodingKeys: String, CodingKey, CaseIterable { case _return = "return" } @@ -26,7 +27,4 @@ internal struct Return: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_return, forKey: ._return) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index 848bbe6f384..aa152383444 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -15,6 +15,7 @@ internal struct SpecialModelName: Codable, Hashable { internal init(specialPropertyName: Int64? = nil) { self.specialPropertyName = specialPropertyName } + internal enum CodingKeys: String, CodingKey, CaseIterable { case specialPropertyName = "$special[property.name]" } @@ -25,7 +26,4 @@ internal struct SpecialModelName: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 50ff6bedf9b..2b1e5e2cf88 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -10,8 +10,10 @@ import AnyCodable internal struct StringBooleanMap: Codable, Hashable { + internal enum CodingKeys: CodingKey, CaseIterable { } + internal var additionalProperties: [String: Bool] = [:] internal subscript(key: String) -> Bool? { @@ -43,6 +45,4 @@ internal struct StringBooleanMap: Codable, Hashable { var nonAdditionalPropertyKeys = Set() additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 2acf7c82cd4..58215131abe 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -17,6 +17,7 @@ internal struct Tag: Codable, Hashable { self.id = id self.name = name } + internal enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ internal struct Tag: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encodeIfPresent(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 1e306e35699..d4f790d97ee 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -23,6 +23,7 @@ internal struct TypeHolderDefault: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + internal enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ internal struct TypeHolderDefault: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 386054d5ca9..e8b051a4508 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -23,6 +23,7 @@ internal struct TypeHolderExample: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + internal enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ internal struct TypeHolderExample: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift index a3e131ac3d9..d7ae1249219 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -30,6 +30,7 @@ internal struct User: Codable, Hashable { self.phone = phone self.userStatus = userStatus } + internal enum CodingKeys: String, CodingKey, CaseIterable { case id case username @@ -54,7 +55,4 @@ internal struct User: Codable, Hashable { try container.encodeIfPresent(phone, forKey: .phone) try container.encodeIfPresent(userStatus, forKey: .userStatus) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index aab3e933f3f..3a2ec316678 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -17,6 +17,7 @@ import AnyCodable self.mapString = mapString self.mapMapString = mapMapString } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapString = "map_string" case mapMapString = "map_map_string" @@ -29,7 +30,4 @@ import AnyCodable try container.encodeIfPresent(mapString, forKey: .mapString) try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index edd4017fd47..c011c374f67 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -17,6 +17,7 @@ import AnyCodable self._className = _className self.color = color } + public enum CodingKeys: String, CodingKey, CaseIterable { case _className = "className" case color @@ -29,7 +30,4 @@ import AnyCodable try container.encode(_className, forKey: ._className) try container.encodeIfPresent(color, forKey: .color) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 7c6f40923fa..dd42fa46250 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -24,6 +24,7 @@ import AnyCodable self.type = type self.message = message } + public enum CodingKeys: String, CodingKey, CaseIterable { case code case type @@ -38,7 +39,4 @@ import AnyCodable try container.encodeIfPresent(type, forKey: .type) try container.encodeIfPresent(message, forKey: .message) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 1971654130e..e88fea34550 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ import AnyCodable public init(arrayArrayNumber: [[Double]]? = nil) { self.arrayArrayNumber = arrayArrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayArrayNumber = "ArrayArrayNumber" } @@ -25,7 +26,4 @@ import AnyCodable var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index 5802e520a2a..010207d5832 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ import AnyCodable public init(arrayNumber: [Double]? = nil) { self.arrayNumber = arrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayNumber = "ArrayNumber" } @@ -25,7 +26,4 @@ import AnyCodable var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 1f33262b749..4e93d3ec195 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -19,6 +19,7 @@ import AnyCodable self.arrayArrayOfInteger = arrayArrayOfInteger self.arrayArrayOfModel = arrayArrayOfModel } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayOfString = "array_of_string" case arrayArrayOfInteger = "array_array_of_integer" @@ -33,7 +34,4 @@ import AnyCodable try container.encodeIfPresent(arrayArrayOfInteger, forKey: .arrayArrayOfInteger) try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index 0ede392b725..3edcf4aec71 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -26,6 +26,7 @@ import AnyCodable self.sCAETHFlowPoints = sCAETHFlowPoints self.ATT_NAME = ATT_NAME } + public enum CodingKeys: String, CodingKey, CaseIterable { case smallCamel case capitalCamel = "CapitalCamel" @@ -46,7 +47,4 @@ import AnyCodable try container.encodeIfPresent(sCAETHFlowPoints, forKey: .sCAETHFlowPoints) try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index ac482af7867..7ed4aad879d 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -24,6 +24,7 @@ import AnyCodable self.color = color self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case _className = "className" case color @@ -38,7 +39,4 @@ import AnyCodable try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 714af722413..a921ec323a7 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -20,6 +20,7 @@ import AnyCodable public init(declawed: Bool? = nil) { self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case declawed } @@ -30,7 +31,4 @@ import AnyCodable var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 4545308c0b5..448bbbd77fc 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -22,6 +22,7 @@ import AnyCodable self._id = _id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case _id = "id" case name @@ -34,7 +35,4 @@ import AnyCodable try container.encodeIfPresent(_id, forKey: ._id) try container.encode(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index a16525261cd..3ab43620369 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -16,6 +16,7 @@ import AnyCodable public init(_class: String? = nil) { self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case _class } @@ -26,7 +27,4 @@ import AnyCodable var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 1a3e53ef2f3..1e4e0390c6d 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -15,6 +15,7 @@ import AnyCodable public init(client: String? = nil) { self.client = client } + public enum CodingKeys: String, CodingKey, CaseIterable { case client } @@ -25,7 +26,4 @@ import AnyCodable var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(client, forKey: .client) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index b6de22c5940..d68dadf0697 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -19,6 +19,7 @@ import AnyCodable self.color = color self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case _className = "className" case color @@ -33,7 +34,4 @@ import AnyCodable try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 88215365c68..6e674757235 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -15,6 +15,7 @@ import AnyCodable public init(breed: String? = nil) { self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case breed } @@ -25,7 +26,4 @@ import AnyCodable var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index c3f1766d81c..7d461e9f488 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -25,6 +25,7 @@ import AnyCodable self.justSymbol = justSymbol self.arrayEnum = arrayEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case justSymbol = "just_symbol" case arrayEnum = "array_enum" @@ -37,7 +38,4 @@ import AnyCodable try container.encodeIfPresent(justSymbol, forKey: .justSymbol) try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index ac8620deb3b..4a464b00cf2 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -41,6 +41,7 @@ import AnyCodable self.enumNumber = enumNumber self.outerEnum = outerEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case enumString = "enum_string" case enumStringRequired = "enum_string_required" @@ -59,7 +60,4 @@ import AnyCodable try container.encodeIfPresent(enumNumber, forKey: .enumNumber) try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 0fac5200c96..d3acff746fc 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -17,6 +17,7 @@ import AnyCodable public init(sourceURI: String? = nil) { self.sourceURI = sourceURI } + public enum CodingKeys: String, CodingKey, CaseIterable { case sourceURI } @@ -27,7 +28,4 @@ import AnyCodable var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 062b68c5e5a..1b4688f9bd7 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -17,6 +17,7 @@ import AnyCodable self.file = file self.files = files } + public enum CodingKeys: String, CodingKey, CaseIterable { case file case files @@ -29,7 +30,4 @@ import AnyCodable try container.encodeIfPresent(file, forKey: .file) try container.encodeIfPresent(files, forKey: .files) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index dacf0f0fc21..45bb30fca6e 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -64,6 +64,7 @@ import AnyCodable self.uuid = uuid self.password = password } + public enum CodingKeys: String, CodingKey, CaseIterable { case integer case int32 @@ -98,7 +99,4 @@ import AnyCodable try container.encodeIfPresent(uuid, forKey: .uuid) try container.encode(password, forKey: .password) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index ac9b61b5a15..b3cd9e7b4c3 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -17,6 +17,7 @@ import AnyCodable self.bar = bar self.foo = foo } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case foo @@ -29,7 +30,4 @@ import AnyCodable try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(foo, forKey: .foo) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/List.swift index cfb6cbbe8d5..8ea2f8feea7 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -15,6 +15,7 @@ import AnyCodable public init(_123list: String? = nil) { self._123list = _123list } + public enum CodingKeys: String, CodingKey, CaseIterable { case _123list = "123-list" } @@ -25,7 +26,4 @@ import AnyCodable var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_123list, forKey: ._123list) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 17011781e79..bb104e8169f 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -25,6 +25,7 @@ import AnyCodable self.directMap = directMap self.indirectMap = indirectMap } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapMapOfString = "map_map_of_string" case mapOfEnumString = "map_of_enum_string" @@ -41,7 +42,4 @@ import AnyCodable try container.encodeIfPresent(directMap, forKey: .directMap) try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index ee69cad2f18..444ca3572e9 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -19,6 +19,7 @@ import AnyCodable self.dateTime = dateTime self.map = map } + public enum CodingKeys: String, CodingKey, CaseIterable { case uuid case dateTime @@ -33,7 +34,4 @@ import AnyCodable try container.encodeIfPresent(dateTime, forKey: .dateTime) try container.encodeIfPresent(map, forKey: .map) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 19617eb563e..1bdf12817ba 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -23,6 +23,7 @@ import AnyCodable self.name = name self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case _class = "class" @@ -35,7 +36,4 @@ import AnyCodable try container.encodeIfPresent(name, forKey: .name) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index 50b14e9343a..c5a36141fab 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -32,6 +32,7 @@ import AnyCodable self.property = property self._123number = _123number } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case snakeCase = "snake_case" @@ -48,7 +49,4 @@ import AnyCodable try container.encodeIfPresent(property, forKey: .property) try container.encodeIfPresent(_123number, forKey: ._123number) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 6da3b7f3634..2a90178bdb1 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -15,6 +15,7 @@ import AnyCodable public init(justNumber: Double? = nil) { self.justNumber = justNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case justNumber = "JustNumber" } @@ -25,7 +26,4 @@ import AnyCodable var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(justNumber, forKey: .justNumber) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index ad21080d024..5db1f6b36c6 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -51,6 +51,7 @@ import AnyCodable self.status = status self.complete = complete } + public enum CodingKeys: String, CodingKey, CaseIterable { case _id = "id" case petId @@ -71,7 +72,4 @@ import AnyCodable try container.encodeIfPresent(status, forKey: .status) try container.encodeIfPresent(complete, forKey: .complete) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index ad7118aae8b..fd6674b056d 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -24,6 +24,7 @@ import AnyCodable self.myString = myString self.myBoolean = myBoolean } + public enum CodingKeys: String, CodingKey, CaseIterable { case myNumber = "my_number" case myString = "my_string" @@ -38,7 +39,4 @@ import AnyCodable try container.encodeIfPresent(myString, forKey: .myString) try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index dcd875c0898..192ef69463a 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -36,6 +36,7 @@ import AnyCodable self.tags = tags self.status = status } + public enum CodingKeys: String, CodingKey, CaseIterable { case _id = "id" case category @@ -56,7 +57,4 @@ import AnyCodable try container.encodeIfPresent(tags, forKey: .tags) try container.encodeIfPresent(status, forKey: .status) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 1b278c72d11..ef38f6c6d9c 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -17,6 +17,7 @@ import AnyCodable self.bar = bar self.baz = baz } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case baz @@ -29,7 +30,4 @@ import AnyCodable try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(baz, forKey: .baz) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index f5c4e90d0e1..e1bc6f765ac 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -21,6 +21,7 @@ import AnyCodable public init(_return: Int? = nil) { self._return = _return } + public enum CodingKeys: String, CodingKey, CaseIterable { case _return = "return" } @@ -31,7 +32,4 @@ import AnyCodable var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_return, forKey: ._return) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index a512f5fb327..abafeff9b75 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -20,6 +20,7 @@ import AnyCodable public init(specialPropertyName: Int64? = nil) { self.specialPropertyName = specialPropertyName } + public enum CodingKeys: String, CodingKey, CaseIterable { case specialPropertyName = "$special[property.name]" } @@ -30,7 +31,4 @@ import AnyCodable var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 1cb86591c3c..f9cb11c7cc6 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -10,8 +10,10 @@ import AnyCodable @objc public class StringBooleanMap: NSObject, Codable { + public enum CodingKeys: CodingKey, CaseIterable { } + public var additionalProperties: [String: Bool] = [:] public subscript(key: String) -> Bool? { @@ -43,6 +45,4 @@ import AnyCodable var nonAdditionalPropertyKeys = Set() additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index eea33c371ac..e861826bcf9 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -22,6 +22,7 @@ import AnyCodable self._id = _id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case _id = "id" case name @@ -34,7 +35,4 @@ import AnyCodable try container.encodeIfPresent(_id, forKey: ._id) try container.encodeIfPresent(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index b6c174ed146..66eaf47b803 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -23,6 +23,7 @@ import AnyCodable self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ import AnyCodable try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index d794fec5ce9..f4aa2c171e5 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -23,6 +23,7 @@ import AnyCodable self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ import AnyCodable try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/User.swift index f233f6cccbd..41aa41aaaff 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -40,6 +40,7 @@ import AnyCodable self.phone = phone self.userStatus = userStatus } + public enum CodingKeys: String, CodingKey, CaseIterable { case _id = "id" case username @@ -64,7 +65,4 @@ import AnyCodable try container.encodeIfPresent(phone, forKey: .phone) try container.encodeIfPresent(userStatus, forKey: .userStatus) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 75ab9bc8d0a..23c4af6d4ff 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -17,6 +17,7 @@ public struct AdditionalPropertiesClass: Codable, Hashable { self.mapString = mapString self.mapMapString = mapMapString } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapString = "map_string" case mapMapString = "map_map_string" @@ -29,7 +30,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapString, forKey: .mapString) try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 0f825cf24d0..a422ee73b55 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -17,6 +17,7 @@ public struct Animal: Codable, Hashable { self.className = className self.color = color } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -29,7 +30,4 @@ public struct Animal: Codable, Hashable { try container.encode(className, forKey: .className) try container.encodeIfPresent(color, forKey: .color) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 2b66af2dc94..7f7c6a34bdf 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -19,6 +19,7 @@ public struct ApiResponse: Codable, Hashable { self.type = type self.message = message } + public enum CodingKeys: String, CodingKey, CaseIterable { case code case type @@ -33,7 +34,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(type, forKey: .type) try container.encodeIfPresent(message, forKey: .message) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 06f0640475c..0221229e7dd 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { public init(arrayArrayNumber: [[Double]]? = nil) { self.arrayArrayNumber = arrayArrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayArrayNumber = "ArrayArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index 8c50c7fa1e4..b5c7ca501e7 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfNumberOnly: Codable, Hashable { public init(arrayNumber: [Double]? = nil) { self.arrayNumber = arrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayNumber = "ArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 461ec7cd9ac..9074d9ab4aa 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -19,6 +19,7 @@ public struct ArrayTest: Codable, Hashable { self.arrayArrayOfInteger = arrayArrayOfInteger self.arrayArrayOfModel = arrayArrayOfModel } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayOfString = "array_of_string" case arrayArrayOfInteger = "array_array_of_integer" @@ -33,7 +34,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfInteger, forKey: .arrayArrayOfInteger) try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index fbe62983d5e..f0ca1a76f27 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -26,6 +26,7 @@ public struct Capitalization: Codable, Hashable { self.sCAETHFlowPoints = sCAETHFlowPoints self.ATT_NAME = ATT_NAME } + public enum CodingKeys: String, CodingKey, CaseIterable { case smallCamel case capitalCamel = "CapitalCamel" @@ -46,7 +47,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(sCAETHFlowPoints, forKey: .sCAETHFlowPoints) try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 7f3a86932f1..89aaea45b91 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -19,6 +19,7 @@ public struct Cat: Codable, Hashable { self.color = color self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8df23954832..c80f7549e69 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -15,6 +15,7 @@ public struct CatAllOf: Codable, Hashable { public init(declawed: Bool? = nil) { self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case declawed } @@ -25,7 +26,4 @@ public struct CatAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 4109db4d1ef..0def88b1fc8 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -17,6 +17,7 @@ public struct Category: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Category: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encode(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 7269ddbef6f..90e4986e7f6 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -16,6 +16,7 @@ public struct ClassModel: Codable, Hashable { public init(_class: String? = nil) { self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case _class } @@ -26,7 +27,4 @@ public struct ClassModel: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 7d6eff2ffe1..4e031806901 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -15,6 +15,7 @@ public struct Client: Codable, Hashable { public init(client: String? = nil) { self.client = client } + public enum CodingKeys: String, CodingKey, CaseIterable { case client } @@ -25,7 +26,4 @@ public struct Client: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(client, forKey: .client) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index b5f2bcea38a..2387b3e7b2c 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -19,6 +19,7 @@ public struct Dog: Codable, Hashable { self.color = color self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 1bfa23d7bc6..4317578cee4 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -15,6 +15,7 @@ public struct DogAllOf: Codable, Hashable { public init(breed: String? = nil) { self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case breed } @@ -25,7 +26,4 @@ public struct DogAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 73368c42143..01b8960fe34 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -25,6 +25,7 @@ public struct EnumArrays: Codable, Hashable { self.justSymbol = justSymbol self.arrayEnum = arrayEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case justSymbol = "just_symbol" case arrayEnum = "array_enum" @@ -37,7 +38,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(justSymbol, forKey: .justSymbol) try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 60a81bcac77..9c8e2e9ac84 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -41,6 +41,7 @@ public struct EnumTest: Codable, Hashable { self.enumNumber = enumNumber self.outerEnum = outerEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case enumString = "enum_string" case enumStringRequired = "enum_string_required" @@ -59,7 +60,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(enumNumber, forKey: .enumNumber) try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 90283656d1b..2a9c769ca6c 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -17,6 +17,7 @@ public struct File: Codable, Hashable { public init(sourceURI: String? = nil) { self.sourceURI = sourceURI } + public enum CodingKeys: String, CodingKey, CaseIterable { case sourceURI } @@ -27,7 +28,4 @@ public struct File: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index cff92673bbe..cd8a9a0e9fe 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -17,6 +17,7 @@ public struct FileSchemaTestClass: Codable, Hashable { self.file = file self.files = files } + public enum CodingKeys: String, CodingKey, CaseIterable { case file case files @@ -29,7 +30,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(file, forKey: .file) try container.encodeIfPresent(files, forKey: .files) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index fc86676eec3..11493f7ce28 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -39,6 +39,7 @@ public struct FormatTest: Codable, Hashable { self.uuid = uuid self.password = password } + public enum CodingKeys: String, CodingKey, CaseIterable { case integer case int32 @@ -73,7 +74,4 @@ public struct FormatTest: Codable, Hashable { try container.encodeIfPresent(uuid, forKey: .uuid) try container.encode(password, forKey: .password) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index d7960f5c800..b7a1449830a 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -17,6 +17,7 @@ public struct HasOnlyReadOnly: Codable, Hashable { self.bar = bar self.foo = foo } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case foo @@ -29,7 +30,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(foo, forKey: .foo) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index c5d4f2cae56..8d484cf0a33 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -15,6 +15,7 @@ public struct List: Codable, Hashable { public init(_123list: String? = nil) { self._123list = _123list } + public enum CodingKeys: String, CodingKey, CaseIterable { case _123list = "123-list" } @@ -25,7 +26,4 @@ public struct List: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_123list, forKey: ._123list) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index b54bd01e5dc..4b56880fed6 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -25,6 +25,7 @@ public struct MapTest: Codable, Hashable { self.directMap = directMap self.indirectMap = indirectMap } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapMapOfString = "map_map_of_string" case mapOfEnumString = "map_of_enum_string" @@ -41,7 +42,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(directMap, forKey: .directMap) try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index c8f639ef43d..f07f8132af7 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -19,6 +19,7 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { self.dateTime = dateTime self.map = map } + public enum CodingKeys: String, CodingKey, CaseIterable { case uuid case dateTime @@ -33,7 +34,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(dateTime, forKey: .dateTime) try container.encodeIfPresent(map, forKey: .map) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 5368032f09b..dc99e8cb8dd 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -18,6 +18,7 @@ public struct Model200Response: Codable, Hashable { self.name = name self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case _class = "class" @@ -30,7 +31,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index 84a40e1c101..d9f893c86ba 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -22,6 +22,7 @@ public struct Name: Codable, Hashable { self.property = property self._123number = _123number } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case snakeCase = "snake_case" @@ -38,7 +39,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(property, forKey: .property) try container.encodeIfPresent(_123number, forKey: ._123number) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 710f41648f9..8c1ad5ddd4b 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -15,6 +15,7 @@ public struct NumberOnly: Codable, Hashable { public init(justNumber: Double? = nil) { self.justNumber = justNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case justNumber = "JustNumber" } @@ -25,7 +26,4 @@ public struct NumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(justNumber, forKey: .justNumber) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 15726ab16a4..c474a6e657b 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -31,6 +31,7 @@ public struct Order: Codable, Hashable { self.status = status self.complete = complete } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case petId @@ -51,7 +52,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) try container.encodeIfPresent(complete, forKey: .complete) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 36904afbd50..cdaad279b0f 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -19,6 +19,7 @@ public struct OuterComposite: Codable, Hashable { self.myString = myString self.myBoolean = myBoolean } + public enum CodingKeys: String, CodingKey, CaseIterable { case myNumber = "my_number" case myString = "my_string" @@ -33,7 +34,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myString, forKey: .myString) try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 7a1c2826a19..ea9ece39161 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -31,6 +31,7 @@ public struct Pet: Codable, Hashable { self.tags = tags self.status = status } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case category @@ -51,7 +52,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(tags, forKey: .tags) try container.encodeIfPresent(status, forKey: .status) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 38fb57af328..d08a673dbf4 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -17,6 +17,7 @@ public struct ReadOnlyFirst: Codable, Hashable { self.bar = bar self.baz = baz } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case baz @@ -29,7 +30,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(baz, forKey: .baz) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index ed7e538a06d..d34dc71ec37 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -16,6 +16,7 @@ public struct Return: Codable, Hashable { public init(_return: Int? = nil) { self._return = _return } + public enum CodingKeys: String, CodingKey, CaseIterable { case _return = "return" } @@ -26,7 +27,4 @@ public struct Return: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_return, forKey: ._return) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index 18747e071bc..e0e0ea6ae29 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -15,6 +15,7 @@ public struct SpecialModelName: Codable, Hashable { public init(specialPropertyName: Int64? = nil) { self.specialPropertyName = specialPropertyName } + public enum CodingKeys: String, CodingKey, CaseIterable { case specialPropertyName = "$special[property.name]" } @@ -25,7 +26,4 @@ public struct SpecialModelName: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 0699c25ff7e..8fb1b40e5ee 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -10,8 +10,10 @@ import AnyCodable public struct StringBooleanMap: Codable, Hashable { + public enum CodingKeys: CodingKey, CaseIterable { } + public var additionalProperties: [String: Bool] = [:] public subscript(key: String) -> Bool? { @@ -43,6 +45,4 @@ public struct StringBooleanMap: Codable, Hashable { var nonAdditionalPropertyKeys = Set() additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 11c5f7a750b..5d90c8a7400 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -17,6 +17,7 @@ public struct Tag: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encodeIfPresent(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 35b1a5833b9..e6e6530dc51 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -23,6 +23,7 @@ public struct TypeHolderDefault: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 37277a4ac00..17c811b2edc 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -23,6 +23,7 @@ public struct TypeHolderExample: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 2bbc31806ff..f93cecfc5d0 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -30,6 +30,7 @@ public struct User: Codable, Hashable { self.phone = phone self.userStatus = userStatus } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case username @@ -54,7 +55,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(phone, forKey: .phone) try container.encodeIfPresent(userStatus, forKey: .userStatus) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index ccdd14f3260..b8a7361ac05 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -17,6 +17,7 @@ public struct AdditionalPropertiesClass: Codable, Hashable { self.mapString = mapString self.mapMapString = mapMapString } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapString = "map_string" case mapMapString = "map_map_string" @@ -29,7 +30,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapString, forKey: .mapString) try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 4efa18dd316..7acb0151257 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -17,6 +17,7 @@ public struct Animal: Codable, Hashable { self.className = className self.color = color } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -29,7 +30,4 @@ public struct Animal: Codable, Hashable { try container.encode(className, forKey: .className) try container.encodeIfPresent(color, forKey: .color) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 72f8703b0f8..1c9f0e12f41 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -19,6 +19,7 @@ public struct ApiResponse: Codable, Hashable { self.type = type self.message = message } + public enum CodingKeys: String, CodingKey, CaseIterable { case code case type @@ -33,7 +34,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(type, forKey: .type) try container.encodeIfPresent(message, forKey: .message) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 0904c469332..4c439515c83 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { public init(arrayArrayNumber: [[Double]]? = nil) { self.arrayArrayNumber = arrayArrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayArrayNumber = "ArrayArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index e91f2a29097..e882a622576 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfNumberOnly: Codable, Hashable { public init(arrayNumber: [Double]? = nil) { self.arrayNumber = arrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayNumber = "ArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 5262ce6185f..0e6db13a292 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -19,6 +19,7 @@ public struct ArrayTest: Codable, Hashable { self.arrayArrayOfInteger = arrayArrayOfInteger self.arrayArrayOfModel = arrayArrayOfModel } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayOfString = "array_of_string" case arrayArrayOfInteger = "array_array_of_integer" @@ -33,7 +34,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfInteger, forKey: .arrayArrayOfInteger) try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index 63f53d28293..5993241ce32 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -26,6 +26,7 @@ public struct Capitalization: Codable, Hashable { self.sCAETHFlowPoints = sCAETHFlowPoints self.ATT_NAME = ATT_NAME } + public enum CodingKeys: String, CodingKey, CaseIterable { case smallCamel case capitalCamel = "CapitalCamel" @@ -46,7 +47,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(sCAETHFlowPoints, forKey: .sCAETHFlowPoints) try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index a74ed96c8cc..d1526a8ac3a 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -19,6 +19,7 @@ public struct Cat: Codable, Hashable { self.color = color self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index d6ef582ff64..1e2fbc1a2bf 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -15,6 +15,7 @@ public struct CatAllOf: Codable, Hashable { public init(declawed: Bool? = nil) { self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case declawed } @@ -25,7 +26,4 @@ public struct CatAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 27c46ebc1ce..73d137b704b 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -17,6 +17,7 @@ public struct Category: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Category: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encode(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index e5e78f49084..823b48cad60 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -16,6 +16,7 @@ public struct ClassModel: Codable, Hashable { public init(_class: String? = nil) { self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case _class } @@ -26,7 +27,4 @@ public struct ClassModel: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 7553011dbf3..7ff9f1e47f1 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -15,6 +15,7 @@ public struct Client: Codable, Hashable { public init(client: String? = nil) { self.client = client } + public enum CodingKeys: String, CodingKey, CaseIterable { case client } @@ -25,7 +26,4 @@ public struct Client: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(client, forKey: .client) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index c458bc06ab0..423eb7a58ef 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -19,6 +19,7 @@ public struct Dog: Codable, Hashable { self.color = color self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 6e165285668..ad9761aba9a 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -15,6 +15,7 @@ public struct DogAllOf: Codable, Hashable { public init(breed: String? = nil) { self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case breed } @@ -25,7 +26,4 @@ public struct DogAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 4850d7bbe5a..e413cc97d43 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -25,6 +25,7 @@ public struct EnumArrays: Codable, Hashable { self.justSymbol = justSymbol self.arrayEnum = arrayEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case justSymbol = "just_symbol" case arrayEnum = "array_enum" @@ -37,7 +38,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(justSymbol, forKey: .justSymbol) try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index ec8c5ff72bc..5ea4ff0cf5b 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -41,6 +41,7 @@ public struct EnumTest: Codable, Hashable { self.enumNumber = enumNumber self.outerEnum = outerEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case enumString = "enum_string" case enumStringRequired = "enum_string_required" @@ -59,7 +60,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(enumNumber, forKey: .enumNumber) try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/File.swift index bfe11105fc6..48b1211fe02 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -17,6 +17,7 @@ public struct File: Codable, Hashable { public init(sourceURI: String? = nil) { self.sourceURI = sourceURI } + public enum CodingKeys: String, CodingKey, CaseIterable { case sourceURI } @@ -27,7 +28,4 @@ public struct File: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index dd837236657..ad421491c9b 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -17,6 +17,7 @@ public struct FileSchemaTestClass: Codable, Hashable { self.file = file self.files = files } + public enum CodingKeys: String, CodingKey, CaseIterable { case file case files @@ -29,7 +30,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(file, forKey: .file) try container.encodeIfPresent(files, forKey: .files) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 078c2c4a08c..0e262943f6d 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -39,6 +39,7 @@ public struct FormatTest: Codable, Hashable { self.uuid = uuid self.password = password } + public enum CodingKeys: String, CodingKey, CaseIterable { case integer case int32 @@ -73,7 +74,4 @@ public struct FormatTest: Codable, Hashable { try container.encodeIfPresent(uuid, forKey: .uuid) try container.encode(password, forKey: .password) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index cddd61da5f7..f89b0bac8eb 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -17,6 +17,7 @@ public struct HasOnlyReadOnly: Codable, Hashable { self.bar = bar self.foo = foo } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case foo @@ -29,7 +30,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(foo, forKey: .foo) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/List.swift index b03a8bd8cfd..97e9eb6c9a0 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -15,6 +15,7 @@ public struct List: Codable, Hashable { public init(_123list: String? = nil) { self._123list = _123list } + public enum CodingKeys: String, CodingKey, CaseIterable { case _123list = "123-list" } @@ -25,7 +26,4 @@ public struct List: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_123list, forKey: ._123list) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index db5928bc97e..e3b9164f463 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -25,6 +25,7 @@ public struct MapTest: Codable, Hashable { self.directMap = directMap self.indirectMap = indirectMap } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapMapOfString = "map_map_of_string" case mapOfEnumString = "map_of_enum_string" @@ -41,7 +42,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(directMap, forKey: .directMap) try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index cd1c8eb22c0..1156ca42155 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -19,6 +19,7 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { self.dateTime = dateTime self.map = map } + public enum CodingKeys: String, CodingKey, CaseIterable { case uuid case dateTime @@ -33,7 +34,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(dateTime, forKey: .dateTime) try container.encodeIfPresent(map, forKey: .map) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 070ed68254b..511011c84a1 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -18,6 +18,7 @@ public struct Model200Response: Codable, Hashable { self.name = name self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case _class = "class" @@ -30,7 +31,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index c90f8deb556..10c59ae2a62 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -22,6 +22,7 @@ public struct Name: Codable, Hashable { self.property = property self._123number = _123number } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case snakeCase = "snake_case" @@ -38,7 +39,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(property, forKey: .property) try container.encodeIfPresent(_123number, forKey: ._123number) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 32a62548302..767a52c5b44 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -15,6 +15,7 @@ public struct NumberOnly: Codable, Hashable { public init(justNumber: Double? = nil) { self.justNumber = justNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case justNumber = "JustNumber" } @@ -25,7 +26,4 @@ public struct NumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(justNumber, forKey: .justNumber) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index cf5160c930d..359def85db8 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -31,6 +31,7 @@ public struct Order: Codable, Hashable { self.status = status self.complete = complete } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case petId @@ -51,7 +52,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) try container.encodeIfPresent(complete, forKey: .complete) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 72a76adba29..3f36b653aac 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -19,6 +19,7 @@ public struct OuterComposite: Codable, Hashable { self.myString = myString self.myBoolean = myBoolean } + public enum CodingKeys: String, CodingKey, CaseIterable { case myNumber = "my_number" case myString = "my_string" @@ -33,7 +34,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myString, forKey: .myString) try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index d4753402759..7fa54eaef81 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -31,6 +31,7 @@ public struct Pet: Codable, Hashable { self.tags = tags self.status = status } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case category @@ -51,7 +52,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(tags, forKey: .tags) try container.encodeIfPresent(status, forKey: .status) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 6f285eef8a0..24c117a4876 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -17,6 +17,7 @@ public struct ReadOnlyFirst: Codable, Hashable { self.bar = bar self.baz = baz } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case baz @@ -29,7 +30,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(baz, forKey: .baz) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 2c791780b41..47e57b215c5 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -16,6 +16,7 @@ public struct Return: Codable, Hashable { public init(_return: Int? = nil) { self._return = _return } + public enum CodingKeys: String, CodingKey, CaseIterable { case _return = "return" } @@ -26,7 +27,4 @@ public struct Return: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_return, forKey: ._return) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index baf14720175..ab93560e778 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -15,6 +15,7 @@ public struct SpecialModelName: Codable, Hashable { public init(specialPropertyName: Int64? = nil) { self.specialPropertyName = specialPropertyName } + public enum CodingKeys: String, CodingKey, CaseIterable { case specialPropertyName = "$special[property.name]" } @@ -25,7 +26,4 @@ public struct SpecialModelName: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 0b671fe0ad3..3b304716da4 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -10,8 +10,10 @@ import AnyCodable public struct StringBooleanMap: Codable, Hashable { + public enum CodingKeys: CodingKey, CaseIterable { } + public private(set) var additionalProperties: [String: Bool] = [:] public subscript(key: String) -> Bool? { @@ -43,6 +45,4 @@ public struct StringBooleanMap: Codable, Hashable { var nonAdditionalPropertyKeys = Set() additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 76fdd4a783d..ff5e4bbaf36 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -17,6 +17,7 @@ public struct Tag: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encodeIfPresent(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index d518a528ba7..22e7d001936 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -23,6 +23,7 @@ public struct TypeHolderDefault: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 07ec715e38a..d03f41b1d95 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -23,6 +23,7 @@ public struct TypeHolderExample: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/User.swift index f9a7b1e36e3..21532c7023b 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -30,6 +30,7 @@ public struct User: Codable, Hashable { self.phone = phone self.userStatus = userStatus } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case username @@ -54,7 +55,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(phone, forKey: .phone) try container.encodeIfPresent(userStatus, forKey: .userStatus) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 75ab9bc8d0a..23c4af6d4ff 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -17,6 +17,7 @@ public struct AdditionalPropertiesClass: Codable, Hashable { self.mapString = mapString self.mapMapString = mapMapString } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapString = "map_string" case mapMapString = "map_map_string" @@ -29,7 +30,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapString, forKey: .mapString) try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 0f825cf24d0..a422ee73b55 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -17,6 +17,7 @@ public struct Animal: Codable, Hashable { self.className = className self.color = color } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -29,7 +30,4 @@ public struct Animal: Codable, Hashable { try container.encode(className, forKey: .className) try container.encodeIfPresent(color, forKey: .color) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 2b66af2dc94..7f7c6a34bdf 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -19,6 +19,7 @@ public struct ApiResponse: Codable, Hashable { self.type = type self.message = message } + public enum CodingKeys: String, CodingKey, CaseIterable { case code case type @@ -33,7 +34,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(type, forKey: .type) try container.encodeIfPresent(message, forKey: .message) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 06f0640475c..0221229e7dd 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { public init(arrayArrayNumber: [[Double]]? = nil) { self.arrayArrayNumber = arrayArrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayArrayNumber = "ArrayArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index 8c50c7fa1e4..b5c7ca501e7 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfNumberOnly: Codable, Hashable { public init(arrayNumber: [Double]? = nil) { self.arrayNumber = arrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayNumber = "ArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 461ec7cd9ac..9074d9ab4aa 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -19,6 +19,7 @@ public struct ArrayTest: Codable, Hashable { self.arrayArrayOfInteger = arrayArrayOfInteger self.arrayArrayOfModel = arrayArrayOfModel } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayOfString = "array_of_string" case arrayArrayOfInteger = "array_array_of_integer" @@ -33,7 +34,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfInteger, forKey: .arrayArrayOfInteger) try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index fbe62983d5e..f0ca1a76f27 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -26,6 +26,7 @@ public struct Capitalization: Codable, Hashable { self.sCAETHFlowPoints = sCAETHFlowPoints self.ATT_NAME = ATT_NAME } + public enum CodingKeys: String, CodingKey, CaseIterable { case smallCamel case capitalCamel = "CapitalCamel" @@ -46,7 +47,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(sCAETHFlowPoints, forKey: .sCAETHFlowPoints) try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 7f3a86932f1..89aaea45b91 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -19,6 +19,7 @@ public struct Cat: Codable, Hashable { self.color = color self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8df23954832..c80f7549e69 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -15,6 +15,7 @@ public struct CatAllOf: Codable, Hashable { public init(declawed: Bool? = nil) { self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case declawed } @@ -25,7 +26,4 @@ public struct CatAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 4109db4d1ef..0def88b1fc8 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -17,6 +17,7 @@ public struct Category: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Category: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encode(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 7269ddbef6f..90e4986e7f6 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -16,6 +16,7 @@ public struct ClassModel: Codable, Hashable { public init(_class: String? = nil) { self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case _class } @@ -26,7 +27,4 @@ public struct ClassModel: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 7d6eff2ffe1..4e031806901 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -15,6 +15,7 @@ public struct Client: Codable, Hashable { public init(client: String? = nil) { self.client = client } + public enum CodingKeys: String, CodingKey, CaseIterable { case client } @@ -25,7 +26,4 @@ public struct Client: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(client, forKey: .client) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index b5f2bcea38a..2387b3e7b2c 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -19,6 +19,7 @@ public struct Dog: Codable, Hashable { self.color = color self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 1bfa23d7bc6..4317578cee4 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -15,6 +15,7 @@ public struct DogAllOf: Codable, Hashable { public init(breed: String? = nil) { self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case breed } @@ -25,7 +26,4 @@ public struct DogAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 73368c42143..01b8960fe34 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -25,6 +25,7 @@ public struct EnumArrays: Codable, Hashable { self.justSymbol = justSymbol self.arrayEnum = arrayEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case justSymbol = "just_symbol" case arrayEnum = "array_enum" @@ -37,7 +38,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(justSymbol, forKey: .justSymbol) try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 60a81bcac77..9c8e2e9ac84 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -41,6 +41,7 @@ public struct EnumTest: Codable, Hashable { self.enumNumber = enumNumber self.outerEnum = outerEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case enumString = "enum_string" case enumStringRequired = "enum_string_required" @@ -59,7 +60,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(enumNumber, forKey: .enumNumber) try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 90283656d1b..2a9c769ca6c 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -17,6 +17,7 @@ public struct File: Codable, Hashable { public init(sourceURI: String? = nil) { self.sourceURI = sourceURI } + public enum CodingKeys: String, CodingKey, CaseIterable { case sourceURI } @@ -27,7 +28,4 @@ public struct File: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index cff92673bbe..cd8a9a0e9fe 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -17,6 +17,7 @@ public struct FileSchemaTestClass: Codable, Hashable { self.file = file self.files = files } + public enum CodingKeys: String, CodingKey, CaseIterable { case file case files @@ -29,7 +30,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(file, forKey: .file) try container.encodeIfPresent(files, forKey: .files) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index fc86676eec3..11493f7ce28 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -39,6 +39,7 @@ public struct FormatTest: Codable, Hashable { self.uuid = uuid self.password = password } + public enum CodingKeys: String, CodingKey, CaseIterable { case integer case int32 @@ -73,7 +74,4 @@ public struct FormatTest: Codable, Hashable { try container.encodeIfPresent(uuid, forKey: .uuid) try container.encode(password, forKey: .password) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index d7960f5c800..b7a1449830a 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -17,6 +17,7 @@ public struct HasOnlyReadOnly: Codable, Hashable { self.bar = bar self.foo = foo } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case foo @@ -29,7 +30,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(foo, forKey: .foo) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index c5d4f2cae56..8d484cf0a33 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -15,6 +15,7 @@ public struct List: Codable, Hashable { public init(_123list: String? = nil) { self._123list = _123list } + public enum CodingKeys: String, CodingKey, CaseIterable { case _123list = "123-list" } @@ -25,7 +26,4 @@ public struct List: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_123list, forKey: ._123list) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index b54bd01e5dc..4b56880fed6 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -25,6 +25,7 @@ public struct MapTest: Codable, Hashable { self.directMap = directMap self.indirectMap = indirectMap } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapMapOfString = "map_map_of_string" case mapOfEnumString = "map_of_enum_string" @@ -41,7 +42,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(directMap, forKey: .directMap) try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index c8f639ef43d..f07f8132af7 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -19,6 +19,7 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { self.dateTime = dateTime self.map = map } + public enum CodingKeys: String, CodingKey, CaseIterable { case uuid case dateTime @@ -33,7 +34,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(dateTime, forKey: .dateTime) try container.encodeIfPresent(map, forKey: .map) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 5368032f09b..dc99e8cb8dd 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -18,6 +18,7 @@ public struct Model200Response: Codable, Hashable { self.name = name self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case _class = "class" @@ -30,7 +31,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) try container.encodeIfPresent(_class, forKey: ._class) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index 84a40e1c101..d9f893c86ba 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -22,6 +22,7 @@ public struct Name: Codable, Hashable { self.property = property self._123number = _123number } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case snakeCase = "snake_case" @@ -38,7 +39,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(property, forKey: .property) try container.encodeIfPresent(_123number, forKey: ._123number) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 710f41648f9..8c1ad5ddd4b 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -15,6 +15,7 @@ public struct NumberOnly: Codable, Hashable { public init(justNumber: Double? = nil) { self.justNumber = justNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case justNumber = "JustNumber" } @@ -25,7 +26,4 @@ public struct NumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(justNumber, forKey: .justNumber) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 15726ab16a4..c474a6e657b 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -31,6 +31,7 @@ public struct Order: Codable, Hashable { self.status = status self.complete = complete } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case petId @@ -51,7 +52,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) try container.encodeIfPresent(complete, forKey: .complete) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 36904afbd50..cdaad279b0f 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -19,6 +19,7 @@ public struct OuterComposite: Codable, Hashable { self.myString = myString self.myBoolean = myBoolean } + public enum CodingKeys: String, CodingKey, CaseIterable { case myNumber = "my_number" case myString = "my_string" @@ -33,7 +34,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myString, forKey: .myString) try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 7a1c2826a19..ea9ece39161 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -31,6 +31,7 @@ public struct Pet: Codable, Hashable { self.tags = tags self.status = status } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case category @@ -51,7 +52,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(tags, forKey: .tags) try container.encodeIfPresent(status, forKey: .status) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 38fb57af328..d08a673dbf4 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -17,6 +17,7 @@ public struct ReadOnlyFirst: Codable, Hashable { self.bar = bar self.baz = baz } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case baz @@ -29,7 +30,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(baz, forKey: .baz) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index ed7e538a06d..d34dc71ec37 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -16,6 +16,7 @@ public struct Return: Codable, Hashable { public init(_return: Int? = nil) { self._return = _return } + public enum CodingKeys: String, CodingKey, CaseIterable { case _return = "return" } @@ -26,7 +27,4 @@ public struct Return: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_return, forKey: ._return) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index 18747e071bc..e0e0ea6ae29 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -15,6 +15,7 @@ public struct SpecialModelName: Codable, Hashable { public init(specialPropertyName: Int64? = nil) { self.specialPropertyName = specialPropertyName } + public enum CodingKeys: String, CodingKey, CaseIterable { case specialPropertyName = "$special[property.name]" } @@ -25,7 +26,4 @@ public struct SpecialModelName: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 0699c25ff7e..8fb1b40e5ee 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -10,8 +10,10 @@ import AnyCodable public struct StringBooleanMap: Codable, Hashable { + public enum CodingKeys: CodingKey, CaseIterable { } + public var additionalProperties: [String: Bool] = [:] public subscript(key: String) -> Bool? { @@ -43,6 +45,4 @@ public struct StringBooleanMap: Codable, Hashable { var nonAdditionalPropertyKeys = Set() additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 11c5f7a750b..5d90c8a7400 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -17,6 +17,7 @@ public struct Tag: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encodeIfPresent(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 35b1a5833b9..e6e6530dc51 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -23,6 +23,7 @@ public struct TypeHolderDefault: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 37277a4ac00..17c811b2edc 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -23,6 +23,7 @@ public struct TypeHolderExample: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 2bbc31806ff..f93cecfc5d0 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -30,6 +30,7 @@ public struct User: Codable, Hashable { self.phone = phone self.userStatus = userStatus } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case username @@ -54,7 +55,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(phone, forKey: .phone) try container.encodeIfPresent(userStatus, forKey: .userStatus) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 3aef2d1d6c5..7c712846fbd 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -93,92 +93,6 @@ extension UUID: JSONEncodable { } } -extension String: CodingKey { - - public var stringValue: String { - return self - } - - public init?(stringValue: String) { - self.init(stringLiteral: stringValue) - } - - public var intValue: Int? { - return nil - } - - public init?(intValue: Int) { - return nil - } - -} - -extension KeyedEncodingContainerProtocol { - - public mutating func encodeArray(_ values: [T], forKey key: Self.Key) throws where T: Encodable { - var arrayContainer = nestedUnkeyedContainer(forKey: key) - try arrayContainer.encode(contentsOf: values) - } - - public mutating func encodeArrayIfPresent(_ values: [T]?, forKey key: Self.Key) throws where T: Encodable { - if let values = values { - try encodeArray(values, forKey: key) - } - } - - public mutating func encodeMap(_ pairs: [Self.Key: T]) throws where T: Encodable { - for (key, value) in pairs { - try encode(value, forKey: key) - } - } - - public mutating func encodeMapIfPresent(_ pairs: [Self.Key: T]?) throws where T: Encodable { - if let pairs = pairs { - try encodeMap(pairs) - } - } - -} - -extension KeyedDecodingContainerProtocol { - - public func decodeArray(_ type: T.Type, forKey key: Self.Key) throws -> [T] where T: Decodable { - var tmpArray = [T]() - - var nestedContainer = try nestedUnkeyedContainer(forKey: key) - while !nestedContainer.isAtEnd { - let arrayValue = try nestedContainer.decode(T.self) - tmpArray.append(arrayValue) - } - - return tmpArray - } - - public func decodeArrayIfPresent(_ type: T.Type, forKey key: Self.Key) throws -> [T]? where T: Decodable { - var tmpArray: [T]? - - if contains(key) { - tmpArray = try decodeArray(T.self, forKey: key) - } - - return tmpArray - } - - public func decodeMap(_ type: T.Type, excludedKeys: Set) throws -> [Self.Key: T] where T: Decodable { - var map: [Self.Key: T] = [:] - - for key in allKeys { - if !excludedKeys.contains(key) { - let value = try decode(T.self, forKey: key) - map[key] = value - } - } - - return map - } - -} - extension HTTPURLResponse { var isStatusCodeSuccessful: Bool { return Array(200 ..< 300).contains(statusCode) diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 75ab9bc8d0a..23c4af6d4ff 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -17,6 +17,7 @@ public struct AdditionalPropertiesClass: Codable, Hashable { self.mapString = mapString self.mapMapString = mapMapString } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapString = "map_string" case mapMapString = "map_map_string" @@ -29,7 +30,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapString, forKey: .mapString) try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 0f825cf24d0..a422ee73b55 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -17,6 +17,7 @@ public struct Animal: Codable, Hashable { self.className = className self.color = color } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -29,7 +30,4 @@ public struct Animal: Codable, Hashable { try container.encode(className, forKey: .className) try container.encodeIfPresent(color, forKey: .color) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 2b66af2dc94..7f7c6a34bdf 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -19,6 +19,7 @@ public struct ApiResponse: Codable, Hashable { self.type = type self.message = message } + public enum CodingKeys: String, CodingKey, CaseIterable { case code case type @@ -33,7 +34,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(type, forKey: .type) try container.encodeIfPresent(message, forKey: .message) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 06f0640475c..0221229e7dd 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { public init(arrayArrayNumber: [[Double]]? = nil) { self.arrayArrayNumber = arrayArrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayArrayNumber = "ArrayArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index 8c50c7fa1e4..b5c7ca501e7 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public struct ArrayOfNumberOnly: Codable, Hashable { public init(arrayNumber: [Double]? = nil) { self.arrayNumber = arrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayNumber = "ArrayNumber" } @@ -25,7 +26,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 461ec7cd9ac..9074d9ab4aa 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -19,6 +19,7 @@ public struct ArrayTest: Codable, Hashable { self.arrayArrayOfInteger = arrayArrayOfInteger self.arrayArrayOfModel = arrayArrayOfModel } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayOfString = "array_of_string" case arrayArrayOfInteger = "array_array_of_integer" @@ -33,7 +34,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfInteger, forKey: .arrayArrayOfInteger) try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index fbe62983d5e..f0ca1a76f27 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -26,6 +26,7 @@ public struct Capitalization: Codable, Hashable { self.sCAETHFlowPoints = sCAETHFlowPoints self.ATT_NAME = ATT_NAME } + public enum CodingKeys: String, CodingKey, CaseIterable { case smallCamel case capitalCamel = "CapitalCamel" @@ -46,7 +47,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(sCAETHFlowPoints, forKey: .sCAETHFlowPoints) try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 7f3a86932f1..89aaea45b91 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -19,6 +19,7 @@ public struct Cat: Codable, Hashable { self.color = color self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8df23954832..c80f7549e69 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -15,6 +15,7 @@ public struct CatAllOf: Codable, Hashable { public init(declawed: Bool? = nil) { self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case declawed } @@ -25,7 +26,4 @@ public struct CatAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(declawed, forKey: .declawed) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 4109db4d1ef..0def88b1fc8 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -17,6 +17,7 @@ public struct Category: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Category: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encode(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 44ac733f2c5..b83341aa308 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -16,6 +16,7 @@ public struct ClassModel: Codable, Hashable { public init(`class`: String? = nil) { self.`class` = `class` } + public enum CodingKeys: String, CodingKey, CaseIterable { case `class` = "_class" } @@ -26,7 +27,4 @@ public struct ClassModel: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(`class`, forKey: .`class`) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 7d6eff2ffe1..4e031806901 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -15,6 +15,7 @@ public struct Client: Codable, Hashable { public init(client: String? = nil) { self.client = client } + public enum CodingKeys: String, CodingKey, CaseIterable { case client } @@ -25,7 +26,4 @@ public struct Client: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(client, forKey: .client) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index b5f2bcea38a..2387b3e7b2c 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -19,6 +19,7 @@ public struct Dog: Codable, Hashable { self.color = color self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -33,7 +34,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 1bfa23d7bc6..4317578cee4 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -15,6 +15,7 @@ public struct DogAllOf: Codable, Hashable { public init(breed: String? = nil) { self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case breed } @@ -25,7 +26,4 @@ public struct DogAllOf: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(breed, forKey: .breed) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 73368c42143..01b8960fe34 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -25,6 +25,7 @@ public struct EnumArrays: Codable, Hashable { self.justSymbol = justSymbol self.arrayEnum = arrayEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case justSymbol = "just_symbol" case arrayEnum = "array_enum" @@ -37,7 +38,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(justSymbol, forKey: .justSymbol) try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 60a81bcac77..9c8e2e9ac84 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -41,6 +41,7 @@ public struct EnumTest: Codable, Hashable { self.enumNumber = enumNumber self.outerEnum = outerEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case enumString = "enum_string" case enumStringRequired = "enum_string_required" @@ -59,7 +60,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(enumNumber, forKey: .enumNumber) try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 90283656d1b..2a9c769ca6c 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -17,6 +17,7 @@ public struct File: Codable, Hashable { public init(sourceURI: String? = nil) { self.sourceURI = sourceURI } + public enum CodingKeys: String, CodingKey, CaseIterable { case sourceURI } @@ -27,7 +28,4 @@ public struct File: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index cff92673bbe..cd8a9a0e9fe 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -17,6 +17,7 @@ public struct FileSchemaTestClass: Codable, Hashable { self.file = file self.files = files } + public enum CodingKeys: String, CodingKey, CaseIterable { case file case files @@ -29,7 +30,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(file, forKey: .file) try container.encodeIfPresent(files, forKey: .files) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index fc86676eec3..11493f7ce28 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -39,6 +39,7 @@ public struct FormatTest: Codable, Hashable { self.uuid = uuid self.password = password } + public enum CodingKeys: String, CodingKey, CaseIterable { case integer case int32 @@ -73,7 +74,4 @@ public struct FormatTest: Codable, Hashable { try container.encodeIfPresent(uuid, forKey: .uuid) try container.encode(password, forKey: .password) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index d7960f5c800..b7a1449830a 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -17,6 +17,7 @@ public struct HasOnlyReadOnly: Codable, Hashable { self.bar = bar self.foo = foo } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case foo @@ -29,7 +30,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(foo, forKey: .foo) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index c5d4f2cae56..8d484cf0a33 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -15,6 +15,7 @@ public struct List: Codable, Hashable { public init(_123list: String? = nil) { self._123list = _123list } + public enum CodingKeys: String, CodingKey, CaseIterable { case _123list = "123-list" } @@ -25,7 +26,4 @@ public struct List: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(_123list, forKey: ._123list) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index b54bd01e5dc..4b56880fed6 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -25,6 +25,7 @@ public struct MapTest: Codable, Hashable { self.directMap = directMap self.indirectMap = indirectMap } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapMapOfString = "map_map_of_string" case mapOfEnumString = "map_of_enum_string" @@ -41,7 +42,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(directMap, forKey: .directMap) try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index c8f639ef43d..f07f8132af7 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -19,6 +19,7 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { self.dateTime = dateTime self.map = map } + public enum CodingKeys: String, CodingKey, CaseIterable { case uuid case dateTime @@ -33,7 +34,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(dateTime, forKey: .dateTime) try container.encodeIfPresent(map, forKey: .map) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 9b7e3c46d8c..73afe1ea458 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -18,6 +18,7 @@ public struct Model200Response: Codable, Hashable { self.name = name self.`class` = `class` } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case `class` = "class" @@ -30,7 +31,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) try container.encodeIfPresent(`class`, forKey: .`class`) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index 84a40e1c101..d9f893c86ba 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -22,6 +22,7 @@ public struct Name: Codable, Hashable { self.property = property self._123number = _123number } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case snakeCase = "snake_case" @@ -38,7 +39,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(property, forKey: .property) try container.encodeIfPresent(_123number, forKey: ._123number) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 710f41648f9..8c1ad5ddd4b 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -15,6 +15,7 @@ public struct NumberOnly: Codable, Hashable { public init(justNumber: Double? = nil) { self.justNumber = justNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case justNumber = "JustNumber" } @@ -25,7 +26,4 @@ public struct NumberOnly: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(justNumber, forKey: .justNumber) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 15726ab16a4..c474a6e657b 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -31,6 +31,7 @@ public struct Order: Codable, Hashable { self.status = status self.complete = complete } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case petId @@ -51,7 +52,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) try container.encodeIfPresent(complete, forKey: .complete) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 36904afbd50..cdaad279b0f 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -19,6 +19,7 @@ public struct OuterComposite: Codable, Hashable { self.myString = myString self.myBoolean = myBoolean } + public enum CodingKeys: String, CodingKey, CaseIterable { case myNumber = "my_number" case myString = "my_string" @@ -33,7 +34,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myString, forKey: .myString) try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 7a1c2826a19..ea9ece39161 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -31,6 +31,7 @@ public struct Pet: Codable, Hashable { self.tags = tags self.status = status } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case category @@ -51,7 +52,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(tags, forKey: .tags) try container.encodeIfPresent(status, forKey: .status) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 38fb57af328..d08a673dbf4 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -17,6 +17,7 @@ public struct ReadOnlyFirst: Codable, Hashable { self.bar = bar self.baz = baz } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case baz @@ -29,7 +30,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(bar, forKey: .bar) try container.encodeIfPresent(baz, forKey: .baz) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 91d2d536a7b..99ff0ddad82 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -16,6 +16,7 @@ public struct Return: Codable, Hashable { public init(`return`: Int? = nil) { self.`return` = `return` } + public enum CodingKeys: String, CodingKey, CaseIterable { case `return` = "return" } @@ -26,7 +27,4 @@ public struct Return: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(`return`, forKey: .`return`) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index 18747e071bc..e0e0ea6ae29 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -15,6 +15,7 @@ public struct SpecialModelName: Codable, Hashable { public init(specialPropertyName: Int64? = nil) { self.specialPropertyName = specialPropertyName } + public enum CodingKeys: String, CodingKey, CaseIterable { case specialPropertyName = "$special[property.name]" } @@ -25,7 +26,4 @@ public struct SpecialModelName: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 0699c25ff7e..d6d89678adc 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -10,39 +10,13 @@ import AnyCodable public struct StringBooleanMap: Codable, Hashable { + public enum CodingKeys: CodingKey, CaseIterable { } - public var additionalProperties: [String: Bool] = [:] - - public subscript(key: String) -> Bool? { - get { - if let value = additionalProperties[key] { - return value - } - return nil - } - - set { - additionalProperties[key] = newValue - } - } // Encodable protocol methods public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) - var additionalPropertiesContainer = encoder.container(keyedBy: String.self) - try additionalPropertiesContainer.encodeMap(additionalProperties) } - - // Decodable protocol methods - - public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) - - var nonAdditionalPropertyKeys = Set() - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) - } - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 11c5f7a750b..5d90c8a7400 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -17,6 +17,7 @@ public struct Tag: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -29,7 +30,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(id, forKey: .id) try container.encodeIfPresent(name, forKey: .name) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 35b1a5833b9..e6e6530dc51 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -23,6 +23,7 @@ public struct TypeHolderDefault: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 37277a4ac00..17c811b2edc 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -23,6 +23,7 @@ public struct TypeHolderExample: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -41,7 +42,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(boolItem, forKey: .boolItem) try container.encode(arrayItem, forKey: .arrayItem) } - - - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 2bbc31806ff..f93cecfc5d0 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -30,6 +30,7 @@ public struct User: Codable, Hashable { self.phone = phone self.userStatus = userStatus } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case username @@ -54,7 +55,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(phone, forKey: .phone) try container.encodeIfPresent(userStatus, forKey: .userStatus) } - - - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift index 5c3e8279143..2898823a529 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift @@ -17,6 +17,7 @@ public final class AdditionalPropertiesClass: Codable, Hashable { self.mapString = mapString self.mapMapString = mapMapString } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapString = "map_string" case mapMapString = "map_map_string" @@ -30,8 +31,6 @@ public final class AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } - - public static func == (lhs: AdditionalPropertiesClass, rhs: AdditionalPropertiesClass) -> Bool { lhs.mapString == rhs.mapString && lhs.mapMapString == rhs.mapMapString @@ -43,5 +42,4 @@ public final class AdditionalPropertiesClass: Codable, Hashable { hasher.combine(mapMapString?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift index 6bae9f2d0ec..927e6d2865b 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift @@ -17,6 +17,7 @@ public final class Animal: Codable, Hashable { self.className = className self.color = color } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -30,8 +31,6 @@ public final class Animal: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) } - - public static func == (lhs: Animal, rhs: Animal) -> Bool { lhs.className == rhs.className && lhs.color == rhs.color @@ -43,5 +42,4 @@ public final class Animal: Codable, Hashable { hasher.combine(color?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift index a0f3a24a8ee..77172181cc9 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift @@ -19,6 +19,7 @@ public final class ApiResponse: Codable, Hashable { self.type = type self.message = message } + public enum CodingKeys: String, CodingKey, CaseIterable { case code case type @@ -34,8 +35,6 @@ public final class ApiResponse: Codable, Hashable { try container.encodeIfPresent(message, forKey: .message) } - - public static func == (lhs: ApiResponse, rhs: ApiResponse) -> Bool { lhs.code == rhs.code && lhs.type == rhs.type && @@ -49,5 +48,4 @@ public final class ApiResponse: Codable, Hashable { hasher.combine(message?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift index b4b66b37be5..090ffe3b17d 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public final class ArrayOfArrayOfNumberOnly: Codable, Hashable { public init(arrayArrayNumber: [[Double]]? = nil) { self.arrayArrayNumber = arrayArrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayArrayNumber = "ArrayArrayNumber" } @@ -26,8 +27,6 @@ public final class ArrayOfArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } - - public static func == (lhs: ArrayOfArrayOfNumberOnly, rhs: ArrayOfArrayOfNumberOnly) -> Bool { lhs.arrayArrayNumber == rhs.arrayArrayNumber @@ -37,5 +36,4 @@ public final class ArrayOfArrayOfNumberOnly: Codable, Hashable { hasher.combine(arrayArrayNumber?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift index 1efbc2aa9e4..aa63577f84b 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift @@ -15,6 +15,7 @@ public final class ArrayOfNumberOnly: Codable, Hashable { public init(arrayNumber: [Double]? = nil) { self.arrayNumber = arrayNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayNumber = "ArrayNumber" } @@ -26,8 +27,6 @@ public final class ArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } - - public static func == (lhs: ArrayOfNumberOnly, rhs: ArrayOfNumberOnly) -> Bool { lhs.arrayNumber == rhs.arrayNumber @@ -37,5 +36,4 @@ public final class ArrayOfNumberOnly: Codable, Hashable { hasher.combine(arrayNumber?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift index 6ca479263d3..a51a38c8afe 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift @@ -19,6 +19,7 @@ public final class ArrayTest: Codable, Hashable { self.arrayArrayOfInteger = arrayArrayOfInteger self.arrayArrayOfModel = arrayArrayOfModel } + public enum CodingKeys: String, CodingKey, CaseIterable { case arrayOfString = "array_of_string" case arrayArrayOfInteger = "array_array_of_integer" @@ -34,8 +35,6 @@ public final class ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } - - public static func == (lhs: ArrayTest, rhs: ArrayTest) -> Bool { lhs.arrayOfString == rhs.arrayOfString && lhs.arrayArrayOfInteger == rhs.arrayArrayOfInteger && @@ -49,5 +48,4 @@ public final class ArrayTest: Codable, Hashable { hasher.combine(arrayArrayOfModel?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift index fd148a09d29..e7bad1f3da7 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift @@ -26,6 +26,7 @@ public final class Capitalization: Codable, Hashable { self.sCAETHFlowPoints = sCAETHFlowPoints self.ATT_NAME = ATT_NAME } + public enum CodingKeys: String, CodingKey, CaseIterable { case smallCamel case capitalCamel = "CapitalCamel" @@ -47,8 +48,6 @@ public final class Capitalization: Codable, Hashable { try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } - - public static func == (lhs: Capitalization, rhs: Capitalization) -> Bool { lhs.smallCamel == rhs.smallCamel && lhs.capitalCamel == rhs.capitalCamel && @@ -68,5 +67,4 @@ public final class Capitalization: Codable, Hashable { hasher.combine(ATT_NAME?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift index 54b81364f35..b22d8572b93 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift @@ -19,6 +19,7 @@ public final class Cat: Codable, Hashable { self.color = color self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -34,8 +35,6 @@ public final class Cat: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } - - public static func == (lhs: Cat, rhs: Cat) -> Bool { lhs.className == rhs.className && lhs.color == rhs.color && @@ -49,5 +48,4 @@ public final class Cat: Codable, Hashable { hasher.combine(declawed?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift index 5074d59cb5d..5b374b752ce 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift @@ -15,6 +15,7 @@ public final class CatAllOf: Codable, Hashable { public init(declawed: Bool? = nil) { self.declawed = declawed } + public enum CodingKeys: String, CodingKey, CaseIterable { case declawed } @@ -26,8 +27,6 @@ public final class CatAllOf: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } - - public static func == (lhs: CatAllOf, rhs: CatAllOf) -> Bool { lhs.declawed == rhs.declawed @@ -37,5 +36,4 @@ public final class CatAllOf: Codable, Hashable { hasher.combine(declawed?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift index 242fc578d45..e5128f8b096 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift @@ -17,6 +17,7 @@ public final class Category: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -30,8 +31,6 @@ public final class Category: Codable, Hashable { try container.encode(name, forKey: .name) } - - public static func == (lhs: Category, rhs: Category) -> Bool { lhs.id == rhs.id && lhs.name == rhs.name @@ -43,5 +42,4 @@ public final class Category: Codable, Hashable { hasher.combine(name.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift index ba363df9d14..211f3f1a233 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift @@ -16,6 +16,7 @@ public final class ClassModel: Codable, Hashable { public init(_class: String? = nil) { self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case _class } @@ -27,8 +28,6 @@ public final class ClassModel: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } - - public static func == (lhs: ClassModel, rhs: ClassModel) -> Bool { lhs._class == rhs._class @@ -38,5 +37,4 @@ public final class ClassModel: Codable, Hashable { hasher.combine(_class?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift index 323ab20082d..73ac3e22575 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift @@ -15,6 +15,7 @@ public final class Client: Codable, Hashable { public init(client: String? = nil) { self.client = client } + public enum CodingKeys: String, CodingKey, CaseIterable { case client } @@ -26,8 +27,6 @@ public final class Client: Codable, Hashable { try container.encodeIfPresent(client, forKey: .client) } - - public static func == (lhs: Client, rhs: Client) -> Bool { lhs.client == rhs.client @@ -37,5 +36,4 @@ public final class Client: Codable, Hashable { hasher.combine(client?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift index ec8a6748035..cee84354a05 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift @@ -19,6 +19,7 @@ public final class Dog: Codable, Hashable { self.color = color self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case className case color @@ -34,8 +35,6 @@ public final class Dog: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } - - public static func == (lhs: Dog, rhs: Dog) -> Bool { lhs.className == rhs.className && lhs.color == rhs.color && @@ -49,5 +48,4 @@ public final class Dog: Codable, Hashable { hasher.combine(breed?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift index 82d185f1a42..a4d610050ff 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift @@ -15,6 +15,7 @@ public final class DogAllOf: Codable, Hashable { public init(breed: String? = nil) { self.breed = breed } + public enum CodingKeys: String, CodingKey, CaseIterable { case breed } @@ -26,8 +27,6 @@ public final class DogAllOf: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } - - public static func == (lhs: DogAllOf, rhs: DogAllOf) -> Bool { lhs.breed == rhs.breed @@ -37,5 +36,4 @@ public final class DogAllOf: Codable, Hashable { hasher.combine(breed?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift index 573cb86e1ba..2348f0f01b1 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift @@ -25,6 +25,7 @@ public final class EnumArrays: Codable, Hashable { self.justSymbol = justSymbol self.arrayEnum = arrayEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case justSymbol = "just_symbol" case arrayEnum = "array_enum" @@ -38,8 +39,6 @@ public final class EnumArrays: Codable, Hashable { try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } - - public static func == (lhs: EnumArrays, rhs: EnumArrays) -> Bool { lhs.justSymbol == rhs.justSymbol && lhs.arrayEnum == rhs.arrayEnum @@ -51,5 +50,4 @@ public final class EnumArrays: Codable, Hashable { hasher.combine(arrayEnum?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift index ca04771171b..d7502d65c1c 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift @@ -41,6 +41,7 @@ public final class EnumTest: Codable, Hashable { self.enumNumber = enumNumber self.outerEnum = outerEnum } + public enum CodingKeys: String, CodingKey, CaseIterable { case enumString = "enum_string" case enumStringRequired = "enum_string_required" @@ -60,8 +61,6 @@ public final class EnumTest: Codable, Hashable { try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } - - public static func == (lhs: EnumTest, rhs: EnumTest) -> Bool { lhs.enumString == rhs.enumString && lhs.enumStringRequired == rhs.enumStringRequired && @@ -79,5 +78,4 @@ public final class EnumTest: Codable, Hashable { hasher.combine(outerEnum?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift index a899d021b87..439997188be 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift @@ -17,6 +17,7 @@ public final class File: Codable, Hashable { public init(sourceURI: String? = nil) { self.sourceURI = sourceURI } + public enum CodingKeys: String, CodingKey, CaseIterable { case sourceURI } @@ -28,8 +29,6 @@ public final class File: Codable, Hashable { try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } - - public static func == (lhs: File, rhs: File) -> Bool { lhs.sourceURI == rhs.sourceURI @@ -39,5 +38,4 @@ public final class File: Codable, Hashable { hasher.combine(sourceURI?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift index 2465bd5103f..136b2106145 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift @@ -17,6 +17,7 @@ public final class FileSchemaTestClass: Codable, Hashable { self.file = file self.files = files } + public enum CodingKeys: String, CodingKey, CaseIterable { case file case files @@ -30,8 +31,6 @@ public final class FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(files, forKey: .files) } - - public static func == (lhs: FileSchemaTestClass, rhs: FileSchemaTestClass) -> Bool { lhs.file == rhs.file && lhs.files == rhs.files @@ -43,5 +42,4 @@ public final class FileSchemaTestClass: Codable, Hashable { hasher.combine(files?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift index 52c9d58241f..a4e2bf9a8ea 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift @@ -39,6 +39,7 @@ public final class FormatTest: Codable, Hashable { self.uuid = uuid self.password = password } + public enum CodingKeys: String, CodingKey, CaseIterable { case integer case int32 @@ -74,8 +75,6 @@ public final class FormatTest: Codable, Hashable { try container.encode(password, forKey: .password) } - - public static func == (lhs: FormatTest, rhs: FormatTest) -> Bool { lhs.integer == rhs.integer && lhs.int32 == rhs.int32 && @@ -109,5 +108,4 @@ public final class FormatTest: Codable, Hashable { hasher.combine(password.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift index 4044065d4f8..701101b66f7 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift @@ -17,6 +17,7 @@ public final class HasOnlyReadOnly: Codable, Hashable { self.bar = bar self.foo = foo } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case foo @@ -30,8 +31,6 @@ public final class HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(foo, forKey: .foo) } - - public static func == (lhs: HasOnlyReadOnly, rhs: HasOnlyReadOnly) -> Bool { lhs.bar == rhs.bar && lhs.foo == rhs.foo @@ -43,5 +42,4 @@ public final class HasOnlyReadOnly: Codable, Hashable { hasher.combine(foo?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift index c2457325b5b..08a9b37f367 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift @@ -15,6 +15,7 @@ public final class List: Codable, Hashable { public init(_123list: String? = nil) { self._123list = _123list } + public enum CodingKeys: String, CodingKey, CaseIterable { case _123list = "123-list" } @@ -26,8 +27,6 @@ public final class List: Codable, Hashable { try container.encodeIfPresent(_123list, forKey: ._123list) } - - public static func == (lhs: List, rhs: List) -> Bool { lhs._123list == rhs._123list @@ -37,5 +36,4 @@ public final class List: Codable, Hashable { hasher.combine(_123list?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift index 83a6f77e76e..f89f3bea22f 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift @@ -25,6 +25,7 @@ public final class MapTest: Codable, Hashable { self.directMap = directMap self.indirectMap = indirectMap } + public enum CodingKeys: String, CodingKey, CaseIterable { case mapMapOfString = "map_map_of_string" case mapOfEnumString = "map_of_enum_string" @@ -42,8 +43,6 @@ public final class MapTest: Codable, Hashable { try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } - - public static func == (lhs: MapTest, rhs: MapTest) -> Bool { lhs.mapMapOfString == rhs.mapMapOfString && lhs.mapOfEnumString == rhs.mapOfEnumString && @@ -59,5 +58,4 @@ public final class MapTest: Codable, Hashable { hasher.combine(indirectMap?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index 08222b23f5c..b7d4981c4ae 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -19,6 +19,7 @@ public final class MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashabl self.dateTime = dateTime self.map = map } + public enum CodingKeys: String, CodingKey, CaseIterable { case uuid case dateTime @@ -34,8 +35,6 @@ public final class MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashabl try container.encodeIfPresent(map, forKey: .map) } - - public static func == (lhs: MixedPropertiesAndAdditionalPropertiesClass, rhs: MixedPropertiesAndAdditionalPropertiesClass) -> Bool { lhs.uuid == rhs.uuid && lhs.dateTime == rhs.dateTime && @@ -49,5 +48,4 @@ public final class MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashabl hasher.combine(map?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift index 10290c43c3e..6231c764daa 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift @@ -18,6 +18,7 @@ public final class Model200Response: Codable, Hashable { self.name = name self._class = _class } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case _class = "class" @@ -31,8 +32,6 @@ public final class Model200Response: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } - - public static func == (lhs: Model200Response, rhs: Model200Response) -> Bool { lhs.name == rhs.name && lhs._class == rhs._class @@ -44,5 +43,4 @@ public final class Model200Response: Codable, Hashable { hasher.combine(_class?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift index 533e5f2aea3..ab883e7ce64 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift @@ -22,6 +22,7 @@ public final class Name: Codable, Hashable { self.property = property self._123number = _123number } + public enum CodingKeys: String, CodingKey, CaseIterable { case name case snakeCase = "snake_case" @@ -39,8 +40,6 @@ public final class Name: Codable, Hashable { try container.encodeIfPresent(_123number, forKey: ._123number) } - - public static func == (lhs: Name, rhs: Name) -> Bool { lhs.name == rhs.name && lhs.snakeCase == rhs.snakeCase && @@ -56,5 +55,4 @@ public final class Name: Codable, Hashable { hasher.combine(_123number?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift index be9925066ce..0abdc58b2b5 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift @@ -15,6 +15,7 @@ public final class NumberOnly: Codable, Hashable { public init(justNumber: Double? = nil) { self.justNumber = justNumber } + public enum CodingKeys: String, CodingKey, CaseIterable { case justNumber = "JustNumber" } @@ -26,8 +27,6 @@ public final class NumberOnly: Codable, Hashable { try container.encodeIfPresent(justNumber, forKey: .justNumber) } - - public static func == (lhs: NumberOnly, rhs: NumberOnly) -> Bool { lhs.justNumber == rhs.justNumber @@ -37,5 +36,4 @@ public final class NumberOnly: Codable, Hashable { hasher.combine(justNumber?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift index cfce5645a20..c4c4a3dd9ef 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift @@ -31,6 +31,7 @@ public final class Order: Codable, Hashable { self.status = status self.complete = complete } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case petId @@ -52,8 +53,6 @@ public final class Order: Codable, Hashable { try container.encodeIfPresent(complete, forKey: .complete) } - - public static func == (lhs: Order, rhs: Order) -> Bool { lhs.id == rhs.id && lhs.petId == rhs.petId && @@ -73,5 +72,4 @@ public final class Order: Codable, Hashable { hasher.combine(complete?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift index d238c4c13dd..d16b840bec6 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift @@ -19,6 +19,7 @@ public final class OuterComposite: Codable, Hashable { self.myString = myString self.myBoolean = myBoolean } + public enum CodingKeys: String, CodingKey, CaseIterable { case myNumber = "my_number" case myString = "my_string" @@ -34,8 +35,6 @@ public final class OuterComposite: Codable, Hashable { try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } - - public static func == (lhs: OuterComposite, rhs: OuterComposite) -> Bool { lhs.myNumber == rhs.myNumber && lhs.myString == rhs.myString && @@ -49,5 +48,4 @@ public final class OuterComposite: Codable, Hashable { hasher.combine(myBoolean?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift index c036d6d0cfb..15490bba714 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift @@ -31,6 +31,7 @@ public final class Pet: Codable, Hashable { self.tags = tags self.status = status } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case category @@ -52,8 +53,6 @@ public final class Pet: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) } - - public static func == (lhs: Pet, rhs: Pet) -> Bool { lhs.id == rhs.id && lhs.category == rhs.category && @@ -73,5 +72,4 @@ public final class Pet: Codable, Hashable { hasher.combine(status?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift index 1e2cdb966f2..8c66afb096a 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift @@ -17,6 +17,7 @@ public final class ReadOnlyFirst: Codable, Hashable { self.bar = bar self.baz = baz } + public enum CodingKeys: String, CodingKey, CaseIterable { case bar case baz @@ -30,8 +31,6 @@ public final class ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(baz, forKey: .baz) } - - public static func == (lhs: ReadOnlyFirst, rhs: ReadOnlyFirst) -> Bool { lhs.bar == rhs.bar && lhs.baz == rhs.baz @@ -43,5 +42,4 @@ public final class ReadOnlyFirst: Codable, Hashable { hasher.combine(baz?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift index c28939bb89d..273fac1a3e3 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift @@ -16,6 +16,7 @@ public final class Return: Codable, Hashable { public init(_return: Int? = nil) { self._return = _return } + public enum CodingKeys: String, CodingKey, CaseIterable { case _return = "return" } @@ -27,8 +28,6 @@ public final class Return: Codable, Hashable { try container.encodeIfPresent(_return, forKey: ._return) } - - public static func == (lhs: Return, rhs: Return) -> Bool { lhs._return == rhs._return @@ -38,5 +37,4 @@ public final class Return: Codable, Hashable { hasher.combine(_return?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift index 3fd24733174..de2a54506e7 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift @@ -15,6 +15,7 @@ public final class SpecialModelName: Codable, Hashable { public init(specialPropertyName: Int64? = nil) { self.specialPropertyName = specialPropertyName } + public enum CodingKeys: String, CodingKey, CaseIterable { case specialPropertyName = "$special[property.name]" } @@ -26,8 +27,6 @@ public final class SpecialModelName: Codable, Hashable { try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } - - public static func == (lhs: SpecialModelName, rhs: SpecialModelName) -> Bool { lhs.specialPropertyName == rhs.specialPropertyName @@ -37,5 +36,4 @@ public final class SpecialModelName: Codable, Hashable { hasher.combine(specialPropertyName?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift index 9e90edf7be9..946c1b11a33 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift @@ -10,8 +10,10 @@ import AnyCodable public final class StringBooleanMap: Codable, Hashable { + public enum CodingKeys: CodingKey, CaseIterable { } + public var additionalProperties: [String: Bool] = [:] public subscript(key: String) -> Bool? { @@ -44,7 +46,6 @@ public final class StringBooleanMap: Codable, Hashable { additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } - public static func == (lhs: StringBooleanMap, rhs: StringBooleanMap) -> Bool { lhs.additionalProperties == rhs.additionalProperties } @@ -52,5 +53,4 @@ public final class StringBooleanMap: Codable, Hashable { public func hash(into hasher: inout Hasher) { hasher.combine(additionalProperties.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift index b30b0f62ace..edf15aa3196 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift @@ -17,6 +17,7 @@ public final class Tag: Codable, Hashable { self.id = id self.name = name } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case name @@ -30,8 +31,6 @@ public final class Tag: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) } - - public static func == (lhs: Tag, rhs: Tag) -> Bool { lhs.id == rhs.id && lhs.name == rhs.name @@ -43,5 +42,4 @@ public final class Tag: Codable, Hashable { hasher.combine(name?.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift index f99b86d1d64..7da67c016eb 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift @@ -23,6 +23,7 @@ public final class TypeHolderDefault: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -42,8 +43,6 @@ public final class TypeHolderDefault: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } - - public static func == (lhs: TypeHolderDefault, rhs: TypeHolderDefault) -> Bool { lhs.stringItem == rhs.stringItem && lhs.numberItem == rhs.numberItem && @@ -61,5 +60,4 @@ public final class TypeHolderDefault: Codable, Hashable { hasher.combine(arrayItem.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift index d266ad2f0d1..4822336dccc 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift @@ -23,6 +23,7 @@ public final class TypeHolderExample: Codable, Hashable { self.boolItem = boolItem self.arrayItem = arrayItem } + public enum CodingKeys: String, CodingKey, CaseIterable { case stringItem = "string_item" case numberItem = "number_item" @@ -42,8 +43,6 @@ public final class TypeHolderExample: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } - - public static func == (lhs: TypeHolderExample, rhs: TypeHolderExample) -> Bool { lhs.stringItem == rhs.stringItem && lhs.numberItem == rhs.numberItem && @@ -61,5 +60,4 @@ public final class TypeHolderExample: Codable, Hashable { hasher.combine(arrayItem.hashValue) } - } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift index dcbecdf498d..ccb1efefbd3 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift @@ -30,6 +30,7 @@ public final class User: Codable, Hashable { self.phone = phone self.userStatus = userStatus } + public enum CodingKeys: String, CodingKey, CaseIterable { case id case username @@ -55,8 +56,6 @@ public final class User: Codable, Hashable { try container.encodeIfPresent(userStatus, forKey: .userStatus) } - - public static func == (lhs: User, rhs: User) -> Bool { lhs.id == rhs.id && lhs.username == rhs.username && @@ -80,5 +79,4 @@ public final class User: Codable, Hashable { hasher.combine(userStatus?.hashValue) } - } From 5ea31b585c782f337856a1978c0c1c86e450a195 Mon Sep 17 00:00:00 2001 From: Yusuke Hosonuma Date: Sat, 15 May 2021 17:02:06 +0900 Subject: [PATCH 002/192] [crystal] Update crystal version 1.0.0 (from 0.35.1) (#9477) * [crystal] update crystal version 1.0.0 * [crystal] show crystal version on CI * [crystal][client] $ shards update --ignore-crystal-version * [crystal][client] update pom.xml --- .travis.yml | 8 ++++---- samples/client/petstore/crystal/bin/ameba | Bin 7907132 -> 8441256 bytes samples/client/petstore/crystal/pom.xml | 4 ++++ samples/client/petstore/crystal/shard.lock | 12 ++++++------ 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index cc1f953acaa..7deb298f0fa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -76,11 +76,11 @@ before_install: - docker run -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore - docker ps -a # install crystal - - curl -sSL https://dist.crystal-lang.org/apt/setup.sh | sudo bash - - curl -sL "https://keybase.io/crystal/pgp_keys.asc" | sudo apt-key add - - - echo "deb https://dist.crystal-lang.org/apt crystal main" | sudo tee /etc/apt/sources.list.d/crystal.list - - sudo apt-get update + - echo 'deb http://download.opensuse.org/repositories/devel:/languages:/crystal/xUbuntu_16.04/ /' | sudo tee /etc/apt/sources.list.d/devel:languages:crystal.list + - curl -fsSL https://download.opensuse.org/repositories/devel:languages:crystal/xUbuntu_16.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_languages_crystal.gpg > /dev/null + - sudo apt update - sudo apt install crystal + - crystal --version - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.22.0 - export PATH="$HOME/.yarn/bin:$PATH" # install rust diff --git a/samples/client/petstore/crystal/bin/ameba b/samples/client/petstore/crystal/bin/ameba index 332b8c750a451f5455b78b2c2e41f80e6e6a8ea3..c88ac4a8d026b5de83d40b977412745b246ff610 100755 GIT binary patch literal 8441256 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℞s0tKPpQ8n}u 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

Ajh%_yC_f#MF9Bo@Y7C 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�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

29{TN-t`0N9l>;*W3SI%%Xy5VvuX*y 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�R9wvSQO7v((tnh4HH!f+ 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 I=%byX@4WB;~-CyI+{9`iwIp$dX7JvT0-y6=K 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 z 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 TWn>{M%(v)B9J+TZvhJ0q*oZQ+MnXAuipNzcn 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 z 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 F`Klx`_-pbC;sS|72(h*Mc;dxH; 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�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

%z!2;NtEzr+%~TUzvN;Ade0yzjWy8m{83 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%0A&W3Dob7P!W26L9X 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¬by9jrEMIb>^~b zOWMZPI++t|V{<3gI*EJNmh{}W)~S8p+StVV@Vp=J2i7{1d)LKlZ(8Sc99rkj-Mg+N zasN7J_5YYqey*srL&;EMX8LWp)_0B}HzI5_vy)!oiSgO9X=iPW_K{r;9aT$Dn zpx*U9SzkK$DSUgl-mQJ4zAQ0W@61l(+vn?{BjEMx;PDuqzgh1j{!2Z^W9pspZ-UPs z*O!ie7d-y7-ferP-kJRK`qHVttaqHhu6L*ZSAA*XZ}I$l@c036U&8l)0bY4SsZ-tH zbgXD_z1oJd%y|vY+s*HKmo>QKH#C&?Y-_-# z-Uheh#s+6lK+Z&wP-3{){O%0`)UOaCG?yU{(^ih022AX$+$7%5RSOeyK8cHWV z(csKH)Zk8hrlGX$Vc>tZ!I_+FaA$uXVScLty1&7l{;du1x!>O4WFFs8I{rHw9OrBJ z_In#j6VrHpYlGwc;Rbj1=?%{GpKfp`{ubYVu)&$w+*mSxWuw#4)fh{>v(a@Djm~(Y zv2@~aqf?t~bZ3SdOEbfbZfzPkS-gL;v2^m68ZpMz7_a>U;QUo%Z0`Gw&g`3;V$*Ay zoVlBu;uE(vIn%c_#V3&m&d!OZIOgXt7pK?Y@af*O&v8%Gy0tas6%(jp zWp4I~hyUOeI?gdDcjL-wfE}cuI&1a8&uKVDv9#-4S^L4*wiR59K}Wnn_>953oFC~T z@J{2i@Z&tBauIls12As*6~lWLcqa@VazMKXekF*I@WYT}LA++*J@e~2zQ+t&R6Kft z=lzDpTBErSgf>UAeFl7^o$9#Acc#gr_YS0)ie-i#A;B5xp7y*9{@D2m#oU(F; zp83PsSE2u^0Y}BF8F=3@d^!r?QJ!Al%^JLmEIj^Xc%v4)P`ruvFz}u+d;t#yc zV>-Pf;}7__fio#>r{W(E=nI8Iyk_84{3jhwF}z;jO`ZWBO^<8-^ZfiC1>TIo;~F#N zBJ>HSi}M|W_uB>Vm|iaeFY%i?+&T-7KMAiZ3E;WWu~*7s_>+;T?vFyK21z!}bIz^^gz zV)gptz-v1Lyk~*eWboE2q45uL=eAEJTgwyR!(tQ^0%4;1!GKqrjVZpH5H8pixSB&2v@M`bZ{EFe72HuzF!DGB02VTbmnqO2rpSIw| z4;ntj^aoR-&Uk_F7=D)pS4wUrJkxy;@Qk4^6o2wL4ZMmE=y=_1@!(Iw9|L@cftRcc zBW%X&Q-I(4w5I>ORgdPhE1@=pd`nQ7&it9C!z!PUBfJ6dIRp3GGlNBV7vRqK3e%%I z>v#qpMgIWcZAIuG1-z#S{gZ$v3|yK+Bc4jP=K!BD@b?P<<>!8+k%~XMxKqz)`5P@b zf2#NcK5gK+?FsX@%YqluBjODM?+L@_PBN#9D8~;0&-rsL&s!8y@Q?C5Zo#AEeH!pu zLmwsYix#|?92a72>{i3)cB${XR%R#-pnGVkZ-tnvse}I9~ z<)j1gYGA}YXz&W97x6X&FJth2g}mr;_%U7wf%m+@i<0}41<#e6^bZ66QW5%ZSnynW zmH&WO{FRP(v3j=zIW=kUqU3C_;JM*Y&Mv^GiqH>Q@LYPz`2gV4hQ1B&%H^ad@g4)- zcMM*kek0|1+Tw?w+FAPeB0h?|QSdr2m-L8&Zw7qA$T5w+lyWz&HeUHMf^If8TJ0= z%p4as65}1{aj{*LmfvZ4?W5J&S{0RfUU+B$~{9gdP=?9wsUk7?SDSBH2 zp`U+2!xKVp@oxsa=|_d(y8u6C;2Q$|98Of}GYt5Nxx)0P0e`~4qvU&x^e<}qlYx9~ z{K@z|1^6=t-WudjLf|g|{`^lhJ*J|x>sqPcTkux18u|PGY4~SEe!raf;}Tsf2SX;L z;zK>#1^Qe6Rnvc2eZ@abkAAi8Q&Y}S;LRGmYXUhkBq97Ez@3*hpAYdPUDrxKo{s~b zG4L;HXbAo^>Hl5Re^ugfLy;JbtHJ^rNp zy?{>{_)dPb+-Ce91$@@PuaNlXr*kNgRs9dT=VMwfRB76QF1J7bH2E96uNJ|38F(k+ z^Yd$fQJXP%#rW+4UPX!KhoV+czEK*<2Jea@cnBURfO;B5ikH3siItG|_-AA{sqrqjjmUq!^@H1Kv9JXF~Ql z-mPbVSAs#njKM3GF3rF@VeqyV3AYz`lLn9Nsd5qVJq5fk8$5_w5bsfoUorWfviPkl zz>nqgMc_^4hHLOy&g#(V5_mCv-vYcHUOWxFCk!6t zw4Eyd7QC2TPXn)~Ld#VMkNjT--tz|U-F9I3P56ZvyxUQ!`9#UH#e%EKl{}*2&q2WI z`P1n%@LsB#U+%|&H(~hY%EkAm=YhXi1g`QQOoV^2^xFcwrW!48RQeqR{6Pb6VcJ-Z za-PD!Pa8PjZO8YAEjY3&;>?@68kcT5AhBH@76V1UkcedY#$#0UdG_P&$0)V z9nll0B2XRTKMwqv^EKb!Is^RYfS%NV@*h9~ns2V2Fn#M_JWLz-7hQayll;xe5Ay2*en-9L z7p0ejfcF@9RJnLy9{8gcJXc_Ra8vccOR{LFI;o?8Ha!oa)Y27vH#+LNx8md==Ie24wOQ=tFOm0FHi ztRQ_*0f3nCd>sEKuhw**H)K)y^DOY1t|=Z*@+*N+J#Fx$S*ite2vmk=GNyulwE7uddkk`F~d(?VNldelPrYzOC_x@tdyV(!%%;0REjPHU3u= zHt?$p<3CP*|3l+TKfB_GpDQTObHKmV^yj4CU-8{&{5lhU?z%Ci0n=*S zGk7JI{zTRL+W2)ri&c;4U@>qovo1~+Mb*D7ZC z7s0O%b;}xqS4h4HJvy{5LXW1d)#1Ixbo?uBnT*W0`SRfz6Td_extR~OM(&%7;890+ z7`%g4dCl$bKLot-{aXI33h$}N4cLjc!lg0 zhWicjIH1G5i@)h2^x-*tzSZEhE2L<=8t6^N;H@iyw;6aR4BqMjc=M&J$g`pVy`*c0 z38zr`B_7kY$>6Oj!jI|d8N6cQGF>YSUPlprOjqG|SrI&@>otZSx<1-PfVJ^68+Y{uaIw1~bu3A`Oy9q#uLC*>mey#PFCOyiwj1g{QZy=3tI+^~z%t1ZBr zx=Zu>Q>?*KE+X7P;2nFf!7IY=H1ND}jh8Bd_c-|(yl0ExJxhM?)BOInNPJ65pnvbz zcx#LBYX;t&!TX0I{fA!QJ@KIC_y6LzauMlr3b65yXuLmS-q1zhJqo<0361xZ#)`yy z3V1UH@4ps_FW1Q)`-J9)Aw%sV!o3i2Oc=cH7s2ZS-kMKpe#PvlVc@kHJRBobFx-cL zck4r%-^n8B@(tikeM;j|$CQ(J?9!9p4fyyR@Lu|i#`~;6i%RDjbP_VZtnvJD8sTT? z$Zs?7ZZ&v&itsxKym5oK5i%$j!S4a!J@|+YcSUYI-p=_&-3NJ$@_k<8U0NjEr-66E z;QhB;epY?;GVr`FYJPuGBtOs}a-R8;#@kXP++Dz%GkDk;7*Y90SrclKPEwLVlOb(Qq7psQiIHs# z8iOVy3X>?w*ffGBK_ik5gC+?@M$#B`A}BKGjX{N=m!L7Ce>8d-w(Q1kA$EV~dC&8X zR(bDpU!D8;^h|fx_nvd^x#ymH-uu2)J>%TrLhnA~=B{(@I1yKeSuUIZ6y*u~HW)WY zPRZK}d7qB!#YgijeAc-a3%xfOS8X}>V=>;nkoP&~zA55w)jci#zU17vkY^wHQ&^aF z?sVb5&BhhK?40ro-jh@MigT)dw6`=Cx_g}4DExAZaTUr#t(CNlc)8uUI=Rh)TVs2D zliZNt@SJR$+*1X&4Yk8peH^QM*X6QxzQeeswsVgc@^%|ny4kr`3U1N3I=QpN{I0f( zf|;+oyi%V72I~?%0G6_KFTsE?@Ht5_Bv-F8|3yF z*CID7*5y9qhJWhvekJ^Om@UTg&z-wK=*4rg4RT))dbb)^{H4oVFY*wcldb&5xufj+ zq-D%6o|CP1om(Tuf#+l^e|GK^F^*NX*$pasYml?h@s?rVX5&W4sq4lIjhiI* zd=W2rPImtPd>l8~940N*yR6Q+#kld+HzmiCC#M0Ea_olncDr#?hdXyOf1gzkt+D4! zYxi^ROu-ErS10#LF~8f4>palq;TkAu8TRckZshjX%ku`64PIidg zn}xhPjGH;m<-MzyW1YCp?Cv|**4sm!JFT}4TXqisLqvSxIoYB0&L7+B?`83Np>e|} zI;ZM{oyLtk#<^2_?SxWm(0hw<l&_p1;}+`%ZQ4tzzBbIoYYxoKyAjYCG(k9CGdq;pg?n zwa#$vDZTT%td7}YT<1y7seE~{ar5Nt)AhWi^R`SLo|By$c6m37dArrP`jeg8AjWZr zapO;Q?j*tW*&*T7)0`U=+$Q5@pW&RUi?$or8gcI1z4Dfg_e$eNpBp5>hKAD)vP*&3I( z*SOiUqwR%^&pR zIoa~-o%@Ylqb4oYpRu3pG=Baq&VQxXUUr9_w-`5msdJa}_nGsQ+((7pMdP~URDM|f02}WPm#5By z)*Cnft~j^FxXJf8_le#-M|&}E7aLc8pL1zAWX;Vi1FTP+%!40pWIfFHSN)L7!@ZQGrSZ=n;g>6ot6lA!nzud1)yb*rh<(P* zT(kDiD>ytSJ3~&L!*7MWkGQ;=kca1F$I1OkaClC3Y@dgtzR?y+>v73 zn~fVFr}D>z#*LGEw2-&cxG8c^6Mn>VvU3Y=pQeRo2;Nd|S>3lw>^F`x|{~edN zdaYfrQQl*Py!FPV@}3~LEyndz?}>u5kGd-ikxSle3pVu&`@w&^jGOx(AIB5<`z-EO z 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

oPs_-H(<0E! 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 #7{ru~%F_q)~~wZF|>`-}ff@mpc_OUJjF zesQm9{}aVmR=;+9o9U-NG5#CHS61J5e4FWK;(t_pW%WbHx0!w^ej~oJ`YB&v;c6P+ zY^ERl%;fJMYT93!P64&ZHFA`sw?=yaaFD~S{{9ODWi?6J{-Cp!;We`Vr7@);(+@_hYB{59e$s~=nWvi>%+{<--7DZaA$rQ_R7Kl-)F z|8|WptbXJ8Hq#G&WBh%eY3i@6e&F~vck#tvEq)}de(3l%(@&-Rd&E~(-;OtpjW*NI z#osQz@_hYL{6)`_@#o}k$D1pDE#)Kel{LOyU-~vPfA6=Z{a+)#vijXXM=>&en>+t^ z#y=o3`Fq0Z2T-`EA9Q4xejw#Hh_9@^oiF3tOg|R?J>n~?pIPzf+f2U}|4#9h)ejus zX8Nu8k6vo(udKeEFXP)xKiFZ~?-=ow)o-1D4`DNXzdzQs?K$Ert8d4fD}E&Yo#HF2 zpF8!pnel7!pL&?7zq0z79+>=JCcd)z50!r={K6ru=;`H+f2We@_Qd; z;w!6fw>Rr=GyPNk9Wg{x_N zvzdOphw<+aUzz23|5Nb=7Ov>qOyA$r_>X_K)L)q8>HGNNqQ1@a11bMH@s-t2pUPJw z-)8#xbH=-Ue^Y#A^#h~N#J8D#xzhNLdXC9oS^cPsK8kNM{Z{;!i?6JH!53J#n#MPq zyZon3{O^jN3#*@Z_Q%#{mAic?%G%UTKrsCeS18z zeQc&*Ncp{|P5#R2r%rsE>H9~U{1fq&XMDcE!WHAY&lj`*!`Z#S%UaL<|DQMWdbNCWs+W0h%pcJIo?czo zkLfpkMeJWKUuN^YF~9MeSpS>p)$+bx?B5%{Nq-5wTE3ml_lED$|CwGb-_5)?eDT^? z|F*5zzgm9H%zMxK`QY8@`TXnWW2t9-{gj-)^DAS%TJwu+zW4O{(Z8R*$(Hx)y^ucX z4d3SZBYL%bna%fx@6tc(Rk40`UEilalU^-9%I14xe&=;@|Nc#{mM=2zJzYQjOJB|P zv*ml4_l7U_i229UtL1&(0?xPRgD>g7La&xD?R)$i3-_2S-yRIMe{B?JW{j24ln9cW|_w~D7dOrX9-6{2~ zuixVJvHo9hzFPDBdgK0iPxnv%0DZ-->pMJut=(h)>bky9zcIa9zR0ehH`YI(-;rKj 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
  • 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�nvQ&-olxZYP*w1~PcjWNhq^*#KGxi)2O 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

    5F9g6}sm%?{Tkhu$lhul^EU#iCT= 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¬dc;07;ws45b!^){F+>LnHgS-qdDiMkOT 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

    Ze z4%ll*6e_*=CQ7}AM4{4ocTnmzBnp+*zecIokSJ8T&$ikcs4d|&Bnp*2x)Y^dL!waW z=Vw#uH6#j^p7lDVUPGc#>4GEqZPIH<6e|6GTYk>)8WM#{H)`R4y@o`g(j~2wdJTy} zrPJS_)N4p&N!Jy3XLR+|7@40O3zcpq zi^bZ)%S(=hN{=~H^DilN>ptOZO1-Sg7<@DgM)Qt=EbR z^yUd}2lnY4O1a0W1-Ro zEA#UAl4F+Cy~e!cnDv)^Ut?F!;`qGeSg7>&1f^bbEL1vpl;)ad`pL0S=^>X;>LtfQ zrFoZ9>LtfQrIV%5KnLt4$3mrNNNs>hz2sP^v}HF+ySsItJI~#j?~DE}KPK(gJ@e+2 zyLDGw$HRHavCxq|{uZTPax7H(&wr-et^4aoDedmo{qQqxe(IyUx=Wv?5va<|W50sXIt_x9-F&_bzmA^pX6S zv|INEU-A@sCC64|AG^Bh(bL4^Rwet`T|PmRWA88L9IKP$m^6r>FVv2ddaa+>E6YfM5*+hW1-R!$5QGg$3mrV|BF&DITk7%xGK-p zOOAy~J4Wk0snSo5g-Tz1h*B>(7Ak#Z8qd{Bj)hA1d!AA+ITk9t>kCS~u`AM zsPvO#)?fC$^Hu(=?@yHpFF6(}E!~Gtf|nc%mCi1s)Ju+qN*^t!)Ju+qO0O8CX{t(p zE4xtXSqD<;CC5Ug1O82^mmCX~ZnJ}?sVe>CSg7p4$ zQ)Pn5v1!ra4eri-X>^eMIHmB?3NSm@!_OV=byrJo!N zmFBKNsh1oJmF_c;QZG3cD!ptEO1YbO1YOO9Dm z_rb_Zj#+=%_k+=DoAWj1CC4nOI|!3w)1p^z=eyA4OQc{gdQKiqnW{f7|6cU%yF8II zq$SCqfeix+x{D%Rrv(OAf0>sdRh`wdGo{^+bZf{!csyN$^zg-_d?^E+%6~|@za6AC z=V#XJJEE~vDu71}lOoN>(?nZ6`xoh&(`&an{dIJ^ljA?n7{Ff2TYgyL-1f z9=q3Wb-{=lUy)SMX?4*7hWt{6L;>nVWp4&%5{8EhMD zG0yu&pTOz497hhvf#Ak5S{ZB`Y%#`&-%S`vH@d?()=>tGaOSxT6XTmOGC7V6jswAs zS``iwb{GXglI~lEHAUMWsts9OD!5d)43#CR%V)k|spBlg)1jrI?f=QV<;FW_69BM%A3vh413kUqD7483>MX zv@+x}>gO)B-{-u8kdZ?Mf@7?w47LrnW@IBtKFW+_laWORf@8FF3FF{?$1(PJFfz%= zAOpcMYLvmY!PYpoyc>*kGSbLEaEybL!M4E`tB2k8O{Zzs+Pck%8bC zdn$vQ)LD!Z$AQsEMgtiLjt-Mg zm6B0H27+VUrVO?Xw$A0~8jPcuj3P1+9OF1;ux+r#7&ilq0y6T*KyZv9%3#}Ii*cej z2IV@xB&SD(5C))L9laWORf@55*jA8xG>7GY}kx51d83>MXh%$2f zWgH->Rymh+GSbLEaE#TJv1h-G+a3g?OFkp${X>J?King|f6R;923zxS<`OU>syfI( zaO1cnZX0Ydp4po7jy6Z|GU&*pj$(IEE__ek#{mndW7e#bHKQ!pZ` zI>t zNu4zx&;J9ADl#g_KyZvZmBCHwEXFfWf>BOJ85szUaiTJ~Nu9-5y%UU5GD^rmaEy(V z!ACf#4WB3B$c> zFPmb$YfqSm8L1~_1}O-RlIXihou+-GLkH`#FujhlTFMZrC%4NV^yHQ`J&fG)cu8>U zznHmYF_p%-glh_e+ONzY30Noy>rVL#KF5`5LFyR1qXrP263g^zm9|GwSOG| zr3V2}PCyv}2m~ZFjp_EUvluUYf~T^Sj1n>s9Agz_aQ`}sk@i=NqnL~$G7uc2Nxt>F z{p&2ov*lnEkda3Qf@55y3^X2`YB7rY*#l3XyF{)sPQqnrF?QP#iNBa7oeaO3z+ zzJa*?>nujm0bpd3kwFH6V>Bp(iD--Q!5A>o$w(su!7*f)i|$0U#faX+bK51!BE98k zkXsHPVLtTBol8Vpj5q&=muW;*2N?)%9E;@BluJZgjE4KcXeXnU3eyNJax02#%p2GTr`l7URt~!Kf!=1{nyBA*~p@6VVo< zVI?GQ>&U1j1HmzBmBB=`#W;R^mXlFN27+Vg8=gx< zTZ~zEfKf_D2^k2E@q%2sE)i`p(w2ZxOhyqI2#!&q3?`y2#siCSjTMlQM+Smp?5zwY zqAf--_gTy(BZmwG$LNw@xkR+Zxcp$Gkh96iA_KuOX34K=W~)3ZxID?*8t&}-&IKit zlnhc39OWGOl}kihBRO^+Uj6B0q>+K(7~3g>iD--QL@Vzgl3vw2hz7ZX@Dc7H|COIz zBHChHyA2Y+5mg;zAh>bdp$sOXEyhRrV6>CbN(O>soS+OQqAkWvSAo$?MiUtbjs0;277&iD-+l=|f=Dkx@$qf@2&S zC!#IJb{imhTSZ0%83>NCW}Jw&7;hgBMmZT}WFR=kOPajhzu$MjAk;L$Utz6_cQ^_M6|^id;=JbWHgY0;277(iD--Q>APUm zlQDw~1jjf$PDERb9XCemwvLQiG7ubNZ6u;q9-VByOSPYiM06D?6{H|IN^_iuwnp;i znHWhq8D(T3IL761BHCi4eF#P=86{*OI7VKah_)De7cuQhMiChZj`548U73is7}3pO z6p)ce27+TW3d6nkpLLP--haohc<;|8C5IFQM>$_d!bG$+l1)FrNV3VuA_KuOc2ouv z(H3K`55dSJBZCYC$M`}MuUqtcZ$F9&@pLlM$Utz6dz8UMv^9?Nxhr6o+`;u8qCxH< ze1v<*$;x0N+G3or6B57?RUKp?xN&T%3?`y2#$QXoXeXnU3NCwlbKAwiss& zW#W~LS~3tEEwclTk(nf@AC-C!#IJR|hch zN=6A82#)caCSI9{wiw$LfKg0F5g7=M@w76Sh_)DeoB~Dx8F^$NIK~CaU?SRL>~cF8 zxn$&!f#4XsD1(V;i*fOrU}Te#MFxUne5Hw3CZa9I)8BxRNk#@42##^TGMI?A7%%OQ z^jzV*&BHCj7wE~Q!d*FdFMHx&)Ta3Yyjgt&U(mn9NI8Yf(L|crx>)^R9 z=krp==LNw%FDnVdy=z}E-g?(wEOu}iNzz^LFp_8cCZaV*9KE;<7ez4-Uc`eVR8MY_ zKj=wBYc5$5(L+0rkwmoq%W{e6eA#h(XpfJe&X zkr3RG?seH_9;sKh8GxU10LUdEhX4cu5~sx3W{Yvue{j0lWMq+n;24|5*=CDz?XDO{ zCK(xIAUMYRakklF9C|Vs>13plf#4W7#Mx$x@kJ{bUGmLA?<*SQzQRZP1SO7$v&|Oc zr6I^BMpSi>f#Ak5NEs#gjAb!C-2setGFr(%aE$-N*=CDz&Ou-_lhH&5f@53}XPYg? zKc!iYTwsl4G?0Pd7zf1JW{Yv!aJ&}l$(TU~f@8>DA>G+#i?RPSFzU#tB?G}Ro{6)~ z7Gu+~n2#zlD#$=^jEQl!*4H)HQl#zkp7`w*VW{Ytet<$Asl#qeo7+=TPW{a`^ zVvM7hj3P1+9AjpjZMGO+iN8W`9%ST^f#4Wp<7~6Vct!lG!pJ2fhYSSA*fP#GTZ{v* z1S6Y_EHV%rWjuy%B*34FU^xoM?-n(#TZ=DHB zJ1MQCAUI03W{PQhwnnn}0lfN~$!H=2!7=jVY_r8Ec$#+*G8)K0aEt-UkjqGHDHda^ z3}k5Q$(TU~f@92ZMGOYNEZfqW~#`jAOpcMc2@?o z%@(6-AsFRkl#zkp7~jYjYL{)c7+Y$-LBZmwG$M{6PAh>L^#dzTsFtW+WA_KuO zZdC@e%@(8eRWLHi$RGp3F^*9Nv&|OcN@lFn$w(su!7(;a2D8l;BYQh$S0%fpcMuJ7 z2jL^!K^Djd8<%ai7`xHN6;ahe27(*MRAn&RY%xksz&P5;Xe9%|F%DJ+v&|OcqH$no z#!$|si3|kCSXCL!Hd~C+XTfMBqk#+r$Cx8GYL{)c7=K@r*;O)Tkb&SBla#@1v&G2U z4vac7YRN!wjA6=Pw%KBg+7FB>GAhVGaE$-SCF8Qq7NfobjB+x{$Utz6N0hNgzpwrA z^S~%2ql63u$2eOVvKZaZJ-JCbv&y}&n2aJa5FBHuFxoTtG@5DF}|T zP=4iX&(@5bHX0+zB_oFn1jo2d8Qb-HHrKucMm8B)WFR=kamt|W*&4^|!KPQ8cPDUCT2#(Q)Y_rOv-%hpO`*-`CpF-qs^&X-@?jd}Hd&pGz*=3up zkustf~xVn=MB4J{ZkpG?9Ve7;`ks z%WSj7Smiq~G*d70(Le@*V@y&8v&|M`i4;7@xoA5EVay-{!7+v@gV|<_@xj4h)R9q3 z27+V!Po7toZMGP7_cA*|Mg79)F0e7-CoBaaLO$GAPtHd~BEmw}N> zMh+PWjxi?AHd~B}zc9N>Miva;8p&uN1Hm!&iL=cXqoVUC+&{>e zK?Z_j{1|7OEygX+;X17&qm~Q=$9O!>Hd~B(o=X)O6=Wbd#(8nJ*s93v5Dn=Qr%WE7K8L~-+y*?(O&PnUkS zUFcUkVM(<9(=xZ%GpamGQ^wKC@h`IRi*KKjzv#0YyW5Yxa&bmMAKshu`|#$)zaZ~X z{Y5Zuq~_KA@$DM_g1jyC7s0$mvR7CyUR(SN^5*It{0s6f(_aMhW_{I% zcW3+y@~+ii1oNi-(1%wU|AM^p^%udsSp(MUJ%4w`zi{KzUnJ*EU3K)EneuVsrKs@6 zj%8!!Eq{IH$hEm-=cej81((jrO4Gz;OY}|ad&_qIe&;u;7xesc{=wC91y71bY1idf zq}@qJbnD(jbYLCx(@v6)@6wVvDyS}$)epJU^|IbrVKwrL>iqVC>Sh^W&hp2vo|sus zy#&9<>!s$B%z~N=GNZ4nK3XQ-npf&vsdJT`o5sv*7|=_rr{P{-MKUUB7Bjl3pn5{1 z45v}YCdZY>$-3c;ZZ4?#ryPSzHPO9UAIlBKb-JmMPB%4$GFS{+)^gkePvr|ma&#PT z>Z-f9aXx>&A=!M&_@nhs8z`$m-Q)A;H`~qcH7(x!@|Q{Gcc0%*stI4aYpVO4Z++c5=Z>Chsy#Y*FPwAx{4{sY9o^T|$SH+i zj~MjC0$f`~vS_8(R#pBxJ?HMOhdjMM)}$BI9F;k;W~C8NmCD?W820jrLDS~u51S)l zUVhelBfg(IK<1@O=0)ZvKdLTVq*sBo9Dj4dpw6umZ?NTfu=aYQ^N6G@E0=oN+CkL?KxPRbR*VlesZ9SXuSvvF^Z|mtd zZvB}yzVh*t1_ST+8xNJPltt;9x|Ddbew7d2`1OVhDfRk|haUA+S-j9)7^n3t*aaVT zfvk(E)ay4Mdeqal({9*p39sLHsPyJ~Jn;#y-*~9B?8l!l;CfxqJAQ>`c=X}gA+9aq z^&1a8>an>zSFhiAsI=u|O1*yLq0-&1qSWg*9xA=@SxUWrPpx|rx!}}?nu2NKL1WV`M%S*!Bj4yP+6Q$Tj2kiA550$fL znhHMZ{~n>#+l(*tsK-iOh7Q>4Hy$dz`ZG$se&eCik@5zrNA>!RTT=HL^ZJcjf7$nH zUp7*khPNfWe&eCi_5Vq!*Ka&jTKxf~=jqBGR*-_9#^(lU`|h@c*Ka)ZsE@5fsn>5j zRN5tLP$$Of#8weIg^KbMx|K836?fLKxu_av2+tGeeEGi zy?*1N^Rw=IlzRQfL#6Nh#%c2UjfYB~T|=9O%jbVxxI;IZ;B&owETvw*@zA60@e$9} z>o*=MJ@aJkH{O=;`i+N5GyY4dE^xWc_(G){e9Uw8`i+N5pFWcB3|_zSQ0d3(Y5VTB zgx7C8RQl!+O1*yLq0&ERQR?*@50(D*S4zEpo*=M?L3T9uiv;Obsvnpe&g0(_WfXVJ+?k*OL+apEvY*Q`;9M(j?Z`RLM_qX zHD48zlM2^TLG4g4b zE|%tqY0`hZO1|O9N{sdekmliNfKoG=eNZ&rI+g#BEaN&I(&hS(mkFtQ_F3}ZUj4`Q z*U{!Eg74LTyhMKAxqjnV&3#N&m00sj6IUb0JX!y7Id^`y8Go`Kf6x=ISkJf4?p z{|-hb85v|CIL3XkU*BS!v!~t`lD8?xb9-v+*S8pJN|I0*U2+x3oG#HIP6j>#WAoUr zZ!w;bY@skBsyfI(aOd)&=EsWrozrV2Z77U(GUVQ)<3MnX8LsKpFJw zTa44#F1?hD5;71RV>bNyDv!3?H_7ThUNKpchm=_@CZ&iJ1V@<|`}M7n>^%vu{sJ=c z$Utz6U1Pt##i*OYI|vy$WFR=k*P5`RU*BSkmz<@XOEwusyS* z!SKm9lA%q{ikk2IS+{~wM@B6f2##@( zGV=Nz#|P|EQ$NCvNGt`x8|e#Cyb+X7Gu_XU}Te#MFxUnoT&`@^({v2Phez{kwFH6V{EGo`t>cwEs~*?*GoDX zX=ETc#zIYku{(^#=qduEOFn1lClC$t351Vu|F}&V^y^!U7p?;%qN;-o1UHW3ltI6~ z#mIOYjCL|w$v|+7A;PG^x20&L`7ZVJP`gbz&Srt8%C_(KDtlsUccw z#y5abOhyqI2#&FIi7=4#HSf#0k{^~?Eg&P03trw@syfI(aN`)F4Epu0ag16B zMmrhmD3Ea=I7VCS*S8quOEDkKWHgb1;22lOetnCvn^fV;HP%Q*0~rX8aY*dfw-~Lz z;#}&9z27+U3AN%z!M(Z>1bZ3*1MFxUnd>;GtEym)jaGhq7 zkwFH6W84}0^({sh&n2CVG%^qzZT2=}Q zJLc!Ny7AR@uB1YBUDvrWwu%L}X2P2?th#85Mw z+#22eCwP=w=cj4PSjJArxbwZs>WbQGJAD7UEEK5!U6xolH2l~3sWS_zkIpKnJ}g`Q zX8C_tKeg6-)Ep{*r+#JeAgg8h^=N9@Z`}@gF5u)~mgNc6vXVl1-p|X5$~XFDxj({F zDu3oZrPV(S8rd~UE|9{Sg6xAUf5da#rIzVoOL{q`M@Q9@7LBSdY_Fc6M(Onvx5><5 z`ACl5FhCX+J2&6CsmJ~+?!M7)L`!#()v3{MWa(u!VPI#*lzcTtztA~<=Oz^_ao3Br z?6s~u{d5EVbU9WKJD=;V(4#Dfrs60Ic$AeoS10^B?5~T`gYNY#JlB)z+Yzp zHMd+;Bg;kll8TEA`;m43{`hP`ugLv-M{yhD+2n1fDSGXiROjo6d;g&MdIgy? z@BaPnm&Sax-ecUqt@&y>YX#@)w>A3A*O&>Z&exW1u>a@pcQ;+!=lc3_u`ypW?q0$9 z`uNNhoUhmAJ8`e;Ym*yOov)>L{Xy5)8CX&AuCJlie3iK&1iu~!t>}FHd-Xo^_3M49 z&eyy<|DgHWOLlaT=d``&^VB~&jq5AV4Iy~Gb~oZ?}c|6tmy6%oYXuj6G zu+Mxw^@TBC8Ey!{^R?OOD>z^KuG)9LW~Vw|r^u(=KjicJd;jP&U+*T2`RbU#Aq3CY zPO^ZzLhp}juhM6}&VDJ?`P$VDcGmy(_nZ4=WxLnwaSdy}8g4V@YwD{1tK;{@v&SU+ zzNp_%E4PooU%L9tKJ~r>rhDIevhV>pNj>U=Y53kF^}fgPdryQ9vHwr?zA~Pg)t=I% zf_~a%L1uOS;tBGhUp}E$&ySwCUNZ{$9i3~}Oj;b3Zi?^wTXgOy|1KZW)vq-|KH26k zsmXXwjWfgEt{(lt_;owwqq2U&Es#&Vg&m!53>w(Y``2@tU65~yYr8tS59D+5kj`!8 z-&-9oqo<^_TXfzKH6n=UT~}!(qIiho%G|#`Lq9`duYb+I)&1+ObSmIqH|QpB`wIUx zagluLu9@^fbk8O(qoH4WmPD)P<1%hd9H0E(ueiYd``+^JOuF|z!1u4YKiEkB02%e( ze=y-)_Xj`83cT}C>k0G>as6HK474WR)jvS~r#E5gHSP}@5P2b>VmNtt65<-9^3YbbG%1Y7si>bSI&#WnoX9?svnQ z<@;>Sghj)aO8&y0I^8b01iAqa$ZkGW`3rmMbdv*Er|avsl6g|y zy|nWcS~}F}F6^n(wf;;EqdxvE*p|uBn#-tb69*`X2S`{j_3sVZy7^ z4L#~sO_a*>;f#90M;$ts(qmMr$(EX6>2tC`pab^mbVCQcRK8oN)T`4Cl{U{-d-TFY zy{tyN`%9?w!NFQtxzMlE4V6AB>sBiD>U2Y;+it66uL~1ioo=Y~%EKx3>U2Y;-&9cQ z)#-*xkD5iPSEm~)J+6aNuTD2qnkGAq>NK@VhTqlchDvuomr}1zH&nXeS-d2?I^9rd zOC6U2Y;nOR!) zx-j9@>4r)RFQC+`(+!nAI+0SZPB&Eg`F)gnb-JO_Tf}{;=jzqzT2l8K^Xhc1zwG-O zJ9-VRm|f`C>4r+r+LuzVPB&EgiIiFBQN23dQ0d?|DfQ}fL!|@Xrqrv`4V4zHq7}0X z{W{%H>F&o;>ecCnN^h#Bly$n_MSEqsJM$;ePV(cF!cUgJGheV|EsS)q8Vq6m3cm9l z67g_eoo?tzE4I@*-GvFSPB&DV-$LoB>HvhlD|o<9udcP33lpr<{Vw`vhMS*`=v?`6 zN@2(H^K;aheCP7&bVEn_^SL~nSEm~)%{q@#uTD2qy7f3py*k}c=^6i~)T`4CmF_f; z)8y6ZhDz6eol>t(H&puL_FB8TFyYndhDxuxgXiki>4r+@ZKK7u^7&sqdGK5XUxB6f zQ|i^}h933oJ9(~Noo=Xf-9Pi4!K>2^mG0Tj0ef}2q0${bpwz3=4V9j^h*GakH&lAm zAT4`cnDFX!L#3UilzMf#q0*A`DD~=eL#5Lnrqrv`4V7+~q1BrU{W{%H=_S|mi>Ozp z8!Ej^Qqy`=uTD2q`m!6aSEm~){r9>&SFcVtRC>VrlzMf#mehSP^6GT0zwGmmz&c&j;YvoUCsh{vMJ`=j%X(ba zt4^T%2D_dQ!> zsjA0rp#QR5F>a6DK!@MUZh!+cJf@lOUIn!{K!dBM>pSjE*WqwT4t1*1!oU&z*V&){;5vJb#0AR~|CK&YM!#w=y9n$|j(izF+kK2kDr z$Utz6GG(xu)?$>l(nm^078wYRu|rQH&pelrLp6mzJ(G+KG7uailJs1oE}8UPQOnH- zt?$XJX)zynDdX6F8P9H`Cbs0&v|yAdQwFPPEk>r~24y}<$tWQM!7+Y8HLc2{4_0!kK+9e2 zZ{+EcQ}SwBTxCzh)wI?~zLMSn!YJTK@;DL%H8Gr5f z3fV?7i!zREGP1}(aEvdygu!ZBYaHjl07fPm8Dt2#$^b3rnk*WqV5ZtW38duX=jA_T&)wCE#Ra{MLF=5MMeb~2#%pUVb$OpWR&*v`>Z=y?!A8xcG4&(rHm8=M|nD~ zrnN@$=&=|{DH$bXAUMVaaW$>Qc>OpqipeM<1HmznOk*{z#rUEOi~=(9$Utz6ua?La z!fINJv0614xn$&!f#4YTD}&Xv7USCo@p&qnj4Uz`9OE=)!24rt_%R@)?AW`1+5lX)VTOf3>S= z`TCEmX)VTY_uAF8V63Z*4f}n6*iJq<=pBTkZ{oQixcPWJuBNrd@!uhMzicFtAGAhVGaE#~T zYFcX?FKvbj)N(S)$Utz6f5z3c7GvEbz$hi7gbW17*h3ktrnMM{mVr@BMiChZj`3|= zO=~fZodZSz8F^$NIL1S9HLb2$gex6G@8EIr7IL5!@YFdl&5-XIuObC6`e^#~vRjVn z{kTn%-~PWp=Ix)O`p3$9|NF|5dq3Xts@{()y?R~oN1y5TKgvn&kIsrtk*BKr_|+4$ z{d&>7s);#yRZEbHclB<0Mm^@Qd-SQt%!KuA$QV;Eruecox@C z>DouB*|aU;SzJS<@!$xEN#BU z)jAv&fK%FvrYe`OOV8qJ9i;D_@9cl_Nyw0Q@)g{QX6}QOdKTBvqdxgKrJlt#RC?v8 zl((WeuQKJWXjXfl(iFC$+5YsDx1wqNH>IA%HFTPG{~x8E#WhrV#vy7pZA*9-*HCH8 zC`vtxYp8UUODOd$uA$PW{=&=Ov$$GP_ZssouGU}neW8s1h~rCPE1K%{)G^wY@GP#O zNBwOArJlt#RJ!YZlzJA|P-*r|NoW8YxZx1w3_k$V?viC&T)lWs-x>tMCGwk14^t7OPLi)(j(uK%O`X8xJk z-LET}yQQw7Sk1cVnyo32+}r@>=Gb{l^P19mOWP&(a>VNIqf4}ZM{mPwiTu9D5z8iv zf2f&^&GKI>Msamz`MVy(&V;QFrE=F)9-9Fvp|L@jHI?! zFeWPFBrIT9<9P5=Fp6p8ETWAQ!8MHBRT;F#T8x*k2P3Ji7326?d=`ND;k^qn_iK!EqqCaU7%!T4Swq`OEiU$O?i!FSTSKIL6A#z@FA-`|W?o zhQ2Zmxz#D7f(!)5cwTN@zq8TI)_JzA74vbSGWy?WW`Pvi%Q#9ojuMUo!Hr{2W%R$% z%&)hAQA|b=83>NC6xLXs&S=g%Nfz30H+*sf*f0u6$s+~9Q67w~vDP!wHW;t|TrzUV zKyZxHV{5F%*l8=?LCDA=1Hm!2j;*m4W1wUtWmYrE$RGp3F+Nc{DXp;<VdTgz@LXJ^J{~OJmTWH%_!Pr0dBZv27+U(stj6Vt@)U_nr&;vxy*^Ju@>XWJ#1Sm7?Waati>2tXxm!B7#3S&Eykc} zU?jD*g7H7KlhPV%F*cGiPIW?W{jhNj65My{EsOlgC!OiJgu{G9W9QPO7){1dl6I){~ z#=Yl)(ado)aU2M49EGsPsyuq%e3$y$JXm8JNogPj!BJL^t+Ccf3ZKVF>dBZv27+VE zi>W`ufZrMql^p$$M``Esjg-H zXD!xy|3-hqdw(e@C8QuY$|FMgosDL0*vYoFVn&dA>wlw}$8v02D;Ps{9JIz-Gtwf7 zV|mTw@?3IwE(q>iK3gJ;{x_QG90Nu+8Chf?IL7VDpf%PS$2*tVwpN_W7-i5JYcb|M z21Yu^k;ZW#xN-bh8MMY)j7!#mm8(lW6YD)hgWN;-2;+Dww#HhF;WuMGBC0ybKyc%@ zCbq^}jIo=+g4s@nuJy|}5FDd0w#HhFg%^R*OhywK2#&EvY>l-TgQj9W8p&uN1Hmy~ zjIFU2<3EeRs3&6v83>MXX>5(P7-Mh1xzv$SO9p~t>=RpKEykTUgHc6B1sMpA@uS*F zX^piQ4?h7$IT>YSAUMY3u{G9W%=`|FQZh=&KyZxnVr#6$_+eYy){5)&FR?Y&V(gl4 z+gia$#MW4gvETK!trd*BV{5F%7}x?vHs>RY^MT;zC8f!7G=D8%bwPHS|$JSVjF>?XtBdM(wjK9U!Sc~z)8(<{0 zwSw`d*cxjw=Cy&LWv_BCY|jFe^Avx27;T@$;#+|qnY8S z;<-&~YQ;E42*bT=e?8xN*FH53*4R3Zq?RK=a3lHIZ8YQjqdDU4l+LyjqCR_%Oxnlm z!P{%^k&d3dN7|#I_YF=fsL5}CDK95&ewt>z#QfOd_u_9k6-vqfu|JnQ-;DaxK3Hbz zX+fKOHDzF@w4l`;QD${MDNn5r7%IC$$ePIt`*UxUpw6#Tiv>nKgZpIas=JY6hH!JnHy zHf4YAc5)Neqo&}`-RT~lYYP6{yILtt!JjL8dSJjQ_;b(ME@gji+nAL7x$Vx{n}R=g z(i18Bb05u2*`IsE1}Xbd(FP3u^R3fNMc(-5yf+ z=SFMsb(w-c_q9V)_UCSKS<3$0AyZQJ=Pu4l*`K@M=#>4rr#+mqKeuL|l>NCm<5KqL zPDl6JHopa}b=~!STY6=)l>NCoZJx3}_wPrf?9cu4O1%94P=D^5kEZO;O?*yi3jW*^ z{+hBs_qs_b`*W)d;pPbX<&wW6COzO{FdSlA|+~#Xi z_UHcEma;#0Zh6Z7+&v%Z?a%$;sUCmsV)-$tKeuiDl>NEof2NN!1%K|X(#}CY?4{t( zy<=laQ}E}0eh{T8_;VjPD`kJ~H4{_z=U(s@r78Gx2ae*orr^)bYo#;=f9_{Tr0mcA zVpPih+^grN?9ZKbY0CcG`()d6y@pfp=YBOcWq)p4Bc)yo+R%6W(sk+MOu?V~;f9o^ z;Llz67)n#{=icxXr78Gxf7vf(f9~e%@pDEB{@eqf=73Z1=Wg^Yr78Gxn`Tq`hx&8R zlrPtMwXe88cjw1?{JGo6k4gQxV>)>X^yl{3Bv|r{Y2lj$H&su1RyGN4sGjfuHVM`= zEH(+26q#-kJd>LQKg%7NCOuF!`u^zOYsxi4DqCq0?_ zy7wYpQ}-gCnHVa6?Y1M9iD3Tq(#0M0JC`DVJYDn71=WuiYp9uwz<$2`hot>{A+7QJ z&TmZoNFb))nSZ~W-?>PRDSqcs5_$C9cypXyiA;zR_i35mZ0EoBVgs<)3YkmX;VeSQFdaZdsho z7{ZmuVF8bi3s^$6w=di4l~ZkBGX+j}cx)g_M5CyzaXE$N@dcP3Kb5e;dkO6iEU zq$iX?>N}z#{ZK4yu1Bzw`i^J}c+1;Vn%of$#*NB2SthV%s>OKzPkJ3CcSM6RS{Zai zTa25J1fy6^R@P~XH1st31!Em$&=GAho|Me1j3cQd8jRP(UgR9n7UO`+!N}z}aySlz zYFuiGYGu$7Z7~iTfH_U-h{ibbmBD7g7Grq1?T7|LO1Zin(H3LK0^1P{#%xJxI!Cm{ zSb8Vsqf2IAy#yM19MNF>Lm6~LTa2q;2O}b*gA4>Wr@JeIj%bT991EJs9nl!aH}VJ0 z5p6Ms426rhnd4~UI1t=89#jS$(H3LgabPr((Le@*W1OxGI-)JcZC8L%PsR)~5FBG` zWzZ3AF*bS`j5;!E$v|+7Pvo}a9MKkItk?wP^-@Jf1sMpAajP=WW5ImwueYAH50Dua$_i!ngDHpo@hCHE`6gJ|e+M1!%XGU$l57-J+oER2YZ4l)qjd@NN5 zFdfkriZi^k!7US+U;NGnwqk;?s$2cx_L|crLWLq_P zZp+CiBLl%PhQy9&i}CAeV3d+kLI#3kw8f5Si?IeBUd3b-k%8bCSI3TMi?RF77)Jpa zd1N3s#v!pI+G6~z0gPNSa>zh%jMZaDw8hxxM=-L<$RY#5G3Kd@c&~mx)eSqyc0}VE zyF?jm7Ho}UgR!i{mY}*kH#$(FZqu+5HoMt%eu_M}= z)v+tvj%YB(#Exi-apwiLBN~i9$Bt-=aoAkj5e>#$a71HP+wQR5``6gYc0_}6b?k_? zMlyLNxMqvx^Q?Z0(IDSq_y~+cltD+d#khTCFbbTCj69FAdhCd{7_&3MNa~2jIOZ*p zanKQMG2W#!JE-Wp}>?bga$tWTN!7&CZgUy1ibJ;u-j@JS*^2k7NjQO!6+G70W zbTD$s$RPv4F)Cw6w8i-Gb}+KZ$RY#5G4_ic(H3KLw(W?L3HbjbkTe ztko~$v%A4)C!>`N1jp!9Co-D_Tl4YAJzzAG(L@GZW=_s*S@cxNM|z}k zm9mAhTr*{Sgd^SS^)T+~_v`%Hk_hf_p6whNPC<1`^ztCjv&~=5Ke)O}`}g*Ewp*hK z7s9jMIzLVGX>3+oDEp>Q(!JAV3P!8twubH_QLK z`mZ1RU+jm*izEr{Hgc9AFx^P$Ja^o=kE0i@OJC{c)k7N$5U5*YhC)a zKYaV+Wy_DRa&eK)j`-hO3&h4=AZ=IX=P!{nm-#GguF-7*3!8_JSY^`g@^f|mcQq5f zlZk4M_Pa>4K>6LX)*3w|FWs8LCClavs-64&+yT{vFH9H=->))dh2cj9HjZDXb8s{+ z^F3L2smXt#I)6#$E%FrR&+1%5j^0?4UR^k=CVy7-{ObIMXstSTK@ZV?lY`0AGD-eF zp*0#I2kRWTb5l)WgIs^BqpN&82Ip=8npw9IZv(|Gny|Y5-JAHkcKy3IYx3WGs#NcNqdSHz$Qv~6rD1dAzw`65e#`s*r2*CXtrJ%2 z%#B?H`Vv0(!S`#e2Z*NLvpES2f6D-{qmiv~(`YOfR zOt5s^=eo|_l6Y5gBwUgSmKMluUZww5DSFccOaF2WrKhMAyEO(&cbUj((%cT$U4o_e z-cIS4@@10CEy2>YUZeC;l@_nig(&uFOq1B6+~P{`QQzKCZRjnDy;X`em0;=n$5J{# zrC3S{mR88}j2`tR8Mtds9s0_7JV7bi;;=b&sPv})@{-U``>r{4sPr&dgV6ztecmmT z1fT0&@Xfa*-jmNIHIq7`Y1gQEqqQpk^{85YoKpC@zkjg4LA6ISp5fu{5sfpyTO)OM zKHc!4@sJg|YC1pU>vDuju`6QmIkieYL8oIim12D(Sh}@5XDa=VF0Wu&BUrkjyo^;^ zt5U3H1WUjEhSJe0#Ue(q^v!H_u(u>OR4LXjf~BWdQ2MbhzhKECSbEjk>R@k4+@(^i zR0KB=Cc$c19R60ea$jJvw|8Wnchp7~)_+aVUoA6xM zS1B^^!O{b6r}SN2R6*iBSQ>4m)@=FwuTtdOgQZ_?!rS{PDn*(-SbFVslxC|G+4W%Q zlZSJ_U+SU@lIp?I2acljQI#T>9xVOl1WG5W6e;vz>D!W)*BRbhrO2EIOV3U}? zVIC~)=%n-|U5iQfbBtNtb2ttHTB=MKV12T(?@p ztLZ&mXF(1;SbA^`2Yj1Kk@^mnZaS6HzpE4(?_lY?t0*0+QY5-fsrz8GOqWcM&NlzD z?+2rER_3g{pi*S9O{qJ`P4bueF0|X_?p^3V(NOtuO5uN&e-|o&^}i)?n$x6pYhH=+ zuT;$|-5PkgTN3-oA8J1EcfMr}?)_)-EpGJ7(b5_rj()k9JG>>)DN8TT9nQS3>xbR+ zfA0@}v{{!5e#alKSw|YMqr)ZZD1R?m>HH?i)5-q}?eoLVH`@g~SL z(MsMqNd7{9B`HO$pVq)(j>O`yIn|R3^sk3@AFA8yowYXH)0%~CD3~h$=gL8k-CR{z z2`CbJo;Mw#bhp>$0hTwDkKGTtI?>gNuGZ=N z_S%;8Rmo?`A*)1MA<~L&>0UiK$f-`coFjZ4*{)63E#xmnRi;7KE%->!KJmR~*^rDh z8LyRrQA$+_83=Aw=22zPRc?*r^pC+PCZmW91jjf>8FZCfjQnl%B>HiLZ>J38Da~^^ zX*d|U97hhvf#AmRU(LjwsCR6W@#SbRY)AMV%0TAQWc>IB*4#2Vjtq_i!Hq*Y>UX=! zt@-%u;NNkC%er2-tK4GDxdRN_5&pKO+>q2X&*jz$n2$(iU#_tZ4O1E1xm>G^WBZ-c zVKcyJC!>`N1jjg38M+E)KQEuX3Pv*-O=KWA#+u4NzSBIHIeJH^p591C0~rX8fjr{T z{f^`8zv!A&@*dfE&0VIcJ!C-5aU6UM7}gPPNy#Av!BOtg?48)P`?*rj zd9WgyvVGVYWwbuuIA97h_*f#Al`-X#oV zT}{TNEvjMTa4Ae1*4se zRx%JAV=ZOSRc9On~m3P0U3E@AUH<7 zGLYdl86ThZJC5+bD+9S-lkxMVzvBqcQU;R1Cgby0z{upeWbj-N+_`+9X*^_uO~%5^ z-*JT3DFbO?lkt4+?>NGbR0i_HCgVSazvBqcPzDmkCS%*H!DyGy2y!25)gb+C`3U#1 zS2g#BjIqgBx&Vx3s+!0^aC2Iv45W@t#(wL=%iTyu0~rX8F;W=rU22^9E|nMyS9v`t zGe|*jl;1SFhODwVlFv@TNb1O_B?G}Ro>m6Z%O+!;x4@_(qk;?s$GAWl$TORa!h+v% zgzusZB%DpgkJo`w%5ju%90+b4Ur7ee&FZA_)_ebB|Kq0+Qi@1Ha1?B9hg`HdlAYef zND9cvBLl%P{;s(|B&AKpA#Z_UJHoS+f$X%&7%Mq&xu<4x99bL(f*Z#NON4sy$;@V^!SNuDU@C;=jgKaW~JOM@|pR4s-j0X7@ z!$*AmYeEjGY?INp-|slWtCWG9w#isF4~%9WxryUIaC16R8AxuMj0-o1^SF_W1~L#F zBTX5|a+{2McgA~NJsC5|KyZv_HED-*x5+r=8Zhd}s3ilzG0K&Jytm0%HXP?tMMeb~ z2#&FvGLQf_8N>6yC?}(g3;>m> zHW^uDAUMV?%0SxOWZXFpj7%~z$Utz6Vr3wIZZekr_@jQSOD7|Z3Q+05ZpMfj9ujxg{xfU(G_P|@7ll8t6xP*1t|!Q@~ybaB_-cI9Xs~;%h&7tM6Zi- zD$A%uaLPvb(fjdx=fR)c621G$yUTX|e&;u;7ZhANhrdkX_nurxzxPXdxzeLsGgXo> zZ%4wsuje~c!G`BM$nRY}F}=lAUC=J{y2v|eT2 zXF=z8{Hf;ots@8fW1qi=<&$f#_lLCy2A|);MM39x(cjJUyM4{j^P9TrsUHoIZ^$o2 zg?A*YM?yVRSzHfQxj4_*KVr~AKl z(wWx#-?hZ4W*shYUo3k}ug*QDM+{pqV$ig?vemSNdHGrIjgTrP`HT=%k6xq|QX{1n zN1Eqtop@v2xRR%!rdP4eP4BBGqOGUcCV3aie)gAmc}=Yi(epCBEGp z_(Tf(OHACJ(luo*)|J>KpOxh|iCF6jN>kWhV#MlNPtlf0VSkAO*Pt|o{UzStozfKc zm&llfD<_rxB|ck4olR|tddW4r5}VK&eq{`$DeN!NasbaYh5aQ)o-Cts#Dry=;^M~y(QFT9GmnrNoarR<9e;GPHEcOOZ$6U$F>Q(cWt~Im7CiJO) za$8DoQYlMpLZw$eN9lHn+=w>JV)tVm10RYSh~tL zlwP4yti%ROpSq2g{~x-)#P}j^67jjNHe+=)czo59DNSL2iQnAT6zAztv6dQq)Ll`X z)0WsnrC34@mS%6F#V&1$pLHb}E2qKIvk#%PNu^jY4VE5$JEfCVignUp>65LL{#B%U zXFmEwcV}J@jglXe?k{oOo+!u}GY#8{}$N{g;TW2G|q3Eg=EN~ft53zWgq!Q&`RVSkC4 z37%^T`%843o$~$?lfR)9i{vb^3B8)8e8F?Y9@JQK44$T)#3!Ur&Mt9@P3TdNlr4`{ z`h%_>V}&vJs0VLJX$t#GT(v!=m+Dcmo)~=8aVYGO&;KfAiB0IarZ@1YDeNyX$?a;9 z!u}GEe$S((u)oBfM{Dg!TOx)1C2slfM_dw{=_)u&Y(l4LP6Mx|6!w?+uN!a*`%66I zw&6%&e~FUgI8A@({t^RQ`SM)x{UsI@xp$$K=q33v>HZSGR`C?LzeK|TX`#b9m+lTn zuHL1A^)6hko6cpr$4hn5&TSyT{Sf#MN%up5)ZY(b?%cq*e97t!8_`%Qt9v7cNhQqG5>Z#rK3@LYtDHrD9sNxbbprIu zS&HQMJ>@K_>M3W@f3eG1bb5M~v)}+_Kj8rNGUD!X7960voP`JIRn7uko$O~Q1M|yS zROgqoSkhnb!6B>Uklp1hknW|Kx4*+U?WBG=3y!+KGzroLS(Z(dv1|fC8g%O6y>b?d z@!LLNBrRtF!z*X87&kotMlr`x#Bm_Fad_n{7UP1YU=)y%M+Smpc;ze>?^FxtszB?G}RymA(cG597hn#pJ) z1Hm!8au$p6?R+pA$!H)0!7;pY7K`z3d0ojhR!_zZG7ucYD`&A7|J(*;Bz0uel7ZkD zUO9`!_E|8X$N$tWWO!7;pY7K`!KBX&6pt}(Bi#bVs_5g5fB zM-j(?;Kt#VvsjFm*4BlzcH-GhCnJpv1jq2oSu94DIHTlT zy3`Nfx10sD>Xoxtj1MG}EsTha4h>=@au$n``@CJw0)|)4Vlm!a%`RsF!z*X8 z7$xKEauzVWau$nm)_Y*+x{u7MyjAFYAh_qnD`&A7nOmR)q>hYQG7ucYD`&A7qoN*+ax%)uKyVDNoW)}7{X7_@WR#GB;22&xi^XVP)h=hj^Wv4W zSd2we@R}>&IPy3S1UC+^oW){f>}8j;U>sgKi^bUCFuR-u46mHUVr16Y%#*$U-au$rkD`&A7zieoivw-21vsjGc`(Y7Bg5XBtm9tnQDY+dZNm|Z=k$B}S7UQBjz{uq|aySkIHx93y#bVS+zF9wm zkkPxG1>^9_SuDn^7BDi&$ly2-+&H{)7K<_CJIrZ18EIr7IEGiwVll4V+Ae3oxp?I) z7NeljE@uJbRZV`eoW)|S@+Z5T1q`p8#bV@KW0$jl;gz#kj0e5~qfwUY%MtL?ErDT+lf#4WkIg7;@e;OFYWE7Es;22&xi^XVS zNlXD5d1N3shF8vFF@AXh%MtV9*9L=XeOhH3j0f@65)EEc2qDZ8Ad zNQeoqoW)|S@(!NcI*y~3<3MoZU^$D*qsC#@yY`Of<7|?avtT4z&f>S1XMcJ1r&deG zx_VMnHTrXDvNT63QM$Jy*y~}hJjL9O;J+JoZ%1%+pVE|(Qwl#HG3beJbW4Kj39lAZ zzpc*Jku{@V9a+7=?N2aTa^3k&1=X#|^Y@jDrT%1MX2mB1s&t2fN%Gh4M4vt;vtFah z{j)@t!EFIty-IqodX?&lz3W%hpSy5c?9atx+4;lYkKnp1dOsfbK%d9Y^?p3>mEMmR z%6=6-?|_fu$5U4w{V4szf4ac(4{s?Kcemd54{vf>a{urj=nwwq!&v4@-5-44M+AKA zy6{`;YkhYC*!(-{{vdzw8~@|-T?+o-qnA;df_!3*E_@0_wf_~9Y+%%l`gO6yTGzEXKe#p}Sr{E9%)me*M1+jwu;9aKB znwo+?c*qqg`-5L~*5VZW!J9ASQM>)Y>+I6w4_-}vOzIEb`5 z@OocUnu0$#{ToVC@CO%ema;#1mkBBRgKxO2w?BB#U3>h&JIIeo{lVh~rtA+cSUF{X z@TB~d{lWWxL1_y9;3v1BC$!riJaPLTfACrIV^V+c5&ufrAKW#ChfBd9yvdc6rr;0W z;wnm0@CT25iqaJP!8?4!X-dH#yiS7B6#T*8%cnfOy{F(0u9?kqO~D`BG$Lhx@To7R z><>QUxs?6EgLdOPLkj-j-Ij8|Dfokj{y=F8{@`<#QJR83_=xRjw@twx995?54<2(R zr78G>uYDzDfAEm)Q}zd6^hnD7;M*_f)s%ui_$4>s6#T(A|Apt8fJNTos~&&wJ@R8xfAELLhxvnN&>zgi>GTR@VIMEoPy+|Aq$fKHYNqlZlKO)o_5Hzj zeDR?y<5>RS$^82QsofvI+I=b77sGFv9CKv#J>2e|lk9H3E7x4T0=4$$rR@G-R1h$JE?DN!+HPnQI}`AzitLLA6b&#!RKVaGw=uY25S;;W2}&d= z(YT<1qH%DEql{6BW>hqYk%Tr*T+oc71~;O(1O<%?8f1%Wf3K+@%cGt#>h|4hO@ds)Y;$zHGy%#k@ghUk;Em1JaIW zG8)N1Fvj-E&}v{IC!_l;FzU&uBLl%04QjsWZ5uaZ!JA;zl2Jnjf-yqMVBLDxc*s_$ z+LvlFs>nbv#zOC^ zE)2?Jx+I=;>s>8*>I}U4hj2tPI3fr(A{Qv*xXqs3-hbx|LPi=H2*%i38LV6HYDeTH zoZVD1Qpi9s#>cI~Kq&*~nfdES?qp$%$KA?6O#>(6YpG$NGl-%Oncm&EDXjd zWw36&s~rb^=S~&|qnk2Vx8B7FjYfiPr^&)#EYbz>tXuD5+;KG+r98LAJhupTjZIMo z>(;v%C*KN2r^&)-$53UUNP=@rzkCmje6}Nx?Le@0e5-5aQ7ysA_>qZAW68)R1Hl;c zl)<|7uDILUFQ!CGJo(9 z82y!j>I+WB#To8oVKCl~*R6N;W!PozWMMFFj@PYsF{UqYCkum-gSz!9_nvpYOAYFd zMBiGDK@CR)!Org1+LHY?dv*`#h9uo;GOEZxFvenCY|py&uHKBh+?_0p-dw8;6mM{z znVDgCvM?CKlz}P^PR8&+n22G-`YZoO+%Z@nChY%(&*KrqIDc-?vz#xwO8(^N82$Urd01ZAKagmX;q|K6P}j4PzS zGEf%6$v8{CVdxwppNVx2(I9gOAA#|9Jki(Hmz_Swcz9H`kbz)*xmg*kTkm3wJlCBp zjCSNGgLUg&jKwdzlZCzr~PI zMFxT~rYa+Kv$N31)#ytl85Lw87~^ndpsIwkFVj8-qm+zdG7yaMz1Di~x7l|5>nAXZ z$S5EK!59mafjSe;c7zUfCkx}eT%rutt#^&-yOZ3>!eAVr4A!l8F}4qZk4Ox^bhaan?Le@0oE@)Q?_!L+i!KNmDP$lRW0!c{ zdKY8jKX9EUlaWLQf-&BU*R6LkF7AuIw95Ok&L0|N{@^2w$IN)$dKV+K0~j7vEo2~A zJ5G$(t#>irO$DQwj7BmLjIm9;ZoP|fe}6FQ$*3a(!5FV-&G{aieZ5><&iR9k8Zr=! zQKF3Qn`P`Y7w5K`j4Cn^j4@mo_Km$^8`ryb)-mW!r|H6Z!VLdtiN45(owhDRvS!yy zj<44)xp%@eS8{L5=(6S6Wv_}Y+w67!vTss$D64sSk~%z6xT2+f-FdH1yykpkc3Hh7 zN8DbQlbEmBX zjDUP%XR{3eqq0e z<~}MjJ$u^s3ap;IZKR*K#f_|QJYTlQjm(nMnDs!UyF9a6w!qDKAe8k$*>Wk<;mzu4 zmyFiGS3lm9Bg_AVb>0ejC9-~VmE0ug7wKom$*|*8PTnfgGxAyQo(jJW@JfZ>7RtI! z;T7JIez-dJ%>tMI1wJ_juMl{0Bw4P2f(eTwt!=W+W9K`w&H0|TF3(XP`S79b@|*MY zriG56?j)Qe1AR%Fm;ZXtq&7vAV^4~Wp*OjAq)&MM_Ez;+o}isvgHC$d$u*&@H3Xh0 zr$50 zD8-!HXD*MtPVf9R#8Rd^-`{z=NcxPdhUzZ8OHP)1A7TARx+>>Rw|S7);+x*Z^T=to z%<0ZK9gqL%GU}>o&()Uy(*Dwy$8NnipV>Y?cV<0~5FVz|iJLu0d+Cm{-K}n=o}^OT zaS43XCuF~6l`a*Rk2hKZOV>O`=?s9ODS@R= zjps1Qe$Ub5Y1ip*KfP| zQE6Y5vbb_k>6!(UzAt?aO=T1mgJz2P-`Edw<{ zsv-Q4Xso!h>u^14y67{n)@R}#Mc|XL--&!(4p%8|O$3&v+{%-%l}d3(BCzz_Wt6_A zH$-qFBCvG)o0L|ll*N@@qtbpNIZ)m{beP7dl*N^UO8d;BbVrrqZbRS(Km0YNAL-2w z+++wWeRHa2KsSURP$`Qm2W{|W&ro`SN?BYvsI*zO=+&bRR4I!q2bFGf4y9k~jSSpC z2;A38&!x0hrMPbpSUTqpN~fq4w+jMG&p3vc|4}N%T>_`nUSp~HOxz1_KC}IGx5GxZ zZ?)bM!7YHm(*5_>T;zuEeJX|XA6Pp3CQ8p&DT^xyJ&o@yqI7?i!sics)YleMxurnEI#`o_S#Dv_6{J+Yo+FZ-c-p4=hcur1Tz@!XXbVJ>X{c zb)rgHTsi0*_|{f@XGm8m{P4g>-H2>&`TVc9IADVZmacn+eSK1;aK8gf2fan<6)J`4 z9a!4$zmy)PQWjSZI!tp>m$@O_MWwK~10OZ*EX{zH&;NSo13R(?mX5ib(vV8A5o=)S z`~RghSEbm0HL&!^>-j~ruS!{5Ip{E*a~iLv_w~+5uU|DcmHo^H->cGXewFmhBuyV~ z2%n?UKm97{7F{VFpwgb3mD&fRO?s0926W&7ef)C1JeQ~xzOz$m2f0(8sqaFQH`=?< zYu*L&uD7Jpgn}yH>bVX=jU8^H#t$WuX7H~KELjVC#j2?eJ&j?h&kcQ<7S`h znfh_ue}ro6^EJnB_63z5@FE)LH~WH0U+%Ad(j33p7gW0O-<0~yzM#^d?xNIZ_63#R zEE%`jV4v9+RJsh`s^)}!W?xY0U3cglJI8PK1(g=Br_^Wm1(lY(!@l~=zM#?{#Q4<) z`^>(e(zEub)Mxeul`a`isn6^SDjjeWr9QJSsC3|Sl={rRpwg!Qqts{i1(ha`QpabG z-|P!2{X9!;w>f^ZFR1iBsdcPUpV=2wx^Xt8H2Z43PuJ_4Rds3BL*6R+aYoKV(KjA7 z`($b=tnt3yQ9sbn@tb|F!`aN|Gy7c6Y(MiIaX6^V^y5kD*v;{qeL1C&Reqe2^I*rBd6Z;5=;3^3U(mzt z`Z5paGy8%{Pu@~(w>f^ZFQ_#2VM={wUr=fJ$CT3StMzg|v+;SrJ4$|>k@G;u@fncC zcP^jV7xZv%j#58qj^FGHD*gIcN_}QuP-*LEN_}QuQ0d`Cl={rRpwg~)bC`T)Ur_0% zb13zheLenqLz>nQb^eLY3(l@Zn47uCR;n-eqpexVIfv(KI;-{Qv1_Ks2F znAvU2zB%Ez*(d3JLuk-lGQ=CYZO0ry?DQtiAM;12uFLJIxt9xD&gotfarwx>i>axA=SLjA{GxH@YMY6s%n^+phP|jcGw8|kR z_p-z~WyWiHy&|sPuU}G9I79wv-`=zv(O%6;jqWF>O$wi_7UX%pCbuatfv#pr?wWM9 zQl!x;5s>~_rATVD-gcBeB1;NIS}M}$mU56rGzae-|55!_B5>3%t5n+gmU3XsQ3lc- zqlfRnnA-qGzBE)vQ$smJ8BR!eqB4;8=wysM!d)c-?buBjXK%JIdzQGXM1Uc?2}UbT z@WLtV(3d0cbXSQ0;|^sYCDPfK*XD!KX_W{tPF4nTBb|(Q2VqQ8Ii@KbQv@5+-pZJ; z+3{FhjXeBhGBo*A&I^JuUekm;WJ@~Rac>u_zHgP$*Yyz^WPJo5p)b>wfwV~{LM=2S_WFQ!0t}>8y>1@ZB$LPD#%px)h$Urd0`N}~0rIT^j(e5e{7>_-b z!AcXZzKkqzSBU`QBhAWVr3n|~vMMmL*_TZA1;P3vYnEi)ipssee(?S#B;ijA}X=X=ET6V_WSFvN)Zi`rtmCLC8oU1Hl+?Xzm`; zIh~BDQ*d^Z$w(pt!5C%AKwhVl@y0ALT4lb{8AOB3Abf-~lcfwKcsdznYr*iSY9Rx` z+R;TBtTf>o)3v$oDiLVMLe1J^r3n{fY9$!55$95oCJN~H*|<)XC_7k-JI+7#lPz580qj#?q(2sAOL%*cSxr%VWwwTBwt;dk=S&2(;q@WgtJ) z$vEIpca;b*_ErWGMV*YW*v#^J$!A~k*cSxr%g369hm27tqeL=9g)x?lTrv=hakny% zI_hNHyfa>N*<@srfnbbr%3!4l*EP2AHMB!M(&;spK?Z^``YHq2rOtM|*8)a58EIr7 z7z1u2(oCIHWgfIj6Ry52y24#00*q10K;o&h9e3a1t`Y%8H)S9L)ya7H zQ7}CDoFQY{qCvKE;Uh2>X=WZ$QJsu#Ux3kUDl!^*5R7rJFlr1&ZkO=E!oXw5;Qprdm1Hl-hl!1&`CnHCy zEK56*$w(pt!5H0?fz((hW9TzrbXp~XuYXO~LyoMI@ogWhjP~TSxy~UPWDemYFs3L2 z$+Awyyn8UF&88xw(Z?973}nqZ8LRhjSBXG7zSVR*q|Z7T(Y6 ztTf@8+e<1i9@S)2k%3^0NyMg+1%vvX7^_}i25g3oPl8a}R zCR}~#f3Ler1Q@fGfm~Z>JNAAKjC}Sbk9|R~zD!UCl5U-h-CMyJOGYjk2*&8I3|5+O z^<~n2?kW-J%iCI60cp6-c08Qzt`Y&p&B{PNu9LBVTid0xFKO%xg7qaw8A!}^GN!(T zcBGP#LI#2{x+?=2x=zOGv2;PmNFoEl7)!OX0#bFIjPLiu=eka-L|{CoDg!yYPDZyT z^u?3!vO0fgh;1nc#^K69@~)Gy``ci2S|tLE@3lGuvUr`0N$-GB&vw+Y9SAla3zUI$ zUMFMdyI|Ck(Y8ti+Hr|8km&1VbUTjo2O09!TgL;z+Hrs~kn!te%*)5Q?X*S&+7Xr- z5%#Wq?rW}h?GLsvO%)r{dxp%Y)?dAP8k8wep0R z8Lo0M!}G(HG{g0e9n5euwDsnLx%#UrR^ts;zE;SEnWQ0Pp*$JCjGEzUh|6wtQ>BwxQp>_85pT#q>zDNj9JQ{FYaR8S_?)p8A)Uy7-Ot5=!?4;2kryk zvlUidiDa+p6^398q~6jOcQJbYgZ?WSEo2}Vqfx#fS_NhoW1ngCU&&}B1Hl+_<0I;e zyBJU14Msf~bz~qIL%%nhFYaQzL}#p)j2bc!jIpIM=!?4;b8lvS8ZxTLKrlv~e8@Ck z+{Kvw8D}0cD#$=E#?{K8FYaPYT!`@~C8L-O1Y-Lt27)nUL*}S2 z?qbaCqp$p#GMDNEkVgiBF=~`C7T&sxFSmW&!Q5RCD%{K|ZB7vqBSaCWQ7s3HTw7}qF+zPO9ApahIc zGAhVGFvg+EpfB!XTq1=ILmBkNU5rJqfKg9I9T^D5SSE9rRbX~89@`E+u%@NUc+`-AV2taO zap-2>Eg#MUqneB=G7yY$gfi%hyV_Aw3`Qjx6=Wb7;|KMU>5ID5&VstwLjIm_ol7V21&)|!z z+#BkAmwMs}_~O~5WRiklln3IzxT_^|=b|M;$jBfA!5DdQU);rbcW3y~>13plfnbcC z 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%0Deq>xcW28=P}cba%?+Q-=KWH1WI$Rh*B81lnc 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

  • i`#SXn*%v8u9YWOKLXl+7`+G{mMc)bp2OfLyCa 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%0AoRW2zB8v*+S3$TZ3En-+K5PJr#}r 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�jPibx95~RI& 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
    !`P*C)zn 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Π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ℭ_0Nf^)TS_8}pZGCF`oTw%1*q2NY^po7|vSeMUpNjfKSGF?GSHb(&?77oj3wSM+*4J zIIf1Hl=3vp!`XC@k7 z`ke?jsfsR1yiXGAhdMf6YH9`Ta#zYzw?MUkYtEWz%$;r>=1OQafd6y<)c2FPII}t4 z{x^vP?x+N_*&P)ZA0KDm80A|R6>pAz+^|A!y(arDO><&N@3amFO436T_G zMpBy_IoweIjR+hn#mqY@oa&QF|C&M5a_{QHS3%471F?1Q|fr1&^* z6w0*IKj4P`kB>_*C&b%hP*6fbd?HBWe~NeFFY$`fC_OTGqv?SwmgATTm`61ziw#d8 zA+!C*!eBfYMBPwLh{b01#h@IoDL&2-4NCY!0sf)K^KW|K|AQY8hd&tdi^@d_{IA=e z$csYUpKvzfSN|h*;E*H6g$l(b#8XWjQMQD*q=cj-JK_>uQE`Y!bVnz|Ie+5#D{oYS zJ<4T5<-8_mv^&ZkmFSIfn0!%*B-eNd*=|aTOR}LM%w|ti99j}WNdKqK0b-_qs*I7qNvBylAMw z9%{=d$KZsdxVU&|2~;YP7~XCnjrI^c%z*rR}6ZPE5_!H zcK=13C)R25ncRaCyq`k8F}}ZW4uYP1;`xzlP$HN~O2p$q-sm`YtZ%SA%KNG3zq$Vs zHTl2dk{myB|20y$e&UICN4x$qDajkRPmt+HXo5kB2`-b<HqKS6P51Lz%kFjUt} zKdDhD294`5alAQ+n$;bZWKK$qr$&Qrk-9icPDmvoF)^MBG2@>&C^;!EiuDbKsyU;~ z_D|yCTu5e*q9%_sBj84lff|_23FvT0KG+PsaGDZOM0|o9YUzqH$Jsw|4R#Oq4W=<8 z9%S87XfnIW2m0uWcBn4sd!pjveI~Or%4Rpk#XC$cQ&Iv3hxm9G27`E%=Z(VXfk6Z# zr#asDH}Q_BBzshRQWAJ1hN!RFqmpb;__zccI-$>$kOXRAG{NkM@c*5$TOeNB$j%rH9|;MFPe_Dxyg!b2BT+&ESc{8y|JWYugaE)eag>wT%J=Oyqk43&jXgN5HkN5o-XOw4<>&NCq)Xxiz_eBS#A=b@aFb-Ma5A-C; z`PYs?@rjsXP@s2^15&nOHv4OLRFdzf=mw~FQliUD!T(MpDYbAMSO63FN3_y|WG<6q zFiJ$>Ce#uC+oKZV%}$JyH2tx{yYUQ398okiIv|U|G)X!?;go@YFis|+c94KO*7FI~ zl>Q{SqY{!5+@G4Au^8^4c@7g=7`o{kl;DfP5Qyf1WRswciOB66+khQ1z^2qwTSio&!7twlmu zDhWwGjD9g_&KPq%_yjwNagZJQS2URW|9Lyp07WW4wo{#rN6%V_0ZT{dy-_~hURe&dep%o$rkW%4{#Ttd4Ai zk)1yrZ1I@(ZFI+JHAs`%PH=W;ZK;-~%j3chpvl0-2rqEJq-ncc^l^qCTdB>lF-Paw zqkWIZBkL9G;%vG&U9w9OyEw4fZkGzp=4J~nQ8wF_Vw+uiVbz`vY=&9D#mY`i*3wYI zLNh9cg-!dN+w1@wHwR3YCrfrFzD+eOEJ%0NV`mMUdRBQd=qiso#}17VO1GBel^qh+ zhc+nVs+Z&=8_C8l3T(FJ7(pAB%FgPR(WpCMY*S?iY-a1Z%@9nmwpR{@S!1z_#bVJK zWrC${r^Or%w)xOS9aep7(WH--B0^z(R}Y$AWlGggaFWC2vVCo{MYlv&)(Bhk(qb^R z^wLqAl(w{F;|zYco9V#PHob?#3#&7wkzF!bAEe_6wv?8$odFuFW#_#`%Lr2^Ev}o} z%FrG-T`c<(JB<}jY&TABV7d3F`!>5}(+xQJ;H^o&-QMhLlVsc-!WNs^**Pjn>>G1G zv1P>8zO8w?!JZ4-Uuq%j!re|S)yB-`mK`}}_9x5rX3J=74Q{bk42yna_3eG8KejOl zy@oDtdx@QeFpI2%%4M5#hg&^c7xKDqN8_;GW?e8Wdv&k1?{b5+&#wCW6Wgh^(RN?k zL|V4FyEUtAidx5XhhUiGw&2?YEqa#t^2oBZqt?o30_#ZE@uPNgH+O7EtdF?n z7g)BZy>fZF*z|2}vO}}#2E>|CSgk3}&Xvu)a&c;{vi1*c_l2De^J-x0p!I*=?cENN zd}zyOF_>6>ZNI_tXRCmHV*y3q;8j<~xj}=q8Z#iZ1nqOvhQvEo|ViIW)EUduJ$X%!cXG#5dIf4l68rJhoj8t3|$1?|j3C?7+zed#AEa!XSpD zHJ@zBiw)M{wlY}9TZ%YVYy0pOdfl2+E?1ih9IKFm-ax)%yHsCF%gq?EX2}k8TRd#C zA~-^gt#OTA%i717YKu+8-sB%F(zx8i2BO+%T~qf;J4CE^s{YQyW_2+eWws=39JY&% z&46OiZkTQ^2Gb3deYCP256A4aqMz6-%IyOvSHb`WxBFauvMqZ zZFKC!Z3nR}YJ<^qA3Ii#tM{GSRsN(mwb_t01H0z4X)s;PMw!jtQC94iRXqz~Ck&fA zw(=&GEf2Y^_T8MZy>$}?pLuK+jVy(+`F6M&S(UDm?P1&<<@iu<*|!_Zezlz2cvrR% zSbm!)+iWh6n%&whlfG58eYFW*#!K*=+$wCC<)iUfK$ojA{#+ z4HKLyZ4FHAnsTzima4AU>Bo9Fvrl7Y+b2^yRP(am+DMglNR5)*HkIhOq*)x5%e8%4 z>!pn?c6LbESmo3H)cPRpo^87&Z)dX9dc&G))^uaNd$Bkfl$)npo4u^7GMiZSz?xIr z@tcnAgqRkaGwiNfthbbVHkOC&(QXzD%S|>ULt7XyNhj7xsjV7m(KBZ}ZkDY^yJ6TY z+B%z3yXaPsI>+XD!+eOE??6n8m zthjz_gIL)8vtnb>FYF`5w2$*evmv#*{jnYYnO(7rZQwWBYs|jP5}Nd_H*JzMxG7Zj ztp_cOL1i<@(i#{21k3Vd(WtOxMN5&rS1pcl`8u($!Ww`FknPH@vF))th1-Ko;tUsK zc6$cIlIw*%+kodITTk=67+4S6+zr=uxt$H{^xiY-F7r}5Wn0FppLy)^r0cA|`+>*a zsFp0(l*>hB%?=AwVaH4;V>?D|sO+3msZFN64WS*Hz1rqZ)=ieGXP5IfmeCcCx^r?Pjfrst($c`59PnPZAw#!)Tel)D@{p4E5 zpB?=CV*|AA!FjE%t4eUI#bU_@t+JJ~JRq|}AhAQ*Ce`w_Hjk=B+kCAZHob|tMbB>Q zR?8!kS)*B9CF}#cw)(ZB!Bxz)_SY`k)^;(gY(5r??Y<$W(yrbH6T9MV`t4%9`>}wb$-l>xOH8t+(@fP}=93>e|WJ2ZChXHzsy$Z(h%^ z<$vAHgYkNs>%q9dY2aGp(QN42d#&wL3@~Tcbg|mb5wSzF9oQ$oYt^p?#n$!qZwGg~ z&EB$w-TthXK+h)1I@`N5TwZLowV-k0>V%!x>9^Ui-lUzl`fe(_na91@iDSBiGkbhg z7QNQK)=R5ichXD;R<{lF*IwXouzgq7Q+AoV&c$-Qh}EoG@4g?-WGPR9c3G0yXKq_~ zY%V6vp|%9sBD^`ti)FmDb4ilg5y<7X*!f|>E*Yjv?QUaR?ng-#uGs8!Fvh9Dmb=Q< z+#E|@ZY!JBvHc7uyVp0#n+^4HWj|f0uWKPU7DrVZ?8j&JCLU_LkZJnmF_SIz9_0ac z`rlsIWEgd)6ic`5SG(CvDwoIO)K>I;x;JsUvG?qxYf)|K949uGxPMLe^Q!ar-PJvp zHk75sDD8(mb_KRnZ>rs^)p~ffx@WzrEd5|l``BhTn(fv}wKIFwTXij48mrsFzHv5D z{nlE%>+Jttjn(aw4VC@Gx7uuNT4%qj^;TaMR?k+4MYN*m+Zk%9+^sQN+uC(rm0i0r zT6X8M-wtf}YrFKx$Hk&e^w#coREusRm$ut-TfN69wred+*uo};U64=umcgLy7mJmB2Cxfr`@mvHj$K^Z=Q%qhvT@!4TsvWx_@Ug; zCbT``R#0NkxlKvCq_8N1rk~iQs*T|5`csQzowPNxgDSN|Y&Ms6IXJRuZWr`f(a*A} zUEqwyN!!oU=~A)W+D|N}TM7$V*+pMvx00Lww4aun3ae1}M$`TXLHc%RRhGuU-n08v zc7Mpaqu5;EX1aU5IBJ*MJ(|8XZfunguKV_;eN6{bYh&GS?dOJgWji0#y~LK^<`Z_` zbeLHSa8*?G3LD|H*`q<6G#y(7>)m#fg|C*ba`C%M=g%y(ypq;jSYX@vz5xORnuy>QMKIQbz`60E4$fZH?XWVlf}t?R&md9 z`2>Sgtp}#PqSq`=td~ptsGwZ7m21g5!7kHmko)#o5z9GNfr(v1|5I-5t$V}T#;C!H zS@f$z@=34QZCveDSpLN=t*&Z}ZFwqgS=`d*RJ+4MZ?MkTt=!Ps57CN#y_eOTY$z7X zp8YssucnhxKRBtquo3B5nu94mj&8~-OTsSWOFIW(!X@RP-ewP&fum~C9@DAaqc8i# zhOF*q<>A?6kTnOlOYOn+;q8944N9Ih%grFSj||P0^5AA^dfnP?P}loR7bkX0ptc*O zZNIfcx3M0`t&#S}etMKn7V~Mp8HWBJR?DTG`s{pe&-O`iOVvwTd&_#;Qfts8OR%uS z>%MhaRt{_?*>_eCYP&r>o@}vo)IPgZ_E8h-agvVgD6xxWyVkRz=-IU|)@kb%Tj+;2 zGrFs2TbYOW09X!iFM6&kY3tsxxi}?bzdJ9ial6Ql)uqIaHrz_UQ)36c0Zs&sT_D)c z{YRy}nphj`_-Xo?4S|hyGpOu9Zfy=0i*{YKTnxtcVtY;FEy4Z#UyU<=5kZ})ob z%wk#CChH74)Vq_UZLF+w&^=jhnN0@e2K#hnrRin4ea279MLWo?({vujkMHbrA#Nhr z`6;m<9OGkiW~V^wpRq+jNpfq-xUwF$*1ER> zl(3A7!gFIEWZJ`vqt|v7Mkb4z+FExeLmR)`O<+QWYS zX77ZKvkB9)?o6;(d%{cmvs$yUM25-G1|u(Q!A92=i}fHK$C;HjS~fH`%H4;E3Kzqe zQsJ?|yH@a=psKyk3d8c$I>*emGl_kow}UUs?QmW5HB78VVMneV{dQhD(vJIMGMjH@ zZ&dc|EzFkyVA}zFTaZzUz#F~fqF&S+6NL%}OX5sCKPExCEi`^8b7^`L(*jdyL z^I>~fYctahCHuk=fRk`|nN01()!4bij^(vqc6cSWj}g+fmyPvNQrmLdSXBRIm8>^x z9!yWinE0>6ddwPu&MnSvp54Pe5)@0!eh!Ai%MNLKoE$d2vE|eii(&nnO!||49eqK- z46(y(XKj0d#vub1JLrzAj`15>Ye9X)^yqHe>QoM|Y^R4;M_0X6zO{B|e`y;Q%x2V{ z(V$vm3#9+D$RP!{3oJ;;)*9I?uD)J>>($Te)q}NP2~N*etF)b$N0oL%(|#(0AJ*6(n^=yL?r`s>1&+z?;N@UW9#=gF zdr7*$7S*<|{lZkhF@Q?NB5EYf5zR5z8ZyR6u`+Z;QQa16sC5z&1R zZCm@bJr;Ls&g`0nrtvGWvqI6wQfdt;?4;zsY}lrEp56;V1@=agWtJCW+x>3)9G(}}OKZQ7Z!`zO!iPrg9Qlen8CRCK|4Le$$a!w# zcf%rW`)j{!w%R3NJ+L+-3?JG%SNCdc!ul`E61~?w+0xvRT?ybuu|a|uAKF@O7m7J%g8kfXxg6v+-1ckB zcCkC2+V5rAt@mm}yU~6r(hkV9J-i+?!`v3fv|Y5V<>q!{v((}@dhPJ6F`?|wXu8;J zt87&tG-Xm@E~RVqqVqCidCDa!$&v?Z$Dl&63+@7n8%Ru&X7z zY%Tk?fZ2tWZM)Vcn+{eJ=h?!}cB8UC#X@1V)79<3AscCoNe?X7(T58vfd+1IzW#n07J-N$#l9bDKa$o01W zy={&Cc1Zjl5-XN$C9!9HBhLggvYU7||I*avU~A)@TT|=@#siy`!*VgP#oVTCvs-09 zBdBaSDwnLc_iPqzZRnR9>*d0JLwjO}TWK9{zXI8}!v&pT$46#+v_ZpRge!M_VMd`w zGVM*#!0u}@2+u{Y?%TIUn9p_38em`8o_EVF+^I1-r|hqjsNJg!dD>l`D9yjqv|Sk1 zusI~V=`m<=vbWn!6I+C;ep=eEC0XOA$kTGivF5*$(ng_6KHJ&Ll?`}qzn+im+r_E< z4)B^j?)uY0bf*d3BX1AGUb~~Z-o-s~bH-yF%2-)TJC9C#&8DF(68_5;5F$pjvH)_i;e zmG;*!>>JNZ^-;O?{t>w?1pRuz@FTnOMSNmm4f4D$RlUTjcSnUih0kGjpx|>|Zac7# zRmC8)%PPAQm0G)OC9LgFFKGtV0M``jt-1E`Y3G_-*k@>rf?s#1YnEASg3DQp7SGF5f6$PTmaBeAVwc8j-P_4HK^3+s%`=G=PUxoyWch8DlK zZD}?AYwy4||GhsWyO0=XW7`Ejt6N67y~Z_i(rhS?oG#ns!?L;Bq{>| z_7_F$&ZylTov2BZ{=}x{Y60bTv2TOgt9y+-rjx$?)@L%F?AzL{%yeoOZ5E-lW4Ok< zsM6r#BCG6`WtQ3HQ)RO%O%l6xXLl>?sJHXDwHep(Wk1W^@L;0VcAyuyn5vd0TZ_Hy z_Cjq-e6yH0w!3Ms-7l%OmiWb>)~;+)TwbKjCYxinmf*)&SXJ6V8`7|?TA-T#WMAvb z$rjt;q(8N5ku|%pUkqn}+}!<43wQ5x``zifU)m4Ua$8r9ZU&7_j}4aQFli1>>z@6= zSJO-J`@wekg$}c3TZQhBwdUI8ij7olBi;7w_fV5*fAfuxe^LMYgP-+&()-Web9&jO zix2%s?`eaJcl&kkGmBfdZrQwX$H~v?ZQXkO@^gAm*>UnkcDY$EU9r652LTVFYN?0+o2wSS+d_J+^tZNI92yL0aIf{@#_8?2jA)4c5F74fQ$I0LA?>PC07x(M_*=IlK&AsJKKiIf!+qV6S z-aC7*-TLYN=laj;y|lm2fA`Kk@Du&N_V52Td${{s?7VZ{n|p8W|E%}Ob07PS-dB5X z?A`jx{)2zfd+Ok>ZyWr)w`Gs-_xIRi(*IWP2G@UE|AN6DTWp`#Y+QLuFFWmio0j)K ze0jL%>8IZ04o4k(@V{QO^r4NH+77&TVCG0dCSeMgP+~IWYcr{$6jnF%Okfx@@;)< z_?G>4oP56>C!ciEp2ywpw1*!3@PGM-qi=tg8xHr_aq^Cn?=sqP@|G^Pb+Oty|Ci+~9yq z2FI+N{H*>#2fcIfpnL4GM=|)?V6QE=d|CgvZ}*NH-TL@v4TeWO;p9K}Uf;XIQa!)- zo54xn>g~ASL7(ki&^zlgJ6?`>S?{Eqy|TCMz?UuB-;pVMPdV-u4?5?|y^DG$e4%&J zefPiB{ttcO;!As9?mhYyz03Q@|6A`tpX`0ScemkJtj6A7T->znz(fAwkOQ~>xqnH2 z-{%je{iiNo*xT<3=Y6|>Y5$?SKWh7N2Of9aaocy6>+F2BugdoACt>3qcfND27q`9E zmNgp|9(0r5!YhwjTo_+)>xJRM;=+#ChUd@y`qm5k8*ltW;ET3zT{vrDwR|w*PZ~d9 z&|A1icGa1vW&hCe!qN7S?Hyj9a=_MwLmlJ&L+yLI!5*xDSM0$v{Pa5Ey))>GfnolL6+el5&+r@i*P}0< z*Kg_Hp1xRq8pZdF_`}0P|J|RySbh`vp5agEKa;*#eir$jyZA?h_#3Vh`fo^5JtzQGCx`{zr!V|5f>u<@@=vVjDffPgwu)^u_Z1c)|A!e?#ye*tp9rYV#W9Q!uO2$CH)W67t3Gxm(YP=_?|oeiJ|{4lTVgEzVlk&GyH`w z1poK+#qwvhKc&CtL1F%hMqfOyKc;^geX;x| z%HK2MrP07{RQ7M z{F44J>5Jtjwht6A`~+YH48Nwo?{&lYi}60<=SSOv6)=3y@P}82_l~D8mft|OBERWq zHU5PDedvqjC$9c_`A_M8mcCei8u^})fAZIm%a!!S@_m0JzGwI;{lCx`%lGl%dxoFW z-{;`a|6=(*-g@!J^pBx0mha=O7r&x^C;DRfv*OqEA4p#;zlr+aGul7?Tj>86Du434 zetJ#tKSWON5Uljrpp z7K8tE`eOM>6yG!AC-i?xUp%j$(f^C`C(EDJe`r>*0a$|`9c>3ab{n2j0ujq^ACkvr~ zk-ul;Kc@e2`eM|_`sMozzGwI?{m~6V|B2=Mc-||Gq|FEZ_GR^7oARDgEEl z7t61s{5^O1)8BMB=RaA#kGEd@;ntA<{`AH2eSg9C+~rUIF#0KZUVp^;FQ6}$KaSe( z8SxwX2OkmIFP87~T`&KZ{;~AM@@Mwn?xFu~OMgg~KP!I9`gf);mhan({5>CST+#nN zeX;xkFRb7RzGwK!Fy#MB`eM|_`a7%rBl^c48Twx=e`NbW0VBR=#INX|NM9^}*x9ST zXZSV!%jt{dr;+a&eoOz?^u_YWk?$G)Xd9288?yam`99u?ZS)MkVEvT7SpG1I?-_nc z|Hbsh^2a;E4#0@-8UDh(L;e@g7t61s`!}B9*LmQT%b_ zdxoFiFXVqq`eMZ&M!skGWBRYAFP5K1zGwIq{hGd5eiiwi;b&)s{QpW{EI)~S&t3cJ zAAaM|e>qvc&v(T(dWK)J{=d){%lGl%dxl@re=>csd>?PU_$~dn(HF~a7D55T_l)?} z{X_pv=!@kiLI1n!PecD|`eOOB@}JT_;%Lraviw=`hYtw(pGaRUe^&gA{#o?J^ZH}@ zHGT2CentP&^u_XLwZEZ%1%0vnVKjc8G5!w@7KYnD${~G#Y`99u? zZS)MkqMxK;{)y#}qWGTSPwC&5zF2+}`JUm|9epwC zjY-$d)D=Pv*Af`1$OQ?h)YFWT?9%l|3Czc2lg zEZ_GRe9!Rfrw9M}^u_Y)sQ)~}&z}+ex6l{MAK`@+JR!d4F8(uvf2HD+=k*t!9sK=| z4gD{czYz7mXT)E4Uhr=vpDaJe3oCd+{+{9I&kz2i>5EYx$A50$C_DXt9m8+vzlFY7 ze(LHYzGwJT`d88y%O6I*XZQ;*2>Bm)Q}!QOejE9o;oDz-?Ame$eX)F>?|S(UUl{zC z&==3^XY{{JUo79Z7x6tK{}KJoH{<$AmS05e_Y8l+`nRDkmOrcg3oi=ozaxF|ynagm zEc#;kzP&59(KGVT=s$(NSbh?<-!uH2{^j(=@|(!_3_m$Pw14@y(EnojKHduIyZyn> z=$}bnEZ@h2?-~9=8REZ?zF2-@RZzg|#ZTyeT=|pb&l>*`>wk^DSiT=G#P^K+bNWA} zFP5Jnc`IP}8Ndn{entOk`eM94&-F_~|3)_t<0qD%*?v&K>&0Jqap?aO=!@mg>c5o! zW9f_KFGTnMJfr>TOG5mQ$|uXukh~S}dijr8|L63@@@M5=(ckwLq5s7469l)S_(?~r zo0FP5J~`FlqG8U2^j7t5cO|Cs(~=!@s|EBb$=FP87~#r*Ny z^*{aHZ^iy6%WoD!0mJtUzj%4*znjq)%TI#-cjtda|JC%x@@Mtmg#IP;#qz5tzGvh= zenrUt*0Dg8gw7tiY_ zuMh3tc0%Ysv3x(@(SM%Ne<}SV>5JtT3!#AFdxl@rKaIXv{;d9Q=|6|QSbh@1|K0h& z@P^R-_tF>7>nHTTL|-g_R{kUUKc_F2@B4eb{?F;}c48PmvHT`#zi0G+^2X5qf1odx zKQn*&r_djf@x1H4-ge*Uce9!Q6)_($hv3wtI#Ws3|U(kOkeet}0 zMgPO}#q;_N{jbv(%P*Eg2Y`{kXXKx~GxYx-=!@n1_O93doc{Kcc>Iy&&zip_>)(OC zSpKZ|HT^T`i{;OX-_m~`eet~h@Li$*-cMgVubrd(bnZ9^lfB5b& zf3}|-#!o!2pVGfMeX)E$-Yd4z^U=l`{WIx{<)_j7@eF@V{~7ef@_oGZ;urM)gT7e4 zj|bl~;@9-Aq%W2~j`H^mKdD3iA9bhD|6=*G=8ydgDBZDjJbkhJadiLDbC>^nga0P_ zHCeuI?|SWTS^ul_#qx(y`#mH6l>RmJ#qzVr_Y6OMU&#N69ijik@^ieff+ytf8Gd%eULxUBMH4&+zjPg#5onUyS*0jQ)G+i{;Pi z{}KKFp)Zy{EB}IidS~_@S^li}CF`F}Uo3xC{D%Hp>5J#}r}QWE#qww6zwnVTet)7b zmha~q=8tF0pNxJo3jHUR@8{ck^RN17h<|7LV)?WBZ$kg^^u_XLwZEl*A$_s@S@DM- z3;BPQzF7XO_zC^Nzl8o1%byj0ME^MYV)?V;=ky;;Uo3xC{F45^(-+I16~ChYdHQ1c zv*J(a|B=2}{;c>d{TtjR^uJjCtoXx^hw;A$eX;ym@e}&br7xC0EB=W72kDFD&x)VZ z{}Fw${8{l!`g`9s^q*M%toRlE+tU}zpA~;X|55bC@@K_w>A#M?SpKZ|!;8cCUrJvr ze^&g2{vYX!=k-(ihuD<5Jvh zia(|QHTq)tv*IV0gz?|{uc80M@@K_Q>ED6ASpKZ|IsGTo7t5a&e@y><^u_XL#jogJ zL0>F?R{Wa&hSNg-iRI6V-_n0DeX;z+)^QXt*8c=x1&sB7;gezfUO-=rx3K;v_KgBw z&rj&r^u_XL-GPH{-@}R<0kGrq5sA5XT{Ix@1QT1KP&!-{uAko zEHB z%%Ab+L;SbW7t5cOe?`BgFP1+m|C;{(_YUnB%g+`u`&Z|`XXHQqQpo>F^u_XL<)8dl z@ZUyXEPq!1DgDdni{%%1;qv#4{Od1=_{W{e_LJq$%D-j(F@5p8zWrYX-P-aN`r>*0 zjQ;oNi|6(2pV#l=@0Ex4i{;Pi|APJ<=!@mg>c5))bLora&x+sBzm&dM{;c>@`q$7G z%byj0;VYs4j=c}p53>AO@l)16lfGE~toZg%-go2oeEMSfv*M5Gzk|M5e$yR2tH-}* z96#w-L;TMxfAYNkl=Xi?Uo3xC{>j%u{C)2m`d>V+Kcas}`eOOB`ah@tB>H0cv+^(L zzn8vP{;c>F{j2DU<rLjQ^7&x+sD-$7rz(~r)7L&umu)31l|`_lbGe6jpG zntz_*SC<8U^nl=t<@@=%VjDff&%Y7;F@3T8S?wRw{~&#_{4C1fGve3uzeiszKaG6P z@LT$e4-D-W%lGlne$Vie%R~DU`r>*0oc`_Ui{<-#5#KZ7m-Nr1FP1-w+V2^DOaEN8 zpDh1rkuQFk)j!OxZGKq(W4C_3m3%e%W8^I_4)0IM*CGFqd{gqDj1$Jf)Ab*;mTwyI z?IJ!k;`>JYh=`vU@rxpUeZ(J%_;V3o5%DzQjSpVio?{}uYs8O<_%#uKHR25qS-bz^ zBYu3uuZsBN5nmPYJ`Y{H|9_77ff2tX;*UoB!-%&$Z0-JU67l^aeo@5li}=cjw>*69 z{%;oX10sHT#2=0LR}mllh_(B_eZ-H5_*D`AXT(2^c&|rB`;YkH5x+d*&qe&Jhz}aC z-T!G3KRe=gM*OXaH$7_Y{*H_Iq=@ek@k1g$*Z8pAZT)-N3Eg`0vgrNSNBr)HKNfKt z@zoI@^yszu-#p^GM|}T?pAhkLB7RN8?~VBL5&tOSzeRkVv)AT(bi^k_{I3y@BmTFD zKOFIu5%2z(web&+IE(n65kE8Hiz5DP#NUhfml5yw*tPi_8u1AcKQ!W}Mf}!?KOFIQ zB3^#n+W6Or_$CqWi1FA4&QTGvePxeBCFm&F_?m&y4tS5x+3vw?+KXh`$=~Pa^J}yEdQeMEs8t-y`C4A}%9- zSH%An@oyvE|4D1}xn0D0#7~d-eGy+3@oysD>&a{5-7@0)MEs(N-xu)}5%d|bp2iTDi>e=6eNM|@PVHr^Q#zck`cM*PQ!)2FW8 z-@_t)XT(=Tyyw%_`lm$vgoxiB@uwpGX2d^;_*opC9o%BEBTz%On0}#D9u-@Qk(X+dbm#5g!`yF%jQ0;%7ws_K3d`@wR8K&F8KW zKQZFhNBq@@7oW9uf5%3gNBrW5FOK*Z5&tpb{!7|I+a{!~L(<+WUvv z{>0cdettXVKESwt<+;26ME?u)TeAEt@;$>(z7^vCjlNj^F!DXaPwA&G3i*rW=aKIj zeo6l<`eON6rcq5oF;V);Jaif#1V<^S!_{wtL~d0xL{{X@?W?H9{07D53dzGuWA zeka7g2Ys>pCg|N~cKDv*Pw4*}eX;yesnToK}5OkXU&j(pEueEPpoe6svutS zvVKzX{&D1&k?$G)_`4zhQ|XHpe;oOqyZH29s`zC2qsaFRKmA^a|3&&@`3+uJ!PAO8 zc!oc1gTM8~q5Wdi$MK)pH;VkMqrhGKD}(<}^i#6@p{tMhp5bS#|3La;`Bn7)Cwqq9 zUKQe3^u_Xrk?$G)^jE?ElG;y}-$wa+hCi7GfA@b2{U?^6MZRbF!(Rvgmh{E)i^%s3 zzodU3`eOMhURc4?iamIS-~1-Te-V8#>SO%!*2jq!0^l8 zhWLY*aQ!0VeZG_?{7eLVrqMEPoXFp5Z5d3h}qUH1wZXejE9o;V=9-_@~ep%OB!} z6+9t-&+v!;8~i8J7o$G@*;^)HI=>m$Br_~q3h|Hsf5D}EZq_YA+Ge*t~5{Bh)ahM)d5#GlX?%lG-Nm;Z$R zU+9bFcLQfRfZ=;a{K?-!{NrBE^^Yw7R8vsod*0Rc>w|26X9cx;e7x}k2EB!QWLKT3 z{dMiXCd41UBE(P0ia+E&6yG!ajP-9%Uo1b5e9!PJ`cI)RmhZ=F#Ws3|KV0Z{ee+TJ zV)h*Jc{ob{*?9KM_(*IjeO7W zlYYqmO8Vk?{Sp0*uL|uK%P*q%o)LdSe+PZBe4p=%ZS)L(VG#0v27R&oJc{obeop_R z^u_Y+M~+>CC9L;M6_1q^>-G4%f}=!@|d{IPwbfZ=n}fgq1)=}M@_l<(Y@=uRCH>pc z7t8n8+weWZZ?=T^XVVwUZ}Gwkp5S|iU+o_JOX!PHALEzWH;R1E@F(%{PYgNZ|RHWS9oCsPl)ds z{^X?KpY*zrzZmt=e}#Rc$S*ny41aXT;6IMOSbmKcR^*F6ZT0c{R~dhQ3h(b~J-XcL zpVjRtJp9;rz4d6}P9dKsR-rv&<>Tis`olBYGp7G0`eOM*<^YE88Gb?ki}c0v)5!M> zzo!3J`eON`$oC9?VMl2HDHpQ+Wcf+tdxoE|{<-wU^2d?y8GcFswe-dE)5!M>zoGwe z`eOO}M84-;&7WV}{`~w|e*OCMr)B&%+xv%FP_g3s_O94Q&&YptO6dQVzF2-1r`zeBWR2J;N{PAM)l9Uo3wdwcj)RDgB4h7t2p0-*cD$DD?k_=qF_PN#uKmpRxYc z^u_Xrk?$G)i2g0!65218@AF-;jh^8b^dCT9Jg;BVe>Huv{5;CvGvW{bCG_8A^u_X% z$oC9CrGKlphW3l+^+)tyLtiX^62Fo{|4V`O_E6Pb1$m{Dr%Q{(B^SvHTMv-}A28 z{~p_)Z~vE#*K7ZX@t^P?JbuWE|9~jI=Uv7Bg6+@8|BCT?@f*gw_d7y-vEmP-_@2A| zr++T}NtC~@zhXP}48LXlSI`&F8-GgwBKl(aqbPsRh@agpjQ@nbcwWDxKX_;8Ke7BK ziticmN2iAPN6;6`FC*V`*MIa+q~DU~^~ZM)@z0_!mcOtV5&*B@!7<{GPY?dT$tTNi zg1+sn)Bgs2vHUvnJ;NW~E5z@=D~z95{wVT2ck$_8kA6;; z@8hl5M$cXRGeZ0e6rU_VjpBQTpRxY$=!@kik?*<7pZ>w`4(-pQ_`}He41dh}H={3B z{5JAE!ynx{wEwR3#qyKL_uR#&Uno9VelrL=0I%4CXZY!TL;Q-qSpFpPJ;S#}wVT_Y zr7xCWh44G)zi0Rr{U6g8&+BIo4DpxhFn(hBWt6{X#GgDQ_}8T`mVa!Nzvo?@e{OC2 z^XH$Fjn_N>3?CZeU&;7l#Xlp8?|E18hwoV%|GLKO#UC^NMfU!o7F4YGe!j2RM$hQK zg8mQai|6%A`uo2(#23p?qxO47{D%IW=!@s|r}UppUo3wV#rKT(*~7y4y_ddN{xI@A z!ynQAF@5p8eolY?_i_Cq&+Cs_|DWiK<&UHMJtO~?{^RJ2<&PrYGyL@7q5r-`Uo1a~ ze9v9~(H~wE+CL)C>yKIgZuG_T`X&8m&==3^*YrO?Uo7AE*NScQjP@@)BJ|%O?+@)4 z&+CuqKZm|}UcaLM3;JUDc{F~WyZj#+^1s&ym_K=5KWF{V(HG12{k2~I)%1`1V2CfC z*IyWi{9jLBJg+~Zf7pjOf64Ru73;rDeet}0rT8BW@x}A{Q~Fc-;(7h- z?9l#)eJsQm&+C`;FQYG(?~ivJf1WXaru1+3@ep4uf7blT9uxAf>5J#}OZw@>A-;HC zzoq{I`r>*0^syoTtLcm9^$Yrs|3t`NJg+~Y|1sV)=f)uQ&f2`Y)g_mOpF$4<8@$-}uQ8Up%j$ z(|;0u@w|Rb|CjW|^ZE-<2>Fjb74jF)>yPMPOkX^&U(rAG(;>ciUVlpe<@Ck#`q>jh z`?q{1#23%&m-HV)Up%kh(*Fg0@w|R|ZpivP-}A2Gf5rCa<6mXGUi^jgLjOPS(hy&)_!IuZ0T}J~jQ*Rv zB>3N;FP87e8@^}wE&T(&7~+fNPowyrch&y;+Wvg|$HwcmfAY4F|MHhYe6ivuQU7~J z{!{ulr!SW8+q+)-7v3J?KbXFFUVljcCG^GeeZGkA8TqI5KTcmfuRo&yEBa#jv)Z52 zzwUp9{uj%?U)2AecQyWZxBdC?f1vTYzSM%qYR^QK`R~cjeoEH5)aPh9t z{#$(|%pbAxFQWWCqyHA(9sI}87t7Bg-!uG-{s-ub<+qXV8GcfS_`jtup4VS^Pw z?-}{GtbZPT@w|Ti{t*9licgk5isE}l{F?PYMqey{82O&zH}ro?Uo79pL;rh*Km0(* zf6IS|{u9f;LlochuEy_h+n*o5n;Ne>evJQF#?Q%$Uq$gfBmadDhWz*cI_EE0zV9!z z-*eY~)<2W}F!GZqzGwI;>t94)toY-|_YA+H{}cLR`Dx^PhCiXd-({iwV);Jb72D_; z{*?Y5>5Ju$qWGTSXCDgv|4RB|`E}%b?&8z`zT%VR``?#E{+@R=|MvLC+WEJS@p|)b z_~DR$W$zzq`xh&|?=QsnjQmsjAEYmqKaAS%8Gc6pi}c0w`Xl;R(HGC_=kzyR9@;OK zpGEn5M*bE38`Brh>$mhzr!SVDMDaZ%{=!GX_?<&vEPrd{d*0Rjd716cuV1e*UU&X5 z{t@5g{2?oT8pZeAjX&$3LO=UI`eW9AB7L#q``_1Cv5lS)KfO5g-@E9G<+oA(p5YHa z5&SFEezJT&-x1$4{Dk$dp)Zy{-53%8!}r|9|6GWF+_%{OWcgXp7vy_}KVtn6eX;yD z@;$>(KOf?sMPDp`iWgS!)aCCOesXE>pHE+mYKPjlpD*w|!ynPFl|Na2WBWh>!*2jq z!0?A(4Dr89UySz=Kfwztc!KX4e)^^0Z~1oUe=+LAAK5pGe9!O;`bW_h@ARX84`SpP z{^Y+y{L|@+xKv+0ZF4cS^%Wv?)3Z7Q%!882!N5OwSeKG2H^B1xe`AJ8C;V=9+`0t`GmfyPii0`?JPyaH- zC(F+w-!uH=Cn5edYCl>22rsPQ3GqF{A72&xW3C9}Cq{j=zlg@)GyLh#g8vBmV)?o4 z0|kuuIlu}S{^;kyKcBuB?<4+j(H^XT;d_Rk|0?(w(-+HcAzP8(cC;Eln+AW+?}qk^ z<&Rx`#P^K&HT{gfSiX-3-!uI3*CGBh>5JvtuSawR+{Jecf8qDRzm&dMe%0Bl?e`47 zqW=f_V)?_!_YA+LzxjKi|HSe~k?*<7{|_Pmo6=t(%TJfW4!|q+;2D1Um*78uzF7Xy z^%s24@Uy=K|3B!9<)=~pp5c$_e}leQei_C041b}&*v-vNZRkI-{49#^xyzsajp=7( z`3YWF!PAO8c!r-3Li~Hu7o&c6{6n@PzvyW7_-W}sj=ora5JvJ zcwq%k@IAvXwg&&_^u?%;{1d#ef+zT%yZE~YfBTi8|0}ZmG+O^W!=KoKgt}j$FP5L! zdnn*8en+eQH>H0yeX)EW558x_PxcD&o9~DG#q;{3eS*LF2f-K1AG>@J-!tMj^be*l zmfzxq6+FTB48Phh#6O+B81*rJO?3QwhMyl4{CCh7%OBc4P{4@q8UC357wL=TPonYn z3_nXk{GZYn%TMsa3Z4+(GyME|!QbzPq5s9GkM@u8!U~??dxk$bB>1D8IQSg7H_+AI{hr~M^v|a+mY+qwXZREP@1-x6pD%_TfLH9nGyL=)L;l~PFP1-ve9!O~ZX5iK zKMwsbmY+ub=edi2eDLo?KPAf_h4gpMAJ6a$)_)*E{-IZe{uj$Hy6ji;_YA+Le^>fq`F_1!v5lVL4^Ip6A4Xp+ zf5aP}VECTl=MM<}+vtnsXUm}h@;$?^9v1xnqA!*|YyM8@|BSwPUO#(yh`;@(q5sA5 zCtKF$@44&0Ck8*KKP1cd^9}vy8Gge0kEbt|pNH@}=dWk@1^rjh7t1fB_1ANk|5HN# zA6Ncl`Ppu3+wU3v=sCf^jJ{ZY5#{e0{)GPD=!@mg8vo?EA^yQX3*#r2Uq_!mJa_S} zLs0jQ^e1Hb6TGm3rxknf48Quf;6H@E81=FKG5Jv(wht6A;^zP>VE9w|zoIY3`-q?0Hwt(?fAs1Qe~+Js{uj${AzP8(cC;El zeNFIF`eOODtB?4ek$+47Ui8KC%gFZ(e|$lR|2X<$`E9iRdxk%%g5Rk9WckA=zGwJ3 z>t9J5Jw2{(|or{^*RrJO3$9Q1{Psrah{K@x&{|)+L)JOhhl)vXL{*Qvc{dXb%oGd@V z3oCd+e9!QU9|!*o`eM|dC;srK!LR6x<@@(jNk z27d>Av3#E|;(LZa*%ti!(HG0FEe8}Ze9!QUJ%j&L`eONhyx@E8;?sYf;*;gKcwq%k z@IAw?_YU#@o4y$J(SN@FdVaZY@DKkpkAJfKI$A$GBYw6$_z$EnmOr!{P{4@q8UBd= zv*?TEPda z&y(OknZ8*5tnteZ3I3;*KUsc;7gq4JVh^4Xzqo$ze@|bG`j|f>`$m!P8UBR+4gM1P zPb|M&T00;?);-d{A=Ws<@@tJe9!Qcql16q)nWX^^8I=V z-!uHtF~NT_eX;y;bo_aS-`phlU!*UV@7H_8_Y6NdF8F)>mHCt9w|K#BgYOys!YzV- zDt)nh-(L8h;itC@{`vI9JN;<=NFBq^Zyo$U&=<@1^A+(u!=KPU@NYc+$nt$W_@3b} z{8Na3fBItil~q9j!><5V!0;>jZ>BHC``!5)m92o`=Kw35Jw2>*X%KTaV!n?-=sGq5V%G-QV9J%lG{S-!uH_$-y7f z7t5czcLZ|@xZuhJLG_s2VY&+xOm27h}m)U_Y6OKbcla7eX)EWZ@u^<`ZpYe@e|9> zqWGQ>zodUx`eOOB;#c$^PG2nF$3y;}5x=GXLi*x){p9S>fA6I)mY+m_f5tQ7XXgh0 zyY$8KXSIJs{~G#Y`9-vTc}D!n(?a}oF^r#BzVEN~`fvF3;NOG3SpIk+6fk_xh+oiu zHhr=D0xzuK3BG6e3(pMk|4d(uw{ZST>>C9PKLJ<)!%yfRv=rJe#{2O7^%{K7@JG*L z`{|42x6%2_GyL@V!G8yRvHT1#tl$apJ;NWrAo$;*FGhXj@9)>b_YA){Kls;M4(%7q zpG51IXZWL+1pg8A#qyJ={hqu0UlIKG(I1oLkE{(SVC3%^e#82g(ih9O|6aQ*c!Ix^ zH|*a1e?l*v^WQVr$LgOIcGW%ZZ@k{$N38xmwC6&5AJ;=-#K(9foxR!~&s}@yUrN6r z%O6I*XZRD=|2=*2ynajnIvYd&V)=O#-!tN8uL|uyiN09A&llt28UBd=!|99V`*`p@ z!>{STg1%V3kGEd@hW;1mi{%#!p@89gM*Qs6q5Z#7`^oZW#UHW$*4;w?i{f1da`{mbZ!<>$5^6folF04w0G{q#5Q&i0e#C#Y;ie$vsZ-?Dy2Uo1a& z_1BA^T^QPbE`725S@VBH|1I>z^ZGgcZ_^jc_w7agp3#2={loVN{U@H+ujoIDzF2+} z^`B?N&tD(+ zqA#A;Pw1adUo3wd#rNFxKmE_sFUj)L$oJg!KkNU2eiQkl$oJf}|4pI)ZnS6U{~=lN zhmr3Ye!}|qr7xb>PwBsczIa|gqyH)TV)^4Jf6vIjrhg56v3!5NTd|Fv;Wuv%{dfFc zq5s74t0=x_`1xCce;$3Y{5tYI!ympi_!rX`%g-X;GyD<#KhPJ;A4R@r_!a#d?H$@L zp4Xq!zaM?E{4|R18S#_1h4x=aUo3wZ`JUmY^uJDDEPoXFp5Yhtx9k(zFP87)t=LA- z@Jsr)pf8r6Me#kupU{64eX;x`@;$?!(tizov3#HJdigKBJ@o&V>5Jw2>t*EF@pGLlC_&NRM{n>uLic{gVEx=!@moQGCycpM50c z{{i~qdHpHZS%3Ef!uX5jk0ReQ{FeSv^u_Xh zf34U?&t3eFh5X;7_+hW-=F zucQ1u!!JG_+Mm!D%WopzGyLr0;GaxiEZ^t5Uj8HcWBOwGSrp$h;+OQFPhTv56#1Uv zxAZ?wUo5|he9!QUPlWb=mA+Vh68WCtSM+~MUp%kh(BJDiVf@ANvnal2#K%7vgQpwQ z7t5bDena|qpf8r6*uGJ~EB258tbh?erT;+sV!V(0Z>fEwfZ=7X!vV)+RgZv~9@CjcwpuKn~+r=OGYKKjqkcle&+ z*R20$`eOM*+Xo65zGwIi{g2TX%lGlti$DByX#bV;#qtxpu!1M}o)JI&Oz^L!FGhW| zKeKNX`B_J+{Wqq+-*rR(i{&S-eiz>{;+OP~qc4`*`eBa;jJ;N{PZ%#u0i{+I`zFP4A($oIUf&;L)h{hdV@Pv;x2_xZnK{3EXy+Ami8TSxId z?<)R1ZGS%gdB*F-ZyEpCLqdG9;uleT&*;DWyP^L|`eOM_snd@uOFr!SU&yU6#v ztM(sv{k82s(RjV~j~V~F_CD^vh!wwx;(JE^Q~FyD4Zc`@cjB>qfLHKHmtpcwWDvf6xth z{E+1jqyF=Z_SdYxLSHPuhV#85~j6Gh}ODN%_jgh&&L5JNweex->b5mOPR z!%&h+jYv6^|9w5*>)QL;_iO&s{5-GM+G~B*dfxNB@8_Ad_S%PbZ=zSrH!8i@d&BqX zKSi&W_dhSI=HmnDz$^H{-Ld|ipT*}dTfSlE!+XPz?+L%mM&Z@+Z465X8orH42O7S- zH~cR2YJ42`uS_pE(C{T99ccJ2{gL!)d>r1d7rZz8fc|WHwR|T%1`ag5H+=EuSpTi` zYWV^<9r8t0i`QS$ue)(vKefECciQ?p^!wAR=k z?eq`4;@lH8pDjPmyf=LLm+&{ytL2N#dsp-6SJ{;NXUjJ-?+xGM`Fql<<$Yc=z0(_h zKz}^FdR{-G{|UW%UO%CKlwK`g-JEm{&{)4W)<1b5uKzik#r0Fm`+leGzy8( z`}KzR#{80g&F92?wftkvZ_~e?UM=tQrp@osf0kY?Kgs?*M{lgZ`v{-E^lJIXnm?dl zvl07O%lFbP!-2;7y{qf@Xv{y7zGTa{fzu)1t|}V7&+{*$SIc+pe9ZTTFa8trAEH;w zKi2+R^e@;v_OF(2XY;)=e?WgIy?S0>uPt9)o7?Es@{hItlKv@M@cGM@_v_56AI3zmHTY?6A~ z^QX34tp5k;<9Pn4HNTb3_s0HP^iS9_yjs4Vd2jeO{nqqq`7-m~@O}C&y;{DLd2jgo z^0EJK(yQn7UHbdz)$;vpzBlF>2 zdbNB#^WN~am16#h^lJGs^WN3^>95oJ+44o^z2VzD{}Fn%d@u9f)&A+9y>(o_Nj86y zd2jgf%CY}_>D8J)%DgxHV3qJ6p;yayGw%)GST+2G^lJG*=Dn-+(?6{Bv*p`M#{;07 z=?8E4a`l-1qHXy6W6O`T`QGrw6T+WCua<9R-W$F{e!+6Y`vvcf`Ni6?{?qBz@?#872O55iNCz6e_N4GP z(5vwwtiPLHaG>G4h;*RgyYyRZAM01+c3&^6jb?&mYo% zpI$w$FP;+fSKA@hub$U;=}UUGyg%Que{WpB3H>SbYI)x;yf=Jnoml_x=+*KKyI%0# z@Ll>Rl)Qgz`C;b0;mfDS{DbM$^2KuT0BFqjhHtMI{=4*Q`9|iw;d>i~fBcTIezklV z;}<=Dyx~XmyU?rU$C>wrA3QVWpFyvduV?G`h97Pc{@?U!dH?&px?+xEd|APvgdnCPjUO%A!61`g9uQ&GZjrqmqG5-d7wR|^Qzc+lJ ze)*l^`l;mynfI>tzeUXdGJT6Zudh8f{4eR%^8IYSceQ@{m0rU2vln^1kq*3SrXTv& z@a6Mk{>$jqI1SIAc6z~qhHoR%fv)D$e_r$1@+D4AhkRMpVn62jH_)r)d;AYpC0o#Xnc=k<*j#r(bK)$-kJzBkrCpg)aXEkDk@H+=8KG5;s@ zYWaHRz2W=xkJ78Cxoq2EgVwae|E4^C2lX>rI{q#rE z_t^6F%zMN4dH(0=)${rR{blrO`Sr8;-m`u`?2hz!e*f=JJ?;LFIlueTxc+L*_v_V6 z@ASt0TMOg*pFyvdZ)EHDhVRmUk6tZb&%8H$kNy^VwY<;6`n}^`^M~30AIlr- zZ@0LAdbNB#TfaAahyDp<;%=_!%yf(^lJGc+rKw_{Z+C52k6!EjcmSmwSW2*c8mL8vgLif&Gb%h_%6?1 zK(C(H59xQLSI_Hfd-M56ub$VJ^l#Jt+4A-5`gvpjEuMcmy;|O{H?E&|b^YkSMc>Wl zce453@DrYY4ZT|P{eEG-H+*BCxPE`6SIf7u`QFv~=~sMtJb$`u`FiHP;d?xPJ$kkL zAoJev<-W20E$P+r%Q z=tpe%T6X=tD}Q*b|M~K4dB0xG^iFU1+S|h~q*u!iv*({T{P3vo2hywMyV=)&Z}{@) z@b95l%lEVE=M6umKZ{;1@B3}0cY4Fu-y8G4N3WJIv-#feE&3bj)$+Z}dspkHUv>9* z{*2l3?aX__m+y=9?@F(hFEj5A-=%*8y;{D=yf=KG{v>*}yzjS}-suhBcz>+_YI?PN zJDcwf-=nX$;`*uQ^%MFX=+*LNHs8Bi{|93IN76Ug@~zB!!*_Z97wOgW`Vsw*UM*kG z=6hrQnEqaRwft(C_n!6r`_g+X`ThHZ?rH|v+?`qBOXY;+Q``?Z0|7-dl zdtTo-Cj5$f#(cHBU$16*r#I%8^c&Et<;!gS-tb-e?da9=_3Z1XceVdxWBo_a_t^9L z{)fVUlU}{ZFB=;`SNpfd{J{y~Z=_c*@{h6p;Ys0FdPQ7+wfs_<_n!6q+cG_#|N3#~ z)YG1SqmyI)Eu62`{7!cNys`iCW8t6i%2>ZzevCKLfmgVG-ta{){2S=iIDbKUX`~k% z^4{<*`uEYR+1K@4DBL*Z+Xj)2{#Ul-U2{Ud8** z)_h+t=6hrPBc9)+SI_Im^vBby<#(-izj*)Nv-ba!^mzXKyDjy!{WngH{U5V8zy7c_ zzm?7R#{RoJ|A+Ky`9bEr;TxZb`K#^2`E2=m=Dp!dp1%{ldS2h6|1iB;zLm}Q#{540 zkLlI&oy>c~*FPEiukRcCSIajt?_KSmzDZxQ=k*<)e`TSic^|a@2NAuIi7o?$T&F5byU-b3Ed)EAAU%lk~6;n@}-{t&IrH^C2 zTJ!yWHPbu2as3ALXVa_Yi|qP&!;k2%r&r6jGVcvvoEG=*etNZhJ@el14f@BwhM&J| zd0%f6^X&29TRi`{^lJHroe%E~-=*J!UM)Y!yf=K~)3N`fwSKnzF!SE<6Q2JCdbNBn z^WN3^KNIsW*817=`ubd)B4%+Et?1L zjrl{K-=|m0k2CKL-#;_vUrVo+_j%LiPw4NXSIc+tMmq2c-W&5fXT|(yyq5Qmjq`E+ zN6Vxi(jo5+U!EO)A-!6DSn0*y8@_f<_(SN`@{P=U!#C(ppjXQeGVcvPrazxvJ+JS5 zCD#87dbPZ-x0&AQjrl|R+Uw%_tL1yy_4kHveLdzsiC!%~&i3yO-}pxOo#@r_^~`(2 zm-HQawY)!Hn(3Y1@by8=KapN7|H*8=`kZwBhRfD!Kb!N<^S_tQKah`wSJ$MT_Vf9G z>v>B%?uT0I>16Bi#(s)#$9_ITua<9Q-W$F}e<{6MzMgq+_%{9B^lEvZ*G%v9hVRj@ z_xjksTE3Od_l6(Szl&Zizh>sWXMI2R_4Igt|E@?q?f%ui6W9NZZ;17)HNTV1_s04= z^ykp4;KjC zcz*q_Nj>fQ7o30Gfw6wI=GU|Jdt?0#`rpy3b{|JB*QZ`|U%z26-3)tcYU=6hrPBl;`o z)$+s4d&Bp>8`p2EgJQl~zLj}z_%Zzl>DBV1%zMKRE{OSe)2rpT%e?oj>%Y%imc0HS zNDBU`%zMLk=%0Q_%vaCr$MomXtL2MqzIV0$ zi(>uj9vbs&Ya z%zMvT|Eh;Ax&Ad$Ph0%ed3`~D4!wF_-=M#gUOlfb>2IZ1&+A+COLyY_sps`=`Zej*@b7#^qbPF z<^6t7yZ=4dR{-G--TW+U*e5);1%}ojrsK- z@%quLasGnz;{QJmc=fUAeEfR+t~q}_ep)*J!1Q=J2C1k0d{}TjuX;yZ54G0Q;RB$t z9&hZYNBmAtJvf*cazpzI-->=VG zQct@+jjLjPD<8?{3tQ{!W$W|C{)Rk%XL_~#OS3=!_MWx=ccjPj^&gdb+WPB1jrA}6 z&RD-%^UG}g-qrn~UqIht%hxmS4d3SZ2hgkK+nM*St{?qb^uuia1P_!BylSQ&yx|Ae z#QyK0SL6Hz>7|ukaL9YZ*M1&;<9EgNQ_Bx3z1VwK^XU(!AF$;cnfHbt^Zc{v)$&E= zy{q;ABG!ME*3XtNGw%&w^8DISv46F^@3)!W=?y=j-;G`^@B4-KhA&33{&&->=k+c6 z^XS#`zF*Au#{3@rFX`3t-C7)IcyIXnwXyyO=+*L_%zMLk=~sVuTz|EEFZ15j{Oe-= z4)k@ld^h|0;|<^YW%v{5)$*fkzBhdPSK%+DSIf6D?+rhozm;AsKhDMW_qVL{D9|wlwK`A$oB7D&A&P3 zU#a#qvQIk<$Yc=z0(_hK)*h{THfcud&7_Ex20Fl z>+83~^*e-KJ+Ck6zeKN=pR5=c5RLVFWBrZ0V*YLPYWaS4{k`Ew^u>GQ`m5zz*`I%T z!x#6){C(-w^68IrssoMndsp)x2!D>|v*nB6i+=v~hM(~Ko9NZ@t;~DFmw%1<&v;+# zUoG$Ruzqj&HvJy-YWZF^-@95r{d?#qZ258Kz2QfHi}inlUcJcUjdb7@)<3p}AN)Q1 zjr3}qhVOs;`z3g9`2NG;7rdXJzijzYdJG(BcyIX5Kf>=xua<9Bda?J0AJQL1ua@_( z_n7Yu-~V^a|BlwrmTzS9z2QeZ|5x;C`F`fT;X9AS{71Eaw!H5b>-UBq^8EEb5Z7NV z?_clXy{q}P6{>sl8u|`feweM_8@{nr_!H>W^1aM^SL>(0KzdxOi-!I#ZzaMl8dmr|f*$1&NWcS!tv;T*E3;Q?h3Hybg zj^BS;=Gd6`O7>dpqu3jd2R4&&(za?f2X@aT%W(DkK@m?)Ve-B zJ_Z{1*BjTjzG3*Sj|;Ds@8gYh;1#?#{NS145207%e0+WEq!%3W-tfh-)$*;( zd&9Tr_oG+KH@IMQGyUKV-`zLnzmHxmKg{NP!xVr53VOACBb)Dy`4jqePK^7fmiP5G(>uN4`$xq3 zKTWS*lJ3XF%{oFD&zJ9(Y`}>^3561kTa=u#g{rQ6V-dKO{ z*zoI}9P3xhmsor{(C{T99ccIw{eJXnd>q%`=S`d6KQ88VCevr-ghOd1z=0B+y*H0~9&%8H$oqkJtwS19zZ}I?@tA)dy&C7^ z>rathaG>D}L^{y$CH?*MYJ42NmtJt7;l1HU^edeb_g_7)Z}(#T&!kt&`|}0!y)nN- z{~~&|{5bph*Bid|$(Vl-y;{D&=F@@3`~r~ z8L|E*eZiK0LiY9Bd)Ch%?@f<)V0Go=hhFMwKYx^G#r(}a5&KtbewUAd#`?Xn{vrMQ z>DBUO=Dp!-UyS)z(5vMenfHco(Ep2GE$=_yV*TE;uHSP$x#aa*n0ngvYjOTP>EjF1 zmSj-RF;KYCox2R|3=_|AZ~yO7{#0x|x3P#{BY| z;SZ-*%Qq^$*n7iw=)Xa)mM=5!4L_h?;R~^TwR|`8-tdiY#rhAUSI_GQ^xxEc_Po9^ zi23WD8S7Wex3l$oWBon)H_)r)hne?=Z+$!FpGB{hFEj65&8PpJ=CkG7nfHdD@ca$> zeEwzL=QY#$-tdj@#QKk*S8INm{r_XU;X48YW)|-{9n*F*z%q97&y?F?+xGQ`Oo=c%va0%=Nr5?{D}TwdbNCk;psrb7l?GA z;V1Ox(yQ@t?BC~2n_v8I?EemWwR|r<1`ag5H|7uMU-qTgzgoVIH`0Mu@ZRvlOJe@} z>D4%Yp7l@Y@1j@BcQ8C1Xw3J<{Pv|W|5;y-^{eGe;B?5BRYk-1>5rsW%NKS&=6k~r z>3=}4mTzR<8-7B+(%G?o^}N3Le(Zl=dbNC!{d&|J^UKS_e}Y~uUuNs~hVRl}L$8*f zWZoOT^Mjbb`Z=+GwS19zZ}=Yle)MYjPUgMgYd?(nr_ihAH_W{EtnVj(njY^!TDS^D9H8}sguf+bi+*Y=3hWxXD{;E*YA!seD~_`PyZI5zijz-_WheT{P-8)KS{5a_vb6t?_I5b z6#iQJI$Pea7rZxokLNcAv3|9DFT4KU@Wr(;|8w+ed7n3JexLppdbNB%o9~VJ<#jQ? z_3c={TE3lmZ}>j_r|H%5!_0fbx37=+zoA#lmznpj=F>mrJF)&gTfUunZ}{3TV}6@n zE#Jz#H++l!yYy=LUiRP1c*BoxiuoI#AM01k7ukI8YW=?r|7rRfTi*ZvKr_A58@_jI z_~L)~{AJ4zv-#fet=qyMN3WJ|WZoOTOMf}NTE57F@IXv*mqWGriLre#G;4 zpjXR}viaWC{Bi96YnsoN_g`;dzBl~fcj0fNSIhf);l1I<^e?}F&mXpYCtJTaeCziy z|Ks#(`7-m~@ICrl>DBT@=Dpzu^qXE7>sQPBew*o?-tc4kqv+N1`ugp$|EuWL@_qaH z3iG|I_1_tO*^9V-w!B|2cyIU#&oAlK@{{cPdBczY81s*(SIhhL#(Z!1+FjwVr&r5& zviaWd9r~5O7yDPs`>!`J-+R{gKMT|2`L92YOg-)UpFZbra&gR8Ykoajzcf{!rmm>4t@CDC5oL;T@zFu5EZ}+`@fi8t@-WDd&3Xt8<)m>wR|J<-tc4kqv_T1{_BlqdZ+iS=ikrL zsM?3rrG+vXU+dudOV;1`P9?qcQ}8G%VNG-^Xu7sZ(P4F z{Tt}j^ZFkB@$~9>eV_h2^lEv(-?)F?SpSIrPI|Sx?-$-1eoVjmFs`3kp8vUa4Gr%- z>;CPS9?$RJ>r+p=e-qAM|GcsO^4@ser3GWE32pAP3Qb!E(7)M?## z{&uqUdt?1$`lryVwf=GDz2S#{iRR4!`J^B>%Wd(E${Q-z2OV``{>p4`UZXdM{)nv^ZJs0GkW#BzD2(W zy?S2XrhgZ`TE3OtKW|*W0sSZF)${t=-{SuLj9x9@$>w`weuw@+dbPZ-7x&*Aen`L0 zkK_KS<(t`j?^$0zo}V7izka+p^|Y@a^#^1BH*vmN^BdWGZ>+zhU-hb3zgnLEIcfDZ z7W?;}wf^nX?S8IMNo9~VF*Zv;&|9E<}e35x?_=5iX^lJGs^WN}n z`oGYt0a`+nBGX8L}{oPTxt_=2wZ3%9?$o`+%IDP`)B`s zRhRS6NFT@k)tX;s_rn|OAJShzua<9R-W$IDkJ$fR^lJHD=Dp$j^lOb`{c8D6=Dn-= z|BU$y>FaFyR_49o+dRKRua+@Tt57mUM=6qymxi|>6gEr&p)=j z@3)!W=?y>P`3vdQ@?|#P8@|3mtp7NAwR|h{-tcYu0liw@=VATc@O}DQ=+*M=Y`!;q z?QyaGr~WdopIW}myf=JF{|b7w{9c*&p7rzBsp;|j=dW{9)brzs|42tL2Mq|K9Ku`aS5?^4-jP!*^DU`}Zk&wR|V@ z-tc4kYw6YUjm&$)*H?=9kNZvRUoBtHyf=J7za_m|zMXk*_%8in^lJI_GVeX>`EyQs zJpcT=AoaB8&w%rHzcKc&)_mV@GriLr>mSm;k6tZbWb5~aAJd;tua;jg^WL-ee|LI3 z-~T^TPuqWe<+%T!xQX|lt@*y+Y5OmD{^j&)dEYO*H}+rBKSZyVUpL#o_pJSI_S+@* zzfJ0C`)_mpD197XKh&E4So`nLKTNNdA7|_L#{OHY#P#3c=9sUR?`GZ`enh`Jy;{D^ zyf=J()tG+_y;}aU_FvEs=+*M0Y`!<j_1Ex^UG|$ zH`ZTYJFfp~cZ65V7n%2lZ_w{Rua@s--Wz^E|1)~^yuR_ISpPwPi1n-I^#l54?&SSv z%lm$t>7CwK|A^;rM6Z^AU$%emS@-|K^mzXK{ZZ;^_rLYz*#G{2jP2>-S=MwY*<1 z?B5%{MSldnTE3Ib_l6(Rf0JG<@9V{UZ}?)JSpQx0YWX6Y?+stlKkrX*{nYdNHvRkQ z)$*fkzBlGKo*L`_1-)9no_X(T{q)P<&Gob8*UP;3tk1u#)8qN)-^)`^`~2&0-d&up z*8D~`-y7@i)31I{tY0nP%e;4W{nm}^_Y(RBTfWS^H++ZZznfk?uOHB#MX#1GviaVa zKcfFBy?S0hp`XyJ<@?!uZ_MvKEw0}h_r~>C%lrLmrgwV759zn1SIc*^`QGs5(_{Vt z^lJHb=Dp$j^rz9Q<;R)#hVK?J{|0)sd~2C_0CY3`;0-@oKm784j_aqEFN4?Qz2WN% z!f!#ZmftV)>iyIC`18o$@XsUP#=c|DKc74%o$sIDA4)y-^PB5i^}g6&hpqJ$+4{V( zzaG!ukX}8nAJ8}H)$;XhzBlF%=?|t?%Xc#G4d2)x?$62eYI&d6Oz-rDFX_KVua+;f z`QGqd`Wxug@dZy5W3*8Oq+yKMO~^WN}7p1&i#THdc$GriLr zenfv1y;{D==6l0W=s!oVmiKwn=GUGX`@e`@E#J-Ndt-i={_pf^`Bvt=tNqh&GvU`4 z_PoA$R;>Rm^lJGso9~VJZTc_JtL1&YxPIR71N#4^SIgJ4`QGqD`a9{>^6kuf!xtOH z{@4CXTtBtE{{N|HtY7`YbUwbmPUif2x@$V$zn;D(^|Y_24X)=wu1Br)bh7<;V?TZR z;(^$YTE3BaZ}<`Yi|N(!^~`(2kLeGiSIhf6Tu*QK`o?iTzC^E_Uw%z`Jiq^kq{jV!ZT9zFCY-nQ-(tR6^L@XV?~V1B z&yMT&0(!N4J=?!Ge2e}~^lJG==Dp#&^vBby<-3{phOccB>pzcPE#Jw!H++ZwR(iGk z7Mb^+b^rd69?$RJ3J*@de*@0{Li+fEG*qqm&&cL`&zk>>^mso1rvK0UG3USa?=fGk z`DHfW8`rPcG_HS-UM=6wymxi~=`W%0vgJE?BOQ3vOh0(TPd1DB|E5>t`~~Tym0obj zd&8H{3BS!lv46FEJ^S+pZ}`^c;g63T~GQG>ATr{KfjqC)EmCX^S?^3*8C!y?+rho|0TUzzLj}z_}UBN`mOlSxPEGR zU+=W_*Xb9~tK}!zeD7-hmN9=f&1cK|elg!0zTo-qp;yayv-#feefsn0)$#+pkq*4V zd~f*HRD4$NUk@Ma`nBno`d3{4MNQvGuW@L;H|F=~*P&O>JHJoAHN9Hi=VAZe zm_MR_E4^C2U9Eoc`n};BTgUY~mR>DiWZoOTMSniMTE3onZ}>L-)%5CleTV+9^lJHW zHs8Bi|2DDz_5L0Azr~jK^)}Nxy{q-}{N3r>|3}~9`R|}t&pW?Me-gb~zLD+U8|xp? zf16${Kghgywf}A7`rWGiv*q>cK{T$P`k(21{Crf*`SZ~#k1YA~(YmRp{e0Bn{O_iZ zas&)$)^-;{ni^?+xF7S*-sf^lJHj@I_yb zz2VEe+t0v7ZKgeW}=wTHfzJ_TvrTrQeEPE${Q-z2STGd(x}r-vwGGY1gmTjO(}l(y@QF=D$9h?>%e&tJ357{MV+&{Jpc^ujp|8J)E!B{9ZQS z8`rP4d#r!WWw?H}d^hvn)&1l7JJEMDudl~=JlsF^f$4lapAVYz`TWjwzF&`{Q%}1d zJicw;{!`lr#W}V*X3% z)$(QLz2V#R2h*$P^?mwJ)2roc+5Pjz{QhfW{oj{o%lGj{I`FEA^R3~_cK93V)i`ZI zdKsk8IUHzsZ}`c9;a6Wi?w?w|08WQ|QB^d2{f*%_q*u%L?R?Dlh9A)HNUxUft`HA^ zhWCbVyfx;(jb1J9&v$rl_%{8i^lJG@wtjE;)?qRKQhK#~hyUOV8uPv3hew6Ko?b2A z&*pnq>wkCnhqQjSd^_{r)qI}+lojIs4>RA*yf=LLo|wNmy;}2onfHbt(eFjCmLF!{ z-+9CLJ{chX{<(f>%s*fA*_vO^*6)q=7d-!ZdbNC! zd2jfV{yuuOywAh_z2RH*YpfL4Pc85B;Jx8H^xM*_<^A7RfcKtt{r5_b=hy%Bsd4@H z$$mZ8wjH(JYWCesi&>K|NVIWth!3f zS8IMdo9~VF*DeeH5_+}#-gqM&c!m9Y&szU+>G6F1C#Rma{`N5DKW)`mzgqJP3{QvV z7ga6(`qia>5xrWzVdrE0-q`|d?< zyJz#gXU)GXJ)Y0MKJ~QuW6pnjJ?5)5zn9JT#`Wv`AlCm4dbPa&`3|nXH+*qL_?zg} z@||qHH++wN{ndH>*z)zvd&Bp6{%h#f^ZEh(N%U&@ZZ_W=^BY&j{x7Ci%O8???^*Z% z;q-WZ|5tm$^!wlE{BNa?FGxexn(x=UncnG*_1AwC>%W6uE#Ju2?+stlul&TAua>W8 z-W$F}zb(C5-sfTc-tb-echalnTiJYX_!0dt=+*N6_oXo3d)ED1evKvX-1CW=aG>GGh;*Q<`M(JNCCz8c7dSZ`@(W`Mj<`?M& z2O7RWqyr7#r@w|?jgP~R(hCkWyf=L3uQ7kcC&&KP@~uiQ_TKPA`W@)i^5g95k9W2H zzsLNK(D&K$jcmR*{D|jYOs|&jXWqNo|3fkV0qvhH@B3}0cY4DQdH#k^iR-79A7uOY zuIB$U<{w7iVapG*^?SoN{uTaf^lJHD=Dn-+)8DD}v*pXod&AfM9rNG3PV8SjuP^EE zrdP|4viaVaUwXljdb8u6X#pQ7mtSDnO=?4@cC0uFF4SZuPPe8L4Pp4 zTE1oH!+XPb>Cd27%eOP{4L_#8gI+B^%)B>z|39(+P1lXPE#Jz#H+;El%zp>HTHe3j zHPbu2tM#uC{!*=DBW7 z^$y;V2VP;mH+*O1@Qot&ug3ZK{O{n6bl?@d zH~e^&@cYrLaXx&RUU0~lRW1JdQLGyN7J9Y(#LmZjZ_KZ+7Jl>fV*P6QPUgMgyYwf} ztK}P+_l6(P|A1aC-^Uy2z$>iZ8@{!Atp5>uHO|NN^Lg;z@Ll>Xo)P<3%NOY}aG>D} zL^{y$efmS_)%bWdKl|@x8`kinHDdi=r&r7O)8pVkV}2iz4m5mc&G2J-H9n5{gY<#} z4et$KtQCIE^<)2PdH?$k@ZQz@r-na>zQdO9XJ3E4;p-QGzKci)8ovI_n7_=1v3@l^4)50+-W$H8-;rKDukX-*gkCK_$^QOWoN{e46_(D1eAhF|}gv41r_G|&DU^!w4P=k;y+6Y16R?dOGwi`egF-^~6v zd)d#%e}D5u_OsaEW$(tmioFl}x9o%1Sl_JQkGU_Me;_u(W2KFz|9(vUg>gMDNFT@V z2deS-cs_LK(YPMoxSn156*dm9mak{t8@@;XYI^m&zEA%RdbPZ-ciQ^vTgCqWMX#RM zcj+1Jv-u`VK7U@6dfM;j)whZHx1^6( z&mXqtKi2i{^86=l%IlZ;Mz(%$Jbwl}e>Zxy=C?BM4PV-Wa`d-R{CSIajt?+rhs|1P~+zMgq+_!0eY>DBT+ z57*BdzP4Rl|COE-`&Y}iviaWdE&BcF)$)G7FyDLD{rhlwJimWuq{jW*H~ael9nRmO z5$jiLekWVMH`YItnCU#7LzirG{ zYrgMy+Wvd=BYL%biN&Ww>o2Q{#{Nh28*dl$)$)G7G2a`0O#dc&wfxZj{y4lhe1Ffl z{@2p0<;(2vLwi^A_X)rK_Obpkdy%*OVt&5=V&CvzrB}>sM>O-)~$$Z|uKA|1iB;-me$DH~ffx zza9DfW6O84>+cO;wqyO5(5vOU_V?d0-y42-Q20$=6!X>cMK<3XeoX%ndbRwy+0Q@T zv+m!`>GAyjJ)C;l{p%eP>p$zov3|AY|F_>i{3$)2&#&z?eSV+wzmz_XpFh-^-^#9^ zH?H4={tkMzd_D8t@U=r@|Id0!%vaCr>-4XsSIbZEMmq4SnSSuD<{uXG&((ake52Bf zy*GS==if)Kmj6NKy=Ogt7VNy_{o5+_wC7LlZL$7a(#LWC)SBPOe*W~X*8leK8}1Um z!Im$w=f5|6>xl60qF2kGiZ{}MSIzW;_pJSYBR!r!e}9yE+Wsd;#{5GU#`@Ko-^$kS zjrEsDh5rh@THc?pSig6*fBN6jx7hLpHlGeOe1S*@8otBxSAA)$UyYA1NH0Zt!GWIU zd-OZftLOCt`XlMp^ZF6}*XY&r`U(B5^y+zi{oQf@p15mVKlQx6LBBJ-dS2h6KZ;&0 zzf*Ph7T-VbSy<_~!OtLfG9`tuhw*6%&*`hPY(o?rj-Q%}48wWDMI z`@THZuh#rp_Wg@@b^VSF|1Ej8d^h|0?G4{OKKx3}n6H-i`-S~`!}sV*diA`%Pk#ix zTE58cpEu?Y>CdKD&+EtZH_)r+^|cSj^?Us8ynpO@eZlj$p;yoAOZvm;)${r`{aN(t zd3~4udU~~dE4zQ*xPK%1|In-F^~Fcx`ft>V>#vsg|9?E5zuvPxfA>g_=byiCO^wgr z{qo;`=lmz{5%W82&F^RX_s0I~C&c=Xq*u##GVcxFrN4|`Enlt@4}ix0z2S$a#r%KL ztK~b{*AH*_#_8c(d&d6N@}ungCvW)L8R5T4ua>VbyX5-4;p=CGU+EPwUoAg=+LGQI zesWp(L+I7=MfUaAyPAJh`1>@UEua4P*42S-rXRd#J^x*{PAM^!=kZ{E&X-SH*m_d_D8t@FV)O=+*M=%zMK(u8sY_ zaBn{U*z#rOz2Q4N|NHc6d7sxz@AR(LPrubZF@KcJ_w%Ru#&xm&@6)R_-~WGG@ZPhY zKhN8D$>+}-Q%`&Tl$`(6{bK!U&G-9-`QF%ni~baPwftl4e?Y(5t7E=ezEg_>jrrb~ zUtAy8?__$ld?WMT)%xk5`I?yDV#^nq_lEEA{4?p*@~dXvd)ED1ZT}_j-}6&XyMJBI zzc+n+K^m&oeE)tA*Uua4ul+i%-wv-0ua@_}e+TakKl)Ah574XS{d&QB!%yfhp;yoA z>o>;y+UsKd>Un*GzNA;r>s$24)2rw89r|C>tL0nS^T!+4Z%DstJNB=ZuV>!7x_|U< zrXR88{eDfoe?0%|^ppRiuiq5+?@#pVdFMCiH-3HWUp=pH(H}~$miOz8{d?p3_36){ zSI_Gw^uMK7%eS-p=Z*QT-^TS@`wg*wwY;x)>iX&Tr0=um^%I`|aeDQ7VF>tO|gEpe3^M~ z_yPTm^lJHb=Dp$TwnIn zF<&jecILfj-TyD7$MgID_0-euf1C4nd~3{CYkoJI?~V13>EBMTmLF!`8@~UC*#Fn* z)$)G5n(3Y1@DutQ=+*M|Y`!;q?ar9L++neQwR}7C-tcYu7tpKa%glSj_vw$KSIhgn zCg$1WRqOv_tp8hDKYL!^=J^w?Kl1~dhxy)^U%xBnKlN>K{nVQ8zg~s+p7s1~rpNQ= z?_Q~=J%0<%|2^lcHNTOq-y7?1(Qnm>^{eHJ%zMLk=nte<%l9+yU0uIF#r69jeVsk8 zAMpG>y;{DW&G*LqA^oNFYWank_nvkCZcLBo_wWAH)9zpW?%4k+hx7Tv*8EmB-y7?1 z^ZaY+)$+dIW_qVLe20FGx5s?-yuM5SQhK$#uNU*ZF@HpVD!p31$oB6&>-vw<6^8DNA)$;Ysd&7_DpYhI^ub$VB>G!5r%lq>M z*UuaCi@(P8@6)U0{qM`dd(XQ5H>Jn(>wjnJY1hBx{G;C$`&VoJIJ;D#g z!Itmgjdb7@*6$5Jcrg6$>D4%YL3;7~1@8?%q<@57EnlX`z=4J@5$Qm~*Zv;!*E}lr zuf~Tkf0+IGn|C$;;qYzxAzR-6ybbfc;Ya@t|519id@Y;rUHM1D|5%-QG-W$G8zc;;FzE|nR-n*K=bjwntO|DW|Q7xRCWKE5Cg9kDgPfj82DSGa%PSbuGW@SDAtpFeDT2=~98UU0~_ ztBQti^Zdi;)$(;aAM?H8JM`bASI_Ia^!L-N=k-1MP2Ly#SIZaK`n|FK0sZUg)${rh z{TJ!g@_xOhUB5B?UG(aC{e*sl_s9O#^ZMH3;`wtRy;|O{7uN5M>sQeC>DBZ4l739D zp4YeO*ZV;1Up=qyYX9_V`TzFspZC+_`RD)Tsi%GY>T&*&T|R%=nqT0Jbl_EW{jG8R z2ak{Y_W->br{VK|v-E;P-h0;9uYHeMa{b4op0@rm=fCiSv3|AY``25n-@97>in0ES z=m%{17T&P+d&AdO4!`xWF<&iT0;dCw`6VJ9X!w%;JM?ONe4ekLefp;#7xUHg`r0b7 z{?q8y^4+u!9B8b+i%16=>+jM(La)ZhvHoFt!GVS!BGQ4b_P=V(KlDSf{*o=mSgsbwYTxd?)kX@Wom&|9E<}e1SL8fmfLC4PUMuex(y*z8dG_{uk*5 z2fFfAMZ>r0kEB=2*X?|GZ}<-V&Gc&d{WI@9>;7$j(vtUY&(zcI--z=cN*}Mj|6^-@ zkGAye_x{w=)?a&4+`sitj`?cM_x0lXdt?0t z{cGvf^1fbp?^)|VEj^yE|C_0?{#R#z|FyySdwnd{uh#rwEeE zd&Acj#QYoR)$(QLz2Qsxg{Q`RwR}7C-tc|;Z_%sg^|cLR{lzC@zFK~}Y`*ub&!-Qj z$MfgUxv8f;e@f18f0FxWYkobO?~VPpc>d+|YI(n2&Gb%h_yPU1KNa)U@||qHH+->S zT)$7ztLODS`qfX1`D*zho9|t%pZ-Yt0b72f%zMwef7hnR^ZR#a>S_0H%y}n%I@Yh& z{4U-|2VUX&dt?3WXT|mVHN6_==Dua<9R-n&{q{ry@$TmBXGcmOo!d(XOm$9{In`*(WkY4@+O zP3*rsJ+7Zx^XtnjIo})WFSieWHoaQDm+jxX+CTjx^dq+X=9%}Nwg0z%ZprpR5yxA}bRU#KUq3ENJ?;53;JmkemHW@;*R%b5WB)^*{~LO>*6-H~>-UB)c8%+|>$x#sE$`1) zcyIU~{U!8j`Bt`mZ}>6&PG5`pYWX7b-te`T#rg;IYWXK*-h0;lTjT3X-oF>5o_7BV z&c8c-9H0Mc&G-G{`gvph9s1XOBfMIk|2gfV&mZqu>%S&Fo=yPUuBH)Fn9 z^E=t~^Tzro^qYJuyjs4@yf=Jfx43_=9E4ZPH!|-H-=;tE+u_ynzTRefr#JkFe$Dg4 ztK~=8d~f*v%VYf){!e(dyzdwDz2V37_kTCMTE3ml_l7T|ZVKKi|Q7&$|8_ zrN{H1KekUj?fSPl|7OltYrbD^%=gCnJM@pztL1&a@ZRt}`t^Pk`&Y~RylM0M^lzY7 z%lo`(^M~}u)2rqEdc%9qy8d5HkLTBakb2tnA9Mb8KaTyYHNRoc7tHtGEOmXac>cYX zUM*kae?WnT_pbbb;Xf_UmTzbCz2Q4N|M&E2`PQ=W0BFqjh94dj^EbLG_OF)r{la_0 zPw020SIdvHf6v4le)P_me=NOPzLS0ad&8IS4u287TE31q(t%f4zc+mAJ>i%7N$h`7 zr}G!2mr;7bA@2=e93B2;^lF?BUqSQUm49#e%jDUMJpaH#^J~_X|6cfi%d_R%+5Pv1 z?_L`I*o#M`F;4$(5vOkYW0iP?_JHO|CQ#m+!Mvt*__$+45Uv^Sx(1e@;t}=g*&uQ%`&T^f>Qrzl`~6 z&97(ky|Mp3{nhkp`A+7&;p;2L{x|zo%va0%^=_tjdc$|qqp<-4OHD@S_0{zEWJj*Zi8-kFEKBy{2A2p8sk3PUc^i z?caOW`hT7t&)5I^)YH~K;=E&i!|R{TUn86EJ!}4t)8qO4zo(uyf5Lg^-5B%Lx_;ek zzIXNfTRE=(^KS~@VapHjMmq2c*WVkyST+1-=+!uXL3%0D3l21Vfk+1$zNFviw=rLh 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£|3F+n_R0SK z`(*7{|F_cp`2MNZe7{~`zBkriJUaXu9}KUSFYS2Yz2Up`d(*4s2buSVpV5DnUM=6x zyf=Jr-B|wE`CjI|;b-(m(5vNrUOV0B4d2`(j{j5i>bkx~|5JLkd^20WH|Cf0 z4?8`MUoBr|-W$G8zaPC?zL{M=yx|9%#_?Z5uU_V}`T6>X^bbn^91QPYwY*<1+UZ8` zg{~h5q{s8?M?W=w{>ZN%yf^%i{(O41d@u9f@XhDM`e*cNd7sx#H+sXj z=r=t()~~MXJM??gtL2;7`n@r~OaFd)wfrFS-taT}`{~v4eS5v&_`TtKJIDFk|C~5} zwY<-R_l9rm68>^}bzMK8-y;2UOI&}{@}2DXy)l1Ee*(Q)zL|M%_!<3`^lJG%vp;|K zUg-K)q<^mJ*T0=o&%6G0UJ&Q+o^(HsU#-UDAa{pb<4X>6jGVcxF*eB*6ORtviW!@XUNB&Nt0)2r+H?g25s{ppymuIn2I zhM&-@>-r&m=K?Jl*@%rn~ulJdlua@_px8c1P`u=lldOZLB zb5`nk-+y|q;cyIW@(Q*E_9r5_t^39cF0qAPJHT>|n@b92k%a_^uz2T?y zH_)r){dlYS_IU6!`i;LB>sQPB^#)~A z?~V0$-yHr*dbPZtFL-bGA^oGi9P`!k13O>v-teur#Qb;CtL6Kd_l6(QuX<6;SIhhB z4fDO>yZxAdHoaQjuQ%}Cm4A2m-M$j@yKMO~TfaB_ko*6OUM*i_-Wz^Q|Fo~he6@Tp z^WN~S_r&^7rdP}Rymq?L8@@yTJ$iLr-=lAQE!MA=Z)WTF#{540v+33HzTSE3AJTu0 zUM=6ue*fx?`J+?f{5||)zW&(qi_M>K|D);E@@01X-k9Hff6Tv%UM=tE3&-ybU(gp{ zkM*nN{dxuOz0mdR#PoQ6{rXhudDpM<1F`;nzY+7*n(x;u%=gCn2d9SrD!p3X&lkKm z{Dl4i-;DXoI-U0=>0^*Su;KCGz2Up3#r%Wm)z}}tpFXh3_p4g|_kX7JQ+l<$U#~FV z8}kRJ$NWPsiS?`H{dxuOUHM`7b-qQ@m0m61%e*&y z_v5kt^3qtpTHfbj{oe3>`Zv+5>-r)6h4gCqX10EB%pcL;L9dqg*E`nl4d3`=9RI%G zj^kI$x3c-(@Gbgp)2rnNtHcAKG2a`0d_m0Ld>r%D@_xMV-tZIpf0OEC0>#`(MWM$CfX% z^?Sqjx&MPM53iOlGVcvPq~D%iE#J$$H+=JwSpP}%YI&d6PB(hPx9BgWSJ(9&`Wd}i zzL~Ax8}qyLn_Us-Prc0Ji?rbr*59;-?|mzd|9$jo?1t}uW%|H|hA$CmL&J~gr}S#v z5AW-(=BL}R$&cx`x-!B`ka=&+Z~S-6e>1&WzMpw-_&)u8^lEv(Uf}q> ztK+{s=Kt3ZV*M?)yk9Tiy(@op_^1Amo-JQy>-UE5asQj?)$&E=z2OJ+kN#22SIhS@ z?+xFW#QG1SSIhgncDm6UzMwysUR~Fh^f%C}<(t|1y)nN-zgGJ9IF?w;5Aa3W@Cobp zhM!&&$A1F78vEn@@8=8NyPE%#@ITOew!E(w-W$Hl{U7t=Sif4{uNUy%3tc~sOONN* zkB_FFcm3#J7wg~S>X@(Ae7{~`zBkrCxjy`t=+*LNI)~WM@FgN`X!z#O!vBk2jr(!_ z2k8SF8r~azNPo~I)~}ZD1E)>CU)A#Y#SJn4H}q z%HIKj->b zzgqMCdV~4iSby`b@T>eRyjs4@&Yw4YhyG>sYWYFtz2T?y-=kN{_cQMe-~B_Z|HU`N z`qlFOdTXZ}z2TdG3jZ5=wY*<%;JqvVkMJM5k>`&sUuNs~hVO9yU49;3Enj5b8@@;X zR(iF3FZ15;Q~GP@)$%^Coo@7oZ`>Eh|Hxm&`qg!PLBA`#TE3aB-y8E=^zWfp%a5}^ z|MiBS-5=}!BfVO_xl$|ujpO&Oj=!;X^}X?sU-J0b%lsniZ*u=j=+*Lmy}*3$g{~j# z-?ZZOGQGO4AJBh^ zUM=6u*6)q^L;73j)$+aU`r!@VTqlmdygAOFTHfd3_`Tr^`ghQ)<^BB*@4e9b|AzE< z{`12>QqOz;myeG1UvNvTU#QU+YWXR?NE<%2vA;F^ zc$=8N&hPmAv9TL||L?~O?+riU{#|;t{A$_t&wHWk&&BES{Q7fqYFvNz&Hnwl>9(={ z5C1;auhxA3c?0YB#`;@N3IA_;wS1Y*0X8&ziAWn7zDK{?oiSgH`*HpT=>r=Y-W$I0 z)R_NmdbNB%?Sf6dU)A#Yefk~miur1J|9J!Ry)nPFUCh6ZUM=rGZ@_z3e#h|d{6oxd zvE@r!FT6K=kNZFMk34^wFEZ~9Kj8jH(5p4Smw9ja#!j*RF}+&e=VATc@CAM2PqBV= zU0>2~N3WJ|X6yIH{0{xG^lJGbzDOHBVg26lvz_DkZ=_daf4qMC4@$qJP2L;6w`=&P z&G`JW<$b-F?+xGQ{_mz&%lpqO@ZJkuKkiJA=hu%l{yhKsF??~X|H^bfe*dD@e7{~` zzBkrC+b#UYcZXNYm(|%@e*V1STb=Mn(yQeMnfHbt)89z1mhWfY8@}8<=I`;BSif4{ zuNUofqc{BQCE^gI+D~^V;b~Z}=(w-{{qKedB;Q{>}du$FG)eX6yIH{3iXY>D6_8LH{Fq zwfrEP?~VB*`t9$H^{eHl4~Yjr)+^q;`r5?@7HV0_ue}7V{c8DsHs2fbi#Npl3+UDIe!a%=dsoMQO!z0>AM+<{dB0x6dsn_6 z{@3zs`7&F-H+=KN@bCIp%vZ}7nfHco(SM6xE#J$$H~f(Pq5tOjXUqG%cDm6Ue$4%M zrdQYXQ~G1+)$)tI|7P@Gq*u$2v*Y*1`bTez^S^#$t?K6=wY>lTCUE@T@Y8pN{~*0u ze$n;QPw8iDdB0v@zV|}ck7qt$trdR$+b8wB>qqmwvHn%ke@6*F|EV?KuNRo_jpOg0 z5`K4jwS1YKe{c99{b}@S`9bEr;al&I`M;-E%l9+y4L_oP=>z%vv*rDI(Z>F`BW?Hu z-~B+${~^5^_v7~ue!YPAuKZcyk6bzCciHkK9wTjN_!5yeH2jeJuenNiHSWj!B7I;( z!xxCOq2b5$&!$)7e)wMcz=nqRhHsr6>wi1FTD|~In|x8#^7$S5uhOgQ`X2pn=+*K~ zn}_v#WBq;lH6Ik`Pc7fcyf^%W{z!VY{4n$0@V#^5{C$&NE#Jf!X~U;#{npj`KN|jN z59a#W@?GGx$#<(-e*UN2|8#n_y#Kt2`QDh{Jul|pPOp|9+dO!0_~KLH4}3_hUoGFw zyf=KG{!)6iyw96AzdS$YKlPz8UoG#i7kF>X@6ew>ua@`gHN5vi*Y8PsJpcXsUsBJz ze)lej^`EzDtY5A9e!a$gZ>)d(+3@$%tL4k={CmSUJ{SJE4~zL~`9bEr;Rp1erdP}N zGw%)G{Cvz`Z?%}OmLKDbwBb`b{o)NjxiI|4>DAc3&h>k8arhTMJm#zA%k((d(3oE$ z(uS_q|Ml?q&^Oug1$IuGd{NbM-{SsHSUu*e<$Jb2=6hrQkp4(|wY<-R_l6(Se}-ON z*H7txL9do?X6yIH{2Be4kBH+}%TF@zU9JBcasJ;zKW599_#$oigyZ*yZ(I`o4th22 z!s}<8{rSIlHUHb;mo{VlW462>FXns0Pq;t+yM_4qO)c;LziN2zg|0uVuCe0vXS3Av zu0M_M#`=Gj?#Fz!=KJ*q^S!bD&Sl}B@W}9L`7%8uHZ**RNE;e{Kz|s$8u#P;57GxV zG`u%_ae2(Yf?h4(2Tq%OzpCZ)hxAWM{~bjfzgpgZUc`KF%A&NM<5$b~GVcvv{3OD6_8m;M@hwR|&Mzc=Rh=vP@Mj$bW5$-H;9{%hm-kEAcz@;(p8?+xGK{$Hn8 z%lpq8@ZJl({~z(F72p3)PCf7a-}`B-|BiG&o`1FG`}-a9y|MoB&%*Eg=&E)k^8S8rryITD$3GAMH+r?azu)1# zEC1W@pL`6@A6vf6*6$79xHWwHvEkM7MdrQX3;MUwtL1x{_l6(P|CnAa@AKN2XO9Oz zqJQY)V*Tp6enS6DdbNDh=3%}!=1=L5p;s^S_#$oiRC#Oo*==$De@U;#ZutJ?^XAQO z+#Y`O_4xd;<^BB*@4e9b|G(1XElu;aeLnTP_kZ!bn7?%Wn6K7+f4^hCH;%t|XZXwL z)$%15fQI*mAJMPzcs~DZ`9bEr;mf;X{+sC4^8L(v!;k6zPOp|9UjXPs!$cFZBN3bjgbE|L3Qk z_x_*!E7pH+x*y;F)mp#5-?4sg9DnhEb*k6K3pNg~mM`P*0TE3roZ}{FyvHpEGiS?`H{ri18-RKQptQ`IZdbPa2-{HM0zk2u+pTP6SmM^pQ zd&76R|0e0b$sk z8C!-|%a_^t_l7U&-$k#MA7tJeenNi_y;{DXd2jg6qhkF>r~mFaj$bYB*PC{_(Hp+8 zZuph9=JB)T{dxoMUHOf|e_5U_UnYVL4PPSChK4V>e|MXhug3j#e*WmvpFyvd?_pTl z(3tOy`4jrv=+*KCaN6XHs+O;RM!%#L>sQzH%_VXE_N7kkO4<$Ia;hA*~{^}m5$E${Q%*xw!xzNG&$y}GXN(*KTLE#I_xnD34GJ^D?a7RRra zpW%zN;S;g_Q&i4&Odr_L@Iyq} z(C`!bztF33Kl~tlU_--u!*`z(^I!S&Sif4n$d2C|zQ0rWDZN_W|9^#;?+rg~hkw^I zV!m3w#NyM2hA$CmL&F!lh2Q#_;nlbw$6urmY-sobkv24ZNxwh68u!EZ(g!v)yf^%a z{*&}-`DUe;dvEwL{m<#u@CKKua<8GU*^5xNA%l2hv$ziUuNDLe#ZSTq*u%L zGw%)G+dtO7&5ki&UDwa(PoP)V^}PdP{wh0hK3l$1UeHmhWcX8@|&GxVe(!4iuMK}4{g5r+ zOOJsKjrrd2%|pYtpBMAh^8S8>_l7U&Pp4PQ7Z{#4G<<1%r_v83|-n{t( z`puso>sQMU(qmvl!+T?XaabJxXX(}QO?;6ye1i9eZ@n)3o%Cw#UuXSY`XgQt>sQP7 zFg$H&%=gCp3H>GXYWWg4ZSrMR(eTZ~WBu#Akk3C`zOel<-y6Qg{d@Fk`Bvt=;k)!# z(5vhE0sRKM^7+r#pZ)!*!W#2ON5=6VLa)~RGF!hl{EYq!^lJH8=Dp#kuaEhS7sdM3 z^3BY9SM%v#ML%Q9e=PIf3;q0bReHRowD`30i|7CRG&m~O|IKuN_4_Bb=KFfv=|*p? zf5`oJXopwJx3cwn!%yfhp;yZnnfI>FAN`KI#r)ZSxcMoo@85)=&Qh`W{<;k8Hm8La)Dvy=2AL z-}b5J{ro=Ryji**uRpcsH?#TPSpSs%IWG;bmhWZW8@_W)oWEP>)$(g*-g}|rKW2{= zkN@qd=N*5K^B=t@Uq5WkFSGgHSpSIoKZjl|-^#pqb^hoNrk`f>r)bnzm#4r-^;u=eB*sF{~UU?e3^M~_>%r6dbRw>e!tL8H+sX* zJ{a?#yKfx7TE58Ud&4(R4gW=YwR|`8-tay8yXn>P4f}Zs>-Vnw=`sI^{r(?i_W>u} zc>n)@^v*%J5#`_x(T9)(!O>fck%*o+dXO+W5sV%rjNW6SM3;$9Bu0r4#OR%ggeZ~k zMDKpr`+VN--OpbC`Oi$w?B2I(>#wop%h7z_@J*h7HN9HC9(mvJ z>De}a`t5AKTHZh3Sif)h2K^!QYWYSq-*++p9Gm~V=CkF?k@pQ><@u9-XzN$Yr;+y! zU!&iWUM=tERl+BI!#C+qr&r52qxrt!vvckG-=$Z}`#&#XzHj*IdFB`Y5wD*u@7D|O z8@|r-Pp4PQ*P`|NhVRioL9dq2BJUf%e7>!Jk?n2$YWXzszTvC%HF~wYzupSwxyOUA z)89_79@V$#XUJ{+YWaHf`uAO2|3!BF>(H0k@|jyN*6$m>#`BM$SIg&-_YL2n|1-T> zz8!hr@QtRef0`Za`qlDTDQz0u;uf}`-U(7#^#?yua@sc-Zy-DvH1?YTHfC; z70h#w2VbTC>W+N9Pw7*(d@uUzSH9ts-VKl+>Ldu;h?dYu1Z z`1<7V_-f6sN9*^E_1CVm{mXVYua?gv?;E~D-=J5^`}+mg?;Ae-oz1WAVe{4U>qYZ@ z58A(D!sGeZ?=_+O?O%=aciNNJ&({1}G~YMY-{txD(5vOM$onp?zh&3I)K7T*>`{Hr z^RK2?%h#j%zKiwKFY{BI-~Auwr@y!LUq-Li{5+cP8}sY*bL?gF)uZ|@{R#AH`DQfV zcQOBZTmRFV&z4^)^1cV%e{1YL@&4OAbiezr&3S3fu3xSBNi^R#*59E&o?b1VN8UGl z`3AfG59!tN{(i57Px^*$((ks9tzRu)jpqA?@6rF8UM-(S-Zy-5qpg37eQmy4ey+&- z9`yX(8XnJo|9C!hzvr*a`HlT-zFPD1XufZ(zd`>Zy;?qtyl?mp{a5z4`D*z+BJX?9 z^=}>?&tLz6q5EBbc9ZS@k_Xs)wdVW#r4l~r8|!b;A3?8{PonkvhHul~N3R~$cj%`% zko(7$-#wb|d(i%^6CTg+-_D`2f7?a>{7H7R?cbaSasSww--zb>E}nm$zYTpS^5w|; zhA-V>^UtGKYkm@W-|z|jf9Tcn)#>a3(3S9uZ}|LAHvc;Z+x4sE%kxh3zTq2Bo5%mR ze6nl#+;|C%`M%+M^z$5IUM=5_{`~73zV*D#znoqzUyi(Q`0h*Qm;af~SIal?K{)UZ z>-P;`@0vfEUXAl7hqqSr=P%#z<$su8=SdbRwp|9^e&1Dik3&-whZhPbRx$ry1+VJ&3ujk{# z`Tq5MMd*I7=i1DZipSgHFk6pW>uE;!gKz9-l9<1fUM=rmzs2(r?Po@x9&Yp1^8WP; z?|abopBWy{U;mAv`(1yP^S3|3=BqWo;ns`!zH$9s`g`fs^5w|;hEHa<{adtd^VRZ6 zL-5=Ys5wR}19zTtcH z$I+|hTaot--<-qtf7+vMzFL0c$on3&|A&Of^ZS29=zja(T3|0kmUb~qnDPr4)iJlQCm@9(GWL-)I%%A4Eu ze985wwVrykAHK04E&A*iydJiEJMzBaYd^60C(x_qtC9B&-=@EVUM*jayl?m({X6t( zdH(if?0)b)==Hqf2^05!rjf>Y@A1uWo72|Ks87c>dLzpW}mY;9VvB;=9=Yt<1mhEAuV3d^3E{ zz#;D&zWPJ+ub#~LZ22Vm{k?Dae0%eAoMK)*=574g{KPeUjec2r^_Y)-KbyFQukUE{ ztMqDlf4^5SFPh(@KZ9N^zmq#3-uIyA|NiiJ{{DL{bie06-^td0T7&z?)_nhZ!+hVk z{szx~kX|jHMeFws-=UxRRGY7sPa^LdzDvI@y;}Z+8SMekSikQ<`*(79JimVjoz{Q< zYJ1uKEql7HU##(dvce@cJMh33`rwdneN!#C&;yvV#- zz8rbq@NN3lFE+21Pb2RezDvL4rRLT0{^w04eA4%z{h#%>6ZgLty5H-+$N86EZu8Ze z@AnJyePjLkK6d{cdZl@_d=_25Z}=wtmRFls%lrMpeBbbG`VFo%ua?hCcA(*X!>9Y& z`d9s(d9{3IeC+3kZ}^;k@!#|M+46o~zxi#RKm83{|NrRI{cQd3-pKW{HQ(Q_nC~0w zuk!p?ZZ@x$_s=)HZ}>L-qf4;H)I{hVo zGOv~&_WX6}&u^Po%eSNXzA?XffUSSOyUnZRv&j2~@6vB}FXyx6^T_*#&knTtC;r*I zTD}>1-^G0Ti|^xnw!EKL37_;`%s|jpyI@fO)mNzhB{f!*}Wb z@F3U!Kh94Mw)J2AuzB^U^Xv2%K4M-ipO)-EWBtCd{wDn|A2qMW`IEz29^P=E;d4Yd z(D0>0Z2gBlZeEQq!6)Gj2O8ctd_w=TCwTpA`EsGhy>Ix8=WqR#dA0oGk@r35=ieI7 zO#Jz`=(GKQ{-r;&>whkMeR3G8)_i}x{jR@Ef7A2k)$)0?e&4wM2K~7&npex$BJUf% zbSR&{m(8o?{eENpzTwOCH+Q*ywtO1R_YGg=`DeUhUM-(R-Zy-M{(*n+`lI>&e5~I$ ze23?M^iT6@&G**}?;F1KbKAdFUo)?kPs1rV(C{fD9BBBIe$Lm;tMPTbezNd}0}Y=c z!hwd*>8o#;SL5rW_$K}FZ<<%jFOFg1Kx4k|L9d@X-kSLOc`kIn-#>OZ|CoQWHv=l?PKlr7J{96Gjs z--Fga<9{Zuf6>tW)?enl`@`4q{YS0&e!czfpBnuP|7Tt;pG4R18`oc_U!7h(iXU|S zdxyvK&);dG`(1y7^VjUz`qi56?-yLZ??LlV4v**OUl+RH{3hpb^Iw~<*8E}n-=)8j zUM=tM7p&j+p!L5R9?!3T%6Iy&zsLDkhp*%QQEUFN^_LH~`~N+9wY$=lmVsxA|(# zuSKsv-`Kwn{ipP5`C-pra)dp97k*&#)$-+NzVG7squ=C1K7VX^zh3O0Z}=9^|B_xU zKWzOy`rm(K^VRZsw0_^1U#;8qZ}qWx^{Bo@Kf@>H)$&O+-#6yB>364B%cuAt9C(NQ z^9|oU($@bey&C6F4sTg_!y%s)HU9gD^eFS!eQN7h%h%ocnC~0&oAf(%44!>7mC{2RaE^|R&okG$_e-+%W0a^ma%=Ft6K z|4q*OX=$$F`>$H_lW4wgtiMG+>lEhI@_FQa7yEy#UH`5030uAvdEfALp1bF)wk&1 zrB}=6(R|;SpB!)3|D$Pa{c8DIGn*euv2W9`yRz zV!F8|{QTTEG+sYHjQ;u1Cg;yTz0Fr^el?o!8|&}U?@q6l=f564_WjfMp!HuC9?$>$ zZ-wr+{^SJPzqM!J^T*cwTC{%O#q-DWcc-sMK8w6>_%_c!n_jK?N#uRQcj(*nYWY0! zzTwL!+V#Ihua?gu?;E~Gzr>8Te`m57y6^qV`B#OnPY#ctur=S` zFPQHe>rZ+9)AVZjJi310@OAoGX14ii`C8^wr4MBkvo&!}DLDS8KjMAJ^}@n170` zfA!gH{Z+O+|MC8@pFh3_?cXKg@%;YX8oJ;9)i`gf#OA9t->o`yO=vZ!+h^`+w)q{qFzr>303oe#Q1rt@(bxG2b`VpV6;Rua>Vx>-P=c zqCb^hEnkkjZ}=|#i}Y&wH1fXTOJ~^iFFY4tKWzCV^1k5{p8rF7wY>j+UkRV|J?Qzn zJUpKN{&iF6e$QWx^EaN`*00w5Mznt4#r2eDf0X57VpV z{qtQ3pY#o1zSR6|^Vxj0d^x&)-|#v8#`J1=|IeFZzHj*2-Sx(|335orEjz4ht1C(Fu&y@eE!+;e!u$dUytWMO0OQ( zH~(t$_g&QHtL2BSKYiHzJd@3<<^6v3+rQqU<}agH%MY7hd&2x2U$gmY`F8aE%Qv3C z@{{KOK(Cf>4*CAkdD{H$i`jg&d@1_xEBeO#&I{(hkY~#en_qj`{C)51U_m)BNl7YI%RXeXsv5 z^Nl5W{cQPR^E+>wUu`L_pDpjNx9|18WByTjw*0X9wfD`hyR^+$%Mbhhk$zzQEqb+l zJ-YvWVoF)rdP`ko8L*zFZoTIua+OSfAxjUUrw(c)t47B zzwx(hzFL0R`dgFDzelf@AGUw>CCnf5ZSFr?e%Sod(wtAPmT!a~nK;n+{^J|p{~GlB zt!(qvqxy6in?LU==G9|9`u_j_`Sbg7=I^C%vE_&E--_n9Se5(7miP0D>v!wH^(Wsl ze?PriKE(&&z&m)~@a1otU++6MUybu8hqqpM!y)e*K3&=T8}w@Vj$1G0`-bnWYW~#K zY`$8)9R2>$cQJoW^Xck*{@C)ZXufaw&f4Zrp;ycM{lfZv7wccg{0wVw{cL%^U+})+ zyX%_2ie4@6_Y2-Pd}{;q)y(Fr<^6ua`!42hV*W+?E?eI37rbxyM%DaAYubGEn77-f zgf6^m_-r%t_tUFK^*#EZuEqUl%MbhhQ`_9;Pg>i&T7KB;H{06$74&NPVe{MDnxA(a zo3EB{x&7+5f3@w*pH8nH)u%r+Kl{2iUp=bt&|golmLGQg)!gQ9wVusa%MaWCbQkll z(yQf%&2R2z{(I}&e6{?r{jdJm{6qBWQGIE5^LuSz^VRah)?eS#{9GHFSIZCEziQ3= zCG=|fVe>otnxB0mo3EB{M)$98y#8zZnLm+UJ*rRkH^0=zHeW5@h`#^(#{A}i<{zb3 z%MaVX+M(uu^j({;miP1U`t^Z}rSKnBF`#AGcZ)#pGKWu(>g89Aa)$*ON2RP8!Ki`<2 zoM?Xbs?Ar+H>3NbF)pzNa-ooaq<^6j5tv|oS=08HOmLIl%nij2(5vO!;U$6tjrF$?;Xq^mYge0JcPpE(#@F%vuNmHOpy8W{aG>Fn zYs~+PUX8EA`|sEAzTunKnLl}Jo3EB1wtux7%+J3K*Uy&s^ZLy%-E96udbRwp`>#bm z>$WyuJ*v-dvH922tL2A1|J~cnZ@Zn%SIZCEzt*43zeTT>A2z>y7w7-b=Bwq0?O&Jv zX?pdjzHztB-|9y;Up=bN?lIq?SC8s@^c!z)^VRar@EX8@#{JhsgaeKHzj3e4e~4a< zujBPIZ2z)9n?EqO`D*!L&tLm5=D)UsdA0no`={}c`9ILB<%i8r9x=cCjy7K{-;I8L z`NsbB9yNapy;^?Q{xu&npYLSz)$+sEpFU}R)}76(<%jKG?^*Mg(5vN#&9A*+ex6-y zzFL0R^`|eIKb2lRs_)P*x2w%p%MV+BwQKVqqgTrh+rRWx^V{vl{b$P$o8SDG`TOYA z^27G8`nvhbk8QqsR9||-{HOG4`C;p?zh(Z~-EF>Fe%St1d*;{MgX?F@51Ze4$NZi2 zYWZRNSAW<18hdj6>`{IBJ@dEHtL3{xzJDYinqU1VHeW42Z2fKef6=SuhwWeXiOoOr zr#4?LKkWHSzBIq&UR*z0e%SoR6!R88i!P#9%MZK$Y)bQU@6GkINA*3Pe*?W*e%ShJ z)7bnU)NH<5e%StHGn#*iUM)XtetTx~>+fUp)$+skuQrSMKhmp5_35nUzp<~)SIc*Y z-2bK7&9~^)^265OqOa~}^VRah_OJXEoBuw&T7KB`SDM%Sk^9?xwfwO8^{<+Ln_ey7 znJWAyEF5V3{>?Xj|507Y{GJEce6@Uv55j?W@V?<|sri`?G_S__`2Algn(w>ti<-Y) zo-N;u{{D||_+$z5YaC?r)$*O_{_zdpUCR75^lJHG_fKPK^NSyB^VOsJY#H-^rB}-j zd;Z(Yncw#io3EB1cKFHUE2hwfwO8oz2Xrb(^o2_xsgv z|5}@yzldHfKWzW-Sw;{~qQyK91MV zmTw1(1C8~!5#d0?xArvuFufXI$MffZUc&o^ukU4k^W$y4TD~!Lc#v?Q;eEp=`#$FRo^M|B{2uuYQ8fSIhhR4c<4_ zUpvJ7z4U5%f4{-|hHo5Ze*F_|zFNK>?VoS>q;CFtdbNDlT`%VQhVRjT`y`vMmLIl% z^&@TmUG!>szh9W|8}qwIo8R=8HeW68_Y2-PeCZeFpQBgH`~8CV4PQUe{3gG$`D%H; zU+})+^OMX!POp|9wtqeP?M~+Yv*rDMVZLw7ubyo4-=tT|`~8CV4PQIW`~j!fe6_sa zFL>YZy)(?ePOp~t|37+o-|(fg%Vy z-~W7L{q+mY_vqE~=SQz!--G`B)oo9k`0uao9lGDYznV5}{;a3l`qi3W3tNl>jqCS~ z^*89(qgTskz~PY3iW>j^*`Ys7+K*MKFHo}bgJ@pb(C%)=WFG<=Q-2O7Rje;K_RUmwM%m)ZK?)B4%+ zWqc40yu*Com|y*^`4!K!>sRA^%=iDjet6%5?!TSF^|pYJT2uh#s8 z4}ive-&lW*ertNQd>(n<@E!W!(5vPB{f_y*;j_za|K6Zi%a@|pukXTNX?}&X?fNse zd>XCaH+;_X_or9OpA&iCgPyiw3v9j`=VSfXMft}0z)m<<4 z-*>Top1(PLBlgoyTz~xkN9?|3^RJ{=YkoVrAAMtf^FQWaqgTuO@Bdi8Z}{Z@%-?sh zUB6o1&x7|3-}$fk*)B1!mftMeKlN(ie7v5P=Id!w_BtcJzIF)b`}=$U(EXm@@;hAL zrM5n`)|W)<^Ns7v=r^EO%U2`s8@@q*ExlSki@fh*f9X5)9rma`dDpK0U3&GXzDmEy zWww86`R_#Q_dV$KxmkET|NQL|y5IBH;QVQRYxC8b@1L(q_@r;_Uz2_{dbNBxTEFjN z|LJ$2@37_l^M(1o;gk1l|Bt6vkLs)RSJSKI{dzIqH|E#rpQl&LuM%Cq??KPsOqWl5 z{uT_~@A+$U{vF}#lfzK8<|om7-&lW#{(XA2d@b_6;j{N`|F^lq=Bwo!k@sE9r$3Co z!yeV=AK3gRy?RvNqkn{6Eq`LPe&2(hzc0e$`PX0b%Kpz^{X<*-mRH&SsWpF6^!qj6 zgXZ6O^~Cv4gzk6$G(WNV$6RCc)tXf-|NEqs@JZi;_J67CChq?xq5JKBkMq6^U&rfLt@%l` ze&1Ms>2tgOt$t@-EnkbgZ}=Mh?euE-a^!u(H|dvb@%~}Ur;+y!-{$$p(W~YCUtg$% zPx>CT|IdZT^RK^mL-*VN4(Ffydt1L+^Xt+2ePjLAFKqu`rdP}R{lfZv!`JDTzuxAn z zS_z-@jrDhU{-^Y6`C7Do-|*SYHvi;XY`$7PiM((4D*Z?FYWY0!zTsQ+Z{2G1)uZ}k z7F++(x0zSVH=_BzF~3Pa&+XiQw){$w_dV$Oeuc3 z)SB=2yAnR>8|&}UFLH-@^{BoytL@(|^y*Q4LjN$mTD}_XpKq)`r~l3$ZT)KbnIi9d z(EeW)9?$Rp8=>*~i}%0A`OQDse6{A6qxrsz`-gtrJIy!Q@_FQa!W>{du_g2^OI=4Z>+yfe=@y#RNtY0oL)Vu@6xaFXYM~+z8bCH zH`ZUC-S+=_dbPZNy;Z^|eGl6I$@fj%|5Zcx+y9L7Uk+c#_dm7f*Q53OF7}^(vA>va zv*p{7_YGg4!><1TdbPZNzH$A&;T!a~(yQhDJb2&m)j4hc=k#j%M)dn1-|*eJ%xCxW z`De@f^}zD9p4y;?qvyl?mh{qywdQGJVkgNJPW>QQ}%{swxr zd?#AJZ>+yLpY7k*9=7>v`6Tkb;al|k(5vP1$oqy*zH0M-N3WLm^C~#sJsx~Y|1P~+ zzUyQ8Zo-Szf z*QQs?XOZ`f`T0WTkD^!0rx+d%H0Gy>aG>Gq^jFcV@%72!EeUTp(D1(D8}$Fw^|R%x zg&z05;k!J4)<E|y;?qryzgQ@{rr#d_0JyF=RAK?dbNBjn(rI)lk08$r_-y)eDwFH zTdv{Tx0-*FUM-(R^L@jYZZkj2<97XO`Eula!THep=H@{7PBfVO_7VW=ptiSvR zyZ$fe)$*;#`-bn*uks|nf3W2nk@pQ>yTj%mM6Z@l@j*E74%hD+zVS!%SJ10*KE8ie z!y68H-^Kdr-_ZKm^7TTGd*AT+pKSi}PucaW(AKrtL6Rk4euMiNxu`lTE1LNAD{0VzC(W@ zy;{B+dEfBqy|(@*>DBVJ$oqzG(9im;UB6mBjl6I87X8}vYWW-=gahv?;TPZV$$hr| zYw6WEAFuyByx|!0mPNzY=s%}d%a`5xnC~0DNx$xMcKvGk-jwzLXn5c7jR$P~r_-zD zOVQuI@m=_b%y;G4@_97hH+=7J=GT1Q)~}W?N8UGl`l$Is>DBTz_xp`X_@wV*{ZE^J znZCi6uSfgu8$Nl){3TD}zTwL+ng0vDdd%a4aNr&0$Lp`YZ2oI6 z+4|M;S>%0VexqxCe|oiiE%LtMORt!}i(W17U$0odZ}>9()Gyom)$&R7@B90P&;Die zH=$R{m+(P2@DB5R7yfngC&;tq^FVOO=S5k=H+lY3^lEv3y_oMCzC%Al*REeJ-*WTd zeZ$w^u=TG+ua>Vy-ghyd{sPTs%lqdW^L@i-Z`u4Q|8DD7%lmoozTq46HF~vtIaDBU$$oqz`{@d378NFIQ!3W{MJFMR~eEzoi)n2jdSL6Iqe*U%TkEU14H^bxL zKx2Lr5e{@Q|35bW5zS|h`RMyk(=~kQzvk!rhpk^NpI}%x(3tNVKB3=_UM=6j2jRdw zc;E2dcWnM0^lF@s{j1@FaNr%hZ}{qa=D(m<WIbYWZTL!egMZ ze&2=vz}A0>JX_xXyo2`*pL}foL3*`(J^KFd8@};{`E_5j>sQOS7PJjOW4>?rY=N&9 zmvlM3TD}(j`w_n3Ta(RyNw1dozhA(7-|*eV%`$;--Tb_ z{7dp|`4k_J!TW|UZ(x3=w`~8^qx$NG=2xay%lGhso9`R*vyILFgkC+WFK=T0JguKC zpGWh3V}7Gz{txK6X-`&#u!}Mx-|MLpoH+*Ru^Iy=b<(v2*9C!!s8@{=% z`4!%_{a53Bynb5Y4TrpM`094%cc53xr-dH(zTs>17tpKa{r4-Z-#2`l{#kmpd^4Kw z8$SP`t$)V<*!8RB+uPd%pfTS!eELW8-=$Z}`=7V)zTvBPnm>(REuTc|_YI%Z->>zv z<+I59hHvuxdH;{kf8@)N_YL3S`J2|gCJ+y6QLYuB%quSefM zeZ%+e<^4~umQV3PIPebp=Nmq`&-{_}YMejH?>{p7d+62j?dbQ9zA?Y_H=F-4y?V@t zQ*fZM{x%{UX!th$s_)qTsquBJKfwp#z&m)~@SR6&{vPydoDZLeHyrYLQRDN=9rGvC ztL2B?zd8Nw^y*Q4gZ|(2YWbR5FRtG=uD|rCt$*^nwts5*X5@XtH|Yxc+C&FZ>>_pDo{V^RRy3 z@GYLdF}+&88hPKv{O4@`!J5yOZ@Rx;gZaMUn=hEZk6tZbj^_J@@6gZqzFogsz8!hr z@QoL3{^s=RG0%Ts7mf9|UBg%3Fn=<=T0V>B`!43w|3mZH@=5gl(>Hwc-!^}b5A6EY z^37r-!eAAte`M%-nrTL4;I)Gj+@8`k$hHuc{ zM6Z_j^ZLy%PhsUM-*F z1Lu9ix2HD$Z+f+SHTwSN8$OxN{A{1{{$tDgKW|pTCw;@$XEdMDtH-=8f9(2euHk$1 zKc-j9C-@*7c!&AE;Y%~y{F~|3_!9QN8s2co`-ZR5&-$5NzgoUq=yC5GzC4S~|31B1 zK8w6>_!@naUM*jbyl?m({fG2wd4IoE!Y6&h*Jri$@ASD{zgoV755j?W@V?=ziTP{j z)i@vfUkh(I7Sxk%eMx^E=b4NA+F$tLfG9 zooK#q%x}$U^Jn_f)~}YYO>GZ=u7qEF!>99@U!PtrUykPchOg2eN3WL8BJUf%LH{Vd zTHepY`hCN<>1Qv^UHtnKYWZe#{l4Mz1?>8_q*u#VqxJiSZ_z(Nua-}v-~afA@1&eR zg{@yL-;U<{hHorv{z`haynntc;gi1MON*JGYD$~0miPM&?;E~MzX`oszKsvUfp_q} z;d_hQ{LAUpI3KV7ZnS^C;X6y2pJgiUA6wq9nELU``<5A!Y6&hH&!&i=rnfyYWa@)^9sCg_&hUz8ogS+9j)Ite7dIjTj=23zTvAInO}8UTfbVq7R~n!-=^P-UM=6?e{c$23BUL*<{xkKAJu%ed^4Kw8@|W$ zXPeH}ua@sDX%B$LeBbcx>uvtt^lJIK@$viDHGFo1`FrTq@|imy^L@kD=_gHZ>sQP7 zBJUf%cB9STl3p!ekGyaA9{u_BYWXbs{j+cQ@+~(1b9%LWHTv%h`Yx{jPV;-t!0Ttr zccS(ChOf5Gcj(pfjmZ0k@6t~{qs>>#=aKgfpWS8iSEpCYcO&l`KE2!gVf1Qw|JNHT z;gi1M%YQb15xrWz8vXTC-|+Q^%s)l1mTyJRzwcuHBj)Ft$@Z_zmiPOG_4|fz@chl` z)$-+N|9r!@>Cd58%eU}BIPebheZ$utwe`PBug3ZK`R(Vy`-X4Q&o{GOzgj*EkAVXX zpCQ75hVRl>=+*c-=KKF1CA@F=@-w#n8|c;Y89oRH-WBs*!`GfQKld!Qel@) zeA0Ju{qz@VK3l%JkSzcW?;E~cTA;YMUZz*e=h6Co!#C&`N$mR7^7Y93hEJxj`PFnd@!~2G>PBQ-`y;?puJ~rPse2aeBIqmw@@}0>0hOf_K^G~5y z%h#v22S8)}zTry?n17#MEnkb~`-ZR4&;J!$zgoT-{rSZ=e6qOB|0%s%-alVhzwg3- z-TXQ7Z25Mye&6sNo?n{F)~}YY&uyh^j zpR8x|-=tT|mm}{RKBHf3Zo7W9d@J(4;d}H4(W~W?$oqybt#9l91HD?_&#Qz_`i5`O z&o_y$AGUlun(rIFwt>yxg4PV;G{P*Uu z>sQPB`?V52=^MVjtNH8c)uZ~-(dH-3%lT~iJX*hR%+GoLcj?vgWqc40yu!yz4;!! zT0V{b{N@|Je1rLUziR7O%QvI%|Gwcnx0pYdUM=5<*6$lW|AYC*=+*Lhw0__4?LV5| ze12QMT0V)^@4Hz4UFL75@37_l&x;B^i8sD0{N3h1k!Q=dqMu*B;p-2X-(&$>zgj*k zrj6f!zTw;Szo1vk*CX#6K6}{a|B+rT@9(!t_@r<6-UZQ%Xt30i`x3t^265O-rMH?j9xA8?>Ef%jrpa0%uher=BwrXdi$-v zO#cIVwR|Itz=4MMjrnc*%jnheP2h0IH;Wp-|MPuq{jbrhvg?;E~xi23X2)$--&pI`J1-#*;@zv$KSS+suN@TDWn z&$k$#f3|!x^1k7lJbzPqwR}DDzTwll%|C`-EnkkjZ}=+xZS-n+|9n@%Cw&+5kFxn6 zYCc=O5&iu04c|J({IZMN{;B2t^L)zDfUg zdiAKjOTWU`?fTX7e!czHpB!h`zbn03K8@Dz8|yFA|At;I-@pgqz&p(M4c|WA=Fhx@ ztzV7v@$FH`c0R#>sRCJn4g6=9O!<&N#CGXkLtVhPt&VM_37z${qrql>sQNH zi`9>>-#4zmM!y%mT0V_l|GwcHXWIN<)2rpPXufaw4*hgX+xpd``s6H|zXiQ|R9~gP zoL((I?Dboxe}Y~uUyJ_y=o{DHJJ;4f?=p7%YWd>E3wwyJ;1|5{UE$9&zo$G~K5^&6 z`-U%FVEz(%wR}BVzi;^ZMdm-CSIcKuY&g)EpCQ75hHulayR2Qm8ehljuZ$1Efp_q} z;d@P+eVB{86qyxy5{qUM=5_{{3m+#r*rsPhIBgmo49ozJK_JZ#`gs z6MFTSkLGt>!#AEa|0KOyz7;)xzTvaC%`dvVtzRwQjsE#3-|*?j=C`I-%lrGa52J!LDD8ua9#7q@UUR9qH9$KKlNV zxyJnbOY_&$tL5AHARKsy_4|fTr&y@?+Gm>2#`#!(9^P=s=S7WQf1T&A^$ojzwfwN} z|1J7G>DBTnJ_v{A`^Ne^Q`-73qgTsk(@ylh;gcE6KSr;X_y4^E?4NJ=<~-&%ThXpx zE#Hn_zrNw~ubMxWUM*j9uUE|X4c}SP{73X^`EoShH+*Rs^Z81)ezkmV+c&oVzKiwK zH|cY>d@b_6i}myTN9j9}Z_Q{AfXAzZUwp&YzisRPj9xu9Kf3;!Yxv$O=C}T)UB6ns zI`zc)zTvYq%wI~cmQV0OIPebZ_YGgo%+LNUo3FT4)8xDEj@TE1)e~(@*pS$lD znC}}tU&s6@^y)E>55j?Wg?A0#Uf29b^lF@j^>@P?4*70T*6_{s%rE+FzJA#9b@zN> zzHj(+L-WVbtL6Rc4c<3=cVqK6(5vNhw_bSP@Y#3G_vqE~<;eSnuhCCh*{)wL@8|WK z-=SZRUM-(Q^L=A}m;NAnwR|h`zTq32*!BOFUM=tEVg0`0oAe*ktL6PXc;E2Vip}3> z6~2Dh^5tm#zTxXU|8RP>d>Xxed>8BA%;w)i-(<`Cd04-1_zusXZdF^qTD}_H|GweV z&29c_^lJHG_fMVvSbDX54IhL9@34N~nBV(>&A)|Sjq~yP&!WHn;TyjEBlBO-tL2mM z7&y?F?;Ad&U+O!ye`@(Aa5&_fMU8*|>CzuWua@`o`pxgrUrMi*_w(R=WBrZo?fQH4 zYWZRFoAe8(yQhDynge`d)WL3>DBUnzuc7`6T-Nvv2s)zPA25=+*MgXufawCjA@qYWZ^HeZzO? zm&ok;)$)1t{l_DBl;=KFtM z0Nyuz^H`fdX)Rm7TD~5w-#2{v3-cMhdd!D4;6P)39T5(6F`vG!`Rq}BdV>Bb&p%)DBcHkR;eBKMr;Red)-b=}y0(6`e1_rSK;!x| zL^#lx-=aT{Cc*2wR{>L0|y%O zQ$#q>@Gbhy>DBl;=BMEe2fCl{&>uvvmai3h-22A->`Yt#AL-Tdn?yhV)C;XYcWJSy zOQr38{heZM-(c6+>$5LlZ_B=ey*Imbk@=(92eZ#+uh_J&V?BfZe_dCH^LOU8;@$h9 z`~CmA8t2>fUb6w8FSf4N?+^CdH}n^()XqWj%nLU-M^(v?E0^)^7`4D@9!7P_l@-@Jb&}e z%&X;7EIu4)_!JQiG<=zU%I}$1US`*S`4+Z*wY=Z2O8BI2%x}|gyCwIZEq@d~2nXK5`yTZA*sQNf9?kbX=>E&X zzpjXQ$(fWO3ewF@ydbNBWdEf9Y`nT!T@>%44!}sWy&u#zJ@_xOQ@JZkB zrQg~99Z9bq)hF~VdbRvg(fWN4x_@5{kLT~-4@396e>2WMV+Xr_wdU8O`Mz=eZTc>~ zTHgP81^ee4zWRIHzsWn=e6@TU&G!voqd$~hEuTf+H++l!PI|SxpNIAPhVRf%wUe!1 zEnkl2`-U%FZ`Z#zy;|PiZ{(hxz`1VaU|3P}Sd_7vfZ}{wH^Hc83 z`-d&x!3W{MJFMS#vHn}l??Ioi<^6ua`!445{0lTc@)?GQL-Vtu#()1>=lQSFt2Mvo z&c}S;nBSvcYZtqI^{76-&947!dbNBW&G(J@ZTeT~)$)G7uzugg`spX_%JsA5(`deL z_~dq5|0eWmc|Wh;{EYqxdbNB#n(rI)+w@P+tK}1X5DvVD9- z`b&41-(ol0Kec=6)$+sUH|ZavSIc*!zkcN#^Xqro`ltG_tzRvl zVe#QWWBnN-9BBA9{fhKzd>#9jhc_H(_#6=qG<@2&`89eqz7F3GZ#dBKZA3WG@Ll@f z(yQ@x_$<8PK*MKe?D8K_Mcy}ji~bk%YWX%k2nXI_zVBlGy*B@O&1cJ3qn{tX;oE;PzseqV{c8CP!^45b z{0tEeG<@lP^Lx{)@g+Qe_3(xR4PQru0}WrNzl>guufzM-8@zA$9{m&aYWX}o1`afQ zjtB=DzWRWzf9XB#`qlV4=4asz2O2&@gaZxVpg)^ljjzL};SC2GK1GBB4d0@FfnJTT z!zbYl2O8cte4BpSpYZu(%lD=%_?Y)y%zwzPe>M6RTi(y>JD=zOSo0%axA9~1ePe$1 zu+4v-Uak4JN8b0K-#@SW(}}---Ys;$-#?fBX7lIU%l1#L`NOV1q2GsIEnkb)?;F=& zr+<`QEkA62gMOyHZT)KbG@9?bc>d{sNZ(?Q>N`CD7J9XOHJa}m^V3Ic|0maM{c8C< z^1h4xqd$he&XzAn-gj~RJpW$$R^N_bG;@JYwkKjS{OezoSO(R|GpKti=3A_GRHJ>e?M)Q5c=RAMf{cZhf`6Tkb;cN8E z)2m1Ib^0ICt4H+>`uphB^8R`&;gi0x{uce4^y*Q4hdw>P_D?;k@6oSEuO8JWPulap zFTGmcKVP_h-?;vi{sMaSsJ=|!p;wRUGx`tc)$;!N>i7KR^a~uw`D@;!Gxyl?pSKW+Zr z^y*Q4>s9lAqgTuO{la|TnBRKM{1S)R`qlDnd_V^88@~3s`D^Ia^36hzKmWerlQ+zN z^>CZ7mapN1aNr&0`-ZQ-Y5rh(HO|NV_e^-hA@6(8>+hNHc>ed#?}qO8`pe(4`R5&B z>sM=j6Cb$wzOnw&+vcCASId{8?|;4v|9|G!uG{<)TfSCIAHROz@HL))KD}B#iM;P( z|LGs6uSfIK=&yhIhHt)O>;KV_wtltd{~RBL1Me!~7vF=Pzh}ea`RDJSq5D05>3cT+ zfTL`_TJ!yWVZLvyzd?T*y;{CptbTm`zTw;SEqb+l9(mvJ>HD_+C$)aId^PgE;cGnq zQ+oBNzD>X6(YAkT`9?I~H|AGAu=Q_4ua?iE``!c-p_;g4PT|-^*CFMYRylI>ErW# zg(W~XF_#hm32k#rcJ%!C*?nIlf z#`$>trQr<+8a_pY0}bDu!u*-^YJ45uuNU4oe056m@6xN~%i%F_py7SP*XdU{$=0tP z)wk#mrdP}Rf8Gl7eGj_-?hTLU@4r_=_q+d+sqFgC_@%91t@(bxFyD7^{q(QV*V*zJ zHZL4#_zV#aG<=)qXTRd}ANe{?4u^cbsBxc7ofcoamR^nX@%(4*{C@N6^pj5J^T(FY zBkvpQ@ACWu>D8n9Y#Lkt%k*mbW;EY-F`s^kQ*8ZRwtOq{zTq3w+WaHw)$%Jv-uIyU z@A>d}JJaIb7olwzl&$&A==y!*`kOp|&oj-dNA=l^Hh=%K%&SNBUHTuNZC)*3#s}fRJM5ottUsCA z=FfJHc{R?T9Nx0j%-?gNd9}QM zyLRY6EuTl;H++rf|F~&hJ*w}}e@3q!)tA3w z>;KBdHeWreZ_r;yua<8|*Y6wGU!BY5uXTydSIcLS_YL2mf0|w`pGV#|e2>0%sm)i* z`}?I5KIt1io!i!b=Vj*A@};S50cd#Ng`dy-GMCe{{cH4Uc|Wh;{0{wrSKEBGe8Vn( zZ2x>?e!hTR|MAzDSIZ~(ARKsy`M%+63!0zpTJvh0kMCc@*59OG^g8ou`C51k9B9n< zjrqw!Hvd+7wR{E~4*9GoYxpYtHovp^YWdWikNLjgYxJMdtL2AYKmB+WZn*^M~z!ndh&3lXZ`@md_*a8~fLyf9e+VYWXDc zzTw;Sd);bYEnkbgZ}{@pZ2wNYjn~hX_v^*=`-X4u{NLVgUM*ja=KC(zPruF|xc+Fq z|NT1V`yO=vydEBJXU@jE?eFM+|D=oA_0RoBo3GaTGd>0y^L=CeIsL+aGOw1;Bk#Mo ze){w8J$xO1{!wdw7R~pK z^_Lg7{Xg#>^J;m2zgEI0eZx2DYxkO0%lmoozTvy{l|OU;*z(nA{l4MLU$^yV_i_Df z`9|b@!?$_Q+zOnuu&wrg>EuTi-H+-_B?cer$6a$=GF4G$onp?pMIZ5%=g&xdJfQ)@Qd$3&)*WAiO=79q5J*yw|ptv zzh3w{UjJ&%FGuV5jrBL^SANvIdQ{)0KZ;&0zeF_O_n_TE_P85qhQQ}{{v>+!s6JoO=0BtP>`{G}=P&ybUqAn&&sVbf zC()}%o=^XG&1cIW65T((2Yvrr;pK_n|Ei(;egDh9Y3u(ie0_2ls@8mezvKS#jr*rV zzd_f$T0V=`?;Ae(md(F_UOlR>(tkm(maj+ieHZJe-|_EUKU?0f7uWB*SpTF7|IV+rP!$FkfQJr;+y!pYr@V zy;{B(dEdqUuWs|(^a)$O6?xzAZJz%=y;{B&dEfBmHEe$Rrd_{Uz7cuf#eDi5=-X`h zH1fXTyFC8_dbPZtR|%i=4PVP_{m;^?<&$W>Z}>X>TyNR+tL1Zi5DvVT2^ z{ZGRi4m5m<2nQNI<@xK=tMPUCdU(TuhOZ;Sfrf9=pF*$3*Wvws!TW}9(Z5Kq9>ov3 ze^%;Eyni+d-S7TsbN=h$>v;XBHNS%o!hv^Kzi+I+u|ZmVZL$BFSL1wKe;VF!py5+Q zIMBuQ({DxJV&m)ZS$M;NhR+b;kni#QbLiFb_2TSt?;G=L8>Yo$y-BZ@Pb2RezCpjn zJG_3jynnv2e&6s-o_`j-THdc0-Zy-@k*)u2dbPY?FT8K~jDG!hZT)I_zg~FX@KyTr z=+&e8oc{0hYWXU^VWKhLH|Do$cKvg|XX{tXmzN1J9P+;5yBC`OKD}B#EA+Vc4WItn z{Q30iQGHH7!~3>=^{Bo{zX`p1RNtjPjb1&fPcO3T@6xMB^*Q}YAMpCwqxvS#Kbl@G z|BdMR^F8SM=R@J~cBaL<=R)`U{@LaH+K0A&wdVWpm$-j@7x(XPZ2vB&Z?WamFdGLN zK1GBB4d3~V`N!zh`1&Z{Ka-2i&-9V4UoBq`kAnk^`E^7%(3sz#-;`dBuVa21-f*D% zt-nQoA-!7Of4_nEjrnc**XY&qbqo&&8orJQ2O2)RBrQH(?qj=tHNHN|`g8iD=+*Lm zz5Ui-qyG!NdQ@MhpY9V|zgpgZzr=jsxc<%qcKyrJtL6RoOL*V#r4P;TOs|&D!YMe= z@EIZ;X!wl&GI}+>j{VQV8xC|oU#Fk>Q(ixNRNvzCBKjZbYNA+!^6MDJO{a*h)&c8o=eR6m_wdVWRJ6=D&asRd#xBGX> zDY<`a`IPHJ!~2Hs^87Nr8t0Gl`tQ;IgkCN0U+S1$Jw30%{tfrA0Lk8kQlOLzvS4%*!NsQQQSt^g-eco8$~J6g%(7= zp~zaJg)C`oZIlUFqxq@)TA4O2ei)Tq{J-z(^M0T6xxfGU&3x;6JZ|@S-80Yme81OR zGxvQ?hr)q|Z@$O;qBHFLsd0PC{tNou>D8&eMSnTHI@Oo-1A29;Z_~ePKHI-K)pzL6 zp;xE+F8zb_>QvvOUuu3{|Lj!X=lu_(SEu>`eV1M>@82(Q{rMjE{_$LRyxF)=dCa%K z|MC98`Im*;tM`v+|M|T309X&^`^NR(*we26pVF&we_a1r_`rdN&k*52!#C+)r&r^4 z_(Axl?`8A1SkTtrV9U3vd(ZX0;XAzlsq||3Eb_kLd-S){tK}zs|L@b! zm}%=*r}_c?Ui51DGFrcHtiRaX&fnMR)$)G7Q{jug;Y<1%3)%YB@^$_XwrF_Y@a>~* z{#)tQ^7%3WhC|*reE$sdhtR9#2bG@deZzOpH2*bvb*gWF!u%T-w*9M9ee09v-%YPh z_03P2KZjnO>KmUn{|LQ0)z{B5zsehI|LRmfq(72gE&pir{P`aD{&#(NJpcZ8cj!?+ zKlRVH^&hneUw>@PFQWOras4#TF@F=iT7J^&Kc|0{UM=5@=KHQ*KlEF@k=Gwvz7=`j z@U_p_`cI`-%jc2z4WHBBORttMBkvo&M_*sm)~}ZDMcy}jd9JPhV0yK@KVMVfi@xFe z^cT~ss&uu-me$)eOK$}{m-Q@Bj2srfyaaQ4d3`Lo8PBb@*U_ux{k&20TlBBdtL6Q?QStPnho;zWF(uzw45=el_lo>$e_0aLD_HFX%6)SIZZb zp6h+X_voLZSId`?_YI$a-qydyQnr4zd?)h0;Rp1eq*u%P{Z551`i39UKT5BbFQWOr z;hPuQ`qx^T=btU_=Z%_Q@cyUMtL6PXc;A@cqyII%T7J^}KK(|^@cNI|@8^x0-?+&3 ze;&O$b$(9&M|!pVr1>5CZQg9_SIcM7?;m_u=kHou|C#hXw!HuS0`~74zILbi|E5>V zPdfi~`jwZp^{eG4?Y~8TJiS_e()^PCZhE!+r1=B-<(ISdtK}!nAJQL7ua=)Qzj>FP z{~yw;&G{)pZsoH|F!gL`P}%N_ix|uCH)ih zYWX7azTpS-tFFN3k1aolyl?p4k8J(N(W~YCys7X--|*Qz=6m$&RA16Bv7)VCEq`XT ze&6GM|F>s&JpcQ@<3k@dH5p)_or9OXVLn7iMUC`^vWe9$UTg^y*Y!zu)%1(yLQ_hkmcO z*!tC}zE6Jxy;?qtt{>mk^+&(bsy2VfPWAN%?EIfgua@se^L=CffPS7?Hh)eBm-6%b zkbXCMwdNPmeBYSge9+eaS$eg+f4xkFFZzZr=^vw4r}{2^eKp&^I@J&8ccxdT`udM; z|JTv0Q+-bVI=wp8x9AUE-S)3e^&R@V=+&vdPrvFKHea3UYY*A^JAq!E>KpVA(W_H^ zLBHynwtjW0Z_}SmuTJ$n`d`zl<=+y${(O)7`D5L+rvLo0bLde&e+)VQnQ;58FjTGi z`MkCOG+w{H@%nA_?fKhnZS!jRGFrcH_%8j8^lJG*^!IOk!?*uv^A}sk=Bwpv(f@wq zyYjD?KTe)4@7FsOzUUji{;K(3(5q8@oBoKma{cU7U;mfQf0$mK>f7|2tjqcAR9}D1 z=6{V|o$A~4E3C))>{MTW-R7T5ua-X{y8e8Rd;Po+9?$>$zVP~^Uq5ZmzdGEG*N;dUdML_Oku&v7xPBo$3qvo9NZ4 zzC*vvMtuI+seZuwpG2>g_kUj$&!6vcub+p*0nKO24m}Ut%-czdF?y2beGE)u}!|(EQ!>>QtW{WPYK|dHu6feXTIR zH@#ZkKi^Z~i@tIG>hu@Ut5bbO{|l|3E$^Q%%=eA?wS#T_>uzEDSEu>`{VDWn`NzTt z9B9nMgRVyZ_IC;Yx_T!UM*in|Nf%y zYW?3ee~;GBmiOly`}Yl>f6x5N+t~iq^8S3o`-U&*Por1M=kED}_YL2nzl&a->Id}e zz0KCIPW9Psw*TYl)v3OqzmZ;@>O1tW(yQhD^@{W78|SY}zsa_|e%YzM$NQf^ua@`E z*Qn>OcDtRwyXe)aKBr$a=k>>y_dhRUzVC7Gzk7to^Y6d2L*xDTebIkEq2#<*IbW^$ z{{0s7edGK$e_;FHWIJ2GT0V=ef8X#e`uEeT+{pvf|`qlD&9=vb( z0sRT|YI*Ay;^PW3(d-_Wb&{qr^I`Kv8&=kKjM+y2$5KBqs4UM=r`Uch|c<9>el zZg@QZ^TWfTNB;c4`A5IY)?czUKc6?ceqH1G?X770zlL5dUmCC834p&tzRvlMe}`QevAHOdbRwd`6c~N>DBUn9`^4W^E>qO?_%p$%MYXV`-X3? zZ0B!VdbNBJdEf9u`cKoV<;%$XhHqsy|6Y2vd@J(4;Rp0D(yQegk@pQ>U&ZEcw5y#z zwY*>NRQRHA_%{8==+*M|Xufaw4*d`4)v3Nq{}jDizUE$USif(~@2+b5&!=qvYWXgH z5e|HU_YGgHX8sHGYTSQT`0(c&-Zy-k{>Suc`Br!g9B6po@U_)#{zALi`qlDfxC;*X zvZ}d%ep1r!POnb&wKZ)19h%Qh^(F5=qiO3`r~2BOHh(92b*eAvFVcK=s;{kO^Pkjw zcB(IV|1Eas{v-bp_k7{`_dV|W*BRmQ{P(YR=uzLlYHQp2SAP$$AGX%tj^_KWu3z4N zHhnwt-N^ff&)2c}U3#_V*CX#6zDfTay;|PCUUB|>!`Ife`EPqK_s^F1^Wc5M*LnXl z=+*LBw0__44f=1;tL4k+{mVCecYRy`6ZC5Nb~N8NeBLm>)*iNhb*k^ve~?}+--+h? z#{AX>Hvd6-wY)#yQ{jug;Y<15ryY%lq>^ z>ioAiv-7vqems9{d4Im)edGM)o11@#UM-(R=ifJcLH`oHTD~25-|$2F9rw5OtL6QA zN3FlJg{}WL^lJG|G~ai%|1Hg*{yv+Zv*qiN_YL3V{cojLr}~2aWqP%|KVR6tZ_FRk zPaVMX7p>p#7v48~dn?=jSLxN^rt0TkfB#Xwv9t5+4-B(!QuBGMfkvh$Ad2r;XuQ8>DQoF<92v|zTtht_vjC$SIhJC&6)2Ten{V; zSIg&N4LH!4pCiJ7hHqSA`+tI7joVZ9-=<%qu=A&uZ(>+D(3tNV^9S@(^lJHfrRRFz z@I(4D>DBUCx46Rge+Ioe)epX8{;!(PPW8o?&9DA`+rK*1558)CHoZF47gw9VPV?EResGQX zmo%T9>Wk~m=ZA3r>=Zxt_pjmc{O@1S4?XJluY((G{+hFGzFPDB>uoB0(KoKYA^rR4 z)$&<%{rZNlf79llMX#3k*E{C>hHue7K(Cf>NArEdhd;oo-kat-)b_8IFC*_8zNFus zUM=5*V3!y z{k&20OZw%GwDqgy{XBTzm|q{*{4?m)^37=dzTpe{`{>p3e%`40L;3}d;_HtsUqthL zV}A2@w*Fn|)$)_(59rUOSIhhTV*S1`zwvvU{~LO>d_7vfZ}^;k>7#A`YWa5LeZ%+Z z52RPi=aKgfU;l%x|5kdnyq`A}zUUjiLqFd!wtlsIGn(%ken`Iuy;|PS8#TZDqpkmP zdbPZt2k#s6`}BXNSIeIht>5>!pC8sfcKXi`n};6t^F#3`TmQr1_E}-5TJwu&zHh9* zNB;`FTD~56-_`!<^W$uOpDmw7-Z%V^_dl9mE#HW|Z}{v9+y9mHYWX)t-uJlk|6F)H z|MT07<42$W2IpTAZpZmoYra2UQ{jugvHqO?UV62BJ6gYQ_&)uM^y*Y!{MpW5qs8lo zE$^Q%tlu~0m%RU>^y*aKp}&e=E$`14=KIF{F8!1A>QvvO-}nUEzgph!chvp|^as(a z<@1^yXn5aPfA$wU{~da@d||vM?;F0Pzl&Zi--x_#_%8ix^lJG$^1k7R^gDdO&YxP| z&zlNg^bMc=)%O2EdbPZt2k#rcp#KKFTD}(j{@ZuupS1aZmuJgoH9OFl?;F14{Wtxf z?O%=ir~LU-oBkAfwR{mC2L~GS3q&~3m_MZdGQAqNV}2)m;6TH75aB?>xBu7n{|n7$ z<97HgeBeOCXNYj1;k&&5Dks|h)wn&y_vzd8YWX}o4h}Tt=ZJ8iF~9zlt^eorYTSIy1KW+X!^lJGs^1k6q`k5cK{i{=b?Kzv@qF1N-lKuwGXQ%qw z^EUq}&1a|jlK0=_6z>1u^tBgk{wL_w$@A%dtodwt|M!(}{rDdD{QvvQ zf1F+|pJDOgKx6$GA{=O}zfZr&X|{efZpZs)89s2J;Y&m~(D2Qd?EJrzUX9z~8{q>7 z8s0a2N&f+QwS246bG>i)A^o-VYWXtqzTsOh^YursPW40jy*_T|Po3&puh{$x>D8%z zNdI%qXQ%qst2Te7($=p|^+WpO=+&vd^)H+MZOv!P`}Yf6KfcGkf4mYNZ#JKMd|K@E z(eEEa&buz$j`t6><`;YnH0Jxp_0xRK*8fL(wR}DDzTpe{P0q0SYWXbkzTr#y!|2uW zjmZ0k@6vynUM=tcyk{zW(f7FX|7v(VfBu&{bM*P|asJ)mcAS5;=C`8t`^NekuiN>r zf5N<4K99U__!j+adbNB#^1k6q`tQ)IQ+=C$xlh{q)$&C&-#6wD=})6q%jc2zU7f%1 zE{*&Cp1#4BFCy<7zRmk@^(n6Z-}FP?|BLi$&9CDZ;lQV<@DJaZUz^v~|1`ZCH{tuw z6X64gyzg<>?{=S_e*GRCdeqM!L(YHWS+;+*=KJfVTE8u)T2Hn98Mgj{zQ#`Vb>9C5 zdbND!=3%~X%x}=ocQ#)?(flIvzTw-ve?hMfH&y4~zg{ulH+*eA+yCwKYWY>7`M$?J zf2*D|{rTH6^r+{r!TG-mx8wast@&j%-#6CZrC;VV=GF3(p8p>GyXe)azE6K8y*kwo z=wG8(%V*L4eOJ%l{Pz59c&_cg#+GkH-Zy-M_dl9mE$^?FsqjVL@E!VV>DBV}Xufaw zF8xC1@%f9^@4w$+zVC6@-!b9w{P(}}LXW!sdYrf2XKlV(>-YN|wg1KfcK$DhkX|j{iM;P> z{q#Gvxqi01U+>8E^Zs9^A4I;0=KIF{e5S4cHF~w?=aKgfU(z3SzO7#^@8@CtzTpS- z57MhseZG*bf71(WzFL0L`D@Z&Mz5Cl>m9ZJF8#cpv-xWIvStSw-Z%E&SlHHo0KHni zXME1j55D1t^gVjDyuV&C-#2{z2Af~|JkK9nz7fs$4d3GZx1m?d4?;Gnc=zm48PW3JN4ZmRX)$$oO9}YC; zXNYj1F~3dUrdQ*3{QTSqA2`tPzTtcHzou8q7r^0=FRGe5KU>Dm-?kUq`qlC+cYnI{hSL5-q|4!t6!xt;q`fs6E%k!@<&RM_janJvg z;qmC0;AM9lQGxTct z()gU~-#2`*v-zLXtL3xE`-U&+SH05qua@`cYbt!vH+-A^D0;Pg9?ka+->3gBy;|PS z8#RAGzxtPL{c3qX58gNCXYaD}cNx7}e$xB~{bTfM`DV0#-Ocj?vgljaZUpQl%+`r5ng{BQbI+rK*1*XhrsSIhhTj@o}g{|kDx z{G|Q2=$HALtzVt$OZubf)$;y&#rl2Y`Rmc&ORtunwEjN*l2_UK)$)_hU$%=qe@D`* z*kO1QoH{?FF@ESm2d=fA`IKSZyV zZ{Zi=z$ZL^zTxXrcK+u7y3JSP{`mQ+H6#2Z9CN&D_;PpiYtyUcb9aBt_YL3M!~8+? zYWZF@eeQhU)%-opzohwW`8@KztNFbD`PbO~dy)6&3+wj{-`Lyc|2Mr_^Zort`OZG( zH@nv6t5bb_Kl2}?SEu@NfAd{>b*dk}&;0ZB>QrAGXny!t5bbRzwkF~ zzFNNJ=2h39Ys??g?@X_j_v?lC4PSr1?f;APYWa?v2k#rcOaB0Swtuz!r1LkRKY?B? ze_XVG-{W3C-SBw+^>b(FQLmroY&-u4bZz}=&7ZXX7X7*OYWZHYe&2Zh8i(5a`{~v4 zW#oNV*Dw7_H`@BUZ22tmzTx}4|5@~E`38Ow4t$yl|L_f8JKWa)ZF)6s!uRhwei06Q zg7*zyKf?U8^lIE6z85}l$oHz6`~KCZ-}ENF{@AI$eWcC5l3tzan@5@dJ-s^B*N-+o z>tsP1x_B}TLBzkqKZ`^DC zUV3$^@6#{wU0c6e{<7%#^F8kMzfX8P|N1{NG+zG)MF0N@t@~{KGrni@)taA0^L^v` zY13~&ua<8{-Z%V!{#bgoynnqQa`w*1iDAKo{7@qqb#ZnOQXD8&eq<@rNo$CAa*&Viiwfqjz^XGfq``4l2@%;PO zDWONbe`W8s{V&(!_0QJ)ESm2d*H6y-?@F(hFC*_8zDIu+y;{B=dEfAT`tQ-JE_WvxsTK@RR`yO}x*Z<-4^S@K*QRlzK`F{(y&k94;nx94UePjJ?`s_~gYI%RY zrotC}!*}Rs)2rpnXufawY*#yfU3#^=Ki`<|8@@^ZG`(8h?-$-Te2ad=yLkTC@_xVY zzTr#W|2%qis&CW(FTGmcpD)b!jrsK{JAXUgZR=OdH>3ak(>Hu^u=z9S)$+sWfB*Ci z-#pp;UG!>sf4;DO-_?Bj#eQV#FW9NR#rvO5uTJ$P{r&XnRNtmw;vT+!{>}Awc>me- z>eTsN`tQ@LQ+0*NAEQ^x`|B0nH++NsTl8xAcC>!q@ICrX?&tYu%lrLe zzHj&e@Bd?ZwR{u52nRmF`-X3P%=Z5}y&CtQ6+Zm^NBQzp^IJV&>sQPB^9}DC^Sh^+ zKZ9PK>IWY;{|vo4)z?oqzu|+nes!wP&oKWXdUdLAooW6qdUdMre8T)PKeqL&Q+@xF z=4aEZ<=4h9!huhC{(O&n{a+s*&%gff2tDfcU;DJp-|rz?zgqJ%3=fCqXI0Jp^V5v} z9D239f4yS;zH$9E=O1sH|J>HEPW4^-1L@VNzDNHJdUdMr(?3VA zmiO-$xc+>Pd;i${(dq9WyM`Y1{xRVEC&TTt!sDwof710=8`$-`;{TXe%TK!g>huTD ztL3}Ve}C9FUO&Bm+WZUX)$$$wg>N*@pKthLk=3jB#-Gru<^Agw-Z%V^ew|;~{?+o6 z&R_kFHviM~YWYd$FQfkny*kx5=(qW$tzVt$bNbWi)v3Noe-FJn)fes*`PW3JN zBk9$tzNG&)y;|PCUUB{S9{2jK{d)TAck$4pUcYV5zb@R4*RNXhCtZJC`d`wkDBUC^#0)+et3-eOX=0}ooN5Q;oHZWe~n%(--x_#_#XYff3W?l5rsWr~2A)cK&`#uTJ%K`ZfM!>sP1xjQ#`k>QvvLzlUC(>T~*4p0M?+ zQ+<>EBzm>H|9NLBe9`x~_m8{7iW&-cc53x=lDf9@Cn{GuK(gPoBwfoHSVAC^LLB>R(iF3z9y!-`K~d)dzZ~0 z(5vMK>rMB*;oE;V|K_Lc{Hf)8#^>zcH+=IS<~#IidH?gqRQRHA_>z9Lr)|Dke$x9# zoBlX@b*k^s-$t*N_s=)h?;GnM{L}XT8ofHzXV05I{2AN7I@K31n7@i%o$5O;nty^` zo$3cKnO}cs>sP1x>=pALr&p)?;#Kqa(W~V*!Y{&sPk8=(k9+@FGs${re5PZ}z>O0Q1!IsKZ? z+4|L~zDa)sy*kww^f%J0Q+{$2EH&G$bq;rjJG?)~et;qhkk z+Qp~KLyvm@YIFXEFWCCknxFA8(3tNV*MFD(0D3jRn1o$tF^|2nq+ z*R_7Od=`1%@CEO`#Y?t-wfv;@x9HEHSIci0{rwr=G>Pd*I%{yYI%RXVZLwdzgXY)-=tT|XIOkV(C`@|9BBBG{xkGy z+>Z0-|9iFYzQDxa)7r+MB0ce|v@=b^UcW z;`>LqeO7pUwdOAs?cevf`5VkLef~Q_kDA}-{6B`Ov47w2-JNaz3G{0D zGWy?de8V>mHh%-XT7D3%-#2{y{pO#iSEu?R{p|Vp{IOGg{}7x1b$WHG@6I;=6ummt zw+}VH)%>=8b*gV2X1-0YPW8>h%|Ax3miPaAC$1mg<6ggOEHM4`yLISMuiwTIHvd=Q zcD#Pon(wc7%=eA!r%Auag67rolioiI`d#SN@@35qH0Jxp`~m%E=+*L*<`3!bqgSW; z+L3ntmY-?+SEu?q{RimP@{MT!zOnzD{%U%)d@J(4;k)#Iq*u$=Bkvo&NB`D^Z2#(1 z->1KnUY+U(^pDZ2Q~i*B)rD>S>QrAl%AWrd=+&vdPJa)*I@M?NOTNL@ua@_}U!MwJ z^gZtV-!MMM`-bn)7jNYC&z8?4@4H(6v9|t)>1%BHdgOh> z*LnYS7Pa|m`7H9j;T!b((W~X#k@sEgpZ-qzUbOy3IA z`8%J!!Itkt-Zy-o_ur&$^VRZxy;I?fzTs=f+x-8bSIgI;Kfmx@`4h}OkZ z4F3p+yl?o{3+AtD8$|pJD!WdbRwO_=S7^eUJP8wd+#TzkeMNderx? z;e0m#xo|sv{#9#!R!yIK{rSfAQ=i}bTb4GjmMov z`7-jp;d}JIqF2i|BJUf1NWa1|Jb!HYJo3Kb8w=X{kDyn}we34@}Tg;U8_+m_Jz2{F(G>`S5L_I^=!B4>vJ?8@*b-Fh1w~&o_K?Q}YWf z%k{J6`;qqzpKWG-XL_}K9(mvJ1^xHv)$)GcRQRHA_{Qcof7Rt|{c8DUG~YLTNq-c* zTHenaHNUxq&A*0TE$`>S`^NkZ{j>CH`APFzTiW~$mbd+@d>+mBjrp~$&9~{*@{{KG=?C;``DQfV zH|A&C@cCQO)~}YIG=E6{QF^t!pEni0=o|C%x7qxA=+*M~N9*@J?)&G$D^36YIV<$2 z@1ON;ZT`LCc6|R-Ykn5Z_l@;8=wG8(%jc2z4d0^Qer3LX*z(QQ?E%o$`Ew25JJi;H z2EAIo;r@G(@V?=P7nr}BUM*kR_&M+2zTsP+GrwBK^|R%($oqzG^ZuWpSIgHU?;E~D z|2ulMd>(n<@B{kwRQrCQ|BYUq>O1rszs1(CPW1!&Pt&XA{rR2> zU-XUhH>B^=t5bdLLOXvetZM65%lqdG^L=A}PX8f#b*eAv@26MGZxmfWzQ?`)EHi8R z`%feEsP~^9=RXo|$NP_3^RsBaZ|r|SKXWx+zijzV9wl&#+BBv^{eGeo`33!5^lJGm^1k6q`Zuj<>sP1x4*ikz zYI*Cd27 zr~38^Hva*7b*gWyX#P!awe_o0eV_hNdUdLAtz`3mK(9{q^_6-4*R}Pl8tL5|P zzn|b6^9Nhl`k$m%%lD$cKjRy|v%C3O8`=8R^8WQY6~5>jzW*NcN6@QNeQgi(kI<`A zePd7aOKfcGSEu@7FZ1uESEu^+-sZ2MSEu^kKIWgMSEu^nzUDXI#P+Y2_y4^^Jb%8& zeg8N$Jf8plac<~Q-#@bbZT_m8+I+R<`_~KR`^NQ?)9*&Fme1Ym4c<3=Nq;uIT7J@> zfAmkc_1{FVmiK?&f%(2MzxGY@f2CK;m(lutSL>(Wcr!bHC0pLVUsvdzmd z{b$kj;~Uq{fcJlzUaj@#k@pRs-DKx~&8=*{T7J^&zx50AyVI-X{p%g)&o}0G=3l$I z{?DRU%a_smeOK#W!2D0OezyFi*MF1uUt??AzgphE-m!k)m|xI;fL<-{&o{hp_zwLo z^y*YUpkHAdTfaKhXA9c-+mBwI>I?cy=+&vdL;pK^b*dlGH{Qnmvr~OG)AoNdy;|PC z-tqkT9{2jcEj*t8{{KkmQLq1k^FOeytzWJAS9<%eN{$*ZYQVEM(_@e|oii8F}CEUHUK4tL5vF_g$@@ zexUWUQ+=QJUw1p(zgph^`$ALUi@wKQKj(zU^ViQ6p>h2j6#e@{1J2*#?Y#b@^=Hxk zePjQ%h3)(wNw3!W{rSTBeZ$x3uclY0`iy=+uTJ$1`n9*W{j25u-?zZ}ePjK-m3jTq ztL2-~-@ou(?SFIg7tz<*^8M)i`-UIz{%_cU&tK$Qk@pSX+`{I6l3uO(^~n2%FX$hp zSEu?G{Te&k`qinvq(7Eko$A~4zob{E`VRf_@38f&Q+=2IKzenm@6lgNuTJ%S`hU@@ zQ~iK`=Xdh@W6S%$?>!a1=zHAzS35kOfB*V&XuN;z9ld`IId7YtY`$9av*`NujqA6* zrCtBW(5vO!k@pSXp}&S+E$?41*uQW1F8%N5)v3NmzxK|yfAt)XUxWjns`;)lzrU63 z|89CU?uPIG-SB}!-Zy-?wfWiaviWLxzu#)UJzVv8@NN3*>D8&eLqFfUZN6H*wzdsK zW4>?9?;K|9-$ewC z51~iBe+@YQ^eJ1vTJy7LzHeMVwaaY%H`A--i^%(~u3!46=?k_z|GLtg>(}?V{jamz z^!;xYder{gocGgk`>Zfjt@&BBe&1Msm%bK$u!2|1R|^l1fu6!Y@WD@&zueB>R`P85 zdi3Z2zTtaa^M}!^<@4yz|9!*P?lb>IdbNCs#fAfo^_Pfnpy5mU*XY%_9q->+_`rdN z&k*52!*}S9+uhEe8n?q&cjPB{-<7}L)_K0DbzXntRLcC!Dm`Ag*4 z$^Iepzn5nx`-jbM_+IXxo$P;N{uFt({OfoQ!-2;0=X>1i_m1#*{{8Er(0Kjs6aDD&B6_Tc*2nxA2KI5a=2${N>CkN5v9y;?rUFTx@38@~34&A*pkEk9hN;&Z%j_~A?D zpQcyKx1#@kpl|qM&2_5Bp0%g#UoG#y-%o`v`mW~FUqU}*%Xe-0bJp)0zO$CiUwAK` zf400oUzqP3ez3Orchjp=efC!KH_@w8eX*|jXXw?bzO$bBb@%4}*{Oc8zWEdB)u}$) z!2F%`>QrBBXnvu6c>S>D{eQ0y&!6vcuitlv$Mdh>eM66Y{cdFQpW*xtTl2H%`tyzJ zr^ov*x38^VEnh_5H+;6S&EKD1E$?41*uQW1F8$}})$-+=YyoI^-|&r{Z2oQZYWXbs z{_PvSd64;M>DBV3ji2-S^$p*r-)=uUe`@(=Vz`}d9c1Ntx0t5f}u{tlO2T!)J%u`d^?|r_S%v?|6{yUoGE^*6$nhYlqqV&(o{r{eH22-|%hv zU(>7Q{XBTz@B{kQ3R}Ng{+ww2zQ=w4JUl#}|NeP$=uzK4TZh~J7eCnMt2IB1=KHSp zProgFn=M~P-Zy;x2%F!cSIgHU?;Ad&zk*&Z--x_#_$K`W^lJIzBkz0M`JeIr>F0l$ z(4)?OkMnN{x6cYg)taA0^L=Ce1NuMFtL6RqnhIa^4L_uxb%@PZ%a_r7-|(#??fE;B zUM=s}i}}9c+w@n{tL6PXc;E2#qip`O^lEuOZ`Aw-{l>Fx|7v-EzTkaheop^MdUdLA z(mzPAmiPaE^_cG)^E;>7{$Hb4%lrSodU)UP?a!Ov@=)8qTHfy$-gh;h{&e~dJJol2 z|EKBIslG?Q!C`#;{G0Rpy#Gn`>eTrI`a9{>seVYm^x=H{{hRBrU1-nWA@pj^_y2np zoc5azO31ShW8EMp}&A$EuR~o^ZfaSAJG2~y;?qt zyl?p0#kT*q9Buno%XcF0yIMc}N%S4Id=`1%@IBuDc6znEKi^Z~i@xFe^smsX-|$2F3+dIVzVVdJe}!J1>Ra@i z9c%knr}{4aiS+7JKcxR2y*kx5p0@ojc$}?Yo$6ckyV9%W{onV)_2YZo_m9tp$MfGm zt_?lv`$w1acRSwJuhxA3dcl0(xPJQdXVI(W{p$tZH~fJ9C-mx6Kcrv0W$RbV`~SZU z%=eA?&3WHiy|?W_ua@`!e;e?=;Ty}EznESv-;Q2?zTtcHFVm~#{rSdx-|z$a_nu(; zSIhf(@V?<&%h~$BO|O>s^G3~Y(=Yh}o3EDl^G40jmbdw*(5vMq&Clr{qgTt~wtlsI7rzJxKEeBjudQh7|0=y2H_Zwke%`40b^3qMt5bbOf5eHles!vE z(BDk2PW3tc>-6eW-=yE;B%XhEsxNr|F1+!m0rS74SIg&N4>-{9IU*cr_$K{IAK~@S#_iaD9zJlO zNBK7Ie>S~3)%WQipjW5*`Uh?Qi+t49uTJ$%`n~DZslH8r4ZS+m_v!yhua@^eZ{hs= z9{2j+@|5YX|J_25di~c=wDb2=xP4Z5e6{9hc=E%6#{3Ks4m7Tx2K~w(Gq1+&xPHp; zfddU+BEo@&@6vyaUX9z~C%yi9^uM83%lm)d0P}s1JAa#WoNeufAK8v7s8FLauDHEvHif31`3`P+|PEkEh}mGrmJt5bcO{uO$)yg%Rn z&iQ}W$ETnFgF}xx{~gYsr?m4or+NOe@EHfzGwS^J=r^HPYyBl~IONN!=01P+g{8c(b`yeEMK$oWFgezkgW!h&_LceA?!# zH9zBHphum*jD8DxwR{wz*&8y}8`NH}44PSiJp1))0)$)_hUyJ?$dbRw2dj3{CXZrcu zH1w$RS91O@!tFSJYR&ime^=PQ?{V)Ri+*PM{1rown&094Tf*&_uhxA3d||$Coc|vE zfL<-{|9dm=zTtpCxi()dKk50aea!rB^y*Y!r@xS1EnmIy)#kqc`NsO|r`r4t z&$IQb<^A=F{riS*(?3kFmY=l$4*i=x%jb`s>bt!E$@FUZBKrG_zN`ITX#2mCzRs4< zmklQ`9BAy{H+=I3^S_{1%TL;WLBH~U+5Xk?{(8fF-{Q z-22}V;qmDBVty!HTSc;E2l_iX<4^lJG@ub(#kDBVh z$oq!x(DyZ;E#Hp3Z}`UTHh=%m+xpe=^~n2%&*{HNuTJ$%`ajXD<-7PrIPhsI{KGfq z*M4B@A6{tdSL3Ex;iJGW!huilzTt~I%s+FHc{T12@AnJu8@@%q;TO!SQ+-K)A-!5Y z3v0lE#{3Ks4m9R>=x?W2<94h+3m-VpqkND4FZAkEKcHXwV%xtu)z^A<{&RYDs?X?; zr&r4t@2IvvXaBx&{>lZ`t#11~y;{Dx({%3}zCUIDetNZhZhX#s-|+R_%rAb4oj9DBT}xc3XJ-}ktmAD8^% z^q(Ks4n6AU$MXHQ{`= zFTGkm0}h9LR@L17*AKP*&$`mqua=**{*3-3^lJG*^zZ-s#`&*()aG~T)$+aQ_uszZ zd*_>fnqDoR;TPe+C!9au@PiA?Z}w%|zZ&cP9{2ure0aRs zm9&3+EcB@Nuim9LfAO!`e6{9hd<@O^U0px)ThR~L@(n<@b%|x{)_Z#dH?4H zQ{jug;d{@U-}V~5{@L>We8c;O@ALkjqF2lN{lfc(Z@ysj@1+!mviX0|tK}!nAJDIVJzu|U`68O{8}sv5Z2pP#YWYd?>#v%> zkzOtD_lxuA8}keL*Xh;r^=SRR;al{ZeZ%&zmhVU2ceVe2+4@hV&)M>MS`^Nkp{j2n9 z`G=$R`yTi6*EZjr{`1$)p-27v)vm2q{cQK!a65kgsMh=}n(rIy@6s>OHLsR0Bkvo& zF^|nZfL<-{=i&VMhHujM=+*M|Xufawf_|PGZT)jPIQ;(OYCKRl@CoyMk30YG2#@D~ z{(W!gQRlxt!}k9d&R1g|=4asphvsKhS!4YT`Xz3%^{eGecYmzkH++}=XnM7L7J1+B zefpo!tL6Rq#(dxK1FipNTfbV~pKo~Ivjy$^FZpd-zgqLNXufZ(Kd0ZGUM*in-Zy-Y{zLR?dH;M*g)jPs@6&&kUY+U( z^v}|(<^A)8`Mxo~KGV)$_8mKaYWY^Qf8X#W{eJXn`Tz9qU)>ZQ&p-bUh933&w>kf~ z@7ns+nx94M_l@;;>Ay;^maj+NH++x&FZ62pGV;FR^M&mEZ}vS~zgj+vyl?n|{-gA2 zdB5JN@I~M7E&89+t5bbRzwvFhezm;cFXsEk{My2{|Fh`T@_xVYzTq?aKD}Dr|Mx!N zeZ#j_wE1tm-PW&`_y4^Qc;E2F#^$H!)$;y)!~3r0(_gCj>{MU!{)>E{=l|dIZQg$m zdUfjj4*eDM>QvvQe}-P2>U;D%{lNCGPW65IOX=0}{@)kG^XGfq_pd*P$Mf%BuZAA= z{x#72J8b=G&G*+k=KIF=Q`^L@zaP`9<;!pv9BB9w5e_tbNk4y&*AE-F&k7&@dWH85 z-{$={rB|o=4*l8mYWYT30}eFi`^Nk}{SWBX@~ukG^}gZrP3`=>La&zpPrrZd^~34U z|6!r={O=e2{q-j2zZPzv6^5!cKa1Ay8|!b;uXCq)wR|)3zTtcHhtaF$%gFn#&fjKs z{%)qv+47CZ`>xi{`_H(G>yLaMdEf9|-hUr@wdU6&@4MPR{gw2+XukjR)+x-x1BU~j zs`YPS`+r*NXKQ}Dy7%1c&o_K+OY?i(ZTnZtcOvf_zC(Wxy;|Py7wh*8-=%-kk8HkL zzTCnVfQI)C-#F3M|2BHHd~f^d-Z%X4+vYz+ua<8bpY!_n4WEC<{CDZqslHABmV0df z>Qq0VKbT&f>Kos+^>pzoTEx$wb{P`aD{qx@N zc(ZBo>8GJby??ei|M2^4{c6q6_!wwhzrJz(wCUUQYTO^+|NQj^?;CzVe=ogSz6_6n z0}Wpy!hwb_ZnN{Z$o;l{HEzfJJbd6l!{>-_py508`_QX#dx{^>f0JGBu`|q&j+tu{B^L@iNeqjDWdbNBWdEf9Y`gtDY^`j0B z=dTk!aNzN<{thA>X!!aaHvfb4YTOR*&lkLJ_>BHL^lEwkehcp#zVo8Z|24f@-oM|% z`-U&JUccJQVn62f$Cmf!8{RkkkoP}{UM=4Y=Ku#9-Zy-{jm>|YUM*jX{{ENm%5Q5v zd&t(Gv*rD~QS;lp|3UQXR6n4*!HhZ^?mx1UY+W*?QH!& zrdOx>7X9Ks;p>krze9EP%)NemkNf_ydw9IrwD@#H=uzK4dYm`2Z}ZifpYbu!xPE-& z`Ww)1O|QoN@%k^q2M#oRfd~g0K7YHNzfaMtaXWlHeBeOC`-X4Q-$$>OFM-1$Usg4D zexLr$|84tM%V+NXnC~0&hxA9%tL6QAN3FlMz3sn8ua@`!y)Ss*m|yH={v~>~y#Mcg z!TW~Kk2SyfBes9Fd>-xJH+)Hd4!v4_(*E1@KciR6`*~QuZ_Mx0@A6YVe{A_l^9Q{D z?euE-X0(6bnBO?g&fmg6v-xWIN%M31CcRqT&%^$GV}6_dOY~~_N%K4OPtdDVeV2Z% zpWFV`slG>lJiS`p?|0Px>&M&qzn5MuKWYCN{X&o0`qinvLBB7(THar;Sif&Pe=Yj& z(5vMqt-qvS?0;DBU+<~Le={rrNjAGW;z^G2LM-{Zdj z?HL}=fB$=b=uzMQa?X2!^VOQ4MX!I~c>W6dReovfSIbY@f0zDXdbNBR&G(J@jT7wr zokOpdpY;6Y^f%M1Q+<>Ed3v?HKVNwMd}IAB`b~ai=T9v^Y5gVrS@df8Ms)ssV}6(Z z8}w@VR^)xdXCJWh|9g71yx;Gr{pa+{{Mz=fPW1)-LG@^Zb^te|2yvKfktk z|BdL?nx9AWePe!?{&ae^ykGBB_@Zz49{qRe)$&<1-#7e#e$mHl|7v-^Ud;CmpPgvW z-}~s*^8Dl18XDgBxcC3Bg~#*n|F?x6_5NRQ{(g`1`D1Io-!JC-#`;U%|2%rNd>Ph_ z0}Wpy!hwdbon-rem|l&WaQ&3w0|$DPFX@*b*!tD-{`rRYjrnc*6X?~czC-^Ay*kx* z>DTz3tzRwQsCGYh|Gu&Q0sVpWYWZg5eZx0CWas~EdbNBj^1k6a^!L)M)<lB;6#UE|`>Qq0ZKZ{RTVP`HyKnJJk<)|8@Vw z^B?(-M9-h^aqqt$4v**Gf6og&>ixHMs;&R6Pw@P)wf-!c?;F=ooA*D6UM*jbyl?mp zeTQBxUq;?He0G|x|9N_~yq`A}zUUjiLI3VQ+y2$^{_pF+`-U&ixA|w#tL6RQ*Mav9 z-}<`w9=%%LuNU5THJ^T=zu5XqcB*gl{wLF`Q+DBW7f3Jl14c~p;eEt+) zKWzCtTEB1jA@6@Sy*kx5!rzF(eP5(kr}`HCHc#97)v3Nqe%F$Mf%d-22B5!{hny|Gx=6>iwh3`KJ$g{jfDZi>@EvxPJP) z|99!t@}0>0hHuSl=kIlTwR{{*Ux(`Bvn8!}sXd_=l}uE#HZ}Z}?(9JAWt9t5bb#e)E5& zSEu?8{YL+^^{Z2TzJSd?jb5GV2lS87t5bcspv_bvysdC}&pihKnpjXT5UzkHr;UD}L=5*)v3O{mHFjgw)Lx1{cvmZ2hpojee-SRze=x8_1$gF|D9f)>g(H?f9ET< ze|4&Fz1{qU^lJG%@eB9-`yTiH^H_L1|NisO(4*de`rF(5&%Mg)kFEJxHGS^&=Ns40 zkoUibUM-(T>-Sw>Xz1^;F98*KSjG~YLThxc#NtL5{^`-UITpGU8j&m!*|zV;4V z{}c3TdH?&3sqjVL@ZEQs-}W`zzgoVG=KF?k>}39GdbNBb^1k5<`Wdg=e6@TQdEf9Q z{cL)*d_D5M;oI~-qF2k8k@pQ>-`V!Rc5T_}_wQsM=j7R~pK_4nuxrdP|C zk@pRsUvKB{VtTc_f4*@3e8V^Ce?+fN^#y&lknLYB@Ar%OzA?X~-;-V~e_XVG-{YRY z3&P|1=kJ=(qn^JZ=kL6*tzWJAe!ZjCU;l=k|5NGJ@@2Gs-`Ibf{!V(eynnth-#2`R z{$KR!RNtlF;|;cdwR|I5zi-SR(6{N;@_xOe)<2}bpI$9rMDu-Pe)9%9|IgB^*6+JIfArs?A4Kyni@fh~*Z*_j@%;6_@Eb>8|K&IB{Cz## zJ}WF*t@UToeBW4qhyGXeYWXtqzTva3&0l;`o3EDl^QLfr_jvF*{oCl(@{^wbCjBM! zYI#3z)ch9x!}MzT54!cj`yTiFy?SN4|e?{_Wv*Jby#B=1*FG{YE?gPtmL8 zi)j76asFHMtJiJ5T7J^`FX>BqwfySQeBa~F-|gY?{Pq8EXq>QvvSznos3>Id|{q*tfEuh#tfLbd>O@d z>QvvRzl>fz$1hy-+g)WYWYUweZvpwKS!^Y&);AVfSwBf@D1NM*w+6by;{B%&G!x8q5lWH zTE2+9Z}{5#ZT?y-@cLoP*CX#6zRvr9m|iX4iM((4F8#OZ)$;A=?|=J-&kwcrzeul^ z&!YLh;S2ipRlO38;k(@b36G5Pr?+rhse+9i--p|)U`lL7fi2lp;YWZGv z{=DI<*T?bSMz5AHvh{nzcj?zIc>HYnLFT>TTW^T@Pp4PQPw*sdcvwikc*7TO41X-W z8vEn^?W7NE^4{=0`ft;#7yas)w}x*V74!d1ua@ryU!3m^-=*JnBc4CDd@J+b@B{AO zp;ycM`C3Sy^oH*r9qa!Zy;{DX-9O&&WjFk7^lJIa&KKr;*Yi&d|HzHw`1|ZdpB;Z? z4c|B^`~tmNewe*~dBYFi7XAc!wfw;5Vg26lowtX-kX|j{%)B>zm;QEowR|h{-tYtZ zjUE-}Pc1)wK)e7N>-UE5eK^*?54~D`fG26g1H3nU`O)wnq*r5qeE*f%@Bh5vyJv^L zkzOrdrPsiQ#{3GAHZ=U0e*I-}{Azr?o{uMK!vlP24PSgF=I=+Z#%}O_z2Lp!Tl9T; zwY*<1cyIWM{u+9cI~#`-Hn+R&Ka zr9Y8gjj!YU_3o8^NgEp88@~CKn12zyTHfC;>iKp&@SO|7-$}2QA7-?~VCG`jhC@^3D3}tvG+)@FV)~(5vOUnfHcoUlQy88@*b- zmw9jaG5waC^81f1-^$LvH+=K5n12AhTE58Ud&9TrPo-BcdOS%R9v0Fsg*ANpJ2C%8 zdNp>#{ad6DZ0Oq86%F5^zu#tY{OU!ICuv*s*6_XW#{8GitFasAw}I0p?+rhuKY?B? z-^tFuH+=j1G5;I%YWZRI{_PFl{7Lvf(5vMOJhAnA!?&&uzrp7G{$tBGgD)PxH+;$c z_n}wI_wXcbcvwikc*BpbiTS6}tFb@M|M1@Fm$b=y!}o3se<{6M-q(xy-tc|;3B6jr zpS^#2!{yesB1S{^j)QMUN+G!voe|Si^UJ8S_6*uf}dTe;wN& z-Wz`MtMJ#*tK~+4{ZV+joRNo?b2A%Dgvxm;USYYWZg7z2STG zYd$WHUoBr{-Wz^G|7?1-ysvj5ebO7g_;Vcp5%g+#UoX5je2e~4dbNBXPtt}5cyIX8 zoiYDTdNuaP_fL^Nu%Y1#MB32s6Z%cIiu0$&*WtVA0~;E?i%1(9zVnxu{|b6FzCO?V z9{m~gYWZ$@9c<`n^P7K-`8Uw3cRioJ^?1Jju;n|M z_l9r(C*~hWub$Tr>EBPUmM^mT-u3$FFVp(j^25w~!}l9csPC;+o)E{s*vZXv{}1W6 zqF2v5zq?Aze-*u2zRK3`T^~RFhv>&_dB0u@>66~@?Nwv`PwCb2MK<3XzC*v})^YyS z@+F?64G);_4L?{d=0BZYjs0={JFBN((kAZ>U)(4BYv|ST{aUZ^-ta^EKD}DLjVEct z1J>^i-@I?kznNZ*{jvTLo}>*A@ZRv_wZb>I;rAaK`@@gZ2R8X}UD5Ev`-Oi#y;{C& z`(wU0e7Sb`W9ZfM`XT*!n$Mosm+Qp*TQ#38KgibajrC8s|0A9l=T9x)%e*&yciou3 z6TMo#$hL-;Kf#l<;Q{OShHtMQ{z`f^_Q&^6wR-v`ZSvmm zgNKA)<;ijUi=7O-&zm;C|FH0nr&nwKDEs;EjrpBNgg=m8E#J-l`H46DqzL~pdbPYC zFV^o3-`*trwe)KFMmFEO_M3%Y<0*0e+HCoLI)~WMnBPaF4Gllx{!gJ-l^ed|dd(Q{(v6@-5pR-W&5f z^iQH!%NLpVhVRiIO0SmhWq<$V4PQJl*8dTDwY=XiSid)X_o?Bpr&r5&vh{nzPw3Zv zTAV+%y#IY6=6k~rc8K{Uy;|Pa3-1lzd|vpY>DBV*XMca`z0|*dG)S+voX3ubt5Z+= z_m4)q#Qc+<9>=fN{F1MM#`?YM^|!DBU;try-Kenfu{y;{DLd2je~w>W& z{QHw?%`db0-u3a*KkC`xM{IdNUYtMg`uKN`<3EYMWXtn`jRbQ24B4Yz3cUJ|JOY?=65q+W!@Wp%>BpoYR&ikv3~D* z{d>mx_k3Q=FWK_`egp3fKin()#q?@q{re5`y)l16zrl_?ezttu=D~X}b^Sh>UeDiuzMgv8^(*&{^SAp> zF<-6uWj5a%>+jN^POp}4X5JgVM}IxNTHfd3_`Tsr^y};#>sQPBJa}*TG5s^?)$*Ne z{oe5H{o?$+kzOtD>&1L;_#XXN=+*MRUU+Z#KK(!F)$&!gesB23{;~e;7UKM=<;%=_ z!*Ie}%s+>| zWXrcR?+xGM{x{OA<(qhtHask(U%cV_2gLjbx8wNL*dOnolk|a2-n*WEVEBr@$Cmf? zV!roM??3NPujlVSpG!UM{b$U1JM9|lS8IMVmcO`uZ>)bp|5kdne35x?_~!CB{>$mr z@;(p8?+stjukoT-zgoV^=6l0;>35-5%Xc#G4L_kjon9@!QRcmux_;yIdVc->l6u

    +bz&NIQS|=`kieM13(_9NTtzSoaY1p<}tZ*7$_6D^346sp{>xbi6^Wb&Q$c(417i zVTm^wH*d|cdFrPx+DmVlb)M~`bLzEi+s9TtyzmfJ_Uzgm)PEJv!xs-xAG%rag**>8 zJVcfCkPk4a3&i;Ta*Od~SIw$D%zKFX#546#&+JN-hg}a*pSUzZ{bVOLv30iES#g=& zfpDHw%xFqBa+Wm7S@Wkp>4J%|S;oC}F0N+AC*;d>{c7w))ch*D2w-$rzw#`1+cr8j zE8b7?k^Wn39v7E~s80r6uG7q~uX#A&A?g#~jBRB4U+|P`a_{C${~G<~FPHmYhh;z2 zJ2l<9jQcB-z1=E!%4NJ0F0Tz$`~eRNvrm%p&ziI7VX+bqcFMC{&I6qiEmz<{P7sUB z-~mn$xBC3SO%SL0@PSQmclzu>O<`~&`2Z$} z$-a8<63CZj^T4Gn*ZS;1OW9ua%>$MoZkZ1+%w4}KeS27rPkr`4CAd?4{U9ZvXMOqr zC6G@6ADjfSRk;Ty!L0Y`gOXq_*}qKUu?XNHa$6q=^Avho0D_Z@21mg%MtaquVWLJid$p9b=!}h%Q4a%k7g?9b2`71 zYu|QG?qhz-=wxI+T2Q%;%6>d(*|^SkiYhf?EP)?t5<))u>WZ1$|5= zTGGkpe8kwsJ`8fRI<+ofFUW^jD(8y&Xp`M`Uxl*l*P$wPN^&2Fs+hug4YBNI!{gMC zN}98~4O_P~E+e|;PjUrgtnuWI2W6ET3ggvRkt)@nmM>#fP-$jV<&>G<->OuLEuSW= zluF}$oW}eE5vGcLnp2hQ6(3i|mt2=kj8WUKG#Kv+EsLI#iKy*yaODQ4+>cdKpW4#6 za_UqvTsECt(X1;!HCPs7Lq4@zsW6be_bl_|<+er5MvsZ=mox>Rbo0z{wYAxsyzGAJ zrQL(o)@HX}Xsl~YHn?uTUc`3V*m9=G?Vqt5Wy9FwAH-1)mgUmTZLZ*Qo~#NTpR!S% zXmp{+J-1h7e9Idi`ZFvn8ixFk~LuMNxK&@F&i#NnKJF7v_B24jMo|Duy=)-|s9yy9zX{au`y z)*0$sZ<$PP`<8;%ZL?jrfMr7$X?fxPDTDcBg8th#?zLF+^84i-ABt4y&~~84XRk#v zO>vKCrzu^yWaZN>8H|M=NpNesbKDjBV$~QizT9Hm!)BiZh!rDnsvp@AKW(F+P?=A2 zbu-h+*>&@yvzzM@NKvL{!xwk~^K^g`cfOOvNHouF}4ZTw}7 z4Gb{=b6=VWs#a}IZ2VxfWpFZ4*P1vok(`^5maDIyrQCv7K@jf%6{UerkaoVsi~!lqxKI_XMd7me4AM{ z#WhtGYPLqj?01*6S7c#5w*XjJ(rO`KrE)28+)}NCIBuz> zi{l=7-W(@+4c2H{JYMJP6}vL?C9M|9jMsUkC7SP(cpbzWU4Sh)Ugr(#)Rh{qE!qOc z>%0d4r$rb3^4oi=dGxP4&n~=BbPkstuk$^pQU9yQ>w+Jm4$f{`Ul*0HU^25ScynZG z@^N#YTI4MKD5>Zph+`BFS+>S`5@ow`beA=L7|rMzlZa?;Y+u|`L?c&n+Vzd$twt@;B+UyaVvj8`xg zm*a~rr234^8nZfW{sOd4SxIqPqrmqG(FMc)Fp+l)7CL_e25(KbX|(r`7+$cAivI|% zsai(-_R{7Zy$fp=kKKiJibn3jDt!^R3#?e9s$0}9sHDG23yN8F2a4DQ8cQ);!Dt=S z4_$2a8L10Q>U8;w(}k)^iqZwueVznOOzJ=L>Vih;ybTzi{pju=(b=+}l>fMFt5ilr z*6Z<(#nw8-qp-Df(fDgE>=}7;yOrc#WiNU5Y_VmHk#6zVQe1!SSqfP71&X;AUH*(! zFwT}@TNe*~##W0Nofdyl)vBbVcxtIww1ag~so%_UEe+B688CW!Ywb^QGxvMMQe&s3 zV%hOir^`)0FC%+^;XnwPX#n-hn&koY&=^ zD`eGMMgY(0^KZ1`fxI*y%ut+tgFgH1N8???x=gZFeE})|Vr~8$s-H+?KaJ{q^a6W6 z?2#ywbI`OsSv~MEzGjzE|1Bw*cxoyoq2v_>NGiF?zD~L>X!o<^l53F8*Rm3fm*#$y zWQ?s$dHk7u^VaR*r?HG{-O?}nYlPe{FoMN8zqY3()Q_JmOUn6I-}~0CdWzkwevFoT z6~7{OeLsNBMv!b5mGksfr^QG5&f4{vxU*&brR;1`&tx6&aY4SBp4zh`Dd;4ixbxWo zQ;vFTZuZRihA$p5*brNF1<&(-4OKd~`><=~)O zsvj-dWN?F$Ee+F;oFR1SGB8&v%+iMH8N;j%UUjqt?SJGYCA* zRBEJo8mZtIvu0Pf%w5>k`ruty&Z<37?k-eWlIaR&@8F)8IahNJncqO(oCxQZyWH;p z3qA3$keiL02K4(~$eZWxnyoj8KIb0(l=+){Xmph{`zWmMcNpn1dcT=}6gEreZomnM zFXjDg1~OjlFOW_po7H!jlL`M%G;>XL)Gy zLBFF&-1u3GzDKMXqG1N|eT*glvyIBG0x*2Rn^%({4Dj@sNt?TJ2Q zOj9(irfU)fjepFaJtMa*y5%>VxdJNWyR38C&GAdoyiuRF%CYJDR@3fkId_?En!Gck zy;kvrXfIzh588_tra!Ogv#qW*<+vp_TLpbAu@$lE43x%f+WZ=iwLNUGlBORC@GxdK|Gc zMT>^ST*<;{XnAoZ;7b*za%*UF3zueD{k3FDt(pP_NmG#zGZhSt{;cW(na}kY(|}He zzgU>lP*NB)Yk7C4E~NCE;Ab{L=VZXR=b^HnggpH>lS_zzZVJi?h(&c4iH|PzeS}Mw zn#H51OT~=Z|1mL3ZPgP?H>ky`?B17|{7XgJwUyFdp2&S5M0Ab8(qPXpuC=Q=)#d8d zH_jS@U4yy4YG6CTLVcy2sAM9jfKR#@?>9~8&FeJ!%o;8VOG_epB_)j(UG(lhDMsHw zozFotj&BS7ECEfAw=|7UG{)uy$UT<2l}I}}bv`przG?}{CSS>ap2^oq$5P3(`&a7Z zb$bc;=8Ji}nlBsJ7P-3ehCDM$&>I7DxaQ5wRRck-zp0T>7fsKyyff?Z*#dd6nM;K^ zWhJGkTrIynV%1(=VhU!uFVa!Tp6F6WsYxhjRHv-O{FB!eEcN8-`yB&1F$otrk8x>piqDLc_4`KzRCn8`l1WpL2`kZ)oBZm3{WQjSNw|@apNrp+f1U=PSE^Zq<`iE zdPd`KB@%+G_WqF(rZhzxlXLSQRrH?@3Tu{;3p|v0CxU{C#j`*`m7*!2poVAsH(x%q ze-P096V)kBlM6zH9`{dK=?4&84;yt7FKbfN^sHuQPJX2QAm*6|36*SA5 z6Wne$3MzRAo}8Oj-DTyQoW@cN_d&)f)el{wC^6^cOzL!%mUQx}0%e_Cb)P3e7s~rx z-pMse=WUsZ$4hsA$~@|s?tGEYKGq7dmy6a*A|$rk`a+ zXY+I}mz5fQ80a_oF&%4EDRF#aYQ}!yeTU(+nu}1Zf zyRJFAEtEA|s;-F}-&Eel>o*AM_Q9^wPtLQ~@XU6BSMrM42#|ejDyK)Bp6%>!}u2tiiOlzzz+M;Ir>XKGJ0~u+* zsB0e7xt5>Z53M%hPNvqri~iR7o{|SvJc$a_Rn}Vpw=Ct> z%F<4X)l#5LRzWu^nC&X#l`jAIyeV;WK&R4QN^{j%Qj&AiQrf7|-3RoWMCjH;oznqR zV+khuOR`MIq76+(q8y_>6jDl#bW|)WHM;34mJ#js{3Jqq4Ii1uUZF7ISVFyiZE9?D za_-)_FJ-viDXFHq+#5|xl;T5rRxW90pK&c?^O@O`QfhztMB}gNh31jivh9YwVl#iu z_GhOnqtdflXRAGfeoaRr(UzuP)BfaGrlD1R-o(0$y=+HAU+){uh z0C~P0>xgvLIjH+=*A^VzrYp8WR=ok|wl;nKjaGCfTe=UrNv7|4tIeEFli%s8T~Ud% zR9j_V9j}|-^`kkdtwB0p15ZVZY3?sG(AG?l-#Sc7*z1)w|8!ARZ2D=dmVNE0HS3k} z^WbdmEm%mfCZb|*A30j+XLf6I$j9W?R^D@NtC>>azqtV9HG%bSr(ovPCsvBR%v6Ck z*^^+l6-9ENwUewV%02a2Yq-TiYZ2h5X=|>6A+8mv$f%9Dv#r-7RWnyZ*I5R4fiO(uwhwy3kYULz57fnTSovoIS zRAeh(JQLZ9dnO|NB1_R+TEsxf(b}rd8dhC{wY7rFRctL{)fp^QTebN$Sjj+LqJ3R- z^&6(GrgVCIMroUx(t@O> zQA*ZY3f_1Lvf?W}<@CY#9@%7zg8JpB4R@8k@`tm!??mFP=r^M{>v^UY;{@gs!DP$p zNBaJ(t#xSkp5JTFshf_$`DkE1kuUC0ZlOoIXa^f(qQ&`e0#i=jIbj6{glvAXe7UV-#ZJpXzR(%R-UQ6A~WV&vC zbar!HCZ>Kp&>TP7c+{-q3H7vDFJy!lAA2Q+Go8!j&14+?r!nwrPigj#sa<{>GAjDa zZ)i@=R#4VNCn}P0D(90fMHJ0Bp5}ELizOXzg+8;6r;?IRlqSYnrpmus-tlap z&gYU7PpKAu?aZUTtD;i>>}aAPR$Hs$$EcZV(}A(^X7yh`FPV8(50nc0X>>~jUbVf_ zfLA?_B;ZxeGX<2q*|CQuYh*6W03H>cSF}e_tBn$)zlYXR9jHj;uZ%ys7+o~#dzjYg zD;D#;)cK6~9x6&WIl9Q%5AHHN8mIHP&cm}cMho2c&VUDiQu!&;}@nhc6099?zKz@n>QwO3B^ z(diE6Oyv_%MSRmGk=(Q$@A_>V+(=&QF%37_I zlZG5>OLn31$)^mDbjhK#l;be2Q&>{Aaq0__XdF69IYqiK-QUuSqj@@)%gZdq4gA_k zWlGC@^?b{CGa%CvO|(o@k5@8&7QFQJ0ws|ms@#%?wwhPc&{ptB7TWTjNkZO|Ea?Rr zoe^t*Eezwj8qNz-SH`Nf#IUVX=i6jO!gNp%bWyZuSk@WSDJm9@wR(JpVO?E6U9O8^ z{UGe>nxk{IhLXtUZ#BGx!^_>eJbk5yjj7@FIMXo&19l>57#^>1hr z>}_TmV-4}y(dLoE%@4EcUcJ;+^zn+1wpux%*yedGr>RIlw$<_xmTl#W2WMOHR5YDY zFS?~=+o)Wp%3e~^#pXG5c}qvvX`(fe9T^Ut`N3i8HUD4q+o@p75qE3G50)IZO#kyX zOVQUlb7p*=i$>dEcF8cdelARf{)c?4`lN3<(~wmAjt0EA#9beL`pT=;hLxx@SdI;1 zu#)+>YIIoaA6ou@%Fa}mA$BtNT{vYL{O zrLOVVYUOg4ZF4}idYw*3=aa+Tf~sCok>qEsqh9gFWg> zha11mk>9qC%>UTK{8_!{tl3?)XRtSa#5ctMPZNmut_H2K+I4-(wYE#ta4m1O7A!Nk zst)8zC9_7wJkzBDzZu2V37t}(`NdslY1zhAPpPL)7vTF(CUR}2&h4OisT3pqBuhoq zsz6+Ab{;dP`6Xl~N4;{gk(;U_8OUDEN7k`dD4uETQLwZ>4&poIhny#SCQ1OSWe}{Zo7|l0~xEYR!xj z|C5Q;tX~z$s$#MDmYqN4<@a(CzzWP9)n6A!@_{6N$|mk!6b3IFAR&yTtx|c!IpGoMW)t& z>ESVZy$K}|9x}>9k&v+DCPW#Gdf-4*#qub_5LW`qi&u{af*A!=I~+)yk)r{-!o<$A zJ2)1|rXWN;cqm8!-?fq8O|#qgtgDqn2Vp2D84V&Z?s%XHYeoc3QZXiIitMN$XHDAC z^4xRDS8}+jGB-IcD2~{Nmq!Lg!>cbwK5%rXW_y$oqDBhJxmS-8iXjD6J5Fe%kt0P_ z#R(UD2S*FtAcU|7j~7YkJ2GOtz23@2oq=l)kbIu9}}-aiu~1qD-x6C4R6LU4u4v4Ja_jS40( zge?9vCXi(@iSlPTOriE!2Gb}!j!cp53K*Zx@aS?Y-Whnc5Vx-^FPr6i`QU(gN+sGLAcIbz8sjXg znZ1x#!z`Pd;x`E&{?y2CkAtR1DX7BOOM(TaT90Tpl1?*{m;>#m0D3i;sO? z(v#ZK3H!3&G1@o}YN1%Hru3X_&Xl9$dQ8iN0%3Yfhf(J#EnTT;DYtWXJfy7#CFWS~ zm;=3S&nVPl(C7K}YWf?yh4QPvEX9(Kcfwz6t=5y4J^X*OYF6`A+c(Qy`=J^9IgD@~ zSIyZ1-dH((JDZ7JnRr8~E3Y&F-78AKqJb>;2V6|MS7adoNzkX7KI{EY1wezTNIR2p@qBR$^J< zL%7h0PUlUV!CtoW_QJIp>W5V2`~7BSdrb%$2@WOZdgrY!sHT^pUw17UjRcJqDOJGq!(zP;eS;~2 z?9lx5L=715;MK4NZ@{gf8D=UP<-g&@M$jhE7pbr3eRm~aab&;EXuOgUJ=qcgCo=#9 z4f*h%+Mpo(6uf4b=uv4+C-C^lEb?tgmsBa_9F!`Vd$AtJs--A|mot7`Z=a7)!N4Kg zG|ab)-KA3t{|JmSdS$pFYg28>F+?{p$BT^+1+4C>+3X;_rT*u~N787(>yRfv6xR}j zk|#1)DNddi#;9(;%hx%9AZh~x+#oy%TyJOEM7M?V(JvR*06&|(gt9N2&Bg9=R7Go8 zz3mq*l)w0Cz1X}Le8u*U`nDaz62cjnH*6Qn=6EdI4K(LZi`CC2vN$p;HA=KYw|U!% zR%{mV*7mX5Q&#Th=4^j)(e$S~IK3@w<;eVgx!Ufof7uNC{@C57IN76UH&L&bUAH|l zpT94L%b)k#wLERV`oGQfk@>v@BkLFI7aJJq)O{#7#SlDo({H;qyvN%e+X~>-r6uUT zoC+M#gGq~f11EL=U(~DfGZb?chRNapg&q4dXEi4W*oikbu&DvN6>DDbMQ#c(U|JvQ=mugsheXnQ#ZCB zn+v{u_Sn48RgK4HmArlH*o?hvXpYUy#%c00nH%FKPDkDtGj+7)*zD}S*kdztd&-W@ z$y-K0HZ!{_HI5O)r(%AHQe*dRUQ-0G;-k*1+T)TsTPDZ(Y{o@Ro#M1?F4ea_RH95q z=2qk(Gd8y<36ascJ!$-m&#lOj$q3zwJh_a~?Fy90DBX%saTe%y#4xvmDeiHW=ys(d zvPictP?%-96^Tq*D9%FNsyIZJ>K5fmXR&Tes6>|QR>VnWif&07I+Jue!qAzf+mt1l ziMnB-SUIEHlqsK6x=qQFIj0*IDxZ_O9bv+p)$K^ZNdDZ8V2R|=?Ff@f9^JAuesbxS zg$a{Sw<8XboVp!BsN~h{NRmiy-HtFs@@pbNq9jd&q7{6l!nTO^G7Y zlJuUl8xsyrRyY5qwn!gCiW?9>9j<{~t~f{||G)tn)#*p#9uH8r*%|fH z++efZUgx+W`z~}2Uz#I#4i@AFJ0}WaZlzPIrI@-iass^V-Zz_Lc`nJASlfPhFS9(J z`K0{oQO20#h2b~HW;`)FstUG2?@1-+@pyt$r4dn)c~A5JFXQF_ml z&i0#Kebi5$9o4%k5$tZ1yWNiyiFw4nL=vL@v`>cJY*$(dV1lLhvm9Rlv6tvhYti8X z9#4OiY_{KyJ{C*s5178&z$;@nr6;zk5aF+zqjHUQnB7$^omkMLXe%M3?Mm_OCfrTD zMenZm=+u%PrAsLxZJ$1a+h&exomuWL;Bmv_T{Y8v^D(rHdKYc)p?O6|rRt(-U1 zl-7UWNYrDR$mTNddS6Z?=utZp$!L4i{&o||V%4kRd6c`|wbM#_#Qu#1wVixZChMK+ zxx?K$p`6F+&_G1nm9TO5sMAfg*YNh{nLPf-X?3~H^5MOk-XN0NVR?IE9dFv{MLuQ&2gm&Hc-u}Y?ZnMWT~u)Q znsa(7Z=@OR(D)m?!*Qg{if$Tpxx=09xhcduPL~&1wGHprzc$BShx`mQ=$J|-JcO;3A)8iRo ztvwud$D!_K?%`Jo^Sp^EhId8bo$b5{r94jm1p?YGl&@l;*nfY||WY$Cy9!G7Fa8_j}IpYlvskf^iXX4d7cO{%mXSV-tdU!Cs-L+8U-}Wjx zb!lDv);CFGWqsLv5)U}~|E3uB`^}^O^IP97ohs<$>V5eTt9c$>-D0O-;dv0gyX}O@ z;GvfS#{t;dNOmBL(ovRB^F`k;uIKRn+pc+Jfn+m%h4Q<)?qga6Qu2ugo`kpGdPinv z8z|M%8UCwg-Cl_Yi*Kp1r{d3U@TnLc(&!tpU1ObU@rl)W6f<^njzT|P+X=ZJ-n-Ej z%(9%Q9kV<}w&rZMX+D}ORL!`hZ$Y&q1mPnUon@-Wt`y-D{XvX0`hQ`^*?D^bk-$}R zwwTS{?BUhlUNF+HL;uqE9Ufa}+I=NH+bd^@Vp7(b2OKg|)o~dg^+L6jAuhV>=EI{G zuV=I8aDmLv&9Lm-?XH8No8bM#o|Za+2cg$6mM!1^@W}o+n~Af{r{dSgGwRonJHkV8 zhY>t4fRtMmoy~sQx9gRNHw+C7wI*)^7Crl-Y1uM3JWfiC1^Uv+!9Hh8{VY!}ORcRkBu zbA@(YFb&>zKU^NKiB+@CK@ChRJc4^FzWMs`G{WyU!{WS|pEtYZr2*E~?WqK_agEg` z`eNowlIt=1%Ihg(}M@Qol_v?m@o~Zuz|Jhux1e-ve5-oSvbaN-NOPHWQYl zIx#Fm*CQ(BG@NTi5yZ$kax5z1MRs&l%2ldhT@ht1eq?DO;!(P)&h|o)sx_lzharQ? zMoigc2usWTra5o=1~%TO&Bqp@I>UbC!*eagLFY`wm2zs!u?Ro{pskNj%upR4ExkB2K3QH(XSEp1rBa2xu`YP>yO%ba3%(t&- zqi~;{6XU9*qs^(LE9E$F)Y8$B4eLHT*n)aG5;kI_rUql8rmoXi!@Qy|OPXsTxlNMN zU<*{#vlp9H^T`DFu)Snwl4NokZE-?@o{N0)4)P_CyBYrL^!2OROsxR9{&xwSRN!z)1N-o&qQn*L#MYchvWE-P8kh1#c&}|+m ztiA@JlAKdk9V?s=sS|!$dwO&1*$wf(CPh<=d3Bkf5j1xid z>LD>qKYDxd*ifF$|IhzgusXZ)P?T-8Vpcit_Pcp^K0oXBn-y$gP|Lri2LH=a9CAR> zr!xQpkyctwoauuIzDgTHYE~a4ggR|LG(GGNsHv)@32SISI8Rir7(v9|wn5Nl?8B5U zi=A#!gArLr6q~usgZdOWqeQe6!7zpiO_LZQBE-Vrz!l6{M7Wuv9wA{OBnaX z-w=XRu1GZqI;L2;&LB{o6C=AMrr?P|HFAuF{EPf(_Z>n;^i{WluveSAld{xiNr*u1 zWI4yG*pdtks!{cB{v>s^q{+svX7TgyPv1PB&0e;f=GFe{tmy~X!r6U%fRt8ve800& zMAkj=iYJvJg^z^Fjvq|+(a6H2a|)9jbC^h}j%PH0GYdCP9iOWjl6ZV>P#YKn98cy$ zRFblMrs0g&18-D3u#RtF2lT!X9yoF%kyrM|!c_TGy=pi)MW@G1%exFZg*f~%qAZVd zB$V!iqedBTg8G$5mhocze%WkpLc92U*t%7MOtpN8&S?N&ulSf8ttz1%T(h!9Rf_O) z3k&0aTX$y=t-!I1P97)T!LQ8{4sTq8tD;N%ve^+|4PDy|uQ%(M+I+wMbphMqBX9{y ze|pm__x;d*Xbc3fi0I#Rof92LT_x3|>u6ZT^)T)9IkZBcbARNjRycq^M>9}9OGQzC z;QId=6+SsG{DJ#9oL;CieAw;#akc&)s7Fjy8Y~P&5vUl27$oPn(gw?vKB)+XmzDb2 zJi8v0Sz2b)stcPe~&*dn@j5m5R)EE@mj8%MbBZB%G^jMDRie>Hs``DA5LAfWHQMj zO0b%&muGBqhe5N5c*k0<;SjtT4Y-}YRyy9f@SZdf+scjev)>C{T(@c4yph==)_UL+8yuXIy;%nH=tCQT?YdNO?CgQGu2})Td zNT4{W5(PXqLAK;b;9^EMA#~O&BxWeQVfUDMec=CKW7)+eWgZnnpZC7;p!8|u?ilnbWGvJUW1-aRD zaDigmr6cPRpuM=c%U?G(3N!*u-c>Roptw_OLbw;3<$AwrCPe&ovFy8FK5bzL7^dwR ziTqMr<+zx#2_!6>Je{x&l$lO1>gn~>S+|}ZSH6pM1la2>+#v@Wtotd9^oJk9O;^?| z-Tki#yLH38$=W@PQM-mQ$`z6V?J8fRP;;>TIV zj89&6o8@Ac>79d`gFRi~d1ub#pcctQW9FnlGQ+PfT zzn7t>7s-$?Jf<0mAA#3+kBFG%LljlI-9l83H_$X?P~W!NjZ91oKgKbsLM+YsjI3qY z{$gsx;p+7kvJ{)u#K5l>SIx>?UOq9lc=3H=$T#xzL; zDLV2=^Yw&2z`aqi6*_Vcco{cL$ua1)qkG>05+{GFhWn zn1&}nMZbCm@=gc!Hb(JK*=sSYYBpjzup4-TJ4a90pJC}V4Vvw#&blZhf89XP`HXoKw^n)CThvJUV3TfL$AA&XXl#mr{{LEOC7Ef@fwqIe4iguQj5RJo7z|O!X?dI+Ad07w1VmAX%yQ`jLQ)}!vW{EP zkrULh84-mX3+KMwF*uXQBnT_feQzD(9ii_l+;c2Xt)gY!X$)W2dSrkUgED3Id|7tU zj9}p>124xdpULNF;d-)e`CGUBtzTSREx;`71PXnI4L!NQmL>qm~pH&QFu-FOM_nxDdzSa2-iyKfVtURW#|^1=c{;1CsY4wyCEMD)qQA}Z-P z6`av*2Mi$;afsU>N=jXYa6tM&^7HvT2u(gl9eCZTKEg` z8hP24bg^{b8JtYTO%bPpb+%;a%eG`nI!=6BGPG3{VcF6s zh<&HiD{1dMn(UF?zK0DZgRyqgaaV3 zkE}hl9)gfCWsFo&*R5s0LC}xs(X=-q7*y3|3Lo>^q94RX-oLet_h1m-iQ$!r^uhZ| z$nSr59l)|^pEzm8elf?RXuCdP+`ayH2b{A~pN5a=+oOjvS)*5&n!~`#%G{wkh3Oe09lO^nGU{9 zBJ78xa=%fp<+vus1D5(2^`WMTs~v&GF|96=ieMuImMv>4ekF@`s}UJh%-QG|6tmMR zI)usx^9MjhcR(lh<*S*^z8SuZoK1Zi&FN;=Dpl!nkC7J07F<%BJ_`2t6+t|c9XXjj zZPu_HHk--kW?a)?v&BWCe#ajPKjVFN@UbC#1ykni6>?}SqxNW%rtOt-9Et|+(Zx#R zeRi-pWA{kdh`z02jEQ=#=UXr4&R31BQDR7Ln~(;Ifr_$uc9z}o<-ty}*XwQf9v)Yn z{oJhED{=4LDcp95PtLG(p9V=90bSgwZP6NNfVjixa*k2XK4{u{9$x55f{wuSf>;tX zGDor$p_+6#*Jc$4N<&pwmozXgHr(5UrdoK|p>A{%rDOSgjCgDj-%~@1Ps_3-+73QE+s3!-G6ZZ)mXCK+|1&S7WgH(2gq`5#Z zLrxsfa2Fq?r6tJlbPfpf3d|qzgzS?HbTN>hzacA|iCW1Q6J+_ghXa_{gUA9Y7ZOmj ze2An;_CbJH^dho+v06Dl!b9*~fS`$d01v3b3-AE5RxKb(twY*%mbYgkb+a#c%nf-Y z81&!=(~{zw71l49(=1Uk)F+=hr9~NrgvMk_i%1GSCxn-}1D_f7ENe$b3Q7}_QsG{Y zF})s^-Y5Y2qrSN6MoXoexq71h%oPLOgvKLEdzIy)Zo>>Sh#77KdMK6({)a>zjXH>th>>Bk5IGRgygZ9kLL>fxn?%ShSM_~y3ypv zKUael5>7eI`kcp8klnlVoz@5V^^Y{|&!h+csQvusGG;oN`=xI`-@K%oaSLI%`i;Zu<5)>;0cA(L(J&yZ;ByA^xd)H`p=w#bQ6>^qIH6)7?Gr z#a8>zdtp52SNGb)AJ+;0nU<`)?o~^a?Pk?{ns@u%ygQ$tb^Fa~FlU|QOCx`ZAX_;uSN(${NW`-*f84rpQqKwpZi^+%Su_;WHRPyu4B6a?_n{cR$Z8?>71jY|kX#e(JjQ1LO!HXYGA5 zgSq#k%hdTlJCBr``}#Csh~5c7|Eohx&GP*6)(HHc9gLgL*j%??w1^-=c8{b?AwpA+ zWMr$Bg8`3Axtpkg!-FW*4QH%9!X$4$)7-)v5&Km${1~>6(94MVKe~36P*(XVY*tmi z2*XiU1(j0PP_UA+G6l;hD-%J6>ZW5P&B!+5s~%Iboa#x4Qnyj67xM1A<$bv@@$laL zUp_6Ht$3~YE8U9^rQ<=q4=fw5_WX@O6zTyy7=HhB2g}44SUq!kg(-MwDV@Sdw$1R5 zl=BPMUvT*Xi12@?c&W7TeW%k=08{je17?+ldSTl4?~pg}nn;_eOB}t^U<>9#XY@8DrgT8g3<*-DbJi zjqLiQ2QKN%YQN$)^I>HlSoGi9XLmxb8+$8htd zb}l*~qHOn@6y%%cud}pCrv}_Pkv; zKf}XaeY@Rt{lk0DF2&{kltOr;ym9%DQ}qf;yM5TIVksx-ktt`}a`*R|*7q=|y|83K zV&7I;ld^oWl&ulDPqk>;ODM6Dc$|?vY=~k%%f;sHLZR;QPnd&qJb=n3C>ozt{||&{3{-A_|6{qS8*a zoR_kJZ9%qdBa%EkrO}h8JdZxA6CL-7cH^()7i1BX+PCzx?$(_(lBBH(%@jktC`xGFnJR$S2lsQ5qBE-?kjc z-0n{Q?JzcRFW#+mg5jN~NN1y$|nVV^N{UZFl8e zY$v%`c-tEEWjv7sKRw=;bELQ3eRpygCg%mW>;dke1MucHx7<8QJtAMjMWOf0=94(u z_xGl6R^9T&uDQZX@^Qdi!c%cMgyK!V?bb50W7pIIV=F;XqNUVe43-NID&o#Dj0%zC z7)U2OGqf4QN z%#e2LZRusD$h4LmgJl*-Z?GVTGOvIiK6{_S7WO|n2V5RJd`j9E_+=b=-o5)&fxq@Y zI!Nb$%~l4p<58)lPsapBPROI5pnBIrmNBPkt`B=Z_p<1pE1T@gsD^oo@p5Hs-9sPia}0@ zZC3ywD~l#Hr`H2aVrJ_7F?oNv)=g?1K-;)P5XoJ#yQ&${O;HWw48=~vw7fplXD4{J zw?3~vP@CfKsM@f7xvx)lSuSl#S$AKJ<`kVZB2?o~ZjWwUaf|bKoWFeu#jaB?nyVFQ z@-~YH%De7$V~PDnyu*GsCHiOSdDE4-!#z+Lr}>)2@W4~sXFT&KV~rb>j5*&|EvI8e z{|`C+&z1Mb@m$F;Ce4<0<6C(|&H~ZHZkELH&X28GkU-h8WgSB|O450TEX+8T$W`Rf zkKWH*>(2=}QpIw6Qe}*i<>`9QoBgT1Rj{SBh%l<(lGDMgtW~T$Z=&~*e)IK+8i}U( z?px_-{`#H%gB?vt>uLI+E_5N+ImJ#c03;inrb|d?3aehijbJCNril5gi~0s=KAOJ< zubOSyy&4wguVF=dR#VFSHKkogRj>4YNecC55?8%=@_o?reXIMOE$f|5;t06*a_$e?>8&!c& zjuNsAvx;RsD{#zci=wm&aY8wEStiv1gbLBpc#7bTh4|n~@1Ab1{e=emvuQE=gEL+C zldFwA{^mXgXNlYgN0n14S3XoL_r)QlRLhmM&FX$~tf&?_-*0f%-5hhRkez=*-ihIAPHDa^muqYss#pTDe#D_GIC5)g zG8*L>Pu)pn3;*DWx{L6{w3CXU$_=c@W;1TD=(`Ezd3?%__4lXib}{%G=1~T1?tOFJ z2E&D_q5iHzzR7U~yuDq(<0!v`{mqp2bh%iI)B5TjjOk#Tf9;#ivN;&I>_jd7<^*ce#|ez?lUxDzQY0X&u3atERjijf{BFc?c= z=jZjDJAd)PMS*)%kAyX76+uJ>M3X=U+VkxqH0Z)-DJ7Gf$MlctHJo} zPt_I4Xi^Ha+^{31y(7)~`(?BFTpG0`>uoiu)g7&)Ws5qZB3fZ&Yu%D4RtVK1Whs;q zS+c;gr*|=ylW3)5iKo-)buPr@;EhoF-(H#_99IuwWUNMmq}sZYhc14US}5!YTImp~ z#;&_+m-pfBw#}wl!;2Bk+C1V1Q)u<^?Sm6})oS0&7n{|5Xm*dN@~}UNKr!nx)Hiis zhzvLtC%K}7`7Tx~vveT8iH1)Uy=Zpsy~jiuH&ZjH+Q}r!uNVKmmi5(3O(hwIkBhBA zE|m52mzck+qX-2z%}0ai)f|<&?3=|(2i&O7P-UT();1KYw+SNAx#}BqoGephq-2yV zjKW}WM{jbzT7m~BNJ9B7kTEQ;80nIll`3O-NTa_%z%yAO{Jv|3ozZ1`52F-I0Z2|W z#X|i82tO@`=DTlavtRnYgHyLMEA`?veD>}^GH>^`x|1o|vCk%@X2gckv&(#wS&HE|UI6V~q_c zJPQjcA_#TFADdqWKK#Pu-{c@@;7GKf)vJH)q`^`-XwO zXkWbzZHkBjO2tr?*Bn$cH{R%2LHEfP!REMfa_(?7yI=N+9K*VE_czF&eK9# z()9OXh;q1_1j@DxC1ub$HI;U_Sk`fXYCPmrS9<&h*n*eqZfNwizy={MRb%IhnlSDd zR`$O9*>$`sg_@EkbM5ETCtDCkaZ%Nkj1O=K0`2d(rApaBHeK551rH|yUkp-oe|T6Z zwip|$6kw6BGI2;yY0o9dn@CS!RJ5?(XFE>PpYgCtmxuwUzbP7))G%Fd<9zAtt zZ8|kM!Hq2DH86=|k687X)M!{z)Dc10)mLk8qlv8MPX>y)Ar|HM&a2hSIxQZ^Lt-3%} z`<3>%eJ*|774Hu`O|!{-omQS{;KKQCG~v?ZzlEKn)&} zGZc9(U)qEnrC!nf6+9hj-oKIU#Z6Jm!aC6#K$!F|WLr&|UzT3e?FA{|b6Bx>zU~%q z?9p^P{M!1J6~DL#4Wy2E>BnAd-9;I5$y59!-j4DF(LbgZMKIxP_G@$1_17_dlsUGO z-~MF3je14>#ORZRdL$G>Oh* z2BSGqOsp}9V&unm^P~JIQ}Oy;H~jw$qGXX%`OXwPZ;UtO>J4}wo`7mTX($}A7{_R|9$=ceRpyO z3)P6F zGz4Noz&W+_2?eWC6S^|I8q4y9Ms#KPm@fAo*CAIwMF(nyA`Kq_nzqykwg^vNQM}Lu zwg?*$b@7q(2xLM`czUExMww^WVSF$qsz1Oeq0B|PSr}cz0;>KpdPsaCL5YFej4m}W zpck9PRkND!#FZqoSK|Mb2NqJ#LfZsOi%nB#bNnkb=EHl!Jsk{kCE|PakX3av=_uHR z#+8j@qKDXNr-0lEI~=BmrN!v>aTRPKa`vykyWrnE<7RdfKe4-h^)Dxj<+9nrJL2lx4Ezde39l+HFU{Y7 zwD7`W2f?I{EJi^->-L)++?g>67|eJ-{_+W;`(c2kiAf;EL6S*;PM6(w8l-C;7%))%GG{4sW#oV#&1!R8hPcf*+9y6R}@l3Tfj`DnXi>~ zW-6e^aFHgINhX!CGpb`0(9HDX$zQ6ZkRIg`6UAmTkrN0%{$&Xdc|&T`M0w$NJA?Fy z`-^dO!_{j@;KCV$QRFg?dD>qZS}^Aq+! zrf+CM8EEUVfLDw+R!#3D-uq#n)5%YqCjro}v1nf6G`8>!$^T3K;ng_#l)jY7Q zzve;Yoi-1n&T|(rneLm3GmQ^VGqYxzbL5V^)|)%ZdYA5K(|$d1W*qMFxF3A-!e?{1 z0%oY3V!qEah8=hh<=6u_<5Ktn*$#PX>z`uJ91x7WaM~#0qTox;O9{f!9WRIv=zBq) z>V7n$h{mUzNdRmhJVyx&+r-2OXMRe85xtJ&aGeHxGZ^(<7mw9`7N)vV{e`a${RN=| zP-ucVL;{EQB=rsk zh@4xQK_(scvdNA9c7u=0T^c8Dr!Q*u;+eOHSH^(x$u>s-51+i*5jr~VNGjP?U_jQ8 zjIPN#OJ_KPeN0UcCtu~N=fri#RSp_lF|X{p5?)z+?CtvtN+yeuYRjw;yrH4LhzEr6 zD_Kl5hNEUl#dg>%w1VSiVU!#=3#8VOmq6JLod-0PV^4CkYMpoR1pO|zh-6_Q`5l-W z31!QhST1X^6ht|J!IH#>;Yp)bNh((>zPGudULBb80cXZkM8k})97w87DR3F*IJaN|9XnmFs&JBlL(xjg>80Vyk5`5(B20lo z6GSHklwwd)pl8M+1(a+EQlQO89tGmMfFljYj5A6A(}WiU7ptYYr~>Hfg9#u)hGHd) zP7%u&fy!oFgy5QP5h!o2Me>4)7U?U^GKa@C#WKc3=0`H(nVcl8UCWl5eS&v(Fwf8^ z!VyEe6cY{WwsK}TCs%``QvSG{1brsXTY$nG8x&Ze^Z@*eDc_3?oE(L-2)>A8(Nr!l zYAYm}X=J8&zF6W`eS{_cN#J}~toP#1OtS;pUbpslIEk_rN9mHEC^WnK89}<;&-lof z`&DOxVmK86TK=Xr3fducy$Hrswb5X{Qat71aP*4_#ZWGuOj)H$3&WgQ3s*n{FKC~+ z=_sU#DXw`SlX&C+r2-itZYr|K1uzM^-7lZooi?;#HtY8rbzu)AWvm^VtNPLPWyV&Y zrs?GhgT3{qNI-y_UGQJIRy99)X%O=xoc9ltKlT#=ad;Ru7QGakjm6~!Y-7=LQQTO} zY-l$Y6#NDMT=obiydZEi@FbC84R<@dWoBqOy!vP`hgKaT8Zc&#<)?MGeDC`Y@eAQQ zWWfo%L=mUx4~hs(%P-<&ZM;aGx8@>wo!#c(m=;=wn8p@KJ}j$~l;Rl(6wDT)YNg-x zRwP-Wc~-Fh13CxJh*+UrBz#|v@x)pxu~e^Q8^J^d6A^P9VvmHzp;$^_H3>MhJ*0q< z#5LGR))W{k=9R=QAktl_mx)Fk!RF(!934xt3WvwSD>^8-7{VT1KpP)2MWlz5>7?*4W+aiPW!FAMw0mm){%QgtQ@Kr)%1MvCRI z{d-1iGvJ?Vct}-pnM7ILYI-M~sV1uVp^&&{IoM~g2L`TIeci(?=-oyfAH_x-eT@w) zDl)+ikvhy$98ibGiv{X1bMZhOQZ^>2gQ|)P*wDP#pb~D9_@Kw@dFKpXxS&I-N=m@63gEdizK;6)y>v&SQk0nCLibcT} zBd|ORm^%CJQ7%b|5WSN=|5WstNyY(A=j0Ep@qyMHbZ~ zR)J-$50f9SI3LR85UjtgyR!xCl`ggSAw0mikHSEn3n~eY6=GUNF{7@<5J#_m&~XcOse?2qQAmvI_R1UH9wJA(ws-ql116@&=BLOZN&fzuQ)YeI z@etqR*K53T-Pu1;YT(7ycHJ)99h{Ix(>L^MB!^EA#)IhKUs3rFrM)e-HQd&g5JaU^ zY(b-IWwSk=d7)a1=ATUBLvf=C168*x>t)%5q z2ovR22sS(q421Q$UZJmO%I^kr<7RD^AxJWa=TyW!s#dm$AmPr$TQB0Jp$z3nR#p_z z+rAGKOqnC$Am8!BSUb|rchlH;9)@A(c>uPZ=V1zVo+mEZd7iq~&XZ_tJ1-ziW#=&) zt902&3ltQGGTd|mkd1K!uXGNl4rq#@ ziYyxSu%0{+Bsk}wisKYV9_CoZfy$0o9Dw|o#X+bWw+e{Nv5SQ=&G?mKWu0bj3^T;F zOL&H^ejqcH*jX6+Pn_M$2DkcN9W|$>Z|JGnD{hTUX6x7EGybNY2WQVUP%t>&a8sFP z@!YbNjOUYe@uN6ouyH>rAeh0A35P6-k5gSiiBwmq9l7MBB~bll%2}f{r#qtt1qR$1 zlI9RMXes>AgcR=>?7-nN+zg72RmQtLy)A_iCDEBt87F^?o*OrLZ`($g+1ljz702nx zYQ`MQC*zkL@h9Vw4+|z^1J+oP+nRzcGr*XR)ihDaLGoCymrSMrMFE;1h z$wIb3E8i^~!VQp`i|TBul_UfT4$0n-UGP{w_53~2of1Rz<=m5n>e*GZme-G z@4<1qD^XLz<}1-5pf~2Mt&|=9eF{5{8mU&_iy4;+Znb{>^*jAP-+ZnA=euw9|9qcp zG%3@5-EA&rk+vopN!e_!i9-_-O-q2ieDzCGE#X_zM+&-(vgJunGb~RtEKl<+GosznjPhC>>7*L1+8&m=yZ(BJ^!c{$F8amQl=v6z0Iyul!7*PgV1WO`!;S}VuUFnQ3YO6;pl77RA}Cj+aHFl98UL5|&=r%^X~BGZS>|*0W@Cv;6n+9=A&B zezCb|l7VeG$vgN*7d}^=uSMzS$^lF+hhyMfXhq)6RuZH87V}YR~1TaF< zU0W+*5@@7k-TArjEpqa}ZYM<~J6A-emBccRQd(8lJt_i|lp|}qgJ3kW=bvlXz>lH^Nwl3#L#90OzFAC%S?I&0!9kQDUCo>6H<65!~RT9 z4w4xjD3+YG!nfq4RZhypJ)jMoylT$=`t|ozQxF$%>ZVk=feiyeHGx;d;F=29JweD> z*iyk;8ai}iMv0!cj8j6%EzXo^vr8@|;;My|3>a^DqzC|pznjh84b2*6jIgS=YQ@m| zVk0)w&St?6sSP<47i)Hzr3^_YFCm7x3hc{oVZivXfH_|xga!Rv!m)(`#&!^Mv6e>! zOJ%o^z;C<#Fkdz2W#nNGQAn;>#Fc=y?ag*aoqzK7 zkMtMRulf=``$@DekV&7K|IsDEKrmaB+?9gHA0uJttPZHYJf7tKqiP`kjsDksKc*-Q z>;pH~2u0b$tpO@oGhg%lm&ikejRy+Km^%UwJsHh4- zR5TG^pFrCt(g+HWwS5Q(-QEsuK6)qQh|43nXr*l$Tpaf3&8lNz6lYK002 zNAw+(@P!Q7QSsodcA7%^?o;Wyc?Xbwb`(_O=bFl@1;X%JiGqH&S@hTBrHO7$#e@yW zp_-p+@s%I9k{TFC$|+7(p)(%Y&{ocA3|aNO#t@?5-ioRAafeeJJsrs%>%{2SQKia5I(FU&+0ElVAh+cI^=u~pK3^{`hKKi_w`UF9 z;Prog>$|0zazDJ6DC+T*7bk$swv#33;nJ*|J0lF4&AuZI70Y(?X6yHxc?VmT5;mgr zR87`>rBGi8)euVto>CRn>1Ee#XR{@wrFYHzd^MN(X{F|3>*XQzaf`y^Qhr6EDum*E z>|2oQ0C_OL)B?qLb@hW?3VU&hn{+DDZ7}I2g<25w+cTjUs#P=U_G#H{Mao!@QB=ji z=XsX1e9*+BS)dMGdIq!di0(A*p#GD-Rd~<$8%^64??` z{prA|Npj#$Yb7sFo3jjH6&n`HyUh?pOZIoly6neEVk90~IXvRwa3dogT0SV^VHDya z9!O;55bS3 zUUl0fL&##FJi#a18aV<^O;JB2p_n77m5CVN_}AMafe0M5sA^gmH9DeAREC1|2e64? zv3b{DLG{b09RLI)qWFm#3}w*?mfsZ598h@(EXu+i{fa>Ofv-qj81stsmBU>Qk2}(p zF(w-1NJiG#Wyd#3iglmsq$S~qRDh&&16n-OM()9ww(lDRLSo*8Xq81$luYjkD=?eI z8q_ATYW+KH+J-1+mfT#R6CsDjF>;Pnd`st`mCT)kQM7puNVVY?K>60s0-DSPq_}bY zfT15{(}oxsw%Lzp`5SA7%@{mQ#4Xk6zhSKgF&< z7tPr%&kHbsN)CVl!Lxk^P|oZbOI4zK;V?<@^eO zJnzQ>nZ*62I9c1v_&-Bi?aB-x@@1A^ai3k_ZeGDtcPnstuvucWGpmNMV~|q}dz3?D z%JPctuJR?GN(Pxhga1r}7hOkVng{Mt8r0E!dcjYZlOx1ToPC1Zz2Nax=V(j)TWCwG zCz=sa-Czz|V#v}IGy$H7F%ywBz-f`Ffyp(z8Rc1w^H7@K1W2NDM#B^bU8<|(Bdz|R zD}N%!TvfE*yD2*4+|u!sdM*&hQ@AxGkf-7D7v^SRg`Mw7B2rOgG1nLfr?=`;yMKqr zjj0D5(C=}dppO%*cyiH7@emh>7ZY*Oa&ZwCBO4oWL8{^-1}HB^VgpSQC*`==F)0%( zVfstZeCL9X0V5mf;VAJ_#*I#>wD&o&}zDLCls5m~UJ`v9-zQF86*ns>A zF>slmu$Mvzy82jd+ee19e(O`rAc!=0&@oKD7EfUGfa{XPkmaWAF^En2g~uA=q6pD8 zOI#}Je02*Oq{{;|S~cQidPUVJ*}$ym3N=kU1}=6o3UNJSMpWA$9D$nthaWBYOyKZ;a97d8B zE~{)l&1SFV-tmD=b_&<$h?73$MmS%0@cILcsSCL2nM2@Qr@Z&+yKjj$f)hgO2oDcX z7Upu7h2a{ta@B+s=ANW-=}o(4V8X2@S8ykJ1+Kb|=<9FosSzR4_b{lyA9Lpx*@%kp zo38^xbzN45;=7Plmg2nW#ht!RNsa&Iv~b@<LA$lqRy+Sbwh_tRfr&SoNh8)ma# z7u#*Sx!@rTaE)SGdHZg+hE_M4qy7>~KEU<0n+tuL2Z!+>_aoVDNkx^EK0T+CFP7cr z!^v{p!DWa+(n5cN?@hn68e|SGDHQ}A#6Q4A@9qcu;rj>ZgK7>qL>IS<;(58)tl-j< zb^}KZ+ZCHNB%2hXcKNu$6|i$W_68L-B@|0`vT5yTK{W=R9=fYRLrU8zlBXwxe}er5 zam&Dq{8MYZCA9)bX%r z!crrL+*i>Pt!CgOnxF2jJkbiV=Rs5i>Ka=z(8%M^6y@pfa8@ZkFr) zs__!hFVt`G#9M!uAmhnFDvr}y^xRrBbFgM0Wk+lVeSX+x0Mw1$c|hg>&HK+-zjHo zKaLnWPup;h5vBqi!>N>a4Z2# zGcXcdti|O9MWCx6)_@2(1Ix#ZO5~)6-hLyRw-SoB8YYO^TvI0t=*t8(qEYyj@##zT z=+6F$Toj7wam3)}4}qgnQvyiS&zG0Y^1U1Wi5|w1SWSR#(WhBM*rG;`Z zz9>ut-cU6>jmMMH5ao;eviSr{VvDl@o-%`5q+rDb)~kB`Mx@EkD#ecT#fn&V=Dc0O z#>08n&-LkDoh7%cB(~Y#cJG@F?nVzq^M@ricr9l=KW}&968!l9A)iee%XJsCe_JoY z1PNn|xoIxo-JK8O?(Q|ba%Lc*s<6;vs;Du`XgIcZVk9pLENQv)-RT@9}%9Ok&i;cJu{0falaaaNH5gNMkA`B z`H7lVa$Bm3MN5z=-O-%j2tv4w;@9F_tdh>vT`lpAa(-FpS!T&~w}gil7Z+EHnfHD` zx=G;l_8MNn8uHR^y3M%G>Xza~BGs{4frRmTuVwj_9pqBj{IdC^$>i!#nZPKK)G0%% zY${!Q&CJkh1uRhsQ)70>$4hV@!xq$h=AQ*4WZL(ze7eh;qb{=ThLp~%n$>>kyytuI zW~!=>_gI~EhW?^eEY+%6!@H0>u+r_K?Pu^5NCy{dN<)SH4sxjsVh6A*^IvI#Cf{4C zvyWcFn;I3?302b&>x4=v6Y`k`HGff^xiU7N;PDmFtf1(NWqSoyBD~WAeiJXUgL&n&ts-!(sa|(hBB36a7M85D8a}s+e)prcSTX3v zn&HZcu@>fzoZ>K3FXC>N{an3gs_RkmWo<-Z+;zbTNzD?icOgf;~TOwDy!XO`lvl3H`?{V*R7- zcl*U!+}{c|={Y3Wl$o^qG&q;4SWbtjtF9SfT!Ls79FrYPJl~gv60f_$Bh8|_Nu8Ij z>kNFJ_FBlBmi12(i(p|ivGilclKno8ot|VjniVEwR!s#^n2%ik$gc_fm$2J z8#jqg59#0_uJ}prGV-6BRUUOvF)YbRej<28B-Cl&7+y8hR_s;vTUps>o>54gVX60< zF-L{{=KZGoxG`3ra$;Y(oPny@A+!GoOl1RLcWwi-F@I@AjyAK|&pNp6PsKC!ajHrR zmB2kP%aB5yGV74wF;NyGfqr0CB1T0i2zva_lH{@$F=0&>gP^X@YSe*bvm8k%e%2!m zQI!Qr!lbeyNdiWeBuU$rCh18^b`~Xxkj<*3sVcK9Ng#ICC5fO%uwoXb1Yj~NoU9BN zE1#uFqLi~XNm70mhk)3F9y);3z08TBrkE3o85VOy5y`|kBLe@3Iiv!&iE>J#xfCO2 zF0z?#nZIb3#GDaCoTkb_MZo7UmsMv5m9)vYlAxS6n-wu|S*vWiDnrM~b|uKm*{_%| z%54=g91H|Iqmnw5N(9nCDEl=^5JW$b80l9R&HalInXk}j;jkO)w zb@$aw>-@t2QtNUI0Ze;v1i)t|!WOXcsZ?j5G0`yM`Bal%@JYSG?OFI@JiPA< zKM~74s_5b86BL8&L5I>21qKA~lmY`NcTj;ro;|C;pod+_{NoCFJl=@~4#vxNvzyJ{ z4b2)J0ejYMR;{>X^Tp=(OW4LR3w{un@$5Qqcj5j9TA{46X3i~W8LN*jXgb2%1Q$A) z-QV~PYx5gnKO&uH7xvN4dl;JJz8ka+-TXwL9QqQxs-5pc81+(Qu{_L!dy3qxRqJLd z9l=U*rGWh9Y14wZQKc$*RnRSe^5}=hC=#&!ksf*t;i`ql0^sfU%+3l^6jH^oISeMj zYyAuFV5zAHJ_5tq`4kQf@z7!C(pVo*y<_v?B9R;z&pQZ_!8r!ZonsSsvkD7o`@!ysgalx(w)Sw z#eZY&ggUABgGNS&F@UZ^(%<9|%k>kk-#&1ueFfvO?Ozwm%hzy_rTy;PA7|m-S@jWi z%eIRRY`Y&ILVgYJfW!51&%6F=0b|Zj?Zq$h^X%7dwU?U$!y<4?>u%k6rM!3X6cc0_ z>T&qMQ_51a*(r1(3~g{_6Ye|(A@2>lT3obCxeNcBuMWS5glO^nkhn)2C{SS}q zj}RZgudt_R`Tp^Y`ZXmD!bP2DV%#9O(6y7*aD><+py2}-Cb+-s7Ax=sSI{|6et}Gx zXQ-MMm5E(~E@O4+WU*THKV&XGiwV|n&!D0(SJ@HjhSc@se7(3BswhySS~p+?k^1S~ z92kBg8qQUC(>LpGStU+)eh!-+Q9BIL+mnAx>UHB`!@br0|T^*fl<(Z3VAD*(-?K|_T` zA}9zTk&jV%50lpUuwBD711g@lk=C+}C1r`) ziJ4N8#8e`Pnx7U}#xO9wL|x_j*Gze}Lg20sK1KC%4_L?E+kH#;aaUj}kIqD7`F18& zg_ma{7X3XFr|kKeK=orl8MtCJ;DSvzE@U`bqbrRN2xFYvM*wI5u>75mr*HL00P!XmjG?nsG6n*FFk;P&qVFTe}H(9u!CZNv_AHh^`0|>Sm82@DAV~$ij}qJ zl9Lp~;g)}0E@hif!J58ZF+my9Nfol?Vm?h=6F?h7NLEy(kV~FCp@q%|#u&hK0iZ%3#>U zDFKv6pArIm=kLiYHFCxHlaWiIOg8{gtgP~vMj$~v&P)YmWTN0$gOJkeFQz>{rIZQN*oeHD;knL9KQ;% z5eK%O!hVyDe0~&l7y3duRP=d_-ePjByz>XgQ> zV#|@KDJF-rpeyvipu@0Dp~f*iK9xlh>-C4oBY7JKsQbI+$AnA4zyEaq>@m)?GSgF_-lnXcY72%a4eY>LFNVPnJIt?ynV3&g1RgA`V&uU>VTK+o ztZeMTLdXXnEC?96Dx!}PBs2Wr!Aui>Bzak_&IKTrx;_H2q{xd~o+hF|W0CpEGjRjL z7|Kl11U=6^7?8YcFrp&qe>IdId%3GNJQJk$+LFhD?58Q*f@PkY+Z5db3x(+xSXf!N zz(UBo1r|h|TPQ&?-2xA08n=+-Wlc2a7A$q`mK94_?@uf#TJs9K1QjAO(JLs%Ef$h-?S$49f@^J5ztxi0w8a#x_5Bg1|%A z?bBg^UEF@W<$fn3F86T?=gLGYx>qI+)4?*)vM!d1k$198kUBS824y;0F3>ctHp9(o ze$Lq;`HhT>=91UBxF^7Ek%@LWSjI?Cw!6# zFDP_Cu_r5S>~ORRAreQ{kn~w!hRB0MXIX?-u*Gr(+c)89oFKpBeTi9npC@pne7uq? zo>Q%Wn#8T<`B^WJajZTyGKv2nzO}h2Ej6%A%$ytmY3#l>Ux5D+$wWtNjk#p zS-5QTXQA=k01IxsJ1D`Aa0@)h>D@z;Z?&5skkIB;6Ne!~_Y^;Ao%(qDY=(DBnYrj+ zWM;WA6r(r*V|eWO5J4!xL3z91t{a`=_hx017=KNOfs0HPSgfwD%PKuL#hMGDmQ)ms= zv^WACH#Xw7&5A|A7q`ttLV7IVT{~`E3`NHY0E8h=2L$^Lc73;YM^R4dGd!<6(PBjB z7{WWl_>^u{+*mErF7s1OHJwln8fyZA$3IuFkjCQ9$cwtxQajO16_Hqn0pd#KKwGnC zw|*-PZ0N1qI_U_Ug6fKUYKb=V69KRJ$!lyYiVIW2{;@>@LUCWzv&9g2<#ug;CmgZ+ zI7J-EL@P#+OdMwH$VAIVjZBPuyvPKpixkVC%ovdiG);7v;btSDTtW)bj~E9Kb$zUX zh$-J}9N>toRsk6l<1oQ5%|7b0-MpM_1##TJM7Vn=T~?FifP*r2{Ns|{+8HMQ5;=Pcjf%-yi& z6`#%Cw{TgAd~J6lMKG^2#e2E~La{GcZrH({hil>K1pc7<<%tr*;y?izJK=!LPq?11<-LHf{bRc3$5=znmkHu(7E~#yW`Xb`Y8F&3oMr)J zV`&xwxE}t78cxGo6){quf%gtkfiXMo4mOuUrBE&`I-dq2S=mhNbO%IL4Jbw z9{TIoTf8nB84!vo2ypXLs-lKPpkszC4<1Oq=jJ|M@9T3PK;zW`Lj*Hzvbj)Xh1wqd zdJy_Mcy6R0mR;W=4Z_ujz~jF zt68DPQA{Jm1BW5KY?kk}uBcQI%qar*?-e!qt4x{sQrvAoyd;Bx=JF|6Rw4UpcaG=P z0xk#_TF}F5EbtDB7+i7{nJa=pJS6(@vfVYqcCl=tcV0Y^H{A}5Yui9$pMyh#=NrM= z)N?91GJ5T5zG}|rBCKK-g%_uprJGNei~X=`KQyQn+!*aNA=io@U{Z<5 z=kJ^Ak6oW{NJ%5pl`%IoO1jB!LV)h-Ok8*%C%fAYu7ei6D1F%wIy2QPv)OOL(_sTo zJSd*w7%U8;E#nmWl&|2^F6U>qMNGSC?6+HSUkukH1fws z_n%!ZdOM1X|B=^_=*~_KO$jtpC6VtU+Vg7h9xhD*zR*fy*R*WYP}N_F@8*OS40u*s z{?=@ozFj79)ha9UkWLYugRMmqy`IH+w*h-8$>gJ)Hfwkp)k=~@*s27hYAH)nUmqGr zHz^XP(8zEt61;>0flt41lkXtR zYj!n(nS1 zl3qF46tDyd;t!W5mI}@F@9@oTw^Q4z{f8yt&H<~pCeG0A#f($-I|8Fx;&4$cCnL!n z5CK_Vx&C1&9fe;;ldzqb-x6)Qf&0GZOEK9{gWRftgEzg5@to2=6Sq9UY}Xvhu`M|T zIGW_w;=?Jt3&KMqFO=-+H-c2_F4;7nb}(JKY6kf48sc3!3&~g?6qkd)bM4a9C}`2* z;+4h??9Nq0uBFkvtVlJ`ueE?8^@@ z!uiRzAg8EXZoBA*##vy-JIRuBk(`6*e%PPY5UtzAfXa)15|z;$Albq3mZmghGNkWC zL>u#4hKVU6CJGcO+`E;g?k~b|9U^d;yr(ATX4WXYlKFo(%mZy|g#S%+53FrKkzYRT z`dqW6WCCk6ERV}xPF0*=cH>CCRUXgOyjz*0S?N;^q6ClspPKh+eSjRJ2mvWMY)eed zQbhM_l{-VKB!d35BhcdFEQ!7a1&zhxKtnXbiyzafnFoX>FguYWT=cC99{FjuXyA+{ ztEP{IYH@H4eFs{o9695$jtq&FX^bM*>b3eU%SzK3R<=o=TJjQKnPby#0{bxW{~6j{cLlG6JAT@}(!xrD`Bk&K z>{dE=<@|^l8j;=_7l$mslp4uIE&E%MkHKKr9km88hNnlxN0xA0KHYKK=?$#Xbeq-i zwmWJyeCIfoKEd3sS+z&Be*85nwI`FaG zU1~R5k06Pas~$((?RWM?(h7vLg;_1Ftod1U(QaxOtzpd^799F(NMo*HN0az>Fi)Vr zCdVGRLYIKVD@mAD9!#w1M^hnpo1YaP<}VB&usJ-G=4kq6@!mD&PvW0R2Fv*%FKiGK z*S%POcq9S`#OWD?KX9SL>t3!cuE4j^}}Kr$HQcu(1KsovUuXIESTKaJjJiLN}!|(9t5JCYZ1x^tz&GcQ=Te@F17S z02?)8SnCe!R_^Q3>`j&+u;39A$ZnGRdtfnsHH8AJo_COHjbOXp4>Eau)o%7BB{xkw zf!8s-yC+Kq_CH9v7H*W0oqx20*p9M2#kSS)ul z*kh_y?Y{CXdbC0t|rnjj=>LqM??5<2I z*)^ZB9i)}!r=)n^vPRA@M8QgvD8P9-m(<}J5MOZ%lyG#sY33iG+nLEtXaU#;vW8S< zXt#MzdbeAJjo2M>A){hFun`XsUpfz-ib)|;Z1OmaPP50SSn5Z_LDQ?Q_%#x8s9m&Y->8@%FLj;?Y z&W3uNrTIHmipm(EaiUCI}r9yqH|d>LV((AscpcR<+$uY`?dy z1Iw`R@1)y>J*6@*5tG7o^Py2QSk#oy_nVxtXnN#A>u6)&P--8+QB#R&xT`5l-m}%z zdn6sfZ*Yb{AK^|CUZ`EEj>y_ zpS1QuyY@Up&KA~F6$l7d ztr%ihzA$RV9E;6zy_wcuTxNXpwpp=rShWdOA-5n@?J$U?*Q z3vkuYznczsjK1RH6n=l5-ZCR1Ojj*qYsmayT_@c@9iUX`2QkR6;>=pI1JyQM zajeYgfOFusf_kg9#5xtXhSWq|r95*^hUxj3JhQDEuevVpXH0}wtt2~~6@U+wdgaO87< z-dGJsJ;X4#YCqH{6*^v0L8eZEq*gf4I!3V0=BId*ikFA?*C`I+AY(8}yA=!6=TdMv zAAYGeBNk*&ARmG#4*kg%SK0dL5I(nUn+tVjHk?cv!@)B8_howOwn^dmF~qAZ1YG`Z zeM>gSxM|mD10Nx3E>`i0efe^9oxGV3M`YAJTwbfd)Ks0ea`iI8CN;*Xl!NH8~zK2+AbRrwBy6@ zj`|mS%RqWZ{&umubQI$4*rb|>qPhjF&6vms*=!!8>6hXto(kA>WaIc3)dcdmh@J{# zWPs^vp015LO^S_6=QlDloo)BAM%ccA6Vg=#a8ZNYJ_T9;=k7BLm@b$!T@bHsiJT3% zKk04L?I13P;PK4%`Y2v4swjSI8A z<=!hV{#__8dt*e@2F&EHQ#eHDLJDJ1$UxmL!JHs5ls|6Op~yWU>04BkN9*NUo$HUn zBHhre8(8MG>H}xV;or$R4VUdXDs37jUB2C1z`1-sZCaXchZ&SY=0p{Dy=4x6Dl#IG zqY^chs0p+Z%C3hNP|H%Tk!7@73PE9^T#&+KV2~R-6o{*)if%QEs--y_g!FV8R`|@` zB&<5=`@0_@2_^}W&1R%MPrjznRAqTQJvtfY9HK#dTN{Ub6BlrZAuJn@D8A4G89bM2T(m#`UBg*(t>vn%&$vbkzHr z26=H~+eD>PC}tNeLNPy8puoyB0)T&2(8_EUqL%-zp_eN;z680IoK#ChhGBar_(I91 zW;-zA$_q$g3Y)pOYX_Sl#hkm4FxZL32$7J4<6l`gQI1~(5|Z-zM!4xqD7{I8Cw$}{ zt}KGHvO95yU-!P*%wBcLltonbYPirg1@_CQb1E(u)ZMhX218lx!+YQY>X;is7U`GE^}1bAh;v9*^mo0i9Q7X_@nKIM469^%?^$vbju%fxSA@bFL;)x zgkVQa)kS$Gu%n1^Y?r*9&H(7pQ(i1g3yQ9sA#YlTp%X`tW+lA}OvXQg0wbklM*;;` zlqW>7-p7m}P!9G@k$31s;0e*{FrUHv2bd1H0aLR{eC;1Tev5xMqm!K;1YrK+s%ca! zvsnZv_0`eEMvZ%9;Up*dpS#dhP8!q#$witm-4t*@Y(_VSDzbFV_P$0=SF|yFk?0|-)^8*oW{Qq*_~1Zy;kWjZdh2%3?C@= zJzNJ|Yq|eZW0bAG5yDug{lMWa=P`Ihu++wg?8Het>1Fe&=}+LqX}1=)rgMf54t}b z73@m1!xFBYor!8Qs)TNXOwhapXn!I4Wr77+wyi3jdGl2k8COBjah1Epq+HpIur*c&kIOZ5`Ec-c#av^ zN(?ox*opOgLT@cS1W7)ssNPd#O+;m9Dj^)H@SJ+NkQWt4C}I{b zv^M<|WN7l+rg^X4OA$jGQ`;30JPjFneFTMP(!_duB#5{Pqg$#s8Y(^SR%}lgOWZHo z!KD_guA9VBZj~{tLjp=Frp=4+!-PDXa_hL6NmnXKQX#Df=KUWj9L%T zD$U-)3XD>08!)i-ECW_8l8Q}L)b1@pRUpZ=lhM;MEde~|XWWPj&`oew?w$SS{igf4 zF~cAkF6}N)e)z$S>FUf-oc4fX;=(Fd@bB=iMy!39yZ6-(zED7grqya`UG*sJf>1*% z$;xd-MWVUm1Bk2pG2}d(>7x;fA)<*-R>RrtnOM3cCA2k6(SHD?Rhk9GPM0Kj~gAinx5nq$`;0QamD#}GCb z2LnBad+Ocs@q^)B!BW}5AgAI8z`-c6?Yk8Zgz3D7K7RRJY|S3m@Nf14>?gR*c{cmG zTON$`vW3*m?48)jISkLt9d0i+zr(&t*xuv+FseDMhQIAjD*@2u*Jd+E!88doKp^pZ z)0CO!F^oq&NDw$SjrXT>r4ZQ)=T%2bBAv>M*I&t`rEx?opJFJPE{O78Bbl;%;On!0 z!q)H;!InHF0d7(ina%JxW^~IOdZLDzCvTeb23Fse4RZ)Y1Ou#Kp#9OJw~1Z3>TV3M z$M?4Sq^l7<=8PCO9~a6UW+Wz*I; zBkh?bMNyMAO3ny%k>mA+oJ!Rxs+NhVou?2oO*wKV@oL&A2~rr&>lJq_Cwk0GqTNL0 zlSY-4s?NHSF!@d?jFm}L!t5p~djnmO@+_Z^{M^woS))4d!}8ZBqph0H>>)&lqjOFUrj;8 zXi>%T^)IIgug7r2fu;In;;K_^kDmRzpSdp1Q8=IBoLt_)IogB}6l6J(nuayEyGB09 ze4w3>`8tsoV!?6T5DSR!hgfhWN5ldtdLkA|wJR#2@_i8xX)lWAhKOE*fgGi9f_n1b>|%&||}u+z1t8OS9Z2cAg-rn!sXp86Qtl{nJASGwv5X4u3V&vTx*7% zHT0}sMF1n5Dx%JN)HlMAX0z8@@eM!5o2ctjg2LezZ5@l&IZEd2ko_x4S0-8kOpSMgNWeahZ=ckd*5QYlr(u_tzB z{A?1t+|JD1otjdqrPFPV)sj{(v3u**{p=Tf2S|_v&pGP$Wb#j()&YJ1K@tS`YRuxu zd_6PIt=XTX(K4KkI?`R!@QxY$#FbZ*4xfHA0*c=ox$k8R(7S=E!$ZfG@DVA~K64{BVv5c>75MaHr*Ah=BxIgb zeY;^rIhIiZ1PPd+uSsCU{Y(N@>0=UzTK|$@wDzqErnp~;aK`FWIbp*7ip~|g*&k$)Trm#E9h|EcN>{|3WV#l>N>{AZfD{Z)b{}?|725KP zC%e!l8;8yurZ5jL1qD;g(0JoJ3tD)?{GMz0$k6Vmw!#L*0yur~$G0W?bCVF==EK>h z^qH!v4Klq3m3}xVE?yD%0&dA)!0iLOvu+KqzaP8v@0W0!YO-NH&|S^c)zQ07KkwD; zcAK4H3B8`Xqbu;EO0uG!!`tuOL;VN2^d|6tG^=Oa;t0+0rmp^e)pgtRx62#2YT;r# zTNg^IpTmNC&rD&}g%363OeS-C&+?VB;zXATH!rX5Wa8|NOP^OJ&|9NLC;Jhwy2iv3 z`R49FXOs~bcrr0{?y&O;)J?44mnSizd2&9D56$nzIUm{mCjy{aTquB$#e@Q&QamVN zFUEob{-!vvj3gmI`M4MCo*>$6!o{#8s-kr)shbD|`}#hj>#xt|hDe=kcEZY2sV zuh%oUOhpGJ{;oAP0I`(t&t?Y~-s(To@zzppVap+0om3;+!7?@s^DkdbV5nbp&mm0N zEw^y})@P(d78J(M?ofjaByeI9v@mx8>j~cUePUCJ$wXfW35(jBEfaEB>F}oG)(W@C zhPwj&VW(c3l@;+jbq4QGv-JYvNeG4DVaFs~gLjO?ha@jFG1o||sghx(m7pXCuo2Hj z#(GB389#}-0i*49xrWa1KFqV6B=CSm}3W+)9bY2z47# zt8s55o-hb*L@h?djacRIxDl)^R+fVc1Ls!2aiVB}RNwPUAvJ^39=LHJaIG6WCI&Z& zFW^Cd{F6s!A(nRIe4y?;3k2!<5`ZV^^GiJeWk|+PMZu|83b{Z=3*xR*i%G|gl(XIK zrx+FGQV}%9ER0#%Pc@P5PC?mls*A*J3p6#6-4{qc_XzljT-0z4F1M$YNHh(~5&IrX zXi`Jj(lj+0%ahh5q#W5gN?No<$*RP{`(kk+2sU67td2oXsX1-pr9!xJ5&iY`)7D-z zGQnS%m;`_B(IN@EtVLp$T#Ljs*>Xx-BnC^H%uvIx53`T{QcoPTnr`JEXVXInKDb4JSq<_fX&}OnQ*@rDgi+={v>Indw2v2uF;04BquLmIrNt6 zf&8Jgi`$r&)_-*PEG4IfKw$dyZh!yi56jE%K*N`BAdYlnZ>bn|QHiePED^Y`w(6DRf0o8^Ko7uwph+*iBKaT1oiCpGn@Ch|Zw+_S&mFJaB^TdTO|Q>}n2 zsA23r!Y$8x$HWbj;hDCtj7<`r`PHgCn%BLQm;pz zd>ItX^lCM`_H|ZafO*gryxw|v=NU|8=R|~wQkc4(uMhOi4{zzBRDxk%#aS#ju9c(? zOrpznx$X25+O972I{L#D3{*_!d^3&FR2_Cgd%e8zZ>HOTOFTS*30$?}fqu$qtD3>t z9wtU7=DpJ*-QgCV6*txY7XG(HYaCso1{p&_!&O>vXllY5x(zH=e_Z;vz}eY&+gIUu z>tX}mTKV+}Yyr^krGYDCZRv=2nrV7@3r{Ye;|Fh;G0Ny{miyt+qwNvg$?-6s?z=g> zg0R;QXs&1Ljs1IKD_p%*Z<`^j%67L@&kX9_52mSG>Tu1W_D@_|Z;Q@B@Qy0m4FnJl z(L5=nmGmVWrW}hr1hSFWnVtSS2&5Nt6H}eoJqF-M9Um-x21BQA3d}I@_MKXaQhDI& z&$AWmrttyii(eojK-YICly4vDz8|(UB@_`B?)V8U-px{$dIm88T$GO)Bn89tWdXHf z5hPM5|D=hVjQ_Aa!24i&DlzOVbMtOcr?1F*UzqPK@`qh|aL6s`;}~QMJ-8E8kckN;UZaRqLR{?wg_zwPRMt~R9_V94l4#B9O$i`07b2FCrg@H#4 z4)DNHN72yT2d%p8;c+8)Kx2bmDOMq!ohlgt4aTpYV8mc8wz`_C2h|JF7pi7>;SwG= z2e0t1+b{Pv-0^)pv}y=@+>0ccIzri4{P0X1Boq0|!*aHQ7{==B-@vlRm`s{gKzQHX ze%S05vf@Hjs|V}hap9x7G=2|##K-h$c#ia3cktq=w$vWYP&)fqUnNFh3|uIolD(hq zk5^aAkLZz^pY&7rwsBQNe^|j=>;>1P^86`0cM4Yohfexzy$BtkpdZWp3T-|w@cyD+ zC_^Gw%NaPp28Q*bjeNa<7#k9weq8!`)CTQ#*G+QNQ|6Kijjgu7X%e%)dA03S;M~Tw zhs`4`9Di8BriCVk;CV~qXjJ+?K(x~&<~tZ`Ai;XI`*{rwp|MKU0N7Hd@8BJ`MtVpA z}Z3rzlH7lV{4oCkLJls^T*ZZat0kCAMHjh?oaSQ zsBfooIWOT6y$0&_e05wj^*0wgnr&BY!b~ixt4C~ym-}ZeLSSB~v1$J}o9~#jm3d#F z8AATiqMc^_UOg}>uOrRVR;`+)N8{0ajlIY4bh}H45}HQUA7|IgIh>DDjRHKlxIz5b z!GyMQtxZPUsB=24E#tU4ET4hrY8%FXf@EUxYz;`k_X1n;xzPh@Cjli#(JmITtdqux$>c_8+O-3+JVu}M4JE7QC zXf@;9!%ZkQcL{e(`&N8b&lWbAx%L;&Hu2GG(%M+Vg-dOGnQM#kqsg1h#Xm(3djz*l zHFesxg#(TYz|*mf9MI{+p1eJTXbyGFEE&uXhKI(@|B9E&C&eqCy!dJ59ubXY?;}vMPpc^Q`I(M>bdVWj)S@~NIpcj z1-^fVnV!q#YI(T*akE%nE!DYVxh!=Wu8kg+4_g@ibJ?u~*%_=6;u*4ww`wOkEXLGI z67fmqg(8-QNgK*3oQ9!HvS|*=BML_;OGrBeO_j1XhNYC5f1o>dfRsl%vQe%!7f5+U zK7z8y`iWW;+J{+Jv#6t*aMianoOPZ{*s*h1!mgdRd2byCPv^|~lTo$W=TcTdN1a15 z5ENCZfoKxkDT|p=deMSm?(GOV=n2jt06#%4HH6<>LD7J)yfRBHY6$Xc*S_*4$^Wzr z@$*_Xy6Kg$g=(~PO-z`BP4_zRnZl?A^W`g8b%f<~ztU7mW~LwD1Y~Cn0V8Xu&!5-u zXM;6!IDb+25*)MmeWNCZrrk%l=R!?hPPe<+_04QQ>28*XDIAYEhd`Gsy7>wVevx1M z6XKiTm0#c!%L+TRRX_o!YwfanFt1ybWBk(lZhbc2td2M9Da;wer5yRQKyNpOczZj& zf(>N>UVl)#FJRBtkKN5?cgyWm(A zr5@DUgkB%X(o8R5?NAri>#Wimr+=9TT6xBjSJ3>_O7k~pMYOPM9Y4KQAWO9ga!d>2 zcP=PTC;&=LQl*YZsQk%|N-&-W{aF5k@&TITSYlDKfP_D{Pan zs;0A|ut|qI@?qMqqy6SQUya5uWLl`64$ZXA@GY$~)4iteVV}%5zUamTDe)F&KVf-Y zg$a9@34J$(TWgd-%Js9GeE?{?kJ$X1LPN23g%f|qN}^L;mK1WudV%yf0o@(e=Acu< ze^bRQNxoVvL9Kv}Ob=AhGxWcSxY*U8o?>f99X$a>!Iv3{`s$JB2fZ)J?`$4 z4Xy{#{~Z@zE^pob8d`6yo^Ot@dlZI>!)zq* z$z;)8&0w-WcnH~e5*I^{>jT@zKtoX#aGNm|c`|seNuE|%^YCA;u3)Q?f#d#lf{KVm zj8Yk4xPll^UyTUk%)T}_K#-*3W<3OAuc=BM`h9#S_f=EZr!=B`#-+ zoO&O$m z$u0~L>s7ibL<~~AB1DV=(|Jp^+-&=`U8($DZ6${=5!xtePy&0&E(MY3XOKp@4WuXz z^|%XBOKHCUgNP6L;CcR@jNF%8ZJ3ZG$At%5RE2pkS@MCP!VHL==}2Zk!hB7!SusFp z<}*yAgi1qN`fI8#hgPl|JCvyQ&z$ay7D&mJ z4$(IzxS*@6MYk@yPc;%*M63=J4cZCEiU!2uaM6HM9x)n#+6E07uyEXH0UKxNs7MTs z$REl|J5hwuK7d33Xbkc4_4a9~8RmLZe1(T|q5gPCND!h=#4iaHaJyFTQ-@DcHaO*K zi{L7hFG~%|L;{0bg$Ib-XrWO=k_R-0;lg>_75l-dgyOJ*_M)OKWur3%OviZP-Bt2R zW<_|@f!TW%mqVpjs5;-&0)NGXAlxP_ZN#f$fY1_hl#yhiMj4|e#3&=xLyI!MAfzY* zK#OU}Kg%`M5<+CP8Z+z6sO!5+DJQbLJwt^nJT2&EF1=i)Gr6BqpLBJm)>8*ONNk)7 zT>Gsi-ZJ+YQL}WH+TCy zp1jxBFhAMKTV^(VK^g2wLc(!_kuV!71=I z3k&YcMyIvcUxF;^ZQZRZDd4c1bc4LGf~tqju!I^&s7hh5R;O+vKTkiVljZTDonpu+ zb>~!Q5wh;J8^EN_xdF25gByS7R?fP3$f~U@3|g_{a)^*fCacD&DZdU2}mI_Ex`_hZ8%y8pK#0j*%mDYrxsZ zmjN4cVEN2E_a*Aa8`vT&O!0NMVc4baXv4lIo%&$paCwnsSEe4{>jgn42%O_CL#e}F zk;~)Hf0=V(MQ0&(I$Gv1uTzDPx}7Re+3!@@D~_ki-{^Ttcv9C>#~8`?u!3aHN3-_u zKAI1?A1}@I7ADM*t+zS=>RgYaa*)P(Frn*K z)lhc2%yeo_DhDKRy-J7F9(6FGW^nK|^5g8C6Z(YgC|+C%9OlGp2vQ$j!zsJ)8h6Em z*Vr2!cmYo8zpD@`W-pssYe9>OX98f*AB-+s)yUFZk_jZ~j-kR*+sJpqSjdqTisqA>0t~ zZ<$*`72lf2&zY$dG;}y$Tv1ajLSK>RwSd3I0@g>Qk>dLAGI*3xNKF#xoP~#r zp=LRSgxEgqGGr-1(uB*Q5*OISL1j)F^-zuodN|P(Hv8@VI8_lW! zvhk}5QyQ_V%*8RP%H1?7mC$74P#s~Ek%txIy<=gl(Tv^4ceCUEu>2)^Pn0HW9zrx1 z^60rGzV?wrAsesT4^#1DXJGI|j!BU+o}%w$g&0oKcSU;1`>+VE)|W*f)jlmkY3|!K zRCynlA&u78v*M(Eo&iAf4$NT6^_X5sw{Gx!)~!CJX<)<<<=r_Rm2%^`0DZ+L2d)Um z7S8{S>-BEG&7+e(_8eP3CmumGH zRsl20W@Ko(d(jb9LkWjepyfOgjlNm01e{o`zI>i^{LFRqhH!YtujAA@ejP#9@#{FH zj$h|4cKkYfQ^zmD$vVCOVw8^0%kiDD5PKU=JYPNu*IKy7ZfASaHs0(oj5y>l`i0KU zAEX+Ipt*Y`v}QxXc@2;#R70fOZgLnR52l$p4;FR{x(Y>8OT0)9Mmxf6<0wJi%$93& z8|vc+?rnMZuX(-x5!_(CK78>xwx8mf9`|tH_8ea2sPcm)f!nfQ7@*8@J%X6u$|4}d6wj1`3!il5b8p@ zPM%C$U4>!>k5Gl%9{2CYHo3+O+6*$f#u{q&{k!GWVbZJp7!P4Bov~)28NP)320yBM z2p>Y@?rye+Tfa7Gz`kF?&G?T(^+E^GKRKhB?_NSoE^SaLpL-n1H=l|mT@ji_sG2tV zx08pOCvK6EKHAE*m-Bj54XLY$8j{qS`R)xFlS>U5^J%k`1i9Y%=go5Q2+X#P2?j|UYDADbd7@i_^7IbYb1nCs0D5`gkOtY?#||`&AzjD zeLjc3k?V9DlkAc;Y_mBy9Ja3CV1k5wzPZ^# zuI($xBoF4l09)!{(BpXuUG(IuQ_?oe?03_2lFz}O$tTWEDG@fqBkOHY@!-aDcnSj^ z8t7E7t+d$1a#x}F`v&53y0Y&cTtJ&Isr?|zTp01^@BzODb8)*rbT@FFy{ZvsUI?(# zV(g%pVcQPH-^1rincrh0})e!(ZA9e-f4L8vS4Y7BzF@;Jp!{SHhOD z*nHi`<^GUyVb?JFlrc4hzF^lj26#3^Il(6r)5jteQt}L8xV{Po@uk{+_bER1i~ zf4KdxZnt@{+ri6EVes@LYKh1f#U_3!qH|LT3a@~@WkJ29q&CYvhgXGm%Pow~ZigJB z^i!XNoT=yOpi|D@e{=4CgpnS8h1Uk=@1IP#UwKUsYA{Mv-WNapc``wb#77JEL+J9f zV}nFZan-?SXEF6n$k2ri2J{}=TN6U$4b+A|ctuTLfc`?I9hpk3(#7RsaZOe7SgJ%B zCOvPGuTY*1S-)?cR)O=?ib?_tRO*f6hc+X?pzhQE^Jp@;TJH7-GkszYpbQ{mRfp|KVuukI;4%Cp1>|kNfC%ciN9OFw%dyEuz2ktlZacU>U5y zyj*{4K0kg?p)%e{6IoiAI&u;}s?GY~ReJYD-$ju#irc3X@)>F;`bo^)Y~De-LtG{5 zOB`SC_QioM*J^|EVX7Y^@*2TAfH{BWOZ%B$M6GogCl@)kvqh)o=k$AD2W5j~u<&v) zSLgwjK1r}xw(V}YJ}9r#C~q=((``F=mT&R>4lZSc`kn9mlp`l8WpLT>IngvsTnbQ3 z3?A_d_*6$^Os}4M(YBv0-~|tOoHIgJbE{u{S!2FZ2BEBBnpRILz|dg&oyH3v?c6QX z$WcvuB^fy*0Uy_M)$Prrpr+8=XjZb|D!kZt?htS!L>~uIQ5at#%NuaG)BS3>=v4D6 zSbw#F0DAFZw!2FF7qK1$Pr1;6S3!3X)IC5AJ+WS*Hg&^Okd9Mp?m8{drJC-+89}Y= zol7+4G{$}W!2N4u%156&?D)e#zXF^B%_u~g|-zjrvsf}s# zz&Eq^;6By|cu&}Oe%<=w!7|^<>t5-A_eja8km^cOieaUujf;hkM3>qp)tw^chfnPm=ALgk-hc9TNHzXn2=P-}|t^Ob6nd#^t%*T3%;KR}jknlqB5 zoI=u(BQ!-rG!31Yq2xMnM5Z&&=@zQobRJYmp$z*Evu)hbH4Y3krvIy+4wFFexUnf# z_&|CJI(h~Hy@v47xBd$em_2ea4c#u}3aE!D_u`$lq3)w5^TE9X*mWB*qlYe`+AQ=8 zcE0ZS&%5=qTR?8Gfr+O|B&#|g!-rz}(0KhQ;+i?nY9O_Els-Uu=4UL!q?#DXv|1J; zQ-olYl^PvxU+5{JCaWZj4Q5Gsd)uW5RX0q+?k)3&+2Zx=0F8a!VwQ*t*`#k8XDpM) ztu(&wQ@F(Zhl zGHG>y1{)LUsLIiQ>00Zd@@KJVk?YeUQ5&wbHA9}YHq1ipHaDE9nPLZpf7%?rhnFUs zd^X{c7l5*%8gKH|S(K_fBAmX)UcUhs-R;hf>&xSnIt0F$UacS+o&2ooaj*Sy5=j>E$iJYQQk~Q$lrk z+^BnI)FnE`Is-CdfS`103hOt980E`sY+-HKnN=<=4}>>}nuZo&if(ta+^dBNv&QM- zTgw!_dR^6p{b1M`Onkw30uO)x0=0nxcO^{IEZkB*_i?-2vP}EU{C#)eIQF+UFlF(c z`Q#^SjnYauiqVulmk>m&mq~nF6M3+ps;96stOgRkm)J9FP=>erxSg#R(@Ql`INh2- z*h+c)fMn^AFp|IHy0S=s;g&Jb>Vy%tTwiV6I*41z3L6;RI;En036!w_%ni!;l&;37 zS5u8i!w?ghSTEiO)tr+gX4W*266tl&*igc4Xk2y^>-a*b@Yf3f`F5ErstQDv zG$8o4Qmr)G!dy4BVn{~|duVZs3CoISS734Q7;c$yigyz!OH~2(dZm5ps{9-Ma5pqn zUBk3FOR@Uup!udS2itw@;F?PRC)ALLoaO0bbT82lI*apKIk3}+sX92+zZv+yIoZ4K&47Cy*jQ|w^67-%0dXi zF_BWU4GK8S@OnI4eH}4`^p=kON$Vn!0rZEJ3k|RW&fb(*he^~_D9V7Xjs#Oa~ zD0Qt_5H+>+jV9oWxsE}|tL+4G1vR7CEzV%gXR6W7jALYSp6dMJ+vN>J02eR_+m?bu zJY7!AX)3rX0Fkvw(6|usnpW{AcpLelnI?Sv0B>D3Q*7V|l%j zgPv%xQZ*g%RRA4&<`?CR?YDndpT7DMqORoAyn{O~ z)1P-L*=K%NGZtZ&io-81co>mprpq!gikR=V>JxqZSGEvOzk}_jkl5L?6)@rb&?10U zb;-ll6Z_$*{`c%((<0h0(gSl84;qK6X0^K{u2o|Oi@u(%Lqcf3{B*p51&p)vZ=P`K z=kP3-uCJ&AS=B;2c$yM3HQ}hBQg3HBtMmVS_Tvu|n67~MR}I@R%hvggcCPdWcry7P z*dxf8)Lgd*^EZ0miw&Q$V3yj+H^Eko`ncZDuDa=LZ<@Nh#81~gvVg@7)MkCck(<8~ z`pHBsqL_Meq%H%rwdZaWtab&MyHGo0^x=XTEdDKCZ$7925$0InUo^*McQ@$$48Q-% z{-ZtJ@4s>ymcdM~F=dKjbZN@$RUy~i0Zy-}GQhePC_la0?53CCMt8T6U2HdNh<}_@ zGOL@h)aT3F?_b*;8#;PW*34?Pn(eN;{Xq%){r|1a^Tp?u`H5XV)xE9&s0E(=i>XW` zNdIm-L;N#i2Lto3DcPX71z!jU%8IZXf4M+ z_2L)3kzmq;_Ks#ed-s~~^;ZZc7`3lMZ_hrWZI z9xGTxFd0nxRb?g5^+r@5!SO_Pj;f4A6QevW*-?}yGjV1VV5aIBvez(8_IkF1I|s6W zumf=m^-wa1A(2=mP}WQnD24Vh3^F4bTA8IVEpM*N4gxlHa!cQ;xC{@SjDD^HxZ3sV_Y2CsQYB#)v62knGE)#)sduw?qdx);J5MyjADrM2L za?ftM%NgvJx_Ao?XE$5V-|3~4M^E+F|9Jf1&yUXj`nPYGXA($?m)-_7H-`HqMR9~2w+E}W7kXPYJ-|ykV1zA-*-Y7Jd1ZANsKf0cx@EVNz#*s=2R|7hE`sAG z8$p}6Z>RoXwBoZTP#to=TQQn^1F{tK(mVPX8Y;;4$jk;s;ku}ICpGgi)eIcs|$zK&pn2j9oQ41 zPqTSHuQskXkDOqtDVPjycPg}Q(_UKY(Zi;wCSz)|nYFteSzOz25tF15szg)KF~v;d zAS=$+R4h(e#_Y#NQroF#|+CvH?s?zXoXIT zy0@noT z5-fR6TZJEFLZ{EkY?w^|tL4HqElCKgfP*7ndBRxL1s5)#K-OSf%yEC?98EZD`rezK zCP8fqIGh{yhsWH@1l)uj9-P0>171D`Bq z?G4zFw)T~gO8yob==F=J^DAL3|hH1^w6@MWe=injac3bhnaY{X9FBnAzB-ybp zDHN^k%FJ90Hy}OFLG>CgmS*3u+Kp-dH@}5gVDLdncU-U(jGElE+J^QtC}CIHwKU#= zX?Sdm_KZ75a7k>xP!dnwzCA60F#)|bzZ(|f$CJS8hq*aM% zAKOcc;Oou2h{JWD$8?s_oGyKI`DpVN@p1FSD!Qsy+3_2^PqR9kUu<# zX9w<1JYI#<&XGUMa(4>3h2W0=ceRrB3e|tJFDQfl<+vVLmv-&4y?eE^r*6VI%-ie`0xn{+}EucK4 zl>8(Or6H?Wc>Tj+rmG!7fR+W6I;6hwTQ>l{aw3GjMaTDr+UDkxU~U>^s8qK~kxfq` z0oWDSXNMzZ=Sxa6xe*JNC!e&CgE-r2Q%7FDfFhX;h}he}Ay~`oV6=@QLdSNpd-Bxw zJRtU$z|=b-po?W%0qmCm$GPEytt@+{@` zLc=3*d?~uz-&J`_ZZ2h(csIjU?JlAT!&HODIlVkULuHoTW-3DDEmOAU$u0vCPa+XR~qxQ0D)9D2K~NiVE@d;>wFw|-tk^FMx&=Wy>{ zSwj3z+}iRWWbFFu-@^XNJPU8=JUtQ75+39sxdxf1CJNL72`Nl_bRk5pg&bm-;yKT1 z>mo*TAww}Z5h~`evJp!oPIlyLz$wQz1t9O_m_1AdHr&^hJqE}(j&TG%n7uyv5)ASI zVK<2zJ~^+R7akwnXlu(sx^yqg=`UF{wv{?3>v9z37Q(A6x|x;2OcDrW(~CkWu&pIIM*(U; z+$Ue?E6B%1$)_xN05?CvCmeacVIv;Rc=A&2RIAK^KI`@HmchKj;{MS)$#RT^T+5M2 z$2vz(`jsg2a-5C9mt!LWN6Et+a#Oc-OhldDSs9NuVsgd`=$)fw&<3SyET+q{`ekfI z$o9mo2-hA%W#M|JQ6A6!54~omHb8oAJU9$U>O7tsEXLESCB<`UjNxoT%H?8_ri9O_ z(mD!yK3p?Fm%-_u#~;T=gOfq84=pdj?UfUHc$qhy_4Cv3;| zo2f@)>Tq1h(U=K3_E83CVYcdI-lM7`q_D0OzUy5quh;78 z)z`bt{Gs~;<^bttM724`eM~6ft=pK{jj~xDl8mWj)KG$P6RarMkwJ>m%`6n@YgsB% zhHOG9WN*kIWr%kFs39KBu9bbHEvlJAtfIZ7O|W`DsV_D@A)ANk)yAwX@WxUn!9~3! z?QkEH79P8?JRx?w**O6zdvOv#22#%Y+c45Jzl}c)a^?J)L_QDj_<{LGQ};YQuDC+3 zo(FIv3QJJJK%jm|gD0Rxx z_lt*Y9+yQusdTg*Gpj&opNHLYeGON1-gK9<$ppQ~Nm2@(bY)55_RWOdyYws<5g<#F zvRJhFWyy%he3~TWZ^@Hnkoh=T%3ltoWhj+Mx($R0rP~0QF;xzb3#Ri35Y+0AQ8b-r zz@DfSPUjJvPZ}gTis9H`Fs}kGM1;gggEFXcIGD$1bRLy}FfRueTO1L#!S!ywxtLHU zJ_LoDJ_!nCC=F3z9KVIHy798Rh%Hq6V#_F#fT8Dlv* z%wzN!pC$2OULr2;VKcp*-K@_4^VyF-OeQ~V7Tta_`NMI!T6DWUnsEVVRukvlvpR?x|EtTtck{!Ut+k06k0nC_Wjr^Gm73n|X15R1@HJj@ zuwd?2kx8O~fejuS|QRSqo`8il#llqpd>6J1l2MAvNreZJ&q4|vs1M1gvE zpA$-9`b7C6f!^jwl z*vWU>pUvd^X}my~9S{D7OvYDz${;5c#M8-n=lbqc6|xttn4e`E0d7rAX_^R8maS!> z`VD}>+$}2=o8+B)I^B(J_+(<+=+T@FiWGFHLtR-dHxwx&O%X+4Ju<~CZW<(JNpbD> z${R(<()3XT=JL6gEHVq+(^O7}wwyAn1+IlcYANEEWtdqgKAp>wW6fLgO%Y%zP0Rtf zVLq3v<@mBmW0nCIJ2d)Ma(TF&s2J^`8@v@mt@teuj$>SG!fI|7Yfc!>RouaPqLfXPyd`YMZM$8%o9zK! zDBxnE7+;nK=D6|+UydUm4{;ooBu=rEv!vdjW-X)*Jmetd6i6wRNp@m=1Ef5yX@VE0 zDye3KwYYW^^NP|B#Z+?uvXmkgFG?O_CKu4#*i*G*cg&0Ko(j1(an+7r-T{{3U1qXX zC@WxjSk6|WXPk4+Fo>Ko4*EQC&^AgSPFvWriKy-EbiG;Yy}8S7KmBF4+q1&x;r@0> zi{tiGxK8;ZzA~VDIS1E))Ex*Dxw!4Nr)&zL+WY#XVX~$%%mi8OfDh^g({U~ zxR%Blhl^{pLWx6+v0iOe4)PlOnRY}Or(v3aI;i!)>B=>#3&`CAucT;3kKC_)KajcxqE7m}n# z`c2&s%d#B3+f40HPotVG2YXtf&EX!+m2pC>X>zWPCr&NTg!~o%$|Lu$qTIv4E_UJN zk&>g#zwZcQ8UJxN?kifbEUkd@g~u%=0xM25)X_v! z4?Il!_%EBD;H6;`xM5v7_aH|c;yY|e96wAUcY*<6I$uE$MpI|L5YT`{lK?z7HL9C0 zG1B=2p2z7Kt>OZw^WVbalbnNBueZx03RWj&c;VyKkZ`txR|8jd`}_xwnWTz586&!B zKB0~(oHeNfx%rNUc@!SBhiRPbk!`cRkNNy0vjv)AZklp&=rCy&M==a^by9`n z>9Kj1fgy{l+zcwqBgzaJPM3w1v$+CeK7A`Noq?`g- z)=b<|1ePZ`J%o@Y&Qcn~sz|ttc?-iXN>nVLpij$E5k?OfOs5ctg{fn1R{_JXZ;Jj{Ep_vd zjclSA%?e?IGDd-hD2(AQgk6TZ5@%URx#x@`DZ`%$om#<};K)M69?I<3Q$F#lFa7Os zI2^^X5l8Ha$gPr?w&yT4-9I~D}7(SV_jMY4LPv#PpXX{&%THwsgQ#_gY|COOMW!QS8Jv>r1*U7Po5*(gcmerJb^QlakFF)+&`6^jMV006A{9SE<4tG95 zS`rwYSLh=sM5pCh?jS7_2L}RNjsQ=BUl$V4dx!1T#(>l)N*vw>2~<}CV8WH?X;Y*4 z;|Dx~D3A@TGH)XbSpzCAQfr)AMrrLOm57uVCJY;S=Jr@I;3Sby_=HW`Co1HTgrOkM z?4q!S_%8qni|S-FMS4LBwpu>Cmo1uEAJNDg} zV!vVtVVs>+X|ZVtxU(oNk#`lO7J^p+YEecJKopb{1WC|L7_dhchv@{tjShoEhsatI zxD)xsu$oZfvIc>zp*(@?E1bmUrMc@$mus21u0S<}`@{r|!$L~}K;+=s>z4^s;d*yg zQEreG-;^X|QTk>J1h6$G>YqOlvAAxV5{WE|i}sr{3WC^b4kxuojzQ#Nd(@JREMr5~ zK`{EnUCnt2k%)_1O-L-K4Z7XvQ_LEOuzoIEs+I{OKRK;zpm}$CF}WSBxYJiyUIiEH z7bfgRX)*;3eB^&p9kS^!DV`s}Z*ML)aB+m%0|LFo%nqh0Frtbkfzg*7KkQ!BR8ajy zOx!E0P_nEG!BDq`KJcpM^Q$^*%gRL+EuU2hSj!1j6`+z!iTRl{O3cdyWg^~O^29Pj z@}hrlZP2BZDI>_t#P=0w4@+BYv$<$kM+%ux=$hnkG+U15{u;#4gv*+py1}tT*3&Fj z5{^ei8CDggoLsT&a<5!TsaSMeL~%AHM(WdNb2(I1Xh@$lY4Yq&6`&z=VzEM&z<$Q2 zZpxRcXth+S3gGe;NtVQdH5A>+lI2FMG;B#GEvoXAGa{C~F=~+HL985HG%nXbOt~N) zk%W+@*-yJu2?#9?)zPQ^f^cZc0y_Wq_8qjG#p4Ix?QZvn*$OW0`vsb75|;90PbQSD z0aO%V=A@$ee4d2puVYPfA616BL2nbd+8&J$Zf2ly%d<5 zf-+>|Wf5;NU=|=)yJxN?Y5+(><_6|;{1q~1g60f2?4#42lSa)MV%*M@m0Cr)xVfju z5PzOK1QK&*w2u5|h67Yp4TX8iC@AKM z+J&O9I0G4b%I9h-`Qi7=OSsOKM3rj4lEc76PbT=U2Dop-$cYg$LnJ04dNl>s7=>+) zn1G03f@(r5E_gMdCa|~xmBZ;8TRxc1bM^?OvtZRgy1*$4qqF?7AiBz)52359`SHBS zT8U{1Z#j4-q_|B9LTAG3oMcaNX1>|E5i{S6@mo88h>n9Z;f7l*Bj-g44YpAbA`ig{ zSbM2R;LL64aV8{ksL}+Z7<^|zM4>m~7P~=N*iEo;@mhoKDo~FuS_!zbB8B00mcKpN zCQwPNNxotu_X)JKV8Spv%kRS8h9H|@$&2kIH3is27B*r&yw0+Sf@{Lv7RxjQ)(NjLpe41*gq3Pe;mP!(AqBl>)ScuR=`oxWOrGTzNKu ztyQL3VVEgAOER?`b-p>S4|_K?fv41)N~n0{R?Bra+fDcL z*_yA2oYN_Y>8lZb1%WJ76l9Sil@BSfhGuHLlHv%JaVSit(}=)CQw<2Yyr%#WpTW0& zx1Sd+B}GLY{GtL!)lV0jF>!$IHlP8HJ)|~#Pda^{4jRzpiYxG4XhX6lHuK^%W4fed zr;oIIm-DcKLOvZU&|r5|$;yN%;^eFmufJExrD{S2LdM21BJG z)fEKec2i64gfK4ilH_;=$Yzr`xw4F}AQ{_)N&JMI<@~Pz(ksrEWP=5nxX4^mm}kAa zFwJF(d0kFEwBYnHuZC~AE`O|?vQtSUODZ}<&T^`~{PaX}R>*}vc0km0KfA$4EaqEV z7N`sYs8xz0bRnoHb7ir-1yQcV5~c?0FVvZibY!8_Y`!ezZ%CJgkl8gKF@JI8M~LFm z8vZqaMvyc&Y6M7wmi3MPS*VU)t592DKKKcUPy=v2!lkLyvL!Nm7=knLdZFS z!@;XYPHHMIo}(;KV*3SwB*`({(a=+X?B@cbM1;#}3NmRiNOq*SzW6-41WE{1%xDT2 zjblnVpDD<}#g?Wsjc~mkK_;0IiubvUp^uXnA&NYADFC)cJ1v<@K`gG@O5!3!aruKF zZz&+Qn!`yIWi17{*dA%pB4jM)ECq}{k&Yl^DM-Y{WfB&avwS?9Wier4KbI|4%Y}<> zkU#ZMV)H1rygptg`=D9UVW!c?pjljJjuV>!rE;tqrg(0oGC>4fwyLLV$qLsu-OnMXjL?nwc6v{7!&ZZ$0j;PaedsG1?n{E_&iYZ2cvz%547}Hcj zz?4P}6{bwe5OFyVf^P2=H^V}9kVx@Ah|xpr9NK!+!9A$yVv)~{zTyrPut{9*ImVMi z0%tC6_A*m95e4wd=OkfwfxQ@NM|=XORSu~mJZ$WDv;Dhse|}EoTOC|L82unnKpKu0 zRB;eZoe72A_J94ctaF{8qKTq{Y#)Dnnm7daAJV2E54$4}A6rJh;|gjCuM04hkh;L> z0$M>B9id2y=g>vra)gh~l!nL!;$m1F@kvKmLHHXXWA&NXl2W^&U@YfngGMT3Bybao z@!e5*7(0*bqpzHMdDC5WJ9Sy<*?xA@ecKk6`I3>Ch6(NhVRrNjB)HC^K+hAot5uA&Y{MHY8@7}$hqLZ>?y=T&Iz_U#4iE6LsiWFHy8 zv+dwoT75%^s`=Yjy^^?M2MFmE-dt-T*!eavjOIX0Z~U-@_NOC{IHgY_D7@KyfKY_==lO z&%7!F*6psl-z5QRAbw(Qe(^tG$0jzfJcsjgh;3c2)t1QxEV*%=q}Hr1$ih`s%e{wil$}VjVWqy&a2t_E$i-o!zYL6r7sj-uFZ*=bv7G7p$FPxJxrqFZKlD z&~kwnBkz>2F8>bB_RQJexXTvP8-U5AXB!Ba@!*6uK=Dbox6UIjPPT2%uf)M1W< z2jKjl^Awb(PY0=HlT?J6d>&7HNTlc>!mk?}U%+X^=2ILY9sq-ICaI##>9! zAyq_}X*B{B7KLg^f}D$kps^%Jfy*t)zG@hdf=war|2ETp)G??wrCjnP%ff2vIkdiR z0_9`;gm#i&)ijEdBudWbOO$5#0u+ZA1@{~YZaVGhQw>p+-PAx_;vr6PIKW0zIGGK} z4kr~`H<$6$_ylPW2hk%g5+^{MJY3Xl=D{$!;rFzo0ZBv{Elw(3xOT><CMAZ??%2({E$1Ghs{ME2&m>cD8TefJp@VYi!kYrfp?kDa}O%`u5>*atRm(;C{7 z38VRF-`@Jd9vQ;auBQaS)qe7Ug=Xq1Vay}C`bt>FH2|%+ zL|92bTzL(Q0{#88fxJ&K3S>}Z)dI|%R~ko*K2rX}^3d&O@b=D7QPnEc0xGqoj1_qU zaal78Fr{o)La($Wt?-BLW4D`3e%Q=kZ?>;@v+J7~q?}%1^!d1dSNeX@9n5F82bTuI zdsU2S!*`}n;+T-N$Eu8|CEi)t%w!$$I+KZQ1$xQGeY!i1J}FbIyAM9lx-%1)#j;Pu z^54Cit=HY^p)P)3uTcld_i)M!n{$amd~=~Rt*t!b?k$38JrtU)X-X0gQnnSE+R%xl zYbf@F%5=z{J_vN6MYcgxjN199*Gp97$spIkv$y<$&5M%yGr_cCox(tGN61 zZZm)A{!sBRqi3<(I9?GDQ!`oqCzAv+GJTenDFYwD#Kj!Q&RTVxwf4oYtK974wYIr5x_$_+I}F|J8uSPPZ~4sMR449K@f4TZCN43cSa zueOKfX8n4$gTulT$gb9l6})G`lzzV2tUHo^IdmRksJv3zUzW@$U$8%`{gVm%^T0A? z#sJ$@S&6wO$`hw0=Nk&k&37J_G^drR7q0b4YBSGWs6NB=WMcl!R8SU~H;=>Qx{`&; z2r_Z2+G3!twCK>O3ja6?j{D4!#%q&tBESVC}Uo(x4kY>vw z)j$KdDzozSZ+9a7Vm@2VV8=fxllk#(PMiAYZ;%0X~KmtJ@sLq5^nX-QV_21TVD5ggB_<~Ux>Z*J2P;PAW{h+ z+f03T5`ssqC07zsGc0u6WLcuLQh52MSj|G+drN*D5Ir013{#&KmZLCjfoDcHXlRup zWARK?zsIvtC&Sak-p)~xw^Gu|Dh}dOjDpdyc=p9YSBXMdv~h7vys@wziKz{d9)a}=G}vXHy>SNCy@byhOBivx&Z}2%+}+Fonq1zuk%S5D5?k+|NUFpss*5p0_?8cUVee<`b)9tK!p8 z##I6BdUE5K`t&!vFfFt+OH=1&+Baq5<~b=v)gw`IY6}+V0qEld_Q@1j<^B;m|ht1p00y`P1a#gV!>X8SD&%uRkF=$vxBP- zCKGc=^`XsX3c$PD{b9D6Oun0~R&uhMBCcF&or5Wk`&@&md{;(H(Z9LRD@8Brc zdb6G$4_9ALHOF#&?GFXmhPU19CqHf8bcf?^9ay)!<@#`LYzc*kK3v&j?(U8sJ6-Mn zQGDT>D{l$M1f_=3!)RMSe!!tY1EO%p0~CWO3cvW9ambesJJ`58y}UhidMg~5mieq~ zc7Cy1&dn>6Un7BV2II{izdzG3F$p##oHzg(-*0v|vjhD9^7;k5vN&6-s9e>Txr*f9 z=BwF$4@HK0{C>IWo_G8CZn-^dcAr6&t2-#Q?Q2-7jePNW5zLT?(Z2e!iuTo)3>xf; zKCHUYikgG_x~LskLtV9^jEd`k1ygqU{Z~aeL(&4+w=S|8j#C}RZJ3sqX>+bG6~q<}t^CK$0#4odEH);@1uX$$x(S2%T=%8j*=+F(9EtMx`{15y>&;QZV)VZA zU4Algzr*R}*-DL*!2<3RoU4ULJ<}d)&aZv#9hRB)vI8u3$3cpMn!?G#?xU*()wlq{ z@EQ*oX^a9KrG$3(;K|MM>YkX`X$)r=7o5hy*9Dant#OA;5n&QkE6A5-*Ig}FD=5$O z@^}T8JMtnGfcF(nL+d{E0yeZYbG?zZBrM4y&l_2TWh`-+n2oiZ`q3)nrL2}WFg`3K z{{6+P?_cb8o84KcA=G-9ugQP}wP`W5mJmRMU#v!fKwmDB))B5#NBs1~$9bo>XPm(* z(h9=4`TK9q{f{QJyHLMAnQ*^GvJqS;Dpwd2iJZlK%tk0@OdoTf5H4F)s((1GtQ6A{ z)Tjx;25KS?C=yKeq|y4iMX6sW`sz;x8Ygw?xw+Ym~66j>xGOLZDF)E(9S>Is3a{0&_ zvIm@>>scF|n8s-nSWLA+Ou{5WY8FkwX4(-{BdXdiy>L6AGws;+<^1@ zuS80k4(M|6@yuj!n^i!!_o(Wq7dm9=mF1E9^6O{a0Qp)f_%YLk)y9K| z+@7gYCvioA3(Jl-9mG_yWU;>1Htlv{g@x~78D?F$R%TU;!uqqi>P}|j#xR2$wWO!Y zdqrw$_1Z*f7Mp3yWPO+|588^eOSp=v2hV_Jp=B$TTV*?*9Yz8b>g2F1-3 zQcRYsmc}xIfCZK@RNSNk+(N*V=vdEoQ+Z|$KZarpqv4%qiG^B$j8n(C?I7h)5?YQJ zCKElWwLdJD8y7dFlG!oePIH=^-1O{rPN>zycC57O433>~X`gD7B5Om6XXKht!(D)> zHKahx_0=Z4B#5WEUc#4tHbu?II8_?|=Nu(?483E92C7+ojwUr+q ziEQOHg>B*zO!p{Lc4mV&Ji;J$#YCdS)D$%lpeXp(iWK5!!Yd2*@+=jt|I~e49B;N~ zrbU8@KchBv-&G*yCvS8N2Cv09Ye-oRbFwP8KSsHAuEGe{Iyj#|c5_&_aD;1G$$-`jJ zNVhb4PNpW;jY`3Yi8yxDHDZ;d`e++y>!WO-HPuucWPUuZ4$Hr&{f|4_g~Op@q&gRD*y!Uz_olJdr`eJ>&IkVfx)DNVk2MTDm%P&6v9qGLnFhwoeoCCXC zwkseFgQxw))|dNUE-RrTeIRvymNsh>HL(N(s@_c?+K_=6M%tH=fkbQGu7QV^!SkfM zG%%et@_e(sJy)R(ti#c*UeM3bdh>RJ+!DTb=tDnf7>!} z-{L6G(^y~T|5hdOe?*1$zehy1om!r6j9TTu^7W~x)kyj9?W4&Au93g))L^1_Bu?Q5 zpXq#agq`1S)CV(wgT++_u2%8YzwQnY{fGOeiw_^q{x$SfMSS+}=ije3Gd;Ot|HqMP zOa2bcyqI-N#bu0arRjeNlYN;)-#hf(2IhS~9^6qEd&WZjgSSsB(5K(QTg9`TExL9- zrZ{dm)F}cuT*eF)!*P$i2gD2 zEzkGOlRV>-^0zGL>{9O$iB!B?9`d5#<9-THOML4{5@VaeW3l{YI@?{tlrywFTVmID zRo%f)c9@ANl}!bdwoobMPF=sMx0d<(U(9az6XnayA^@on5Wn0nq5Hs4kS~-<8p5FG zfnhLzckcHIsrh;Jpl9?05w}^Oi5riz>uzSM!@_o3^&8hX2npZr_OQic4IAJxCEXwA zbEZYYG~O?HvFQc4N+$qhhpQ_(1vIvUCZoJas$4z;};JQgQZ8_Yy`IReuPj8>%m zD5dQ{=M7}F&0s}EOR4_9v{Be8-dx@4L>yP{@ZB!14l9yHtxDIrx7ts~n@b3ep_Sik zU%%mzDr^`##Da8MF7(4R=)!G5#uIQpiJoN5J;T&gMjrBZE8q(_+;!Gsx+ zx3?NYm?3~C!AJye1CHodLBwD+;3<{1-p^XfhLPEFkO9_?!I7ebgs%cOUh)9$Ylb%- z)~sf_8Pm}Of5|&|pt3IO9O{*6l)gH_eAWR59-*7_48fTpv)OLFTo)fd*NxO38mqn8 zOK5|;Fz&?p2kcxxL7_wV+V}&#B@*KIIBRjg>pn_)5&1$o0Qq8@KlzPs(yICRCjGS* z*wCU418J?cJrdEbHL~C0wx}^j8lAls@hE6Nz)|J>a;{Et>_5!5Uwm#KxWJn?;Q=*A zw4EKp@xS#iaO7{HViR{kMm&X(OcU@Nrt(eSQl65h(nAjasXiZ+!5n1QJH;b3VdP_Fs#_QUP4e5nK#6SiO6J7h{NRC=>9mXWzckw}7KNK=Y&XZ>$DW}ugM|L5DvI#K6#rtnun^WW zrvw}Q==@!)wb!?b-j7swIE~oiq!n?s>{hV#)?Q}lnz_D7g(w00%`o9lvzu;VvOcwF zK6#)y%~I#%2heDbH*4~vUVlT;zQNmtezwc3VRL@w zgGzgSq|Ye0Kg@Oq+mk?gQdINZH+rHu9J02Z0s71CpgT6r^_>7d$K#R%*vQ!;ZL9spE z`)ejT(+}5GfHKvq{h|UwDCj~xrlY))e4Uqc59Evo4 z!TbtOvQIUs_2uT*<2q)?y1{u|h!$YcJ#2|dR69Gu%kFSUy9+CS35{u1Fyo(m@y*eG z0WWNd>daz#BEzSD0xA^xUTt;|`i86X^#6VSzrTVwIQsF~PZuxKU*G)k504*Q!W}b% zL0~P$1>ujLA`M}B0IYz1_%v1awSqJi<`q$C!Ik8fJQ4a|EfF8-=)o8Ul;sa zAGlLLWU9i=6o6m<&Hi_4|M#8RaHgL@a5I&%e#M*4 z=}K`qTam0chv|B``W?QCS^Zu%oFS<0E&?DE_M2l4l{peBajf?QU-N_cA3Ntyf%fR0!d#?=Po!Xp33kvE^;r;TFS|I)(lqR3 zRbJk+J-iO9rc(5j6;9nfRF=fgvt>wit5&%>MKB7|-{=gKkOi#C-TRBINrj9s&z5M0 zFtZbGKWz>#Z{V&)!@%wNP834Y8Bt=EhB36DcBoS1W`wn9RP&uGfAb$g~%=Ck2A- z#Iaic%e>|8IG5`60xZNoeH<5?!E)HWG2sXUY*#jkya5Ak7?Wu_U7>L4BwV|@R9(O6A$AO1Oi!Gna6kR*lfl7Pj9Ug0D8eLOKGsoIg~5go#o8 z=@O=T*RX^h0$u&{V!7jf-7SBC^8^qJ?KYc(OUm^)X<%Kn5((*M^LJAia}N^*4r@N} zzitzwD-gYKKq~=3mko&a9dN6Slzzm>5_oIbw8;>Dg!}3iTDq5KetNfo?E}WZF2qtC zjw-1daM8L5{{hROFd+N?cMN}r3m3f#7zvs^Y{i2pPrbw81O|SCfvYH%AE{M$-3m^N0QVu>*N$1x_it?*GE>>Dx^Ff7Wj4q@Qjw3+6gDx1VA}K3Qt~9e>Tv6U$PR9g zU+A(SQ;iP4p_y3iJZ z7SsMXU8t^0K0#Qho&~6SL4|EfeU>&B`+*Z}K7k+BjVbLa=DP{;oHsMSQJ;qCU}__% zEXB~b$Ol*{FL`)u8R}gKtMXR zf>#!VUK+fUIcBftt|k-MB?3oyjZ1#~pxW_aPCj^pm|I&s>MfIr_X~T{rVvii$D{|< zRKZC@!}EjcqpfsG17T|~CTUI8v(W90a;Q9RXk?mY zR*X3TAZde!GBr$!khCpLBIAtPjAr%iLkv`|ccZdEp-O!=;BfVnV}AqhsKW$1EMv(+ z7fhcP3V+4*oYWE`Y(a@@48iz%L%+$P)$45PeL6PzVYxfxf4X}O98XOK&+&5*Yv@-6R&*)80;Jem9e_c;8} zt*;O741UxYb7W(y@pd;`!qKnmKdff!_e!UIQJoz5snq(*yCw88xLCdusTGrtrq&XU zZGp>MJcmtGaIEu}j5-;zan&#v2QT4_(c6t$H0@?<-Z)yDEcLibJ?}1$*VoUAGhilBJ6i8*u*FjQJz4VA2yq9O^rY^t^$98 zO}5YBSjln@ZDawb?hA@!Xvb9u-Y|yS!d5TgY&^UxsCJ|lG|Ca5NF`VZ>~`CY+882J zi(wd7wbvb-=2;)~_SeiPp*;>mH?AUZ8T{hE;O5yvWl@rm#dnM2dI5*#&HDRy8?Z~c zj^30wPNdvl;0@)M>T>;(m7HD?@d;Hjr`Vj^8&f z&?lljg+gj8F6?dG{jhKzsb@@!8o_=04lw&Ic_pC~~`_Jo?aAZ~X z-3kIiII9I4OG;Kr=}w}EkA7aR|MIRAXv8v%r5c>?-RbLdzq^IwBsc0Bb(O=cx{vU< z7;7y7$5_fiY;&cy{KA%EShQK+KDz?%2(SOZe_7S4^e0hF-_82NY=3A{FVA%nCDp@O zP5QA6W2ts=xK*>7(6ZHr@q;=8&d0cU!jV;Zxqk+;f^4g@I$(;Ch5rEOroOr2zDoi7*_!=S|omnemmDFMgM^?q> zJAde|m;88Qn=nUtDrJ6x4bUaKcwGYFsZ@E>9gaJhVKC{)>b$+(cGaF05sj>Z=|nG9 z`(lfYsYX`9?a`>(f*~AP6_~(Yb#HgaqB$a>Mit~sJ*KlT8z9p47PNB5??p&iQnfGO zoica}^j5UyfOGC8LtLa|c0Ww|8V$ z=j{iKk(yb{5y}7S-x3pR=3rnsR(XxIp+vQ6GG>&NkM9_aD*7SdrEJ0p)t3T6C8j^h(X-W%f|4G?d`4xDtAwFWRP^s7!r>hKu%|ocgm9Uzq@lCC z{iKA>_Rtu2bbMcMkV94_dA9iyf`HG)?n8c;P#GJ5J?M=8IsYt#xek}h;_DfM^F zD!|I=Wb((=<`R~Z!yE$Ev4WZl>hXm zn;&<3*nWsaB+9*kn}Xc;TT#?W<-0WykC8}l6#odtPnz4Wxv6$U^Zg?Yr>5oVKc{W-bh%P^sNS$!`aWr2~6v0r+SRI_gI5fN#kD%*kE*InRY6KDU_;O(dmt6G;H zTK|v890*%jYp$$;vszV_g;VGPE-UWaL9@L18q2bjI%k%tkDOpOzGD`IWotFdBkzWylmVn(YGRb^L=N_NrEN;yJ2 z2@Yvj!baP76sZmtiVW2o6ch|mzi?+lLYrCN)pUho6atf?q0+jc&#UXeUGT!D1FtwnW${&6AszFSHJ5e!vwgusCkAj$ADsAYAol zBWkYYISEk{XhYAo&ymo{x{5bWdICvj1_I&bw<2 zy1O2Rrq6U@K>foY%9EA7B4xY$c&Jm>jWf1Di^?Y?)bO_b{G6?m@*?hNo z;jcwO=+T$qQtbU6u?YL~aC|sC5@W+pgK&S^Y!M{REB$6!qVO5cQ!fgsA@(Bi2*l;()I6 zV*Bi-n`ZE3bE7ipPNht`ENZj8onGxWH({bOp?~~9Pes53G}*2#whUZ-Zsbjua0$R& z3WdkG^7@ZiL}>^u4)DYQa|2>IJT3y+bA&hnsYkQv;lrdsGq{Dw)=-z)9gF7^rHpvg zp%HejTASQ5?lf3lZ43WrM4Ld4c}JSS5UU#S3!3x5*KAFe9|Fcf?bP zv41Ur?yiZOFZ45@WD6Z3a6KxMBqf|o-w|b75m3Y67;%=zMUL3*nWPu;hQ1&1R9!dF z3#?pkPg0zWo6fQCZ(eQT3dHq7+G+v=TdeRIdwZ@8dCDdnrbT%m9~;oCb?HI* zDh;1e+3PhM*yOrqJwzGIp6q&ddAaL;5!N{6;Z&p)sO+$yp)SS#;&Ubtq)ctF(3~8u z@0bLy6)tU61P(PU@_U<@TJs{%Yzw0l$k5eBMmd}G&Na10NLctfK=ykHw+Z%Xc$mGa zJ|;$1!rP|YkV;B{_y)+RG$te@*RBvrZ#|k?8xmM=c$gSjx2+9gkiKOUwM?NPb@Mqn ztc^-mSeLcUC*dv>DWS!Zn1M1QqQ8V}`;0Y9n`cbXR|#R`jK!7OW_>X@0(Z8D5pF&HvrG0s({9KCSU=9dDamY06)A+^@tQXy&^D{Zgzb$gN-OYib9`{`*)@97u~^p7B)+SJeFY2 zcqb5psu*>Pu!zczXYjO*SZqV_V6>6=pPOU|8ixnYd4NEGEFozWfw4vB zLa#3as>@>ia{|JaKzTSdDFw0s3O#*WAjGX`X=@;Gs5y||+r-ow1c7E-1f@U*sWu79 z*`#-_Q3xUNUYNGzT?^pYv+8ri$V%B}!|)A|k!ehfkhonjB)#+cdvJ=jl`{ffCN6UPs+`yZm&|r4Ku%a#u5v0m{pzp zX*EU-yuMB#1lv)qr5qcS~+Gj?U z#XC~D2soZZYAfG)6eVYn7=dw~nKMu+XWHn21~qXZP_4F=U_nu;H7Um7YbnRxFve+8 zt|$oxQ!R={$eUJ-Vn#J1#;VngR$QW0wRRei`1*+f;O@F|Ur_`|^_V_X0emUad2<8d zlS!Gn>Z@ZlIET#A@Lo42%~Yr&%a<`%c{MIlQ7Q4S^@3*{cqASg%7iy z4L;)GZ}s{Qel0t#SM1YEEm`~f62U)Xr>GcDZ=TEu+ZBX4CyozjYCtEPVORT;5#V`ya94IGW!~7)*#?M@ejlKmPL> zEuXHHVvc|0=VAWo>bQ_x|5nHU$SoNq6w&(0KS!>Z+{Vvc#pj9a?W^uii0CFhPv&m+ zN5)N0118kSsU+Vp63XWjIyr_?|%?$S2yxuL>u*(7-%!H#; z-QxA;L$}+*&+6auV%YZr09;=Jay)LJ_Fv~5Bq#Kpx*+ITb)x>-WUIR_6fedJbi{QV z#hMasR77=Z+3t{k`0S>;oWXSs7jGw%Kfskl^LLLQsAsLQv^4krSLrTRO!kp#kL8 zl*r?gsf?gOa-?oZsaW+mifDi~L;Xl%MqwJ2u`BUDeY``WPd`VXVfvf3XZIc~wWZUR zgz1}clW5@tmmM`^V0WlfrsD5VgL))&cglQf)?nS|-I;@W0C0#R#!%vDC5U0hi4?UCFv9;tg-=1 zoVaTiyH5dREa|0=RuIqjz5@L?>h|fU1*J%HXbbNjlsxNP=TZFlJd+$rLj&YFOGVd zJl!z0n*2y!2~wTHI7Wz8^%O!Jfomur4YIPN^Pf(3wtM#wsoz|Obr!R|6m1`ASQjx5 zwDTZ2GYjSNsZ2rOV0nC}&Z`^s>OA2<&D#2PUX5NITL@S0*+L*m*DgQ}GqtF5pHOCUVltNqZ=d+fIBQt7iB-r(hhfiXTgQ*#%_Fknsdr`f=3l=NGa{k>(&B z_p3ESP~~1ire%w>$RmzY8%?g`*C7x;j{sIfIy`#~w`NM@!pZh$a}h91tl;ks;6# zN_2mAu57$#>m#g}w=#8yRBrT3DSvV{GFS3PHX{yibZ04B?VdSQnZ-Y`Cg?QgJ*Xfa z6Oy`Y@cx>&v6@;udO!TCmzKc3+A6o}uJZrWY`s{)DN{1+ihNQAr((1Wm)vjh0Aolk z#&Wz^-rMoC!&U6%5qV`ubvOD*0iw8%3a}b_Z3b2#>}{(hoO{LsSzIL3;3 z9htm~TaI41#ZGL2`Ci*!YOj9DnWeEKauDL4$1yi_HOJmwNiCgeh?Ht~5rUhg+n-^3 z$5&s5MGxGXMZ+ZzQ!yXUgk_h5e3pL%nZ;hl3g!D8OFCG;Uj30(WymmD2Nd_!I#ff? z<-vv;y`@*5N`q>T?7r}g#ma#)&!00ePmQHzLSvS3h!nmXvtpti%+mB%rLEtx!h3buI#Rv2)-fa%s4lK5K{J-bvXj=A^{(o=Nxy z$SC$oB82aggrv6~z4{{&J)}40fy8|=57E#QDM(*qw)DcWBvyN%Owe(=>K?jz-3vXo z!WzB`Ut79i2_$e3(dUanZUcDDfktChDgf-CK zqON^X`T36CL#*rRW~Pd!w7An1lhhJO#@rGp$88ar0$?APK;^>9T_R$EK_RHvF z52;Q4FA~?M&y^sm{j9_+=vy&+ySXHNXbdUYzS0ivIT`|8&-3_!|KIFg7@mRwZHOi%~Qv%OUNK9P?0Vg^tOI<3>1+ZkSp<`YERb>0?cu zwTdR}u~i&#w`GwASy|qJPa(U~m1`njzWR*RZjvi10%V?;KIC}t1=Fn$Uwr=P>35r( z?QA!@gn21=u8JV^|p*@}{orBzvKw5}`?VDGy$@smlNr|MWV1Zi2?Z$wW#W~iJ^ z;qXVXnEn(|WX|NYkdY(9nl5j)tFZvl!6KtWAJsCxtzM{{XOeIdzrrzmO=_3xa9G0dRv);^nkBvZBlHYwBSlanG!dC(5AvrFlkZw=-8){g01s^E?)fvPbD3f ztA%idspQ{S_*HhnV5e){zkH+C3Fp<{wyU(tg@%N9P6{CbLyoP1Jl^zGME z;82N4dBdlFwBlA{?W_;`l!6B?{Qt*MoX<%9A@t8=51*{=|6tuSmk|7BUnX}!gHGz3 zf``UgN0d1IBbfDv<>k-o56kre-mm^R@AT~yv`9Cz72FmC&!I2XE9nne2GkE6onR*y zB^6nks;v z5}~VI$+V3Fv9wHq7?iXH86t-J&zt1}R4|TUGWq5kKhx$U8;ZCIF0v&fo$ zc9_oSQlw-)mVTBCLNmP-Vhjlt=VRwTM1=;GNFG96v>(sD=xyJ1}(C)5t8kPnb6376;uLVcw)I!^!C-4A?mP1 zNg+ws2=!&itJF@4jNDhKA%`BX4Oo-%ja~>;_Z+qG)%}AOPRh?kO-5!)mhlPhy9Ld);2lZsa{o0^vu2pcbc$8tkqw0xT3`<^7^X+c7-Y?Zfu7Ld4 zbS)Iz+&!BJTVX36Sqy$4|5sW&@Uc?zErkFdfGl zpRSqSZr*q6$>e#rTHY*S5fxUC5AX9q#0cygDa!CT@ybk%X0lnC=31}J- z($C2Mm)jm?lk3WcehpxKYu)n|RrOTJ4riq{;28R#7FvXZ)N^lSQ6&r7CNTYF?brPL~ zk#yf){r|J~_RVeGNWO4BO16A=%bCecV#njnu$)X}SxK~OOD@Syc4zC>DT+LjIHpJq z4{2LdxANKVueJ_1#@vYqDid42PXVL^5#)=d}JxurLDO-$>o>p~@ zG-6bgG?-Iw(Yhjuu@&9Gz)BLEjBy7IT-RHthD;gp!8HDUdmEsBJ;3qxb^ z{8y!QMf|AZiqK9MiiVvM;x1eQO)Rm|>R5u=UX)5xzr;M=#1BGDiFq-MM9FBcrc~^8 zMJiiYXu1F07tcgbtYt+#6_dN$38H;Y1>;mo0?Q8FlGz7sx`2RxJ4&Ka1UqNXB`F$U z0%if0FPay)jhIHzo@iu{3sk`5>63oZ0Mmy>wB3{b^4){xm+0w}G7~^+F7n$4?o|K@ zSBoZapYy@QN<6>ESXABWLb6;RJ`KBoO5-9>S?&}9A$$$rP!JSRl0z(eadrrrbKiCd znvGXD2&-1c#BE^Vley|5nSR&gcTb#CsHjJ`5xr<@DSYmV!*QJWbwV}JZa*&F@6D=r zkZeRb?4`X0VsQo)C_1!JQ6l%~gn-AVA0*vvE{q9@_F}kV{rMx08`v+&LseTXU9@Et zC;{n#xmN}P)`L+MaHSO9C^-a&meyR%y3*PURMkj`1l=wuj-gU=oHt)l?l?}a$ zaqn-Gcp5uKuIroo9D`<3Lu9brF6OYw&R`C&tiWv*)h>rK2u&}eHk=#TYe^hy3e_Vy z###wUtfvQ?MK``|n{oH-;HJG8k49&kIo+}w-z_(5{LU8b%XV?KzSc%n516AWQldIO zxQaBJ;~{|O^YP*xG3|={V(=aL{(Ozoz}@Y5(pK@c;6wS&7O2(d<0;N0Ad>FveTH8I zwiO>)GR(T=;?0tl2km%~E*`T>KyStMMSHQix>9GWDdup2X9T+y$D^Cu_1)2;+pJ2} z=|Jtk<>T$D?K)f-ER;$(8OZIqy<9GD`}h#dRvdmDch@hlT{oNH4E*#z+q(j%2zD!u zFX_nrcz(P%TrQ@3>$1Qy2HuS)rWSiJxQ4HXuodsu?P>!3=LpxC0gZc}2e%ccv+-j3 z*LJlmluLtbN57qJ7Sr(pvA@dudYuS&E0TNiE@PG&YdUi^IBRjqtW5rWWKz?MVSeie)IO@Y@N0NiWmdAW3Ibgu5QMQ36>cLi@SqM3eesE-FguJ6xJ?MoX`Hz4iX?h7|8p4eMgHss86@XTz)dX$*i+dfZOpp z?hbGqG}*F>i9l>e{pEOd)t+o_F4|SvzEV6~xa~Nh3tTU!y*1{5ZO7-Ny&`Me^ziO@ z@peJOQK<^ENZZNq8Z#d+3aGdxz8>Iqyo{OnyuF&Ghd$MYKID$vPTG&@WogKa0C(hd z)~+|Jx}pi_cKqJl-L}2@X@IulA*y&Z?}}<+p|;}!18qijMQ>?5!0mX!lQVDMtTx30 z8K4RttJU~U$G$Xu$4%^~L9QB&8tm$3d}>&#K7FE5_@keTGc4oJet22=X(sZO!SW(B zv&b4PSscgp9UYcn?1+tn5p6$KV35Psbr$!cxcik19B)^0aU03>Ym=zYwGArCp`1k=~sjf^zkf;nw#6Vs|@@+)x6Ua&#>c4YqS#n)R+L4_Iu z?&%ks=t!Mw5)0fXL$D1~Kvah|>8I!6QX%5OM`C!nPKlhOm@%0lRDzaK{0`=`ai^Qe zP1~KcdWJb5u2Od=Ps08_AkJyKlRk(4XuJw&OX41gw}0QXSg3~NRdPLpVrNlJ$rTd! z8ZXyTwsQCJu&U)ucBl*~=Xl1O&t#a?2-MntbaJ{^tV-)LX7-DEYpT`yNU zj6KGG0z_oRv(FyPXnSHYo;RzOc9^hjz!6MTpg3K%YL4_iS!cH3cq{M7#PgIB2p$HB zE2ZDgDPhp+0Xk_PC2dQJ@DvR!gGVDoXqs%+v_5EV$Ls4vXl`&zL9)?O1fQ+-RDZHG zOEK)5T(u9MfBxx_QuD*>@d~$Y`G2x!za0sPO(%IHG@dAxl_XI!HKLniQ5|yMIm8}( zgAIPlGbacl?jHDTF_~|sZTFX9NT#1yF|^Rih8MP;>;Yp#!vzYdw3mpr#m>MZH0&AL zcGY29d^Ebo_T-569UsbJeCntiky`=-3mvYm_Nx8J)gp@$TQQvB^m)lgccYBa=#<}B z!j#JLQJX0Q)f3?wom^ARX*^X9AN})Bb#LTs`v{4yCnn0Y6d{C@S0r8$hZp1ZSOq39 zGB9{EUN>azH+U4P{aBV_A2j=Ej7COc$JjAz!LU>WquZne^cUUjqA>djin=)xLHU!= zq&M_Ddq3?9azPnUxHW@zam&vwAWO5iiF z^2ib1rdw`s?!k^%r?CA!4R2Sg<*L6Q)6!dOxX%(ZCn+Iu-YnLL3x7luM`-2R z_8q0m3M9^z_k-eeGD>>rji*z6;L>5Y13}yS6U9)om@$lcgtH1P_E%g&6Ue2S(lc~{ zZ+9feJ%!(FiY3x@ZpKPftE{Mxsp(W?qkrih=Xno+JJji%#hW&~bG%<5%CKx>i=?}j_IwjS}R)>O6{ zHv-@Z4rh#EpIzKFvnl)nIHeIhT;`C_+MYl%HxClv)6H!^P1}N6cBjb#p~Epmvc3Au zV{AGc_iC=m82XVGfG)BcMBJowwOI+A7Vbr}ZK=dd5*Mhlm`*J#8rDIrUNU_Ed*yC? zGgrERS%)TNGWo<{AQBOhvT{VcJ`|!L)0d$mgNpgo8fp`?3c+;s1@PvN7@m~cq*im` zRyO^HnmcXs`l4tVZ6nKYVEB8QW>Py#r$X79 z9n{WRpQI$pb6Zv_5znfwHFu>3E^W_+h8vMn5*Uo}=y@M}qi5L5&OY*YfK~DdR-%4Yov5u1qYuxXDb@A! zT`l%={Mrffw3gW(;REbQ){etoJDW`$XH-rBm_nyJk1uMXEBF8jYEhT+F{(+1O6il~ z7QhM3@%#b)U#?m`Xi6IS(ARzv5*jo~oH%XgUgBs3Q20Wo?d5ngUt=a(Oy@Xa<^h@Y z{W&wVy2hW9drebV&EV$XpbvXXav?ADXhg727=}670ZFKkMsBu&R$EIWY@kh>~j?XS=w3k(dDVE#Z53+-qYx&ppE-CfDCa65`bWgrhY^=}LzT%GB1nOb7D)+Jr4 zV}rw1xi#ds2}W+(UKs9yV%Ty?XTq&9L&a|icv$+~rVkR86A#P9g75p6Y+5gmt-a0&RZE!{}83$83p z$4!o*j0AOuFl<@`Ny-2Ui{{BGG`Y~G;mjyW=2HkiUl%CFR?SD+X3ZJ8 zZruq=&kD#zP~*>MHp;i#W?@D6(AklJ>&BTaZG4t0;&hnM1+@E*ZmR9mRhnuM1Y|Ii@R$IgW^S}QRN0y0-s%#9H z7POh@Xj!IHI!&VXt|F2O)iGDX)f8bxCNF z&7Pa>C9aFoPd#bSvW7Ul*&K4snHYMPRS>fppQob*9zw`DCo6o-&|XR95_g@{K?1H` z=pqpcrW>7-8n2B$JET|^BT8|&H|Vqgsag~z_2jz!INjX9TgiTbZ0+|>th%H@CG_>> z!Ly?&wu9L-F*+#PNxjPgh)Y_isNp=!Vrbu_on_k|NHYn&T-pykyZqV%JyE?q3P=Qp zOPCwyYD*a5ix_=o&1_Njq9%KPuu33K92iWxjC|TT1*Rp23q4nHZnhsNSO)5|7sw5h zb+#ns)<&-9j|&~MNlX=>=d#5~vDirIlhniJ2JOMX`AS;4R2g;RpR07uI9=OqtXzBa z(dM$~uCphCw(IPJAZgN9j|YqR%uJ$0fQ`*+X|$#fLa4Q>xkaMBu5_xNqf|?e{crsE zzmDY(B0Hpm%BsUf3!%seY;GL6mvn?k#Rgf_3 z$OvE#c{4P704n*WMv#o`Uw{7T<3AxTb1Vnq3@lohY+n5+@VE~0bdu$f2_Q*37Dcoe z1;Ay3DtV+AqGZ{Y6o{Z04w}oRr!9+Eap46#Y|SE(RC5YKq5x=!N1y4vYK4hNaa4Qy zLMQ#5#f(dC=WnOIh(EI$Kq%WC46(TFX}i6no*d0?DPhw1L3d(qsRp3(eEAsRw&ObJ z6+MGDMEX35Aq9Ah;HO*2pGF%ZewM<{(o6s6X7dLCtv6tuQNzc7PSr-bS7wP|c+5-) zEI@{Ja!@6|U_x=9I@{yP>}{GfDZr2x%@G*Vph+4+pb`5R1Bn}AIZ-_r#+Bb$A!0nE znt$|Ek7)9hZU|tzG-Wg|jcFX_-$hYsmL$|SFeH%%G(rx4KpSM{_hFp?qvG&B5F+*7 zsbF15HzR08O2FV+2L|F&qki>RBgxUEEj+jKX^W0oI1YU+in&Slka$G^<8CsW@nIvo zfiI|hZ_r&Qs5^H< zsVo<-yMh)9b&?C<0LHCsA!=J2ce^G{`;jh$H}m##ZEm^=bGrLw@>jE~>jc0}JD-d@ za$oqv#RMmMC1;M1t*g)>jQ27Yvk4+!(511iRrma~KTvH}N<(l}TD|gn0B2IcXG}&xFLxwV8wgOk0ir<-hdSpU(+M6~od1r!02y{DpLsF?_2qDSwX@7^_MzoC!qDUh4gpM^~6@^Lrz!7ydb{c-s zphTfxc?3`@0Ud|(9OL5r7y&LUv)~+*h>K@ly5<8yIR`NbRN1e(&4nrj5sg*E0T7f7 zh-7}Qrq?tOUOu4Fp1MJi=XLF-wG`1F(Uv0UBiUiDmOsp=BUpslHzdpGEj-M|f!@5= z%%b1{+0j7AX`!+NdE+h`4D^Oxtj#({2pg>mdWC{=+k%fMe66&vq}2Vm5$|3d*EBba zzi*a^$(buKTBIOva+MDJ3R?WdZ7JvuK^R=Gs!YWa#l}O@X@xc=rPn_=-7|KI~ zuEXmGYn-hR32Ea~^*T9XEz_c~b|%II7GFo#b5lK;=u31jj<9SS7MozxC6v-aabg_H! z5Df&^ASQH;B`u0u9vYYnGB~t~rL!bWZRZJxhBGShZ+KYd*?*j$o;V{q27j-`yJr;p zDi{fYOJN#JSO`%^-kvE$ZwR4Yq1&$RQltgak;=2SiF-!TRt``oS{`x;@lNCoX@$#Y59goi zyiFAvMSO69a3Z>l{tCu{*<2zdmf5i9inf!Fg~Nn>bNeqkFkYbYrZg5lWs2KedvQd+ zPZv-`fI59pP?vzlj|3wMcF4=c#9V9{;(i{jXQASVKQx};QoAM_A86%Pwy4yB!-?PK z(ji~0799=phll`@CDpa)D!ze}qeww@#N{?83up(b7y7&7(+9Y8s?N6vI9-dSSw(Lo z3?w3>1jUsV0-#1MWIoiiYrcQPlE&WPb+6|d5S|Xq7i2Sk`!{cGvQzCgk=xIF(nVhR zFdk1+*KxJ#it>s=3!WWGgthToEh-NartS(-R@6L=C3>S1+CiUs+e&@v{R8!>j(Kd| zPCf%)c(;d|@`=iu&tF4e(j^p^I^KYOtFTnZ-2#!L7;eYcRFBso{Z4ky^aXNIxmI^r zDa=QspJuD|W;`eB4N^)uhl}f3hojMp<%FNLI$BI=M^X&~ARE9TbA_kI48)KUxRpZs zqg8ra8lLe*SI~byyjHiYJ{9KZoUTYaZ}SMX{xMTOB8G@pOXEhXL8B)O0^S2^&yLjf z-9kKAwFNs|&X+3+xI2JvTK?*CX(hGYDJ{5Cf6w!Oe&?2&EqQHNqg* zL+fxAwR$3O1L*V2Qx8w(AZCW~-Rb4eZToI$M=0vsqt$-7q$)C~&Zv z8Y3&77iJ7zT%FNWpf{3KAQHKf@{lH$SR@bLS)@`rp0kEuuf;YB;lc^GJ&8Kx1)hr< z>0<@D6eBDLm$&X3-j!L_jjpt|(Oo#F72M?SG#3g{a7nM)>2WvY z^Qf7V&|}e|C?iXnO6ExRJw5HW#;l}*cAI&Y4%B=`rzfQ&S-1m=HlsG*;Hh=ohmd<~ zY7rk0n~$$LjyjdvUgGN@t{^-B`n_!La7 zs50%V43}Kn&9BJ}yJ`*g7dpf=+>j--_nJcpX1ook9#LQ=S1w6c*G+|P(>AyA#xsqZ z(O&zu8myWf&il!Xo*Fk!MDV?ht9<@x3R`c?8rv(}|J<_LW{Y31(#VY3 zza}x&y{XadSUrwlD?A*8!;J@%KSW(S)|p>RU&R_7s9%*vPGKbQrsiGE#A;%Z+-fWw zFa}idN*albxoef|Y9I~~Uq-U+?Ze@`wlNQfaM{W_9Kv9jaX5(b{n&;>L~yOQ8pC~C z+CwbEAv}t42uP1wEA~ZQ_$Y%{r580YMCXNl~@7Th#{g|1as2PL8Seg5fyV|&{k!%mPWhEON zXj2YD+nz>elsVLA#@4XHbcJ(4c*~A^T%&A>9^2MDAu8vrZTTLtyd$^5W#Vcu}S2%Kq5Z~Ih zI*7@RZrtI#wlUL(aM{XCAHramnLdc}{g~-PL>OwOZ%ccKnLdQazRmQ#@vb$~hcLVc zGrfwvW2R^B@x)%kA%ttZZZ-7wX0KNmG8#B;cvPV6S`lnHhh! zAA7xqm9f|Ns-o3~dyR;DFx)HI?89)cVRhezdyNd;-dx}{+_pB{D~P8IcMmPmOC`T= z{O#?=JDKkN5UhhgLFC4B5Z30*D~GBDjvvX zM=Ep)Bsx-X18+cINjEOom(I1DV~AalTI>hS}-^ zIp3Si~ zM|&ktvy`|eT_3o_sFZqdD~@`8`&)oi^89tyBbCDJdwEjHcE{C99hdy#CB#n*0MSA~ zowW)@-fw=A`AJF<$(zWpL-2T77EBc|8u7g09_&Cek&An8ih zzuC%Ge0N?e?Ot?s)b2MU$u6s^-D_i~rPl83w_AVhf$#k;%61oU+m+gWId8Lk+g*bD zTGQRLWJ4EvyNh#=tG^wDODqYQ8cxc}9C*+3`WEZO?Mu7&MdS{m3|U$3%4VnK=Jw2c z*Ps=oVZczRU530@qi43yqhQADQY9Q>eMQSwrtvHF$H8k_RlqIExyOa>PD1Q+^}D?w zzt)m?dkMQeZ{zLKM|NI3Z(R+g6?FwsHJnAu%V23;L8)e5Rx^0UCpUNxv4UJwuMnxe5~Vg zUrWS2a38u1tYdkPOT8WeoaLNAR@lsSBx$zji(n*_`o`A1ufoa&7;uKKSMpuY^7S$3 zT`{SmYC40@_G!eN>vy)_RZzKQ%t}YVc2?EFi=Edf*K)xW>A^cc$1}TztM3tc-4^VMH<=;FL{TGhNbsL z8*~ABSSkvP`#leYh?J_KZ)S^4_YFUO6+FxZh!9v&l_wac#DuAA z=tY-$JbrGqzJ5BC^0u~qIy@-@Q6%aw{a>mdGOoT+uh{j~CEF$SWn}Py^+HdORf^8N zrY10~d49@$#z%r-`|ni+b!G6Rf2J^WA2gs&Rg=XdPXRUK#ne0sr0QC~g^eKi6L~X_ z=zsnBr%!M$n0unTLYL=g^h6V)Tkh7^5T$ts{W@0X}AKB>iXlv3Yq-#W6UQ+l7M_Zov9nv4fWYEgaeiI&jpC1zqY>-Pw>aJ`t{QzXr&PpaX$ zr8IO@bX^6NVh6-DwwK&nf??1UXg@1Hlj>!t#jJSvDXU2VjsFMVebSX!UtKgVNj!VF z@oA8j57Rxjq@*<1P(~x_=O84|jmg>XgIE1+>lK)F%ZO4C@;)Dd+Og3}Ww_V3poYs$ z`ek;D=nwa?rX9&`p|MuoL!IO$fYA%@&8OjF25&I!{8m%Hj$?i`!ppoYpIg+CODgx6 z#uj8{sFiBp6}^6lGF+ua4P)J=`nQ^5@R*a-vZkVctEt(cNu%oDY7(T<8maGhE24vt z>Vfr}N&3|%E&KKq{I=Mh&Tvf8G7QV%8&caBil36w=;7~h2|aRKqHlq=xt+J_T`OIN zYAQU-X{^A+-HymGtRc|a(y`)-N>tM@gYMQ8{Ku$zXAF_gKlfZMtwv5Y(XK=WR-7lw zVBQ*A*37}!ZXUs_u1rnNtOLCV;Rci82i~+oY+W|5k#?c-^vTxPx?=RNsi3V#e@!X< zyQ84nqqBLtW0MW$u6;?mF2Zk}u7AUP`Q8)Tfn@5zy{g5)r45MfrZ%w$bxVchww6j) zvHT7sQw>fp^;yxk+z~<50^0EKd!Y#xh)(ae-}QTd-QSLF6fQ1?!iR8s{2evnQuoSta5-`r#z_L z+>Te{i+M}04}SBFdZi}VzxqyI>3#4oefhsUJ8Q4nj~VoDKwo?2rOSq{nG&MGAg6u- zkXELJY&}+Z`y{%6*W>PbBr0S2g3g;Q{-SC}4*?l245+7#;_qMr1q8hpL(em60dv(v z5-RwleB0uIuSYLWr@L(@Yqjqc)%1GV+>LMM=EWov0Ua$L0*^+sMTwZnucQXvT@UD4 zd)eZpv`L%qFBYU5-?Un9g4TNtkNAVDcAXv)qn>ZTi-U`S(gR;|yiF4)?av7lbP8sZ z-AWH~^#&i0@umS8=ytPi@C5CuW!_q5-ACou#}H6292rq^H&W@FkXRQVJp1NbGawoX zB#W6Ei|$7hzs1lIBv?wU8+;W*DWXs*stkjWaP72f{=QkR+b&iI21<;@oNl#7z|>eg zWH5~prEZj4w7@~nBzm;;C{gt}qotR(%^+AwAS3R8K`mlb8Vn1AnoDOiD(S(SYdoGY zebCaw(hVJ0v0BCkB#y)&5vryDuO`i!QJQP)yU*LzH>P9$w46;buD(KLI(tN3Uqwyc~9iUHs_=;@je$ z>mcx1DGeK&&)#Z^) zN7eMW>I2M|lXpo>^pwq_8(+4jv0u(E4o9QcYu0%t|AwqopWbGXqv#im@g3}moCuCn zLTz`+IM5P%vctI)Xq&2qF5Xuc`V%@{Qj9NzRz#R z3-oj(k=&H?hn^gP#xv-^)HpP+60*IR$fT%foT{b_PMnPA?P7|fL?7DrUFI=o2Aq!X z%&|P3&@3+%9_WrnFUEJLmp_A!76dp1a@XQ;woybXRdp3I@NyHN&lajy^sySh&K&jc z+Q||JnMRB8VyXXzs^VA_o_>Z%bi#%u!-KC}21`+OWRk!kD7~ZEtS614CuDRxXnb7- z$_5S%SO1-KuFnjl87N7Ro7sFm6TW_h(h0|P8>C_JdhI7IFE6`xol4WCp}eP0wDc)f z-SzC!ylchKe(jrlQ@4J8YBJW#BCoJ1zz|@wn0@p`1{N<-yq)S`ox=5vCNw8UIU!b4 zN@;GW8XHn&`o}T7nWqCG#qDKrG5?~A@i3518MkpAs4=?7VB;e3 z=^`wsi8Q=4@7oo5T8>t$B~Jaa<{Y2maPMs1zG%D2YIeI`VgX_Mv_AOzKrUc#1!^sH zPC+LS>|mfeb&Bk0G+Y#g^WD+MNqb8J)B_C8b2h=gd1ewvBYMdCoD8#XN2yd(t#YzC zraGhmRv4avO^KyNJq{6HbF%uu_@=qN8DV|a2h(hBCuD+`LA^OkCZHh*($9;+_#D(Q z0CRcy=*utrgoBey9l|XOMWe|AK8PNA8mz8r2pTgkk69IjHE44&A1~hVf$?@a1dk3> z4?-g|gTy02A2t78$BU6VoJa=Jm(9~UByP2O`QYy10iK)0xHo(~w;D~*GBMP{ch}3+ zP#%Iagwr*wrRLG&AuXy=>MM&e9zPk(1Ss`PoNK$`q@}yT?9~GAa=Dtcss#A^ zX1vxESv0-+99ktY^({+k35BACSKf0vZEIX;Ipy+iT@5YcKbqwVCKRueooXCZP+FDh z3h(LCv{r@Pf!CXu}@ky_%jSZfuC#A+p zF_VqOM>|#=wf8S-sphyuwPyfMZ#n`3I2FuC0>)Uc20MO2UxtX6!EI(wm5IWxS>tEx zVM%Bn+ow{6(aY}L?6%>X++D&cX4IDknv$zMY7|0XBh8;e&3XbJyOGSQvUcj6c{}4m@8#i; zaHoFv@8P8Xp`*zp_0|?MHWw<(s*hURfj^OrXD>LUtEg4~HBF;G&zXcrdTNtt-fer%`S7J~KiJ6lGI?dPA$odUnTWj6q~(DIpYR%4tZq}3tL7MPs}wYl>2 ziPab*STv}Y$k!5`FPHB&x3mDJWB;jA#8s(q2zVF@&O@xawXF7ruo44=gBOffvz7;6 z7MJcFsci^dO;YvP_v1V+7taW&(nOtxyG6FCN7zbvkG=S*CVT>C%MkCs#xsQ8{Po3n zJ>HE3s+`u!r@WA1Qm#t!6ye)fu@o^086p&N*erH5S_fx~M|mxK}k9&0d{Z zHu>SuTSXM>{eVpm8K-iwIcIk7X*w)cvx6rL>rqoK{-AK(>}tU)s;*InjamQ8_(IE0 z!;yQC`ijRI8JMK6#YIf1M@9wQ8Qt)fiW)%WJ5<+ZvX19Pkux(pN~WE=dZ<{yEIpoX z#Q_^mCW-Rf`Mz)R!w_T#b3=*F(>NpMNIT@51(3{zs$%`KHgX=P9-rnYRtlfLQl(Uu zmM4L=UarS;sG&J3(v4Is4xhTfIRz?#X?`h6qtOJH6>$DU>%4Z8yL#@{le6%pdS*Qx zVRO$cmP9?BGfh&V0;olCBoCTm2Xt%Pl)3wg=)sOJy5*c|!1F?B;oc)qkR<917R+T1up^xd6OHpj!f5384OZ;Zcr@^SHLKIgu<3scW?Tz;O zh^9Wm6&MEY^j>{Z$eDLkTqrphcCfhn43>skMXON_2|wcG{6hnxFMcU#l!sk!e!wDN zxfeg^lY__L4=N&lFpJv@HNocfC9c-RJo_g`&oU5R)eO@d{mj z)rjAf=__Domg4$y^Fl&alZT3MGv0~f<6fnO*CZgrpv zJk|7h#PR^`N|c05s`#(Lt)^0v5^tOM>z34)(&3#ex0w%U5KfIdY7MNW3ZruwJj-Sn zUP}3j6q2%vP=SmNq?N7@G9^zEM@D=zu{z9bZ`Jdh5a3lcj{)+Xr(nh1mO`o+eYE_( zOLLXp5!b)PLNdCokDxJp{nXQ?t_W2@Rt@7C*em%`_4F~)veGg4lr<#z!8{fg^ms9C zKkAG0?al4_&N}Tq717*0gug9k3&%NEhhVlEgk;n{Sx!yIrlY>-?CydjIh%RNc7z_5 z2E#UcEk>#(i?~*oy(;Z*gA8JSTNDuM+N40Bw{7^+DF}GKc>^e6q57zrRGtLplTi6R z=KU0;{dOh7Osj}!iS%#2Y}M7HN$KA_$=d4Dl=N?&;(+SY#Pn~0==Rl_BThX>bpYe9 z2P_XZW?d~KOj3a~-S9Uogu^Euy9QG3A2W6#Sd#S3XW}|{XKA=yxPII;Yh`#C9%u}c z?&M+3>TgYK7?$N~A~$eleWraZ!8KSeS_o>U3c6sHf(Uwi7QgzsCteFU9CzzzzcNr% z7tGz{KwY_6H0`?I{acGJ^gebEGxVapDBT6A1|L0jl<(V-B%vts$9I5u@a&m(8>Di- z{kD*+F6hmc&*J-W*eImL=XdK?A7ewT&h@-KT1;nf)4y6$#DG|&lg$l9FBs9umq=a- zic!AON2U1caa3$x>PsFM`(NF1#hC;NpN1f)3j69YWB%LkepkZ%;)|Z#0%^Z3LaC5j z!1Y@y#6@laSB|;jgl{umUBNoW(@0#4t}3b0CqNZpOo)C(ty&64f#b587y*WYt--aJ zk4Qb%WEKkC4011%2s)F4&F|4oY+U=w`FwWeX(kp#AxJ`h;fYNYs)u(4-I#3DFWic( z?H5m3 z+8rho(O*(3($g>Y+b4ti>ET`7Ctb2ppL8=-04LuzQktRi)EaoKj+RM?ads`og!(7F zucN;Gwd$Z>vnu|pI|KMx=(;4Cn(+KQzvBjZs$T-p?UuriLRWd~E@r`^_#M`#d4V(g zO8FSUD??3Z748X0RYW^aX-Mk~GD{vVsBt7I;=O1v{l#RK1+(#jeexFC8|Mt+uCbo91a^V?iw7`;%=S^d_N%ZAO?Yk3lo!>FF&*^s+{0pi|JB0Rfy|htMT2#xWYcewF$R-nCVmx!zE;= zhFlsdIZ3Lj`9h&8M69A)mbZsXhvR~i>&DDH{Z&fWu*vvIj5vyz>aMxQ3FR#jM8x44 zPONe#X>@0+>n;8?N8yGoB^fQYp(B`s#t3f^8#ZxmZg0z-;KTI{!D;E))u5Z0b83lr z$6lWKFkR53;PjJog~}w`hBrwM#$7X3MKg&sOqmacz-2R03X|;2TPBS_ucd8FntR$V zBzq0A+)E?IZ}u}ZiI+qFH4=_^{#I>eGM zEtxzh4jLG&TF(7n`Lh*n;OYF%mhN!{sUaWgI7k-{f5&JlQ}{_jnpdCN5*Y!gn@?jzi7KP zT~g-R&s4dlfKaKJpeF2YSNEoUIs|YtzP&Az=-R(;C`^5UOSgtRH%T5r=wDv|3QRU$ zOb}}9nLotYxYWERx7|sX4eMCH3f!J*fp8O*0}qG0$>}QZaNPh`6{J1v%)JhE@AgU>Xs>tzuB@NfhST|oK*>ly}{dDtf4t0P^HRvJYfDBmo zHZETUZ*QX58lLjVs3L7;+{(I3D-AGRg7;{9cT|Nw!|q`}HBHT#VMKOcX#(bMA$8dp z#FmUg!T%?A!DL7=ZX(6qb~%rnJ&!kwNOWZd@YYMZ!FgsREDxNOdT4*j&mD&Ep9a|*aijJo^d z@w4$8?2*T8ff{-~p1zo^@KDt3Jwmy8{bH9oV%qZX83M{J-Ylt}+wo%GEMBx1o2#pK zb-so}m5$Ero52yCGCx{$o7LW{M@WCf3oji-JiiyoUoMxo`zB25&lhl1&&Y2){m=Gp z-wf2V(#H#ggP(G|oO|PddBHyHy>BkB;S7XI^5TAyTj(=9CWP?Z zi?vMLhf5UV9<HaxBp^ny8F}6w;f&r>$(HXU{`ye!4z>b3mh+gzHax(ad!Z(A^wrGepjlr04PKFEHdS{Yb}39B zu{!0DO@mQKyJ==0PEdcF<-?G57$t zXO@s?z+Nbselomx_1i7FAmwA@Ui)bj`^IZRDKt<{D-!z@w9{X+&!9r&8mc`$>+@@NSZ$G+4Q_gof+3CiOr6JGCts%nC!hvnI}Cx~8uZ)o3nF z=B9*WQ%{vH^7;Y4oOp_!=itV;(bzwZ=si0=t7c*yaLe68>4tr$^{i9wUzkZ9ikH#)i zY_ZLo7l(=E+JZ+1)qw`|JVDDhy|&=wH&n$O_K+DTN26|sUp+W8p5o16j|h5B z+i^VgS>4DfFrSlZyA-2T+5n5nXReRu_}sOnzaLiAh55va&qP;d=DdTFGlQ(^XDeJ? zx-znJuu-e7r`&9(hia^ZPMi?)7PlTDR@>;XgrbB%!$ueVb%n0Jj0l9NG|R_RHCI4W z%P&tzv2997%4YGI>8j2k;=+tRJSue@D4c0!PnL2C`er5_bkOeO9}M_1ggWK3-p2o;W}Nx{>Vsw^2* zH_2nkyKC5RCc5Ul#x1Gb7A#Dy`b>&Cm}KMO8{J8z4rl`pT@MPuVMU!>Lw15)BQq}g zokov~0d<{RMLj;ZPlGhJ;6$_hdP@xUQry>@`Mh3RZ|QLRHPtDEZ`3UXPZf$oc}lzm+QBa$PoMQ-bbLX;CsE%Or6`^1RRNU& zeQk(I>Q}>N(SF3OLu`LF@NnX6obx=OSG7{8`jf~C-dp2KnzzJvlEO+?6fz6^gws?I z3S+$hr1=b3ng|(HkE$ork6D%uJB{2+F1NDEA`V&QWQo-2R2IE{ncG96f0dghu*D*` zOlxpUumsxPPcK#VJhih&GE2zJy49}jEGZrx2doaWgruJLLdlpa!;9ySPKuB}KDmj} z$e}VH3>c#n%8=nkp;*^q!X>9GIw#`(Mk_6iH#>O4U$&RzQET0Dx|oUL5Q&PhA}_;$ z5vz~LPI7EBYUKqg`sUdFF#C{Ri$=!cYceQtMrMuEAC4Iy_o(%9TcTXh4Ndd(5r;Ss z(jEz%|C@?|+01bK%r_9($}~|SXzLnxdR`+4FpiHs{AoFxMtAb-Y4aGi3+>5r1<6yF zR1tBcJ|K4-Z^=9KK4%CT*}}(ANNO|?tI)Ib-DAgclzee z$KEO1J0E)|?cMpim~osaD(i38XVPM-7`l|ve3@@>;Y?zX_<`fxci^Jy6iy4uT=z~6TfD< zthUmf4n0ilkRR9oo~RA12JG$Nu?#%jgUie9i?*ArX1D9*s??x+3l--#xI;E^NW>d@ z%ux}wC!LEIYtNKCNJN)(bH(xhmyveDQwx1UK%9kk_@OMXkB(rSSN^Be>o{DuM7}iRK-m>!}S3b95z82wT2n zyi12|eOnS+bx6dpO_es-|Mxpnvdz?K8iWGGH9N&ZZ5#9QB*g{C3~@E}rbZo8Q$tL1V_=L&+m1-*;}>2{2e zFT?oYfO|E(Sqo>e%jshi=s~#5UM_xWk{+^XxqUlwSA4zKZY< zb7syY7=7G{>W)+r=4Gl@`~oFRBN4+^f3c7G)L3aMTR(y6orWIPFruz{uC$|%ZjgAE z?yno6xv&SAw-ISj_fFM`9#OZdR@XvGm^l4)(0_Wlmqu##OCe?Sj9Vc%L6vU^X|s#j zV!XODu_zKR1L5rm=e3Oz>n2G|Te0$s7h~(m;iy$vGB1vZUsI}hF^Nc?Dk9FiE(Bj5 zRE78Dd^uj1qhK7~CSA)gxVG$nMwy!R@ z49}|QSd*!45L1%IMO`|t@f0;&QI__mgN3+_bk4S3k&QDdf!S_c?HqoeEZ4Ie8#gGa z`&4Dcx=N6Ul&6Y_qYMOJR(%9WZddPdFQ;Sk(&830uUpRF!UE#W8#r4C!~xIADgchBSj)z`FK zFy2?r5OnQ-6QjcOrhB%925bm??b3 zy>RDzg2y<+6P#bn-p?p9_VYUmbeto2gyE%KQEWIc=MXVzAPg+swq9my$W`1Co@g3KaPF+U!hf<{=f zOFToFlkaS^py4Z*ZMsgV8C37s@>s4AAU0ny0`(FRl&SotY?S;Dyik04d5QIQjyLVj zAL8O|E?-8aaxRYsM#a7Q>E>;FYsM1Zm&F@|9~PqpVs9F2;@@6lmH!Z}h@p$aG-D8A zuxIHUJY%%JG}z%qKdDY8;RBlI_zp4d!5rryJprfNBMTrim`9Gx`y9RGgx3Qt*=lm? zr7h6?G6>w~pQ;ymhoU9mW$T9ZtecnGS0 z@~zSolqUD$==+1WFW)pjygYp#)A4fC1YRG! z`7z>8i9Wat{+RkP{(oeTzmxLg(ZP%3lOGHjCo2m)fc(qjlcVPO+0ns&)^V`#1DL!% zJNo|kzv>tWtWW%SLEAI9`$JE#P(bz5SFesv-ZU?cp`LG!e>!T;j(#|@3@YJ$Cb_45 zU~-<@>Muf-2*!82N`y1eTQF$8KR!8l*_<5xOigFnz%NIJosV0?+}!`bQE*E}NGo~g>zk1>SN*;@=JH1gH*u?W>{%&>I;Z9YAz;uPZKnI-Pb zB^!t9EeD(@AKjPB6HkNYNjo>?@uh`{jXJ9Lc!`8I7>na$;@OdWQ<+?oW7%WdxU#ZJe^B@X@ z(s$?zbPEW1HsSTNJpCkOKVh?k?5FI5_K^;6ob}O9!WWr%7tV_0W5_(=+?}vIgCa(W zk#{MqL_Y>Bk##SFm8eE=1)}a9uma5pte0eP^Q)J33O>c8c=0R6r5_>1rf~5KcG1ay z`)f3rcdBp(GmDMlA|HVFvPj)AgRxKMUdjOT`1Rp#$-JkOX|CIs6_{Ac{Dfs|XsK5e z)khBm2`M+ssfNF}Mq{iGh}NF7h%*gaiw zF%o3l>>P>n7Ijb6bGkZdKfHv$I6)`|3dx=0p;6kHnc&H`X`@uhp``N@N)~42NZ;Tw z+>Z&8oSs9vo!z)DXMH6%;I=qayg^6jTkt4`V#T-AhnG zMFep$q`kpT6}tTrzqGwI!*PUvczyIdfZD7W+$n<@d`*A#hhN7XL3_*RwB0xwO+SoR zm(As7A?Ma<%e(ueDZx5dt@}R?qc*!4U$sq#a~DvIG{f%Q?6#Drs#5KCUd}Es zety!ZPuWks#d**~lEI{-D|#pF5Zg#^jvDOgy*fUpi3}sG99qdkc!bW6ULTwtyg5C? z>~_YRUV{_+n05`tupAg#{gufhHz1 zSykPffH9fOT&w@JX`gZgR^#lD-0x^o|AVPsY(Gk?Z$}2_+ZlKyb-ld0!rGy|RNUkq8cH*tt=DvvhDs77x|%unj@8IEK^TD9V$5~Wx(>7O=zo9v3_z?(9DCqGGj31U+ zQm5n92b96Ezrh@;O=vY5G4`~**jzzdV-1!Z3J;(aTY))vR1eN)Aem6OYB95*;Eu?C z2AZV9YYeaxV;HpI6vL;fQ^A}q-Y?&^jp;>>2oV=aXvVxAi~v=7gOvtV?eg-nxrHg0 zg@bJ=3MR+8po=1r;?he7Low#jmd?(^Jaj$BIXSksWFoPm(*Q$nAgR{pR>j1XUXC|&JO|y;gKIOYI9py+G1a(J(H0oT z^xziAL10W_D^3X~XfWrROPMe<+kBG>O3HME5=th$d#N-bDJHbxmKR8#6v4>RUd|?J zV4t?e9GJHA7ULhLM6qQQ1y1x*C|1lx+pKZW8D*2v6E|(vt0n9kHiKxYRrVtr0T^sG zKe7p&(HvE8JKC%h1C5kf8EYa$A_E#DgETBzG9JwYI-O$_?5@{pc%71Ai^)~b0M557 z#uD}>Up+t#7&TK*eX9~KrBpmoidahwB`a`mXw(bH<=GuuOIQNxcg`EQ^bT4NT;@m~7KK*kQCn=;%H4%Ntpk zG@L9;Tx1F|K}yo9y;&*?i2;da1KYHL*HS*?yd;1G~In(sMK=Z>D75q2jSl&JO?7KLLZy6fq{0m80Qc zZ7$cd%b6NVkqoaIPp}#rk4eCcG+*=qLh~^Ucs}Lhj9uIHhrA5d@n@!8nM_SqpnO# zLmJb^GQ$R@8h_fwE`QQ0ro}LiD@f!8M>nNpv(lrr3#I&>voHWImg=v+so9@G6q%$; z*x}sa?JPldkq6^gDb{AvGoojNxY@2V4MHNzS>)1sA8IH-t7WhX2*f6m21whN9EgP7D&#O! zMaD~-XluRP_5BHqKz>g%@Hh>OcPM3jiF-@XB{iZGN;u-1v|yyCbPNitX;?32sOhdu z-NWhOgsiiIUaqp7o-HZVUok&PC*h<*=i_|tVYIR~m6ho|4DELsl8;ize87qr!z^w~ z89Gj%0w6DWjm1yIIAznZk9B-$@%}b`k5w)L3&6u{Cq=@b-o|?G(YZkY9~#CnNSMVt zK|`lDkm>#Of_(uW)RZY%A8EdT4$*}`I5%wRZ^j?diR|db;Ft_ocMXnLnZn(GXXNN& z*gKI$99{+<=I(TExh!}fbQYV0x*!A8!T`jM$MU3|A%{G!KCEQ*T9_yxSs7z3-DR=h z)*>Y^S`2m2%XYF+H(6-l;S4ct3?d}D1wt7psy97F=X?L3@#}; ztXt(-mIV)DDadq187QQ0!cd|S^M;j|<+>ijj|^K$`}}A!goh5(AoPPRW@% znSv+__6fP{n;YEY)T!)>K}(XP6V!>FkgnVLEl-%rF5&MFIOn6fA$@yBgj!|O%2D_J zaK=?2e$}EQDxHV1X~zqU*h{>{M5`O|Y-`_(lcCg3%q%ii<1X!_QjLf~K#8th>wMGf zu~s3L7J!$UGD{))gDr2aK>o6}fK7vLU}l4=x$_FqGcG9H$yUg$*vtaL~xna zlAn=3T+ME5MUhHjYhs1#%Dl}BjhtbVoTgE>`ZTH}iL^=(UR@JC_9X&9b^Xx0qeygU z7QF?bYnQypyh2p9-RW6ISadSsFJE9SHdxnr2+r0{I`rrC@N<9)|QR$QvI#olV3w$W{#mVro%tx4}jOoSmxt zWck}a3!@R**vo3r%MP#Kw|Z|9x3_k}CIPq$UTp)3lv)o|-oQQE&ST||{0G@cgbZh8z^hY?Igtbm{ z>eD7I#aCbmy0xsKR86x7Ko(E|IBXznK{7YEDqUk&S&-zyk-A^7eXaj?#)^fE<>0BT zQ`&*(CL3B=vMH&^V@_d6O~T!8rn%4?#yJ5yqh@Sbz+`35w&TmB=#WN3go~Tvv;;w# zwLN{9{;EF$U@DEFNFPDIQ`;1+Rop_x!s8^mZXsrq5V9tIWZt_8WG*S)T;R$X4v1ky zrN5qu*#m@4BVoc?XFbM{w zP4;l|rVR_KdeH%VvCmN!bEqv->ym?G0_wPfnwA{bN24eBC7hCQ@VYJ~N`i!8l5gk{ z5IPnu3uWlS>c~3lbE~Vw$||+0a(w*M1?*lHfB8G%$>o;zB6EY`g93-PH%teWBGc?G z&WA`v-Y&b@M*^@z8IrJ_0ZUXUpdQ_i_l{zU2|`NZ*#0)r?WR$xZ86EB#TW)(vv;Xd zsTad_fn5S64H-SWqQF8+Eg}TeUD#9e=mN5tAcLR)3N z*GYfF*%yVD-u2@(x1O8zN7F(jRZGyBBx-u@2|~(C;#~pb!#5NdTor-fv86r5`e6yL zj3weE%9#uHozo!cVyd0&Kma|WQL!lSJq$eu3BIFLGLL3rm$Rfi3>Ok*61D<6@Gt_D zcg5^QF-gSwvGBoRE;+^p7c0gs@;K1oVu9@z0u!Q}a}&MVBKB1B7I;=>y-Ys zn{7IUPpx=3eAdHDQQlfFjcrLxc(SYDj8mF$P-J&CWn6{GAD_dJa%HxP2cim zHpzO4WOnIe%oJCP?`_^Eki%_z0}{Hcd5!s31Dpm%>UyxjwIPpMyH^c-eGuf#3uRV1gzPr;Uvse>8%>hrD2!6m~t{g+@vzo zadu`Whw{QL8WJJm-iX-5*}kQe7tW>fmi?3YLu`iVXlC<(Fzw|1{ih3OP-tLQ9uTZPk7dnlCQ zY?jC;?HW67cuLIK?<$XNL8!0Z9Z|_@3bwl=oNjkV=rd`qa|Rhgp-Dg)X1b*h?o!U~ zk4l3()!WRFWcT0>r^K5Xlnk*`n;D$tZ)R|kc9+=A3`+Lh=1Ad!nhLsJZeR_#oAaF{ zrB{oxr{atv4V)z$zfndAL)STUjuTgKe_Km}s|vM8=WMl$D5^erV}wjtvk?RsR44C* z@If!T^Dj9(w5fqxq+tX%*&T>D6Ppnb0et`)y*HQ~V2_&fd_q+j8V*6%KdxZbbXt>7 zX1nfC$uzEb`TVe4%~kJX3HTd+2As;)R(7|>Hh>!5)>C-n6?2$zPR*-C=#ooPe})v7 z@N?1q0kyLvM+xn&l2n!rbHJ`sI;#4TS>LfeYD@}JS!1K=4|8h>hNeQNFu8UD zQHk)9>q%cZ22{qoR(x6VDdQ?ttFxU)pQtJHL$`C8V;;(CXZgdJKw;~~=fS+)mk7H|~M z-X)v`49N*MwBhQfYFmf5?C5xnf@Vl%2T2|rDNY_Muk%e!fsw+%r&nwieT;tqEQ!B*{IYfl$zV>Vn|AD&n;m`XA8shv!{y==0m_OMN8`RI9I$qW)&6Gii`VK}30bk8%3-6es#JxEF;rPvY^Zela=;`BBnz|C@0>3!@ z`Q#7?KDbUzAiRAYgG-tQMlE9Z2Y1NMAtzl zX~Gl_@cj6P=Ee6fHI({{K#qSnaY68@KwgWhhy*--gAf|c>z~0gm8uZV+DqJ#zzjrT zD%;5!&S&6I!FzntSq)m6%l9WuEuVTvXd05&g=4qnI5 zoa~`|ucB0ghmOc2ETW7g8cUT%bh13umnP!%+c$?=L@zM|{#Q6~Mx!K>$;zN&#mxsb zFvG%$6f^bnJtA*Uj{mDUdVP9mD&M9kz_$xrQ=dXMxO~Wzf>)MJOlYsk!h>gU6Os3e zj88vj-CogYua|IiI`BGmlS=(-685i{I${ccb-7KK9~LA_EC)+RSuVJ~QN!t2(F(G| z#Ru5j5}=bU35HqIOeF9En+DDqT$@2Imrok^TO5dC3Wb>t)8Gf8a1GfEA7_bi&jqD# zHM3d5u+ls7L9smb;G}EUXq4oOiFHrlduW=Q&3rkXQ4R17 zZ>~+T{4hTu_2ya~wqt{WFTJ1xz?d*qjwYE=OC^(ONl8<1A+y09byzH9t4fQ>_#6ux zr~HB_)<3DPBY%_A_><)5Gq9QIUE)OSO?-4LDN+A?R$=6 zogwGLr0F=3t941WG@RvQ$((>Ot`OBa5T*)c0GB9OwHCX`$iW)G%ZpoG#YbWIJcfm? z)_iKQd|oOn?f4E0($R=Qro3zySL6I;4SKZmmgpJWVcU2lG=GF$@+ zH8P|FTbH?pI7vS6J@-VzPSk5VuW}atH)aw+pEJ~is z3%VhTt?zT1Fv)#a=xAJn8H79s2`;@L_h29G2(*u?AF{fjWH>Z|h%LY_l8PIgN897Y9?<0!Otp^*)r1Xi9G zVv0_n_XiwOq_4ITzIJZ2oU->VAXPph!rbZq0bRIv5rj|tH>)GVLMY>3HUtyngH7=K4rWT zKja}C1_$^f*MJQmoMw{%FHt8yuYRVlpLh&ipiRe!x(*Ms!7a>^ffj zeBIWvNMfaURR`hr+o1w2#SH`6rP{9TOIJO#Jrz%(-_1i=j*UA!S1Q>~M;=gDlFE79|@x=}FiQfD* zDK?P!FNftw;#%B3FeQWu@=I&-I5fDS7KZ-zBZ%uE+)#VXk7j2=fk#Bk(4nLn8rE$P z5j;yc0h*)wA_xqgr5OQMQq;k}e~Bt9p!hgjtBE+^F*Oe;CtEfUcuX$=8d5!1#}f2G zgsAQ!fE)!k2DlYPqf2fM*NFulqjF{%(+}HSk{|_HL(>lh9t!7E)vz^m>Ff}k2bt>j z>1x=Jt{w*EG@zADrz?2J5psyro^at(^lu8Vt+^K<6pbjbwnmLJ3`RM=wk6O5=h4fA z)BYtBY+K`ILTmq$h^8%R6*00+0f=}Fyemuz-VK4>FO5Je+VE%wXUVjbiJSyZaCqz& z7t7=&@VrxG9+t|{IPe#w4wxA!bNLECbE@o@DBXki&zC7+oftvdV`dH{B`U~M9Eiht zFNBN7R(|2kSvpS<8Fmuh%L-#d@?i~6#8_E;L_(U;CEo>J4zqzCoPS+$UsdpPYE zeMHPVo%Ynsu(@naGj)i~h?UF?F#V%xzhust#p#Mn2=AUWi;yJK!<6lNKI3}mup2ZD( z8`R{N8#)5??4f(i<~fd|O|C!vKcAk==AV6wj_bqto9XsA0T2`wA0pmv?}M~k6EdiL#&;k(cIHt3sZNoH}*^)Ev?;bczO!h6^G%TETcEc_W zqIc9Xx#@kh9$6kA4R=}Nd6o)jR-p10qA7vn+WIIDXFzMAm1Sf%klm85rY-V~=AW5V->TV8o%9filjyOuqHA zWdJ;XSq8@VzPve!ju<>Nu7-p2Hz(*9pMgX;c?E#o&FL-d>&3JmmOR2{W3?arjG_|d zMG&JcOXj~1UcKa9LxOmYSDEmmR$lmvrih0Ip9GC@{^=9^p0{fYLmB5dy3#&; zi~O(olTAOQlNp7dpr#J5$19`)`m4u;%+PL~D}XebfD_)`%>_$eg7e54#~=Il9{=en zs8}~2|8;P3ejKNs{qWo)q@8(68-NhXU?AqRaYqDAg1oANvmEeNc^RuK{}XzrW@0z} z5amZ4k<%59+($IXqu>GKfy6H0b4Y3E4lY~(a)jVVVG{0ZE~YNdk-EVdkotZT7VHO! zqU_@Szyaml6w!9nLKHJ zA3T22A3Q9}`0K2vG(^BwCkvv>_4Rn2SeE6)H|a7GyM%IMb0D;X;;s*&Br`h1^m|(t zl`Si3KIcL^L+11Mf8@Se4_|_Ov0M)!?14vgWvNQSMl#wtL5zxi088EAK1a~G)!pf> zQ&%Pr;~HKrnID-|V+zPDR`Tp$;$G$|h5MFxC&}ljigWmg!ZSx4-8@^?<5P$C@hLiV z64~assG|`PeL*qXX1BOa>yY}7^V5?YG0EedvV2ia`7H;%otB3aBPuPm)i3%}eLF=!b0?7J^E-RcW+`^>*MZ0Crj`^7|T zlP|vf<5z$B^k-a3bvW?g@%g8iZjUJT`eRfe{eC|mUv-~< zs;0Y#KP_j|&pv04wG6cs9Y3)8#ReDrzu*8S2;hPc2Xn|nj7X$EA(-TEOr)oXYUzj+ z)I;z|4N+SySCcO;mhJTomHQFh(PJ)Oaclpk+CoGMN*a9bUhpSe@PKUaxjUCX{VH6Z z{wiGl{a4|_O!zqdLoo}``-4wz78+Wx+PxTmF`3W4nA}WBub=!`sWnqE)7KlklefTN zCUleqaNKov?fcnxmfi}M`4@NrX8py51Oue-^zU1u|CJsu_CtSz=U!SosLatj=+!jD zKz5kvkzi+L9UaK~0wXly21z*Dj%(}7Vr{7UTyM%$8k{O3Qps<|zhufEhaA-CQT zG6>|eXy;V9e|q%q+sfj!{q_a2L>_+`SFSs+(Cc0#@xN>9i%T6C9r{xi;h*#J{OOa= z#miZ3?cI%U=3l7zNUVWhxpky@DC;`-gh~E(fp>GKqY+$8h#x^4IMtk6eWU9OtPE5f zWs=~L-_`-o;PZY&csigGhUlW#!Hj9mjVos=hAm*MLOuH0GdRQ`QpBucIR?<9F9#w# z@rJy922Z@cRsru#Vg2xb8c3fa9q~d&YMXZeN)_~UApL(INdMml(jVHuUk{}J=Yjh0 z=d?a7WmBzs5LmK9gPvjPWXOBu+cHKG_COe8ZgX<}L%XIJVDdm4xgU`#qgeACCnMJ@ zyl!ce0Db)0`+SMOMjM2IKc`2y@%HZvj+d-S0RD_$jm0rbdM!|=pHUbZ(H#+v5HXVk zltLZ~jE=$_rqjc=G4%TzBGhzvDca;}UK@&tEM!d3K?-3^Ax!z5T?Wj9s36c9iUME) z7UT*BttvrUE88^=USi} z+$I(cNAV<-6erzuc)5fBqPIIF4mQVbvT0KZG!>-cd9{{aT$6`27}~^BZ4^m~Lx+l| zx7Fn>Dg3rKlWQ~s{gVFB?=8xudL91(-O|4p!te;tYVio;A_WD-|F;s29Dk|T`=sFX zKNRSH9iN=OIHG#H#gi2riV|*P^+jO`)t}O03_}4f<$*%}q&AaE;>RZKt1X~4A%ArcYgQH#!2am&4VH4%~5si%CyN!OfM5pm(hPX8(*)N@>$tdNcZx)GE=xL&v znFwbkh;usHW{q87TL|ednj^9&v`fxi*@IfgRUxtp~V8yBR;{8+mDIh{ff`O`d10T4XPtF8QZV82i)QK*GP8gdKt+rO!kP!<2IJNH8)yv{R1^vlkoYv?(0f}@()-&P z%JV^@(9$vxqbiP$sA-I}K%z>2(s1T6w9%WeGQZ_vP>&dNGf*uah{aF|G3gai zMP4V;Z;%wR(Xdn@2mp3V;k#KzHv`)_6s=O{&`yre5rgzCSvH08XpmxY#CG**tF%aR zmCip(GL=MSnJrKh(lCgnayzVz$E#dTb}e44p>U3cG8mX*A;7d9-xTQxM25=rjvocv zT;MeWoPJ$>^2aYe;a5fQY$)91pM3Ea({T62hZ$zDF(y_-Yy0Al9HrE31~SAST!=rA zKj9BFUyg5Qe~>8M*iiigUdg}%wA~-Do<*zv;g%*1JWcZlE&=>tg_^hjzC&$;usVyg^O zL2lkJJ#np_8$gIxt*>gJfQJZ?jUd*}T_IsS8U^=Dbh3BdMH5P9_S}WhH+4h^8**FG zOb1HE{W$EcIm6NmmiyLCzLO8k3G*r;R@H4j9oO^l>I@VQe-y_<0o>s>b|_G~I{?gh8$9Gv_O zywbfrlSdQPCylD27c+WEdAWFgM`6jLx-u2X&ow{C+hFHv8j3*suP;9OGQRHk^a;+T z9Oz*0_LAoD$@diS{lB%U!)C_G4SumB9XmM@Cs_^0?r64clkTu5;rfAPhvZP7)}?cV z`AhwBT&d7AP(B!S`g)TLFzO%<&hV(F^A0^ZBfM@|ec;I(Dq%%V?)}8Y@7{#5;;qki zNINOb_`*HfqZTT>$?@g33Xt1o`>pJ`swPBT;aDsjALzzWulybDw?N0d(-KB$JmoMd zLkF~Rw*Y4kaQuoEP!UzzP``z`pxs_ao#|QtRtk~O4#?5z_qlA-IbXp$mFygHoiIKF z$7lbj=g8dhTc{bcGk^aFo75#sF10#8{Pc-)0+;V^I46oJOSK4{H$Q~4Cu$Nsv}vOF zl^Y^#_$e;E$CY!Iml{4_qs8DA_8u6~Gj%dg=1(nK`Zh^$)H!QD@li!b8<>r$_S16!)<_jNjG>&HH@ux;z~i2e3@L0kc;1S~@8fJ16pse)DgR(wd9 z0C9u~uU#F|rs*`E#ET?#9Hkoe8a7?5(Wq2CIyY=Ho^-cvGCmt-6#xZunSRg}vO+ zLL5zcp{y==OGbS7gSq(fOqZ_D19{}a5C8zd%6(y>@oGig99=`c(G{U7+ zoGYQb%vx5{e_wAEH82sFPV?7(5KS1>Q5!N4_ft<-SfZ_#hu7`oorx(F3G2n#%P|h9 zJ<>&2%_O(%bmU$|#LGh%8Tj;`kEbv6VSQYJk6!ku#(ep*aULO2XkvPJY-ylyOb{m2XEdSotTOk~f#)`oHfm5t^n2DV*dBmyVeOx^pX zM&rBcHZViw{;+DHUTD2nso-^G*s$Z-j2UmQD)+DoE?@?)V24?M-qW?7d%v8kR6*J$ zR)JirafAUcaHCk*FQYde(Pcb~O+)-MC?mgwi8Tjr(ET$gBQB*)ab6T*mi`%(arDoi zjM&)5snc-u@K#@`6=M-0SgwVz{|w4V=LJkR{C_Ygqngd|LS{Ub`EEfND9Wv%%m6>z z^%^RGV5Q@G@f3`)E`!x$l zs}g5&rF^P61O~1(?5WeGo49Q}3qgD76o*_PyfRZ6`kbL2y@wW>|JowhqcI72GtW8{ zRuuokTnJZnU^L*IL-D4UKvL9)>Og`thI;_R%P_5kKh#o7nXHDF3P0(Dv@%&(u=j`l zD#Z@dv_ow(98$5rOs4i1AFP)*vk6W35~h}2!TyrrVH7JaqJqMNUgxkwYK944b`CUh zDOUoTXJu4#$|BMTeb68HRkeK7uqx7xB~=@2)(b&Nt5{!QqVTl^h(VDP`@%5d^m@!H zsINGhttr25RBwkM=;nHdLRcA89cNOFJhl5Sin!_ehMtZ^G&H)7=!hX>BkAQ?Nd0KR zi{Xw+5rX_NSKjt>!%2(#Tot$uSdIFf+|M#cK~%&i-O?jbZ}>h#z&Ci~y3IlB=fu=j zjtFexKKDu+KxRaBCHP#$<^1ehBXLrOj61(ja~h-aZN{FL9(nY`vWYsmdS9`?I{~eX z5wDFsLp!jW-MWt2P#V`(Sp?u#akgqb_9;8x+Zjp~w}L{h`YTa;t1T@zxSAJQw-?-y z=#|2ca__dCug$XCs2^Dv2AAngW>}+3PQ5DOL1#5X#56vWJ~;!xRBZ{x=pBwe${B<_ zhs2X0eLS)#DK2XHYSwR+FJLC&Yv>PqztcjeXiFQ!4~z6wP!1!-L)DKC9$YtECZG$n zOIz7feJ!6i3yasc}W$Zp?b^;F3?_5pL1-T+jZp#CW2VPnt2W6Q0hwz$P<$H9Y@aF zhXJO49C-+ud)PRMr%rt6^Bnf+%tB4~;3Rumfb)DlUcAFlt6W|Uf(;ztr0~(tFON@- zf_ch6o1!HxQ`ka=ZMdfG(dZOSe_c{lyhNOy^|jaKv<;GbQcZ17nKjMt-7|SA(|HHQ z%{BLD^?I-8Q6r__&Ne4rhM6N^rIYgG(ZP%3lOKYbbO7=weuEWJNJX0G2vqW)Ll`+& z19-hYJNo|kzlQKp7>b8(KwZfP|9mj+pAW|I!5A}Vp55z%amFIiM;(9l=;CS^Iz^n- z%lYy{e0;!&$UE_s4;Z;oT^@1xeCcZLS$rJM(~-KIOF9Bq^#YVLbVdYB`{j8!$1)>y zIaR@x5#`yZuJrc&4~K^;8GLWU zGTLEHgZaCaX&7f0F%1xJ^#yR=Mpv}SXYN6ju(EqxTOsLPtrBv$pQUe@1vs#WpbOr1 zRuaPBAWDLycY2bbxec2DSh47xcC;^-l*SH6bgN%*A09J9=?hd;Vl7=%< z+Fgn?V7%jyh70!({x5rP|J>HC91QDE@g26$*ooOnltf7!$Fbu$z3xq%Ozhmgy`2u{ zh&;4;O_3@|#dhbJ{_XF6V1dQgIXILY@tNrliOd7+Vs`;77K_CqsMYS$4*-~V*|b}2 znqr-+vLD&`*^~HE&Sr9(Cu^sD*~zLY#L0?Q@Ck=>62Nvp=)u6J9Mm^MAn*&PD>XZ7 z0~i)?gPS&}pLC$wIthPa;E`;q8afJXUC;HV-=WVBnS_Tfi7x2|%hk-evKs0KPON0j zlz%BxkzGVdXHOC$_Kt+rf^B->4rr;}xFzofo2d=sQ*V=Pt;YSL*_D=6cH6|V`n=sc z7+Z7D+8?70yy%_)Y`pxqnUIJZk z$JqY(pPyg9cnL-er0qNyEA6Q=(@sBD>lwTOP{FHqxjLHBuG00;3Fc z7QEzurw-fIHD>bynt(I|=q2em7<)gXDv;_`S8;T_RYa(tR=bqg+d9XQtD_vi&Im>2U&9u~73hq)q5yFq(eB^y-+^l9GK+e_4Hm z1jz7t^^rap^Srg5K^oiSi2^Sns)i8jyp%$7>#u-DxgW^WgZ3_dDpUJOHX%X-cf$<- zz*8ju0@;NpH|zEI`eyTfyxKxOP{@1_50`M!^}7B&QDkR38V+#=QKb&j6$~vA8hD@s zW~lxAh91jhJ9u?9A}G!iue1jztOt72lb0WSF>k=6s~G)&4@jDaC=cK%9m?nq!hy{8 z?^f&2;~ycbS>o%B_jOaxR*;;04e$2UK$5LbU*SOs?;|XrOZ*mBukiNJ5?Z!JO_bxi zHF%snURDr8c`*J3@=%2t1=C-{es~Vg70tJQu9j2C*$IQ|C02w&Qe`oa z@|+k(<;!cyS7kp)x+?jgFPA&thyH3%mL@Ma7?;*Gh{Ma~VDto;tTGkpR(f1p=e=S~ zF71`nc3(W)5?w)gu%xc{F;m^*O?8ef4*V2mr}(2^Hb4qb5T z3JmH9Sy&~9N?!{~pwY!S6hTw)>S7x;l6lO`2;=iZ4&%s%p`fA$tir9@39O8%B z$O3dlFs3nUR?%Zmkd&V+tFhQqC78XCg3bWNO#AuH3fs{^3ugPv>H4@kJimA7Plh;` zpp~}jDP9_3#AV$InD(x_oM=siw!yYG9vuj@NG4Ukdn5MLAq8r@g>v$NCo<#LuS|lt zKp2g6edMwtQGPXVyvRLn{%90FoL`xLfj%(*0zGB^b!`6yj}Dn{@T#`?7bLnj|AORS zb{5`Td%GC1zUA=lRTXDvf3)#Ov1KAs9u+Fjb;^sdW&P4374kTtX|HAV< z`KJ@mk(1Do6VVaK$Wwf#*P>%Gzr(yEHUF%vp`r{MjAZkA*+WN5m4BTsQQ4c{>8X}! zrVLU}!cv5?qW6xr^40wFt$e-oAy>YB?xZUPVLH{GXQ<<@lIr%%D^;0=VNX7w_c$_~ zT=^*gLri@7)lk_|?vB7rZ5ilphU1f>sUaPojx{tG9+9Q0wx5%wpjck%!?Jw+@WiaG zrhi9+Z<{1$5fhU>JL}d&zP9bV#3@=H$_}XbC@lqK232sL)=;zgP%Q<>vT8V4O92_W zf}0FpPqd%0`G^zs!-F;-fVHbfejF9=%@|WR8|I#59pFD1t5*5bUPqu0)e5R&+GiEC5Lt$Al%7a z2Ou4-$#LMUXCCdrBbv|q>vi?{o-_|1nab4d;Sl3v z1UMCc&&H?&pVGE1|*tG1^ITTa+QO{i#K8erFK_@jGgK)668Y4#ty@U^ZWGwl=*=W7TSzX;7sr=% z3j>~*{^LJQFFqalX=kGG=7FhEO%IQ>LJNgFy*a9ve7CS&+18)7j~~Q|af^pyA07b) zH7^>t7!K6bVzv5ka}CF7oA)EM!VM0a`6d#BFw(n*2#w5m@a4dpI8SjGF-2pj)D()p8w-NjjnVgmWY6tq&d8^{R!VcAFpQP%N1lg z-H2XHD_+a#1m3i+wjsA(pGP!%eSnh9^?_{#J4y&@#%)2SH`gtb%~pl6hEKjf@rL<# zH*l7VJpf_*%^V+TFr*3(uty4{2e z0bS{=pe6`1_@ZFpV0dR(Sp4(DKi_2U>s<&CGMz$N?rTgs%zZB8%);vULT2nOC|7j51FQ!VM(^8-HrjZ+vE}{!% zxN}T_jYc<1xbQzUD@_qhj}j2#re%ByY;V`qBsL3EjrFGWWHs#yH5wVPYC452;Koi* zV(jV2PO?;!5R-RRy{pF*UpJEJn69~ji8y%=dZZM<(6w-Zd3FfvG<-%&nm_rTzyRPe z#rlb=Nz;k<#JS#hQ&V8wW@NTU+^o!6`D<1=$xNCZ3WgsqT+eb8S@3D%1jo99*Gj$N z1ZF&wN4@a)ffOQ@=Z}hsixE3iW<=bo9U9zfU;}luZ%?z!wP!?By2h{dbq#@%(;u+T zQyhYTF1+A(baWuuFzCwR9;i9+ZoPwN&X?Pl;O1Jbjc?0*!Y{nr;<1IhB2@$<%=@jB zlhuM^l`61jR)XCD@EP|FYT<95SS%P~4ayn6KF#S;kIvBuENR#{z_aFftowbvnXKp6 z5H#ilbjc! zq&w8FLK4LNw*T2es*z#s3%_bB25^;n5VEEBJ~~&c|Je~j{!_1TM?_6dRS&)<}+a&k} z+O*E>O??39R{0=*6Qrbfsy;voCcSU({L{eyGd(#If~VuP_3)BBAaNodT%!yOXLN2^M2#KrnANN z;TYHH^B?;_VxMTlt-X_`F=-k(QDa8jFV;Xwvu-x7_rJFN)_>JUM->ekrs~=2n=85w z`QP<=<+j*d=pCaPF2-N!GW_@PK<&-B@EK3f9-W8;fX@Jg3QCR;3_1i^*H@6_3LM=y zPlqRQn^*}g3Yj8WA|K8LjTZB+)T$yc^)Q;MF^37Ab zMJErYgkQBB{j{1wDnK}A4XZ%t)^<^Q zwctEB(U~o67vPQ2ih57=iR{rF_r3o~(bfCse->$mRGZ;x%+!jGkYHL&;DBU9TX%Bi zss?zw$Ro@8M#J*tu1@z74o?P(IX2_7sThfH2T)v-r)U7>Ujg5P_3BmMTuMiE3r^J4 zHK`z<&S&aM8#+b(QoCbdEA#%9sasCW_JCNDrGu#SmWri5p<*VSnVYB%3%OBc9!_Q5 zg+RT&9bFwjiW=cCWr<%=M<+zXQ}JVZ%_{DDsJ*;GaggOj5TAIp39W}BwqYG!bBY#O zw9BL$X$mh2FpLWo4boUC>cOZDRwRPV>KmV<2+BKd5Mb|Pd&{uw2qdpSEp1}3fB=}l zffk6AXuKeDLDyQbotqR27hBxakgK&@EA}!)QzN$0Zf)3zY`zE3)KXCOmhIt1f}+;2 z;w{^vn*v3RQO(_2^X?QhHRe^^t*vatdQ-bupxtOt*CLu)Rn>NDM_)f`YDm{>ZwVHx z*jC#?>+n6MCc3yrJ4Goy>dmu1`^gABO#+v|c(>C8hX>XG2?bgy#KkLxclvi=bw!rs3 zd5@Ov3kYFoY|N{Wsg)!rS#R$h9=Vhw`<$3j3w>b$~(1*aq!-|Z4FIE zb$4pf-brt0$=2Du1$Zk0!|@=mTU$G><}F&Ie8R0QQLUX?iEijOv=!Cesl~({|Asab zwRdV&XT51?PFL&NPH>^sC8VN*iB*m@zu47zJPDOjkdUVb56i=|qjY zfbZFRRQi+NUZi4)`A`wtL}Q?Jd*Fp|~BLnTbH5E9FQ*x}biMHS>U zl3eaT!2_9}QgtV*#R9HZn7Hi_dv8(w_vbNXKmZBS4S}eN!5}A!yavU!-q({4aC3FU zw51H@# z$n?o!bOvwqb&Bj~{83VLq^f|_Q=cuQ9#+zQ@|U_1`>h$n=KXwzcW^y0m*t=t7;cO2 z42nrWyhbx4r;PzfECGH`$Q5q$day|&JowY?{)fuj{(GQzit6R3KB@rHEFP7tR=iKp zkKS+H^P&d)3bXmLT40_Op8bAdypr<+2ES~HI8se-aq#$Ha6S1$65q|z7X5m&+(IVj zeYs8aYv0i0E)!`ApK&IAq84uLV7wKdGD41b+H}SqbQy)Koddt<*k;VW*(m$IJ zUgGVVF=V3Oz(qeB>}ta)O3^?p5?zWOcc#s{gE>lzTW)5@f~XN^N#~)Jqr11-Ac?Cr z+>Bzm(VtLYu7%yge9Pq@b!a2&EqAh*m;2WzcuQ`%A|*m3_00HkfqC?KH2S?-+|(oK z0{Z(5Q+4zpdWwG8og|l;c%E;Xi|5O48QM+`vzzviU@f*X=(DK{;hVa$A<TPz|GQo2!@cbYK$orKZKalWA!yWFg+A3TB zOa#L*y|OxvA%T!dQzEVKEM~aG9*-%9eh?z&`V}&(8o4xaW8WY~i*@{A2`_uth&WYZ zuBS>PJvi}PkHzmYhBPU($hjar18M?hv7)L(6f1(W5->=$0Prmphz-47Env62k~B^^ z>7uychBsV8e}n&j*hyA4-+<*BrW!M5CkFp?k*K{*byY_>w76D|bS{;ik-u^4$ct$| zxCv?rbo^k;UE}gGk%+`Nvxup`F`E7prdgx@q+inS zzD=jVU<)%|uHbo^#e%?`+A{>0OOC3_6X@@l`{Fjkigs+IY0UMCf2}>=EAu60h2Dba z<-cxLaGg71Fs#thg;E_Q{semwqVaW~2qkI=7*g$*sQ0EfSCDP0{zT!v;7613=v^na zokq29_!%KXK?Km&WKOD#NGN#xfHtl2Gw$@n;9v}KRX;}?*W%Gl3V;Wy9SdCUCI}50 zsu<;$~RgESKhTl(BcYIXlCpsOr|RVf^3nb-TV-ZC5}JWB42opZDuIM*r9-zsL@q&54T=2nyuj;szyKSl zV+en-rmA6__d5ER!wByL1{1Z!rzU9C_ug%8F3mcKVv+uIWV+m`TuwV5yPUF}#3gAH z1h(#ASeYiMbx4Urf1@ryTE=Y6A%{(5g~Q{QYWrSBN3byE7LeXz@_uz~WX2ugxTZ20 zNxrq@D(MXXEw3g!s!SilZHPMp3+tz>c{27B_ZiDnB)_W{cdqJv8Hxe5p`f`q5Ost& z4HZ@6(dVO#D=C{-sy2_KjDP`iQnK{1BZyqrtq9Og8!CcnE zk0rN)xq4dSuAfA5{@+;G#zGHeA(Uo{VUp8EA(WIqI(uL7NRL~Etz9zVGE?hjoNNKJ zbK0tTTO&7lzxkgh^we5b8@XXe$+uDEmh1|t-$!sid-Z!gCcE8R93)!~bEXvW224(s z{+7!z`M_jcL+ZWFX1u6p+i<B>fAUsw@TjBzt?NXpU!4nIJ~2QmBYqOJ8+(!K^w8d%r`SS z(Jw8sZRc7Je@i|287!Z4%RiOb-1fbBia7MH#qr6-h9pt4JP;H?~nuTFEHO-PXz^07d-Q$o^k_R zxzlo0a-_+akiR6mh>jezuLvVBNK?6}w{^xIg3ZBfcmn6Gri&xn4L2TG!R?es5GXsF ze;UC#{S++CG3L}5&o|@MWLqtsgqspp!^4vhagG}$1Kg>|PyQP*m&3w_D+9Sz=IgW& zLL_p90FDS&;K&jZ$To35GZbk>81{^BVvA%iQ8BYjMUP{}oZx7Ch&`g6O1jM`4Quv4XF%UA1s%3(;pppog#91ffq z46-vBUZ=bPtF2mhBm$%^3+2vK_@1(GwN@>Bk)=4AJvn)s$GEG{KhOTHu0MpLPmjMI zzgQWWuKc;oV)dtHjy$KX-+aEhTrKRxYV8-u;=v<35=G?9k83107Px$gmEF9<#4~W2 zR6>Hc%!nRxhvj~CcU;cj!P;4@))?Y5;O5>s@EFX9cBdBX6=ypFj zQ40cYvsGRABnN(=SfZeF!Q<(&B{8_18p>W3O=paDHKhQ=xpIGkE#CTb*^uFmVhj-- zIp*yfA`Ay)xT9fzP86ejh=jo8W{h^=M({EkaGS<9QgX0hv5yjQ)1)wVT;cAHVch(& ztiN4-sF(6RA~PpBW>3K2<)HOva1bxhNe$>CG(EiJJf47PjP`(FEchWQmu%nXnzQKP z8AD|)Nc(Yn&b1(imPV HWs#%X2iw_{AIZ>gT}P5I+quOFbJMz!D6kNc-CKpyj?7 z9<;{T6NjsLbdYskzxTs^)}yb{vn(?Eay`&Iej)+o(AbVlkCQSm>Gtq%F%{wH^_eS1 zW0{drDFp3~p%{{s0_!LqM)u##ocl@2f`8`Kkr@?66}j~n%)|CI#5a0yVz)IX+K(1Z zA`nE^_%~2<8i6^DX#^Ma;Ub$GaLqb*_kM2HwwkN7ICd06$Tn`3z}qk~2CCCQ{QXM0#v_rFot+lcG3J_eXOTs7lpIikMy)tIPd+Q*05i87%|t$L@cqu@-)^=Kd+>Zf z%J1yCjmh&Y<`B2<`h-u>a#WdfG%4;lbs3Cb{u9|ooXfEMlXd8OwhEmxZ_GcmNr za2ErJ6sSGZd{PF!uyCLNb56d->)Y8n#gjB=kdlV4Tyt! zP`KWz8gYxL6aT(}m{1QA;t_uS+Rnw0Dy!;#T)|_1urK>z}_OhNqoZ(pR zO8y_ZACBvbuH>=wM30~hePNZ!&3X;zSYy6e#Uw%i{ua8Y@ZM$IRWyT2dJ2X0Jw1I^ zBG$H=4WTa?VPN~|_lyu=Q*T)wEDpcp((IYXL*xWDHCAWqI=Yeyy=un1-=D@+4zc6p zE^iZ3adqQ^55k`_LSn3mx^PX99t8EcbeBWC&xXA@Jm5}ouTn^wY#(wOxSO$@^#5Fv zI`Gq~=H`UH9UmtmVP;|p7$)7ldHxU~Q_qXs7FC>(q$|cmQW8eNTVuPA^LtYBgf1+4 z^b_H{2MF>oCM|%})+q$Ib=^SxpeEOW!PeA*d%csYb87kKmSm_SfL^YO+LLV&Rc@p$ zO1MyfKR*n+(;BA4;pVMH?hCb%6HAr<`t0rq?O-xoAtvtySw^jghss?;gy& ztI5^1T_gfd316ecqUUrNLnDltEsz_7DmT{U$)eI|wBv{S6FQMbJ3u<2Jj1D;5hGA0 zMwfAwe-zj>O|7wx#XKyB&N`vTP7eJtMYx&d2|*H9XDkQJIhluONm+U+;u7@mM7 zxdRdc?E(o$nzVc#4`5fjL(7=0DuDnoB_!tezk5Z2ssqQyJ>fGR1ZF*TIjow&1PdhL zs;;jgCcj>bNJpdR=8Lf%8fT}`Rl^gu9`ZBVXAch7goI*3IY72-g~gLh42YJQsw3-K z_(7078$vY*juyQFz2tMQ(u{eWL-BX}PL6V>pj-v=Y}W#3YV`89s+Gl4dr z7$6?tsw=dj{Zz8so=42zpmWYa{+kUh!;!4MWXAqaW+pMYr9 z7{I}#Hrkd+f&a^kPEbVOJa*x^F+*Zp=H90A%T$X9i)t-y6CTqcs6?YJk8$1ILtsAH z@T+$@hwEtIWUzP7J;DRVaDaH_21AxHe9bE>&BV|#b;BNp;WgjP=}G&~jfDCaRES%e zbftGx9K_`Pnu065u>r?0E-?ewWeGK33+0;pW?yeJf42;VohiYQpT`eQOc*|Tr4xl7&8z7&5W2s{gXoEogyjEGN<2yQ{`rYH zL3pZ8hFKVDKEa2ip7_dMKJu{AFrHSQlO1XX5KNP+)l`V$gCasA=Sd#pwAiTF7^V>Z zZ=T>o>S7WSlNKsrUDZjvh#F5|1t*t~q#KfWZRKW#j#v&FA<#b|59#)iYFQ?Lc*9w4 zX<#0CbHhtwN(7^kA0tOxlfXqr+4U1DiWit;FP2!o{oKtaTrbH^WknJ=h5wm>==!}~))%}P|;(#3&FgW0sTw{S> zdM4T`+>HH+jqj9mrl1Qu6AS~%61FeIYnpfgXA*4?k?qcGk74?Za&h_DB-*h{{2X^| z2eN_-+00fsoxDT`NIEpn!Yps^|J_^CoE8%x(>|qfH%|3ti)aUz-6Kw3DHz>V6gN6@0j>K$M_@W#XbObkETR1^73hPm=xH4I!5m~<}vutS4; z5xnYe}rZ4w$B%k1Z$=)O0GWDIskMUhR02L1>_pyjggTZozy% zrn)97+iEH&oDzvy3Uc715lJ(xa*XhWKz3XDuD@=yQoIZvRTOdNOWz$9X<&b3hy-0w zp;uQJfn3O&YF3YD^>*@JTv5bqPE3iX8-uR(#gfN^4?~U78A)+IO~c7X)M_5Gh|Oic zKb48rh5QvES3QAjr32Q1!k$-SI>zu&liV`A%k)p!Mx!dSgUH4S zN3$Jegu}JdnDD~Qo21J(4r%yt_9+TZ1PJoOtEum_;jG$hO?pRyv$NK6o&xuju4=Um zTI9r9Lxzp+yWCi2?{D7DVO-KlB^b+wfsdC)ZX=0Ltn?6)Vp29w8UjNj7q|P^ia|SV7h5S z3fh%Nth3COJ_w51^rX@d1;`7vMFXaehhmTcEIlP$ic#oh%QRi!)1O_I{M zy)-noqE^v#TT!%EI|$c+;fS|1{OU<10jwIPqmvitXH;77$GBbKUw_VKqlH3ffRc~; zu3;$9bl^{MAE9>!eq&#z1z@?!Usck$UFSIC5C=~2W#vs`w7l?_rPiRQy=J{m>(qQ8UAlHy8bwr)boXOrASxRxSB6zQ8)dasf0bO zJOrL42m32ntTfijnhHF!m6qlY0l;GQ&b+RogHRPls$gBc<{#NcJyvMxpk%^(&`l6j z2TK>e@3`U!Ek_-jt?oB)=YHso1n9XFy-=BDP74Q-*y(Q|-@L3_}9FZy^Wg-`JyLCLEt zB2214kFMC@F#6;xVEiPBmZGGP4h1B%SZ>#=g^!A#bXne9!OP};2`I3+y?9`!sf^VV@;1}0P6J^+$_&Y?!d=H-S&2=?N z5(-Jz!Ef%d5L{RUa|@ALD}zLUCK7-3BqKMeZNwr~rgb8p4}~5h9`bE@JK7u=l8b=^-`AT7-E;|4*g>cIN;VF!0qim=z?=R3fCXV zLC)I_T&R3@VBwf9YB-~Sr_|@u;-+Ck!x)X+4iY!_jt&PW`w>sVw+dm?QGJ#>KIeF` z2Pu>ollbN#(f>>{_V)3E*N@QbWw&VJoT(fO9y?icN;iUXh4+RVTHl~%@Xs3)2=-j| z4T3)bpN$eEOTEF}rRo~t0S4MVN#p{bqt0>fIbPjt$E%q<81HSB@jgW20&0Sqw%$v! z&~4!4P$YW4oNjkoonjQ!Ls|gFj&!$pQO@#2FZ;b9b3`$;2TVV*uwFNc3sZU8Qfwsp z%R9#~eNJQLAi?m_;9}49*5IN+Z2|QO31kN!NCVt>_aEJa_buTL4|*4fBu>Xc`MT)0 zSmpj8lv_VMBwTG??5)R)nKYP<70K}wUP;kDg{gu6_axT_I@5hTSjtK#%(dadX&j!^ zjbg_NsInlFNl@nHC{bm66L~bkOa%%0^nG{*g{=Wb>oy@WVedkJrE`cTlR+hbg^U~p zu%){nYBly;sPybYpP2DDiikY)Wl*7aXB`U74Q(t>;IYITe-Tpv|8MknxmsRlnj9^G zh-BQPOVi`V#s0XayaXqz4Z|Qz`Ial_WDqX)09xGLBvwmTu&gF51| zJ?&I+CCrwaRN<+^V0iF7r5IT)zx(_*7~K2f-TuBWWc5G)4KC2Hl%qRAG3lXEq5x)D z;;Y(vnEhvSrN9}UsI2_lS+96A*skvJ1lATm`77R`dSTvpqrY94Zvj~axFOHK)GFhEPHsa7B|$mEoG{Gfrb zrzV|vvcq?1)t;u5kh=qZw?AoM%49|%(-hLbKu``G)ZmdKtozen@EvS;9hCm=!zM&B zr2Nodtg0>e*ZOD2gTZt-IiJ6b?)CiV;2BO4aRF09=5#b z^Rm^abql}1T!JNx=0^cztn^dsd+C@cXhbXfbW_k@I3~LumHyFN-z=9pArpV4mt@{e#_QE;yD@u5Dq-=< zFgLHua4R5xY}8^_8^la~KJGFtf}?r9y4ig51is4NKP;l(VLMAmJopW~N&{^NMWc~< zc*dvf8Ki86d!Vo%#5iRGXq-XxOI6rZSM|54I`C%O1_CIwZ1@wNAlR4+Lf4x@9|WJs zmyz*!5D>f!^Rc?dFeYHnp0b&u7yMZr+XV%_0GZS=W;flA>~S9DPLbY%<}f;Kd<{q2 zEUgi^cHqk|eAaF7I8iR1Q~&5I`LP{|msit`#-f33_z7SWP~_;y!}4 zj?ykdG#I%BE!|{v@-2!C9Vum=feOz-kXT4;7X~V6j0%&Ac&Bb>DL#t^3SxCpPrVHd z%rOPY=tVZ&^lXZ!Qgrg1qfUhO4ZZGrJF1FsB_uSPEVt1mgdD-Dvc03##$*t#W>J4f znIY?`7qk|a&K968^Go@Ox$dCb=jhTZlq`;tO zNU(unG?^($R7!1p1dmgVvRzbG?a4!zZ`~Rq8BjwHHIk!3*D(VwgY9EA--hW3A`y6% zT4)6=jk#s7;o^%u3Sd2BHP|HtwJ*T}&Xw1nU?tytYm2QBO|#FOXQQGF*+;_FBv$>c zquq+eidFz&Gt$@8!!Vc_`JeIr9k1?>AAFC8FKpaFg6Tq~GXwI+QyY3|@CF?h@Hk)2 zR?hgA)gCLof|Amf4Yy^;5}Ji10LhTR3aKZe;&ivQO-(KCCOp`-RS0wgo2N9)%v7_G z#g{70z|r+NuowbmrYge7^I~4JE09M?0OX->V_%I_q_+tbNeAC57g#W}noOR4Sp=_7}`FNPo@wigjPheDQ|a zd?{6B2Zzp^bD7qp@Sw{mju-M0&|jAVP$DfArr;F&*AO<`>jB1@EKE;41XA$7(QM}b9Vcx%oBD2wT8@}X}P3`~_`#Tp) z)_`U_TU77tAd?j-0|1&TXSQV^GIm;~b~TyQ@V*H8G3~r3lI#S`0Pd!-@In$kqlZi4 z9_;h!$|^fLh$MD&C>qJJH@aTQjd#20@)+S8ufmt!^Rg=Opg`AXU~m}YWu~z_n?AwT zu|il6Z&|`4_wME@E=@Ygl*Y;qNl|3FBt)w`_quvm4I(nf=$N&xZH=>sCF4nsau8p1 zuI+(e*YyX&p2flaP;KE+30b(Gl9WW~A-#^RQ2<2`1;Dz86ri=>QDQnn{K`yEBZTP| zInv`!3DNrau*I+j%2#R`85>mhuQNHLBn0&1&V{Ms5ZWgZ*QyjEeT^cqGBKrI zF~d*?xHkd|5n(lWyOC`uh3Fq8gHZ~PAB}9FI2^h87O`sJ|G3B5Qcbw%=~StWjyHv9 z-M|hI6IblPvPRYnE^8{nSW)gqAI;&E}_i`+fxv431{&)z!FOua_%0R$ip7 zWy9##Fwzv((dZK2RvKS{JyE@@)8KZ9dVpY?k8=$JmCKcHt*6`Pbm)2BV3FFTm5@o? zN3==Chf(%G8q)0_3}+=_xSjw_w0!7&=V^sQ^n4FSrAbU|SCMm47&MhTJQYja5M)xd z;rrcGC0a;q2{#+4JioL=;hoEsBYDu%Jx=RrjMA2Hk-0g6rABv~y|9Dy6=^GZ1gO<0 zOV`t)J`#8=RvIT@5gdufU%Y)lccI9KilV{%Eq7SL_FQ5Rzohx$OP=1ZSKA*}H_PeXEiAA5Kv|zi za~ByBG(YpyREzHPxs}Dm`>OGE(yKleo0du8usd?Cjy83+odor(wJ30w6Bo~RK*<{!f^$$?*-!q}TxfFZWKdO!= zhm+$P!t-b6M~7##(~I-z?BwheBK0q;=^4qlkUS1_zwi z3vz%HofaH4oP6JZ$Njkv=koZ755)^&ww3ScW~7T0G_ittE}l`*UmidB>mycT`KloP ze4)all@@K9O5rdKE{_p7VAGRCx~CKozkMO`3Sf!c79V6a0iWr1{n^onqJWJieoRM3 zbSBz1GKM3(x>}DnlWO?|8$^cY^#;xtRhFEx9)=lY))(}tO9V-`=R6N*jt~ZzrERFGD>)7i$#rc{T z%^a9`;x~}Ui`M4woTY4Z-ds;BIOmG>h#$Sh4~XGFx_e$XzKVEEIoul+rubdTSQPDr z;ZOEBtsAI3{B8qW%fQVf+(mCTk>qMB zpLIf!L5h7K7`tgX>5RJ}Yr2Bm&R3AcnDT0O67>Sj5JN?$;e@jv;AE+>NB5muALaY8 zxRWQ$#?|$r6Auh#^bA4DxImg3RoQ-BxTbBw>3RRM8V&}RN0VV)T}&?zFE37x>%rym z*=2P&Ijv@VGF{H2x{C~32YubTKtAr`Z+m6ckh=EU3J2q3CuVxlRp!>FP)F?67Rt>o zUpt||FhNw^qH4;K>`b)EEYd2Pr!<2bXUooX7(Mw1a!xuy+GAx_E^j@K!&M8H8ptkY z{Tpwt=Sy%Ieb@u1e4NnIb)3f7?3tuX2EH=8S0s*$+@;z1iC(GDZrKS6_ zk2kGT-l~8T<1+63R{N(xSj&MdiXM+nJTT$ zrvTAD?44Y`KXE_RgR`TH;py3NU00{|>DkHf^7#C?swT5(eLlSK^Zlj#3L%$jKV9H} z3ZbDFyQm)3Sc?-XXy_L06gi@T=Gt6QVRg+{u`{XxNf&oih~^feYH>*gEv21OL8V(z z)4?$nGe za?c*RcabsO2>#O1q4}#^HniQbWgbCn!{J@&vS{q(35&0Z4*%Yjy=879SS*bz0~IXX&<(8W+Gw7`$>;Y zftgl$9@1Hgxufz>RtKlVl19mij~OL9&ePXMnqyw>UxyjL9K8e%2dSm^NE+E97pByp zTP2X02a`OzM6)T+o(|sTGXoEYTThM$a)cYk$F`z{o^Gv^Am63HX$jEPJh(U>wj}mI zuj*(E>Us0}L15zWdBGe~Pv=@5H?WIifFVKcd}+ND?Un20&DE1P^LNV%*8BGApw%JepWP?61CX~a zNT=5h1y0K8_-1focLr>dS#LvwJP{BiFDoVks^?*Y#yS7!%`j}L0Rj>kUal5T_~G~x zpzfj=M5`ECi10CZ_#8F9b2!)s8|Y1+pW24I=M}8Syw@6@;Kfey z45w*_Y$FhBFE6pXr;+Rw&VcF9`~bRqlAx_RcVMoJ#9AQU8vjx&D1F5R#)WI~e1`FhIGBQp>|S+$hhX`ak9wQ;^BLw}AXkof^x!dWb$|Dn zROa1?E&{pgpSGsnkVtn?3)mBB2*|)iHKM!2>FWBqBV8klpRRX;Gk9#n0sUnAsokix znfB%mM3a|5?8?Ysum z`#-K$*L&tT;7*47KdWof1U~&pFdTBhz7nqI&b+r`V5Ti9mOK)&=E!k=3xt#sL_~y za|b`pFG-jKnDp3tKR|Bw%^r+h@FZXIm>qB;S0b*D)Y14&(*5iuxNCa<_erwwDLf3C z;&uF0@;l>#m0)oLyZdi*IO$x|m#H~OynhoQR`Mvy?;!P1ozMYHcHl*%F=0J${fBKR+%Y&q+4d6sv)nrT0wWbxObONMSKgloPjvn1njoW7@tr zX)Q{uqi{(x-5t#`9E=fp|MSr8W%!6R*bOqB{w70$zo-lbug{aN8*O6@+f6VWD9;Da zdCUz#sWHi!u+s)AK-1{V1MOt{9unu>Xou`&qIwG;C#&nvl$+bS%o)h~+I{&ob`{~; zuI>sGWelIg1%+J^O1@zT)A6|ovj6&pdhjWa0*OW5q_)b}Maf2x;;q%_*;d?%P<`}`w}Q;7ExZ%N_&G%=gSf=`uUEg; z+ne<=*&(jCbw9}6x>zdkg7~7Yub;U0G4pkM>8fGmLHw}P@BsVx{^t#bM$s$*a(c_v zcD$S~{sf0!R-W+P{;exzPAm%TjXtBQ!^jH^T~U zFuc2vkgMI)WU2{#K#-*69y)ZR#TJ%{^5OHV`m!30;OrBG4v%|JQX>%u(BC(!<&%GX z^Yd%fIj?^HI(iQ73@7sQ4JIsvQ%#Cn-;-(myl<&;S+gTzc~2O9=5gxtrB*gK>9bXA zpakGfVRK>d3U3FX-O@jkqVj3xIV>utND?j4?siR~9rhj!2W=g(MIW6vZ~M#y^-YR9o~x;n11GaRV2Kz(jvy~pwIp^NeV|;?oZG<5 zfJ=Ck$wd2rhHzC3pIk$B%dR-6D+vJ%My_wRaQ+_}9Tbb^ka=y5meq2l@L&iEj6gi9 zcMx9lY66Uer92WD%?=qiKdnC7ytA&%Yp8@yOc|R2FQ-!{Fm}jHuU)|_#&h8_)pe$x z5<#+udsp)%L=|qVqg=Hl=vi2yDLpulX7As4{-KWnYr_*7;fAcdX4^0UmCNVg3P(b({CVC1fQ8_~v3!X?$bc+#IKkl$+-m6cB z1elcpF|vQ~O#WcIVL;Hb+&DW{5Jh6+@E4IA|8foYCN*q5VtSO%#}o<%vls{M3E^z} zC_|S`wxD*)p2gHA4s*u1)LG->N(lx`?^3boeFNjTH@(tRwXDM~s@!uAAxc@OQI5{t z2`}IN-Ge1mTWoLoba&Y|+2o$`H3TI?)_=U~YK>MPbexi2UQGA-z6eMeU;7N+G;x5S(FmV1VPyy1!2fV-7}el6 zO1S9p1KO#iD?(_bVB)_p-y#f8Mb$@r{BrsG9>^!5W%xjT`FmR10NJAvq_42N2g3Pf zy}~Eg_kguu`b-M(VaNhc@TYomvqg(zd<|a6co5`jj`1v}vATP4(t1zBX>oXfuFt&? z4$#4pK`D%I<1eF`NQ9%kpa5n*efbNdBZK2P_%{rA{G)aj21i_VG(s=|!28+D>Z+E> zVeo8fGzPb;^=9;teS~qpiB_dK}eM^jizDhKT{>#-mSu|ZESNNXAdbQe) zjMJ5T_e{Ag0|6f&p`%tGH+Ba=%$bj4Lh2XYEGOd)^a*YXxDm5Z&>xjfk`RG>*4xea z<9z!bJOHM@eT3;MwsVXnOW3N*&1wPLNDqN{w{s^A2>C49dEi&;uqNbBzIkdS&ubiy zQn+P-my0p`f$k6=bh%nX{y%){12IXT`cb&lMhza2Mq#8XBt=nIllP#~)>~?F1pi-e zUu|oePlf=T=AX7y$;sY42Z6I{H2M{;p4DqkD)ab3>l}hH>1JjKo$UU9wzO-({CzcF zCJS)0WD3;ggr}+fptutyCPUksfVlc6Tba(+32jt=0@u}a^nL|rn%tr!+tH*0g&$zT zc)BMjzg}(TpS*!UU%WAknXpa1)4 zTW|X6TA~E_o3of5XixX1n-2SMRpo8}=6X?|9KPto?3RoA_~{`nq9g~<5MT^J>Nr@& zB^nY-twa<{SpdRk))52fz|4}p2Ud?S54gRT7K|Y{%WXzHZD3g;?M2!?k&VsT#~o;% z0u^5je`M7TdN)zW?$A|L^9_wQAENBo8MHYaZG&%{25&d0M+b_MeVUbCW;?hWk zpJ4y+^B%0x+9UN-ABkf3opqoQq3p2;?#wU?%Ii%ZR9{2XAl`O*j@S4fh6vw4I2Hu( z;5GIL1zlabs@}~f6#PY(Pknd@;GE8@c-&t~H#UK;Gprgq6s(SqM7N{QIT=;SdFKZP_d)OHPyMjo?m z!1#m*^>vLG)pi1U^3X*%*qu^Y>n89S2`Fq@K^PA~SxX-)c+VQ!!98JNTOP~~T-pIS zgV2&O4~~%@+u2#91~a7TG>~#$$MYf!tEaA-x#0A|v2X{h@us2DE3UY$7Ym%66m6B8Ux97_Pf8<5n{L_AG5NR+O-xO1Q`aBR$i}dpxcKYr zFj69%Ep8w-d`IBb4cx3Iz38QcIY%2Hf$~|KB$Sq=d(wfLZR+Bz$|OXcRHnM3U8qb@ z(JH7N)JdT430Yy|Mr#sCceRONUDc+*bmX(G_su+TgBtd(pw-^MAeY-3sX>L`tTv{J z&I+U%hE+mQOo%9FUTyHzO7BLr`jzCK+TFr7e!%!(X@R z1xLG}!S=%dr_<=mMfBw;z6?7UMzsbp;BgFi8Uvo5MYx8C2RNSeu1@>g_Q?J8T_4?s zeexTk6CCaakzcS+?n62PZ{lP$;uVp)NQNcrvY@{?IUqSQn-JPN2XI>6RL?jz?V)i~ z-6ou&r?d#6<(lRcuOS(x^#sig2aAr^f<}DaLRExNthfw;h|rpLtq7sAG0`&Uu!7M? zd1Unxttfi}1~VlZEI8M(Ptk`3d)0k8G7_&X-8VzJ+-Xrrtvj0Gvjd6s3+owaX+|BW zK1&b;P7P;Zc0JDtDQh{&!Rjx6{$by`=4Joq{tx}2V}wpVyz?k$!%ZqEfh&t8Q5qc2 zX_TeiCs^q>%*aBgIQsDu*)H>osFv@)krKiF)m!@cC}B^*qk#7 zdm~!F%t9SzPCtMA;N_TZP$Uw+lT*3_ z7L~dly9T|Gdo(ZJ^no60SR-*1SA+q%^W(vvyz@mY?U@8j_7q-tVlZPTV@+eb=AsSg z1bsh}=07(N8)S4oh{zCYMqwLE&$xn#9n1z9SP8(ZYMGD>sbVpz1;L(_gev=ukc%FH za?Fr-I*TbEG$IssYKn4J|51(cvHh~H;i>@~aiFK@p`4OtX;Akz$|X2m-QdM4n^(KN zl}=J);^Cr>Z9(GV3K}Y?a{u9zE|+BKRBUHUW%L7+OebZ`cRqAWC&cIwTP#+S4*k)w zgiKQc1N?zO)H&*B12aPuXFVTG~v5o!cu|+HS#%SQ%MXTsjxCNdLI1rf}o;3NCc+ z!PYZl+rjf4KxLoFOnTT98+NxD3PIH|8_>j7eLr5(%6mNQn_6kwZ|Cj6*S0iXeqaxF z6&-vXX&lPaG5$(7f!-%@HKn1zWst6G55LmI2_{nO2DJ?{ID_O>{)Ix77D?YGxc{{z zGl72Vw>N9q;C zED62euW({_0+~Tf$!a$14AZ$Gxb=7q?=5pfn7I*0bmD#z`dy8yiUx0Ipe0`Ofha4+ zU)0VF-}C7N!HozHi5UdG=ldV=`E~0&@1{S`EIOq=`W$?RMJtJ-ZOuvotsx`}a-IJP z68J>AGWd%;DQs)J^E?L2>D{`zx=Z5U%{P##3lFy7y7+qjsSG#dn`!EuUu#BN(mN1B zKD8FHyBVMA^j}vW#WTxWsK7g$fq{&D_rH3}5rzDH(H|ZUXD7#pM`y=p!}H6ddUjr& z%#JQEk1hwp%i+;Ese^8OT7N$8Y`Ou%Qrr!|wx*PaJs2QG-fiDEZLgac?V+a&@sfWP*pBCLCwhAYUK+j$Zn8a>iFyGZhcPA>r^~=V0v@{+ON5}|MZkB))!&%~ z-ZUEms5iQHio(#bJB`bRJu#(oiyz|Rk(u!JG)@aOwYq`^T`g})cIad3rH&HH&!CQo z>?q^m#afLMF7o*k+{NQ$2KvulZGa_B=Nm8vF9xsyu8yj+dUiA%oShw=Rnyt!+0pUw z;PhB;fD2f(yA0zdLotY{Q2-88wOE?ADYe2#V2D^OU#v-XJyZ9(JWo524!h@e8o#&z zX}i1!bTsXc+sTWz#swg55ao8o1xR)qwe5T1yKXv+^uQGgr)PURyK(4kv^zA`W%k~` zPtonKjZ*C&9iJSXf*w5`oWY%ov(vgdyBJ>1PG-kvM@NIxQ*VFWF8oLNt#tt~bX^B| zdQHI#7KxDlFWIKv$hNmrIC6JmzZdOX+X>Q})`Hqf*g5Y-0hXOR7=&$uIojLVy_v6V zD;;{`z}qX{|16gi0}L>OJ%x9Lfh_$;b}31iK3v0U(Ey;qfN242FhjyNz|x>kVobDP zCX=8GK-1dIZON&T*m(TaimjJhfm(QJ%MBiZ7>2Yjs7sI1PE3b{hxn<&&9zLXY6yWt1 zB{K3ksM4oTbEOhyp@T-Pbi>w!kKO7{+=Fxs@gQL7QIJ%`a$ia8e z21yic+8_zkqz#~plG*?eMcM$zm?Vy*p@^|lCK>2nD1@IW%8=)tL;dnh#uTJ+n`@9nnn)w0UYLwgzEfUT#1YvGxYWXh7WjWl z(pEu*QDrI9L!y&3rRy3(xfXDyU{YeI;gAHIBUGB9oT{jtKCyb?s63#QPZR9@0Nq?Q z{hi+IBxc~jUiGX(Aa#?4k>1e642$yx^k;VnBezCCn;JFEyr0e2>OAt;@4=Xl4=FL& zl19Ey>u5xbg8qRxTS)P_s4tHO=V_j?!~L5L=754w6d+*ukN_2?iceT_(A-|i@Z$LF z89_P#J9VyQ8Nkz>oq>V$dP^iH2WpySc#*^g>UKHy zv?NdGn7bCvxA5)cooUDL*`0wW@C@%&W1xJa(04fWwcNvb?|d@81XtyUoumixyo=Sl zn|ciWuoHs%dd>(gL3w}-c--UvVfiQHs%R5GR>gY19puRa#&r`1PR zO+4#)^+pRr4p!wasq(=7XcbsnZ>&CQ^|cEL)amTHY@=o$_8{Wbw99qBIvQS1PmiXv zNj0gC4`(OUY;ZO>onB6-XO~msRVrlAx%R;G(MJZ@< zkG8TLdQMvboaA#()m9X{h`HSr`z4z7To{EzV;Alq0Bbv^N8QD9A?F!if~#JGZ@;y@ z;APa=e7)IzJ1V}{vBL~YImX+_?9d6Gvwl&1A#S`@{^LKtm45yLg7cc1)!WH?*{_0= z3o`V#$xc*4`4GJSlL>cHZq}Rr*=cord3rb;)U!c#I2fFsOpi`yC&QDI`t0y%a!3Y4 zF^dJ~scmA_C%CP3ReQPk?^YZz2X^8wm8&khuC-CID-qEVd0Rufi`TnR@THo;6LI4N zYHK167k~Y7&kgd|kc2&Lfxmt!PStO88WI^#uV30kG?7>U6rUaLHNwSEZ}whRZ*sDF z(=4ku4YGREAS;0jWyKqw{k}jA2b*hfTW^x1%P`=)+(}dGZp0;G2@C{z>#i6L@Ti)98Vj!2uhd97m&fj>8k#yzXTH@NfN#i?i89 zeR_O6I|9FAby^P(PpiS<5iG$MCuh?O>eLeM?52ad+9Z8$5r|lt&DAVs)zS8jYcr^| zF`KKo7HmXrrW0kC*o?1pvnmAlk8QYVW7^E4n4n$zFt;UbZmqLK+c%?k++b=8)Y!y< zSbmMQ_Q6l&EO&`B;%Uc{Q0#2N$PsQ(y|3q&hqvo=#7Wrk>^A%%5jQdv;zk zoU&S*E2;*X<18~XPg||UE#-Cu%?NhlN$mw1u}i#chRvPYj}Y8Ip=4#gK%TUaDW-L= z$L#YybxCs6GWmR@pXz0J=NV<9MDeJ5$4ev2`lAUfkMrQXef}>J@sSa6JfIk_o+nIe zBlfhrSx9^?!z#+(AB@fW_svBoL2zW}XUQ@h??t|+g&Tyzx6aEZAv#>DXRPg?X&=-@ zA)aouGV$=T?_N|z+Iim%J$DGa(co<;g!Z&B>{cROykC0=d)nNhV`O`j;YpeGU@9fw zwF%U0-q+4Oq;J~gb_y9{V7zxBH+{A4E^zBBbZLCC-N@W`Vj;dBmu^g3{Fxf6AN7^A zbnUK0%Cu?e9OJ%Aw>cWAg?tZ}>i+pDL}nZx4r|zg*B8^1!`boq>}Xb9Ue1Px)!C79 z;k9#UU18dd*ACXA@U;wW3*}3?2H&Zr>_V?FH?R4sV%xH*t2$;IECB`Zg^B2HDk$2b z8}{wP!m;1YfY7b()Zx3D6}N8KTeWGolT)~=sh0Iy)!fUaynk{8hxg|bP&Oyi)8XKF zP#>L72bb{Q^k{l~#D@sYI#~0lmV~0EUBkAn5W2EzsM~_Ck?h)H&PCWht9EU%-8fKu zl?>Z9t4E>pjH}3P_(gfn9qO~)qiD=HWOR-DU;kUpXAHM}-WT6Pqo>9iHtcMSdI6rs z3BR!~Ec_aaGUs7Y!c^;jBV$-aUP%WMxC4Ki!UHRYcFW)limLJ zNR_of?wt}VA2oNZJM7-6+ebM~7In4uq7nXgAe}!_epMUsaDQ@VUaxQ^;CvhLwv37^X|B5Z4JyY(O`xcb-_S`oi z`> z@3bf}LAntz$;BzdNqzRQJA0R(w>4hF6H@UoiQ>lhl3Ivl%IE96Kg&^{0PfQ$%z0n$ zoyL8gwNaSq{f#M!WW7HM_O+8D$NK*cXAIFq&5fICtGFLUQN{N-mcpjVqrJ}u4L|gM zhSxKHN?(yf>YMJ!@c}|6JqiKmZWIvP^XI`K&n-CM4fwPib5quNa7^TsNChjG4~ zENy-3UvNhdvg?XOuWz>IaYfeRNdO;#`6XHPEGo#QCuEqk z29F=;GqWV>n3bDrcu^W6{v>2A!0a|1p{sLASH`sJr5^W=GjBLar9@zAvO_tJ}J$ zTmd|K)WV$USle{AZ!M;VPTgGB6G(moN(B0KEV3x;;FzbPp0#B8e41ZTU*25rs6H6* z*2=@6xwYyrcpAr|SEu82_d1dh?b3}O-_OB0a$QZ@m%YDr)JU>WjsMnhy>x)r-Glul?Kyay&w7+r$d&W{HtC&z>6Uy{bUl`VT9#6d{3uJ|XyN$Ug* zfpXL;Ttd8gb}vXlLwC@GJxEXCx^srqvG5<#Ui%?uiVS70bm*++gTZ7w-9|&{VcH!u zl|O(=ArFp*QdRcy(B?3j{!S%`A}E+}%0ZJnOi9bbMWJS`XV3T3?E1Z%Hge&_4HUu< z?j|A~&YQ<8&e9ZL-J8rf7*oh&&wsL(>hs7cmjXEW6`yE*_}$|NFZW?8{MtuyP7c58 z<0|+PLgC3hpomnKHj~4AfeB@{;+DjO~y-30IXYkd%KT!&^KRF&w&Mr?cs%dor4+qwVCy>k?USK^P zP6xxIqca*%-S~V))&KJN!CxQI@Ee)zrC{TN%|73L7AvS5S{R+(02CdnH?!36Vesxv z@V!dNW%OyS{3o)D;wMO=W?$E&dA*fnyjwCi&tY#`uPNQ&f$?VjD1YEv3moC zV}n2Bn9n_K)qqfL8q(+CG;wc*JUUaqM`Ut5avTK}7?_1GwbG@n8=B=RucNI8G zb{bF4W43#zf2co?-@{;*?&e#rx8#0`?kRlzpjwYNlWNJx3nU>~+V4{$X2y@bhlq9; zFgzneO2ku>omI!JIs`fTJie+RH838t>@?P-XUzPt{`}nq1J7G%!90Gj6J6rG+no;S z?-|_tw1vFYMm5>aSIb-X3dQG%$#QFKv-uWq2|AmE z<@PfSl{AP{p8A64(r!Izm-VMR#~JWXMBW9hsEQT)R>$9VwCcq7t(xR6teHgm`#+{# zke*)5?$dsO$N5CRM<&>P(seghh#B*=U%%yM?EZZkE?}K@@~7wh>Fn@ua4|fqs^jy) z$>C%$n@!G-&kj${4=*o<(;4mGZ^yTCk_C>@oeVJTn%fP5M^HMQ(Qb&rXudO1^)M}z zH4pC&t$Qb6Cm!#V#mFJM6G?YEAhch4Cu*M3iS#b}t-I^vOgQ~c{M@Z{8?I06MxC0= zxjPR#A>M=YYNMi0&tJkp_4@P4VZW}ZjG-o4G!}U=(qu4%P4{~X#F@BbdX1ui@~XdEp2WUfm_ocJ)(oY^*UqSna30MCr&Vq|IK z`F2>#qYr2}6w<2gx&(cx0~&4lBtX0yIgurs0#LSds#tYXV=zISdmVCy?}5FNPww@$ z|GfV%=^HmddT(=c2@e^+TUS?hzY|_7f@;|ZsG!W84unw8-|n?op7-CTh4TDu(_pjT&>q8g`8LUW<;deB`3s6t^8G_O1yPNr9TEn#z_6w?t@Mv4` zSTz>*-s8cd6$+Yu2pxQYX-Ji!sn6Bb;>o{1|LMok=rvrE+9aFo`IoXZ6@sFHV77O; zjbEzurhc(nZoyUi_<`3hHvhHlSKY>Zi2>}}CZQ08=?eey;>EcBG^ww*<85`hs80{x ze!i~ZX3F;Edc9ij!TfmJM}i=*Wc#v@B+;1gh-4A6j6qR*^pC&tertnJ0C@0t)trEW6mSM4D|TLHy-OUp5Cs08=l~EA$!nI z=A}HmviG*X`mGOy**9P!dfhG$ACbf1ERR}5RY5e-H{C0^RSc0J!h`SU`!IaJ@6UP2 z0y(46piH{1GZG{R=@e<9Ll z%bPxthGX3Jt6e=5*@=!$S6f}zODkqERezjcz5woD{feEOhNHtgI>2}mL&>X*aJZ6& zeu@4fcf6IZM4j1)9Tle@dD8Aags#el$Y>>uUzLAyd}fmHXRq+g71zOs@JPkqSM#Nt zsf7TxH+k4Y4;BE{SJ&Im*0?PIK+?t=dW}iUA^U)5u0_0hUay5YcgtDkrt`$6yP5~Sl>{_XJZk; zy!Ig@Pl1t$9XKP3K5D(ofTpt&RZ%s-4OT)JaELau#eEag# zeEVkzWLnhgeS6v%GH1W+BY6qzfiuOJV|!xA7d1;ms{!|a_fU9^G`XMZ?29Sn}o zCg;P;YBD$@F6Yw_gAl?!0!K{7-IfHQd|Diu$)Zh2(&15~l2GfMpYfSNI zG+VE(z0k9saT=( zHnfKt)BeI8A16qdO>Nj?Tw2=99G{y_l0<%!l#qLui`C@AeECjXhmMtKqsHcOb6VE62hz3W9-oGz^QEb^-t~IE6vujFC-fjBK(^5_ zujwK2>gOIy{AN2lFYoVOy~K=dxbcD+{E~l&0hb(mSkKP%j-v}1d&r#GF73b|Ks($1 zpC*fHvjNi{=<%0?tbpKtp>uCE45c1cEa*zSRovQ)y?t%Gd zy*V)=U-$ALKy!xzht9!k7lX8Puo+1jNlseIf)M|2++4Cl5+(tz4@fVrN^K-kUvi2; zI_GNd2)}ZI%4mCd7Vi%a<4=PFIEmTLC%mg7wf*?P;B>eT8$@tY5@~SMRY6GKZ+(pD zI7jy-5NKjKGSolQ-{D!K*N^brk3(I;MJjI)-Txjr<8UYA+8rrnIp6`l*{*LU+kawL zItoS|^J=@)7=c-AdeA3uMxS8j(bpiv*|%?X+ZA3d#E4yln>aU zEsmqFcRjy$X*k_?8+PD6*<&vEskZ^UyWU#WsY)iGx#0>}y&g~N-{HD>s?K!2hJ$d( zMwu$ye7*w9_Jb*k`Uv-@;MLrN&17cylZyi=^j&r`lnwc#5ga92m-*|}uQlXsTiP%- z+1RtCx)173yKvx01NztLJP8^Vs^zbtUONkvXNIvnnwE5{#qH3-+K`n(@c^_Wc-Kh#$6~bl{DI$YK@wC@eo;{vEVW zOW?-%D+OWy*|SZ7!`3?{cSe=1{I#NYw^$QxSB*wL%{LpcSNY=}^pr{Uj7MpZv;r5J zpZbPGP6AEc*T6$-7c|1^xQB*{pjjG9wbj78CmApeK&oF&MjL#eV;Atd7#6RVzgLU- zljVJ}h$JcQGui8rsVt;k0~0Nm$Zb zM#8_o`S~@d#p?PR)Z)HGLH=w14IDDOrelVm`i3?a4;j;3#3XIRtz7n?OEsIk0t8*k zjQVsJvAT~PsRCM=FCwyqo$*(yu2T-Y?UmI+RRNWxemQ`=GD=t9O?xNGvn8Rq2kwAXXrN&{TM7KQ zg5>A0aa(}*V_)^hk9|#KMvEjFY0)KC3j4}=us+B1wlJt}zU&i={|;Bue(L{7_Eypm zNzvWH>iDZPklR~uQailOfNm=M`_K=^mCyWFZs|T9r4WOvNPSMN20q&2R#`)&8c{kn zyO(W&+f_HG(E7?M2yaNrID4fl7dw{FbDgxL(!^F?NAhvg?f${a+*Moc^OyCvnZ+n zKo16%pg)$w>bq$S4qB15c?2P6swVZ#!YT)8Q!N^L2Gq@9kh*;>Z-Ytc=j*>ps%#d{r4?MjW;b#SEIafBU}L zR{w8^=xzUR{qN!KP}MFS#a5AAepsy`zcK`f?aeK2qqu(P6J@PMvR=lcK&3IoOf;MH41G~+v|6#F$o$m4-k_%}7euo=GuB^adMZwHhgo;iTs1}0ws z+?OE;J8`~fsZ@ueu%!n$oano13Lp?^vNsdUMpVHdn<9%uoSREYx?6Z1f0cxC1IQnB z$;vSLlHVPY{3vV#+-)>MXzp@ZFCd);W*V68%dmXWXSz^3yy!D&uKQ9%xAtBd2n=d` zC^(h@xTF)GRri?S=$2YRv_YzNN$0n~?bi3NSKC)t*9&?YV1K&)bsxy;E4p02CkSro z_Mc(JpTV2k`!cS7?h8SVE04w&ejr9h5TF@KDre+<0u|%^jz?^+I2fv4wURNK1K4eF z{-yrBFP-+6KG5R&ODJpYDyis%=Pwab4qYbybX8Tq1s#*9yPJsV1}Q}^f`2-W$TJ6| z`w`Sim%BL%6GQj=!}@Y?GOP}(lhdQ4^Xc*A^z`s-0*TZQFON>DvqN&yv@j?ali{K; z-gSon|6d=$9q%~?%?6Q|5cP^x^1@2uB1}to2zy;$!(B3P2-C5fd78?L?R@;e`}yeL z&HNoe?m+;_n?6xO0%f8gVFN@#UqjsZth!lj;c+R>ePC8Zu4LoW`KOIdH>Dig*~9d4 zBR)NVS)d_H6U%8BOdDq=OO#hGtmo3ua7hoiT&?A_Fj;L;slx#Nf52Zxn}mkb?{{>qp1yjRq8aT8D~gLT)2y#mYmAvg?2R1;vH@E@i!cKH4_ZEiYrDED zOq9=L4!hu85z6Hm$lB`@EtkekCJMh$bCk&!(hl?QPa_~AFm6kbKnA2#mY|4j%#(yh z^3kwFpkLd%(vFc6W@mmVYc?(W@&i`=8c&*sKD|54_Q5$v zGZH4R(@2{U9}-X3O|Y5w?X0-IVAHTi$H%}EPXp(9)ZNEj`eE?4e2lX5=YtyIW?zVFx+$ zgNM$fjMj&p%wWbkrp+_U}XgGho{5A`QWS?9-kf$56@1ICTG>*Xkx9l`A0dQWPQp%c`SnRg)@{a#?e?Yb|o{l{JdS)Gc^yeV(}9E?L? zCX#5LyP%;L929FF;MFGBrjUjC6BzxU_JF6K`bY>7P9*WTHUESj+Cs`PxFYa$!~~DO zqQA=5`y^Kv9?`MjFoqaz0r?k=h3!6!HxQEOeMNsBRW+wFT=!-ff)lk_(zw8*BRoAn zj!w@{4r|4dDvhLl$yE!$axpb-TBaUn|QdDByp-~AOETU0eEhT*> zn9`8GdNZHwLsCmTwl&m{SR8Q>d{EukSL5{e%gx8?`gmZTQ-4YkJK)7dZ6^^RCeWCF z?$eo&3n7r$aD42A!V0{@AlmOdeh~1XJPas$-S4@CmYI=+vGcKZqfyFWR*r^t1dYz=G`Qzu zO;^z*1_vcF(g?7;ubR(&+No$c^JzyAut5NF-XlBP_7Sw7-k1}(V1Ei%>#O?Ye0Y2~ z7|iOki^=8X(OET_RObU)-a0VpZS}o)krD}|JrwC4@;06>T&=ws7Flkj?!E$3=VaLgPbr)@j~JElHL3&37r1^qw;fZ8V+`k**Ze>F@26 zP(_{ZZ>*De9>uLIGs{@6W(5qbJV<@USN4qcdJz1)|A7^ouB6<2I-ki;eB2YB9+H(+ zK9k(g=jMM1!QhAnZ@og?I00DUz&ptGVh*>+K4WBT-H2ye|JO}@Q^Wn0NsS;7sbsw3 zrtQ(_S5qWA24`00$)iW9X#X2;Pc7m%zz=YHZ?a2xJKLT4{TEA3*EPVPQE7ZmG?ByDRFOb`hN4| z|7Y)Qc-zR41kn7H90WWhJJGIW%d#zGXY#%4x0y^3Co{M`9E4VP%hrx8`SdY~7w^Zv zDt?n)WRtCS+y@*Ew;8L+`XX6XB#Tw5gSD)^%e_u?55Lg#eVtU7ALyV2UY)=PuG?hS*8HMZx%h#qlw-w;uLot`Kc)!^0CAe=I7_d`4~$44vxns#c5F%M`vf_;qlq9D8@Ng&KoF_nL(n11a5Va!D=To z&ew}MoDC+~#P+GME8RC4)EYMVE?>pAt63#AnY8?JXWl*ulL;0Ys;59dqJ0n|nNe>r zz>g~H+ZAmGmL08?KlO$Cr(GeRUUqphG;@s_t@IR+hyQ~x+iqLG4s}~bsAsoJ0&qFR zpf*SqT?H*2DB06Hr42!XV`;vR@pgIS`_h4lW*U8BdfA?~BR1_OsShAQ3rflr~kd6Z{{MZon^)T(@ci_euqyDg8NjPmAOds`-@#-_bw33vaGr z*ejc2xrEG4NGVq3xHR?^l>_@WiM)>+?+?>2a2#N#hIt2b$&Q z^60|+4jSM5Q#Zeb`tC^`7ONbh?6#$T-@wHr56sjQwf6BHGsqxMadt?oUyJY;!b$rp z>~m?>l=nn`Rv{boXVE)mv*B#;yPzKVE`f))z=>-A1QSfp=ff-?46|Z(0+D{%>?j{V zwBPBd7@S6LVQpS(c6MwISNuyGM9Qwt?pcF8ecze_elmebof5LOSa0anRI))4`^Llu z_a!B9QXH|VvaB4af7=qa`mE!mZqXB>59deqGixig$FCDqE6*os+kO8}7RF(;z zy31%L#(9-wb}?3Y%g**LiYq&EiSKKSe&&4vd~^ers_l*YU-nUk9Ms_v?><={6|Q1E zf-yh2kHoESCi(FXIxP@*9}tvhFDkT&!Q}Uod>DG-rH%RW$3!dxcIa>{4o+JCItpvU zn5xvpL@)7PweqQtRpNjo$7;-p5Tz=iF;PIgmsGRi(Uh{PK15|uIIVW z4Acum4rtxWPcHx|+^EN%UMSx8o!%bo5e@aE)7!%dDGNo$F&NeyiVBFUc8iOHtM+qf zWes9&QRua5#GHTl-GV-O55y%&=fOFB_b+Dusj2?sSeKU;f!xj7bvn*w5FCpP~cE|T;XYzzqQ}}{YD`L5%4`s3diExSLrZ5EeQfqO}J>Ag5bYiPMWvirI0k2HM>6l3 z8Zg^sUZRFjYWAqH#5jxzThIPU9WOkE4WMl{wZsu^5UzD%8))es;D(x-(>wk=Hw00g zONAPlXo+LnKv#LDdH>2Wcn%t%5JHEHSC^rNrWB+quAY*nLZA;#W1)zXG9u$@EQF{d z)c~+Y;;SCG1~6D>XYzeBHqvBF37L*7SCz~JUMsvvgF5d?p9V>Y(Lbf@~ zj}|1<`q1CcTnLJ|pBj_+FC-Ong`0roG)Ds?r+TcUyRcWT9G>^bgY3ARot)$+qtWdA ze0VlGJw3~2`Du}t<(L)#wKSmEB_8k=m z`xqjwzgUQc6m!oIgmtJ4jS!32nPQ*JhNwG~xQHu&5c-3MIr4%aNP{_T++@ROw4sU; zRtN9Ek@IIP{>{`6uda^oi9}VR{VsxqOeu9`RGH%Y3Pkk+zU}i}55hTlE4A&!uf1!qzRy)KCeCDhL+tz@$pskL z$%0UQep6|}Ue54edZ-|A7?1KOiXBhKX}${A~h5xA=zU(-|!Iu*;!> zA{)%fDqBI_Wn*Af=nMi80^vM6lYdiH5|OUnzt^jh&0akjCzF4|k8*mjDq4$g*b5dXhcuadEz94hnAzBnnZ^I{ zk;DI+?CzKOZ_rKs4iJr2;;(?P*jRBF$cABw6rLx-Ff1eJBJtZl2B|5syDbEHOmE}L6#E1?f-xQ`;$Z|{1&ha!ri>I#zHyIHJY1nuAW zBD8-)*;aqya|p+u{Xc8O?I=THi&6ZA_MD@}`DeofK=uzei{)}b(F5x5CsR|(mjY50 z0V4#4ZhH%FdwfM+8F8LAeETQQdRR-qSg98)OD$RrVRb`F56GF%Co|r=Iq}3oFepx# z^Hq^ks7w@mq9avmZ7`)0G41$Fg=bGNt1H<(M@Qmb9YMPaw+kCIdC$(AAAAt;zAtPV z{_#(EOjlaB?<60g+jz1A2w7aU8tPX1nv5 z&?vsBVwV(0HFCPZ+m>tws{tNRi6V7paz08`sf>F%Wz5|=3?BHJ0ldm(3$(GTlA6y} z!gJx_V_5XzNB!yw@?z|voYM_z(wN&m^1B6&pU=iFuUIl+HmYbjiU#kbibhZg^`p?F zh{CAhK!Jj#7)@L4QjCVgi%G(o4)%CN68!KBATaHXeYUNr*k(&O7|IJm=h-`DDCSMe z!5tb0mfk?QR@vCkQjnF(qCRrs0k(sUYO5R#n}3t?Dj+}Ey;TMt2ItiWdcNL3!rQ1u zqIfnBzWOn)i{m+Rk52}0!3~7-U2NNZ#BQNn;uPKP?UcLPP*zOr+PS05!_)|OS^CND z$o4q@&o6%YLDI%2))V-ph8oe;VZqOoJ>p$C-Lf1!atXqrms)%QqwFrm${?E4m<#RM z<1jqw)nm*b4C;7P9mYhUA&j3l8KjcOQUh>qq&8k5+{^X)_x|>?bPSKntHW6D}y<;DdMM*aRLeLYAD#o z0tC6V=eHe11h&EVF5o1Im?=eE*!r^Z4s*)Ba%UD zqi3Zi3k$Gr+hoYlKvA=S(w$)R(;2AVcGvO1E}Eq8@d3Q!g4_8Wo;k5QnrDykkPn>z z{O?IvNN)&)ureCYe!|k?P&f5Dbdt& z1$rk@b+-T z%bu>nK>JZveeg(Ra^EI!yu2xA8DzKJFY!)%vD(4y`Q2)lee1;9N8(U5f9eB${KOPU z#Q%WNL@K#9@bU1%;_elsoSaNH0BLF;&|9rc8E}Q7qT+s>cw6G4^isj|KTam|&H9GN zxJU!*?Gu7$QuQ(0Y)g>~SjO*(&>8#(?0a(*Q$_D|1+YY5&OKp#!KHjzZWh^c@o&6I zH+1u4I)%VM%q2X9(|;yIxPj13;X9H@e~c!a-{^P+Mvw@L1vZ2b3%XuS_p9Gm>#r+L zT(*PXXAqP`BIm>JjMpWE)?fkyEB;9g;)nI8a<|{CLervmwOQ|P_4SaS59}E>2C>B_A89Dc1{&wXzmWKcUv%|ZZ@nGxVfcedlc&Q1=x~f=uaCnhl zKNrw0nWL>1AOAB1u(vC>JGZxp;T141w%dJ)@wY0J_~qqiHb3x;$je4g3sty4><9y{ zTC6`qAc%<{5v}JIv>Ki~B8dF5T9qYKDS5Nl;+%T3*kIM^Ke`Zv{<80wpFWhFKh4fg zPX|X(StW-8joEoVD)aIA@Z@wfAI*H$$j4-L8pYZtA4JnOK-9OIfu?=;^`)nPueA!7 zS5`v#sVT!u&Ric(le1h~rY;;Z zR%UJ@9<4lkjJtvDknS9vI5Ij-Omo1vF;sX);hi zfSnyyG^0X~o5fO;L*N@rVjV}g2$I_sz9oLWzPW)Hyb$!yYXNp@0}6Si7>#{FByK@p z_Ss}Ijs6A62|MBgqXE-!>+`yTJ)z{swlt1qgL11(3L11ztQPeEAqbS8QsS*Q-{sOU z#a00CCgh_470=_oHtN!~o=6!AiNgA)C;5DEc6L4t;iZo3zaX7;rVfb!*zVrOt3_jq+04d$uDaA z;RYX;W5cl!3z5hmRFBx4`oYw4^`M%GnWyhi_nv8!MatW~0BtaJg2|`qnU`0p4KT~$ zt0tnVM{5qBghQvJN`obJRW(mx8l0%qRJ9-v5NcrP z&yKP(%g>IF%X0`4EKbYOtelnO^KpJ&mb3W@+e|iO*dMWwDmfiykl52AfsTMkgb0q~ z;o_)Ii6vA`KtV^O6RQW(4mXw8wGSdwV{@5?-%io>y@VE#uB)CDbkbUwj*+RmBIq#| zTtdN*z%=i`8Ed5qNdG9G&GNI^QE`?H#^up$I6gl)KR=ldXQTOPK08uJaPdb8%@=*>(#>u+2Cw{L($v@b=+VA4se6$isQI`x)a#-8WR2QtUbx@R8v_ zycr7A3L5grR*LrF!$D;@u`^ecKu2RHH|sU1S9U7Am#=-Mz~wEPw-eYDkCfz)D6r;& z6~LuAY6UzI!0d(Jogvf_y>Wx+Wl70fwqPZU%ttmMDa%gYHiohGrB?O!H5?Cb8w0)> zLu|EwpWUtZ5Yh|Lc;)+Yb+xeVt^{f^vjgN*u`-xpcGT`wTm;Wo?5D6-tU&RbGd``ni!4{Aj#9VU4q`;-0tq)uD1J)XX>!A zs)SdqbenbwKtKEqoF^_Idq$KHb z8s8&H{7FwNO=jzMiMqVbiuKpBc)7WPw3tD2MK`@4a^8N+OZJ#HAR$SQ)Al|H0>|(d zc#E^aXwK!Y*`}5%xK2LcKkIaHp5iQ#$X1|SE?q62bhAoq_Eg^V%`x1P@tB_ClrP}UZ z2vOe8#p<`~GJ+zqLtCW%T;j_>h-Q9$moL{4)wIZQ53?-4Eq1iW7}29G;=s3ISrk_} zyoiN&LNDi_9p5dM@W15ru5EuWguTP$&hNABE{QyUuX`c#5+2ti(MNV@i?qw#9X{lS znZ4bCYlkl%Xdl<#uw_y%wl5)`k(^b62D3%W$lqt1tMbGC2Fz-Ild0%W2dy349T~UBZnVfLDN z=9Rd{{ekLO`{0zxui7*C?$y_41uEQ=kiypmi`u}8W%pH@aZgXsCSNo<&ne->iFhq3 zUR1=$mdM0lJj8stTx5`djz5?>92~el?E&K(vG(A-hSy0gLWBG*oAvUox*LGR??Ql( z#{x1C$wNGFPV9!iE+9Mj8fxgZCG}VE=<4_Oz`cfh%@(0y6v~@&-ZDhc`Rze$l|0Nb z)-FJK`1p4?U|(YK#kMAnp1dvU0K6g+w;%0MdeP$ixnO(Ayliy}y*K=jTC6*+_6D8%m+ir8b-?jRu07J2@7Nx=FRLA9i*HL$$iz&xg}cnxw=Eh9 z8VMA4{i@Yei!5z#ez}EP=2c-cbzk^k?tLFbAG6){_rZkwGIde+eNe)+;P*iUiud~< z`c!W7effQGq00I`n3zX;kEqmz9&@!ZX`FDXVbdM8i_w`sjGY*r`OmkryT-@=7){vSZ&>jgr5pq#)bqoL@$j_g% zR}e-)zlMP1%XpaAEK&u};JPszLF}R`sWAmj8X?_awz?{(n4%n;PQkuIrq%sw_Z&ix zuAI`oDz`%QNyyVjxQ!9{;$=?gE-Xm)yl6Dgg*%SqfAV?_6xrV#YUiuTf(C3oF>V(L zz8;23W<=JK0A;}xB~HHx$s-MSy66H9t$Z)$0F$#@S--kzpiWA<(fV>p`HWLot)3lj0!I8y^zbpN)!|bt5TK9l8CjyhirNgrydr zOUpr_a)~&VPvZWqD5yeX3|R6xDO%%++&Gy%F&vb6=kq@-pGfRRI7 zmxnC?LJC@das{ni%DTDj&6pFw?M;sp=o8B45;Z%zv&$F_DsRW7ZwHwi<$n(CZAVB~ zn@JzQ@iSin)-0G9$;tfU^d;!4VwWPwWJirTp_hmP5CXXqU`pg=E&b~*GEt6=x z6bwMNpWi!FHxRr~1MczocM6L5mS_nrB z%qfsQeSHpy+TQ%w#&)~4`yCP}-_J=>Y7rUxNR_w2?xb8;ajN!ux#+;C>F3$6`^$xy zssQMdQ5^7}So2_I-@OnGM7>?kxN;da!xlhxZa9VDPsjzn*<^R(U;>L?@azr@EfiDR z!dllqMZr+VvF1&vqQm5MNK z&wRa_FRtL-=(PNHyUZ4==^FS|n;*?JD^~{>+N$c5{zM2w0+T7sRn-S}y}?h0<`Dg* zbF5?H>=Y7Vzu*ScIBXhxo28) zmt=1BvEQ^P;pCbH2^$VJLe3ZGPi*K?Mhtr6!DfNdSU;%>SgaBRk8pe!+MdD`2BMj&IhHhm*Hnjw}NtJt}dI07jH`&^+ z1JZ=hb56uP$jCz%vaRpDoNjCiE&ceMhKcJeQ3#P2JTyL&hrlU4*}3M>p6t_H!tx|t z-gj58uxNxPhf%k7G??^pL4s@U^k`I4uF{OsSABF}liLFb;C8Ah;;7pfnto}L6W4&8 z9R9l*8l5XHyax_n)zrh0$NGm%)TE0XlB9-$^k4IkSPs4Qp@B9~f{}MZG(K|{G`S+G zhuY-Es2-}EX|Web^$;7~C)I+=Vzy$yZd@*aj^&Wa3Vty>H#_I zu_La=+=VXcl06j2KmliP5h^|1$g*t~D=|7{Se{2$qbYc3LN^G!*U0L7L`C?E~euDq|2woSuvfzKY>T-$Y0Xgi~XOHC){&l@5 zprE_-eAu2$f8|jK>RpQq5oVA3lW{oz{18+OGX-C(0Zud3hTpA$!v!yP@S1f!pU&XX zPT|Jl0+>F@dn%<}AOS;p4r zV-3gPrPsDLhCp{?qiX8`b;sF(MP0p%d)LP+*goFD68Gwg_THxapFI>WDAXp?!=x%$ z@APO+A`|q=FX|jNM<*-{WUq{Zd7>>@kT>-ps@`u8!RQ;AIEQhZ$MSXkrsyhGDW_ zCKDB+$SRa=D|zU6+~;JnTxW$iS$X!Dhcj7_V1TW^`E>rzmp{K}sgqSa9Eaz&Huap* z=ZOIMZoPrj&=A~;WqG!x`tt|voLIE!g;w(LaJgC$ry`)TPKK4SNQ?Sp^QgBKagRxXki4tGmUiQKxU7yu zS3~a3fC}{roQ%+o?SlsiZTw#WS!VdS6Q=gxt*~4S>R-L7ivKEYy8>B+L0mNEu zEDBC7qDTl^MaL5>QckRz5Hs8L9_qhrMI@nM^pgFEy4B)bhQI#}qJ_UehNx|i9XDgV z@)mD&*nG0(ShG;75I5z&c!+Epz#zIB&Pc-)RU_Jspz7Pr`U!?fKmYRPmrCRL@{a9XsSfYNw@Rli2pg)F5%gFJQxa4xwrqA&9o~p<6&(M9 zB4kvD|M&8j4^HDQ9QA(aXBa!*$C~z|0SsAxTnxs=@N9NEI~^9MN9XzIEIT*S=W zlPnz|ic4zO>Hh@Ze8y8Z#{Vb(vY_llD~5%b_=MM3yK&%#@c-6;C}i{Oaf)$w#(=MZ z$|wkzHE}4KS&xT5ev*F1WuFI-8{Z?XQrnlK-Mk`Kt|{yuQvhpe8wS_#bR~3&rVn#L``v8f_o^-t)iys4&YL zBMui&jmly>{h$3B5-{jEFLC|G8*y=6{PKe>BFQuI^(06p7tUl-FLnuYu>xA6JXu#H zVjvJe$_j#$4~yq|LINE^h$SN7w5aE*55G?I@#SS-oGzIMn37VF{#0o|ml1VXAv>@; zuY-E&c`1#XgsmM4hYT@(;W_8_K@~Tdz|G~pauOp1Vw}ZD67)>LA|X2=mx@}Ua0T^{ zw?pN~SW?p4vK2Ey6{63KHk+4I?uJTH@B}7uvOV(h^YD63ha~!EfscG6SP5o=nTm@TxF{fW zh+i{kkibh!1eJzF4v0F+mOsG6ilDDo3B+qmnVg{xfJa7}kGJ2-{8O3lAq&kPWd|~p(MSAb!aPBA8=r7*056)yBY8dtv0tccd46Jf-5G57@av{} z;XlsK&*sD7aCTN64bP5d$Agp6;B-)o%3(Iok8~>I7!IqK!aZ>(tb%G#oXtRSwJk6E z1A?}%`U4H!8}Cq4f;HlrKLA1bnukb$x?vCCeENv|*nwp!xBfhV`*<{Bc@_CF0H1Rt zat0+zH&v*xas4)uTU=&JyW}Nde*EJj%Q50KDo=*3 zD{*Nl$d?X_)6(#HWDx-#@5o$g=Hj?LAQe9QNjh3J2yXWv>XZ&VUX^cv#rtOUW{Tr7 zwihIY;&ril87?hq4W%3z=ADu~CEd{gFjZUmA3@1mhgML&ZTHi}jW9Lmof=a}7*qA{ z7)Qz(<^1U$x9eNXCC^eXkT40ixkg5Yf@CdK>4~~o6L5zG+4f1+7WRB3?UiP7ka+9M zCFEh2#5}xpzJz3kIo!KiYu2Rk1^)xopCMX%zNv_FDG$2;1~xw*tK-Pmb~r@T9`X037g134lC`~^iP%V!ZpEIrw%alpZ%BppZo9o zj29k%#ZxHBb6FLW^@#u1B@E6@hK1QTT^I~WKYH7jeMTGpCyddChhJBzcF&bGhtofK zTTf?;RkpcP0YA14=cXOb>G*ucKhMxe1;BwTUk6N_t%QLX2VK}+n;(C-IfUNHL#Jnt zJ)A%}w2T)xssRMAC0K^CJ63XKmEke02y1&HfJ773tm^`byl|9WZeT!Iu_iw+xHGSV z!b8f!FfvayD}g8#GMvHA%8em~Dohx<@PdR%WB`yn2fBerR&M@)jF4MK zuI?Nd_w9Q5M>&PtwyRQvw(-@+rxaE*+v1zG+uOwo(!v4}$45_L-yitwd_)jXj`*_N zJ)t_un}m>NvSx-L>5|PBh<^2t8FOv8;%hQFNcGADAmwnFa&73A!4h%8L zf~#{;QB4jI_%mHGIWX$f5~>JCwK))Q30Kkq4=TS5tG}ERZoy>2l}U%(8_GSv-^>K4 zlwRkIyx^bsAADaTwV1z?XI>BxP4C)57H!KQ9_6SfY8*q zK9)3k44VRBhRSnjZ~p+u|9}^sK{_ayE6`<;B=sN~5kjFM;o5q+%*9s7gaO0$swwRekY zkU2?wmNo){lXH5TEjHUoZiMV1i&SI>n|(e%xA54K7`)F ziJx^SGJH-6pLZlH%oaz=f-{oRgF*?9t+VLi!enOFG-)<%_mIpCFUP^bg0llqPR2WI zE1yp36lD3(GXLg|8nFE7I`(j-ibF2%; z!R+G4DpqN3)L-^jcT}oky(-xChqrL0ZU;uiBLoA2VPDDel^UGc$xJ=0TG(?r0=1J? z*Z@T498%wXd8Bj$lU9+n5ta#-pOlA=@}v&Qly_hi&HWTLPy{29sex(w#FHs11(WI^ zQ`N#QBTTS1*b!t4kpybrDFUnnq*3X8b=No320)a|y_Sme(WdfIb2zc&9Z55^0=CsdW{I1Yw9PCceRoU_|Cz zy-!6DnI2cMYb~oLDRF5?Lgk5}b5))?fsGKF9DM;1FM}jFwoQ&(+fwu`5M(8>r1D_W z5~)pVOLuc}y`tofk7S%)lxc`dUrS?;Oj%2Jc1TaBJRvo$kAk>dk-B%1^=gt6vWhC! z4|w<+NgZb=B8U3(({Xk*8_&w46NnTlPmBCG%TLR4I6FN(&xSd>w~A!YABl%rBJ3fh zqli!Ir$@{zaF|kM(trTkssXJ!S65gR&7fBz0>enqBW=WkiewDKw*$7S9&t1D3F-9? z97@>64Q}M!hyKafAL_#bc#cH0gh4K* zXtTumOZ9Zq01Jnb5WaBplL}r^UWrRGo?l|qDejP_{5ng&3G%kS$u__LG}-Pp`+WE3 z_lp^C_%r-U(atJhF$@u);UE>N8`hJ;f%4V?uuyJp2U3d>g=iWn3fVeM6tY(=m*znd z-?x9d?^7X!U+)6EJBX~} zU-|9sCH~?iM4pF2V)UqqYMfFMYSduMAVVCSdkF#5b?OV7)G8xAQ#A6Q`PB}`tyC$S z1|6_}@B5(KMWhy9TfXh%kvQ{xUG2|E<}tS9r$>Cu^#p%-ufNLKKl-q?jF2=%Z4Y=V zvm3q~RFJ>JlFFFr{H|iPo!=!;m^?m^JvINC!SgoLQwyq1dRrOOKiG`j+jya{TN&S1 zE`!jMEk_8tgR4BW@FjO4K`GvJqso=n!%sQ+sLz~w#;t@)u?kz}3(NfsTGRbW^)Q@E z(2e4g#>Z? z3cQTnS3i(aQV3ZLziOM$ zfq4B6s^TuYks*-Px5(@>@8$yGXClVAA1)x61pHj5Is@d469&+Ao3XdFjT}V9s49|FL;eeG zM0IN`m7w~Wm~S{8wlGOKexiZFgOOKSfedCF(XE2!*qD24b^hLjU$MNQKKl3VOdU?8r3ve_&A$AVOu18 zNsA#MWv1eoPRFPSNyG$()K5|(EFBi1m)U)chsMLson`e%Lj>(FKqsaJF9<5(IEnyc z;H@yLa70dR_nM%b+Wrm?@hqs^IOumBHeEERZH6x-4}->fbFG6hLu}db4ehhX_)P|n zkfM>NAbt`|do4{`H2{(XPIaYYAZxqBnY$+pvbJkfBqRkTO*YkdND8L46vXL+EQai! zLevgkyhW=CjI5LMg-0m;D-0NughH@?v>gf~vImJV;IWNlAe z{Xl*BO|E{S-1xO`+zPMTzQsYI(wZys^^PhM81NLTd947O7NjnW^TWtnc0!7s^dt!#5(=cfoOwL>p;8 zYq8kzvgAx^EIiNUP%Ta7wNrg#bNWTb&XR0ea|}!CnvX?LDMKy?lNxRiOq4bl> zY=?pH5}z#N-B1WfF^z;$DTadUg7+zWPK-9?cA`I;XR~p3IvAWB4Tr@53OAn=$D_e) zemu;ef-`@NRm&Qodqd`e6i*d~Z84}$w$Y$k$g>`4H^??s)W#K?D!@#2HLrijmG`#b0gEkG@I+9Ui>%Ub=!xMMJfiMjv7%gFS0AtY2eK_F= zn)Vx!xRb2@(v6cQ9YX_;=cLHR;#`SvK+Y>`1(lU$vxtno&~fp`U*)(x9g4*{C;O*f zs@!{7tQNaPw$v%B0Y~-P9}(9>G?eUwh6`{az%;txMiOIaYr<8z-QlujoY&tx4=5Lqqf3#^?*p;jJKt~wvm^9D1}%FN$VE8=ySy?JJnwCxgF(X zNV27=*Lr|7miypUo=d#EHxk^t_eN;Y2%in1#H`x*i#s1(LbxtnsO4E6=sFi6<|fO< z9dn1}_Q7ckw34@1H7A!`m=EuvR?o!CycnOJ7x^H|GAJx_0%gNT=SSuFFwahl(=m^^ zi{Z{ZC9FN9MtOj_NrhVpq_3H~iSWVhny&)d2F?wWJI&k0QlB@&@sq4W+4^&B960Y* zu;HktonrH)lsMLj1yvQo$aZ|9563SeycyKc4SfQ?LBn> z$=6M?z_O_#GTdM4jDewp|9OO&oF|j_>pa^n)~m_npX*imd6TWS;EAtS9T?2deV`C; zAKv!`k@&|y`$%VB5z6i{!@L;hxZ#Fk8~G~RmT*1u@D}VM;P#m}<@cU1OfjviYUoNTT;`Q6-)6RHKwdFp3V7s~E1^I0B! zvOV4aOp9z+PIoXw@Bl?z@}PP2;eZq|Q07S{g(tRd-oQ9xZ0 z@zc#>wTJkH=eQK4hL@G(Ieh6vc$bKQF*r+gyCy{0#Q2u0i^JfHb65ResdFTsA<#^> zYrl$j^>yH*{Bm=}sw%wQY}T;w>PDI9RGlHNJvb8uH@k3MC`)XLJ0f1#<|#`nQf{!0 z8^2l2mwTvkW2qzFl&wy|a;yJzNjRd^-srfWm4i`!esXj&8lRWNpcstcz~XFtdXxdN<$nE|lqwAaM^A4pYzZ-5SM#hlZF6Nu;?w9#*W%+xT+?zLjpsGLrtq*h= zdlW^h%A&JyERHIDn5WcTA^Nv0IwoGmnaN7Wt1hG8YWgl~*v2m_Y+`C<73vhbG{a@v~l0fB)kO6-L zElQhz+Cw(B3GT$Ypsi$fBwg(O6C~YayLPsDwaWWeIQT&)hv6>1Slk|le?b4j`%UMW zS@6q5BRjV|8zm@+1BrJbB4@1BJyE1k*^#P5#L>Xg7gamUJVwUzvHX?xP)gLhw zzFbEH+&CfBXFo~>ePQOq(#EX{CXPVkSh)%U#_Fb=K}}S>ihl@#wTR;b#cpM$Ybdd_ zo=<1%J?wF$b&v+Reqh*g6WKqiBt=dfz0Op=vc|9=M6lX7G_}1;x(jMiUp>_*MlTnj z8s)doPhqsoyPB$?aKL19;;RLUzL_CbMV>dVb-^GX5R$(3NwyA^N?=P&c=x0qP8*pi+s|@Z-_#q;y>>v#32QvrWh$=piHj`6! zGWwb)%a)OF;)Ndm^Fte`;KU9#AndSjh1UXH#`la_)G)g&HxLlE_&1&h7{|DiDP-+s z8N#Pbj~ad`D90kI@X^{aD=?3vb=T&87#ud|0oh`_=EO_16_AFxx@3tr;Am zkp%EL<%}WU@i;$BO*wZ;NuFeC zFuQ}P7o_h?b%(@~SBveg+*DE5bNCTC;KK|_dDKmlC}1AxsJ_YKk<_6g zb-2@W#X7Qb)*hc06D*!AEm(xCMXxO$m#KbS&fMfN^AI=B*l6; z$4v?OpCC#CCrs zF19bLYWwiz1R@8wc(rR;A|J~Qi+ft-u$R7slk}H!@WtLOmhivrjj4s@9j3K^55=_a z9~HO<_ksi_=VpeEnGuy?_pMQ@DNVCX1Lyh%rfA!uLFWYak=ym^^BVWT zW!Aa^eU*WMY~M0wcW|3NnZVu*Ad8a;4lLfW8pY0xA+H|KOE!pM#Y&{0cdGGaBqbgIyp*XEqUNEl3lTChaFD(# zVwXl%?4TtJCVVG$FgO$*K^XCe=2emmO(AgNHJ)$CUs%CfCAuIg=+obce}PnD4HQrW zRJ=DxzF3NY8wwgE0gcrY~ra=oB0eCEEI+!N#E7QH#@+5dy9bTx*~!G)L&< zW)!yr*rhj0^EV>6Eyz^ZZ*__VC$FVUbXaO46tx6g8AjNzMiM*-Zm2Y=X4KIJX*9p|@x9-8j_Xi~YSk;H49$f1VI(KcbjlM7MuMA41nlG$M-)+#SX5MhdZJ-If& z4|0(?jivQaPZLw952jTO$SQFfA)TIVoB<>}-QRemLbp;lQ`tl1NZ`M^3}FDRxq1#E z{P^e~2AoWtoP7PDEkzdLJfo4KsL44R3B}=xjY%`6(1?>r>#cZ->_o=P8cbFKOtLNa zQJN`C?yJQVI}4yjhck_FmRki+yJU$(61o((CpjnC=MZ58lXeEM$&kAg8A$zFP39Ru zfqO*}kf|N5#fW{Zo5^fVKDF>`g61~Y&BU$t&QjP2%N~)TsNWF%t zZo`(MsX}H-;kjQcMWk;gWi810UiPB7@>6odSZ%r9a8PPD6Of?z;ZtAeLoHcnZa&Kf zXQ!vL;=DLN8jQ2q$v8jG2F3Y&o)3p5uk?|`=nqc=Z=a(?1rWe7IRL5gP&g9df%t;S ze#sfnP28b;)>fno;Wo|_W9rg{KpiMP#0n!en%yZ5fN#&u#8+cV7OMx-S zzNhBaxrg-bI-soRb9X3y_CI^bb82Sm!NmlT){^#MB#CSU6N6-&xS-Eg`Sp5Zy;+Uz z3eT(R`}Np!s=tbRUP+*MNyRZ)Kl(^-atBQ^k`Q$w39I0i9}J*)kqRVb zzrD9(Ug5?^ok%{2sl?{P6CN8YHvVwZY5naZfPf|^rVZc#fbe`|vx|sk32?|kknt>@ z6;~M~W*ZyK8$v>H!8rkT5CF+clmhO8&sVMPR%FAoY<60lAA`4-jgHRC)3Z@NJ{!+R z=O_8eh{fnd@h9#or1M*!XFXu4*>>N8#Pelf7kzH(+#Si0OYsMqbEY#Uv17&vsz|K_ zE4(oc5i$|WClbXW#27b8VSxyeENQUc4#6HF3Z?G5Bn(BAB@XfHBkM;lqle!&(ykc4 z(>$(*^fIyuZ7l5-w|7Pc^(xa*g=>j!m7hfTu0&}hU#T?xfgm{;v}-|NAq|~%n_u=Z zAw_kl7}b0wNf8lTIhLDsG8ez>%Kvpe7=goIHfwXDpRvRvun-Hkfll)SlLL^Z z)%@^c^;#W-7|kYNupmWCcFb%zI}Kq7|085305$rqIal|1{GV#Px4a;g4LfVAnL3KCQ^-8%><`A zLA%QitMaR=AVo>SnGd{MyxYdx6BAgjd7sktb`0uVL7sgU%8ZPqad|WLlRN*yc%`R8 z`=|nYywe#*mZlE9u%x700vD@Xz4Rm;?y-?0CQs1uBWElD#N&IuTduKI*~iTSAJ}(5 z6TIsqMVLMDW1kbnmcLEs3;RzfPKHgNvtKdrnNL`iAX3KN*u5%1mV&4Mmym#Ak#jc?p`Sf_JUoJEtB2p7LjG+=S|4Ayjt2Zq!WlkE00PBpTo3h7VpDVV z`Pt(Sn6n`mg_E?72@DY$I0QHewkBeG$HK>Zk z)nYfjDpwqvGRBjMSmdtM!$036rI1`3RN+_1+x6VWqGW*LK?5BAS8QfTzB)UZ-t3H0NHX0~cHEJ%&JOHG7h!R%8a0p^xRj-`OZ{voU#BfO_r zPi5GlcsOo{VuTZ>_)qk*OGV#L1LIDI*N|$jEIzKkLh{VcE`is5PGz5wNvc(o5743| z6l!ICrnlIK6)Bi4RvElwQVxfhSKQrk#$ zPeqAH^Eai+n*G=XuSQmzGzu!tvto9hkD#RDad~!pax%}xgR|NB@bqMSlxK4`l+_$N zhsxr+mQZ}EvC%~nWnpOkZ#QVRx$88$mc1L*${dPX~X@|dL@cxM9rI? zhGrGNJ{*vz!Zn0>9x$K(SZo(Nb$h^XPHm;7EQ@DF@Dx&N$wN`ZGK2CkQWK#*lE3*C zWp4|S)jOtHS8z;JGmp^&b2_Ngd=K$G?1Soqfv;_?T88x(CxWY^B)W|*wX`7R3GF?@ z#9r*;p&!oA8u?mkc7{1FSuOc`O~uS(gdms!EEaz(AXoNub~hak24Ru{Oocm2TU+dx z>v}XjxUGO|Rj~AM9`O5A*lFxrOCiy_+&(DV zQp0<8GrhfuX*1p5=2*NhxDGwD18nv3k5ZfIra-C&KMbk2UoE~xx&vZJ*>r{liBv@QaCQMo(7uK&v8Zm8b zn-n#5dq@Im%(&LB!HMg|tN8hpN#=`-U+_+NJ};qoL+>k;kSf8X zLXk>#st+Qvn9^BBte*i$k2`Yf+j1o;P*qw~fpdq^ZRpbT+`Ohy_tqv8pfYEIg(<`0 zc3JZRPT)ZXkj>%Z@Ool32zS8p+Z=E8Hp&8H(#Nr=Kvxt$+&e)gA14f6 z0wPIlz8EA@6U5p+7;VW(VSMMX+>v6zmu4$2FXNX-_}@R5H|xz^ha~oMpHZX)#t9_k z#pk@{K`b0LZL#W$SUtLdSB?S&UwAwx3JCxTU*dh`6z)#*3^Lk7$Y64q&=Y~ekV3ixR zG5F{U0GAuBq%>f5Gzd1Dq|i9&n}~1<-I5)GiV0=hXFuJwgN|pitpFp0>(oM z4ANE?>(#A#>=n1Vx6vO2+$T5&z&VExg=cjOn^Zd`wQj}vv{kMCYQr#Iu-P3dT$_?H zn@S5@=^)st${StyhmVdx1v%ok=Rgn=>$7U&^X-1Obq+|x7g#rXGT721u?(QmP_>p zyS5o0aesRz$okK9U@T=ogJa==b1?dvYIbE%ZRpIUl^)~IeMS~U7s*RH zhgO;~mE@UaCaBEts5)c>Q8$>; zX`T#rG>KMLawAs~*MYuvl^jRV{OKbc-M^RLiv7)PM~pn~g8ts;B&iiDNUWL4vK1Pt zCsK(qQ;5+T2CF?jiOnMf{Q9O`E^c5MbxBpd=}V%NFcg`zI82rG^3&hmb!c2)_CNLi z)_=#t)==U|UziL2Fh;zU>i{d}Q~Fo^{bC9G9yT%-p~9z!60)l+Bl6#B15?ua+w$1m zp4?R1?IBM!3)>cU-2S*_sbID{$bfZ2Hei?QB}{ka3{yBbm_k(lA^`ynnd@m&wA}D_ zwvLDQ?6K|f$!B}wshM~?M3IK~Yy5$Y1CrQXyY%3=;I^FGgVg?uRSsg^mQyGox5E*p z$P)t~vRyeSd|b;1z5%wk>}8H}A6@CWe{;_Hi=Y5he3ZBqw5q+XEw!R_xMmu*GK&$C z7-|n7Y!RGMj2QpSg?h|zv&1&Auh!q5eC~q(@v6W6HX3~Hi#UBw*JLtVe-k5RXaQ-V ze_bz%r;o5{H{1@+gW+;;(!kx2?7(R+Fl5oscW`{Be9SgmsLu?Kx4!Ko8Et(| zoT0Eyn)z83!Hd+?W@AHLPw;`QSa{DK^NpAlsLT>#R^h_=U{*|-{+uqLwz&ONR=i?n zt4yBSJh5ai_E~BPTI4~Y&h-YMv*dRqCHxhvu7Hp7G?>Q|6bsU_XoHD-5$m%F$ce_mQdgK?Q+|25{iXGP4CZlxA#P} zD$UI=yjmBEg8u=O>-|B0RbDMtt%LsvSDdWcG)|b-p?@f^pr~@8>Sb>)R(uMzj_K!e zcfBs|XV$;R=K>%0H#2y2(Ts4Zeb|n-8Hm8rx!AruSgjF@9Yzg2<<+ibp+X^e7JdMU zX8G~s%Q+m6!QC+YZ+oJ#u)JGrw!8P)c6a}%Uas!$1qsaW%_0Xo^!g5*YzW?117%l5g}|CeovdR{Hti`8$}WsADU!txRd#$UA$9G*j$#mmhVtBu{dfL7oi z=GSOwUxRzlKKK#wl6 z|78y<<2}^=UIMcF!BQ4)zvboaZn18ChF)H0z{dT}QRSBW22UyYrDEGMvQS*Cin8^& zq%d%g`}MlqSC?GElD-0Vx%}c}s1}lpqXI>M21O>f%-j54JT` z=HUxp%7)!#r_QkE=nq00EY=&8o%H_GCK9rVwyj#QH;Bv~D1XV`XfUD{>LFG(s&ZwB zpk^|x*6j`9cxuWHjv$wi^EIY&ZxCj>2Cb>y8^mUEkW#-l8fZ!d-)Nw6g4NaVjRq(O zPXLz2T;6q~iPMFKqoI21_(ntUR`QL85US-X*+V@O<^OjffJn#u%F?c*(^)>s=UF}< zX6NU_;ru)s%?8KCyeQ^_^OF-6#FEadQBe}Mr~Bnny+uoq7hT>pIC^GPStDpU8Yy^S z2Qk~L1VBflM%{H7?%G1H(V~kf^%@3tFf*QVuR*MKfwy4OgXt4m&((I{akwK3zXru% ztrvV4j!#J?PkeLo=r8;2<}a9$efgKyAFB!T_$$QYQ81(LF&c|;*LHoNGF^+rU`KlT?62tlNT&LYKanX_1CkI0P& zGMpv{eW-7QG%oZy;j)G>k$`Q#>n6Dp=&gGpe_9^|N*DFo#V zrNr)$U+wH{1QidnFl&bB?5s=itFyA0nn@^~$5(ICN*Wgt>xOeXPMho<07RR|~RVv03wvY3<4h zKGDR0X?Wmx30;X%sp)NA(^^f#zF7j(J?Dy+#6sTCS}nP3JRu}ROH)MYx3dJm)NzTt znI$lpqzCS0t)6_iYOZCi9)}22UKZk686EmSpfcHt3WFhFfW}FgdPwJ8I0S}3BBiL` zS5gq5(?uff!nTeEIA#ipss2A;=~#JBfBKd*SQiNB}ZpU!!RxZ}J+? z!=#I1izBHYF$^~%xk44@O6PQfeo7@i9fNXL% zTmw?hr`Vg}8gO#JlJ13TVAkFW*YvNw6Rzp+#E1ps-)ca`MZeVmiHv=#f#Pt*wieoj zPBA&Cgkij8NS}EB-bBSh-WeHlD~-bax=9+L6=(Z>koz6c+C!6+;R!mU3e)|{IohXF zXFGD0-7j4S7(*qwbaUt(c(u{D)~@(9(dLGRUE#T3>Bf$_AV)f(o&bAGCWpB4%?Dk{ z4aYpm34u7*hkuqrL;{s(XM@wDaxgm@<;UZ}$@ytHI~yLIoE{I#;b~SI2}BHv8D0<( z2Sh=Dsh%X=AD)^>d(km56mBbuiF-u{xSfZv@n8Qf5l8N74isBd7!xJ31M${G{SX-G zm>;6yfs`f0`w+-++i}SFC&v0v6d04a=ZW-*np<7aULtz&pqL*IXUt8EW|2@yF{+jnR}~hmUZ~FWlA>D514OAu;?p@5FG(w5T{C}0~$?N}k(l78>4g*3V zmu=536B7?aw0zpTUEfaXIc+A}TPW1^ydJoWsi<#>YqkN8yh;J)ui8$py^NCcC{rpr11i0BNnHeuK;RPJi~Gi>9l|H0A~>_xDN^m<>5`Bi219TqmZ@gLw~U} zvr|zc#fO@0dY%{|f8vlym#2)JFg4OM@R)O(#>UlM0z?r65fN?TmxSCa2Bv_?L`sy1 zAE^mZFcB4j5eHF#f~Ycep zI`YwvLdwr~m}kZ$`k|P-HY9@rZl@umT2v>`HWU%*2hm{N$w^U7pW{d43d)~5Ck}?x zOx0+}xc*V00A5fHgjS7&^g_3koQ$gzLU)~JTqg2x(ho4vG}VMb`tg{fED3MX9C_mb z<0$fm1IBfC;^t(WQUgO64hD>)rY06J4v51NW5o#tj01$q2L?J62^a_H8j6d9Wexh- zNyb43`jNiJ{rU(Rd96`TCPZ$VV>Q6T?>?$gNLij|kcjAbJ}MyqDIXo3=SQcrY&I_D zr>7@p{AwVPQR`&Pn~cam8&Ovtf|5RriyfsyaMy=F1-LfE=1HaG?|hKNs^@p#MOMZE zW*k2I((t~7;W-sKg%%4;^lz?3|JRV`CoJ#jSvHOJsupUX8M2Dr|zYxBZt z@d^qlPbM26c)H4NN+?8%)fiy)Sgk~PQcL7&CFz;NJGVrq$$h;Ns3kXsC5CdU_+fdP zqL)J}6o?EJm!M}L-O#@=D#bj)pF%z+rU|D|UXLZygZwYL>14`CrawkA!fym>*&#^9 zI<`>3Zr6j1QTx^JtM%6vCobgK6ZjK*5e*0=>mpP-fD?cnsC>+J-O zz`&rXYM}i!9AaKIRQ;+beb+Vr=lEqtxo6Zc(v-gH zS4W%4X)~3dhN?}4AB~xs?%h%MiVcFyj%a&DVvMp^jj4GbtLqhz1XZv5)N6X(R;$z+ zMX$RA^}I+eoUZ0I{D@6o3s{0&upR81a^A#VB{9+tq98ACSNogq!AdK5f}Ffx%)SRB zZJ-JA@$ zwcBr2-o3ZOnCYH)9Wkem$K`QaQN}6KDRUvExn@r9IBHEfG;`CMqixe=YeWULY`WvV zIV=&xcEpKu2#s;&oG#RwiFN24Pzi3G+q2%eb9-p*UE|`p9fL-UtKMgi#ZLa^<>$#n z0e~Cs-DbUf`|TFuakp?W|LbDA*sV8B{3!*LW9$W~Vn#KIq&N*^+>uHlKKL)u0jc1>rf2Y>QLZgF%N-&TqKwE|MY@Zmk&^g3G= z%W~sK^_G=xg?;GXc}pW$tsxbRHz)~vyV+V4s315OC2W0@SzWAFY_dC1&Go6;x{DaAq%kYXIVAfMhoEv^ za6nDu;()>dz>(lb4UjxUv7rwjphk1Fj9S|4vlU0__bL)P`)Gg2?sgyUkc~kT z=2%nf&lqJuOtyxn#vjTnuo(p$(ie*zI7Qow6%UT9onrhW+RJ^@CW94m6EvCq`W!>BiY{=VAY)Li!ZK?IFr^Ehrl z!WFki`0RiiBx45$`&998FR*>{gVy4(>}}k8Aum{BsWddjKbO1fb%EQrZ5NF%z6zJm zkbj2QC8RYRL~bx-8Vj$PHQIZOktG*(qp-_^B<|>EdK8=5?_N zUlY~9G#G%0$<@#pyw5gQ<%j*vtlV_o8oY<36hLgBQ|sM>nJk&Q(Q6OP4jy%DHlbEQ zq(!j6q?rV>YXp%dzWC;WXi}U2bH2%PJW6Z}Dkehz z3Z)^RKQUO;aut`7LX^)Q+keN;19+7Iwl-hG%~V57TwW1I;IKq%_zXav0Rau8;e$#z(~Oz%|`=2X6=eR~!;z+DJ}q_?XaQ%G7RN#clQQ z*jua30czZalcvqBzA60m-mPdE=zQqnfYDcz+7MU?t!0JG)k62@1 z0ZP~<+WqQHgWW!QpJ;ar8j6?jJn?GP#8%iyG;Iw`h6Re4Z>jG6$8rNXK5w#B4rcxm zD%`%DL$={}i)Ghx4vWX~{Sqn>91n`))1&NobUHpen-AuL>~wrIognq1P+MyK)NK=j@FML@2u2G1rj!!xPOBueVu#wIh+2FduuCEK2$CP#K845) z+Nn@SYQ5Fks}R5#yA|vouwTJ`+E)0^JA>V;_RM~xi18BQy?u&42tTZU4JUF*Rx-$f zmOzTN41pw8!9iB@-D0!dz0bD0uA9#6bZ|N@M)P@Do@b-;Ar#A)kIQ^^GB5Iz;+%-H zx5P;CX->IC-8#d{HPq}HG5i{L(`_zm}I+S z(0bWTsYRY-h8=KC46qF%fp}9uhZx<%2x#BXHl~MKaa}X6Hgg2UoieL7webek?nkY% zG*fEBOE#iT_gM4kbklYs%5XZp@6lvBm^7V@?U@acn5C(f41!0Y($N+Q<=o}V^-Z>0 z@rK3j>U_X+a=KESRE7v}-LB(TZ(rk0xpzcEG*`86;?aXbTsl zH)!L6J*kyfYvqCvW9(cQK)}+4J8B!^vvuMAL2H-#k|B%=6RjYh({fczA$=X#76{5z z`A|4A_2+xhz!Q=hMx~{aVp)SQiS?0cTi-8MkTdklwp>Cs7`RvE4+<|xH)-(h##+U~C2W)Au zpEepkQyT0Zw4|uwovlO&7;L|6^WeEN4Z(;hP>N(32g3S6dqRzzAPrikDTX)%l2}&< z*S9v%=dsl}dTTsfxL z659j?K~q{~{16KoEfpr|_U&aferic{%{q#K@7{9-VvfbzLcx_48Xx&|fx;W{fPv~3 zYw$R=#$&H2J12To&6~1kEMMnkzP|N^_E1Du;Sq+&&Na?ZkafT*1TB~z@1$*LaaQ|n zS-jj_?QhCeM@wQDCWlko7vy?vj>S}z(Xo1X6uQ;s0JCGmN!!a=ePie}xo>89nxSmd z_9Ro#ZR=yPLy+2$J()#jjQz1XQ0pUh4`u;M*n8Ri>P?W{UMuGs8)SD28jX*eb^d+< z&j_+5X*WVSu7v@yvCS87P`PKnO(CNQ)7o1%Ww@~Y+6IOUlnp<~4J+``4j(~0aO`?t zSdtwCTReJ>G}t>@pon$f)PiryEWgfX%kniuGIxI0xYFeIfnL82*X^L0X~w)eM*}oU zg5EpYjVLu0xqEZ~CE9U|yC_mk5j3>q4Ux8L%hPF~mP&W_lFl^f>~7MgGs>P@Lq)BW zXoGG+O0np6#|V>dchLH}&ZgV_s^-Zy9Pc3AiY}HAJ_&UMUj<#e$+WR0Ju8t;L>+r3 z4cnVvZoy+&6}A!nzEu30Z5|T+$82}~koZ5qrL@|XKO`Y=H1Lq~ne{ z&E!RY^{$U3`&?_6HPf;5`POb9+GBNFQ9eVQcU^&$X$v7V`2#85(L&obJ!o8LD>E2sGN^Sr}Jz$V*k#@*~wsBoSq%c0tS&_(KH7E zvq<#xnj4}mwcMjkBn2YzpH5)7}tq>jpiY4r&Q?%#0gM5!80cf*X`Z8*ifz zwR)25wgD^EWSd-HE!ZT1Y>Xr+%uk@g1nLfn{|7`csx^#0ro@&8p1;AAlV zQ}F^0jGtNaJW{Xp(vUoRjMXL@qSCUrC~XFfSYd~m)c+-Mm&&5Ptc$#q6G}2>nvgns zD*J?Ik!(fjgEVWZAT=_kvUeP{rW_73r47*DgCR|$f?776Goz9vg4k|ZQAucm5tUu2 zHIryVC8%^0s(MCSP}M^#@i+sjItJ~hG-megZrsLD-^~*{&t_Xf1El7+xzUm`Am(#3 zoAs$Ip!^RMR`_kPyXGph;~T+GeMNE~Y3|SdRpvY2UXb9=)Y?AlMRcQ00@09Kk8w7P z0+wXP2msM!n__8X%nnB0qDec17HVyE#;_5L5%hM$wh^>Om^Y#qwW1;|904uf$WfhZ z?HtuftNyU5qxuG|U2Z#8$LlWijT8%*3cy?1x<6DZtMtn#2jzI z-d!NK|GUf`gaHA~QPz%eXKM8*W5;De2H9KV!rD;_vw^AOu$o)CB$`c$9B${*QQw!9 zOQM8YPu;X}d~S3#{=T{-QY{?kulc)ff`aJB-9+Cs^Tvpee&$V}yLaQpDQwBMabTPB zcD>oTx1H)V6-~0N(JBul#qjdt>=7QhE7t>UC<8|=`9?9cY8ZLd*VpTElS6*BF51z4 zF)Q*@$Rh^%#ZFF+i<8rGem*}d#`Cj0n~%@EdBr?Dnzp0XnmXbMn^e1T3wG53*vz=v zKx!tg-Pjb>VP@8bn@+@i7~BJBqSj&eOs~x#L378pm^QsBM%eC2t-RE&rVX*dcGCe6 zZK_bAlf7Lq`(uBN##BGVN-@!jfFog@-& z4VA%_C%%IVFTNTNp)^$zL;T7mub*dlrS2n%3R1SaMW5yG0ZP#@Hmu%K_U# zi7kE;D0|eK8QD^+&KkQSI|L0$(=$v7TvO9PkqaQy6mPUSg0gZsq}*bZY&)*LKZ53F z#P%`VXY1497E7k0^C@zx1MRO{O`5B88%&a3x4K3UX)@kO!#6_MqOMQHPc4bgXnl(r zg3@m6PAn=T^uN`fS{0Ey5erWI{=@E8YYyz@S__A5g59fX7(y3KcHa!O7Nq#!ZSLUS z>W^%>D1LhWS>SsTAD8oK_hI64{>qvP2i&u8=D@$hU0MSA9=@@#xQ9~9?4 zdq=Zq>VKc%qkGcEg>FkN`ncVV2VRm*q+z7cZ%V0=m28QG7VYNY6j6(>GnSNQk07}l zCY2^P!nV>Ksr43VWNCo$*4ER%*6e!vX;Trlzn<<@Lu|aXQ!T9R69A3KJAx~K9Z+EPqdI4Rx|6U`p432O5`xB*bMc3Si@vWsP)u6 zE2!8a$nBT~RHUX@Kh=p^N2!)i0c&9Obl-T3r~4#ZJKZ&C>0W2svcZcxWkEC=zFoxY ztU#nlOUUF{61Me8<(f=A^27Icu^KFZp@JaFdTT)i$KzuD-A1D=R6%~etgs^AcjKu| zbb84h;9;p@C)8^*@9OW__WI5KcDaBmk7eQ+OT$z&som4v883l)o(n&O?YNQw!9%5GR9 zMPY;mQf;Z(9%*?LjChNqyVP15-Bhd5u!Ye*f|jLWz>tD2C1z}wS@u|ECpZHC{#ZeZ zseH@dgXn!Ydrqk~;mPH1HSVB{e!E^Qo1A1Q@Pv>Wo!2XXF|uM*8y64KU^j3eG~S?` zzO3LX;vn!52R#f)+idAYmF}A;;Sj3u0G~wHPWfNqnLsAN+YKDYz~iN$f1=qk4S3K? z(Om*Afo>!hTl(Icjido6-EYyIqewMH(AvcEMhC5`Bm5tuU(j;tc1_Nc9lb&1J2LDQP~Chd?_iPxsGTpo zBbjd3dx%BW4}UaDNaVzJ`aB2$Hub_~5`PO%DoS@96eZyDQGIW4h~->u_nWR)dF1=~ zw|z!y*kZCKrl|;9OU^y{?uUz=HIP%Msg>kF8d%6U@=SIQu#5@FTDORCxC!gh>zF0v zLtR~>U9y6V#%K%3Icoke$XG|ImX8w}Y4v#HG>gak)L6T`yxoDP-aIX?C4q1Ga$l6i zU&S%9GA@>_2^keW9@QDv%m}gF{v;`P}>cYQlT`$uvGd`t0!`E zRe=?6WU5_jO-;2+tih@F44R#WN6l3%nm)_I$SX==e;xlZal_ii)&K1hja&M0KvUOjIYW`@_e7 zRNwosP81$ZW4e7J;1RR3nT2|l6>k;0L#yUSh)*)Z2|(TlJRI3ogo{`g?~gtG}1F16~X3 z?@U=*029B)n?@dZNg}4*q2}n-GF$x)IaA9{=B?`=7sp2@qhT@2vvHOmozBnCk0Gn~ zFrS?b^Wo8~-W+KLO_f`3je0oN_5C6j873}_9_k%kaYxhb0i%~50Y_hOEkP(v-V z4w@s)8bNT^%#kKG$sFl!)Y?imM;crcb7b^RFh@qObaP~Mrp!^wF3GVf24qc^wLPl4 zrt$(Lrejkxg_h}kxw_h2cQrPGNdb3DkU$4$?K5KiW=S(-s$9Q0((Qf9T(_W>NUZrW zpd^|d-LsxTljnwJCK+9;W+eqXwG29BMl>q~p`siH8eJ20uK^L$CPK~Q3u%#uRR(!i;v1hn?SQstIXgy!%RVbs zF&Z8BXY={lc%BVUPln?%ADxWPhNpv*@qBQapPUXxL#Fj(`1|4M(-*AWKb}4Q^(j+| zlgNIcVe#sfJ@dt?;7NQHuqOycJmRmLA0R({ z27M6v=@N`~wwZ48Z1o_dU?$^5xt(qo|1KvmHpfTJ2Is2W34t;oKeG80FV1F2c^c-M zYzH?B+n=7NjiA0`5N~c93?xj)={3w7HFRGN5aEH`aMW#ZHDBx?w>6e!UF2|a!U6wy z=fzM=*MFLKpM=o|N8I03eaA=^@GYj z(i+zN?Y4xvgIwhX5r0nwdIRMS*Ev%-puFUy`nXnx8V<+)wt%R4LVpK@^z5-* zONlfdWNo&#YJT=OO;5_CyA7tSG%oY~a{1Gwxtf)5@(k`R7rVPdRFTkX2OGSs5FW%7 zs=0tZ$~Wu@1%oS8rqsoO8F7Gc;So97Z0>V67@SS{@QbKe?`O+WS{gnkjTy=zNOuoQ zQjYNK4)!P@BB>rgxi|DYg}M=dB|NEaa7~{z)FP5rfx#iSsWT>r_8tf>)=)MNf}vRu zNAt;-Ljd(gj#P6nsM>%@=~p~^EDU(#IrLxut+yBU;pQim`uT?go&OTtRb^0tQuVl) zFxpb_%ej`Ix}SDp7yGf#jq+%~_OmBv{qga9a9$Lr<7|F9JQ)pU#r(85I?o4Z$0z5< z1701s0l%;*d-_85`;5CCSQdr(Q@Am|z%zY38#AE57(B*4^PUX^i%;C| z#tlVFYJrY5lCBmT?qC09?OA)4)Y7!UZ#j6>Rk>AGW>!{K)#FE_rhYUST@Fq!FPi4$ z@#XkY1D4aI{^%(eo}W|Ac_Q#=)Jz+=&sa~_0=cP_q6JWFw}>?lDHtw8DA&;nWp<4! zlAfx$VA*VllmzYZrTx3f4ZINX(|ie8sSYHO-&H^l+a3I=;w14DF{V)rk;-tW+3D z4X9*){om?s^{RSVNm;_Lc%M~s;4mc8>p8CVH6$@GNd7$^*z*+=Vz2k6S#73k7&^a+ zC1nKd$@MExSh%?F$7VHLP8RDq43yu!7{h8^FTt3|yAC8kQGE?*D(*H3bc!o_`jD`n ztUfYmxQbg<2*jzC_y~v$27d96g$L+ms?My_J@K^PgS#x70nxdbIi1=s;%^Vae$gpE zsCssKati;gwvmjdh;YK)!aZ+ehy(SwR*B5uR|E;E8yk7E49|AtSx?l;+4VtR%wS-| zDu0O@!g|Z{Gw73np%z|b4hvF}L4+oO5d4gJGP@4E>C>L@u%P4#4aERLxl4pKmZn5a zb`X?G<^^_~f(S6->0PE^ce+$k`!7MzN>1SD`1exXOebc8DD8YfOYR#< zx@P;U)YdlROiQjJ5(?!K$eki!M!B&pRZ>mLRIOcttCk?Jf*GF6iw5CiVvBO2S!hN1 z&nz^h7}=a>7LpngTAnitE}q-Wc8%vVvt6AnNMXxOfJ8Lu%rc@(XmS7Cu4*Y8JiaTY zf|Ae8Qo?h%ycKwQD@-eP>SK|sl_*87c1MUXNUHKg(YS|b#1y#LJCu7wxrO_*+-8X( z{q{ZVO0T~Cb26Py>Kmy3n0@&6AHy2{t$!;noP%Q9fUrg+a>E zhM_>Tww;J#x%MEM?XjeD>Oo}Dy@YUUJQlJ1a!(zaS-JW>{D~ZVZ2z7 zk-Ts`Zy@t1w{K@+xv1yWN~NP%YU)kJ6F-rBl%2bYC8X?Dpei}>;8lIR?c2@GO}+eF z2G7nKp`4f^QYLnwv_d3=0!@Bx)-}}V)TuU-xKzTcfd2Ko|8Ka~3^Hop$XqARB?U-S z>8UR086)-lSnFGL{P<+d_82bC&Q2cqsPtZ!-w^8Bm9|_2#+)POtj;> zvdy18VlSpLGy!V(SS6JsiED@w{}yl+Xakf_q#BCn4rWvjJ zay@;IEOHZx7mu)98|$vkvJKm{}%-Xe9v(qAhXgJl9!#aS*iRqdEf&BlE=77*KXv~CgO3qf6CY*dtZ`^Hd5 zaB9zA?p`}X^R^Okd1hoJU(en&<7U~+hEUuvV-Z|b`brR~5t40=V27CHEmwRJub{AW zGh0iuU{Z%!R7aE5Y6C}@w(VXt-tS)h_)1579iE8qpi<#S`2X2j1&g8B;98A>v&d?J zXP#eOP}DzIov;nMYa*^Dep?*<;# z<1t)K+KfQqM~zwoh@}j=*6x=%yiE@m?LiJ)7{6V3+XAnw#a2Z?>fct#35puFKl(TD zuwMP4d2)}{A4!HE++}|N-mCd^zGO!xdg6uwDHl}D?VFn1fLN4(A^EtufrFf)BI@m; z2I(g}PZ4m?sCudyv{n>y8S5M~k-t9e#rV!^;E_y{H?RQWn`5)_xn{N(>SNgK zAprc?)KCaU7RnL7K0?~}n|cw(&9}(p*r76gM;?Mwz8p)>ZGn_=tR`0us2=5?ude!V zyd55m>91=z*>Z9m2pN8;SBP=y(Rt>a~>7W4|lkY>wp%Eg|IPI%2+Hn`u6FoIg4m?g6Yj>21Nma z0jQ-Ge|2d^|EA(J8J-lCLSdwL33H{_8-g!9#7@6^@^2LOc#8)KWVxBCT!0jpiw0V# zcUC1>5tu?iZUwPABI@;=JwCt<>!lb4VjF^qrGcmQ`Xluef^*?FLnp#M{st^_^uJA3 z6DagxkS$6?pa{Rpnu;q?Q37E>o8|CANxuJCq&2n(=4VZS)Cp$C}h`_XDMgnK?#^4O0X!=B!e z(&1ZFvfjN51@F%*wPh*()g|uoCZrJAdZSQG7_}K9cHe9UVJreaYXEruNH99lUj~R3 z$og5YB<}IFUauRNdKeRnmXf`K`#=_i2nV-s0`U$HquAVwbs|SQOghTJ!-(Sp!ItQ( zygrtQz4a45dRh+2+Wo-j)P}8`WiX;ywvPNw3=EOP87iK#n7Jd2*o)wu z|E^-T_5An+7=YQF1*P)8#Nn0z(a&DYHaAf22TSsM@9x9Y2O9qLrWtOQD|l!Lq44^@na>UByt>gQegzL( zz&#>idDuMdXMY<_mbu=L%9EAM(3Ry^Rh;w| zDsY<{$cVEErSu5`4`z#OEdPefA)eUzX_F|HnNu;H#UJXU`nOBgNQEEhupRnOY?>mx zJiBH$nJ62@L}LagDFnZxwg^&&aFmyaqa@7D&0_sop8+rE$Vl$5_;r;lmx8axG~K@A zaO2`1tKs0`@!)v;2>#y~E(|>$HRl&+r|^F-1}7(vPsd_C$-@RQPWCMQqDpV#cB%FyOW~^=@a&TMOCE8f_wfb)7tFt@T;&e!3+A*7(XW@7sfNcF zXXo%j(%Es-95<&!xYeybJ3l>!%GNS`ah0Y1f?51pEmv$e;R_yW ze~08tX4bY@>M+|EpY^%(<#X7b#G~1{8V|;U(b?em{NiCfXf7U~U5?I&&ErQ8PvOy` z$3yvi>X*Jw(+hH*ag>|(U$BwUDW@-(M?Iz}xu`E2|AP7cy2chx`P*X&f8hnl*AWSS z@xIecW`3>0-$O17$!tNW6{?y8f9W->8S>OU7GJOcAoC(iGQOhe9lJZ^3m)gM%VFp5 zYx#SqzYx3a#b(Ms@eJzUk=YmKrUQ}L-vbVn$~`#W{RP$bnz+oH-+W&4BI3U%_m@Ap z{~qnHXJ&`a0Q^12zx+A=_qdxAM_<}(w+=Iy>+kOUz5e<_)?cCG(!WPHaCT0`=YN69 z9us||`#Cc+_Nh4MB@a#p%-C0vfwIhi=a7cfgDPJ>Xy9{I-^S_N5tLeo2kR zJbQ6d-huW7XMn&ueKi$R*6^Z-gB~yuz+FFJvh`hAUzXoiqpS|Dez}}>>-e}lG*X>D ze*E}s_;B#J9z8lf9*|klBtG7;zbT2zTfaJZH$S_l zpCzz#q+h`$`GE`j9Ztl3AZcdpuWH_kdZ^pK^2J>BA|5GVg1D;Wfut7|drKf728#=E z4YRnJJZ6OiyYB7r78rC7hkN(9EkYD3byI#qY`<3QC53?S4E-s|nO0zdVgg9WEYazP z5!S%t8EVY<;{rC0U|7{nalfhb3lwMu2LvDDDKvva?Hr4yG#7*>0*;Q_G(DBIaZ62S z%}q)%eb!x7^I9a-)Ydvp0C&tCm8lVBbc)-2q@-!L^rpJ~IUz@P44jUnDUaW1>8R}A zRE$V9%|p6u1u4PVZLulKoB87!d}EG=TUUkr zl`Y*M*eZz$m3!?*rm;4Q`J%TItk#FfwJt)%|6&H_FFELRs|Ve_JijE1X+=i}k=*~4aBKfZiekL&aC;N)!FJbK)W z2j}MlyCiKl{!#KC;$i$=?QU?vCA2d@h`?CwQuiqB^}-c6-J=xm{aVzafIj^DUPjn^ zTiC*F+meJ`mk}=BfZGia)?0#V23dQigANG3F14D^Si3V8^mlI>TSiJ zAy!*+>|eAYmEZ&CTOZtIn;TDiiRLh5iLWSkB=<`cNWN<#k~5HP?Ly?EvVbf>dM=_G zL!Vxs;yfKET;(m;AG#IdTj$IYts%mOuPTa8G*pM{2u)KN8-_u8B^bW|mq)SeNrJX~ zCL__At@`1!O^uavnAWSc-$bVO?jMEj<6!_*+{ba>{uZ1GuaTNz8j){zLSQMqNaI*I zn(h?~4b#1Fmnn!7F-`FT4W5AIqxpUP-5H7Ha>lCHgA5U@Sa7B6?iU(auvLEY=Uoo|-I zraKySe*C;*l!;h^6K6R^n`|NTdrV_y&7W$%1sPQSCISF?P6b9;JiCWdw|n-_nv$c` zE6A42O_z`pvB2k$;^@HY$n0H690vDfHd#;VDXcYg#83zUq6n*p3KFaz^Mvpi!|Jmo zpi~56!S`Yj`>T;rEGn_vXGNWlR2+a24eU}l5u2@H(vf?1q6~*~lQ^?KSOCK5CA$L* zN|qEHS6ID40r89_!Sa$f76=@F*dGvQK##IPRvQxj$k9d%(EU5spB-32dTPWg!7M6; ziB}#@{Ob>p)dd@Mx1;!*%~?FeM=aXc3(Mzk-@TlVns3}z&t#uB&0@Y>*Mn(uRF6je z$!fJ}lr4O-nKr%NFO%6Cob2b>y8iUwuC>hPRSfr4<%(nLt{Et9Gck4B;?)fOG9T9K z$$ZAMIvqgG=_q3TdN!TRnydNEO*31sj;4~K{%Epd<1qUENq|{3T;7ntoeC@=0BcgA z4rpC~q>(<=>u))!5>KOk-y zec$6b9S75qES~Ex>h;HBz>(SfcKw-8>U#O1dAYfP+jUl`*6iK<_XcK`7~&$OMl5ZG z`4H1O&3ll7+nC(}GKrHsqMK~$=O%CxX=)ym2mamXMZ;z>*0<-=NezGRQ{NEUd!AjD z#`3}4#HYUiar@BHghVXMFBM0N`CzIVz}SkOUay`59Ap$zJ&zc^YOY_{xq4w|0bR8p%rO=gx;n?rMTL^V$ra-s9--$maFwI^=kc>(6aWa z?To60SUa%3rAcT}>7LI%|0UF|O*%WHXf{&^RATlM7(-_OjTMvqa-etPv8QI!{^$6jqA(U~1~&YeP9-+$`3gf0@r0hty7lG@*luPkU6) zmT0?u{nU&cN2x5Pu#-KLo0T zmL@*^MF{MY`Z94JUU_Y-yQ!{N>i;rIc3xL3VKs)snX4b0@t#y!V*U++b5>jI){a~; z?C|lR*b_>a__UWv6c$f{io~bepFkmQ_CI;jSX-GmIuie(`7pswVDA&h#he)b#HW4g zZkrU|ruCO;Z2#W1*Fl`n(8Q;GDsPJfc0hM6ZVslp z5v;9f?yt@I<9sBehTze!;E(%M8H*&n8Zd`90zY+o8*FP}&=W5<8hddxi7^=jlJ=(Cn zP{%9lt5yxJ(`uHBIoum+2c7B;ue~~IZCf2G66&1zv`09yQ#VKBkyN$PuJ?jl-2EMLoR;YlV%4HCv-OPX)o&BGIh79!yYU9SKI{3RuDA-N$Ma->Tf!6#3TkBY@ z+Wyv8g7NpOhWRJW_Vw&vAK7JydbS@V42w~bn9zw&dztHLaV4lpd=iA-<~&bvwf{Lz z!@k@6mLBt8A1Bl1-ExDYF#g+qgD`|Pp$Caid(mZICJ71>pKf1&T~79|vvG{O>8Y3t ze1E|?zP(R1jbnX3TeJHh_o9E+ynhb6O&@N{<0#|_B~N@hoNy9EBtG5#{0xlr{-#xhtp)@#-w!>bK!AFyKADc9Y@ zu3Le}AQcJCO?=v~QnyZMCsaGY)d3YeiM>5Fzr9#PC^*KS(BH(Ty{mRxBz8rq4L^rf z=MdgD6#4xO-nSZlWXEx@;AJKhavUgTcF-quHSuYWYU~LpK}O<}pz!v!*kR{TN*qO- z(&6y4NZ+fc+|)}`DG>ShVC157Hfx$uGx|}ydIe9)iYK4YeAwq}L}Vh&=^@~HzgeKX zM1sWZL&bIQXfOuOExeCVd^jBs>yW|UhNi+j_CvUwkH0U5A1~U!dd4uDLD{!X7Ey3} zifEB(Mqjvq$cuP8JeDPlM+9jbD)&PTcJVe0Vg&Kw6t0AT+tW8p<)PFqjB`hAt3Sho zhrQmrWj&cf3IR4)*3D{B4x~n(H?Ey)`Z-ODn_Y2fJzc@x2u{zOzYY2 zV0hX4fw!lcn2K9fO*$c6P)$Sa;Z-w)yB*bJ+W1Q|`@o(DJiJO`?6;zdbOLTu1r3#l zQ@s#Qu5#jyV!4u%4`hD}C11m4sAHCxfbH4KG7Fi^wa`)nb)>cfFyc;v2kFUS&Fhoq<)%{P!5 z>96M+j>_Q#Nz0AaX11!wO@G|1haVLnJlv7~{K*lP=)Cvt{!zo; zV~{Uhhl#lTnee)r!)y1=GCCK6gg;Zi^7*itPNQR{8e-YqN8OJgH#?oqhf2o5_8{!w z?+8w>chd@-qyPHv?*uIm?qZr@x`|iS`Q#%Ibo9-xECDGBgoRuF@e_Myat%Y*>-{)i z>%YFabNfnV%<4~-qVnORhmU@&fKdI*`I#`bLav$thaHu)h+13r{TD`*yy8 z4A%Xpz3W%su$kHliaxyLy{bPnYEZ7`)A^Dazn*xm?4C%z+;0IPC%-?Q%qFXkj5k5Q z;Ho923~+3kcNW}xs2n`1$74usH>3U#e6~$JN_MLh3q&cAv{huxzX|BX7I+`rg@b=* zrz*p({%wUEJR^^ksQZ(d)}edvCO3_KjGg@fcw-uc{OE3)4BqkM1|FwkprA`z~o(3 zB64MB?rp_sWB>WC0`j<-3liSz4dMPasAB1F*2Dg)8N#*St3F(M)t}X~x%|7QS6Ub6 zQfKeq@kI9SekY_LZ6f3SRmER%JU@O{$+$W|G!Lhr2o-$V^BNeF>V0CNN4Jl51O-hOCuRfRP4Z3P!A&OXG{RFeP9 z;|qd(@X_l@J%uDwya`_#@c&{wb#uU3wb`@yhptF9t0Wq*)DouJk5Vt0< zmfKNg+zhthNMJwfzznu`Mh;?tZVud=>gVc*;IIM7+f7!xELp7(wq#A z&qm`Rw>T?uP2L$uU;!ak(pMjAs7RaM(>Kh@R6!ROgKCrI zsuDz=AHS&7WzT1)C#UCUr!T9?^!&uyb@4d*MzLgX!Kf@;L=L(ac$Hie4HyUW+$BBL zdF?n^MF`ktiOerU9*?D;DBZ1H1(Owy(nNtNgaSGr+UbZxR(W`@g&L&}xJ$FAK~=pd zS6Yp%t%e!i@$e*}`@k?10uJwCw1)xjZbYHN`qQ;4iltJH{7sN3XqGlFk`~$?i2}Xj zeUWO~0WHnyrijU7L-9}KK-TSfmpG{-DiUOsi2N4#5E(B3o z>y`koAnW%8avEt>CDF)0L1G^E(I9(m!Gw*dW;*$!S$=-Yo+}6aBmo>T(QO*o86P&R zx7iz)-Fv+^@{=#%`-Kwbf-ocAx;z4)w-k#MN6+V(Dp(0Y50=b}YpGhJ1^Y}wLwh}_ zHi2tf>&|_ipfX9!-_U<-ZD|2)IS)#YLdt&3I zr$RM~STzEsd%N^c6L`eyZ5*!#+io#U(doxMl7x#=_R4&(H<>}5*SbG}0<9->Aw0Od zpSFh(?&{-Yy#795@uNeItk50@eFPW1t($^DIDoKvy(t*L0-8z`L(rd9qz;)^Z_!dc ztWPd39}gdn2LrIK&BMp_<>kfMxEWkNI=`$Rjd*;RWl@{D>XQUy8BA$WR z706^Zgku^jbVTPKR|=&B1jzs^Mg&hGvl`4VlR4TAmbIT|$1V}V%nU4GKaq`RitH0xj>u?$qo>E6;uFX4)sI845Xq!DqOef>joCYx}hK9{#;Jr;6DW3it+s4nv=Y^MSyL6_0!> z;Ni5Xmx?b@ovax5V4^9BH?X-^+peoY@w8|DyNGsPQf<--^%8R3o!C_tX=HW)<8{TU z;%3vK)H!ycQ_q48yf46i!GVpap;O0?#b0dm-oaoN%fB?Anxzjx9+4N(rPuxF&w93A z^+)sJcTZS7y`DH3G-G(`VFtBo-|1?6L7`9J5hVUrO;5v9cMBMS|1kec0GhrS`T+k4ztfkzc1(g08qL9ExrvsbRWY)`pwqk})!bYob{h z$TCl!>av)xbVZXE>T9k(E*35fhN3@%+@YYyiD^!Ir!6( z(iqsIWeV^zin5q5G^A20*!pYh&Tt%%>o{0J+Vow)%hynOVvRBT=^l$59ucgx2fz$; z5gbK19B*WETIsA7G|}{N^D1G`B%l!gsqgjjPZw({!q$na9_&pveKFxmhurP2m@k~L zo7wNP`JXf4XbLPw+&q=o9VN$E^CuI3gA%Lha7CtuX51G22%IB>i@2X9!<`v2Q3=W;%1eHOM~I<@>bt%7j2=8{4C*nF~x z+7_5Nq2K2eE|$%B@(IRCx?8d65|FhuEFBXyohG2EtIZe?P-7)=*$(t;J~Yez6f|fF zr|icQ2#(=80lqpEgNw{+3ZN9^)pX|3^KAvc=K7SpkuN0N`uCX`v{wBepft znkH|ORYa1*p?a`_a1qYSD}ivLHJM_<=w-4-7dG@lw1RCV&f$DN=M^eb<$x>BcV?W=p7{{2?^07o zN^eUu#wPdxbR37h+fHy!8wRwc8N?vArA66-@pN97YRC#j@xrt(z*7i|tkqPgOx_?5 zr}Gt@dN1)}xQleQv{hon{jtuxR2Tl2YfJgKP$8?ivz<2DSbFTPsXzM-sMVr@Q{;Ra zDn0~HJL$d-F8Ey_D-K>-f^q@v*j=fsR6XW$1>Za!`G}xq(jZCzo7se23#5RMl{E}y zu!O67w}r(!kNP%6GTp?-FV9@_X(6sU0=dBLb+BQ;r&A5rA1#@KwqX~9@k;EoIaoo) zq)R6`fRKU{mRSs)oVt8fnCDRr9A8$tMh9IVMD&X+W_HCw6tLju4u?Z;iDr!iOmCc z_dK&1GSfm!v=np|`y6nM8Z2z#x!w89Osn{ohwKE2PuR4CCwjN(!yTy_X)UQNPACjn zu_0zz?;>Kke<~pqb~x00$WjG&vK6$3>K3>X3a+xHBN*N+3R+L+A13hZA?VE(oyvF- z1ut|)>d}a)^J+6FAnj(ucOKD&GR~>4l*$?pN!D7QISG;f{G13NL4p0 zp}2kisDwWIpyd}yMaX?O*hKTL2XMN|sR@@~-%N)6KPT&taOdLsCA zUkDpKpAj&C*$D)2AWi#`*E3+T8X{h33$@Cd(G^rveC$uy1=L{0|05Rs%-BkU->0be zY>m%G2vMwoe$A5+wB}(AaoveA;k5RVOq%jMsaON0GCun1ms!-5LjW0|A354 zgkaOw{8vB?w!*E4MG+Pq@+58um$?eIqjXX6+UBmnC$QaB?8M%}-$5rPFo@W z_^V}>fdaQCtm_%%1Ozxk?zQ}o=`Xq&D(r3^HTLI#f(YK`<1y3~U}3!Cza+$=qoh8V zUAW{trqrOz(X1k}XRjgXdO3$u%W&AiVBAt3T*>{9{Mw)1&%@(Pm zJ>SHSIz8TodGd_Ev%)Qi(PfIpjGmcbT7Q0KZy!yDfuR!6kY{FOxMH`xCK7NQu22CJ z!Kxjv=&TPJdQKd_OIpO05wiu?{1P}76nPp3;bR~MLl84c6agC}wFO*AnUaI9^dK7bB#R7Z|Wg(soa+U}IC~>Vyz>%F0F&Qv0@z;A|#`jI6~mBa7)d%NOBsMglIxVO(g-cn|?u=u2}=u+V$)Hif@@3_2DskK=6WVu5*T8 zH3!kO42Xcly`@o_#{`1HQENeQq5)1JDMFMB@jiS1rXE67rU@I&Q2ffim`rALP~s4j z_@Z46T3BDL!2Jkv3=Ihg!ezP06US#ld_$C1Xh{V^+0Uq=(K|Ctig;MRfG-WjGlHZH zNTl6z1^X)-8NStyH`DXzkeAOTb_7j>`RKFHW11j7-FzXSPD)mBx!|$oIc`*n9}cgB zrbaNa4%P`68G6$vVuM^1oG^g`kr!J*y1g-r>_t+R-%@oXBCB(c{R1*$wP0)s%q?Y9 zW-feDU_OUjl`d^(UYl(_b2H3JXnGh$NI#j?5*(VD>LqrR-r=ZQ{T7}10_q=7#siR7 z@-0-)?uKac_91jHK5oWS#kUt^LQc>y8JB9fMo8qc6oXJmPc5_9HZyp{7M}hZv$`>` zP$PI%XpSmm6o9}~L{aj44#gihSHZ;I6XDpRFmgzNNao$^C6cai!7iyg({n!Yqswb) zd*MpgNlAeM>@w>P@SxoCL&J`YxS76aR?+HyGZ~GhO-Xk_w2tOw4e5NbDhQxC38EyU zKW)Zqh^BFslhP8T66z;kDfm@SP-C<-BKVD+o_X7>(d?w-Ua!8aT7YkCJ=Pyy#$0}JwPCM-x7HXB4!Oc2m-s(QWLd4 zb2Fg-f~0H6c!=o+F3YHe-S2w!Jld~Dn~rv`t9lhj=X68r$GUmB?F=krylomF;%EEc zneGPA$_8@43;qr$T#=#&!6xvHZ1QeSfx=C7ZqYECOr!D$kK`Zq@_Ri= z!;!rV)|i^}o!s7P4F(Z3ZZwx>npa6l-8T!5*G#$KVe2dC2phbsXyoi7Kr=zjhi#y8 zf(O$%JaZ3GLVrAG$30e=aK!H9rnZ#5g@l&lJzQp^Lt2DDmc(cUB4B|_ETG;K_+_p= zr!O`!ax_QtbxdUy{{im!a!Sfetdw9m0y8DhR2VK<)FR5>r1gS&yJiRvaT@%fwP;o< zmqiSXxOEHRX$QVoLH@xi48;jXJx)qaLDEw~0XL0Iu>ynG4bNgJQDlz;UCEYE^+nY0 zXqgp6#0bTRVo#w!Afgb6_H4AmgGeP9>X~JD129tK7IonPI4M6K(sX}D0R$w&_Gi?- z;VYr+$OJny3EL-NDGMS#ZZDzBN)!h35-liP8le+4u8AglJqM)c1R<{?Pd5qIvyDp> zcEWHWwj3Bk#v&?>Q185ZMh%=F%)ISAU>Yd`?d;gTWP9Szvz1~{r(j0()g~T?+RiWI z>OE=L)F5l&DnQf$s$r0UlPBkF#})VSBOa8Mjh|Rq?P~~a=-Z8=63%Lesl{WzCuW}f zz+yo;9~JN6uOZR1JAg*b_zB9asL~1aQ!3lyC2nCokO`6+_0}TK5l!LZC{IlkC-k&` zkVYOW!K!7rK?Tv^`QY!6G*EM1K2VZD_7a)u7{Cm&<>{jU>=q{&gj{-yQwMjNO+WWj zN`N`Qp>z)V&7t;;IZ;<$e1BRQG%nfofdO95{e;qU*CL&ubE_z}%U5sRV zcAgdwu+VNtUm8MW6m?Gs0+Eeb@$Z!(6nE|ckI$EhKlgynjMIV8fYIBL4aiyOyc<04 z3sshEUKYF2oYqb=WoRl8-GjAIyW7|*>>Bm8Y6yA7+o*x-aF;y$XtW517X?G_pmy;` z(<~$^=2u}v4Fso8ZZ88WTKj)YR+GU5>XFc9xf&isjru7>hIAQ_+qzLTRfZ(hu>{t5 zGgE*}JgNXiDPX;1S)S>|3LfRfx`B?MEaHN}X3VCA*jivgb}svaD0J3A%MSrOYSYLI zV<0AvhcVvpLhIa+3UA7yfyD%lj|>|2h_^VfC2P+5tS};-UYbFFuA4@V&-HI1_P7SH za$nOSaz4jiMw#Y`(M_IVe97+wmGxmr$E@E2BqxEgss$e;`ZWMhFs2KoNt}s3D{(-G zS6HHMtdvs{5k)7vg6fJ|G|)xpWhS3kPDm&s(PL^1OgNlG<%XQR0t3@5Z)nuuA|)v5 zBoSYU3qsrGmV@4n+oPmnh%|z)8rJWD(Mkff%|8593gBnH1&5Sh{7?$!3L*gng#8%+ z5%U?I>oNL}cVygt@VFkSM6NEFu)uq&-pF-p90FlfXla)mH;83@O)x(OWS0cTf)pPf z`ZWMh7?97CW{OU~|0nx1-IzVA5)c6z{WK80m}5sxSP`O(AWcf(H5<}`9W2g+JmU-R zBcO$JniAg67(C@hc43Y!lG$d$0E`^mW7UJpg=9w2zV#AG3*J|b3Y;ZAa4=d5WZA$d zgA3<#gwe);rLe(Kx+zr1xD{YgMdP0*IpJ12+H!etj#bbXK<9U=x z`(%|4hNC||bO3@&z$hyvUCek=R!n$v<-i4Nf_MMFL)L6EgS|EwIer2diqSYZ-$Ry9 z7HRT01V9OICPf#m28%!wL`HkTkw-WR2Z1R|C^E73`3y!$bQqH8&E#@SnCgv}4ZFc} zsj_DRZ;0)f$ASq#oWlI+5}rIOvVhRPwDAZ%DvD>fbQgki2J(UVl@V?#BmAAre<>z}qyaSjq;?CQg9y6aa-k>NUz( zHQ=^p6LxdhRdM`8PJ|&bRTNvY1KKiER7jbYtBOFdf~V^t2-RZ+x6r`f0Rao&E}C<_ zKqI7Ri3(WYnxG475;eV|8rF~$tGbuo8XiTMZboR{U5g(AJV-Lccb1WZTdQFE$4oxi zRirY|jLU%(a16;1^a0#$C=fk80x|%#pEo3AeW&h|aEx>yY)P|PFE_)ryD-SYxS5YO zQ11aQ+ED*1|1Ip7V*!Njg9c9j79EQQ?i{yqzkpxDn1%lE9?W|ov#P>GJ&)9s2t|wn z3>=J_BCY)w`!h-B0S#9)0Q+W4#J4~J%d<`nD_D!r(rGm3s44g>_sR! zvE|wyN!d(P(bdDBg9te%wkWVSfN_pNm{Gj@{F(*Q1(^nxzcehqgukM)O)XW<~=>!X?W8Kx{mUf$sjdlZFlR$xWOmuAI zmL9%(M{ejP?%pxGntkwI6CeQXlK!T*Jdw=IkKmGchbTq$>c$M#^VLnNA>6hM57x{^ z{sdaxyb_<{9taSr{uV;nF^Lymsu;j)c?xelJtCZ)K*dhOtYpqyEP&1bCdkx#gSMYG zdxj|$glq*4w+++zr=P&L+VKYC7XyG-*vZ9-|J&uI|J$R`Z;!lo zr|0MXZx?>wv*Sm1L_$*}H?>gY*~=g06La264*Uh)UhkjcI>c)@=X3vl2i_`vUa^h$ z^W%3FyN>Am_^KKV&j+W+^>BDzpFSMb4@cw6hoj-+(dcY2y1Y2K(>{&p0p*_b|M$8^>owT3Pi%(VgU8F^FxmREp6PoK$dX+{v}*pN>jMXc z$KUr_7%P*U+=DQmJb6;6O~U@dUW$1h1}t-Hq=9>C4VIqh{K|u`f>9CJiOY2%Hwzb+ z_U^T4HukEEqxpv2J`QiI!HZh(h(?Qa??>!LRD1;jh0x1tRo{UBURA^C1g=@G z7R?$KB+I6fkSa)NR8UhosH@d-$Xfklxcv5YC2o+^?!P*#$EO#gho`6Kqw`0@@#Fe( z*c{jO#d&@H`0VuJf;;~fh44(nVgbMgmS6e@7LSHJ{{Lwa8Y1=Rn|1>Bo`x#2IAu;j)aOLf0aey$yJ;2hVo?#b`eIum6@0 zMLoD%IG4hKdka8hasnl1x|C&jTQ%$Rv_a2x}$}?->4K;W0_KTGv3v`i-tNZY{&Z-_a{c*D%epIB= zd$Wuk;aqcyfYee25rT?yQqW?H2Mj4A^?W#A01Q_D)?fs+piAL+c%FpFMv;gUKs)lu zb`IO$GAP(0qMmNDI75pcUL#m+3n)$0SXZ<65tzlu?@eU|B1(|JBF{JbUHbJKG57Uygt_3x4QqVK&MPla(;IDvYJd~XyOt4jQ{fg9^Cy+ zYOj>I$vQ<9E(Htgco?Espd?`k3l8<75MIIiVSF9=R3}teSNWiWHG|j`N`h6#CEx|G z3A{@Nx?rzn0MDZw3`v><;gZJILyxj_DEtx@i^~)s&T5VZ7Oji8TRm0DD?XCEZx)cF zTif04#UyDGvPqb5OSzcff|#d0#{Su9j{MDH1h1aMne-W~jQi}ddQ8@Xy8;SSrR_+b zR3HBIRgXj&T;a@>?z0+>7zH^N8S2k)0v@8^2JC7KjN(GJ*`YeesbNgdRglaQO>Y?-WqybYiiEl}eda&YmAwYIN4pdXavwQG2SCS_} z^VDe2Czsq4Ay_sUn6+-&ZYzfRHA+$kmd0k&m9IP=K6?1*Ma2T2z#2rZLb7b3 zl!B85ic7+zQKD@uu;Khrv@ckg60(oj=C6)#FKc`280Q^#jGi9f&5yRcE@Iy%Ve*H%Qp zTLD?XdnSQDe?5Uxkb_h5YVdD%Mzr_ccX`yRjGeEr>>rRf^=?ez1uaMX;`#4Hl2SNw2LfB}_u;G|9Ha0yp`50}`E+wLBQ_qx zK|*#H%6F*D`?tw*y{V@^!6$ItBD|G893OT|H1j2(PEDnFTtKmVGwKiO;qNPcmn|N5<@LSzY0W#;T{>ovf&+3xl1I&@S~A1tKu=~&i( zs%#k$%lB*jM*OMooLUOy?f(u7Co=o&HW;88{?|vUB$N@PQap1O=NEZ^&j$&^3AYh& zCQZz0OY}&-EeNYci8!p4P=5$7b8}F=-Vd9}6i%0fRr8s!m`AKfRKmu&+2p`{G`be0 zS=^x!(GY&Eg?t3l2995l@`a@Y5w>X0-ZU^Ho7u2AVhc|ja2%Kvnat$byEtA z;>SwON~myvSs8R2_QdS<;IvK+FRwY0@_2S#i`#(vBdMEkqy}b=`d^++(N8xstu3|& zE;8iT$S8x;#RY70A*PYZE4D&=8pVNx<#HB6yM@5au1m0||GL1WewkfwS7K6)ZydOfc-;spS{P6I4KZFP&DS;3ss|kmUGF;pM zCt#=RdN1O{ioog3Dw-=w<90f0$A7K(1B!7QZg_~>Z_~!}df2}TZDqr(O|;Ylh-vYC zJ+X;L#Di6`09!==4ALWYKgFzBtuvt@jqgm&zYKN`D4OjF;?fhg{x#c7y!~PaS$YXM z$oW(h|Q;Om<-(kBrR{@LWPn1f! zhR_ZKyHus?CqP2ctyR36VNRFi3MHcnL>)e)!p1tPhBng|bcsZZre7RhOhZ)%Fw?DA zwzUve206cC)QiG<}H-qO?6sVSG+6 zEkL}dkZFlfz>a9}Fh~XhDBU*fgg3VKfeUZ{q~T}7>TOu{>#Ea4Y&m#lKQ0Y^tKkwA z)6T)LG@kodvl4q&1yCY8SB`B}x5B-j!9_@r;qI!Be_iqG>zI>&UrAcS-reI!JI0`6 z_nP}|!E2%+Cf&K$tq3wdFr$ath2{Bgw?V*ldrb@*B(LrDk2-9xrNNZ-)n4BssTFwW z-4I!R*#$)*`5NDW!j59W-5=56-bT`)^IA~^eh}gE)CI#3jvo@H!E?19SIF+hf(EY- z3~v$OY^bm^hS-pmKvi@*WgNf0?K%e2*X6iefuMwX+aZ#8&CUXs? zYG-g++SzIK=<@vG$)n@b$LE)$+F1Hqr;69ogI8jNs8X-PsZ%EevHCa}ujM_ThhrUV&n*rfzfq`otEh=slcZ@XWzvDr1c6m6A4z-j*O8IMTf@9Ig}~rb53R6&WNSYrrr)snUk-# zLzFXwoQO`0Ai6kh{{gI*&qpbkwlXxg>t^IF6$ewYuR8{n_m9YcORdCI*7|lbIxOdW zi+(+DH_5@2QQZdebt|O`|NW~&4mJ??-KdIPWfH!aZbxF#Yocz4oYVzPw;eNgscKhV22+jehlA6LW;{9{3@$H6 zqti#nqh@$^eDb)t9G?utq0(CxoL#%3jN0w2d|=_zA!&G(HMb)aT!M5<6xcc~z34sW-VGke9-;RJ(=v|)l#dU!D!KN{B;&E@H7b1^z;&WFQ`;py?oqk%3UJiNU4B2%H2w|$GM zs1d*4QGGg`#gqx&!y^uf0xoFMxBebX1h?qKZ^xYYl1FD^ZbSb2->d78mLJLaE-$4# z0PnZI996GD>m#HU80X{Bqlf1g!}0Os$7d(?<@oZ^;N)a5s)v{3vomg^_b(fB$SHL6 z#vJb1&(`h%`3s(-`^$5M?3R9yB6K36#qIb5j@c1B+#KLWpWir80m30UwogzR{rr-7 zCLQE7qG;{(k14!8nm9CPUQT+i3TM*s`$U6A zE_SqdA5-?=%w>-^e-T{9GQj)PAe83aCmN)v!DHTL{7~o=AV`0`6ZojzMF-5iUOK{U zBEMA4r)J6S75SxtW{jM9)w28jTPFiK{Q-F_w}K8@JZs+lp;j3kGM&mu5`0e#f~ zcsfGAGbmHN{2z25MZkt-z@mIW1UQAbAa_b_b_1YJNr?L@3*Tjz^7yB?-S~Rl+;rjw zhqo2GeDnPHUA0+E;omE`!Qu4m`0>U0_~g;>;pO;Za5fx{PackrPtM@~9A9uV-I@rV zNl5qc=&NA31rh7BQ)=k4!yqgk$+|LC;_8)iytu#AL7uHw(-WL*!Y4KGU5(_CC% z3PNg@i}|!>&kuIYE6H1G*;CW~yrcoo zN*Kc4&ENhuSxwe+|9Op&{NY(5&1c}denK|Y=;$N6Y*@Eon}Y0d59f!RCfJwW$FIx| zQ0Wg<1Fuo4mrn3gK5E!x?ht|>O{McGN3J^n&u^MR-Rps_^m)8;l z2NM6bMdEMua>AWLkKf|{%LHsJd-MtJ%%e@E$Ov*-{xqHc`Qp<8GOH^XxE4qjdhtWO z0`2&5KEz}?c2r&C^?K3_n=ag_=WV9KIvCxj_qt+)rtjGlyy(r(;O3yix0gb=P2@hPyR(hU7 z+p9cFK!IFTVt~TzBd=#Co>amIrNaWqHBh-!`bMv`^cSlaC`$MPrbD;zfQt2?{;neT zj*TJ9?ei>xJ$8y(F>Gf2k$65-O4Aprf`#R&e#4^N3X8Yu){vV|iy9o1Sz^(aQM&(p zIr%V|)ziLuSv2v=r0z7DEZM`Xgr4wsBE5H&2JXsE3f~wY`r$Mz9 zcsXBm%mBQEjXitr1C2)9Tun_R#^^_85&k5mhoB`f1A}C>?w+jHuB_H3uk(IZFF%_F zw3y+V9pxa9+j}`*+tQ2!!-g^iQelb0l?`%v!W3x+1YCwYGV@vCPI5@rm$)n(!9q?X zi7`4rL7Cdn;IF78o#8$LhlBEz*YJ+}WH?#FL&1nT^y?ixjBqSYnjRE0qJ+$5HkWFoI@VPr>ObSD^Ncy3ob8_#p2e9Hh08tQ5(1EOd$ zgJfqto&0Z809VbI2vDQ9u?eSKP7$rn>`_GQMFce9s#Sp;jFh*M!O?v1@1nVieI6Qi z9E%_=@dF_Ak>~~^7+uvb$>?JuB5+#Fdy zX&HI~v_xiJTfz?dqbuJJF)FukK&%_l^KcCAe9=-$xEz6_%-66!*bZ{!t$7y)Z7a7D zB5Ny05&{&A!<17<`z6)N6H)48^d&__T(Iy<aTtZKyW2fVrnE25fCjJ zn>3=Vxgm5<8XQ7@n#mymDl$3*cr>$<21GGD*YG~+X4G`d@<62`C(AZHlGZJ3kL*b_ zJ_?UJK`7Qo^~L5#{^r{s)wtLI$&PsoBpYG_qLA)jgCvOJh%P~mE9(+_rZ|egXwjf$ zFl8+orGL_-Q2@|v8U<33QKJB)S+xu#idp;5Ni*$QIQ5@Upf(-ZCXLg%g+b%}h~`Y- za3=@Fm`N;bx$KmasmSEMd_7D<<6W@15!jKj$v}ckiPyc@(1fW7f#KUFW}923E_I!6 zhB0A*<1Fd!N?<6u3loV~-rK=ds5~)Ri(ii2cS&NniXD>Z=IU695l=#B(S#@QWDR(} zchY?4yVHz!9!`F?j)Rq*$(S@7s>`hHOJ4Zx7E7}Ht9!^YGXA4??1E3G2MsL zRkLWVt7>rHl({BLMOAy4_+g2D6QIZx5>UDexbN$Vssopr&kATSPQB zi}h!DNngT{=y{CKDBu$?ttxDbfIWImc~JW#w+7pz8XSE4RQOFj`_PE;L0SF? zXFX#^FQwO7#nime)tEa%lg~YCaPHg3YSI;%EIdM2^>n%;&$hvC10WOzdKQW#{^5KE z10T&q5i+Kj-(Ii} zf?EU(8Qz!~(#z^t1AAdWU2R99i4RaVj%E0K`Jq+q+#Q}p-E1~r^HUD(64@45OsmXC zwn}I_Ffo9O%Gau>5R^_e^x`QCM*N~k1uA$(QGZ1AK#pTGou(5dB%-nhKs9zUo9OXrEe|+b zf+Q!7sF3K(9)4|yJ_Q94seamt@3+l#j9{`qcY^o2UVlXJ*q^(>Th51YjzoG0JzTHR z&pW~YxtTS~$qj_T|aDI5W6hEQz`L3~U~_x}O0)M}+;`B*#KZ$w@xqPmQb zEfs5jtuyRT`uI(odMV$~q%n|q1WJ>jOr_=RLZrXk+zgtfUdU+x*6(CyLKxKYUV|1t z>;%(UhilN*@4I2J*Ubh4{(UD5_Ci-9z(4Ns&mV zliQl#G-y z62a7BX-O;efNxD7z-tdnvQ(u#G_;bI_V7VGO+V(>9$H$7Oe^>jr8IgP{s0%HEI+?m zbj^VOPzl1Sg=@Dp#l{?|pSG~lsw*Zh$PK~+lKLr>pHnS;U5mU!a zOYV-*E#S6jLbt%4HJIDNOq$1SfzpiOw$O`A-?m6-hHeY!6tnj0X1bopHD0$~75KH{ zq*Z(i+ph9PL~miqP;X+zH|nvKtwa5D1{QDmDq@tai84S3M{I*eI&suub0rw6x6Mgg_VDZ$(oG*b%!N65aW) zX;nvokS9|=1>xXDfI{fcS@osd_N$)GXemMMX~fFFtJXmQrA$p^jw;x7QIyt z74Vo&(2xKm{S*lT%}FUx$i5kKOWY|O9b;EKbI<9x1Xt2Ml-(%5o=zmU_6@`KImuJwZujo zs-GgDi6JT$$W%UIfR5}cB!S2W_4L^gX3@m0iAWd0@#d=zfN1@>c9_$A2y#S7NC#3! zF*O+oVz0;RO=J3j21>c92n`aD#-W-QLx3w{P#;lTuAw5z1EYmr;tZfieIq=CKxS{; z&x5r>MbzB)6X;`k(1<%n{5f~CxsZSWr^SQ}0UM_}b!#;hMlwR60-=QoRA@!+n+lZX z!wJwRj+`%yyR}&hw^mQ5w(Dk8MnidZ)=Qficd^g@Mn={+1Z8GaeikpdS*L)*VLyiq zjRC5>6*7Y%fUC0ma8u&jz@cg^fO#HioWtjiK*%v;N6xz43)6O!JDPDh1u^?DgGsq@1{(ovn(^ZsfVd0xNzM%_B11)h*0G|$RSkj95A zq8Z+rOl|6YVJ4$0z8h66Iv8jZR7p_?>1*Dty`yn925RY{&cR`#bO|zOoI1hjV(tvYT zKi$zV_(gHu8p_udlx*5V$*Ao0KJbi`-p{gmK>96Ovj|r0+&C#-&UCPYh}J|m2zCkm z{OH!{?dDn;^0cP0QAQD9h}tv&HOyN8$;NjfYKS@?;avE3J(`KN2?vnQK!kCS5-Ieq zsVqqXN+=zZZeETEu3y)ZRE~WMH84Q@iy9fpcsa)YKH4<_&4J*kg#F;J5qPuWlqu^K zm@$4(nM+Sm0JRtmQ_#U6r^}tmK$77ohw`QwH?Ws9Y^>!R`xG82<9&~um06;XtG=NC zkrr@rnzxB~c}EHzMUf>LDlH(SfTIL+?`Lp$s$)sF_Z1_`jsZBG!JLY+bMShI9yGxf z^6~r!-&yMp2#Axi(Oc`{w?NKjEiv@8Zpc>>V%^{L+?4d_I= zcI9mcR3Y@L?#rrX^}&@a5I#TQijm|*KNl)AB-s{*Hu+t{Lf+DUZpD!#8D{d?UJEFl zPW<+h1;Tq&$od+1QrG@&Bw;^TWVLDy2k8k}3$-d8r%NjPn5+$-4!Gc1*=2XA#BON2hjx4YHLlY@;G33m(dUSij%VNg}beBcCbhfPcKI zmY?Bbo$13z4vE&oOaGET7-**qWB5%Y_)-53v-R!p5BQQJ)>RxPzCQ& z1eR_zN_?|#v&}LZvrsUjPwK1 zEn!>lX~Gp*>&Rn|V%(%=l~ElEb&W=CNw<(1f0j`jdqE>Q|C$%A#lDC z6@tnwZCfBWyTok)M{udD;Gz|u`e`Sbr&I;sVWW^C1r@^tryV}l%WJl3UC);tn8q@= zXN&5qijh`H+IXfpM6~dVjE!FJO;f{$fHJ8LbN&Al>W)314dfoH9tDZP5muI^De0`L zS1BMwV8`7`kI?>^8mxN|X^$t%)mk}h^`Y1MiTx}u9kzu4=@$@`e0(^{)vWonhC|KJ z64*Cj->&D2SRae56*TPG{qC4Q$<*C`@=|Lb)5o8x$+D`C2jhnihvTzTP_@DF`N_%U z@yYP`asBvmFc?0%Zs}`Rcyz2*d-$4Z`b2++}+8s(636^66Z7%N=B@xe{&?M1M zU8}WPo47Nox&taUze0*^{O;=J)dCFXY}5g}iL;S#$NUYvdcsMwcW$3+l8HGs(;<-P zq8E=FFy6^KEzU&kIqHrJJIv31j?a8MDo*g3zIgVb%(Zf-*qv+1!sOCC8A$#l$-oQV z6Ri}^lVVBni6JUFrrUvwQPpBS3!V18AdPVd3X!fCq|;phDoIVUE~k(jDy(pgx=8{xBKB1M2L}p>@Yh+OHKSu9DQ**3BZEXy=?h&8G#d z2K&>=tm)6@qb6C=YF*`r4MH4f2%cJ0YagIdk4`K6A-9@6tf)E%iTA7^a2c_JY&f>Ff~==|*s<6O zCV;eU1rw-fRxk%3Zv}G@3anrbRJj$*K`gL>2~cD!c-^&=)WQf}yGN<{M7$oCn853? zH*v@okYQp5P`F&(^7H=nSo=wUJtgRX(tTWug^V1zupiEV-@MOdI28WPNfK+~30B=CG3dT_jF zu|Y{tB|OExma41#Zj@zkT6>93x5$J+It8F))$4GPML^yf3P6Slo z-iZ*)-8>O+fxFK`q`3X(v)O!Iue*2C;PXmTW_t)jG0{1g4qN#J)V=TlFw@gwd=zm%wf<$YCEF2FRYJKBtzLn?DP~V7|{aK&Zbg`FO*OqlW2)P4 zWlME$#~`Y34oBCDUTiyb|DZ(+Kv6#hfrKJg6BMhibega^)0FzwOn)jjW~S>dwk!*! zMN^i=1!7KDN7EoA4H*pt&5qGv6`3&_NSYPP!lD?l=hI2uH3Rm%Vno@-i_=LoT)gd8 zMoaW8jr|z4J72ypP-DBofAMXKXjr@`<=q@xEaF1FpbnTp-V0k)fjzW)K>!xmu@&%k zF>y%vi zRpVTF&+d-_VyU)EwBF8c$-ae=nIv%M*i6B(Or{_yU@j%C#Sxkor&WxS&E0v1G+;jk zNtS(+RK_DYCo!plLnsQ2R>efF8j%-gXhJ2U={0#^qe}J*un_{4-I$7l^K`VN;6j3p z!D!Rk%Q1}jmAs`V^iNxP0sx|gCqOE*?gW5D%btcrvFcY4l5B?SS4;jNO84yhRmHB` zVH8$N@$8dt>^&ZcX5Z`QO$==p5{D^#DA*QzUwy0WH7O5eJrF#g?QPgIS^AYr&5W{_ z-nO*|2HP|5BQdaLH32AKR>+f}Lq^l&L<9EMBd!>H)+U#s@KmY9PJ5_g&|0+EWSm*s zT?Q#>#mhj^?0Ff?BFkO|nr7q4Fe%oaJq6P}8_!>@^3A#=mT1gnYj37#tCuk0sxLO& z@;BdHtH#AawCtG4H6T+dJ780$kfYc*no~fKLPl4Cn$xxX@(beo(5RwFfk{Pr zxozzXj25k222<9yQTit>8U+B&j!_^LSuYAen$5~UqFAb*HnZ*-s-G&L%F8tfQi*0t zG~UWe$*zTo2H6XnHt~~h*<{mV!zTLKcFkR)FF&MK=OPkKEZ-li+ z3k3FHTP==PO7y5+XN_^GjPMI@a67zs{jS$j31hkact?Nu0bX?Yy<=55KU9n;dmeE* zi4%#p-DxHXsi3Kp1G&pw%E6{hrglii^9ETK{4-W-66t0>?LwnFqa4%)Q%X>wXTY0g zy;;sWHU-{PoGN<`2ug{QKs4TI7D&mUX^;iF%RI;er%i;msKz=^mxz+9 z!9#6O|7x>}h)ywytODw>RpJ2k7gOBCEh_fZH~Xl)9ygyESYIQs*k_@iv9;O>XN;N{ zUYy)O^!OPL^s&4q0(ahJ)lGoY;?kRd4YVSCR*4EDxd^8Mp{>NJ(2ADhRG_pqIRP4F zVa~wF#aSgzW! z*s`;U5KYXG%r)le34zQmbn{@Xi$YNIu+>zuDNYU}$euSV*)1Z#Y1wKjmR)VcRI^(- zf19i(@Q~nBH;5!q%q?%$YElTHTTKeIVyj63O1GLBXcVjY;?uBMu=_v$3AfWvn+~3o zQuI}VKs#!5$tN07x0^TPv^`5$QWuD`PE;|Zchkq4W;NV2_mQo2Az_>8e#60|rm_H+ zYT7yuemkOjMIr@T$ZjWHfh&?EE33_TJo)t96HyK8-jn5m;$zrrW~3s(lJkRQ28KVWjTsbyZ^d6aBQGiL+-)DN;;N1O;JB z_Cvt4(NT#?hY&n5gXnApY{|vZX=>(7XeDfc14hA0bUWvqA0HjGA-1jf~3TI!T@({fehOYEF`i+J3%Qipc9P) zCW!tHtpKrAB&bNWmeT=yE!ts6Dv_FK!1vS0QYw&z5R9iM!OA8>U012dQdiR@PVG}9 zV0?xGY{G?D#?!PAnOgZbiC@b_2m*b_AP1^=SugrU6%((KbIw4Lu!}#TQPZL~Nz>dq zB9fd_xrj8qppR*vN0ToHlk|85G6?gF(a9fnGi(ClNlz|>?<^7QpcY)wQ$o-Z{ zl%>!p%qj4JIe{)HSF7D^Y2U@kdxD4nYtj2sQDz-z5ul_CEP_OHCoV|jDtDVr2$17* zU6h2G85wOZ`XaC7;`Zzg_UtrwLIp{22I8zET(-OH;{E07Xtk!#Ufepw6Fq^`%Nr1F z(-OND4h+W(gMtLI!HM&M$iO*}vGH_11x@o7sG}>z1n!{SHh`4j_7{*24+#|3g3{^c zPhh7(xo33%kVbUh!{%-BIz$#}02H<7-~~rjPX|z~tr!kLwR7ewQrHT-Gg8<5UG!nI z#YE7YI$};KsR>oh5^o0*%oI{Gky9u^gCl?|c5(VGa=$J9ZCLkgH+H7EOpr6mF<31I zctniZ_^t#_GQ2ARM2qf9AcB%k>cO<>_3%?+KTT$%#;{h!81J)X&YVSx$x> zTS@<139{^cw?)Yw-Tg)ZZiuqXp^6dwO$H|#tqI9 z=#FkdlKfD<3Q!$W%l}+lk%7@-JdweajUy=ilko!u04;8yKq`tCC;(}3LIx5gK6pP{ z!;#`{JqQbVb|A`*4LF^|$bh%qDlQN`@kHjo_=|ecuz0tacXM2tGO2;Q46-}CC$?XL zf{+EJ0aUF#m|HpU2zk30E5Tp{LW`yc#rk3l_1Q!AyyMiRAJqIEB9-97b?H$xa%#31`?h^ z`d5GY=uhQSM|TZOo4{fPHjzd0MO5gbV&UuA`s~!-aMkefRM9_1=UE%5LyI4SdB+K= z0ktwYQSw*=_O!QTb14g@#o#52D;vPjAS8nr8VFh-LxWWm%+Ns60-7u=N>IbMNxK)% zTvcrQ*bikCxkMMBntO9dd%;9;jqY6N0Cc}y?Y{ylbl=q=76;5LvpCH zE`$Ui=|M;kXbyw~s>pwkAky4N4iv?ET+0KzuLl3_Sl;fsQlwRbf7|IhL^RQjpdO~W zms@3X7awYaEfM;eID55`eA`T$Vb`uFep_*>Y>5g=iNX|(xAMrcD_#wWpL~-kn-*t9 zML*$jo$Y1y>0ck4S?U=Mlp7FTus%q-P_A@qETl>`iEkJ4p9ayQ@lPYlntnp}q~Ry@ zrs zdz6JnvqmW}6kEg;zGG1*>=rl9t-p*)qAg-g{gtMeAf{9=k+EO^wlZeCBQ|F22j7_S zX2r&g^$G@5Fn8GT{cj+c(m}8K4FyrGKekhx3S_6807^l~Kvm6L$bkV!9|aAP*L?a| zZ=fXek0w@<$+`t_i7QS@QoLLoyI4^QB`sRh6um8@A;~v&gG7o}P@wev5fr&{AW099 zB_Z3}ELp8|69XKc;;4gjf;G{{ox#!$ZE<4+mm6dhVDa1QVWXs`>_3JqIUJ_lGkru;)w43INv&7NCRh4*On@9H5Mn! zUad%4i9v#H%}%q3-B;u*72imd@+X|CSKY+F*aND@c-qO|{Q0ID(;@;iHmk*aHd?)# zcPx5iHf_TA6|->fO$!WXIa_I2meN;Gbmq+rWN`%B4K;NDA9%HjQU1Q2U{~)_uVDl zGZOK1Q##8Q!>~Lu9s;F;Fd~R#97Kdc3lNCFiX1u-Ce07$fl++u_3C-Y4D@xidS2O< z8HgmBWN7K>yEcXiTg)+7M@P94)?JnT!sY@bhvqHAjMl5VXAF*ejI6A`%JT)Fa7*5s zO{V?f$7cAu$tl>Bi1U%G|E@e?NCA3^jX6ld5p2{sX(?|%KB{LhJrQ6hILHYg+l*8I z92TEEI=Okja=O=lBweUt7l z*O}(`a!`sKUJe+|(7me4NawemAP?_D!M@i2N+;gM#Q#nMr!b&=;X!x^AX7i3IVlcud`XuhurJ|Igzh4! zh<60gy(C5fAHSMoF=}0*bsTF7;sH7_{ghlhrg+PlObs=n;-=+hlxbaux@v2$B z8h32D`l=FiRb$&_D{_gBS~d6P48=XG&W=4*76Ew}bX^>>6RJNpLF%`l10X|2_(H%# zX4AH6fvbfSWg&pp%0o5uLkabzJb=(WcQKVYAT6#&a;UOqkpv)V3`r1ZCXfWG$ncRM z(#%~B6vfE>IN!h}b#E8bx@$GTKURXYiqU49Iz%+l+MyoC1iYWs%g-!)es70=(6x-!=rjldO-`(ct>0KE)M(Kz<6^yi6hP1Mu#Ck#zH1&eU%2d z%eXp_(TM613V5R&fe4JLwN!BYBeVjXM#vXYzctGN+?ajSvB>Awsva)qzg3bt+a_3q z6LrPvvxCl9aPZ8vK131hqC*i3MhUXfjRoP3R)klZt~rEP)yDAyKqGOap=DJ3j!gh> zj_ffL12P6FIKg4Gp}}8KXlBUF4vLz#+Y#h2hC<`*-~|~BLq)$v8BV+3_w1tF)o{Lq z@^?!qcNvW!Q1heFentOVct)mkE5PeYUIYHNV&u6CL7R5s1hG3&=Ze(XZ_p6gfbihk zU!o|2S{6X0exjf-b1Q2OZ7PjMbW#(-3Lr=&4!md_9Sz5ZD50YPmx4jlG6Qm#0d_$b z46LM6+mhGw$!y&$J2$&uSCTMyUTcDhBdgo*Ft{29o@M&SDBxX&H~_t1lyz@2a~(g^ zv7i=iDrKwCN-sn0u+||yHS}7uc|_MSHbv}i^Tz2+afECNZ@X2lQuHj`Jrte((A%V_ zmd_-akr6aM;)x;|gfgGrh$l1pE0)ZV1-9Nlu!=JpMIwMMuRqL9<# z5r-$LD3Ck|Rc2udJWGar+IGBVgL7<5lrkdr?Pi7&6>IAya`cl=Dc)J;X#ET@|G7N< z8({*JNKbb~cz&>VNg)gRBM@55A1Cp^7^dr4^1YLp<9v5o+BgrVC}*4pM@twd;gGV$ zP1knA{L7r6ih<};prvmfgoc~hl_*ky{#$t@*00bXu`auMBY+{I`7%R~%nCrjwvQ2o zDp0ouD=qUkt-&_0nalrT6^H(R!ohL=BjPYZNVx4UXhjpf@v>?9 zf7Hv>E^&oCG;4wj?Ou$BwqgvogAnmOJ0=PKX#A=LI&||R8W~>{+v{GEkqCK49*5>U zqLW8EhDRV!UnkoQjsV5cu%1p={ncjCEMte3O*3On@@*H(=8wsIv+9qUajNxZ)vWr1 z>3sM*dz~iL5{`dPKFomFMKgpKq}iNGHOE08u;7P$jIZLFW9Z}$i*!o()M>6diXo3g zYdne~^v}`JV$_$Qwp}bap15pMRa*&4DSb)!lQC+JfLv#E4x6IEsJU}&8wd&NJc&hG z91SR*ZF6QjCnGv`*X+wVWgS2-isf^pl>#G4o3=d2kw%7+qbae}Kq;RDISBxIz+Nxs z!>635j70XeF(729q5FF2u%H6j8!Q?F9%*gl<8EFPm;*-G@oF1dIrl-w$9Hpna*hlQuWq`9#$VYl1Ix(gW|GW22kUB z3iuJNLGY4=(A-(F#Cnu_Ab=!XzThe$eX925rTw%Q6k$l??93v#6t<+rWja7VL2+#` zfvCU-V@rj{Ek@fYbc7Tz28JvTQjN6FOhB~dSLp#*&pwu9a-e^Xjuu0d1hwsA$?=qp zgA$Zd`jYS`L#P}9xy~dCXyF&rk!=zsITq;H-ATT4q9jLJQ6S0WL!posN9IT)L&?#U z2u4w&BtcFBfELHAWygZqSJl#vWnV3cq3o-rk?0Q-R#^3FAsmwCR{277Mp6BQJT=G! z2{;56yQxCp3SSI`{LYT{XvhKI8>i6#upPKUY%{8HJfDp^rU~!><;YeAppmEx(6S|E zU~)m)5Cq(^I#@W&a3=L3MWz9f)d&VgtAv_F9n*^+DlxgMg{>Wm+?0xF-hQ6W2X)sT zuK&5>RM~6^N>fZB^;C_6H+f2)z2;bbMNl1DY>3`wRvE2IDrO9+56Iqr)*}@#e(EPY zF$ErLMJayr7nQOpZFg4F!5=q*xT9mUK|E{sTU9%5Q;|zl9Me3gI_fi)xcZHzKB~1p z?io*~ItEeWjDTwB54ieLzS37ceX6(6R;@~JntG&;nsiU2;LchgPaQMzHOrx%s9;Vn zZ&9p;lSno?Fr45HBpJLw)|NH0ehxUS$C?@osGo6gK=^8sQEsO{)^X>P4|)p?j5F`Z zQU#0c3)F|4m8xab9kKY6-Dyxh=Uo81Y%vjGwU}HXVuWEx7gLwON#;6A0MRlIB@ki$ zPHMR1qSxc~&%aC{uU=1ony>?=PkWGBOiVe?M&ZOAZJAFbm9kRruER+93Pd!~Pgp&I zu?T8`2M_&>EqOekMIC(Onz7rcZ;S>UnxN*s!9pL)jTP$bGqHt-(2no@Y}%|=9Se5h zyd0y-ULXldiRvX9dox?JorpdZ9;TGKy>VyWPbkqMg^Ap+q{Hk#mV$gaUtrDK4xU>9 z9|Y>_Rc3O;xD5fyW+Y<3q5+FH4z%sL7#?g(0-yswk+!1cW|%*Oc_FFQFGatw5fU8w z_DB3)ZhBlL7ar@P_gJFOkxWirsCV0$=-Hi=LxvJdlgWLA4 zvVq>O-_-l9lB&v0&5d*7!~iZSUrJ@BQYk5RAi}UP#$?w~XP}&JioGGgRo0HNdI&6z z$`Fz4px#)H6aZ&od0Hv9qVs5uOQ?#wpvcOyBWTFMAU<-Uh2RL6waJ!8)s28xUdmRT z27)ngIQbSmv>OSC#Gk6D=<4;%6@A0Jas`kmk6ZyO%p1Fbgm~h2P;;0;UBU4--*)XD zxOY8F98|nw>eQ8>LU`bUQ0Zf_Y2l@?3M6C3aBJ!b02BzsJCXE-#d1iKUFjyf1?7Y6 zjY6Q>ERh1xA}qfXS9-hYlwE?-#ay~5pW_{c(%r&Ne7TyvlXWu&$w`tw{L_pxY}G_|iv00|iOa&21mX&ApOC_&knS~hOf>H0 z=mjvEHW+@4k5r(O;PoT9q5=VuZmalpu0O4(bn;l|s`Xz0oE8Iu0Bn^G+zvxh4Orbo zYKFY$0pMeMo1vuF*CPf#~DXTC=_!u%v6x6TO!)Gvez zXcxYV9||uBc_Q1AUF$#R$RpV0)a641g?x zT~`E1lThv?J0$sc*)zF8y1uxeS`_$zcQr+Vl_f&WBbYLIF$hHRkHL=x{jv-$kxalNrs@Wg{qb}Y1dAU`yc6BQ#7 zsM0ol5kM%n@@Y+(3a79g30mwatNgo+z?iW#XVIdA4?&0N_T9u348-eZgQ0}E!C-Jv z{wx@3m_rKz7vj-A!ELpO>?r3cOp@(U+TQZ64P)jCtsb|S#0E&5#K3L3y z^tFb0ka|1Kr^V`_RkCbHB`}J~lYXzTqfR9Hg8YL7(;x6z;&-{Ti%=WT%38`0z=m4H zY+A_(T!7lNzmk+)=&J2+C=kE>4TTbDe?!5=+22s8f%Z25T!{U}Nqadg?O1|@)ExNI zBnAh8_SooWXfd}qp77FuV$GUZTD{sHin~XWi8R{C=EwLb8%r%~Vziyl8M4rpUeq@8 zCl=8bn`#gg4PLdbjZr8`U4uH)g&Ixb{iq3|Nvs_Vtwn<$jI+|}$3gO%{y0!!_CF40 zloN;p9p(vwVTQPa-;?sDn|X!bdx$h^FfI`tX#1rewXD9>-)irb@5K1Z1;*xQGdnG{ zkaDHE+-6g>-6f{aNjIpGR0CNha3;PBWd3&QJ00 zVo#KjV}JAzU>c|MWx!6O%-2f{ek8kASIS@kttJDe+ms0n5UWQr9&C-J?u2dkh%!@7 z=?j=_eN<06M0=5E^a!WvP|KR#1eN6|uPiJHjfWW+PJfX<(?OR)*~TRB;#*|I{6?T^ zR`8+tGdbKu&bTo7Xc!u6zXGpXB-;9Tce~tem^JwMbD0x*^jcCkv$CO}&slp5H*;OROZ&$`0M0#kGL^aK``r?s&V* zJE|A&dW1NuW+;RQ>W0=wSP{584;w5=P)b{Q@Rbj;uCSAu3>5j(+11n>xo({W<4Bye`ax1b>AO59q@U%s}-;;>ZVe>>j7m}oe(4ks)XnuPRNjaf$%><4ASW=sUvSmSJmeY zO#sIiJ79cO->p#lMek$pQx6`g%<|DtJrTkv=I4Ea>hiT-=ctqIK_i+=G3Q|%7Gr#E z-F=n+oL&PGS(A%k$Wxc$2D07lO{eB=u4<#hd+dDU&idcbl3ZFC zf3TmzV5)-PW5a+*j)DDTg)5HA$wry6XIfkDwjP4b=D9^_YVu@ zC9}y`t2p|@oAFVhztF7=% zGwbHIm&Gw(Y)DquV`}Og+T?s%JD0cb_mJ^{r(4oZQo=a~J>2qkNBQGg9p6Ffh~HUM z3j!PouGQ~DUZ%&qvTKD>fK=vle_GQy*3>1vK*_WD9776BZN`9%OK-+N4oq z3a8z%Qqxbp-N)Wvy>+>U+^8CO37Sc?dz+-iZjpcAC)*NE3@!FWa($bW^Za&wSisY& zy1i1u9j=W6s_ZGnuk!MVEU>u&Q~>I;T!QcwakEIamW%jI>mc<@_K-u)7U-(>?Loh) zU22Eni-1g8K0TYidH>kKSC*$cNKEIDVc1@8@&mjj%Y`C=5Dy>_?j6uH8kD8|v-v|H zgKmU6`fu|*gJj2XwOW7wRS=@VsS>j2c!iRm#QGci=x))GgiL6^MTyf}%*!lr8ir?K zV72AoRg)EwYba8|BIyUIq`cVgHaOJus*{FR-ZAm^`;y;%+Z7pSEJhDdVw7_hK6==h z`6D}h5b;C7*&->fb1we#UTwheh%p!$bjs&*ao!D)+mH3uP`sJ`rzX+T{vpk)Vhg<9uxX`AQ%2HTY zUMA#$08ScgJ(-#jU}3#StwOcZ9!#tM|r4uOeMtZ87X2-lqvmkvrE6k&>7f4HL$R_ ziNS%J2gH_NlR^j(I>ji7==cJh;q^9#zW4k1K7SlHhjo0nf84A$c{Oc|Z>Sxayoa@9 zuyB7Nmn!8DQu(|EI1Lcv{&f()KOU;l3OfHRc4=@7sA?s?r7T<`Rn58e0`nv2gI+=k zF~Kcj?9bgA1>iCAsPckYzEVTj7@F`SUp{KY&ca`0kCFP0GW+{Vb_)pvYj|0a@7q=)Zlh!unGW4?g^ z({05yvHv@&WLu{(7(Sy{=5U-6)9d3NRb;lAT!+aye#r0AV@P&;*NDNzRSM{%n=hI>Q@J!eAi6OXvAf4 z#I*Tzw}*u$XcOcpBd00M>+SlmPB!cRmuHc-^vyQi9J7FUPEd-h_BKjG;gNZ-2+?N! zVu>Gl7igeUopF2bcav6B@1;0Bd=7vM@^YoQlfNMRSgtqg!yRN5)~j_~5XGK05B6Sf z*UPHFOC#|0aU0o#=xjjJMvUqe1b4^u@V>y#C=%bR?eR9Ui+n*%%xKX#_k9#|A7KK< z^~0O*vc0%GPp|001bzHR4HAwj5^hsw-9@yXM1bml={{|4I8@q-8L&f z?P8?!A^*?gx`?uzz+6CkbxHUSID`>HR&09+ilIIt2E(iGX^!tK{2ey^Hz8(B<%sN` z$6$=_@dD1T_%{j90qCijD8f4dF zbf6Z29BCi*<#SicttaRp)~g=6H)?c&>l3QkdQO^rdUSr=mdPq#tnx#8!wvy()iwnJ zDjoryOs(n;aZsiDhdB)b{9_nI^BYJEd`JH6AxI^^-5>6FjaD@SLY_~bib%>7-?Mo& ztVm((kNPLJQx->6++mG955&~t!AHF-s+~$70tZ~Iu;hh){n1$|FcJO*)hg1gth0a z5sdx+`M+$e{brAK@w9p*!+p%ahI9lK3TY<62h)1oY(ghPBygAzu!9ZtYV=fCNcTD{ z+};Bg7~o$BAJPW1%`$ri_Dq|FMln#A!-d}JGD$Bd(`hys3@=ChK#jF}JxL}`{ zh@cq4McX51B;oAAwduSvo^ZmbCGCjVqFuyhoZ*D;iZ+}bT8TNF&^xf`G9r)Oa5C-p zm#fRkWj@Y^<1y6rjYmt^BfFTcz?2dzYB)+KkCH35g&?kepn~;qxWf?_Dr8)0;c|s0 zts|-oQ(DJ3pI3w|tz)!?FD@+7VLMk7J(PjXs7D=`Z?+@{dR^0=(Lh8$M_UbWs)?@H zSL>oY{5ltj0BGa%61YEK{dof!Xlj~$7k+X5hP#`xTJz=^6e_Jj5NhF|j&monkLF?_ zq`w@nKzk!B2!WwS9Ce`tg$#(Cz;Uk(1VUJgaPI-&@F=rYm$v8#=q|;v42WUDL%^Vv z4qY@ss(E`D4yv@w3^ouRS6qR<)d?YtM4kx<4mcjvX=s-~SCbo((X$d>5jTK9Y;GIN ziNS-UhdUZTEdwC9e0*T{O3xh#r_vt>!m)Z;=qou?_?PZGp-i)@z7zcEwcU3jqQzp! z>-(UoIq#MJR^uN2Z>_Day+@Jb;tRIgMQN|0AVT0Hm!jzkazMko@-jv9mohvcgKER;;lKk%$8ar1>|!)=Fs_%&9MbS`VV^F=Pma=a4^I^1RAtG1#gnksGyy zAjreWc->21rIlcz(&H%of`>A~14SWF*1d8{-*5ve*dK3c?5j?Pt?_dsJ1C2DlR39J zIr+P?gmODOrArJHvX>4>TcvZyKWIuL1r#6TI-FC19NevVFob#WJt(&skAp~$Y1 z^fG){I55>QHU<~u1}SyUr561zRIt+Zh4WkB%urBOb2v~l@S}ZQAs_u*C)jgpd{-T( zYHeKPS9nSyFq=PPqGW)*8+o*G7#x>Jj093q91{i2>YoS%$up53!kDb|(u_XMXp56g zUG;J=dT?Y5o^L{T{Muce#DlOkUUw&Ym@ZFz^DYUcW-jX>HK}7E3_mKv^DYLZhJpO~ zJX$<7*|Uk>hIbR6EDJ#CqZm}x%ZVl}fDZC_0;7A`C$$lTS9(6FSKyEp;T}*1&g?7S zG>|`b)%RFzfRB#~CnPww*;es2aH%GB2#4o#O0|Gh8vj~QE0<@rpjus@fF!v;@#7g+ z*3a9dxDz*DJ?_}X-{&5tug7nc)n7Bw=@-|7XtF5kGZd`0XJ+rvlhwpBHI)$4b0%?PUZ24sy82W7TtnzU}^DzhQ_pjqWIrT zZ3lz*<$-okggr^n4lbylTccv_`CPul?)4ho$7bAz-VVyJM+_R{3VGe&&!m8NTj%r7 zaGBGt%(IRe{W;2?2i-C9(bb_9X$9d4^$1fD*daHNnA?NHUIT&2YyEE*(o95C z(8UWt;%GD+^hVRscrsp&rn6)+&Ii+Unq;%d={5xyRKWVvU zY+^uoaI|rI0Ep;QPJ+uBTOc{lsVhCzmEJ6ao(_12!&s8SAZcgG5 zit7nh8^jPqTxPo3gsM~xoR~Qh$B@U@z_a34)m(peAu3_v+Q%Lybu{Yr`~68WnoRnG z>0o&=xEzl!mU)`4W_b$tSIlNoxaMb%v8|uDw+3#D{}ClQXDmqK9v*_X1Qg4rWuTy8 z6r!Q5;K$)6?jq@MB!q&XS3OLmJrv?RkXV!R2*0!F1Wg#HE#v)dGnRjpy+9QTm+|4i z2&IyFX_-I=iCo?I!+WW*YSP9KK#CXBhg=vMeJnngA=6YP(ijyi2aiWJTU}+hVxM?;-;jO}= zlS{%N&qq5RKnCL&3XatCEg%(9tReBC-3E%Fup}LyX>8odNTQh^iY(pT?vL>JGwcYi z(;QwK(T+9)_Gtt-N;`$7(~h!P(-`U)RTM0$sAe#+SRyF9fqW9YU|eOMLglss((n*T zk9n&G>tVo1(Y1U88v-vpH@$^(?u#-_q!+vIg9fUZ@L)LHK^;2|*ZG0U4fj-YrVfRU zkPo8mZgHEy#p*fuqJS}w5`C)hXviC?5ujX)8)X+u1xHf3CuW7^i@6|G8X{R*!E^QS zW-Ob{1h}}HDpWFP$N@(Fz3$xI!dq3%AZVOW)r-|#bg8jbvNZi4XXlT5*!-7Xh>?ei z0z8ckIqtIrOn#;Pz(hQGz=r)a#FVN%c=8}%%CgFpPz7WLYXz5gD;qum@xwXm%r2>q zws_2m)iRe5zY=o^&uL^Z2ht)(n-tjgKK0J_S~^K;cj?_Jq2i_YmfusvLMxUPsm4t_ zMlZ8#)EcnDT_n}0C?$gz3?Ph3QuIJwr0norHO#_B_BA~Yivyp{iE2c68#E6kBmLw7 zl}emwZ;U8QkQD8F%m_;WJB=}_impzLzftreh>MhT9ju1wsf}H6stigk5HEEUW{#I0>&7QqV-=94dEybgPzGzn@0kxt0lMmAPPIWb^=FiF&5z+kY!%5 zXrO}n5*KSP;HHFYzJWuqnj$yb@?3UiBn2+U` z^&Tb4&}_GJzyN={S;Ga(kWhmsPRW=%=LH^Gl*wKYg{%^}-kuR(p}@!Om+kJ`mRS?$ z43Vd)t}yO-#rWRl-w-RMT{;HoVANQ+#APp8No13rk}AVzbMmJ-+twMffcvC4C`Um| zdyd;dT}M^JeV(INYGK31V^-nt#rhV;I0MXUMx;1PLB^cR5BURD>Q+~mVV__kOT zyW0gOnvZjZKB3*z#sABT9o461{er1RSa0(03ewQdkhENb9l@0Ei+r{I4sxaDnXIb_ zBtE;VWXRNUjrJLiD*)*7edKNuXqR8-1#BoC;4+-e0yf)9aDilx!aA1Nb~q8F@m*omqJ|_Q%y`psE*_AOVBAf?1<_tcSOwNh{VY}#wT|P z#l_~%YO_nKMy!;gB4VocVCjg(;c7t$H4Qg9E)ECad{$O&LeKfxqg;nMMvd8NNv<@0 zxrIVv7KzNEs?kuP&e8kD-xhGiWU`0)C{{;rP#ZdA+*#o*))LPOI&%UPC9XMB4?6V7 z|NdvOOT{9bh9M7;4Wy1pdU#344ges*P@p*l0qr3dsWnUk zBxr-clSGJ(yalteP*P||z`3N9H$~`YhXgB4aU?~N+}#61M6IY?Kkkl2nn!Du)|=ZN z+i1CziJZEnJ>Hb%F=rP7of&#pd38}HEhu75+%8>F=QEffqH!m*MU@!u zL1&uK&_HjRplw5Ug7E+Q)zu>Zp5}YVo1;7tEzX8dw7(l#`@cK0FK(a2WpkccSRQ6 zB)aZ)i2*5M`^4-Uv7KUcW;*WLUNJhvZnsne5CiSoelg%M%Hy_U3^0}3Ge!@FIDEUt z0HN<`#44WNpUt+&2^+Y*V~{VKHEx$^s?3>JHlQ#$dbfX!UIy#V?I5EoHxO0ZLq<=L zN${o+9Q~@dkBp8X+etW90h>%aNH^=s?38anf zO9QG{goJEo8r>_mH}y?;0|GV~bfj>yP;AEGU~4}AjTX2SAJJBtR0NK{8~e!y1`<6$ z#d{9<2()8ci2-ewRl_CG=Mf^@;�S(z3;W9(V9ZCH(N^tSlH>Y(T1qcu_^D9Wvw$ zJD_Y&pWVIW5IET(uNH`mf~48;fL0Zkn*+83p)N!w#9PH~=^ar6Z}k3_pz?XBcZ@^2 zg6i*Wa-096kBhu}*n!gtVr&0R4{d15+xmEiQ`vi!->ms~w>>1^rBfN=5?DxCu+6~E{bPN&dB6N8 zl*=}_dr~%)aXi$J4JG^ zz6&C|AIh4_>m3~R?V_|!L07D-NJv9(z<;xabzHVaHwtt?UiU>?tjws^vxkejwiZ7r zT{UIJZP&~Edff@-(oNS%2&*ZrKVeU04L5t>WMLO(A{Ew2>8dHKKk~!PE~9gh7ZkCi zsx_zFW-fqFE;=t)9eq7)3a~+T}&sDLuO<0_#bSuX3QyI4}0Q z4Zb_AJ4$yy^u@}KMmV3h8!&3GHf1O5|H+A}DW!Kg+(ndUd>LK7*%HBZLCdJn?v2J+ z84}a`xrAr$%aV)m&GsKRc_)^P_eo!@?C9A3;|40GJ{89J5}zHRCoagvYv=%N7oI+Q(L;C1p?A`OpwR_64}*Ss zh$(zdsQvVaoCBce{$&>6eo9Mo`DhF6#GZE|oIARq=j?$HI4B{2q7w<)QwLgUo}=VfTY|wx7>m9@m=;EeT21o?I%gO7zFSqa+?Hl;^BMrSxJQ=#c!_ zAe(&d=Jw|TtNNWgUXiQpC%uJ-+QR8pqK7U5&y5%V0#Il=?u6}mln!H&rW-q7K9cp#{MsD_yd$ilYwOaxj`r zkmCbT>yo;CX}ZE+(TAooqGL>0 zS=|H2WJH}zDmWoi&`@!()o$HN?URf|XTtgO z(233{_O??K#Vm2Kb6=ubZx8o{3gm~LX}S*?;(O2Ti!U%Bu%v+ZvdC>~)bdvh<1@be z<tXJ{J>3VwXrz*z60#VJ|+p$H8p z{#@jfM3n2R&96|trKJ_W=F0`<96!>jT|4A%463~kZM@$c%h0xPl~s6S^tfXvU>s2X z!Yqk%>BuC9o8xB>!~5{Ct45bdRGWN-p8Cu(*r4HQIp=86hROqT&c?<1`X&PQGAZHO zDJ)O0b=$*m;8RExrNL9;*f661p3wv)y8?_pto>8ENy@Sdc^Z+RCnTaN`=a-;_o?@; z2YckB38qxd+-uA{rrhwn^ z(+hW;Z;n}B!e!%jUimZO6=2C{hXZoJt`=i8vE}W1$i={=14MeEUyGdbL}3=*C4 z;`L}P!-kTTmLYzCdjR1oI6RT4R9%`&8g;=g$lCw`mchjkpT?{K-s)4f4D7Q7gW*EkL=I}Z$#Y1Sens_qOoBLf?*ve~8A!JP#jkb!ejDQI{hXBB%hR+gQ~PXY^V{_;n81wJiS& z@?nQvx1P5oaRiDea4hjxkI*PzimB62mICN~m#36Na%CmdL*eDJ{VF%wl)Pp5>#h+%S3$smig(>Bu5EGzSUK<=Djng`Mil9i8uIy%`~qu7;o3h8iM^}mmN2GjgBy< zYf6Qzkzr9QPC>>BmYiyf?Nvjl=C0|>Qhzh5-9QYR03ERD`|YK(Z!$v)bgsAi}x z*?D2rGH81%ta_+QI&AyCPMK2`?8ri=DsYU{dUZT?pvM25zNgYpNT-CV$+I-OBpE0r2u&>jCO zj;vv{d%^OE2{d@260ksdRPWq{jh3(li3?%GLc|3kegWcy)Zl!D3ufek!v%&#)b$n` zF;L?d7*6Q%3kxSG7U zy$gHeK;8woVF2#}s|D_I8GjeH8H{io?;yB0u`uKtIKWfg?Yx@1s$ zcIeFWRgat=LDlzHJ&4F@LZ7S$RI>d`38gJxQ7FGY5)j0~LTORiPb@RkesVz@e^lgZ zw>=cQjVLAV@aczMGP<0tMp-_+SSI;om5*10VKTl*)Ba`uVmO=_#~~`&v{VDqYyWxI zclfDGtvr%TR#dCTiC3*63q3v4g(Pw)4q)1x%s zqYKd%H{>jcK+PZ2+hrTK?gS(2eCgO@z_1v0n z>B8ytDTz$m)$Rxf7Pi+Nc7ZqqVPv`v0cw1ZvFGE6kHz@dRtHQ2COaY(B+G1hK%b|G zbbj@NucdZ=4jnprh%wlmluo7Aot|E40D&H5X#jzp;AjAX9NcLD;60o%Yta40HmlQL zxC?xw8?xQ9)4;#IS%KF;57#>jfAHY5oAtV|v0ypBFqo{yd73US(&;em&o1+PI=h(8 z1`wMLCbPabC9d*kO*`9)fs}5Re6wqdLFwnqhpP>(bjdb>;A3Yil+G6F@ORJhU+Lc@ z86E;CCKnzAuU0BN1afdDJOmhobtT-(9ew9$UDz>s@E{yg8XUK8s838DWRs=NA%!5S zS&qGK@;eGi!`ycat`nrbW6;;ie8(VA6W_RJLxtl>(KdiF?LAQjJw{TkB+y$!SR;QP zguA8mc?hl+^4uY4+DmhXU|Y9y3?T$nOEpR%s9MXXhafw3y;2Ab#9P)neh>n_cI{FK zaBVw+W=6@wCECSNJV*NDuL)(>4YEJ4df9S0?T;se%VnCQW77#-(>fl{(%A$aiWufO zNsnW`9QXP#_I&pbR&+)Ao+uRZ>H&|IxEr{2RGzyDD{yg%*e|oK=zYd+8MC)zV(-AF zm$QxV37@1v+N0Y&H*zb??JQ>fHNqV^&%#!8ha(Rih%Fo|p#-MV|obud_T`;^O zXjL5)_M7ZZflIy{j^-PAdW>aGnG|?_+}WZQyXLibCt{Rc-B!it+3#@6kVyVeF}Us) z=|r95?>!(Hy|Ko&e0$kw3dx*wxf~Cdt9&pUtp*wVbI_j*$Ct@+h1K86D7rGt>O>wx zfdTIEA5R|qMIPIkM?(M=iS8p|m8>qx$4;AqyGcs4u(w><%I~acMDA+6%@%MSK><&? zXg(S3$spMC`789@P&nT>h-`98)Ggp0%seR;WtwceNGTHGIxq1Z(mWC0i1+LKKnI3; z@492rR0XkiEZ{9Kct8;D4z5dv_J91ni%@*D{Alk%qEu`|!89|yW$`W&M;+JJf+#ce ztc%y7xyAbA0h`u8TD+y|pq@OaD^d2mQ6mLq4tNDOck|~MT7k$PylusPP~+TUpa4%$ zkU(JpB`#p2;n|>DkOsy;eSpQ|xHYVm;UMq+(i_hj4Fi2wwR6*$K8LJ~C#fK6#BRE~ z-5OECDS1;9 zzaZCabT?=bLuqbfb|51R;8<8j3pvOX4)Js@Gw`SrX#I%XD@* zNmdvAet)o>Wyv@hjq+hXAy4#%Fz#Eus?Rnk`7|{8b)$wh$%4EXn@)8}f{?IPii~%u z>k@`+Ppg!n5#%vJn~+^^dUS?!>4l5BG(E#Pv^qN9_AokLSg*@i>uTnCJiRuJQfA-v z;JOdC+q`#RPlVd^@$^*>B^XEj-smDphs)V2z05DOi;KbdVvWH(ntRqelpJ(|dhe{-F8+@YlISdmtsVQ{kdtBr47|J#45vjKheu0ZE&)jzlz4 zxp*xuoEZ^XolK6|yj?@x^89lN<4~4Y>>$LOEvm?!&$S=ASU>)u2QMO^xMVzBO;=gA znp{pU`l}?F%|>vG!!R3W%hi->Ze!Lh#|?ZE1T7;kq8Nt`NX2twdO+nG!;p4N)Po64 zI8%;t)K@j*g2@N!46{c7Ye2M~@ptW-lSNtsJM z(}FdBEzu;|nI=N{c{8h3ghTK?kn31m*x=hZT!_ z^jP)eLb4!iT~ZbtEs2Y1eSI;NG&5$IjP-!JGmqP2nP)7py^qwRAE7_@=w#y~9GS(- zs5jf!>t$Zt10$6v>$8&WzQL72@1Yc`c)LrJ4Fs$A!%zs~Mr_@ys=){WLmrff6>}Yj z!=*0V2E$Hax_2Gut&uJs_yI#aZ|1IMC_g}sSL&Yc5r-gcD9l+EiD54BTCoz+)2D2& zOYAMM;_aFs_eVGaVf1YX6pnnPUl!Xu&&mZY>3ryBT?%n3B|yt3d2y{9YS7RS;uZ%e z*h`>ZZ+*C9E{+%p)H` zon7?|c~}Ycf^C6pzEj*X-F~<&5KecKTPE8FwFRQdhI7j_dw{k;GTD-DnPd;p7D%Rh z)-BWQgW3|&?^h?F*#Wc#l8xQ&mZ=Ye-vT3$({7n`7sM8bmA1=UCb|l83&i8(a?519 zVYWap-gs}BU^mP<1fL(EAZC%}a6JTU(C@aqLfQ;4(DB2sbUR#xS9ovH41nNgx^Hfc zst~M%?t=?hct4NzSMz*gFSS zr7dje!Y@RyhS|lEB^?M@+ZPV(1tZ}ZKb0Kt2f=OG4rU-3WIr*m zG2PsAwx;`PUzw3$cNvH7aB<~k>ptI{!XgTU98EE&MBOdpKL-=YdnkbF(_`7l;V9yX zGNCysQ#F#I@~Gu~D{Uu=Pq~$TpQ{p*1uz&eQ>4KBkp5{OauJDqI z&d^o^@^?NBEBDE_?V^egxQB(*D3R;eZD|QIFG}pDetl|nBVZ12Q5eu83qyBPj9kh?Xi9HKztVT z8rgomD$byUtwoBV;f{Vr& zG_@KI@tH%C68hF1IMF2-qUNbM1e+`2AMLJ6d=>;7u8KEm2|=i@;&|nq9m7|NR)U2P zUnTkl3qHr86$2*Dk z4m&IwNB~2;ljs-&ImA2FgY5E79GdE$_|Gxa`~4FK>8cPA4P;r{{S$9{X8I?#5bJ_Y z``iydaPL4Alr;@v{U9p{ds!B=?|2GHtM*vBr+Kfh1WXQ0icaBd`{O;u34^7&6838Z;eJQL0J{7L|1OKz?nYSCGt-OcdAlxXv(KBn z>21qH0?Al?6(7JFH&!n9VhY2StTS41xK-}P=xMcsMk@hdb3b}Zo1@U%*xixQO5ily zlHT?tSVP^FPK?)W8I1*(A@0lQ9y@$-?yNDoD)*)%u(~`B(t zE>?mvzCW=1&nlA`7Xey%JKVqKA8wCt2h{xJ?N-ZwonT|BvwgWOTkg&J~{ z%Nq4<;(pP?M|lyc?sYJ4QoW%lb8ZV#r0>GXiMvg#iCU=-8bBj4Cw&(%tDKDJ6b@4h za|8%ms3E@ELmTP4pxOv(M61?tgoZEzwKsT?nh8Ea!WOAx_z=W}DlsV3RPbtDl!sr{ z#yTk0%O|MPT0?lv+q2!Bg7~j)}&gC*cJ8-LC-Za=cOt znZ|&VSW?d@ibEozy0BeQkbtMgKjL>Kdf-d;F1R)1%GIM$Jf&nr4~%dvdVrtR=z)a_ z@TQv_DzNUzQb`d6``H>ngu>=19l$k`jev*uZ%%S3Y>v`F@;O{}wu3YFVmr+yv~6;m z&q+0x3r;}gnLHjwYuHOD>ZsH=hczYuT?T{!~b>+~+A=i)gho6NkCL?ly6aTap_ur%v zSytoAqQ$6zq5|f#Pbz;tr95@CdV%vPal?HCha)(R#q!QmG+Z$*CXm2N=L)#!;v0BB z$Wy8u1)v?Gd|tMKoGeH8b|PWtEAZ562{{XE;HVC&XRoEek)B)Fvu?TuQ2=9j22Q%w zRBDbJhQ&IEWZTODYJQggZbf8uFy)0l`@1_fD`H#K)V9(;c>|r8l2G7C4bM!l| z7S6xT9c@729A9W}Ny*5I;j-QmQQ=D+(4smR(o?uviM-}wk$gC~baTwmVHgV#YQeZ} zRFI}6`Uqdo>I)5ySSkj;3Ltve#=->^#g8|T^pSd7LYb-JXgGM+TW_dJdKr=)g~!Hn zPV>Ryf}$Y(2*n|*upJY*v@952`0Kf@$%1A}FuIs`FI@;Fk)OxBaTx-SzS#(o(gtDx z^0+E~$WnV>I|SBEQZC@t@}M~#EI@oH88$qMJFlrwUJZ5;D?+0h=#`g^E%TjQty7VL zga8jdTb|f;@hdA1iU5ch>F^>Eu(z>X0Ae&90|z~V3&oIK4*~z=flrR~aAxpOf$A-8 zfGMw@kVn5x&KG-ItWEy3*WU?>8q?JOIw-aZ6`#!Ow4gC2r(pi|y^cC;Zc z#62WW!_l|k9Zg|%6{6BLObpjs6Z5lqyuQ+0hx`t^2^a?_jyKmGt)+d%;3-+lCa}3< z(!nFb(-P1I;!-uY>MQal0un4nt1NQ~=Iih-6!J7?z1h{0b36-UY$J;v&@soGgmSq; zP9U`vgGstf`{~6vStgSKPNRp65RNa{va~B=>o)-9W@LqL%BEXorCPBy|ge^m{J$31U%7 zUCZQF+ajwZ`1$+gKlAi(euI)CXlN%RFg51z;Ra&wAE{9e*W2-pU-E;s>wLajiJok` z*}A>t&Kg8P=2S6c+GT!3Dq_WIva4-}F*qvG1PnTsuNJqE->no&S=}m;_@N`LE)0v! zZnwAA8W5Ol%>V5dZ^j5Kxh$F&ycVOQlUXVhH72wm9!`$XGKkEx7bn^iU63k4uoysl zxSH{|s#N{pd)w;Iw6w$_S#|OWDrC)RofgmjxkQ1G8!9m%N*2}=E`Cg~)T~-5p#Zo` zyh&KmP@A95vXhey0U!ICsDtFDap|veIX$aQ@CWgGet@wrq0r;jRg=jr&^g`P-|n(p zcp+w|E%C>EPK@7QEZt}8>=+4->Qv)*u@WKdhRg4&GxEvb@jRm$58;>2DE>g$KTlIrT8Ki^#$WS*o0NELy{1p`R{b zPRl@hNGu%CWyNVZXb*{n13f4|^`tlnJ_}zw@;&X?w28*W1&%ZCfsGJ6W|k4}822z2f6NAib$SnZ5k7$!d@p`%7qjecP5uoZ~PPf93XG%e@{)(&5RsQjda z@};}%`&G-XNW98{9b4M6ZriH=|HC1RX@ucc)kyrwf4{yT6nCdDXj|O)jR> zSvHxBlTn_em;LNA9p~8;3jfn#PHJnTxP467g!(45W!y(_!HD*|nm?>amG1{&|rB7W456W4jMj75?!A6Dvb2SoNg&z;V4~*p*Tii7o^SSfVGLJyCO(<&sNnB)50l*M!{lDAl4X`Am#fua zIlF{oaf8`vHXbc!$!JPaBuMmCT(Vh8+@;Vr0PS3JJdK7WTGoaGn`=jO2Vmt`<_SOI5n{_l?!LV^+19P zL&R_vIa;hP4m)vwnznjw0SSz*)48-g()WSLx<+nCP82Ta$O9phqT&qHIdhqjvEMEUE`p;mhtUCmlx(7BC*)YKjUaNFSp>p zG~*cwSGs({V;G#DqOtMia{Kgih|Dr*Kb#Q{uK97&*cKFbX9|m_GSO-pML-whe3(pz zlR?rSEYo~C$g^dZjaU6)l3WavrC59Gc?mbaY_6(-5gV{b;W1#KAT@h(GNg!#5yR|H z@L0A z{9`)yC9wl!&tzrz%XqOn6WNhu1f{a8VM-1lnitvQOMZx(ZRXje>pR#_ZK177VE+&S zxJ@=BHQ>C2|9e}akw(Pn{%dV8RLfLV3}*D*Y#SQGOpRP!$nG7O&v7Zi+w~zYlFe&$ zeO=MTQ}(^#c(j`Jli6xGNwQ>^&!)qR{&F>3<&#-HTxG<^OD{qBIMj*~**t>fQy>83 z$OD_o4%-+S+v#{8;rbzYdGL(IpZpQs>=sNhzcK_aM&=}olRcVgQ_=kRB_4|pOo1LO_#!+HRu6$KEVXLt8H=W@U%PdcXyuIb^CCGyn3eK< zp$^_fbZBoN0dze~ZtnVsKx~alL^+4_=+Y zWQR){9^Q%TVI^7egmnpLWpb^Mv%-2tFWYVfVtOnJxP*I=f~L-qy26}m2k>rN9&hsn zl*goiVE*vUdnudK3JUyO!pR6PkIV9~J{-{v81r|#4>>%`w{2TGG7|L0%TqK2Oxs&S zM#mVQD}%~1#U!?Ox-@MAE=9U7Ps7~eevy7#XNMbVd?fQn zS!AkWercQe?eTV*7jt5^u~B>S0RMqJYAe$@r8<<|!Ao@Obn!LW9P^W@&c1**Q%jiJ z9gyweZl8O|IDzS8vi4%8kC~uT1CTLl-+m+0?POa)PO5@h(K75bPG|}DNk%eXB8cJ9 zA)mA@@>Ak4=ibG*-X889Cx{kqhCSS?cvqWUa{ruyZGye@Lk_+M&@YHrh1()g=9TDE zm2y`-Fq^b$j{SUrlgd6`o|BKC9-Z3~HfB^921~4u>q3CZg`)_xC80*9auWFUX7}yY zcW~KoLGNx$?+xm}@Yrq}fI531wkN1{-LPwAiY$^T?;nonT7tJ=^XBu{MUEPQ z(@4Ua5E#4GE7R=M@muIa`7y<_0$Z?vr@5)+l6I*WJx?Bx__`qucn|j$uIW4pf+AU$ z@bCvufyNE8DU|&C`p_b{WVtKagr|)eY%RL#Jx|xSgo|sYvm7B7 zk?ub#u7k8rZc{6@VV4wCz>lTWfrX2NPpSGSbYY0y?^^cUEd>C4GWKi0*7OxMyPaQpb_9i(HVt?lY0i-Y7U z&~CtglT4UV`KnG%lKL_v%jTYkeP5(2r?i}~D~%>(O?molfgS}b^-4>&p7*D#Vw?_x z$OKSHqyxBRwLz7(0pyxF0h7df$p8~h%`AWkXr-oX+)MID4a66WBzE0j$xj;#eg_h+ zXikeBEHT{{l(+ApkO&f73_`2cz<^#k)inB~^=q4iNnm3slGl}Ok|e{8rOCRyYm+!D zf>mDnbCO5*A|Fie8_rCY8hyMAohqpE5h|$RvvBjj+f$xJl zTZ@H|vxyusaM%JP^?v0nsmb`Mb%aCTOvs$B?&a4*U~OQ?M#+QF-=(FQKr z?5IT2o#Rt{6TX*^XOmf$_lJ3!^)JWM<#0Al2ZLmm4psxW8< zh}Q{_dJITB2ey)=3Yz(8vWj+HICCT4TYzd~#yzO$8eEK))8S;i%*L0KC0t%ToK2Sf z$!M6(E>di$Se0EBhth#1Fjn$uv#Oq;Y&DR$PN1Czo9o)2(_oWNs#Rd{g&H^-s3~3Z zZUa(JWr-+w&{1a;MeSY%qi0p$yATTCd4+Ge^+c6#dMHY(2r98q<(QHca>IKUJc0Oj zmnP_75Kqr|KJgIJKaSq84HG2=3$zHhEz$^y0TejQKB}ZOwdD2Y4m)42xgB1AK-DHC zmM=>jdSY;OUgEXNVzu6`%Ny7@p^{*gnJB3K_p2)?14HjAFAk`LvwucJE}h%aj*jB0 zSbD^U93&NkP5O59Jn1w`XP2uy8T6Copg)_9huJjG2IJ{qHOmKsODxtlxVN6zR41-l z#T+0~5cvDYmP1u_2B-R1Q~*JbtX$eGL0w)k5is>nHYDe(m{Y6uWm4xTYXfYJ&bQXb z8-3`tJ}P!dtnN|Hb}`pE9@~Hd%b8gW4Lm+IzbBnDO!j2%G&xY)KnCnkZ_`t@Es%gs zNb{q&%_%wIdEDm2H9Dl*9KCvS7sEU0Br(o%VwCqhLr;8=xcR7f&-lh3>^(6#%BkPD zBgYLWYxx{?Hkb|vL%6$YkSBRM zNiNCmUi2zB>|ivOnG#quKqNA+?96kk;LRh|I(Rr~z1`*;C<{Q9zQsfS#x6}~c3}9? zDR)F8DF(n~j{0z_8l})6?`pmpz3nV52)>B`Dl=>CdsTnSiz&G)75Ianq1CC>0pvvE3PBm>k@f+e!R zy)(MCqE}SBp#0Qx5!J#PsmR2H9acjIFG+KcRFAj@r zm%_chaOIQ&Vm|+k{thdb;sF1_%NM21IRUW4S~5ps)#)G&$~4))ZNo%!Y!FC;r^s}& zWr^AhpER;!_*THn32;kbhB&ZckQ?wS8Y~YxD!8+Hv)<-bWa}-urmytkQ?jYgtYFYF zQ-$S+3b%7oeT+p8ai{i;4a=)-=4e4?E&hlK)Rq3{>23qp8>^XiwFMco1Qn%Psb8)0 zP4@KT-R*L>VI?YdKA9+RQ+pE?m^6Ly7?2BRN$maP0g!&Y-OlA7A>OsA9oZIR7tPsQ zY&O=eXl$rL-{Yt#N~#RUd@c>AU1KwRd8E)v`(zhNH@`>55LTi}_lVRdO&q1*xnUQk zs*u!9*fa=n#!V+OJS6_n22Y@?Gn3g|2YRUqHlaxBVSW@HyAT|)_iwnf>!pJXLZeYS z8BJCzcrz)>X2aEJaJd{`X2XjieLD%)$9Gn+{0so~&fCLqz)n|mmT2$`9oJVbRwbAr z!exoXe~H%!4?@j>5U=N*%+AX9`5OrMzN5n0hY;s)k`msV=q#~+r@3Z3ne#8nnvOMo znn~|8YMN?#`Da0Ev923%WsZ_ld1#&XeX%|Mb3-B57zexn^JjL2s8ULLOM)kSfe~Gz;c(&TnzM`o! zr<-LB{!ZHEW?NW9gJJRMzXq#{|J7!b^zHA&tS!tC!}hNzqs1s=zuR|t8QJ};$B#c4 zF0Ni+Nyh0g8(bvGu%D(`w(2hjgHh6lr`lJe{9>GBB*oZy(Yo(^(5##=4d$YiEi{>X zbGHzAW3!E9N6n9-BZ_VTxS@=Y6>Ooh@I0gCwaH&Z9`d1{U6 ze@#>oCkF3k$*wuJs20byycJ&tO`7`n$24ZgO7R)_J=jyHQLyvv{O( z?r%l^^6r2yLS!tU$7v@cwXzdVyz$bRj#hb+18I87TUY8V1&WcfdNR(gnJE{d_u0$Ju3mF}h4fqy98s zj;HBzwi+*o#NXlXpN;SH0q{JS6yh|6e^yS`TO= zhtJ5z`CK9z9p7=pDR9Km(m^_|R6^WWthd)^c&b07|0So*x-&OfJ+%0f-D*oNt{q*B zF0gpqT<{VZY!F!}>~0Un(EX7Elg%P6foDqtt0=>OdJ0W#Pz5!sO>#KoTlG?YGK_)z z*vc9$IM2LX{&>GBcDE{3#>a`Y3Iw%LE)bWmqGuCD?BiHOCTC`yS9dppD(5CG1h5@& zdX|){MW6u8JiP^nyq9JBED02-)n=h=b%;HJOMr<+|DJE)m8*v;=|5i0h;pGt72J}H zr{3>yoEj({_4(TyQ)Z%sf%39NX0zS|UCBacH+^*7CSKPN`+K!@Sb=sc=7_^qh+5;n;>&%rrQ zn}GU1|MypRd$|}^xS_@tF~R;EEoZGw`6@r8Hx`8Wiow%ig{t!f91kw;ET{o1VrM>o zg&LST?il?xgu%&LpaoA-pfkbSPLYU&w$951irkQ{;R5~Iqko+r=rGWjvX0=JXgk({ z#ccvgn8P!lbytSV!>512$)VlqgHpxIcMNM|v!}t}Q|4 zuvW0B{gqtB)L=Xqv^3c#=^FM#8c#}U;aYO2P`yeV>H;20215szlc0-SFm!4}ZT8x# zL5)REPPfo2SZWU-EyU@}l%&u4DdR@=%4@R-ciHTZyBum&!I(R$M{BqL!w>kO2j@^Y28M^d%@V zErUFgby|1g%_xz!#0&HBvGZ_g0c0R;g@TY@ojpLGaoRW@j(xZ`e%Pgh?0hjS~HMb@F^8O}My zrY_o4AV=M79cEfpBTsExE!yPitNUx@QK9b43)gO&JFqQF4f1#jWh{{Y8ufcwHXKaS z%gbz>q|0H}pH1Mt{bV+|=#TU9<(O<>dzp2ZWSqie%8K)*=NVkm3Qt|}3EvJ_vK2}e zL=o|C9prSi$G8eyZ$Gk#Lfq>cAGzBy_T)FR3(k_2UD;V0^`XQEZO@yx`di56`@ohh zZk0c_4XymjyGwa<7Oye~qjZ2V^-*!|*~V7j2*fnvr2E&T5i)mPG`214hYEr-JNZ9; zltsMf9A_)(l9ko=rB%K~1f=|~bhjVoQ`$?8Q2AYgBkw({!iRkWrBetn{mEkTI8NkK1cE7GDDKTD5^5q*dqiL?PnL~4=2V>II; zU`pmf*=F+~z-FCLgcZl#6f&;HHbNwMG{@@0q2vPH4IeT85GSATmH_5 zHn~<-h(+N;{Nm#$v@U!6`j4A@TdU(sxE}8d?a6iQ{Wi_vav*pa^2cvF%NGp1 z?;*m(r7R}F&p+g=yvU&$**i2_z>GG3Jl{bN{^mW>Qh3jnWf1<_tuydM581!*XSTOS z+?DdF3u_&Aj$CZnzw7~5+RXzh*}SlUh|bCxD{gS~l77(?41qO!eCrkpR(M?MfG(CRKjz!Wf><91Ty#&E3h7S5rE4z!4ituH^QyES_JXGZ@^8 z|MH7&MNunB8AvC_D6+f1Jkz_7vnPKRyYwMGrvBq2l0SPu%&7kkZaJbQO`N*t_-~({ zJorE^58%w;7{UlCc)zo^uU>x0;p(m~EWqCOUiDt~KJ+j>c#wZSmc`EyC?=bquksDN z`TcWB?rHkD|I={%)5T)&b6KQ67sp$Jrr^FgC(y2XqRdRDF1$JoP(E(Fq?I zMv_WmGc=I(&lblu@QTZr(5bHmL=$M6e0eb-@SrHY1%N=_aKOr}-maIQx8Go04R4g= zBUBx*H*b4DR1Z^ymi{k#m@ur52DvzVgyCgTqtSpyj?(Wi-OAne3Q_{y;}y+4L|hN3 z(-{_Y6QZe)?8{yk$!!

    D1| z%$Z(7(LY;21<7&0xFMc%aSL}%;9zQjZ~f2UJ7m!EMV2p**Ki1PwPU~RHt_M^ub|rT z3w(y{oIPj~I=O%j>3=E3PiN5NZkaD2^`30tMC{puSK^#4NPW<4Qb3Q@u2?KlF6E3M zhknHuzz@2LF`=a(u)2l&?hfVRCM(VW=4P|l7w}>#G&__G)p`s6gfE-jZjUIsfsES* z0s{hmfvWIO3E!F70BHCE0CNbzas)U99QY^rHyj_Aeo1fEn~eSdOE@^9dbq)U2I_Fn z76nMP*e+H@o^RGAq6|cZ{&ln5eEBH_;r(=B`3+uqg?5NOut_i`d$}nYgB;GYmxtqW zxdZqqaCQyxf`CUFAx!44KpuL^q2dFf0qsyOvOAzt0)AcWzLDA+`PU-91{OgL4K0vc zUFTa!PHaFjA+3?1^RfgnTwlY;<*QPL#bIoARNv&Ux4W+vjWk+V`(CI2T&$2rW8Fhk z$o;TTP!m$Ir+-?bD=My)9z=zAU|J~3$6FB00rvTbGJ=FurE-2I6gfW=nw*~@4o5!3g?sG(Jn?_N^nZp$g%9@( ze`b{F#@PIw2*UiGNB{-_nI-xeqA@-~uzj80(85OeeSw#Ncs2^7;c2s2XP{Vc1&beG z$X9JBsXyE94(pYGE{n|4!VUu*>c$6xQ)faapR8cXCr!f$P2`iNUGgVQv*b@itH8p3 zOA5F}hK0{EjgF6mO2rQ8iBM~?<^DE= zJbxQPrN0dkE7fSk3ZrKUMGUH|OAa6n9#L@-;vYo>#eaw42Uv#jQGX+BaO-?~$09Go zH2d4Q;K9){$6e_DUA6M z#xVT?)&v4X6fVg9ScHJAO!`I9!SYz{QHV)7LmpP{39Etq;@hrJ<3ge?#?LrhVt`QU zONQk5I55^IQ}d^b{>W%{(Vv;WL5aA&JQ*1^a`JD8Y#hkdgz%(Dev zEut9yE2?@hG70F1_3iN%twn34<~g2ne{9TevLjJFM!7vs|QK&laEXB78nij|Ez>|F^^D>wiP01_yKCt9B_` zfiJd)8!$%4ErJB*_=r~fc>!kfHi0q*SoFi5A}r-#{RxQ#D9nRY9tsxGU!X7y>?WAO z)p3i~dKd_ND{pp3$OynXZv$a8q1Q~OI2r<~Eu>c9D@m5XDsqdKfQL1pzfM6y*t%lG zdss2bblJXSYp7e=6(Cq7HjpgH0^L_je;_FymXRTe9Bh#BiXZ(A@Irxji2B%9#k zU-AJZ$v{uQjgY~|z6A&BE5uuSso!b#qv!sp5|H&iwqXz zz$|=6eIUkM>~{rC6B!{Q{sHB&NXST(AM!1?FeEJY;y;#qNS}R8)*C!nEJtt)6BJJw zG)Dj{S|bzB{L^Y(fQnEz4e3M>nfw##2ZCn-%^E)AAE@}n-|4i)KO~!j{GI)iHsPra bMbSu1h^F6$tbWcGkV+%z4W^A}=zsqo%3Xv~ diff --git a/samples/client/petstore/crystal/pom.xml b/samples/client/petstore/crystal/pom.xml index f4b890f7d80..29b7e4bc351 100644 --- a/samples/client/petstore/crystal/pom.xml +++ b/samples/client/petstore/crystal/pom.xml @@ -34,6 +34,10 @@ shards + + install + --ignore-crystal-version + diff --git a/samples/client/petstore/crystal/shard.lock b/samples/client/petstore/crystal/shard.lock index 97567adcb9e..6a33ec4f671 100644 --- a/samples/client/petstore/crystal/shard.lock +++ b/samples/client/petstore/crystal/shard.lock @@ -2,23 +2,23 @@ version: 2.0 shards: ameba: git: https://github.com/crystal-ameba/ameba.git - version: 0.13.3 + version: 0.14.3 crest: git: https://github.com/mamantoha/crest.git - version: 0.26.1 + version: 0.26.8 exception_page: git: https://github.com/crystal-loot/exception_page.git - version: 0.1.4 + version: 0.1.5 http-client-digest_auth: git: https://github.com/mamantoha/http-client-digest_auth.git - version: 0.4.0 + version: 0.6.0 http_proxy: git: https://github.com/mamantoha/http_proxy.git - version: 0.7.2 + version: 0.8.0 kemal: git: https://github.com/kemalcr/kemal.git @@ -26,7 +26,7 @@ shards: kilt: git: https://github.com/jeromegn/kilt.git - version: 0.4.0 + version: 0.4.1 radix: git: https://github.com/luislavena/radix.git From f7b79e9a26a5b8b800379d18fb03048ce08c0158 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 15 May 2021 16:27:13 +0800 Subject: [PATCH 003/192] Add @lucamazzanti to the C# technical committee (#9486) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 97e01df1c97..4ed127498d8 100644 --- a/README.md +++ b/README.md @@ -1010,7 +1010,7 @@ If you want to join the committee, please kindly apply by sending an email to te | Bash | @frol (2017/07) @bkryza (2017/08) @kenjones-cisco (2017/09) | | C | @zhemant (2018/11) @ityuhui (2019/12) @michelealbano (2020/03) | | C++ | @ravinikam (2017/07) @stkrwork (2017/07) @etherealjoy (2018/02) @martindelille (2018/03) @muttleyxd (2019/08) | -| C# | @mandrean (2017/08) @frankyjuang (2019/09) @shibayan (2020/02) @Blackclaws (2021/03) | +| C# | @mandrean (2017/08) @frankyjuang (2019/09) @shibayan (2020/02) @Blackclaws (2021/03) @lucamazzanti (2021/05) | | Clojure | | | Dart | @swipesight (2018/09) @jaumard (2018/09) @josh-burton (2019/12) @amondnet (2019/12) @sbu-WBT (2020/12) @kuhnroyal (2020/12) @agilob (2020/12) | | Eiffel | @jvelilla (2017/09) | From 2f70e6a5bc7542d0d3199a4e2b45bf283d0947b5 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 15 May 2021 16:42:35 +0800 Subject: [PATCH 004/192] Add a link to powershell devops conf presentation (#9487) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4ed127498d8..625c094352d 100644 --- a/README.md +++ b/README.md @@ -813,6 +813,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2021-03-31 - [使用OpenAPI Generator實現Open API Server](https://www.1ju.org/article/java-openapi-generator-server) at [億聚網](https://www.1ju.org/) - 2021-04-19 - [Introducing Twilio’s OpenAPI Specification Beta](https://www.twilio.com/blog/introducing-twilio-open-api-specification-beta) by [GARETH PAUL JONES](https://www.twilio.com/blog/author/gpj) at [Twilio Blog](https://www.twilio.com/blog) - 2021-04-22 - [Leveraging OpenApi strengths in a Micro-Service environment](https://medium.com/unibuddy-technology-blog/leveraging-openapi-strengths-in-a-micro-service-environment-3d7f9e7c26ff) by Nicolas Jellab at [Unibuddy Technology Blog](https://medium.com/unibuddy-technology-blog) +- 2021-04-27 - [From zero to publishing PowerShell API clients in PowerShell Gallery within minutes](https://speakerdeck.com/wing328/from-zero-to-publishing-powershell-api-clients-in-powershell-gallery-within-minutes) by [William Cheng](https://github.com/wing328) at [PowerShell + DevOps Global Summit 2021](https://events.devopscollective.org/event/powershell-devops-global-summit-2021/) ## [6 - About Us](#table-of-contents) From 2342396465ccc9de1fe685117207158d7c8a755c Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 15 May 2021 22:59:15 +0800 Subject: [PATCH 005/192] reduce travis ci job runtime (#9491) --- pom.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 01940dccf7a..fd2f7903af4 100644 --- a/pom.xml +++ b/pom.xml @@ -1188,16 +1188,19 @@ samples/server/petstore/python-aiohttp samples/server/petstore/python-aiohttp-srclayout samples/server/petstore/python-flask + samples/server/petstore/rust-server samples/client/petstore/ruby-faraday samples/client/petstore/ruby + samples/client/petstore/cpp-qt5 samples/client/petstore/rust samples/client/petstore/rust/reqwest/petstore From 97ddcc2257e77cae47f90c08b5491a5929769c3c Mon Sep 17 00:00:00 2001 From: Steffen Neumann Date: Sat, 15 May 2021 17:22:48 +0200 Subject: [PATCH 006/192] Add support for Boolean in R client generator (#9469) * Add support for Boolean in R client generator * Regenerated with updated R generator --- .../src/main/resources/r/model.mustache | 13 +++++++++---- samples/client/petstore/R/R/category.R | 1 - samples/client/petstore/R/R/model_api_response.R | 1 - samples/client/petstore/R/R/order.R | 6 +++--- samples/client/petstore/R/R/pet.R | 1 - samples/client/petstore/R/R/tag.R | 1 - samples/client/petstore/R/R/user.R | 1 - 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/r/model.mustache b/modules/openapi-generator/src/main/resources/r/model.mustache index 1b853ec3730..28b7ce9145b 100644 --- a/modules/openapi-generator/src/main/resources/r/model.mustache +++ b/modules/openapi-generator/src/main/resources/r/model.mustache @@ -47,6 +47,9 @@ {{#isString}} stopifnot(is.character(`{{baseName}}`), length(`{{baseName}}`) == 1) {{/isString}} + {{#isBoolean}} + stopifnot(is.logical(`{{baseName}}`), length(`{{baseName}}`) == 1) + {{/isBoolean}} {{#isDate}} stopifnot(is.character(`{{baseName}}`), length(`{{baseName}}`) == 1) {{/isDate}} @@ -88,6 +91,9 @@ {{#isString}} stopifnot(is.character(`{{baseName}}`), length(`{{baseName}}`) == 1) {{/isString}} + {{#isBoolean}} + stopifnot(is.logical(`{{baseName}}`), length(`{{baseName}}`) == 1) + {{/isBoolean}} {{#isDate}} stopifnot(is.character(`{{baseName}}`), length(`{{baseName}}`) == 1) {{/isDate}} @@ -185,7 +191,7 @@ {{/isArray}} {{#isMap}} {{#isPrimitiveType}} - {{#isNumeric}}%d{{/isNumeric}}{{^isNumeric}}"%s"{{/isNumeric}} + {{#isNumeric}}%d{{/isNumeric}}{{^isNumeric}}{{^isBoolean}}"{{/isBoolean}}%s{{^isBoolean}}"{{/isBoolean}}{{/isNumeric}} {{/isPrimitiveType}} {{^isPrimitiveType}}%s {{/isPrimitiveType}} @@ -193,7 +199,7 @@ {{/isContainer}} {{^isContainer}} {{#isPrimitiveType}} - {{#isNumeric}}%d{{/isNumeric}}{{^isNumeric}}"%s"{{/isNumeric}} + {{#isNumeric}}%d{{/isNumeric}}{{^isNumeric}}{{^isBoolean}}"{{/isBoolean}}%s{{^isBoolean}}"{{/isBoolean}}{{/isNumeric}} {{/isPrimitiveType}} {{^isPrimitiveType}}%s {{/isPrimitiveType}} @@ -218,7 +224,7 @@ {{/isContainer}} {{^isContainer}} {{#isPrimitiveType}} - self$`{{baseName}}` + {{#isBoolean}}tolower({{/isBoolean}}self$`{{baseName}}`{{#isBoolean}}){{/isBoolean}} {{/isPrimitiveType}} {{^isPrimitiveType}} jsonlite::toJSON(self$`{{baseName}}`$toJSON(), auto_unbox=TRUE, digits = NA) @@ -253,4 +259,3 @@ {{/isEnum}} {{/model}} {{/models}} - diff --git a/samples/client/petstore/R/R/category.R b/samples/client/petstore/R/R/category.R index 7c74320d1ac..059b64e3748 100644 --- a/samples/client/petstore/R/R/category.R +++ b/samples/client/petstore/R/R/category.R @@ -89,4 +89,3 @@ Category <- R6::R6Class( } ) ) - diff --git a/samples/client/petstore/R/R/model_api_response.R b/samples/client/petstore/R/R/model_api_response.R index c7cdbb76c2a..a1c16133557 100644 --- a/samples/client/petstore/R/R/model_api_response.R +++ b/samples/client/petstore/R/R/model_api_response.R @@ -111,4 +111,3 @@ ModelApiResponse <- R6::R6Class( } ) ) - diff --git a/samples/client/petstore/R/R/order.R b/samples/client/petstore/R/R/order.R index 3218835cc35..d3e2e46b493 100644 --- a/samples/client/petstore/R/R/order.R +++ b/samples/client/petstore/R/R/order.R @@ -62,6 +62,7 @@ Order <- R6::R6Class( self$`status` <- `status` } if (!is.null(`complete`)) { + stopifnot(is.logical(`complete`), length(`complete`) == 1) self$`complete` <- `complete` } }, @@ -156,9 +157,9 @@ Order <- R6::R6Class( if (!is.null(self$`complete`)) { sprintf( '"complete": - "%s" + %s ', - self$`complete` + tolower(self$`complete`) )} ) jsoncontent <- paste(jsoncontent, collapse = ",") @@ -176,4 +177,3 @@ Order <- R6::R6Class( } ) ) - diff --git a/samples/client/petstore/R/R/pet.R b/samples/client/petstore/R/R/pet.R index 509d16934e1..1960b16906a 100644 --- a/samples/client/petstore/R/R/pet.R +++ b/samples/client/petstore/R/R/pet.R @@ -181,4 +181,3 @@ Pet <- R6::R6Class( } ) ) - diff --git a/samples/client/petstore/R/R/tag.R b/samples/client/petstore/R/R/tag.R index 56b89c6b425..ba2def34c43 100644 --- a/samples/client/petstore/R/R/tag.R +++ b/samples/client/petstore/R/R/tag.R @@ -89,4 +89,3 @@ Tag <- R6::R6Class( } ) ) - diff --git a/samples/client/petstore/R/R/user.R b/samples/client/petstore/R/R/user.R index bf88bee4027..47ffaea0d88 100644 --- a/samples/client/petstore/R/R/user.R +++ b/samples/client/petstore/R/R/user.R @@ -221,4 +221,3 @@ User <- R6::R6Class( } ) ) - From 2f6bfb0dfc59c2f84b02fd6bd3475941ed69b681 Mon Sep 17 00:00:00 2001 From: Amal Thomas Date: Mon, 17 May 2021 11:08:09 +0530 Subject: [PATCH 007/192] Update plugins.md (#9499) --- docs/plugins.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plugins.md b/docs/plugins.md index 691c5fa85d1..c9fbbe5b548 100644 --- a/docs/plugins.md +++ b/docs/plugins.md @@ -45,7 +45,7 @@ For full details of all options, see the [plugin README](https://github.com/Open ### Dependencies -The generated models use commonly use Swagger v2 annotations like `@ApiModelProperty`. A user may add Swagger v3 annotations: +The generated models use commonly used Swagger v2 annotations like `@ApiModelProperty`. A user may add Swagger v3 annotations: ```xml From 69e8e07cab703d614bb15ab0e58246292de09750 Mon Sep 17 00:00:00 2001 From: quarantam <71026957+quarantam@users.noreply.github.com> Date: Mon, 17 May 2021 12:10:29 +0200 Subject: [PATCH 008/192] Update ApiClient.mustache (#9492) Fixing #7209 --- .../resources/Java/libraries/resttemplate/ApiClient.mustache | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache index 150f3d3ebbb..032d398f6cd 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache @@ -39,10 +39,11 @@ import com.fasterxml.jackson.datatype.threetenbp.ThreeTenModule; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter; import com.fasterxml.jackson.databind.ObjectMapper; +{{/threetenbp}} {{#openApiNullable}} import org.openapitools.jackson.nullable.JsonNullableModule; {{/openApiNullable}} -{{/threetenbp}} + import java.io.BufferedReader; import java.io.IOException; From 08467928de51b2e34e471ad8f2d42fc1ffeb3371 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 17 May 2021 18:25:07 +0800 Subject: [PATCH 009/192] update samples --- .../src/main/java/org/openapitools/client/ApiClient.java | 1 + .../src/main/java/org/openapitools/client/ApiClient.java | 1 + 2 files changed, 2 insertions(+) diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/ApiClient.java index 11da16b2e48..ae98ba62fdc 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/ApiClient.java @@ -36,6 +36,7 @@ import org.springframework.http.converter.json.AbstractJackson2HttpMessageConver import com.fasterxml.jackson.databind.ObjectMapper; import org.openapitools.jackson.nullable.JsonNullableModule; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/ApiClient.java index 11c1b834935..ff33cd2248f 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/ApiClient.java @@ -31,6 +31,7 @@ import org.springframework.http.converter.json.AbstractJackson2HttpMessageConver import com.fasterxml.jackson.databind.ObjectMapper; import org.openapitools.jackson.nullable.JsonNullableModule; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; From 477926f0080ce4f10a6f76abfb444b6bfb7ad8d6 Mon Sep 17 00:00:00 2001 From: Yusuke Hosonuma Date: Mon, 17 May 2021 22:24:30 +0900 Subject: [PATCH 010/192] [crystal][client] Support authorization (#9488) * [crystal][client] support authorization header * [crystal][client] update samples * [crystal][client] update tests * [crystal][client] add unit test for api_client.cr --- .../src/main/resources/crystal/api.mustache | 4 +- .../resources/crystal/api_client.mustache | 6 +- .../resources/crystal/configuration.mustache | 12 ++-- .../petstore/crystal/spec/api/pet_api_spec.cr | 11 +++- .../petstore/crystal/spec/api_client_spec.cr | 56 +++++++++++++++++++ .../crystal/src/petstore/api/pet_api.cr | 20 +++---- .../crystal/src/petstore/api/store_api.cr | 8 +-- .../crystal/src/petstore/api/user_api.cr | 20 +++---- .../crystal/src/petstore/api_client.cr | 6 +- .../crystal/src/petstore/configuration.cr | 12 ++-- 10 files changed, 112 insertions(+), 43 deletions(-) create mode 100644 samples/client/petstore/crystal/spec/api_client_spec.cr diff --git a/modules/openapi-generator/src/main/resources/crystal/api.mustache b/modules/openapi-generator/src/main/resources/crystal/api.mustache index 8b8daabb5f3..787189be854 100644 --- a/modules/openapi-generator/src/main/resources/crystal/api.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/api.mustache @@ -128,9 +128,9 @@ module {{moduleName}} local_var_path = "{{{path}}}"{{#pathParams}}.sub("{" + "{{baseName}}" + "}", URI.encode({{paramName}}.to_s){{^strictSpecBehavior}}.gsub("%2F", "/"){{/strictSpecBehavior}}){{/pathParams}} # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new {{#queryParams}} - query_params[:"{{{baseName}}}"] = {{#collectionFormat}}@api_client.build_collection_param({{{paramName}}}, :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}{{{paramName}}}{{/collectionFormat}} + query_params["{{{baseName}}}"] = {{#collectionFormat}}@api_client.build_collection_param({{{paramName}}}, :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}{{{paramName}}}{{/collectionFormat}} {{/queryParams}} # header parameters diff --git a/modules/openapi-generator/src/main/resources/crystal/api_client.mustache b/modules/openapi-generator/src/main/resources/crystal/api_client.mustache index 6831e51bae0..9852faa90f9 100644 --- a/modules/openapi-generator/src/main/resources/crystal/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/api_client.mustache @@ -163,7 +163,7 @@ module {{moduleName}} # @param [Hash] query_params Query parameters # @param [String] auth_names Authentication scheme name def update_params_for_auth!(header_params, query_params, auth_names) - Array{auth_names}.each do |auth_name| + auth_names.each do |auth_name| auth_setting = @config.auth_settings[auth_name] next unless auth_setting case auth_setting[:in] @@ -256,7 +256,7 @@ module {{moduleName}} # # @return [Array<(Object, Integer, Hash)>] an array of 3 elements: # the data deserialized from response body (could be nil), response status code and response headers. - def call_api(http_method : Symbol, path : String, operation : Symbol, return_type : String, post_body : String?, auth_names = [] of String, header_params = {} of String => String, query_params = {} of Symbol => String, form_params = {} of Symbol => String) + def call_api(http_method : Symbol, path : String, operation : Symbol, return_type : String, post_body : String?, auth_names = [] of String, header_params = {} of String => String, query_params = {} of String => String, form_params = {} of Symbol => String) #ssl_options = { # :ca_file => @config.ssl_ca_file, # :verify => @config.ssl_verify, @@ -274,6 +274,8 @@ module {{moduleName}} # conn.adapter(Faraday.default_adapter) #end + update_params_for_auth! header_params, query_params, auth_names + if !post_body.nil? && !post_body.empty? # use JSON string in the payload form_or_body = post_body diff --git a/modules/openapi-generator/src/main/resources/crystal/configuration.mustache b/modules/openapi-generator/src/main/resources/crystal/configuration.mustache index cc2e15e93fa..eec2509376d 100644 --- a/modules/openapi-generator/src/main/resources/crystal/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/configuration.mustache @@ -30,7 +30,7 @@ module {{moduleName}} # @return [Hash] key: parameter name, value: parameter value (API key) # # @example parameter name is "api_key", API key is "xxx" (e.g. "api_key=xxx" in query string) - # config.api_key[:"api_key"] = "xxx" + # config.api_key[:api_key] = "xxx" property api_key : Hash(Symbol, String) # Defines API key prefixes used with API Key authentications. @@ -38,7 +38,7 @@ module {{moduleName}} # @return [Hash] key: parameter name, value: API key prefix # # @example parameter name is "Authorization", API key prefix is "Token" (e.g. "Authorization: Token xxx" in headers) - # config.api_key_prefix[:"api_key"] = "Token" + # config.api_key_prefix[:api_key] = "Token" property api_key_prefix : Hash(Symbol, String) # Defines the username used with HTTP basic authentication. @@ -183,10 +183,10 @@ module {{moduleName}} # Gets API key (with prefix if set). # @param [String] param_name the parameter name of API key auth def api_key_with_prefix(param_name) - if @api_key_prefix[param_name] - "#{@api_key_prefix[param_name]} #{@api_key[param_name]}" + if prefix = @api_key_prefix[param_name]? + "#{prefix} #{@api_key[param_name]}" else - @api_key[param_name] + @api_key[param_name]? || "" end end @@ -204,7 +204,7 @@ module {{moduleName}} type: "api_key", in: {{#isKeyInHeader}}"header"{{/isKeyInHeader}}{{#isKeyInQuery}}"query"{{/isKeyInQuery}}, key: "{{keyParamName}}", - value: api_key_with_prefix("{{keyParamName}}") + value: api_key_with_prefix(:{{keyParamName}}) }, {{/isApiKey}} {{#isBasic}} diff --git a/samples/client/petstore/crystal/spec/api/pet_api_spec.cr b/samples/client/petstore/crystal/spec/api/pet_api_spec.cr index 23bdfa81847..5c5f56295ac 100644 --- a/samples/client/petstore/crystal/spec/api/pet_api_spec.cr +++ b/samples/client/petstore/crystal/spec/api/pet_api_spec.cr @@ -79,7 +79,16 @@ describe "PetApi" do describe "get_pet_by_id test" do it "should work" do # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - api_instance = Petstore::PetApi.new + + config = Petstore::Configuration.new + config.access_token = "yyy" + config.api_key[:api_key] = "xxx" + config.api_key_prefix[:api_key] = "Token" + + api_client = Petstore::ApiClient.new(config) + + api_instance = Petstore::PetApi.new(api_client) + # create a pet to start with pet_id = Int64.new(91829) pet = Petstore::Pet.new(id: pet_id, category: Petstore::Category.new(id: pet_id + 10, name: "crystal category"), name: "crystal", photo_urls: ["https://crystal-lang.org"], tags: [Petstore::Tag.new(id: pet_id + 100, name: "crystal tag")], status: "available") diff --git a/samples/client/petstore/crystal/spec/api_client_spec.cr b/samples/client/petstore/crystal/spec/api_client_spec.cr new file mode 100644 index 00000000000..18209417eab --- /dev/null +++ b/samples/client/petstore/crystal/spec/api_client_spec.cr @@ -0,0 +1,56 @@ +require "./spec_helper" + +describe Petstore::ApiClient do + describe "#update_params_for_auth!" do + describe "oauth2" do + it "should add 'Authorization' to header" do + config = Petstore::Configuration.new + config.access_token = "xxx" + + header_params = {} of String => String + query_params = {} of String => String + + api_client = Petstore::ApiClient.new(config) + api_client.update_params_for_auth!(header_params, query_params, ["petstore_auth"]) + + header_params["Authorization"].should eq "Bearer xxx" + query_params.size.should eq 0 + end + end + + describe "api_key" do + context "without api_key_prefix" do + it "should add 'api_key' to header" do + config = Petstore::Configuration.new + config.api_key[:api_key] = "xxx" + + header_params = {} of String => String + query_params = {} of String => String + + api_client = Petstore::ApiClient.new(config) + api_client.update_params_for_auth!(header_params, query_params, ["api_key"]) + + header_params["api_key"].should eq "xxx" + query_params.empty?.should be_true + end + end + + context "with api_key_prefix" do + it "should add 'api_key' to header" do + config = Petstore::Configuration.new + config.api_key[:api_key] = "xxx" + config.api_key_prefix[:api_key] = "Token" + + header_params = {} of String => String + query_params = {} of String => String + + api_client = Petstore::ApiClient.new(config) + api_client.update_params_for_auth!(header_params, query_params, ["api_key"]) + + header_params["api_key"].should eq "Token xxx" + query_params.empty?.should be_true + end + end + end + end +end diff --git a/samples/client/petstore/crystal/src/petstore/api/pet_api.cr b/samples/client/petstore/crystal/src/petstore/api/pet_api.cr index 7e672a21a61..41466efaf1b 100644 --- a/samples/client/petstore/crystal/src/petstore/api/pet_api.cr +++ b/samples/client/petstore/crystal/src/petstore/api/pet_api.cr @@ -40,7 +40,7 @@ module Petstore local_var_path = "/pet" # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -99,7 +99,7 @@ module Petstore local_var_path = "/pet/{petId}".sub("{" + "petId" + "}", URI.encode(pet_id.to_s).gsub("%2F", "/")) # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -157,8 +157,8 @@ module Petstore local_var_path = "/pet/findByStatus" # query parameters - query_params = Hash(Symbol, String).new - query_params[:"status"] = @api_client.build_collection_param(status, :csv) + query_params = Hash(String, String).new + query_params["status"] = @api_client.build_collection_param(status, :csv) # header parameters header_params = Hash(String, String).new @@ -217,8 +217,8 @@ module Petstore local_var_path = "/pet/findByTags" # query parameters - query_params = Hash(Symbol, String).new - query_params[:"tags"] = @api_client.build_collection_param(tags, :csv) + query_params = Hash(String, String).new + query_params["tags"] = @api_client.build_collection_param(tags, :csv) # header parameters header_params = Hash(String, String).new @@ -277,7 +277,7 @@ module Petstore local_var_path = "/pet/{petId}".sub("{" + "petId" + "}", URI.encode(pet_id.to_s).gsub("%2F", "/")) # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -334,7 +334,7 @@ module Petstore local_var_path = "/pet" # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -393,7 +393,7 @@ module Petstore local_var_path = "/pet/{petId}".sub("{" + "petId" + "}", URI.encode(pet_id.to_s).gsub("%2F", "/")) # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -452,7 +452,7 @@ module Petstore local_var_path = "/pet/{petId}/uploadImage".sub("{" + "petId" + "}", URI.encode(pet_id.to_s).gsub("%2F", "/")) # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new diff --git a/samples/client/petstore/crystal/src/petstore/api/store_api.cr b/samples/client/petstore/crystal/src/petstore/api/store_api.cr index 126dbab7bf4..03f45309463 100644 --- a/samples/client/petstore/crystal/src/petstore/api/store_api.cr +++ b/samples/client/petstore/crystal/src/petstore/api/store_api.cr @@ -42,7 +42,7 @@ module Petstore local_var_path = "/store/order/{orderId}".sub("{" + "orderId" + "}", URI.encode(order_id.to_s).gsub("%2F", "/")) # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -93,7 +93,7 @@ module Petstore local_var_path = "/store/inventory" # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -160,7 +160,7 @@ module Petstore local_var_path = "/store/order/{orderId}".sub("{" + "orderId" + "}", URI.encode(order_id.to_s).gsub("%2F", "/")) # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -217,7 +217,7 @@ module Petstore local_var_path = "/store/order" # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new diff --git a/samples/client/petstore/crystal/src/petstore/api/user_api.cr b/samples/client/petstore/crystal/src/petstore/api/user_api.cr index 2b6d6acdace..0b2468c50d3 100644 --- a/samples/client/petstore/crystal/src/petstore/api/user_api.cr +++ b/samples/client/petstore/crystal/src/petstore/api/user_api.cr @@ -42,7 +42,7 @@ module Petstore local_var_path = "/user" # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -99,7 +99,7 @@ module Petstore local_var_path = "/user/createWithArray" # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -156,7 +156,7 @@ module Petstore local_var_path = "/user/createWithList" # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -215,7 +215,7 @@ module Petstore local_var_path = "/user/{username}".sub("{" + "username" + "}", URI.encode(username.to_s).gsub("%2F", "/")) # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -270,7 +270,7 @@ module Petstore local_var_path = "/user/{username}".sub("{" + "username" + "}", URI.encode(username.to_s).gsub("%2F", "/")) # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -338,9 +338,9 @@ module Petstore local_var_path = "/user/login" # query parameters - query_params = Hash(Symbol, String).new - query_params[:"username"] = username - query_params[:"password"] = password + query_params = Hash(String, String).new + query_params["username"] = username + query_params["password"] = password # header parameters header_params = Hash(String, String).new @@ -391,7 +391,7 @@ module Petstore local_var_path = "/user/logout" # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new @@ -454,7 +454,7 @@ module Petstore local_var_path = "/user/{username}".sub("{" + "username" + "}", URI.encode(username.to_s).gsub("%2F", "/")) # query parameters - query_params = Hash(Symbol, String).new + query_params = Hash(String, String).new # header parameters header_params = Hash(String, String).new diff --git a/samples/client/petstore/crystal/src/petstore/api_client.cr b/samples/client/petstore/crystal/src/petstore/api_client.cr index 75fe8faa203..a0f4a469c48 100644 --- a/samples/client/petstore/crystal/src/petstore/api_client.cr +++ b/samples/client/petstore/crystal/src/petstore/api_client.cr @@ -171,7 +171,7 @@ module Petstore # @param [Hash] query_params Query parameters # @param [String] auth_names Authentication scheme name def update_params_for_auth!(header_params, query_params, auth_names) - Array{auth_names}.each do |auth_name| + auth_names.each do |auth_name| auth_setting = @config.auth_settings[auth_name] next unless auth_setting case auth_setting[:in] @@ -264,7 +264,7 @@ module Petstore # # @return [Array<(Object, Integer, Hash)>] an array of 3 elements: # the data deserialized from response body (could be nil), response status code and response headers. - def call_api(http_method : Symbol, path : String, operation : Symbol, return_type : String, post_body : String?, auth_names = [] of String, header_params = {} of String => String, query_params = {} of Symbol => String, form_params = {} of Symbol => String) + def call_api(http_method : Symbol, path : String, operation : Symbol, return_type : String, post_body : String?, auth_names = [] of String, header_params = {} of String => String, query_params = {} of String => String, form_params = {} of Symbol => String) #ssl_options = { # :ca_file => @config.ssl_ca_file, # :verify => @config.ssl_verify, @@ -282,6 +282,8 @@ module Petstore # conn.adapter(Faraday.default_adapter) #end + update_params_for_auth! header_params, query_params, auth_names + if !post_body.nil? && !post_body.empty? # use JSON string in the payload form_or_body = post_body diff --git a/samples/client/petstore/crystal/src/petstore/configuration.cr b/samples/client/petstore/crystal/src/petstore/configuration.cr index e02acd2e507..b3d1c1ca202 100644 --- a/samples/client/petstore/crystal/src/petstore/configuration.cr +++ b/samples/client/petstore/crystal/src/petstore/configuration.cr @@ -38,7 +38,7 @@ module Petstore # @return [Hash] key: parameter name, value: parameter value (API key) # # @example parameter name is "api_key", API key is "xxx" (e.g. "api_key=xxx" in query string) - # config.api_key[:"api_key"] = "xxx" + # config.api_key[:api_key] = "xxx" property api_key : Hash(Symbol, String) # Defines API key prefixes used with API Key authentications. @@ -46,7 +46,7 @@ module Petstore # @return [Hash] key: parameter name, value: API key prefix # # @example parameter name is "Authorization", API key prefix is "Token" (e.g. "Authorization: Token xxx" in headers) - # config.api_key_prefix[:"api_key"] = "Token" + # config.api_key_prefix[:api_key] = "Token" property api_key_prefix : Hash(Symbol, String) # Defines the username used with HTTP basic authentication. @@ -191,10 +191,10 @@ module Petstore # Gets API key (with prefix if set). # @param [String] param_name the parameter name of API key auth def api_key_with_prefix(param_name) - if @api_key_prefix[param_name] - "#{@api_key_prefix[param_name]} #{@api_key[param_name]}" + if prefix = @api_key_prefix[param_name]? + "#{prefix} #{@api_key[param_name]}" else - @api_key[param_name] + @api_key[param_name]? || "" end end @@ -210,7 +210,7 @@ module Petstore type: "api_key", in: "header", key: "api_key", - value: api_key_with_prefix("api_key") + value: api_key_with_prefix(:api_key) }, "petstore_auth" => { type: "oauth2", From c4f7091da53b1553b7696c64c1d878c414f07a8d Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 17 May 2021 23:47:07 +0800 Subject: [PATCH 011/192] partially revert 9404: avoid empty string enum value (#9501) --- docs/generators/aspnetcore.md | 4 ++-- .../codegen/languages/AspNetCoreServerCodegen.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/generators/aspnetcore.md b/docs/generators/aspnetcore.md index 99f0b789bdc..849f4ff9313 100644 --- a/docs/generators/aspnetcore.md +++ b/docs/generators/aspnetcore.md @@ -9,7 +9,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | ------ | ----------- | ------ | ------- | |aspnetCoreVersion|ASP.NET Core version: 5.0, 3.1, 3.0, 2.2, 2.1, 2.0 (deprecated)|

    **2.0**
    ASP.NET Core 2.0
    **2.1**
    ASP.NET Core 2.1
    **2.2**
    ASP.NET Core 2.2
    **3.0**
    ASP.NET Core 3.0
    **3.1**
    ASP.NET Core 3.1
    **5.0**
    ASP.NET Core 5.0
    |3.1| |buildTarget|Target to build an application or library|
    **program**
    Generate code for a standalone server
    **library**
    Generate code for a server abstract class library
    |program| -|classModifier|Class Modifier for controller classes: Empty string or abstract.|
    ****
    Keep class default with no modifier
    **abstract**
    Make class abstract
    || +|classModifier|Class Modifier for controller classes: Empty string or abstract.| || |compatibilityVersion|ASP.Net Core CompatibilityVersion| |Version_2_2| |enumNameSuffix|Suffix that will be appended to all enum names.| |Enum| |enumValueSuffix|Suffix that will be appended to all enum values.| |Enum| @@ -17,7 +17,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |isLibrary|Is the build a library| |false| |licenseName|The name of the license| |NoLicense| |licenseUrl|The URL of the license| |http://localhost| -|modelClassModifier|Model Class Modifier can be nothing or partial|
    ****
    Keep model class default with no modifier
    **partial**
    Make model class partial
    |partial| +|modelClassModifier|Model Class Modifier can be nothing or partial| |partial| |newtonsoftVersion|Version for Microsoft.AspNetCore.Mvc.NewtonsoftJson for ASP.NET Core 3.0+| |3.0.0| |operationIsAsync|Set methods to async or sync (default).| |false| |operationModifier|Operation Modifier can be virtual or abstract|
    **virtual**
    Keep method virtual
    **abstract**
    Make method abstract
    |virtual| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java index f7c24196331..1bc11ce94ca 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java @@ -261,7 +261,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { classModifier.addEnum("abstract", "Make class abstract"); classModifier.setDefault(""); classModifier.setOptValue(classModifier.getDefault()); - cliOptions.add(classModifier); + addOption(classModifier.getOpt(), classModifier.getDescription(), classModifier.getOptValue()); operationModifier.addEnum("virtual", "Keep method virtual"); operationModifier.addEnum("abstract", "Make method abstract"); @@ -292,7 +292,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { modelClassModifier.addEnum("partial", "Make model class partial"); modelClassModifier.setDefault("partial"); modelClassModifier.setOptValue(modelClassModifier.getDefault()); - cliOptions.add(modelClassModifier); + addOption(modelClassModifier.getOpt(), modelClassModifier.getDescription(), modelClassModifier.getOptValue()); } @Override From 1c733247b19a5dae148542c006a549eee3002913 Mon Sep 17 00:00:00 2001 From: Kuzma <57258237+ksvirkou-hubspot@users.noreply.github.com> Date: Mon, 17 May 2021 19:19:08 +0300 Subject: [PATCH 012/192] fix api key (#9476) --- .../src/main/resources/typescript/auth/auth.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/resources/typescript/auth/auth.mustache b/modules/openapi-generator/src/main/resources/typescript/auth/auth.mustache index 0e0ae23b1f2..332760455bf 100644 --- a/modules/openapi-generator/src/main/resources/typescript/auth/auth.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/auth/auth.mustache @@ -85,7 +85,7 @@ export class {{#lambda.pascalcase}}{{name}}{{/lambda.pascalcase}}Authentication public {{#isBasicBearer}}async {{/isBasicBearer}}applySecurityAuthentication(context: RequestContext) { {{#isApiKey}} - context.{{#isKeyInHeader}}setHeaderParam{{/isKeyInHeader}}{{#isKeyInQuery}}addCookie{{/isKeyInQuery}}{{#isKeyInCookie}}setQueryParam{{/isKeyInCookie}}("{{keyParamName}}", this.apiKey); + context.{{#isKeyInHeader}}setHeaderParam{{/isKeyInHeader}}{{#isKeyInQuery}}setQueryParam{{/isKeyInQuery}}{{#isKeyInCookie}}addCookie{{/isKeyInCookie}}("{{keyParamName}}", this.apiKey); {{/isApiKey}} {{#isBasicBasic}} let comb = this.username + ":" + this.password; From e1ef7d40b3a217d49aa026130da26c7723066adb Mon Sep 17 00:00:00 2001 From: Kuzma <57258237+ksvirkou-hubspot@users.noreply.github.com> Date: Mon, 17 May 2021 19:22:18 +0300 Subject: [PATCH 013/192] add OAuth2 to typescript template (#9466) * add OAuth to typescript * generate samples --- .../main/resources/typescript/auth/auth.mustache | 13 +++++++++---- .../petstore/typescript/builds/default/auth/auth.ts | 13 +++++++++---- .../petstore/typescript/builds/deno/auth/auth.ts | 13 +++++++++---- .../typescript/builds/inversify/auth/auth.ts | 13 +++++++++---- .../petstore/typescript/builds/jquery/auth/auth.ts | 13 +++++++++---- .../typescript/builds/object_params/auth/auth.ts | 13 +++++++++---- 6 files changed, 54 insertions(+), 24 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript/auth/auth.mustache b/modules/openapi-generator/src/main/resources/typescript/auth/auth.mustache index 332760455bf..bfb303e741e 100644 --- a/modules/openapi-generator/src/main/resources/typescript/auth/auth.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/auth/auth.mustache @@ -75,8 +75,12 @@ export class {{#lambda.pascalcase}}{{name}}{{/lambda.pascalcase}}Authentication public constructor({{#useInversify}}@inject(AbstractTokenProvider) @named("{{name}}") {{/useInversify}}private tokenProvider: TokenProvider) {} {{/isBasicBearer}} {{#isOAuth}} - // TODO: How to handle oauth2 authentication! - public constructor() {} + /** + * Configures OAuth2 with the necessary properties + * + * @param accessToken: The access token to be used for every request + */ + public constructor(private accessToken: string) {} {{/isOAuth}} public getName(): string { @@ -95,7 +99,7 @@ export class {{#lambda.pascalcase}}{{name}}{{/lambda.pascalcase}}Authentication context.setHeaderParam("Authorization", "Bearer " + await this.tokenProvider.getToken()); {{/isBasicBearer}} {{#isOAuth}} - // TODO + context.setHeaderParam("Authorization", "Bearer " + this.accessToken); {{/isOAuth}} } } @@ -119,7 +123,7 @@ export const authMethodServices = { export type ApiKeyConfiguration = string; export type HttpBasicConfiguration = { "username": string, "password": string }; export type HttpBearerConfiguration = { tokenProvider: TokenProvider }; -export type OAuth2Configuration = string; +export type OAuth2Configuration = { accessToken: string }; export type AuthMethodsConfiguration = { {{#authMethods}} @@ -152,6 +156,7 @@ export function configureAuthMethods(config: AuthMethodsConfiguration | undefine config["{{name}}"]["tokenProvider"] {{/isBasicBearer}} {{#isOAuth}} + config["{{name}}"]["accessToken"] {{/isOAuth}} ); } diff --git a/samples/openapi3/client/petstore/typescript/builds/default/auth/auth.ts b/samples/openapi3/client/petstore/typescript/builds/default/auth/auth.ts index 9d59a0a2558..1f1d1ecac67 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/auth/auth.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/auth/auth.ts @@ -48,15 +48,19 @@ export class ApiKeyAuthentication implements SecurityAuthentication { * Applies oauth2 authentication to the request context. */ export class PetstoreAuthAuthentication implements SecurityAuthentication { - // TODO: How to handle oauth2 authentication! - public constructor() {} + /** + * Configures OAuth2 with the necessary properties + * + * @param accessToken: The access token to be used for every request + */ + public constructor(private accessToken: string) {} public getName(): string { return "petstore_auth"; } public applySecurityAuthentication(context: RequestContext) { - // TODO + context.setHeaderParam("Authorization", "Bearer " + this.accessToken); } } @@ -69,7 +73,7 @@ export type AuthMethods = { export type ApiKeyConfiguration = string; export type HttpBasicConfiguration = { "username": string, "password": string }; export type HttpBearerConfiguration = { tokenProvider: TokenProvider }; -export type OAuth2Configuration = string; +export type OAuth2Configuration = { accessToken: string }; export type AuthMethodsConfiguration = { "api_key"?: ApiKeyConfiguration, @@ -95,6 +99,7 @@ export function configureAuthMethods(config: AuthMethodsConfiguration | undefine if (config["petstore_auth"]) { authMethods["petstore_auth"] = new PetstoreAuthAuthentication( + config["petstore_auth"]["accessToken"] ); } diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/auth/auth.ts b/samples/openapi3/client/petstore/typescript/builds/deno/auth/auth.ts index 0a02d2e58d2..e7609dabbec 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/auth/auth.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/auth/auth.ts @@ -46,15 +46,19 @@ export class ApiKeyAuthentication implements SecurityAuthentication { * Applies oauth2 authentication to the request context. */ export class PetstoreAuthAuthentication implements SecurityAuthentication { - // TODO: How to handle oauth2 authentication! - public constructor() {} + /** + * Configures OAuth2 with the necessary properties + * + * @param accessToken: The access token to be used for every request + */ + public constructor(private accessToken: string) {} public getName(): string { return "petstore_auth"; } public applySecurityAuthentication(context: RequestContext) { - // TODO + context.setHeaderParam("Authorization", "Bearer " + this.accessToken); } } @@ -67,7 +71,7 @@ export type AuthMethods = { export type ApiKeyConfiguration = string; export type HttpBasicConfiguration = { "username": string, "password": string }; export type HttpBearerConfiguration = { tokenProvider: TokenProvider }; -export type OAuth2Configuration = string; +export type OAuth2Configuration = { accessToken: string }; export type AuthMethodsConfiguration = { "api_key"?: ApiKeyConfiguration, @@ -93,6 +97,7 @@ export function configureAuthMethods(config: AuthMethodsConfiguration | undefine if (config["petstore_auth"]) { authMethods["petstore_auth"] = new PetstoreAuthAuthentication( + config["petstore_auth"]["accessToken"] ); } diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/auth/auth.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/auth/auth.ts index 13e3b17fa82..f6ffebc4d7e 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/auth/auth.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/auth/auth.ts @@ -56,15 +56,19 @@ export class ApiKeyAuthentication implements SecurityAuthentication { */ @injectable() export class PetstoreAuthAuthentication implements SecurityAuthentication { - // TODO: How to handle oauth2 authentication! - public constructor() {} + /** + * Configures OAuth2 with the necessary properties + * + * @param accessToken: The access token to be used for every request + */ + public constructor(private accessToken: string) {} public getName(): string { return "petstore_auth"; } public applySecurityAuthentication(context: RequestContext) { - // TODO + context.setHeaderParam("Authorization", "Bearer " + this.accessToken); } } @@ -82,7 +86,7 @@ export const authMethodServices = { export type ApiKeyConfiguration = string; export type HttpBasicConfiguration = { "username": string, "password": string }; export type HttpBearerConfiguration = { tokenProvider: TokenProvider }; -export type OAuth2Configuration = string; +export type OAuth2Configuration = { accessToken: string }; export type AuthMethodsConfiguration = { "api_key"?: ApiKeyConfiguration, @@ -108,6 +112,7 @@ export function configureAuthMethods(config: AuthMethodsConfiguration | undefine if (config["petstore_auth"]) { authMethods["petstore_auth"] = new PetstoreAuthAuthentication( + config["petstore_auth"]["accessToken"] ); } diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/auth/auth.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/auth/auth.ts index 2cdf0800f32..d8924a4216c 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/auth/auth.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/auth/auth.ts @@ -46,15 +46,19 @@ export class ApiKeyAuthentication implements SecurityAuthentication { * Applies oauth2 authentication to the request context. */ export class PetstoreAuthAuthentication implements SecurityAuthentication { - // TODO: How to handle oauth2 authentication! - public constructor() {} + /** + * Configures OAuth2 with the necessary properties + * + * @param accessToken: The access token to be used for every request + */ + public constructor(private accessToken: string) {} public getName(): string { return "petstore_auth"; } public applySecurityAuthentication(context: RequestContext) { - // TODO + context.setHeaderParam("Authorization", "Bearer " + this.accessToken); } } @@ -67,7 +71,7 @@ export type AuthMethods = { export type ApiKeyConfiguration = string; export type HttpBasicConfiguration = { "username": string, "password": string }; export type HttpBearerConfiguration = { tokenProvider: TokenProvider }; -export type OAuth2Configuration = string; +export type OAuth2Configuration = { accessToken: string }; export type AuthMethodsConfiguration = { "api_key"?: ApiKeyConfiguration, @@ -93,6 +97,7 @@ export function configureAuthMethods(config: AuthMethodsConfiguration | undefine if (config["petstore_auth"]) { authMethods["petstore_auth"] = new PetstoreAuthAuthentication( + config["petstore_auth"]["accessToken"] ); } diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/auth/auth.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/auth/auth.ts index 9d59a0a2558..1f1d1ecac67 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/auth/auth.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/auth/auth.ts @@ -48,15 +48,19 @@ export class ApiKeyAuthentication implements SecurityAuthentication { * Applies oauth2 authentication to the request context. */ export class PetstoreAuthAuthentication implements SecurityAuthentication { - // TODO: How to handle oauth2 authentication! - public constructor() {} + /** + * Configures OAuth2 with the necessary properties + * + * @param accessToken: The access token to be used for every request + */ + public constructor(private accessToken: string) {} public getName(): string { return "petstore_auth"; } public applySecurityAuthentication(context: RequestContext) { - // TODO + context.setHeaderParam("Authorization", "Bearer " + this.accessToken); } } @@ -69,7 +73,7 @@ export type AuthMethods = { export type ApiKeyConfiguration = string; export type HttpBasicConfiguration = { "username": string, "password": string }; export type HttpBearerConfiguration = { tokenProvider: TokenProvider }; -export type OAuth2Configuration = string; +export type OAuth2Configuration = { accessToken: string }; export type AuthMethodsConfiguration = { "api_key"?: ApiKeyConfiguration, @@ -95,6 +99,7 @@ export function configureAuthMethods(config: AuthMethodsConfiguration | undefine if (config["petstore_auth"]) { authMethods["petstore_auth"] = new PetstoreAuthAuthentication( + config["petstore_auth"]["accessToken"] ); } From fb3aed6dc43b9c723b2f8c6e4418830ca4314862 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Mon, 17 May 2021 20:15:53 -0700 Subject: [PATCH 014/192] Fixes python test_fake_api tests (#9483) * Fixes test_upload_download_file * Fixes test_string * Fixes test_string_enum * Fixes test_number_with_validations test_composed_one_of_number_with_validations * Fixes two more tests * Fixes test_array_of_enums * Fixes two tests * Removes comment * Fixes serializationf of composed schema object models, fixes test * Samples regenerated * Removes pdb --- .../resources/python/model_utils.mustache | 20 +- ...odels-for-testing-with-http-signature.yaml | 12 +- .../python/petstore_api/model_utils.py | 20 +- .../petstore_api/model_utils.py | 20 +- .../python/x_auth_id_alias/model_utils.py | 20 +- .../python/dynamic_servers/model_utils.py | 20 +- .../petstore/python/.openapi-generator/FILES | 4 +- .../openapi3/client/petstore/python/README.md | 6 +- .../client/petstore/python/docs/FakeApi.md | 288 ++++++------ ...neAdditionalPropertiesPayloadArrayData.md} | 2 +- .../InlineAdditionalPropertiesRefPayload.md | 2 +- .../petstore/python/docs/InlineObject6.md | 2 +- .../python/petstore_api/api/fake_api.py | 444 +++++++++--------- ...ditional_properties_payload_array_data.py} | 6 +- ...nline_additional_properties_ref_payload.py | 10 +- .../petstore_api/model/inline_object6.py | 10 +- .../python/petstore_api/model_utils.py | 20 +- .../python/petstore_api/models/__init__.py | 2 +- ...ditional_properties_payload_array_data.py} | 12 +- ...nline_additional_properties_ref_payload.py | 4 +- .../python/test/test_inline_object6.py | 4 +- .../python/tests_manual/test_fake_api.py | 110 +++-- 22 files changed, 593 insertions(+), 445 deletions(-) rename samples/openapi3/client/petstore/python/docs/{FakeGetInlineAdditionalPropertiesPayloadArrayData.md => FakePostInlineAdditionalPropertiesPayloadArrayData.md} (90%) rename samples/openapi3/client/petstore/python/petstore_api/model/{fake_get_inline_additional_properties_payload_array_data.py => fake_post_inline_additional_properties_payload_array_data.py} (97%) rename samples/openapi3/client/petstore/python/test/{test_fake_get_inline_additional_properties_payload_array_data.py => test_fake_post_inline_additional_properties_payload_array_data.py} (52%) diff --git a/modules/openapi-generator/src/main/resources/python/model_utils.mustache b/modules/openapi-generator/src/main/resources/python/model_utils.mustache index 73e6e7d555b..c7944e4fdcf 100644 --- a/modules/openapi-generator/src/main/resources/python/model_utils.mustache +++ b/modules/openapi-generator/src/main/resources/python/model_utils.mustache @@ -1335,12 +1335,20 @@ def model_to_dict(model_instance, serialize=True): model_instances = [model_instance] if model_instance._composed_schemas: model_instances.extend(model_instance._composed_instances) + seen_json_attribute_names = set() + used_fallback_python_attribute_names = set() + py_to_json_map = {} for model_instance in model_instances: for attr, value in model_instance._data_store.items(): if serialize: # we use get here because additional property key names do not # exist in attribute_map - attr = model_instance.attribute_map.get(attr, attr) + try: + attr = model_instance.attribute_map[attr] + py_to_json_map.update(model_instance.attribute_map) + seen_json_attribute_names.add(attr) + except KeyError: + used_fallback_python_attribute_names.add(attr) if isinstance(value, list): if not value: # empty list or None @@ -1368,6 +1376,16 @@ def model_to_dict(model_instance, serialize=True): result[attr] = model_to_dict(value, serialize=serialize) else: result[attr] = value + if serialize: + for python_key in used_fallback_python_attribute_names: + json_key = py_to_json_map.get(python_key) + if json_key is None: + continue + if python_key == json_key: + continue + json_key_assigned_no_need_for_python_key = json_key in seen_json_attribute_names + if json_key_assigned_no_need_for_python_key: + del result[python_key] return result diff --git a/modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml b/modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml index 683641e5a86..4efbc9cc028 100644 --- a/modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml @@ -1288,11 +1288,11 @@ paths: application/json: schema: $ref: '#/components/schemas/HealthCheckResult' - /fake/getInlineAdditionalPropertiesRefPayload: - get: + /fake/postInlineAdditionalPropertiesRefPayload: + post: tags: - fake - operationId: getInlineAdditionalPropertiesRefPayload + operationId: postInlineAdditionalPropertiesRefPayload responses: 200: description: InlineAdditionalPropertiesRefPayload @@ -1305,11 +1305,11 @@ paths: application/json: schema: $ref: '#/components/schemas/InlineAdditionalPropertiesRefPayload' - /fake/getInlineAdditionalPropertiesPayload: - get: + /fake/postInlineAdditionalPropertiesPayload: + post: tags: - fake - operationId: getInlineAdditionalPropertiesPayload + operationId: postInlineAdditionalPropertiesPayload responses: 200: description: InlineAdditionalPropertiesPayload diff --git a/samples/client/petstore/python/petstore_api/model_utils.py b/samples/client/petstore/python/petstore_api/model_utils.py index 3913228d6b8..97f9b2881cc 100644 --- a/samples/client/petstore/python/petstore_api/model_utils.py +++ b/samples/client/petstore/python/petstore_api/model_utils.py @@ -1632,12 +1632,20 @@ def model_to_dict(model_instance, serialize=True): model_instances = [model_instance] if model_instance._composed_schemas: model_instances.extend(model_instance._composed_instances) + seen_json_attribute_names = set() + used_fallback_python_attribute_names = set() + py_to_json_map = {} for model_instance in model_instances: for attr, value in model_instance._data_store.items(): if serialize: # we use get here because additional property key names do not # exist in attribute_map - attr = model_instance.attribute_map.get(attr, attr) + try: + attr = model_instance.attribute_map[attr] + py_to_json_map.update(model_instance.attribute_map) + seen_json_attribute_names.add(attr) + except KeyError: + used_fallback_python_attribute_names.add(attr) if isinstance(value, list): if not value: # empty list or None @@ -1665,6 +1673,16 @@ def model_to_dict(model_instance, serialize=True): result[attr] = model_to_dict(value, serialize=serialize) else: result[attr] = value + if serialize: + for python_key in used_fallback_python_attribute_names: + json_key = py_to_json_map.get(python_key) + if json_key is None: + continue + if python_key == json_key: + continue + json_key_assigned_no_need_for_python_key = json_key in seen_json_attribute_names + if json_key_assigned_no_need_for_python_key: + del result[python_key] return result diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/model_utils.py b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/model_utils.py index 3913228d6b8..97f9b2881cc 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/model_utils.py +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/model_utils.py @@ -1632,12 +1632,20 @@ def model_to_dict(model_instance, serialize=True): model_instances = [model_instance] if model_instance._composed_schemas: model_instances.extend(model_instance._composed_instances) + seen_json_attribute_names = set() + used_fallback_python_attribute_names = set() + py_to_json_map = {} for model_instance in model_instances: for attr, value in model_instance._data_store.items(): if serialize: # we use get here because additional property key names do not # exist in attribute_map - attr = model_instance.attribute_map.get(attr, attr) + try: + attr = model_instance.attribute_map[attr] + py_to_json_map.update(model_instance.attribute_map) + seen_json_attribute_names.add(attr) + except KeyError: + used_fallback_python_attribute_names.add(attr) if isinstance(value, list): if not value: # empty list or None @@ -1665,6 +1673,16 @@ def model_to_dict(model_instance, serialize=True): result[attr] = model_to_dict(value, serialize=serialize) else: result[attr] = value + if serialize: + for python_key in used_fallback_python_attribute_names: + json_key = py_to_json_map.get(python_key) + if json_key is None: + continue + if python_key == json_key: + continue + json_key_assigned_no_need_for_python_key = json_key in seen_json_attribute_names + if json_key_assigned_no_need_for_python_key: + del result[python_key] return result diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/model_utils.py b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/model_utils.py index 7993d12971b..bd30ebabb27 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/model_utils.py +++ b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/model_utils.py @@ -1632,12 +1632,20 @@ def model_to_dict(model_instance, serialize=True): model_instances = [model_instance] if model_instance._composed_schemas: model_instances.extend(model_instance._composed_instances) + seen_json_attribute_names = set() + used_fallback_python_attribute_names = set() + py_to_json_map = {} for model_instance in model_instances: for attr, value in model_instance._data_store.items(): if serialize: # we use get here because additional property key names do not # exist in attribute_map - attr = model_instance.attribute_map.get(attr, attr) + try: + attr = model_instance.attribute_map[attr] + py_to_json_map.update(model_instance.attribute_map) + seen_json_attribute_names.add(attr) + except KeyError: + used_fallback_python_attribute_names.add(attr) if isinstance(value, list): if not value: # empty list or None @@ -1665,6 +1673,16 @@ def model_to_dict(model_instance, serialize=True): result[attr] = model_to_dict(value, serialize=serialize) else: result[attr] = value + if serialize: + for python_key in used_fallback_python_attribute_names: + json_key = py_to_json_map.get(python_key) + if json_key is None: + continue + if python_key == json_key: + continue + json_key_assigned_no_need_for_python_key = json_key in seen_json_attribute_names + if json_key_assigned_no_need_for_python_key: + del result[python_key] return result diff --git a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/model_utils.py b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/model_utils.py index 2fcf6b2de1e..c73de248681 100644 --- a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/model_utils.py +++ b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/model_utils.py @@ -1632,12 +1632,20 @@ def model_to_dict(model_instance, serialize=True): model_instances = [model_instance] if model_instance._composed_schemas: model_instances.extend(model_instance._composed_instances) + seen_json_attribute_names = set() + used_fallback_python_attribute_names = set() + py_to_json_map = {} for model_instance in model_instances: for attr, value in model_instance._data_store.items(): if serialize: # we use get here because additional property key names do not # exist in attribute_map - attr = model_instance.attribute_map.get(attr, attr) + try: + attr = model_instance.attribute_map[attr] + py_to_json_map.update(model_instance.attribute_map) + seen_json_attribute_names.add(attr) + except KeyError: + used_fallback_python_attribute_names.add(attr) if isinstance(value, list): if not value: # empty list or None @@ -1665,6 +1673,16 @@ def model_to_dict(model_instance, serialize=True): result[attr] = model_to_dict(value, serialize=serialize) else: result[attr] = value + if serialize: + for python_key in used_fallback_python_attribute_names: + json_key = py_to_json_map.get(python_key) + if json_key is None: + continue + if python_key == json_key: + continue + json_key_assigned_no_need_for_python_key = json_key in seen_json_attribute_names + if json_key_assigned_no_need_for_python_key: + del result[python_key] return result diff --git a/samples/openapi3/client/petstore/python/.openapi-generator/FILES b/samples/openapi3/client/petstore/python/.openapi-generator/FILES index 9e23967bd9a..bf96206001f 100644 --- a/samples/openapi3/client/petstore/python/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python/.openapi-generator/FILES @@ -40,7 +40,7 @@ docs/EnumTest.md docs/EquilateralTriangle.md docs/FakeApi.md docs/FakeClassnameTags123Api.md -docs/FakeGetInlineAdditionalPropertiesPayloadArrayData.md +docs/FakePostInlineAdditionalPropertiesPayloadArrayData.md docs/File.md docs/FileSchemaTestClass.md docs/Foo.md @@ -150,7 +150,7 @@ petstore_api/model/enum_arrays.py petstore_api/model/enum_class.py petstore_api/model/enum_test.py petstore_api/model/equilateral_triangle.py -petstore_api/model/fake_get_inline_additional_properties_payload_array_data.py +petstore_api/model/fake_post_inline_additional_properties_payload_array_data.py petstore_api/model/file.py petstore_api/model/file_schema_test_class.py petstore_api/model/foo.py diff --git a/samples/openapi3/client/petstore/python/README.md b/samples/openapi3/client/petstore/python/README.md index bf7ae031db4..beb64bb7e04 100644 --- a/samples/openapi3/client/petstore/python/README.md +++ b/samples/openapi3/client/petstore/python/README.md @@ -91,11 +91,11 @@ Class | Method | HTTP request | Description *FakeApi* | [**download_attachment**](docs/FakeApi.md#download_attachment) | **GET** /{fileName} | downloads a file using Content-Disposition *FakeApi* | [**enum_test**](docs/FakeApi.md#enum_test) | **POST** /fake/refs/enum-test | Object contains enum properties and array properties containing enums *FakeApi* | [**fake_health_get**](docs/FakeApi.md#fake_health_get) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**get_inline_additional_properties_payload**](docs/FakeApi.md#get_inline_additional_properties_payload) | **GET** /fake/getInlineAdditionalPropertiesPayload | -*FakeApi* | [**get_inline_additional_properties_ref_payload**](docs/FakeApi.md#get_inline_additional_properties_ref_payload) | **GET** /fake/getInlineAdditionalPropertiesRefPayload | *FakeApi* | [**mammal**](docs/FakeApi.md#mammal) | **POST** /fake/refs/mammal | *FakeApi* | [**number_with_validations**](docs/FakeApi.md#number_with_validations) | **POST** /fake/refs/number | *FakeApi* | [**object_model_with_ref_props**](docs/FakeApi.md#object_model_with_ref_props) | **POST** /fake/refs/object_model_with_ref_props | +*FakeApi* | [**post_inline_additional_properties_payload**](docs/FakeApi.md#post_inline_additional_properties_payload) | **POST** /fake/postInlineAdditionalPropertiesPayload | +*FakeApi* | [**post_inline_additional_properties_ref_payload**](docs/FakeApi.md#post_inline_additional_properties_ref_payload) | **POST** /fake/postInlineAdditionalPropertiesRefPayload | *FakeApi* | [**string**](docs/FakeApi.md#string) | **POST** /fake/refs/string | *FakeApi* | [**string_enum**](docs/FakeApi.md#string_enum) | **POST** /fake/refs/enum | *FakeApi* | [**test_body_with_file_schema**](docs/FakeApi.md#test_body_with_file_schema) | **PUT** /fake/body-with-file-schema | @@ -168,7 +168,7 @@ Class | Method | HTTP request | Description - [EnumClass](docs/EnumClass.md) - [EnumTest](docs/EnumTest.md) - [EquilateralTriangle](docs/EquilateralTriangle.md) - - [FakeGetInlineAdditionalPropertiesPayloadArrayData](docs/FakeGetInlineAdditionalPropertiesPayloadArrayData.md) + - [FakePostInlineAdditionalPropertiesPayloadArrayData](docs/FakePostInlineAdditionalPropertiesPayloadArrayData.md) - [File](docs/File.md) - [FileSchemaTestClass](docs/FileSchemaTestClass.md) - [Foo](docs/Foo.md) diff --git a/samples/openapi3/client/petstore/python/docs/FakeApi.md b/samples/openapi3/client/petstore/python/docs/FakeApi.md index acc41cb4899..5802b45cb39 100644 --- a/samples/openapi3/client/petstore/python/docs/FakeApi.md +++ b/samples/openapi3/client/petstore/python/docs/FakeApi.md @@ -12,11 +12,11 @@ Method | HTTP request | Description [**download_attachment**](FakeApi.md#download_attachment) | **GET** /{fileName} | downloads a file using Content-Disposition [**enum_test**](FakeApi.md#enum_test) | **POST** /fake/refs/enum-test | Object contains enum properties and array properties containing enums [**fake_health_get**](FakeApi.md#fake_health_get) | **GET** /fake/health | Health check endpoint -[**get_inline_additional_properties_payload**](FakeApi.md#get_inline_additional_properties_payload) | **GET** /fake/getInlineAdditionalPropertiesPayload | -[**get_inline_additional_properties_ref_payload**](FakeApi.md#get_inline_additional_properties_ref_payload) | **GET** /fake/getInlineAdditionalPropertiesRefPayload | [**mammal**](FakeApi.md#mammal) | **POST** /fake/refs/mammal | [**number_with_validations**](FakeApi.md#number_with_validations) | **POST** /fake/refs/number | [**object_model_with_ref_props**](FakeApi.md#object_model_with_ref_props) | **POST** /fake/refs/object_model_with_ref_props | +[**post_inline_additional_properties_payload**](FakeApi.md#post_inline_additional_properties_payload) | **POST** /fake/postInlineAdditionalPropertiesPayload | +[**post_inline_additional_properties_ref_payload**](FakeApi.md#post_inline_additional_properties_ref_payload) | **POST** /fake/postInlineAdditionalPropertiesRefPayload | [**string**](FakeApi.md#string) | **POST** /fake/refs/string | [**string_enum**](FakeApi.md#string_enum) | **POST** /fake/refs/enum | [**test_body_with_file_schema**](FakeApi.md#test_body_with_file_schema) | **PUT** /fake/body-with-file-schema | @@ -564,148 +564,6 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **get_inline_additional_properties_payload** -> InlineObject6 get_inline_additional_properties_payload() - - - -### Example - -```python -import time -import petstore_api -from petstore_api.api import fake_api -from petstore_api.model.inline_object6 import InlineObject6 -from pprint import pprint -# Defining the host is optional and defaults to http://petstore.swagger.io:80/v2 -# See configuration.py for a list of all supported configuration parameters. -configuration = petstore_api.Configuration( - host = "http://petstore.swagger.io:80/v2" -) - - -# Enter a context with an instance of the API client -with petstore_api.ApiClient() as api_client: - # Create an instance of the API class - api_instance = fake_api.FakeApi(api_client) - inline_object6 = InlineObject6( - array_data=[ - FakeGetInlineAdditionalPropertiesPayloadArrayData( - labels=[ - "labels_example", - ], - ), - ], - ) # InlineObject6 | (optional) - - # example passing only required values which don't have defaults set - # and optional values - try: - api_response = api_instance.get_inline_additional_properties_payload(inline_object6=inline_object6) - pprint(api_response) - except petstore_api.ApiException as e: - print("Exception when calling FakeApi->get_inline_additional_properties_payload: %s\n" % e) -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **inline_object6** | [**InlineObject6**](InlineObject6.md)| | [optional] - -### Return type - -[**InlineObject6**](InlineObject6.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | InlineAdditionalPropertiesPayload | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **get_inline_additional_properties_ref_payload** -> InlineAdditionalPropertiesRefPayload get_inline_additional_properties_ref_payload() - - - -### Example - -```python -import time -import petstore_api -from petstore_api.api import fake_api -from petstore_api.model.inline_additional_properties_ref_payload import InlineAdditionalPropertiesRefPayload -from pprint import pprint -# Defining the host is optional and defaults to http://petstore.swagger.io:80/v2 -# See configuration.py for a list of all supported configuration parameters. -configuration = petstore_api.Configuration( - host = "http://petstore.swagger.io:80/v2" -) - - -# Enter a context with an instance of the API client -with petstore_api.ApiClient() as api_client: - # Create an instance of the API class - api_instance = fake_api.FakeApi(api_client) - inline_additional_properties_ref_payload = InlineAdditionalPropertiesRefPayload( - array_data=[ - FakeGetInlineAdditionalPropertiesPayloadArrayData( - labels=[ - "labels_example", - ], - ), - ], - ) # InlineAdditionalPropertiesRefPayload | (optional) - - # example passing only required values which don't have defaults set - # and optional values - try: - api_response = api_instance.get_inline_additional_properties_ref_payload(inline_additional_properties_ref_payload=inline_additional_properties_ref_payload) - pprint(api_response) - except petstore_api.ApiException as e: - print("Exception when calling FakeApi->get_inline_additional_properties_ref_payload: %s\n" % e) -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **inline_additional_properties_ref_payload** | [**InlineAdditionalPropertiesRefPayload**](InlineAdditionalPropertiesRefPayload.md)| | [optional] - -### Return type - -[**InlineAdditionalPropertiesRefPayload**](InlineAdditionalPropertiesRefPayload.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | InlineAdditionalPropertiesRefPayload | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **mammal** > Mammal mammal(mammal) @@ -908,6 +766,148 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **post_inline_additional_properties_payload** +> InlineObject6 post_inline_additional_properties_payload() + + + +### Example + +```python +import time +import petstore_api +from petstore_api.api import fake_api +from petstore_api.model.inline_object6 import InlineObject6 +from pprint import pprint +# Defining the host is optional and defaults to http://petstore.swagger.io:80/v2 +# See configuration.py for a list of all supported configuration parameters. +configuration = petstore_api.Configuration( + host = "http://petstore.swagger.io:80/v2" +) + + +# Enter a context with an instance of the API client +with petstore_api.ApiClient() as api_client: + # Create an instance of the API class + api_instance = fake_api.FakeApi(api_client) + inline_object6 = InlineObject6( + array_data=[ + FakePostInlineAdditionalPropertiesPayloadArrayData( + labels=[ + "labels_example", + ], + ), + ], + ) # InlineObject6 | (optional) + + # example passing only required values which don't have defaults set + # and optional values + try: + api_response = api_instance.post_inline_additional_properties_payload(inline_object6=inline_object6) + pprint(api_response) + except petstore_api.ApiException as e: + print("Exception when calling FakeApi->post_inline_additional_properties_payload: %s\n" % e) +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **inline_object6** | [**InlineObject6**](InlineObject6.md)| | [optional] + +### Return type + +[**InlineObject6**](InlineObject6.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | InlineAdditionalPropertiesPayload | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **post_inline_additional_properties_ref_payload** +> InlineAdditionalPropertiesRefPayload post_inline_additional_properties_ref_payload() + + + +### Example + +```python +import time +import petstore_api +from petstore_api.api import fake_api +from petstore_api.model.inline_additional_properties_ref_payload import InlineAdditionalPropertiesRefPayload +from pprint import pprint +# Defining the host is optional and defaults to http://petstore.swagger.io:80/v2 +# See configuration.py for a list of all supported configuration parameters. +configuration = petstore_api.Configuration( + host = "http://petstore.swagger.io:80/v2" +) + + +# Enter a context with an instance of the API client +with petstore_api.ApiClient() as api_client: + # Create an instance of the API class + api_instance = fake_api.FakeApi(api_client) + inline_additional_properties_ref_payload = InlineAdditionalPropertiesRefPayload( + array_data=[ + FakePostInlineAdditionalPropertiesPayloadArrayData( + labels=[ + "labels_example", + ], + ), + ], + ) # InlineAdditionalPropertiesRefPayload | (optional) + + # example passing only required values which don't have defaults set + # and optional values + try: + api_response = api_instance.post_inline_additional_properties_ref_payload(inline_additional_properties_ref_payload=inline_additional_properties_ref_payload) + pprint(api_response) + except petstore_api.ApiException as e: + print("Exception when calling FakeApi->post_inline_additional_properties_ref_payload: %s\n" % e) +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **inline_additional_properties_ref_payload** | [**InlineAdditionalPropertiesRefPayload**](InlineAdditionalPropertiesRefPayload.md)| | [optional] + +### Return type + +[**InlineAdditionalPropertiesRefPayload**](InlineAdditionalPropertiesRefPayload.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | InlineAdditionalPropertiesRefPayload | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **string** > str string() diff --git a/samples/openapi3/client/petstore/python/docs/FakeGetInlineAdditionalPropertiesPayloadArrayData.md b/samples/openapi3/client/petstore/python/docs/FakePostInlineAdditionalPropertiesPayloadArrayData.md similarity index 90% rename from samples/openapi3/client/petstore/python/docs/FakeGetInlineAdditionalPropertiesPayloadArrayData.md rename to samples/openapi3/client/petstore/python/docs/FakePostInlineAdditionalPropertiesPayloadArrayData.md index 6c3418d8c07..23ec35f5dcd 100644 --- a/samples/openapi3/client/petstore/python/docs/FakeGetInlineAdditionalPropertiesPayloadArrayData.md +++ b/samples/openapi3/client/petstore/python/docs/FakePostInlineAdditionalPropertiesPayloadArrayData.md @@ -1,4 +1,4 @@ -# FakeGetInlineAdditionalPropertiesPayloadArrayData +# FakePostInlineAdditionalPropertiesPayloadArrayData ## Properties diff --git a/samples/openapi3/client/petstore/python/docs/InlineAdditionalPropertiesRefPayload.md b/samples/openapi3/client/petstore/python/docs/InlineAdditionalPropertiesRefPayload.md index 5922fc61f1a..f99ed143d3f 100644 --- a/samples/openapi3/client/petstore/python/docs/InlineAdditionalPropertiesRefPayload.md +++ b/samples/openapi3/client/petstore/python/docs/InlineAdditionalPropertiesRefPayload.md @@ -5,7 +5,7 @@ this payload is used for verification that some model_to_dict issues are fixed ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**array_data** | [**[FakeGetInlineAdditionalPropertiesPayloadArrayData], none_type**](FakeGetInlineAdditionalPropertiesPayloadArrayData.md) | | [optional] +**array_data** | [**[FakePostInlineAdditionalPropertiesPayloadArrayData], none_type**](FakePostInlineAdditionalPropertiesPayloadArrayData.md) | | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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) diff --git a/samples/openapi3/client/petstore/python/docs/InlineObject6.md b/samples/openapi3/client/petstore/python/docs/InlineObject6.md index fc83501c154..b4a7a55a2c7 100644 --- a/samples/openapi3/client/petstore/python/docs/InlineObject6.md +++ b/samples/openapi3/client/petstore/python/docs/InlineObject6.md @@ -5,7 +5,7 @@ this payload is used for verification that some model_to_dict issues are fixed ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**array_data** | [**[FakeGetInlineAdditionalPropertiesPayloadArrayData], none_type**](FakeGetInlineAdditionalPropertiesPayloadArrayData.md) | | [optional] +**array_data** | [**[FakePostInlineAdditionalPropertiesPayloadArrayData], none_type**](FakePostInlineAdditionalPropertiesPayloadArrayData.md) | | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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) diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/fake_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/fake_api.py index 27a387e0570..7dea3785aec 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/api/fake_api.py +++ b/samples/openapi3/client/petstore/python/petstore_api/api/fake_api.py @@ -945,228 +945,6 @@ class FakeApi(object): callable=__fake_health_get ) - def __get_inline_additional_properties_payload( - self, - **kwargs - ): - """get_inline_additional_properties_payload # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.get_inline_additional_properties_payload(async_req=True) - >>> result = thread.get() - - - Keyword Args: - inline_object6 (InlineObject6): [optional] - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - async_req (bool): execute request asynchronously - - Returns: - InlineObject6 - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_host_index'] = kwargs.get('_host_index') - return self.call_with_http_info(**kwargs) - - self.get_inline_additional_properties_payload = _Endpoint( - settings={ - 'response_type': (InlineObject6,), - 'auth': [], - 'endpoint_path': '/fake/getInlineAdditionalPropertiesPayload', - 'operation_id': 'get_inline_additional_properties_payload', - 'http_method': 'GET', - 'servers': None, - }, - params_map={ - 'all': [ - 'inline_object6', - ], - 'required': [], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - ] - }, - root_map={ - 'validations': { - }, - 'allowed_values': { - }, - 'openapi_types': { - 'inline_object6': - (InlineObject6,), - }, - 'attribute_map': { - }, - 'location_map': { - 'inline_object6': 'body', - }, - 'collection_format_map': { - } - }, - headers_map={ - 'accept': [ - 'application/json' - ], - 'content_type': [ - 'application/json' - ] - }, - api_client=api_client, - callable=__get_inline_additional_properties_payload - ) - - def __get_inline_additional_properties_ref_payload( - self, - **kwargs - ): - """get_inline_additional_properties_ref_payload # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.get_inline_additional_properties_ref_payload(async_req=True) - >>> result = thread.get() - - - Keyword Args: - inline_additional_properties_ref_payload (InlineAdditionalPropertiesRefPayload): [optional] - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - async_req (bool): execute request asynchronously - - Returns: - InlineAdditionalPropertiesRefPayload - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_host_index'] = kwargs.get('_host_index') - return self.call_with_http_info(**kwargs) - - self.get_inline_additional_properties_ref_payload = _Endpoint( - settings={ - 'response_type': (InlineAdditionalPropertiesRefPayload,), - 'auth': [], - 'endpoint_path': '/fake/getInlineAdditionalPropertiesRefPayload', - 'operation_id': 'get_inline_additional_properties_ref_payload', - 'http_method': 'GET', - 'servers': None, - }, - params_map={ - 'all': [ - 'inline_additional_properties_ref_payload', - ], - 'required': [], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - ] - }, - root_map={ - 'validations': { - }, - 'allowed_values': { - }, - 'openapi_types': { - 'inline_additional_properties_ref_payload': - (InlineAdditionalPropertiesRefPayload,), - }, - 'attribute_map': { - }, - 'location_map': { - 'inline_additional_properties_ref_payload': 'body', - }, - 'collection_format_map': { - } - }, - headers_map={ - 'accept': [ - 'application/json' - ], - 'content_type': [ - 'application/json' - ] - }, - api_client=api_client, - callable=__get_inline_additional_properties_ref_payload - ) - def __mammal( self, mammal, @@ -1509,6 +1287,228 @@ class FakeApi(object): callable=__object_model_with_ref_props ) + def __post_inline_additional_properties_payload( + self, + **kwargs + ): + """post_inline_additional_properties_payload # noqa: E501 + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + + >>> thread = api.post_inline_additional_properties_payload(async_req=True) + >>> result = thread.get() + + + Keyword Args: + inline_object6 (InlineObject6): [optional] + _return_http_data_only (bool): response data without head status + code and headers. Default is True. + _preload_content (bool): if False, the urllib3.HTTPResponse object + will be returned without reading/decoding response data. + Default is True. + _request_timeout (float/tuple): timeout setting for this request. If one + number provided, it will be total request timeout. It can also + be a pair (tuple) of (connection, read) timeouts. + Default is None. + _check_input_type (bool): specifies if type checking + should be done one the data sent to the server. + Default is True. + _check_return_type (bool): specifies if type checking + should be done one the data received from the server. + Default is True. + _host_index (int/None): specifies the index of the server + that we want to use. + Default is read from the configuration. + async_req (bool): execute request asynchronously + + Returns: + InlineObject6 + If the method is called asynchronously, returns the request + thread. + """ + kwargs['async_req'] = kwargs.get( + 'async_req', False + ) + kwargs['_return_http_data_only'] = kwargs.get( + '_return_http_data_only', True + ) + kwargs['_preload_content'] = kwargs.get( + '_preload_content', True + ) + kwargs['_request_timeout'] = kwargs.get( + '_request_timeout', None + ) + kwargs['_check_input_type'] = kwargs.get( + '_check_input_type', True + ) + kwargs['_check_return_type'] = kwargs.get( + '_check_return_type', True + ) + kwargs['_host_index'] = kwargs.get('_host_index') + return self.call_with_http_info(**kwargs) + + self.post_inline_additional_properties_payload = _Endpoint( + settings={ + 'response_type': (InlineObject6,), + 'auth': [], + 'endpoint_path': '/fake/postInlineAdditionalPropertiesPayload', + 'operation_id': 'post_inline_additional_properties_payload', + 'http_method': 'POST', + 'servers': None, + }, + params_map={ + 'all': [ + 'inline_object6', + ], + 'required': [], + 'nullable': [ + ], + 'enum': [ + ], + 'validation': [ + ] + }, + root_map={ + 'validations': { + }, + 'allowed_values': { + }, + 'openapi_types': { + 'inline_object6': + (InlineObject6,), + }, + 'attribute_map': { + }, + 'location_map': { + 'inline_object6': 'body', + }, + 'collection_format_map': { + } + }, + headers_map={ + 'accept': [ + 'application/json' + ], + 'content_type': [ + 'application/json' + ] + }, + api_client=api_client, + callable=__post_inline_additional_properties_payload + ) + + def __post_inline_additional_properties_ref_payload( + self, + **kwargs + ): + """post_inline_additional_properties_ref_payload # noqa: E501 + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + + >>> thread = api.post_inline_additional_properties_ref_payload(async_req=True) + >>> result = thread.get() + + + Keyword Args: + inline_additional_properties_ref_payload (InlineAdditionalPropertiesRefPayload): [optional] + _return_http_data_only (bool): response data without head status + code and headers. Default is True. + _preload_content (bool): if False, the urllib3.HTTPResponse object + will be returned without reading/decoding response data. + Default is True. + _request_timeout (float/tuple): timeout setting for this request. If one + number provided, it will be total request timeout. It can also + be a pair (tuple) of (connection, read) timeouts. + Default is None. + _check_input_type (bool): specifies if type checking + should be done one the data sent to the server. + Default is True. + _check_return_type (bool): specifies if type checking + should be done one the data received from the server. + Default is True. + _host_index (int/None): specifies the index of the server + that we want to use. + Default is read from the configuration. + async_req (bool): execute request asynchronously + + Returns: + InlineAdditionalPropertiesRefPayload + If the method is called asynchronously, returns the request + thread. + """ + kwargs['async_req'] = kwargs.get( + 'async_req', False + ) + kwargs['_return_http_data_only'] = kwargs.get( + '_return_http_data_only', True + ) + kwargs['_preload_content'] = kwargs.get( + '_preload_content', True + ) + kwargs['_request_timeout'] = kwargs.get( + '_request_timeout', None + ) + kwargs['_check_input_type'] = kwargs.get( + '_check_input_type', True + ) + kwargs['_check_return_type'] = kwargs.get( + '_check_return_type', True + ) + kwargs['_host_index'] = kwargs.get('_host_index') + return self.call_with_http_info(**kwargs) + + self.post_inline_additional_properties_ref_payload = _Endpoint( + settings={ + 'response_type': (InlineAdditionalPropertiesRefPayload,), + 'auth': [], + 'endpoint_path': '/fake/postInlineAdditionalPropertiesRefPayload', + 'operation_id': 'post_inline_additional_properties_ref_payload', + 'http_method': 'POST', + 'servers': None, + }, + params_map={ + 'all': [ + 'inline_additional_properties_ref_payload', + ], + 'required': [], + 'nullable': [ + ], + 'enum': [ + ], + 'validation': [ + ] + }, + root_map={ + 'validations': { + }, + 'allowed_values': { + }, + 'openapi_types': { + 'inline_additional_properties_ref_payload': + (InlineAdditionalPropertiesRefPayload,), + }, + 'attribute_map': { + }, + 'location_map': { + 'inline_additional_properties_ref_payload': 'body', + }, + 'collection_format_map': { + } + }, + headers_map={ + 'accept': [ + 'application/json' + ], + 'content_type': [ + 'application/json' + ] + }, + api_client=api_client, + callable=__post_inline_additional_properties_ref_payload + ) + def __string( self, **kwargs diff --git a/samples/openapi3/client/petstore/python/petstore_api/model/fake_get_inline_additional_properties_payload_array_data.py b/samples/openapi3/client/petstore/python/petstore_api/model/fake_post_inline_additional_properties_payload_array_data.py similarity index 97% rename from samples/openapi3/client/petstore/python/petstore_api/model/fake_get_inline_additional_properties_payload_array_data.py rename to samples/openapi3/client/petstore/python/petstore_api/model/fake_post_inline_additional_properties_payload_array_data.py index 71b921c921f..bf9761b084c 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model/fake_get_inline_additional_properties_payload_array_data.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model/fake_post_inline_additional_properties_payload_array_data.py @@ -30,7 +30,7 @@ from petstore_api.exceptions import ApiAttributeError -class FakeGetInlineAdditionalPropertiesPayloadArrayData(ModelNormal): +class FakePostInlineAdditionalPropertiesPayloadArrayData(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. Ref: https://openapi-generator.tech @@ -101,7 +101,7 @@ class FakeGetInlineAdditionalPropertiesPayloadArrayData(ModelNormal): @classmethod @convert_js_args_to_python_args def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 - """FakeGetInlineAdditionalPropertiesPayloadArrayData - a model defined in OpenAPI + """FakePostInlineAdditionalPropertiesPayloadArrayData - a model defined in OpenAPI Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -183,7 +183,7 @@ class FakeGetInlineAdditionalPropertiesPayloadArrayData(ModelNormal): @convert_js_args_to_python_args def __init__(self, *args, **kwargs): # noqa: E501 - """FakeGetInlineAdditionalPropertiesPayloadArrayData - a model defined in OpenAPI + """FakePostInlineAdditionalPropertiesPayloadArrayData - a model defined in OpenAPI Keyword Args: _check_type (bool): if True, values for parameters in openapi_types diff --git a/samples/openapi3/client/petstore/python/petstore_api/model/inline_additional_properties_ref_payload.py b/samples/openapi3/client/petstore/python/petstore_api/model/inline_additional_properties_ref_payload.py index 4ba519ea0af..85d3fa5922f 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model/inline_additional_properties_ref_payload.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model/inline_additional_properties_ref_payload.py @@ -30,8 +30,8 @@ from petstore_api.exceptions import ApiAttributeError def lazy_import(): - from petstore_api.model.fake_get_inline_additional_properties_payload_array_data import FakeGetInlineAdditionalPropertiesPayloadArrayData - globals()['FakeGetInlineAdditionalPropertiesPayloadArrayData'] = FakeGetInlineAdditionalPropertiesPayloadArrayData + from petstore_api.model.fake_post_inline_additional_properties_payload_array_data import FakePostInlineAdditionalPropertiesPayloadArrayData + globals()['FakePostInlineAdditionalPropertiesPayloadArrayData'] = FakePostInlineAdditionalPropertiesPayloadArrayData class InlineAdditionalPropertiesRefPayload(ModelNormal): @@ -87,7 +87,7 @@ class InlineAdditionalPropertiesRefPayload(ModelNormal): """ lazy_import() return { - 'array_data': ([FakeGetInlineAdditionalPropertiesPayloadArrayData], none_type,), # noqa: E501 + 'array_data': ([FakePostInlineAdditionalPropertiesPayloadArrayData], none_type,), # noqa: E501 } @cached_property @@ -140,7 +140,7 @@ class InlineAdditionalPropertiesRefPayload(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - array_data ([FakeGetInlineAdditionalPropertiesPayloadArrayData], none_type): [optional] # noqa: E501 + array_data ([FakePostInlineAdditionalPropertiesPayloadArrayData], none_type): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -222,7 +222,7 @@ class InlineAdditionalPropertiesRefPayload(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - array_data ([FakeGetInlineAdditionalPropertiesPayloadArrayData], none_type): [optional] # noqa: E501 + array_data ([FakePostInlineAdditionalPropertiesPayloadArrayData], none_type): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/samples/openapi3/client/petstore/python/petstore_api/model/inline_object6.py b/samples/openapi3/client/petstore/python/petstore_api/model/inline_object6.py index dbbd376e125..828d30aa076 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model/inline_object6.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model/inline_object6.py @@ -30,8 +30,8 @@ from petstore_api.exceptions import ApiAttributeError def lazy_import(): - from petstore_api.model.fake_get_inline_additional_properties_payload_array_data import FakeGetInlineAdditionalPropertiesPayloadArrayData - globals()['FakeGetInlineAdditionalPropertiesPayloadArrayData'] = FakeGetInlineAdditionalPropertiesPayloadArrayData + from petstore_api.model.fake_post_inline_additional_properties_payload_array_data import FakePostInlineAdditionalPropertiesPayloadArrayData + globals()['FakePostInlineAdditionalPropertiesPayloadArrayData'] = FakePostInlineAdditionalPropertiesPayloadArrayData class InlineObject6(ModelNormal): @@ -87,7 +87,7 @@ class InlineObject6(ModelNormal): """ lazy_import() return { - 'array_data': ([FakeGetInlineAdditionalPropertiesPayloadArrayData], none_type,), # noqa: E501 + 'array_data': ([FakePostInlineAdditionalPropertiesPayloadArrayData], none_type,), # noqa: E501 } @cached_property @@ -140,7 +140,7 @@ class InlineObject6(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - array_data ([FakeGetInlineAdditionalPropertiesPayloadArrayData], none_type): [optional] # noqa: E501 + array_data ([FakePostInlineAdditionalPropertiesPayloadArrayData], none_type): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -222,7 +222,7 @@ class InlineObject6(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - array_data ([FakeGetInlineAdditionalPropertiesPayloadArrayData], none_type): [optional] # noqa: E501 + array_data ([FakePostInlineAdditionalPropertiesPayloadArrayData], none_type): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/samples/openapi3/client/petstore/python/petstore_api/model_utils.py b/samples/openapi3/client/petstore/python/petstore_api/model_utils.py index 3913228d6b8..97f9b2881cc 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model_utils.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model_utils.py @@ -1632,12 +1632,20 @@ def model_to_dict(model_instance, serialize=True): model_instances = [model_instance] if model_instance._composed_schemas: model_instances.extend(model_instance._composed_instances) + seen_json_attribute_names = set() + used_fallback_python_attribute_names = set() + py_to_json_map = {} for model_instance in model_instances: for attr, value in model_instance._data_store.items(): if serialize: # we use get here because additional property key names do not # exist in attribute_map - attr = model_instance.attribute_map.get(attr, attr) + try: + attr = model_instance.attribute_map[attr] + py_to_json_map.update(model_instance.attribute_map) + seen_json_attribute_names.add(attr) + except KeyError: + used_fallback_python_attribute_names.add(attr) if isinstance(value, list): if not value: # empty list or None @@ -1665,6 +1673,16 @@ def model_to_dict(model_instance, serialize=True): result[attr] = model_to_dict(value, serialize=serialize) else: result[attr] = value + if serialize: + for python_key in used_fallback_python_attribute_names: + json_key = py_to_json_map.get(python_key) + if json_key is None: + continue + if python_key == json_key: + continue + json_key_assigned_no_need_for_python_key = json_key in seen_json_attribute_names + if json_key_assigned_no_need_for_python_key: + del result[python_key] return result diff --git a/samples/openapi3/client/petstore/python/petstore_api/models/__init__.py b/samples/openapi3/client/petstore/python/petstore_api/models/__init__.py index f18e33defce..9485a03d2f8 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/models/__init__.py +++ b/samples/openapi3/client/petstore/python/petstore_api/models/__init__.py @@ -43,7 +43,7 @@ from petstore_api.model.enum_arrays import EnumArrays from petstore_api.model.enum_class import EnumClass from petstore_api.model.enum_test import EnumTest from petstore_api.model.equilateral_triangle import EquilateralTriangle -from petstore_api.model.fake_get_inline_additional_properties_payload_array_data import FakeGetInlineAdditionalPropertiesPayloadArrayData +from petstore_api.model.fake_post_inline_additional_properties_payload_array_data import FakePostInlineAdditionalPropertiesPayloadArrayData from petstore_api.model.file import File from petstore_api.model.file_schema_test_class import FileSchemaTestClass from petstore_api.model.foo import Foo diff --git a/samples/openapi3/client/petstore/python/test/test_fake_get_inline_additional_properties_payload_array_data.py b/samples/openapi3/client/petstore/python/test/test_fake_post_inline_additional_properties_payload_array_data.py similarity index 52% rename from samples/openapi3/client/petstore/python/test/test_fake_get_inline_additional_properties_payload_array_data.py rename to samples/openapi3/client/petstore/python/test/test_fake_post_inline_additional_properties_payload_array_data.py index 2e95eb37dff..6b4be44e865 100644 --- a/samples/openapi3/client/petstore/python/test/test_fake_get_inline_additional_properties_payload_array_data.py +++ b/samples/openapi3/client/petstore/python/test/test_fake_post_inline_additional_properties_payload_array_data.py @@ -12,11 +12,11 @@ import sys import unittest import petstore_api -from petstore_api.model.fake_get_inline_additional_properties_payload_array_data import FakeGetInlineAdditionalPropertiesPayloadArrayData +from petstore_api.model.fake_post_inline_additional_properties_payload_array_data import FakePostInlineAdditionalPropertiesPayloadArrayData -class TestFakeGetInlineAdditionalPropertiesPayloadArrayData(unittest.TestCase): - """FakeGetInlineAdditionalPropertiesPayloadArrayData unit test stubs""" +class TestFakePostInlineAdditionalPropertiesPayloadArrayData(unittest.TestCase): + """FakePostInlineAdditionalPropertiesPayloadArrayData unit test stubs""" def setUp(self): pass @@ -24,10 +24,10 @@ class TestFakeGetInlineAdditionalPropertiesPayloadArrayData(unittest.TestCase): def tearDown(self): pass - def testFakeGetInlineAdditionalPropertiesPayloadArrayData(self): - """Test FakeGetInlineAdditionalPropertiesPayloadArrayData""" + def testFakePostInlineAdditionalPropertiesPayloadArrayData(self): + """Test FakePostInlineAdditionalPropertiesPayloadArrayData""" # FIXME: construct object with mandatory attributes with example values - # model = FakeGetInlineAdditionalPropertiesPayloadArrayData() # noqa: E501 + # model = FakePostInlineAdditionalPropertiesPayloadArrayData() # noqa: E501 pass diff --git a/samples/openapi3/client/petstore/python/test/test_inline_additional_properties_ref_payload.py b/samples/openapi3/client/petstore/python/test/test_inline_additional_properties_ref_payload.py index 709ee27adc8..7e8cf543335 100644 --- a/samples/openapi3/client/petstore/python/test/test_inline_additional_properties_ref_payload.py +++ b/samples/openapi3/client/petstore/python/test/test_inline_additional_properties_ref_payload.py @@ -12,8 +12,8 @@ import sys import unittest import petstore_api -from petstore_api.model.fake_get_inline_additional_properties_payload_array_data import FakeGetInlineAdditionalPropertiesPayloadArrayData -globals()['FakeGetInlineAdditionalPropertiesPayloadArrayData'] = FakeGetInlineAdditionalPropertiesPayloadArrayData +from petstore_api.model.fake_post_inline_additional_properties_payload_array_data import FakePostInlineAdditionalPropertiesPayloadArrayData +globals()['FakePostInlineAdditionalPropertiesPayloadArrayData'] = FakePostInlineAdditionalPropertiesPayloadArrayData from petstore_api.model.inline_additional_properties_ref_payload import InlineAdditionalPropertiesRefPayload diff --git a/samples/openapi3/client/petstore/python/test/test_inline_object6.py b/samples/openapi3/client/petstore/python/test/test_inline_object6.py index 463123d8e55..887e5689b9a 100644 --- a/samples/openapi3/client/petstore/python/test/test_inline_object6.py +++ b/samples/openapi3/client/petstore/python/test/test_inline_object6.py @@ -12,8 +12,8 @@ import sys import unittest import petstore_api -from petstore_api.model.fake_get_inline_additional_properties_payload_array_data import FakeGetInlineAdditionalPropertiesPayloadArrayData -globals()['FakeGetInlineAdditionalPropertiesPayloadArrayData'] = FakeGetInlineAdditionalPropertiesPayloadArrayData +from petstore_api.model.fake_post_inline_additional_properties_payload_array_data import FakePostInlineAdditionalPropertiesPayloadArrayData +globals()['FakePostInlineAdditionalPropertiesPayloadArrayData'] = FakePostInlineAdditionalPropertiesPayloadArrayData from petstore_api.model.inline_object6 import InlineObject6 diff --git a/samples/openapi3/client/petstore/python/tests_manual/test_fake_api.py b/samples/openapi3/client/petstore/python/tests_manual/test_fake_api.py index 8c0886e373b..954f1ce8e5c 100644 --- a/samples/openapi3/client/petstore/python/tests_manual/test_fake_api.py +++ b/samples/openapi3/client/petstore/python/tests_manual/test_fake_api.py @@ -19,7 +19,7 @@ from unittest.mock import patch import petstore_api from petstore_api.api.fake_api import FakeApi # noqa: E501 from petstore_api.rest import RESTClientObject, RESTResponse -from petstore_api.model_utils import file_type +from petstore_api.model_utils import file_type, model_to_dict HTTPResponse = namedtuple( 'urllib3_response_HTTPResponse', @@ -59,14 +59,15 @@ class TestFakeApi(unittest.TestCase): url, accept='application/json', http_method='POST', + content_type='application/json', **kwargs ): headers = { 'Accept': accept, 'User-Agent': 'OpenAPI-Generator/1.0.0/python', } - if 'content_type' in kwargs: - headers['Content-Type'] = kwargs['content_type'] + if content_type: + headers['Content-Type'] = content_type used_kwargs = dict( _preload_content=True, _request_timeout=None, @@ -77,12 +78,13 @@ class TestFakeApi(unittest.TestCase): used_kwargs['post_params'] = kwargs['post_params'] if 'body' in kwargs: used_kwargs['body'] = kwargs['body'] - else: - mock_method.assert_called_with( - http_method, - url, - **used_kwargs - ) + if 'post_params' not in used_kwargs: + used_kwargs['post_params'] = [] + mock_method.assert_called_with( + http_method, + url, + **used_kwargs + ) def test_array_model(self): """Test case for array_model @@ -101,7 +103,11 @@ class TestFakeApi(unittest.TestCase): mock_method.return_value = self.mock_response(json_data) response = endpoint(body=body) - self.assert_request_called_with(mock_method, 'http://petstore.swagger.io:80/v2/fake/refs/arraymodel', body=json_data) + self.assert_request_called_with( + mock_method, + 'http://petstore.swagger.io:80/v2/fake/refs/arraymodel', + body=json_data, + ) assert isinstance(response, animal_farm.AnimalFarm) assert response == body @@ -158,7 +164,10 @@ class TestFakeApi(unittest.TestCase): response = endpoint(enum_test=body) self.assert_request_called_with( - mock_method, 'http://petstore.swagger.io:80/v2/fake/refs/enum-test', body=json_value) + mock_method, + 'http://petstore.swagger.io:80/v2/fake/refs/enum-test', + body=json_value, + ) assert isinstance(response, EnumTest) assert response == body @@ -174,7 +183,10 @@ class TestFakeApi(unittest.TestCase): response = endpoint(enum_test=body) self.assert_request_called_with( - mock_method, 'http://petstore.swagger.io:80/v2/fake/refs/enum-test', body=json_value) + mock_method, + 'http://petstore.swagger.io:80/v2/fake/refs/enum-test', + body=json_value, + ) assert isinstance(response, EnumTest) assert response == body @@ -198,7 +210,11 @@ class TestFakeApi(unittest.TestCase): mock_method.return_value = self.mock_response(value_simple) response = endpoint(array_of_enums=body) - self.assert_request_called_with(mock_method, 'http://petstore.swagger.io:80/v2/fake/refs/array-of-enums', body=value_simple) + self.assert_request_called_with( + mock_method, + 'http://petstore.swagger.io:80/v2/fake/refs/array-of-enums', + body=value_simple, + ) assert isinstance(response, array_of_enums.ArrayOfEnums) assert response.value == value @@ -219,7 +235,11 @@ class TestFakeApi(unittest.TestCase): mock_method.return_value = self.mock_response(value) response = endpoint(body=body) - self.assert_request_called_with(mock_method, 'http://petstore.swagger.io:80/v2/fake/refs/number', body=value) + self.assert_request_called_with( + mock_method, + 'http://petstore.swagger.io:80/v2/fake/refs/number', + body=value, + ) assert isinstance(response, number_with_validations.NumberWithValidations) assert response.value == value @@ -262,7 +282,7 @@ class TestFakeApi(unittest.TestCase): self.assert_request_called_with( mock_method, 'http://petstore.swagger.io:80/v2/fake/refs/object_model_with_ref_props', - body=json_payload + body=json_payload, ) assert isinstance(response, expected_model.__class__) @@ -300,7 +320,7 @@ class TestFakeApi(unittest.TestCase): self.assert_request_called_with( mock_method, 'http://petstore.swagger.io:80/v2/fake/refs/composed_one_of_number_with_validations', - body=value_simple + body=value_simple, ) assert isinstance(response, body.__class__) @@ -321,7 +341,11 @@ class TestFakeApi(unittest.TestCase): mock_method.return_value = self.mock_response(value_simple) response = endpoint(body=body) - self.assert_request_called_with(mock_method, 'http://petstore.swagger.io:80/v2/fake/refs/string', body=value_simple) + self.assert_request_called_with( + mock_method, + 'http://petstore.swagger.io:80/v2/fake/refs/string', + body=value_simple, + ) assert isinstance(response, str) assert response == value_simple @@ -343,7 +367,11 @@ class TestFakeApi(unittest.TestCase): mock_method.return_value = self.mock_response(value) response = endpoint(body=body) - self.assert_request_called_with(mock_method, 'http://petstore.swagger.io:80/v2/fake/refs/enum', body=value) + self.assert_request_called_with( + mock_method, + 'http://petstore.swagger.io:80/v2/fake/refs/enum', + body=value, + ) assert isinstance(response, string_enum.StringEnum) assert response.value == value @@ -495,6 +523,7 @@ class TestFakeApi(unittest.TestCase): 'http://www.jtricks.com/download-text', http_method='GET', accept='text/plain', + content_type=None, ) self.assertTrue(isinstance(file_object, file_type)) self.assertFalse(file_object.closed) @@ -532,8 +561,11 @@ class TestFakeApi(unittest.TestCase): self.assert_request_called_with( mock_method, 'http://petstore.swagger.io:80/v2/fake/uploadDownloadFile', - body=expected_file_data, content_type='application/octet-stream' + body=expected_file_data, + content_type='application/octet-stream', + accept='application/octet-stream' ) + self.assertTrue(isinstance(downloaded_file, file_type)) self.assertFalse(downloaded_file.closed) self.assertEqual(downloaded_file.read(), expected_file_data) @@ -604,12 +636,12 @@ class TestFakeApi(unittest.TestCase): """ pass - def test_get_inline_additional_properties_ref_payload(self): - """Test case for getInlineAdditionlPropertiesRefPayload + def test_post_inline_additional_properties_ref_payload(self): + """Test case for postInlineAdditionlPropertiesRefPayload """ from petstore_api.model.inline_additional_properties_ref_payload import InlineAdditionalPropertiesRefPayload - from petstore_api.model.fake_get_inline_additional_properties_payload_array_data import FakeGetInlineAdditionalPropertiesPayloadArrayData - endpoint = self.api.get_inline_additional_properties_ref_payload + from petstore_api.model.fake_post_inline_additional_properties_payload_array_data import FakePostInlineAdditionalPropertiesPayloadArrayData + endpoint = self.api.post_inline_additional_properties_ref_payload assert endpoint.openapi_types['inline_additional_properties_ref_payload'] == (InlineAdditionalPropertiesRefPayload,) assert endpoint.settings['response_type'] == (InlineAdditionalPropertiesRefPayload,) @@ -617,7 +649,7 @@ class TestFakeApi(unittest.TestCase): from petstore_api.rest import RESTClientObject, RESTResponse with patch.object(RESTClientObject, 'request') as mock_method: expected_json_body = { - 'array_data': [ + 'arrayData': [ { 'labels': [ None, @@ -628,23 +660,27 @@ class TestFakeApi(unittest.TestCase): } inline_additional_properties_ref_payload = InlineAdditionalPropertiesRefPayload( array_data=[ - FakeGetInlineAdditionalPropertiesPayloadArrayData(labels=[None, 'foo']) + FakePostInlineAdditionalPropertiesPayloadArrayData(labels=[None, 'foo']) ] ) mock_method.return_value = self.mock_response(expected_json_body) response = endpoint(inline_additional_properties_ref_payload=inline_additional_properties_ref_payload) - self.assert_request_called_with(mock_method, 'http://petstore.swagger.io:80/v2/fake/refs/enum', body=expected_json_body) + self.assert_request_called_with( + mock_method, + 'http://petstore.swagger.io:80/v2/fake/postInlineAdditionalPropertiesRefPayload', + body=expected_json_body + ) assert isinstance(response, InlineAdditionalPropertiesRefPayload) - assert response.to_dict() == expected_json_body + assert model_to_dict(response) == expected_json_body - def test_get_inline_additional_properties_payload(self): - """Test case for getInlineAdditionlPropertiesPayload + def test_post_inline_additional_properties_payload(self): + """Test case for postInlineAdditionlPropertiesPayload """ from petstore_api.model.inline_object6 import InlineObject6 - from petstore_api.model.fake_get_inline_additional_properties_payload_array_data import FakeGetInlineAdditionalPropertiesPayloadArrayData - endpoint = self.api.get_inline_additional_properties_payload + from petstore_api.model.fake_post_inline_additional_properties_payload_array_data import FakePostInlineAdditionalPropertiesPayloadArrayData + endpoint = self.api.post_inline_additional_properties_payload assert endpoint.openapi_types['inline_object6'] == (InlineObject6,) assert endpoint.settings['response_type'] == (InlineObject6,) @@ -652,7 +688,7 @@ class TestFakeApi(unittest.TestCase): from petstore_api.rest import RESTClientObject, RESTResponse with patch.object(RESTClientObject, 'request') as mock_method: expected_json_body = { - 'array_data': [ + 'arrayData': [ { 'labels': [ None, @@ -663,16 +699,20 @@ class TestFakeApi(unittest.TestCase): } inline_object6 = InlineObject6( array_data=[ - FakeGetInlineAdditionalPropertiesPayloadArrayData(labels=[None, 'foo']) + FakePostInlineAdditionalPropertiesPayloadArrayData(labels=[None, 'foo']) ] ) mock_method.return_value = self.mock_response(expected_json_body) response = endpoint(inline_object6=inline_object6) - self.assert_request_called_with(mock_method, 'http://petstore.swagger.io:80/v2/fake/refs/enum', body=expected_json_body) + self.assert_request_called_with( + mock_method, + 'http://petstore.swagger.io:80/v2/fake/postInlineAdditionalPropertiesPayload', + body=expected_json_body + ) assert isinstance(response, InlineObject6) - assert response.to_dict() == expected_json_body + assert model_to_dict(response) == expected_json_body if __name__ == '__main__': unittest.main() From 93166dd6b5249bbf6f9b8242525575ac3e4f9e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Wilski?= Date: Tue, 18 May 2021 08:10:44 +0200 Subject: [PATCH 015/192] fix: properly mark 'deprecated' routes in typescript-axios template #9502 (#9505) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Wilski --- .../resources/typescript-axios/apiInner.mustache | 15 ++++++++++----- .../typescript-axios/builds/default/api.ts | 4 ++++ .../typescript-axios/builds/es6-target/api.ts | 4 ++++ .../builds/with-complex-headers/api.ts | 4 ++++ .../api.ts | 4 ++++ .../builds/with-interfaces/api.ts | 5 +++++ .../api/another/level/pet-api.ts | 4 ++++ .../builds/with-npm-version/api.ts | 4 ++++ .../builds/with-single-request-parameters/api.ts | 4 ++++ 9 files changed, 43 insertions(+), 5 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/apiInner.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/apiInner.mustache index 0550c77b4d8..b425c807a24 100644 --- a/modules/openapi-generator/src/main/resources/typescript-axios/apiInner.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-axios/apiInner.mustache @@ -34,7 +34,8 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur {{#allParams}} * @param {{=<% %>=}}{<%&dataType%>}<%={{ }}=%> {{^required}}[{{/required}}{{paramName}}{{^required}}]{{/required}} {{description}} {{/allParams}} - * @param {*} [options] Override http request option. + * @param {*} [options] Override http request option.{{#isDeprecated}} + * @deprecated{{/isDeprecated}} * @throws {RequiredError} */ {{nickname}}: async ({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{{dataType}}}, {{/allParams}}options: any = {}): Promise => { @@ -217,7 +218,8 @@ export const {{classname}}Fp = function(configuration?: Configuration) { {{#allParams}} * @param {{=<% %>=}}{<%&dataType%>}<%={{ }}=%> {{^required}}[{{/required}}{{paramName}}{{^required}}]{{/required}} {{description}} {{/allParams}} - * @param {*} [options] Override http request option. + * @param {*} [options] Override http request option.{{#isDeprecated}} + * @deprecated{{/isDeprecated}} * @throws {RequiredError} */ async {{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{{dataType}}}, {{/allParams}}options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}>> { @@ -245,7 +247,8 @@ export const {{classname}}Factory = function (configuration?: Configuration, bas {{#allParams}} * @param {{=<% %>=}}{<%&dataType%>}<%={{ }}=%> {{^required}}[{{/required}}{{paramName}}{{^required}}]{{/required}} {{description}} {{/allParams}} - * @param {*} [options] Override http request option. + * @param {*} [options] Override http request option.{{#isDeprecated}} + * @deprecated{{/isDeprecated}} * @throws {RequiredError} */ {{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{{dataType}}}, {{/allParams}}options?: any): AxiosPromise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}> { @@ -272,7 +275,8 @@ export interface {{classname}}Interface { {{#allParams}} * @param {{=<% %>=}}{<%&dataType%>}<%={{ }}=%> {{^required}}[{{/required}}{{paramName}}{{^required}}]{{/required}} {{description}} {{/allParams}} - * @param {*} [options] Override http request option. + * @param {*} [options] Override http request option.{{#isDeprecated}} + * @deprecated{{/isDeprecated}} * @throws {RequiredError} * @memberof {{classname}}Interface */ @@ -336,7 +340,8 @@ export class {{classname}} extends BaseAPI { * @param {{=<% %>=}}{<%&dataType%>}<%={{ }}=%> {{^required}}[{{/required}}{{paramName}}{{^required}}]{{/required}} {{description}} {{/allParams}} {{/useSingleRequestParameter}} - * @param {*} [options] Override http request option. + * @param {*} [options] Override http request option.{{#isDeprecated}} + * @deprecated{{/isDeprecated}} * @throws {RequiredError} * @memberof {{classname}} */ diff --git a/samples/client/petstore/typescript-axios/builds/default/api.ts b/samples/client/petstore/typescript-axios/builds/default/api.ts index 856fb0a4829..0ce81cf1174 100644 --- a/samples/client/petstore/typescript-axios/builds/default/api.ts +++ b/samples/client/petstore/typescript-axios/builds/default/api.ts @@ -383,6 +383,7 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration) * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags: async (tags: Array, options: any = {}): Promise => { @@ -649,6 +650,7 @@ export const PetApiFp = function(configuration?: Configuration) { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async findPetsByTags(tags: Array, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { @@ -749,6 +751,7 @@ export const PetApiFactory = function (configuration?: Configuration, basePath?: * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags(tags: Array, options?: any): AxiosPromise> { @@ -850,6 +853,7 @@ export class PetApi extends BaseAPI { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} * @memberof PetApi */ diff --git a/samples/client/petstore/typescript-axios/builds/es6-target/api.ts b/samples/client/petstore/typescript-axios/builds/es6-target/api.ts index 856fb0a4829..0ce81cf1174 100644 --- a/samples/client/petstore/typescript-axios/builds/es6-target/api.ts +++ b/samples/client/petstore/typescript-axios/builds/es6-target/api.ts @@ -383,6 +383,7 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration) * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags: async (tags: Array, options: any = {}): Promise => { @@ -649,6 +650,7 @@ export const PetApiFp = function(configuration?: Configuration) { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async findPetsByTags(tags: Array, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { @@ -749,6 +751,7 @@ export const PetApiFactory = function (configuration?: Configuration, basePath?: * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags(tags: Array, options?: any): AxiosPromise> { @@ -850,6 +853,7 @@ export class PetApi extends BaseAPI { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} * @memberof PetApi */ diff --git a/samples/client/petstore/typescript-axios/builds/with-complex-headers/api.ts b/samples/client/petstore/typescript-axios/builds/with-complex-headers/api.ts index 85c32a979e2..15fa56e5e78 100644 --- a/samples/client/petstore/typescript-axios/builds/with-complex-headers/api.ts +++ b/samples/client/petstore/typescript-axios/builds/with-complex-headers/api.ts @@ -394,6 +394,7 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration) * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags: async (tags: Array, options: any = {}): Promise => { @@ -662,6 +663,7 @@ export const PetApiFp = function(configuration?: Configuration) { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async findPetsByTags(tags: Array, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { @@ -764,6 +766,7 @@ export const PetApiFactory = function (configuration?: Configuration, basePath?: * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags(tags: Array, options?: any): AxiosPromise> { @@ -867,6 +870,7 @@ export class PetApi extends BaseAPI { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} * @memberof PetApi */ diff --git a/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/api.ts b/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/api.ts index 832e63b1f4e..c9fba6a5167 100644 --- a/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/api.ts +++ b/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/api.ts @@ -3089,6 +3089,7 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration) * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags: async (tags: Array, options: any = {}): Promise => { @@ -3413,6 +3414,7 @@ export const PetApiFp = function(configuration?: Configuration) { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async findPetsByTags(tags: Array, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { @@ -3526,6 +3528,7 @@ export const PetApiFactory = function (configuration?: Configuration, basePath?: * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags(tags: Array, options?: any): AxiosPromise> { @@ -3639,6 +3642,7 @@ export class PetApi extends BaseAPI { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} * @memberof PetApi */ diff --git a/samples/client/petstore/typescript-axios/builds/with-interfaces/api.ts b/samples/client/petstore/typescript-axios/builds/with-interfaces/api.ts index 0368b1d5703..c6cda5b6503 100644 --- a/samples/client/petstore/typescript-axios/builds/with-interfaces/api.ts +++ b/samples/client/petstore/typescript-axios/builds/with-interfaces/api.ts @@ -383,6 +383,7 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration) * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags: async (tags: Array, options: any = {}): Promise => { @@ -649,6 +650,7 @@ export const PetApiFp = function(configuration?: Configuration) { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async findPetsByTags(tags: Array, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { @@ -749,6 +751,7 @@ export const PetApiFactory = function (configuration?: Configuration, basePath?: * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags(tags: Array, options?: any): AxiosPromise> { @@ -843,6 +846,7 @@ export interface PetApiInterface { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} * @memberof PetApiInterface */ @@ -943,6 +947,7 @@ export class PetApi extends BaseAPI implements PetApiInterface { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} * @memberof PetApi */ diff --git a/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/api/another/level/pet-api.ts b/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/api/another/level/pet-api.ts index fc66c5184fa..03545d554fc 100644 --- a/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/api/another/level/pet-api.ts +++ b/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/api/another/level/pet-api.ts @@ -159,6 +159,7 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration) * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags: async (tags: Array, options: any = {}): Promise => { @@ -425,6 +426,7 @@ export const PetApiFp = function(configuration?: Configuration) { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async findPetsByTags(tags: Array, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { @@ -525,6 +527,7 @@ export const PetApiFactory = function (configuration?: Configuration, basePath?: * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags(tags: Array, options?: any): AxiosPromise> { @@ -626,6 +629,7 @@ export class PetApi extends BaseAPI { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} * @memberof PetApi */ diff --git a/samples/client/petstore/typescript-axios/builds/with-npm-version/api.ts b/samples/client/petstore/typescript-axios/builds/with-npm-version/api.ts index 856fb0a4829..0ce81cf1174 100644 --- a/samples/client/petstore/typescript-axios/builds/with-npm-version/api.ts +++ b/samples/client/petstore/typescript-axios/builds/with-npm-version/api.ts @@ -383,6 +383,7 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration) * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags: async (tags: Array, options: any = {}): Promise => { @@ -649,6 +650,7 @@ export const PetApiFp = function(configuration?: Configuration) { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async findPetsByTags(tags: Array, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { @@ -749,6 +751,7 @@ export const PetApiFactory = function (configuration?: Configuration, basePath?: * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags(tags: Array, options?: any): AxiosPromise> { @@ -850,6 +853,7 @@ export class PetApi extends BaseAPI { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} * @memberof PetApi */ diff --git a/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/api.ts b/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/api.ts index ec156334713..1f8764baaf0 100644 --- a/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/api.ts +++ b/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/api.ts @@ -383,6 +383,7 @@ export const PetApiAxiosParamCreator = function (configuration?: Configuration) * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags: async (tags: Array, options: any = {}): Promise => { @@ -649,6 +650,7 @@ export const PetApiFp = function(configuration?: Configuration) { * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async findPetsByTags(tags: Array, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { @@ -749,6 +751,7 @@ export const PetApiFactory = function (configuration?: Configuration, basePath?: * @summary Finds Pets by tags * @param {Array} tags Tags to filter by * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ findPetsByTags(tags: Array, options?: any): AxiosPromise> { @@ -996,6 +999,7 @@ export class PetApi extends BaseAPI { * @summary Finds Pets by tags * @param {PetApiFindPetsByTagsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} * @memberof PetApi */ From 55b95bc9c525fa69182bf7839b084f8ccde287e8 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Tue, 18 May 2021 17:09:29 +0200 Subject: [PATCH 016/192] Fix CircleCI failures (#9503) * Fix go-echo-server sample not running in CircleCI * remove wrong argument * [dart] Fix petstore sample tests & Multipart not working * follow up to #9392 * `MultipartRequest(null, null)` is no longer valid after `http` package upgrade * fix petstore sample project not compiling * disable live petstore tests * use template to strip out unused code blocks --- .../src/main/resources/dart2/api.mustache | 62 ++-- .../petstore/dart2/petstore/.analysis_options | 2 - .../petstore/dart2/petstore/pubspec.yaml | 9 +- .../dart2/petstore/test/fake_client.dart | 19 +- .../dart2/petstore/test/order_model_test.dart | 8 +- .../petstore/test/pet_faked_client_test.dart | 45 +-- .../dart2/petstore/test/pet_test.dart | 11 +- .../dart2/petstore/test/random_id.dart | 2 +- .../test/store_faked_client_test.dart | 82 ++--- .../dart2/petstore/test/store_test.dart | 22 +- .../dart2/petstore/test/user_test.dart | 9 +- .../petstore_client_lib/lib/api/pet_api.dart | 130 +------ .../lib/api/store_api.dart | 44 --- .../petstore_client_lib/lib/api/user_api.dart | 88 ----- .../lib/api/another_fake_api.dart | 11 - .../lib/api/default_api.dart | 11 - .../lib/api/fake_api.dart | 345 +++--------------- .../lib/api/fake_classname_tags123_api.dart | 11 - .../lib/api/pet_api.dart | 165 ++------- .../lib/api/store_api.dart | 44 --- .../lib/api/user_api.dart | 88 ----- .../lib/api/another_fake_api.dart | 11 - .../lib/api/default_api.dart | 11 - .../lib/api/fake_api.dart | 345 +++--------------- .../lib/api/fake_classname_tags123_api.dart | 11 - .../lib/api/pet_api.dart | 165 ++------- .../lib/api/store_api.dart | 44 --- .../lib/api/user_api.dart | 88 ----- .../server/petstore/go-echo-server/pom.xml | 1 - 29 files changed, 298 insertions(+), 1586 deletions(-) delete mode 100644 samples/openapi3/client/petstore/dart2/petstore/.analysis_options diff --git a/modules/openapi-generator/src/main/resources/dart2/api.mustache b/modules/openapi-generator/src/main/resources/dart2/api.mustache index d99ba2b325f..6a53829cb59 100644 --- a/modules/openapi-generator/src/main/resources/dart2/api.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/api.mustache @@ -99,39 +99,37 @@ class {{{classname}}} { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = [{{#authMethods}}'{{{name}}}'{{^-last}}, {{/-last}}{{/authMethods}}]; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - {{#formParams}} - {{^isFile}} - if ({{{paramName}}} != null) { - hasFields = true; - mp.fields[r'{{{baseName}}}'] = parameterToString({{{paramName}}}); - } - {{/isFile}} - {{#isFile}} - if ({{{paramName}}} != null) { - hasFields = true; - mp.fields[r'{{{baseName}}}'] = {{{paramName}}}.field; - mp.files.add({{{paramName}}}); - } - {{/isFile}} - {{/formParams}} - if (hasFields) { - postBody = mp; - } - } else { - {{#formParams}} - {{^isFile}} - if ({{{paramName}}} != null) { - formParams[r'{{{baseName}}}'] = parameterToString({{{paramName}}}); - } - {{/isFile}} - {{/formParams}} + {{#isMultipart}} + bool hasFields = false; + final mp = MultipartRequest('{{{httpMethod}}}', Uri.parse(path)); + {{#formParams}} + {{^isFile}} + if ({{{paramName}}} != null) { + hasFields = true; + mp.fields[r'{{{baseName}}}'] = parameterToString({{{paramName}}}); } + {{/isFile}} + {{#isFile}} + if ({{{paramName}}} != null) { + hasFields = true; + mp.fields[r'{{{baseName}}}'] = {{{paramName}}}.field; + mp.files.add({{{paramName}}}); + } + {{/isFile}} + {{/formParams}} + if (hasFields) { + postBody = mp; + } + {{/isMultipart}} + {{^isMultipart}} + {{#formParams}} + {{^isFile}} + if ({{{paramName}}} != null) { + formParams[r'{{{baseName}}}'] = parameterToString({{{paramName}}}); + } + {{/isFile}} + {{/formParams}} + {{/isMultipart}} return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore/.analysis_options b/samples/openapi3/client/petstore/dart2/petstore/.analysis_options deleted file mode 100644 index a10d4c5a05c..00000000000 --- a/samples/openapi3/client/petstore/dart2/petstore/.analysis_options +++ /dev/null @@ -1,2 +0,0 @@ -analyzer: - strong-mode: true diff --git a/samples/openapi3/client/petstore/dart2/petstore/pubspec.yaml b/samples/openapi3/client/petstore/dart2/petstore/pubspec.yaml index f2630175093..92262618ab4 100644 --- a/samples/openapi3/client/petstore/dart2/petstore/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart2/petstore/pubspec.yaml @@ -1,13 +1,18 @@ name: petstore_client version: 1.0.0 description: Petstore client using OpenAPI library + +publish_to: none + environment: - sdk: '>=2.5.0 <3.0.0' + sdk: '>=2.11.0 <3.0.0' + dependencies: openapi: path: ../petstore_client_lib + dev_dependencies: test: ^1.8.0 mockito: ^4.1.1 - http: ^0.12.0 + http: ^0.13.0 collection: ^1.14.12 diff --git a/samples/openapi3/client/petstore/dart2/petstore/test/fake_client.dart b/samples/openapi3/client/petstore/dart2/petstore/test/fake_client.dart index 95c735deb38..ed60f386aa4 100644 --- a/samples/openapi3/client/petstore/dart2/petstore/test/fake_client.dart +++ b/samples/openapi3/client/petstore/dart2/petstore/test/fake_client.dart @@ -21,9 +21,9 @@ class FakeClient extends Fake implements Client { this.expectedPutRequestBody, this.putResponseBody, this.sendResponseBody, - this.expectedUrl, + String expectedUrl, this.expectedHeaders = null, - }); + }) : this.expectedUrl = Uri.parse(expectedUrl); Exception throwException; Object expectedPostRequestBody; @@ -34,12 +34,12 @@ class FakeClient extends Fake implements Client { String expectedPutRequestBody; String putResponseBody; String sendResponseBody; - String expectedUrl; + Uri expectedUrl; Map expectedHeaders; @override - Future post(url, - {Map headers, body, Encoding encoding}) async { + Future post(Uri url, + {Map headers, Object body, Encoding encoding}) async { // check that the request was made with expected values if (url != expectedUrl) { throw StateError( @@ -67,7 +67,7 @@ class FakeClient extends Fake implements Client { } @override - Future get(url, {Map headers}) async { + Future get(Uri url, {Map headers}) async { // check that the request was made with expected values if (url != expectedUrl) { throw StateError( @@ -85,7 +85,8 @@ class FakeClient extends Fake implements Client { } @override - Future delete(url, {Map headers}) async { + Future delete(Uri url, + {Map headers, Object body, Encoding encoding}) async { // check that the request was made with expected values if (url != expectedUrl) { throw StateError( @@ -103,8 +104,8 @@ class FakeClient extends Fake implements Client { } @override - Future put(url, - {Map headers, body, Encoding encoding}) async { + Future put(Uri url, + {Map headers, Object body, Encoding encoding}) async { // check that the request was made with expected values if (url != expectedUrl) { throw StateError( diff --git a/samples/openapi3/client/petstore/dart2/petstore/test/order_model_test.dart b/samples/openapi3/client/petstore/dart2/petstore/test/order_model_test.dart index 9cdc65fe52d..7048659e894 100644 --- a/samples/openapi3/client/petstore/dart2/petstore/test/order_model_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore/test/order_model_test.dart @@ -2,8 +2,8 @@ import 'package:openapi/api.dart'; import 'package:test/test.dart'; void main() { - test('Check if default value is generated', () async { - var order = Order(); - expect(order.complete, equals(false)); - }); + test('Check if default value is generated', () async { + var order = Order(); + expect(order.complete, equals(false)); + }); } diff --git a/samples/openapi3/client/petstore/dart2/petstore/test/pet_faked_client_test.dart b/samples/openapi3/client/petstore/dart2/petstore/test/pet_faked_client_test.dart index 277c49b3971..9737df5d488 100644 --- a/samples/openapi3/client/petstore/dart2/petstore/test/pet_faked_client_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore/test/pet_faked_client_test.dart @@ -26,11 +26,10 @@ void main() { ..id = 124321 ..name = 'Jose' ]; - return Pet() + return Pet(name: name) ..id = id ..category = category ..tags = tags - ..name = name ..status = PetStatusEnum.fromJson(status) ..photoUrls = ['https://petstore.com/sample/photo1.jpg']; } @@ -53,8 +52,7 @@ void main() { // use the pet api to add a pet petApi.apiClient.client = FakeClient( expectedUrl: 'http://petstore.swagger.io/v2/pet', - expectedPostRequestBody: - await petApi.apiClient.serializeAsync(newPet), + expectedPostRequestBody: await petApi.apiClient.serializeAsync(newPet), postResponseBody: await petApi.apiClient.serializeAsync(newPet), expectedHeaders: {'Content-Type': 'application/json'}); await petApi.addPet(newPet); @@ -76,8 +74,7 @@ void main() { expectedUrl: 'http://petstore.swagger.io/v2/pet/$id', throwException: ApiException(400, 'not found'), ); - expect( - petApi.getPetById(id), throwsA(equals(TypeMatcher()))); + expect(petApi.getPetById(id), throwsA(equals(TypeMatcher()))); }); test('deletes existing pet by id', () async { @@ -87,8 +84,7 @@ void main() { // add a new pet petApi.apiClient.client = FakeClient( expectedUrl: 'http://petstore.swagger.io/v2/pet', - expectedPostRequestBody: - await petApi.apiClient.serializeAsync(newPet), + expectedPostRequestBody: await petApi.apiClient.serializeAsync(newPet), postResponseBody: await petApi.apiClient.serializeAsync(newPet), expectedHeaders: {'Content-Type': 'application/json'}); await petApi.addPet(newPet); @@ -106,8 +102,7 @@ void main() { expectedUrl: 'http://petstore.swagger.io/v2/pet/$id', throwException: ApiException(400, 'Not found'), ); - expect( - petApi.getPetById(id), throwsA(equals(TypeMatcher()))); + expect(petApi.getPetById(id), throwsA(equals(TypeMatcher()))); }); test('updates pet with form', () async { @@ -117,16 +112,11 @@ void main() { // add a new pet petApi.apiClient.client = FakeClient( expectedUrl: 'http://petstore.swagger.io/v2/pet', - expectedPostRequestBody: - await petApi.apiClient.serializeAsync(newPet), + expectedPostRequestBody: await petApi.apiClient.serializeAsync(newPet), postResponseBody: await petApi.apiClient.serializeAsync(newPet), expectedHeaders: {'Content-Type': 'application/json'}); await petApi.addPet(newPet); - final multipartRequest = MultipartRequest(null, null); - multipartRequest.fields['name'] = 'Doge'; - multipartRequest.fields['status'] = ''; - // update with form petApi.apiClient.client = FakeClient( expectedUrl: 'http://petstore.swagger.io/v2/pet/$id', @@ -157,8 +147,7 @@ void main() { // add a new pet petApi.apiClient.client = FakeClient( expectedUrl: 'http://petstore.swagger.io/v2/pet', - expectedPostRequestBody: - await petApi.apiClient.serializeAsync(newPet), + expectedPostRequestBody: await petApi.apiClient.serializeAsync(newPet), postResponseBody: await petApi.apiClient.serializeAsync(newPet), expectedHeaders: {'Content-Type': 'application/json'}); await petApi.addPet(newPet); @@ -166,8 +155,7 @@ void main() { // update the same pet petApi.apiClient.client = FakeClient( expectedUrl: 'http://petstore.swagger.io/v2/pet', - expectedPutRequestBody: - await petApi.apiClient.serializeAsync(updatePet), + expectedPutRequestBody: await petApi.apiClient.serializeAsync(updatePet), putResponseBody: await petApi.apiClient.serializeAsync(updatePet), expectedHeaders: {'Content-Type': 'application/json'}); await petApi.updatePet(updatePet); @@ -196,15 +184,13 @@ void main() { // retrieve pets by status petApi.apiClient.client = FakeClient( - expectedUrl: - 'http://petstore.swagger.io/v2/pet/findByStatus?status=$status', + expectedUrl: 'http://petstore.swagger.io/v2/pet/findByStatus?status=$status', getResponseBody: await petApi.apiClient.serializeAsync([pet1, pet2]), ); final pets = await petApi.findPetsByStatus([status]); // tests serialisation and deserialisation of enum - final petsByStatus = - pets.where((p) => p.status == PetStatusEnum.available); + final petsByStatus = pets.where((p) => p.status == PetStatusEnum.available); expect(petsByStatus.length, equals(2)); final petIds = pets.map((pet) => pet.id).toList(); expect(petIds, contains(id1)); @@ -216,14 +202,12 @@ void main() { final id = newId(); final newPet = makePet(id: id); // get some test data (recorded from live response) - final uploadResponse = - await File('test/file_upload_response.json').readAsString(); + final uploadResponse = await File('test/file_upload_response.json').readAsString(); // add a new pet petApi.apiClient.client = FakeClient( expectedUrl: 'http://petstore.swagger.io/v2/pet', - expectedPostRequestBody: - await petApi.apiClient.serializeAsync(newPet), + expectedPostRequestBody: await petApi.apiClient.serializeAsync(newPet), postResponseBody: await petApi.apiClient.serializeAsync(newPet), expectedHeaders: {'Content-Type': 'application/json'}); await petApi.addPet(newPet); @@ -232,9 +216,8 @@ void main() { expectedUrl: 'http://petstore.swagger.io/v2/pet', sendResponseBody: uploadResponse, ); - final file = - new MultipartFile.fromBytes('file', [104, 101, 108, 108, 111]); - await petApi.uploadFile(id, additionalMetadata: '', file: file); + final file = new MultipartFile.fromBytes('file', [104, 101, 108, 108, 111]); + await petApi.uploadFile(id, file: file); }); }); } diff --git a/samples/openapi3/client/petstore/dart2/petstore/test/pet_test.dart b/samples/openapi3/client/petstore/dart2/petstore/test/pet_test.dart index 72126ba6a90..cbd26c68c7e 100644 --- a/samples/openapi3/client/petstore/dart2/petstore/test/pet_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore/test/pet_test.dart @@ -1,5 +1,4 @@ -import 'dart:async'; - +@Skip('Needs real petstore') import 'package:http/http.dart'; import 'package:openapi/api.dart'; import 'package:test/test.dart'; @@ -46,16 +45,14 @@ void main() { }); test('doesn\'t get non-existing pet by id', () { - expect(petApi.getPetById(newId()), - throwsA(equals(TypeMatcher()))); + expect(petApi.getPetById(newId()), throwsA(equals(TypeMatcher()))); }); test('deletes existing pet by id', () async { var id = newId(); await petApi.addPet(makePet(id: id)); await petApi.deletePet(id, apiKey: 'special-key'); - expect( - petApi.getPetById(id), throwsA(equals(TypeMatcher()))); + expect(petApi.getPetById(id), throwsA(equals(TypeMatcher()))); }); test('updates pet with form', () async { @@ -100,5 +97,5 @@ void main() { var file = new MultipartFile.fromBytes('file', [104, 101, 108, 108, 111]); await petApi.uploadFile(id, additionalMetadata: '', file: file); }); - }, skip: 'e2e tests for CI'); + }); } diff --git a/samples/openapi3/client/petstore/dart2/petstore/test/random_id.dart b/samples/openapi3/client/petstore/dart2/petstore/test/random_id.dart index 0457428c7dd..ca67ac20993 100644 --- a/samples/openapi3/client/petstore/dart2/petstore/test/random_id.dart +++ b/samples/openapi3/client/petstore/dart2/petstore/test/random_id.dart @@ -4,4 +4,4 @@ final _random = new Random(); int newId() { return _random.nextInt(999999); -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/dart2/petstore/test/store_faked_client_test.dart b/samples/openapi3/client/petstore/dart2/petstore/test/store_faked_client_test.dart index 9f75fd55d86..541d08b8c6a 100644 --- a/samples/openapi3/client/petstore/dart2/petstore/test/store_faked_client_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore/test/store_faked_client_test.dart @@ -21,62 +21,56 @@ void main() { group('Store API with faked client', () { test('places an order and gets it by id', () async { - // TODO: Please uncomment this after a content type of the petstore order in petstore.yaml is fixed. - // final id = newId(); - // final newOrder = makeOrder(id: id); + final id = newId(); + final newOrder = makeOrder(id: id); - // // use the store api to add an order - // storeApi.apiClient.client = FakeClient( - // expectedUrl: 'http://petstore.swagger.io/v2/store/order', - // expectedPostRequestBody: await storeApi.apiClient.serializeAsync(newOrder), - // postResponseBody: await storeApi.apiClient.serializeAsync(newOrder), - // expectedHeaders: {"Content-Type": "application/json"} - // ); - // await storeApi.placeOrder(newOrder); + // use the store api to add an order + storeApi.apiClient.client = FakeClient( + expectedUrl: 'http://petstore.swagger.io/v2/store/order', + expectedPostRequestBody: await storeApi.apiClient.serializeAsync(newOrder), + postResponseBody: await storeApi.apiClient.serializeAsync(newOrder), + expectedHeaders: {"Content-Type": "application/json"}); + await storeApi.placeOrder(newOrder); - // // retrieve the same order by id - // storeApi.apiClient.client = FakeClient( - // expectedUrl: 'http://petstore.swagger.io/v2/store/order/$id', - // getResponseBody: await storeApi.apiClient.serializeAsync(newOrder), - // ); - // final placedOrder = await storeApi.getOrderById(id); - // expect(placedOrder.id, equals(id)); + // retrieve the same order by id + storeApi.apiClient.client = FakeClient( + expectedUrl: 'http://petstore.swagger.io/v2/store/order/$id', + getResponseBody: await storeApi.apiClient.serializeAsync(newOrder), + ); + final placedOrder = await storeApi.getOrderById(id); + expect(placedOrder.id, equals(id)); }); test('deletes an order', () async { - // TODO: Please uncomment this after a content type of the petstore order in petstore.yaml is fixed. - // final id = newId(); - // final newOrder = makeOrder(id: id); + final id = newId(); + final newOrder = makeOrder(id: id); - // // use the store api to add an order - // storeApi.apiClient.client = FakeClient( - // expectedUrl: 'http://petstore.swagger.io/v2/store/order', - // expectedPostRequestBody: await storeApi.apiClient.serializeAsync(newOrder), - // postResponseBody: await storeApi.apiClient.serializeAsync(newOrder), - // expectedHeaders: {"Content-Type": "application/json"} - // ); - // await storeApi.placeOrder(newOrder); + // use the store api to add an order + storeApi.apiClient.client = FakeClient( + expectedUrl: 'http://petstore.swagger.io/v2/store/order', + expectedPostRequestBody: await storeApi.apiClient.serializeAsync(newOrder), + postResponseBody: await storeApi.apiClient.serializeAsync(newOrder), + expectedHeaders: {"Content-Type": "application/json"}); + await storeApi.placeOrder(newOrder); - // // delete the same order - // storeApi.apiClient.client = FakeClient( - // expectedUrl: 'http://petstore.swagger.io/v2/store/order/$id', - // deleteResponseBody: '', - // ); - // await storeApi.deleteOrder(id.toString()); + // delete the same order + storeApi.apiClient.client = FakeClient( + expectedUrl: 'http://petstore.swagger.io/v2/store/order/$id', + deleteResponseBody: '', + ); + await storeApi.deleteOrder(id.toString()); - // // try and retrieve the order - // storeApi.apiClient.client = FakeClient( - // expectedUrl: 'http://petstore.swagger.io/v2/store/order/$id', - // throwException: ApiException(400, 'Not found'), - // ); - // expect(storeApi.getOrderById(id), - // throwsA(equals(TypeMatcher()))); + // try and retrieve the order + storeApi.apiClient.client = FakeClient( + expectedUrl: 'http://petstore.swagger.io/v2/store/order/$id', + throwException: ApiException(400, 'Not found'), + ); + expect(storeApi.getOrderById(id), throwsA(equals(TypeMatcher()))); }); test('gets the store inventory', () async { // get some test data (recorded from live response) - final inventoryResponse = - await File('test/inventory_response.json').readAsString(); + final inventoryResponse = await File('test/inventory_response.json').readAsString(); // use the store api to get the inventory storeApi.apiClient.client = FakeClient( expectedUrl: 'http://petstore.swagger.io/v2/store/inventory', diff --git a/samples/openapi3/client/petstore/dart2/petstore/test/store_test.dart b/samples/openapi3/client/petstore/dart2/petstore/test/store_test.dart index b2175238819..a5b19cd1de5 100644 --- a/samples/openapi3/client/petstore/dart2/petstore/test/store_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore/test/store_test.dart @@ -1,3 +1,4 @@ +@Skip('Needs real petstore') import 'package:openapi/api.dart'; import 'package:test/test.dart'; @@ -18,27 +19,24 @@ void main() { group('Store API with live client', () { test('places an order and gets it by id', () async { - // TODO: Please uncomment this after a content type of the petstore order in petstore.yaml is fixed. - // var id = newId(); + var id = newId(); - // await storeApi.placeOrder(makeOrder(id: id)); - // var order = await storeApi.getOrderById(id); - // expect(order.id, equals(id)); + await storeApi.placeOrder(makeOrder(id: id)); + var order = await storeApi.getOrderById(id); + expect(order.id, equals(id)); }); test('deletes an order', () async { - // TODO: Please uncomment this after a content type of the petstore order in petstore.yaml is fixed. - // var id = newId(); + var id = newId(); - // await storeApi.placeOrder(makeOrder(id: id)); - // await storeApi.deleteOrder(id.toString()); - // expect(storeApi.getOrderById(id), - // throwsA(equals(TypeMatcher()))); + await storeApi.placeOrder(makeOrder(id: id)); + await storeApi.deleteOrder(id.toString()); + expect(storeApi.getOrderById(id), throwsA(equals(TypeMatcher()))); }); test('gets the store inventory', () async { Map inventory = await storeApi.getInventory(); expect(inventory.length, isNot(equals(0))); }); - }); // , skip: 'e2e tests for CI' + }); } diff --git a/samples/openapi3/client/petstore/dart2/petstore/test/user_test.dart b/samples/openapi3/client/petstore/dart2/petstore/test/user_test.dart index ea34b3713fa..d604363622d 100644 --- a/samples/openapi3/client/petstore/dart2/petstore/test/user_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore/test/user_test.dart @@ -1,3 +1,4 @@ +@Skip('Needs real petstore') import 'package:openapi/api.dart'; import 'package:test/test.dart'; @@ -6,8 +7,7 @@ import 'random_id.dart'; void main() { var userApi = new UserApi(); - User makeUser( - {int id, String userName = 'username', String password = 'password'}) { + User makeUser({int id, String userName = 'username', String password = 'password'}) { return User() ..id = id ..username = userName @@ -63,8 +63,7 @@ void main() { var username = 'Riddlem325'; await userApi.createUser(makeUser(id: newId(), userName: username)); await userApi.deleteUser(username); - expect(userApi.getUserByName(username), - throwsA(TypeMatcher())); + expect(userApi.getUserByName(username), throwsA(TypeMatcher())); }); test('logs a user in', () async { @@ -76,5 +75,5 @@ void main() { var result = await userApi.loginUser(username, password); expect(result, contains('logged in user session:')); }); - }, skip: 'e2e tests for CI'); + }); } diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/pet_api.dart index 2ec34d475e2..ee5c6f0d24c 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/pet_api.dart @@ -41,17 +41,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -118,17 +107,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -187,17 +165,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -265,17 +232,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -342,17 +298,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -414,17 +359,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -491,30 +425,11 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (name != null) { - hasFields = true; - mp.fields[r'name'] = parameterToString(name); - } - if (status != null) { - hasFields = true; - mp.fields[r'status'] = parameterToString(status); - } - if (hasFields) { - postBody = mp; - } - } else { - if (name != null) { - formParams[r'name'] = parameterToString(name); - } - if (status != null) { - formParams[r'status'] = parameterToString(status); - } + if (name != null) { + formParams[r'name'] = parameterToString(name); + } + if (status != null) { + formParams[r'status'] = parameterToString(status); } return await apiClient.invokeAPI( @@ -581,28 +496,19 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (additionalMetadata != null) { - hasFields = true; - mp.fields[r'additionalMetadata'] = parameterToString(additionalMetadata); - } - if (file != null) { - hasFields = true; - mp.fields[r'file'] = file.field; - mp.files.add(file); - } - if (hasFields) { - postBody = mp; - } - } else { - if (additionalMetadata != null) { - formParams[r'additionalMetadata'] = parameterToString(additionalMetadata); - } + bool hasFields = false; + final mp = MultipartRequest('POST', Uri.parse(path)); + if (additionalMetadata != null) { + hasFields = true; + mp.fields[r'additionalMetadata'] = parameterToString(additionalMetadata); + } + if (file != null) { + hasFields = true; + mp.fields[r'file'] = file.field; + mp.files.add(file); + } + if (hasFields) { + postBody = mp; } return await apiClient.invokeAPI( diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/store_api.dart index 9696bacc9de..4ff0cee3e1a 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/store_api.dart @@ -44,17 +44,6 @@ class StoreApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -101,17 +90,6 @@ class StoreApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -171,17 +149,6 @@ class StoreApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -243,17 +210,6 @@ class StoreApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/user_api.dart index fc19afb4e93..274b176291b 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api/user_api.dart @@ -43,17 +43,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -108,17 +97,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -171,17 +149,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -237,17 +204,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -303,17 +259,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -382,17 +327,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -445,17 +379,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -512,17 +435,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/another_fake_api.dart index c297f77a8a3..8f8b96abc53 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/another_fake_api.dart @@ -43,17 +43,6 @@ class AnotherFakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/default_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/default_api.dart index 1185af2521c..e811495110f 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/default_api.dart @@ -29,17 +29,6 @@ class DefaultApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart index 20db8f0c9b0..95eb36aacdf 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart @@ -31,17 +31,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -110,17 +99,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['http_signature_test']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -176,17 +154,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -243,17 +210,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -310,17 +266,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -377,17 +322,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -447,17 +381,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -516,17 +439,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -581,17 +493,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -645,17 +546,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -767,112 +657,44 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['http_basic_test']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (integer != null) { - hasFields = true; - mp.fields[r'integer'] = parameterToString(integer); - } - if (int32 != null) { - hasFields = true; - mp.fields[r'int32'] = parameterToString(int32); - } - if (int64 != null) { - hasFields = true; - mp.fields[r'int64'] = parameterToString(int64); - } - if (number != null) { - hasFields = true; - mp.fields[r'number'] = parameterToString(number); - } - if (float != null) { - hasFields = true; - mp.fields[r'float'] = parameterToString(float); - } - if (double_ != null) { - hasFields = true; - mp.fields[r'double'] = parameterToString(double_); - } - if (string != null) { - hasFields = true; - mp.fields[r'string'] = parameterToString(string); - } - if (patternWithoutDelimiter != null) { - hasFields = true; - mp.fields[r'pattern_without_delimiter'] = parameterToString(patternWithoutDelimiter); - } - if (byte != null) { - hasFields = true; - mp.fields[r'byte'] = parameterToString(byte); - } - if (binary != null) { - hasFields = true; - mp.fields[r'binary'] = binary.field; - mp.files.add(binary); - } - if (date != null) { - hasFields = true; - mp.fields[r'date'] = parameterToString(date); - } - if (dateTime != null) { - hasFields = true; - mp.fields[r'dateTime'] = parameterToString(dateTime); - } - if (password != null) { - hasFields = true; - mp.fields[r'password'] = parameterToString(password); - } - if (callback != null) { - hasFields = true; - mp.fields[r'callback'] = parameterToString(callback); - } - if (hasFields) { - postBody = mp; - } - } else { - if (integer != null) { - formParams[r'integer'] = parameterToString(integer); - } - if (int32 != null) { - formParams[r'int32'] = parameterToString(int32); - } - if (int64 != null) { - formParams[r'int64'] = parameterToString(int64); - } - if (number != null) { - formParams[r'number'] = parameterToString(number); - } - if (float != null) { - formParams[r'float'] = parameterToString(float); - } - if (double_ != null) { - formParams[r'double'] = parameterToString(double_); - } - if (string != null) { - formParams[r'string'] = parameterToString(string); - } - if (patternWithoutDelimiter != null) { - formParams[r'pattern_without_delimiter'] = parameterToString(patternWithoutDelimiter); - } - if (byte != null) { - formParams[r'byte'] = parameterToString(byte); - } - if (date != null) { - formParams[r'date'] = parameterToString(date); - } - if (dateTime != null) { - formParams[r'dateTime'] = parameterToString(dateTime); - } - if (password != null) { - formParams[r'password'] = parameterToString(password); - } - if (callback != null) { - formParams[r'callback'] = parameterToString(callback); - } + if (integer != null) { + formParams[r'integer'] = parameterToString(integer); + } + if (int32 != null) { + formParams[r'int32'] = parameterToString(int32); + } + if (int64 != null) { + formParams[r'int64'] = parameterToString(int64); + } + if (number != null) { + formParams[r'number'] = parameterToString(number); + } + if (float != null) { + formParams[r'float'] = parameterToString(float); + } + if (double_ != null) { + formParams[r'double'] = parameterToString(double_); + } + if (string != null) { + formParams[r'string'] = parameterToString(string); + } + if (patternWithoutDelimiter != null) { + formParams[r'pattern_without_delimiter'] = parameterToString(patternWithoutDelimiter); + } + if (byte != null) { + formParams[r'byte'] = parameterToString(byte); + } + if (date != null) { + formParams[r'date'] = parameterToString(date); + } + if (dateTime != null) { + formParams[r'dateTime'] = parameterToString(dateTime); + } + if (password != null) { + formParams[r'password'] = parameterToString(password); + } + if (callback != null) { + formParams[r'callback'] = parameterToString(callback); } return await apiClient.invokeAPI( @@ -1007,30 +829,11 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (enumFormStringArray != null) { - hasFields = true; - mp.fields[r'enum_form_string_array'] = parameterToString(enumFormStringArray); - } - if (enumFormString != null) { - hasFields = true; - mp.fields[r'enum_form_string'] = parameterToString(enumFormString); - } - if (hasFields) { - postBody = mp; - } - } else { - if (enumFormStringArray != null) { - formParams[r'enum_form_string_array'] = parameterToString(enumFormStringArray); - } - if (enumFormString != null) { - formParams[r'enum_form_string'] = parameterToString(enumFormString); - } + if (enumFormStringArray != null) { + formParams[r'enum_form_string_array'] = parameterToString(enumFormStringArray); + } + if (enumFormString != null) { + formParams[r'enum_form_string'] = parameterToString(enumFormString); } return await apiClient.invokeAPI( @@ -1144,17 +947,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['bearer_test']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -1224,17 +1016,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -1293,30 +1074,11 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (param != null) { - hasFields = true; - mp.fields[r'param'] = parameterToString(param); - } - if (param2 != null) { - hasFields = true; - mp.fields[r'param2'] = parameterToString(param2); - } - if (hasFields) { - postBody = mp; - } - } else { - if (param != null) { - formParams[r'param'] = parameterToString(param); - } - if (param2 != null) { - formParams[r'param2'] = parameterToString(param2); - } + if (param != null) { + formParams[r'param'] = parameterToString(param); + } + if (param2 != null) { + formParams[r'param2'] = parameterToString(param2); } return await apiClient.invokeAPI( @@ -1398,17 +1160,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart index f7e337dbee5..79ec2cbed45 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart @@ -43,17 +43,6 @@ class FakeClassnameTags123Api { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key_query']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/pet_api.dart index af2215c4db7..50d001f61ce 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/pet_api.dart @@ -41,17 +41,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -111,17 +100,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -180,17 +158,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -258,17 +225,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -335,17 +291,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -407,17 +352,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -477,30 +411,11 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (name != null) { - hasFields = true; - mp.fields[r'name'] = parameterToString(name); - } - if (status != null) { - hasFields = true; - mp.fields[r'status'] = parameterToString(status); - } - if (hasFields) { - postBody = mp; - } - } else { - if (name != null) { - formParams[r'name'] = parameterToString(name); - } - if (status != null) { - formParams[r'status'] = parameterToString(status); - } + if (name != null) { + formParams[r'name'] = parameterToString(name); + } + if (status != null) { + formParams[r'status'] = parameterToString(status); } return await apiClient.invokeAPI( @@ -567,28 +482,19 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (additionalMetadata != null) { - hasFields = true; - mp.fields[r'additionalMetadata'] = parameterToString(additionalMetadata); - } - if (file != null) { - hasFields = true; - mp.fields[r'file'] = file.field; - mp.files.add(file); - } - if (hasFields) { - postBody = mp; - } - } else { - if (additionalMetadata != null) { - formParams[r'additionalMetadata'] = parameterToString(additionalMetadata); - } + bool hasFields = false; + final mp = MultipartRequest('POST', Uri.parse(path)); + if (additionalMetadata != null) { + hasFields = true; + mp.fields[r'additionalMetadata'] = parameterToString(additionalMetadata); + } + if (file != null) { + hasFields = true; + mp.fields[r'file'] = file.field; + mp.files.add(file); + } + if (hasFields) { + postBody = mp; } return await apiClient.invokeAPI( @@ -665,28 +571,19 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (additionalMetadata != null) { - hasFields = true; - mp.fields[r'additionalMetadata'] = parameterToString(additionalMetadata); - } - if (requiredFile != null) { - hasFields = true; - mp.fields[r'requiredFile'] = requiredFile.field; - mp.files.add(requiredFile); - } - if (hasFields) { - postBody = mp; - } - } else { - if (additionalMetadata != null) { - formParams[r'additionalMetadata'] = parameterToString(additionalMetadata); - } + bool hasFields = false; + final mp = MultipartRequest('POST', Uri.parse(path)); + if (additionalMetadata != null) { + hasFields = true; + mp.fields[r'additionalMetadata'] = parameterToString(additionalMetadata); + } + if (requiredFile != null) { + hasFields = true; + mp.fields[r'requiredFile'] = requiredFile.field; + mp.files.add(requiredFile); + } + if (hasFields) { + postBody = mp; } return await apiClient.invokeAPI( diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/store_api.dart index ea459d16052..08a73bb8fca 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/store_api.dart @@ -44,17 +44,6 @@ class StoreApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -101,17 +90,6 @@ class StoreApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -171,17 +149,6 @@ class StoreApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -243,17 +210,6 @@ class StoreApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/user_api.dart index 0a2c54c75fe..d45509dcac5 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/user_api.dart @@ -43,17 +43,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -108,17 +97,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -171,17 +149,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -237,17 +204,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -303,17 +259,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -382,17 +327,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -445,17 +379,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -512,17 +435,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/another_fake_api.dart index b712431a035..f0115e6907b 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/another_fake_api.dart @@ -43,17 +43,6 @@ class AnotherFakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/default_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/default_api.dart index 779bdec8b3a..182442cbd42 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/default_api.dart @@ -29,17 +29,6 @@ class DefaultApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart index edcd08cfa4a..2386fdfe4d5 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart @@ -31,17 +31,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -111,17 +100,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['http_signature_test']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -177,17 +155,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -245,17 +212,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -313,17 +269,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -381,17 +326,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -452,17 +386,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -522,17 +445,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -587,17 +499,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -651,17 +552,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -774,112 +664,44 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['http_basic_test']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (integer != null) { - hasFields = true; - mp.fields[r'integer'] = parameterToString(integer); - } - if (int32 != null) { - hasFields = true; - mp.fields[r'int32'] = parameterToString(int32); - } - if (int64 != null) { - hasFields = true; - mp.fields[r'int64'] = parameterToString(int64); - } - if (number != null) { - hasFields = true; - mp.fields[r'number'] = parameterToString(number); - } - if (float != null) { - hasFields = true; - mp.fields[r'float'] = parameterToString(float); - } - if (double_ != null) { - hasFields = true; - mp.fields[r'double'] = parameterToString(double_); - } - if (string != null) { - hasFields = true; - mp.fields[r'string'] = parameterToString(string); - } - if (patternWithoutDelimiter != null) { - hasFields = true; - mp.fields[r'pattern_without_delimiter'] = parameterToString(patternWithoutDelimiter); - } - if (byte != null) { - hasFields = true; - mp.fields[r'byte'] = parameterToString(byte); - } - if (binary != null) { - hasFields = true; - mp.fields[r'binary'] = binary.field; - mp.files.add(binary); - } - if (date != null) { - hasFields = true; - mp.fields[r'date'] = parameterToString(date); - } - if (dateTime != null) { - hasFields = true; - mp.fields[r'dateTime'] = parameterToString(dateTime); - } - if (password != null) { - hasFields = true; - mp.fields[r'password'] = parameterToString(password); - } - if (callback != null) { - hasFields = true; - mp.fields[r'callback'] = parameterToString(callback); - } - if (hasFields) { - postBody = mp; - } - } else { - if (integer != null) { - formParams[r'integer'] = parameterToString(integer); - } - if (int32 != null) { - formParams[r'int32'] = parameterToString(int32); - } - if (int64 != null) { - formParams[r'int64'] = parameterToString(int64); - } - if (number != null) { - formParams[r'number'] = parameterToString(number); - } - if (float != null) { - formParams[r'float'] = parameterToString(float); - } - if (double_ != null) { - formParams[r'double'] = parameterToString(double_); - } - if (string != null) { - formParams[r'string'] = parameterToString(string); - } - if (patternWithoutDelimiter != null) { - formParams[r'pattern_without_delimiter'] = parameterToString(patternWithoutDelimiter); - } - if (byte != null) { - formParams[r'byte'] = parameterToString(byte); - } - if (date != null) { - formParams[r'date'] = parameterToString(date); - } - if (dateTime != null) { - formParams[r'dateTime'] = parameterToString(dateTime); - } - if (password != null) { - formParams[r'password'] = parameterToString(password); - } - if (callback != null) { - formParams[r'callback'] = parameterToString(callback); - } + if (integer != null) { + formParams[r'integer'] = parameterToString(integer); + } + if (int32 != null) { + formParams[r'int32'] = parameterToString(int32); + } + if (int64 != null) { + formParams[r'int64'] = parameterToString(int64); + } + if (number != null) { + formParams[r'number'] = parameterToString(number); + } + if (float != null) { + formParams[r'float'] = parameterToString(float); + } + if (double_ != null) { + formParams[r'double'] = parameterToString(double_); + } + if (string != null) { + formParams[r'string'] = parameterToString(string); + } + if (patternWithoutDelimiter != null) { + formParams[r'pattern_without_delimiter'] = parameterToString(patternWithoutDelimiter); + } + if (byte != null) { + formParams[r'byte'] = parameterToString(byte); + } + if (date != null) { + formParams[r'date'] = parameterToString(date); + } + if (dateTime != null) { + formParams[r'dateTime'] = parameterToString(dateTime); + } + if (password != null) { + formParams[r'password'] = parameterToString(password); + } + if (callback != null) { + formParams[r'callback'] = parameterToString(callback); } return await apiClient.invokeAPI( @@ -1014,30 +836,11 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (enumFormStringArray != null) { - hasFields = true; - mp.fields[r'enum_form_string_array'] = parameterToString(enumFormStringArray); - } - if (enumFormString != null) { - hasFields = true; - mp.fields[r'enum_form_string'] = parameterToString(enumFormString); - } - if (hasFields) { - postBody = mp; - } - } else { - if (enumFormStringArray != null) { - formParams[r'enum_form_string_array'] = parameterToString(enumFormStringArray); - } - if (enumFormString != null) { - formParams[r'enum_form_string'] = parameterToString(enumFormString); - } + if (enumFormStringArray != null) { + formParams[r'enum_form_string_array'] = parameterToString(enumFormStringArray); + } + if (enumFormString != null) { + formParams[r'enum_form_string'] = parameterToString(enumFormString); } return await apiClient.invokeAPI( @@ -1151,17 +954,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['bearer_test']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -1231,17 +1023,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -1300,30 +1081,11 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (param != null) { - hasFields = true; - mp.fields[r'param'] = parameterToString(param); - } - if (param2 != null) { - hasFields = true; - mp.fields[r'param2'] = parameterToString(param2); - } - if (hasFields) { - postBody = mp; - } - } else { - if (param != null) { - formParams[r'param'] = parameterToString(param); - } - if (param2 != null) { - formParams[r'param2'] = parameterToString(param2); - } + if (param != null) { + formParams[r'param'] = parameterToString(param); + } + if (param2 != null) { + formParams[r'param2'] = parameterToString(param2); } return await apiClient.invokeAPI( @@ -1405,17 +1167,6 @@ class FakeApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_classname_tags123_api.dart index 49f4ce7cde2..c9fc34d194c 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_classname_tags123_api.dart @@ -43,17 +43,6 @@ class FakeClassnameTags123Api { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key_query']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/pet_api.dart index cd2a65ab939..dec9efa15f7 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/pet_api.dart @@ -41,17 +41,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -111,17 +100,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -180,17 +158,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -259,17 +226,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -337,17 +293,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -410,17 +355,6 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -480,30 +414,11 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (name != null) { - hasFields = true; - mp.fields[r'name'] = parameterToString(name); - } - if (status != null) { - hasFields = true; - mp.fields[r'status'] = parameterToString(status); - } - if (hasFields) { - postBody = mp; - } - } else { - if (name != null) { - formParams[r'name'] = parameterToString(name); - } - if (status != null) { - formParams[r'status'] = parameterToString(status); - } + if (name != null) { + formParams[r'name'] = parameterToString(name); + } + if (status != null) { + formParams[r'status'] = parameterToString(status); } return await apiClient.invokeAPI( @@ -570,28 +485,19 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (additionalMetadata != null) { - hasFields = true; - mp.fields[r'additionalMetadata'] = parameterToString(additionalMetadata); - } - if (file != null) { - hasFields = true; - mp.fields[r'file'] = file.field; - mp.files.add(file); - } - if (hasFields) { - postBody = mp; - } - } else { - if (additionalMetadata != null) { - formParams[r'additionalMetadata'] = parameterToString(additionalMetadata); - } + bool hasFields = false; + final mp = MultipartRequest('POST', Uri.parse(path)); + if (additionalMetadata != null) { + hasFields = true; + mp.fields[r'additionalMetadata'] = parameterToString(additionalMetadata); + } + if (file != null) { + hasFields = true; + mp.fields[r'file'] = file.field; + mp.files.add(file); + } + if (hasFields) { + postBody = mp; } return await apiClient.invokeAPI( @@ -669,28 +575,19 @@ class PetApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['petstore_auth']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (additionalMetadata != null) { - hasFields = true; - mp.fields[r'additionalMetadata'] = parameterToString(additionalMetadata); - } - if (requiredFile != null) { - hasFields = true; - mp.fields[r'requiredFile'] = requiredFile.field; - mp.files.add(requiredFile); - } - if (hasFields) { - postBody = mp; - } - } else { - if (additionalMetadata != null) { - formParams[r'additionalMetadata'] = parameterToString(additionalMetadata); - } + bool hasFields = false; + final mp = MultipartRequest('POST', Uri.parse(path)); + if (additionalMetadata != null) { + hasFields = true; + mp.fields[r'additionalMetadata'] = parameterToString(additionalMetadata); + } + if (requiredFile != null) { + hasFields = true; + mp.fields[r'requiredFile'] = requiredFile.field; + mp.files.add(requiredFile); + } + if (hasFields) { + postBody = mp; } return await apiClient.invokeAPI( diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/store_api.dart index 9e262c18b98..f7a67632d33 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/store_api.dart @@ -44,17 +44,6 @@ class StoreApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -101,17 +90,6 @@ class StoreApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = ['api_key']; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -172,17 +150,6 @@ class StoreApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -245,17 +212,6 @@ class StoreApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/user_api.dart index 3291afc2670..13e62586ac9 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/user_api.dart @@ -43,17 +43,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -108,17 +97,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -171,17 +149,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -237,17 +204,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -303,17 +259,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -383,17 +328,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -447,17 +381,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, @@ -514,17 +437,6 @@ class UserApi { final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = []; - if ( - nullableContentType != null && - nullableContentType.toLowerCase().startsWith('multipart/form-data') - ) { - bool hasFields = false; - final mp = MultipartRequest(null, null); - if (hasFields) { - postBody = mp; - } - } else { - } return await apiClient.invokeAPI( path, diff --git a/samples/server/petstore/go-echo-server/pom.xml b/samples/server/petstore/go-echo-server/pom.xml index df4dbbf4702..5e7f03d3842 100644 --- a/samples/server/petstore/go-echo-server/pom.xml +++ b/samples/server/petstore/go-echo-server/pom.xml @@ -35,7 +35,6 @@ go - go mod download From 9e4afb0fc378e39502633f18921d78ed526694b5 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 18 May 2021 23:09:59 +0800 Subject: [PATCH 017/192] [C++] Rename Qt5 to Qt (#9490) * rename qt5 to qt * rename, update * rename qt5 to qt in the templates * update doc --- ...cpp-qt5-client.yaml => cpp-qt-client.yaml} | 6 ++-- ...er.yaml => cpp-qt-qhttpengine-server.yaml} | 6 ++-- docs/generators.md | 4 +-- .../{cpp-qt5-client.md => cpp-qt-client.md} | 4 +-- ...server.md => cpp-qt-qhttpengine-server.md} | 4 +-- ...Codegen.java => CppQtAbstractCodegen.java} | 6 ++-- ...ntCodegen.java => CppQtClientCodegen.java} | 34 +++++++++---------- ...ava => CppQtQHttpEngineServerCodegen.java} | 12 +++---- .../org.openapitools.codegen.CodegenConfig | 4 +-- .../CMakeLists.txt.mustache | 0 .../HttpFileElement.cpp.mustache | 0 .../HttpFileElement.h.mustache | 0 .../HttpRequest.cpp.mustache | 2 +- .../HttpRequest.h.mustache | 0 .../Project.mustache | 0 .../README.mustache | 4 +-- .../ServerConfiguration.mustache | 0 .../ServerVariable.mustache | 0 .../api-body.mustache | 0 .../api-header.mustache | 0 .../enum.mustache | 0 .../helpers-body.mustache | 0 .../helpers-header.mustache | 0 .../licenseInfo.mustache | 0 .../model-body.mustache | 0 .../model-header.mustache | 0 .../object.mustache | 0 .../CMakeLists.txt.mustache | 2 +- .../Dockerfile.mustache | 4 +-- .../HttpFileElement.cpp.mustache | 0 .../HttpFileElement.h.mustache | 0 .../LICENSE.txt.mustache | 0 .../Makefile.mustache | 0 .../README.md.mustache | 14 ++++---- .../apihandler.cpp.mustache | 0 .../apihandler.h.mustache | 0 .../apirequest.cpp.mustache | 0 .../apirequest.h.mustache | 0 .../apirouter.cpp.mustache | 0 .../apirouter.h.mustache | 0 .../enum.mustache | 0 .../helpers-body.mustache | 0 .../helpers-header.mustache | 0 .../licenseInfo.mustache | 0 .../main.cpp.mustache | 0 .../model-body.mustache | 0 .../model-header.mustache | 0 .../object.mustache | 0 .../src-CMakeLists.txt.mustache | 0 pom.xml | 2 +- .../{cpp-qt5 => cpp-qt}/.clang-format | 0 .../petstore/{cpp-qt5 => cpp-qt}/.gitignore | 0 .../.openapi-generator-ignore | 0 .../.openapi-generator/FILES | 0 .../.openapi-generator/VERSION | 0 .../{cpp-qt5 => cpp-qt}/CMakeLists.txt | 0 .../PetStore/PetApiTests.cpp | 0 .../PetStore/PetApiTests.h | 0 .../{cpp-qt5 => cpp-qt}/PetStore/PetStore.pro | 0 .../PetStore/StoreApiTests.cpp | 0 .../PetStore/StoreApiTests.h | 0 .../PetStore/UserApiTests.cpp | 0 .../PetStore/UserApiTests.h | 0 .../{cpp-qt5 => cpp-qt}/PetStore/main.cpp | 0 .../petstore/{cpp-qt5 => cpp-qt}/README.md | 4 +-- .../{cpp-qt5 => cpp-qt}/build-and-test.bash | 0 .../{cpp-qt5 => cpp-qt}/client/CMakeLists.txt | 0 .../client/PFXApiResponse.cpp | 0 .../client/PFXApiResponse.h | 0 .../client/PFXCategory.cpp | 0 .../{cpp-qt5 => cpp-qt}/client/PFXCategory.h | 0 .../{cpp-qt5 => cpp-qt}/client/PFXEnum.h | 0 .../{cpp-qt5 => cpp-qt}/client/PFXHelpers.cpp | 0 .../{cpp-qt5 => cpp-qt}/client/PFXHelpers.h | 0 .../client/PFXHttpFileElement.cpp | 0 .../client/PFXHttpFileElement.h | 0 .../client/PFXHttpRequest.cpp | 2 +- .../client/PFXHttpRequest.h | 0 .../{cpp-qt5 => cpp-qt}/client/PFXObject.h | 0 .../{cpp-qt5 => cpp-qt}/client/PFXOrder.cpp | 0 .../{cpp-qt5 => cpp-qt}/client/PFXOrder.h | 0 .../{cpp-qt5 => cpp-qt}/client/PFXPet.cpp | 0 .../{cpp-qt5 => cpp-qt}/client/PFXPet.h | 0 .../{cpp-qt5 => cpp-qt}/client/PFXPetApi.cpp | 0 .../{cpp-qt5 => cpp-qt}/client/PFXPetApi.h | 0 .../client/PFXServerConfiguration.h | 0 .../client/PFXServerVariable.h | 0 .../client/PFXStoreApi.cpp | 0 .../{cpp-qt5 => cpp-qt}/client/PFXStoreApi.h | 0 .../{cpp-qt5 => cpp-qt}/client/PFXTag.cpp | 0 .../{cpp-qt5 => cpp-qt}/client/PFXTag.h | 0 .../{cpp-qt5 => cpp-qt}/client/PFXUser.cpp | 0 .../{cpp-qt5 => cpp-qt}/client/PFXUser.h | 0 .../{cpp-qt5 => cpp-qt}/client/PFXUserApi.cpp | 0 .../{cpp-qt5 => cpp-qt}/client/PFXUserApi.h | 0 .../{cpp-qt5 => cpp-qt}/client/PFXclient.pri | 0 .../petstore/{cpp-qt5 => cpp-qt}/pom.xml | 0 .../.openapi-generator-ignore | 0 .../.openapi-generator/FILES | 0 .../.openapi-generator/VERSION | 0 .../server/CMakeLists.txt | 2 +- .../server/Dockerfile | 4 +-- .../server/LICENSE.txt | 0 .../server/Makefile | 0 .../server/README.MD | 14 ++++---- .../server/src/CMakeLists.txt | 0 .../server/src/handlers/OAIApiRouter.cpp | 0 .../server/src/handlers/OAIApiRouter.h | 0 .../server/src/handlers/OAIPetApiHandler.cpp | 0 .../server/src/handlers/OAIPetApiHandler.h | 0 .../src/handlers/OAIStoreApiHandler.cpp | 0 .../server/src/handlers/OAIStoreApiHandler.h | 0 .../server/src/handlers/OAIUserApiHandler.cpp | 0 .../server/src/handlers/OAIUserApiHandler.h | 0 .../server/src/main.cpp | 0 .../server/src/models/OAIApiResponse.cpp | 0 .../server/src/models/OAIApiResponse.h | 0 .../server/src/models/OAICategory.cpp | 0 .../server/src/models/OAICategory.h | 0 .../server/src/models/OAIEnum.h | 0 .../server/src/models/OAIHelpers.cpp | 0 .../server/src/models/OAIHelpers.h | 0 .../server/src/models/OAIHttpFileElement.cpp | 0 .../server/src/models/OAIHttpFileElement.h | 0 .../server/src/models/OAIObject.h | 0 .../server/src/models/OAIOrder.cpp | 0 .../server/src/models/OAIOrder.h | 0 .../server/src/models/OAIPet.cpp | 0 .../server/src/models/OAIPet.h | 0 .../server/src/models/OAITag.cpp | 0 .../server/src/models/OAITag.h | 0 .../server/src/models/OAIUser.cpp | 0 .../server/src/models/OAIUser.h | 0 .../server/src/requests/OAIPetApiRequest.cpp | 0 .../server/src/requests/OAIPetApiRequest.h | 0 .../src/requests/OAIStoreApiRequest.cpp | 0 .../server/src/requests/OAIStoreApiRequest.h | 0 .../server/src/requests/OAIUserApiRequest.cpp | 0 .../server/src/requests/OAIUserApiRequest.h | 0 139 files changed, 67 insertions(+), 67 deletions(-) rename bin/configs/{cpp-qt5-client.yaml => cpp-qt-client.yaml} (72%) rename bin/configs/{cpp-qt5-qhttpengine-server.yaml => cpp-qt-qhttpengine-server.yaml} (52%) rename docs/generators/{cpp-qt5-client.md => cpp-qt-client.md} (99%) rename docs/generators/{cpp-qt5-qhttpengine-server.md => cpp-qt-qhttpengine-server.md} (98%) rename modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/{CppQt5AbstractCodegen.java => CppQtAbstractCodegen.java} (98%) rename modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/{CppQt5ClientCodegen.java => CppQtClientCodegen.java} (89%) rename modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/{CppQt5QHttpEngineServerCodegen.java => CppQtQHttpEngineServerCodegen.java} (95%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/CMakeLists.txt.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/HttpFileElement.cpp.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/HttpFileElement.h.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/HttpRequest.cpp.mustache (99%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/HttpRequest.h.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/Project.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/README.mustache (98%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/ServerConfiguration.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/ServerVariable.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/api-body.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/api-header.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/enum.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/helpers-body.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/helpers-header.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/licenseInfo.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/model-body.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/model-header.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-client => cpp-qt-client}/object.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/CMakeLists.txt.mustache (93%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/Dockerfile.mustache (78%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/HttpFileElement.cpp.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/HttpFileElement.h.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/LICENSE.txt.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/Makefile.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/README.md.mustache (89%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/apihandler.cpp.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/apihandler.h.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/apirequest.cpp.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/apirequest.h.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/apirouter.cpp.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/apirouter.h.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/enum.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/helpers-body.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/helpers-header.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/licenseInfo.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/main.cpp.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/model-body.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/model-header.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/object.mustache (100%) rename modules/openapi-generator/src/main/resources/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/src-CMakeLists.txt.mustache (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/.clang-format (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/.gitignore (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/.openapi-generator-ignore (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/.openapi-generator/FILES (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/.openapi-generator/VERSION (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/CMakeLists.txt (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/PetStore/PetApiTests.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/PetStore/PetApiTests.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/PetStore/PetStore.pro (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/PetStore/StoreApiTests.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/PetStore/StoreApiTests.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/PetStore/UserApiTests.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/PetStore/UserApiTests.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/PetStore/main.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/README.md (98%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/build-and-test.bash (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/CMakeLists.txt (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXApiResponse.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXApiResponse.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXCategory.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXCategory.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXEnum.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXHelpers.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXHelpers.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXHttpFileElement.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXHttpFileElement.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXHttpRequest.cpp (99%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXHttpRequest.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXObject.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXOrder.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXOrder.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXPet.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXPet.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXPetApi.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXPetApi.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXServerConfiguration.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXServerVariable.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXStoreApi.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXStoreApi.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXTag.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXTag.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXUser.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXUser.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXUserApi.cpp (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXUserApi.h (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/client/PFXclient.pri (100%) rename samples/client/petstore/{cpp-qt5 => cpp-qt}/pom.xml (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/.openapi-generator-ignore (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/.openapi-generator/FILES (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/.openapi-generator/VERSION (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/CMakeLists.txt (93%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/Dockerfile (78%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/LICENSE.txt (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/Makefile (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/README.MD (88%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/CMakeLists.txt (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/handlers/OAIApiRouter.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/handlers/OAIApiRouter.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/handlers/OAIPetApiHandler.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/handlers/OAIPetApiHandler.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/handlers/OAIStoreApiHandler.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/handlers/OAIStoreApiHandler.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/handlers/OAIUserApiHandler.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/handlers/OAIUserApiHandler.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/main.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIApiResponse.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIApiResponse.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAICategory.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAICategory.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIEnum.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIHelpers.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIHelpers.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIHttpFileElement.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIHttpFileElement.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIObject.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIOrder.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIOrder.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIPet.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIPet.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAITag.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAITag.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIUser.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/models/OAIUser.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/requests/OAIPetApiRequest.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/requests/OAIPetApiRequest.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/requests/OAIStoreApiRequest.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/requests/OAIStoreApiRequest.h (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/requests/OAIUserApiRequest.cpp (100%) rename samples/server/petstore/{cpp-qt5-qhttpengine-server => cpp-qt-qhttpengine-server}/server/src/requests/OAIUserApiRequest.h (100%) diff --git a/bin/configs/cpp-qt5-client.yaml b/bin/configs/cpp-qt-client.yaml similarity index 72% rename from bin/configs/cpp-qt5-client.yaml rename to bin/configs/cpp-qt-client.yaml index dc36141b436..14f4a274500 100644 --- a/bin/configs/cpp-qt5-client.yaml +++ b/bin/configs/cpp-qt-client.yaml @@ -1,7 +1,7 @@ -generatorName: cpp-qt5-client -outputDir: samples/client/petstore/cpp-qt5 +generatorName: cpp-qt-client +outputDir: samples/client/petstore/cpp-qt inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml -templateDir: modules/openapi-generator/src/main/resources/cpp-qt5-client +templateDir: modules/openapi-generator/src/main/resources/cpp-qt-client additionalProperties: cppNamespace: test_namespace modelNamePrefix: PFX diff --git a/bin/configs/cpp-qt5-qhttpengine-server.yaml b/bin/configs/cpp-qt-qhttpengine-server.yaml similarity index 52% rename from bin/configs/cpp-qt5-qhttpengine-server.yaml rename to bin/configs/cpp-qt-qhttpengine-server.yaml index 8ead0fe398d..9a03bcbc951 100644 --- a/bin/configs/cpp-qt5-qhttpengine-server.yaml +++ b/bin/configs/cpp-qt-qhttpengine-server.yaml @@ -1,4 +1,4 @@ -generatorName: cpp-qt5-qhttpengine-server -outputDir: samples/server/petstore/cpp-qt5-qhttpengine-server +generatorName: cpp-qt-qhttpengine-server +outputDir: samples/server/petstore/cpp-qt-qhttpengine-server inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml -templateDir: modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server +templateDir: modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server diff --git a/docs/generators.md b/docs/generators.md index 6cb063b2230..d4e3e5065bc 100644 --- a/docs/generators.md +++ b/docs/generators.md @@ -12,7 +12,7 @@ The following generators are available: * [bash](generators/bash.md) * [c](generators/c.md) * [clojure](generators/clojure.md) -* [cpp-qt5-client](generators/cpp-qt5-client.md) +* [cpp-qt-client](generators/cpp-qt-client.md) * [cpp-restsdk](generators/cpp-restsdk.md) * [cpp-tizen](generators/cpp-tizen.md) * [cpp-ue4 (beta)](generators/cpp-ue4.md) @@ -80,7 +80,7 @@ The following generators are available: * [ada-server](generators/ada-server.md) * [aspnetcore](generators/aspnetcore.md) * [cpp-pistache-server](generators/cpp-pistache-server.md) -* [cpp-qt5-qhttpengine-server](generators/cpp-qt5-qhttpengine-server.md) +* [cpp-qt-qhttpengine-server](generators/cpp-qt-qhttpengine-server.md) * [cpp-restbed-server](generators/cpp-restbed-server.md) * [csharp-nancyfx](generators/csharp-nancyfx.md) * [erlang-server](generators/erlang-server.md) diff --git a/docs/generators/cpp-qt5-client.md b/docs/generators/cpp-qt-client.md similarity index 99% rename from docs/generators/cpp-qt5-client.md rename to docs/generators/cpp-qt-client.md index ce9e00428f8..0dcbd968233 100644 --- a/docs/generators/cpp-qt5-client.md +++ b/docs/generators/cpp-qt-client.md @@ -1,6 +1,6 @@ --- -title: Config Options for cpp-qt5-client -sidebar_label: cpp-qt5-client +title: Config Options for cpp-qt-client +sidebar_label: cpp-qt-client --- These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details. diff --git a/docs/generators/cpp-qt5-qhttpengine-server.md b/docs/generators/cpp-qt-qhttpengine-server.md similarity index 98% rename from docs/generators/cpp-qt5-qhttpengine-server.md rename to docs/generators/cpp-qt-qhttpengine-server.md index 3467f16775b..efd57d28d7a 100644 --- a/docs/generators/cpp-qt5-qhttpengine-server.md +++ b/docs/generators/cpp-qt-qhttpengine-server.md @@ -1,6 +1,6 @@ --- -title: Config Options for cpp-qt5-qhttpengine-server -sidebar_label: cpp-qt5-qhttpengine-server +title: Config Options for cpp-qt-qhttpengine-server +sidebar_label: cpp-qt-qhttpengine-server --- These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details. diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java similarity index 98% rename from modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java rename to modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java index af8323258da..2dff94f15c3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java @@ -13,8 +13,8 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.util.*; -public class CppQt5AbstractCodegen extends AbstractCppCodegen implements CodegenConfig { - private final Logger LOGGER = LoggerFactory.getLogger(CppQt5AbstractCodegen.class); +public class CppQtAbstractCodegen extends AbstractCppCodegen implements CodegenConfig { + private final Logger LOGGER = LoggerFactory.getLogger(CppQtAbstractCodegen.class); protected final String PREFIX = "OAI"; protected String apiVersion = "1.0.0"; protected static final String CPP_NAMESPACE = "cppNamespace"; @@ -29,7 +29,7 @@ public class CppQt5AbstractCodegen extends AbstractCppCodegen implements Codegen protected Set nonFrameworkPrimitives = new HashSet(); - public CppQt5AbstractCodegen() { + public CppQtAbstractCodegen() { super(); modifyFeatureSet(features -> features diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtClientCodegen.java similarity index 89% rename from modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java rename to modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtClientCodegen.java index 00e489ee6ee..e93ae32541a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtClientCodegen.java @@ -29,28 +29,28 @@ import java.io.File; import static org.openapitools.codegen.utils.StringUtils.*; -public class CppQt5ClientCodegen extends CppQt5AbstractCodegen implements CodegenConfig { +public class CppQtClientCodegen extends CppQtAbstractCodegen implements CodegenConfig { public static final String OPTIONAL_PROJECT_FILE_DESC = "Generate client.pri."; // source folder where to write the files protected String sourceFolder = "client"; protected boolean optionalProjectFileFlag = true; - public CppQt5ClientCodegen() { + public CppQtClientCodegen() { super(); modifyFeatureSet(features -> features - .includeDocumentationFeatures(DocumentationFeature.Readme) - .includeGlobalFeatures(GlobalFeature.ParameterizedServer) - .includeGlobalFeatures(GlobalFeature.MultiServer) - .includeSecurityFeatures(SecurityFeature.BasicAuth) - .includeSecurityFeatures(SecurityFeature.ApiKey) - .includeSecurityFeatures(SecurityFeature.BearerToken) - .includeGlobalFeatures(GlobalFeature.ParameterStyling) + .includeDocumentationFeatures(DocumentationFeature.Readme) + .includeGlobalFeatures(GlobalFeature.ParameterizedServer) + .includeGlobalFeatures(GlobalFeature.MultiServer) + .includeSecurityFeatures(SecurityFeature.BasicAuth) + .includeSecurityFeatures(SecurityFeature.ApiKey) + .includeSecurityFeatures(SecurityFeature.BearerToken) + .includeGlobalFeatures(GlobalFeature.ParameterStyling) ); // set the output folder here - outputFolder = "generated-code/qt5cpp"; + outputFolder = "generated-code/cpp-qt-client"; /* * Models. You can write model files using the modelTemplateFiles map. @@ -83,7 +83,7 @@ public class CppQt5ClientCodegen extends CppQt5AbstractCodegen implements Codege * Template Location. This is the location which templates will be read from. The generator * will use the resource stream to attempt to read the templates. */ - embeddedTemplateDir = templateDir = "cpp-qt5-client"; + embeddedTemplateDir = templateDir = "cpp-qt-client"; addSwitch(CodegenConstants.OPTIONAL_PROJECT_FILE, OPTIONAL_PROJECT_FILE_DESC, this.optionalProjectFileFlag); supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder, PREFIX + "Helpers.h")); @@ -94,9 +94,9 @@ public class CppQt5ClientCodegen extends CppQt5AbstractCodegen implements Codege supportingFiles.add(new SupportingFile("HttpFileElement.cpp.mustache", sourceFolder, PREFIX + "HttpFileElement.cpp")); supportingFiles.add(new SupportingFile("object.mustache", sourceFolder, PREFIX + "Object.h")); supportingFiles.add(new SupportingFile("enum.mustache", sourceFolder, PREFIX + "Enum.h")); - supportingFiles.add(new SupportingFile("ServerConfiguration.mustache", sourceFolder, PREFIX +"ServerConfiguration.h")); - supportingFiles.add(new SupportingFile("ServerVariable.mustache", sourceFolder, PREFIX +"ServerVariable.h")); - supportingFiles.add(new SupportingFile("README.mustache", "","README.md")); + supportingFiles.add(new SupportingFile("ServerConfiguration.mustache", sourceFolder, PREFIX + "ServerConfiguration.h")); + supportingFiles.add(new SupportingFile("ServerVariable.mustache", sourceFolder, PREFIX + "ServerVariable.h")); + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); supportingFiles.add(new SupportingFile("CMakeLists.txt.mustache", sourceFolder, "CMakeLists.txt")); if (optionalProjectFileFlag) { supportingFiles.add(new SupportingFile("Project.mustache", sourceFolder, "client.pri")); @@ -127,7 +127,7 @@ public class CppQt5ClientCodegen extends CppQt5AbstractCodegen implements Codege supportingFiles.add(new SupportingFile("enum.mustache", sourceFolder, modelNamePrefix + "Enum.h")); supportingFiles.add(new SupportingFile("ServerConfiguration.mustache", sourceFolder, modelNamePrefix + "ServerConfiguration.h")); supportingFiles.add(new SupportingFile("ServerVariable.mustache", sourceFolder, modelNamePrefix + "ServerVariable.h")); - supportingFiles.add(new SupportingFile("README.mustache", "","README.md")); + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); supportingFiles.add(new SupportingFile("CMakeLists.txt.mustache", sourceFolder, "CMakeLists.txt")); @@ -158,7 +158,7 @@ public class CppQt5ClientCodegen extends CppQt5AbstractCodegen implements Codege */ @Override public String getName() { - return "cpp-qt5-client"; + return "cpp-qt-client"; } /** @@ -169,7 +169,7 @@ public class CppQt5ClientCodegen extends CppQt5AbstractCodegen implements Codege */ @Override public String getHelp() { - return "Generates a Qt5 C++ client library."; + return "Generates a Qt C++ client library."; } /** diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtQHttpEngineServerCodegen.java similarity index 95% rename from modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java rename to modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtQHttpEngineServerCodegen.java index 7c35de11720..938211f6787 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtQHttpEngineServerCodegen.java @@ -26,7 +26,7 @@ import java.io.File; import static org.openapitools.codegen.utils.StringUtils.camelize; -public class CppQt5QHttpEngineServerCodegen extends CppQt5AbstractCodegen implements CodegenConfig { +public class CppQtQHttpEngineServerCodegen extends CppQtAbstractCodegen implements CodegenConfig { protected final String SRC_DIR = "/src"; protected final String MODEL_DIR = "/src/models"; @@ -36,13 +36,13 @@ public class CppQt5QHttpEngineServerCodegen extends CppQt5AbstractCodegen implem // source folder where to write the files protected String sourceFolder = "server"; - public CppQt5QHttpEngineServerCodegen() { + public CppQtQHttpEngineServerCodegen() { super(); modifyFeatureSet(features -> features.includeDocumentationFeatures(DocumentationFeature.Readme)); // set the output folder here - outputFolder = "generated-code/cpp-qt5-qhttpengine-server"; + outputFolder = "generated-code/cpp-qt-qhttpengine-server"; /* * Models. You can write model files using the modelTemplateFiles map. @@ -83,7 +83,7 @@ public class CppQt5QHttpEngineServerCodegen extends CppQt5AbstractCodegen implem * Template Location. This is the location which templates will be read from. The generator * will use the resource stream to attempt to read the templates. */ - embeddedTemplateDir = templateDir = "cpp-qt5-qhttpengine-server"; + embeddedTemplateDir = templateDir = "cpp-qt-qhttpengine-server"; supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder + MODEL_DIR, PREFIX + "Helpers.h")); supportingFiles.add(new SupportingFile("helpers-body.mustache", sourceFolder + MODEL_DIR, PREFIX + "Helpers.cpp")); @@ -154,7 +154,7 @@ public class CppQt5QHttpEngineServerCodegen extends CppQt5AbstractCodegen implem */ @Override public String getName() { - return "cpp-qt5-qhttpengine-server"; + return "cpp-qt-qhttpengine-server"; } /** @@ -165,7 +165,7 @@ public class CppQt5QHttpEngineServerCodegen extends CppQt5AbstractCodegen implem */ @Override public String getHelp() { - return "Generates a Qt5 C++ Server using the QHTTPEngine HTTP Library."; + return "Generates a Qt C++ Server using the QHTTPEngine HTTP Library."; } /** diff --git a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig index 4226cade162..eacec0f5127 100644 --- a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig +++ b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig @@ -11,8 +11,8 @@ org.openapitools.codegen.languages.CrystalClientCodegen org.openapitools.codegen.languages.CLibcurlClientCodegen org.openapitools.codegen.languages.ClojureClientCodegen org.openapitools.codegen.languages.ConfluenceWikiCodegen -org.openapitools.codegen.languages.CppQt5ClientCodegen -org.openapitools.codegen.languages.CppQt5QHttpEngineServerCodegen +org.openapitools.codegen.languages.CppQtClientCodegen +org.openapitools.codegen.languages.CppQtQHttpEngineServerCodegen org.openapitools.codegen.languages.CppPistacheServerCodegen org.openapitools.codegen.languages.CppRestbedServerCodegen org.openapitools.codegen.languages.CppRestSdkClientCodegen diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/CMakeLists.txt.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/CMakeLists.txt.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/CMakeLists.txt.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/HttpFileElement.cpp.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/HttpFileElement.cpp.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/HttpFileElement.h.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.h.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/HttpFileElement.h.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/HttpRequest.cpp.mustache similarity index 99% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/HttpRequest.cpp.mustache index 5eca0f0f0a4..bf88363b51c 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt-client/HttpRequest.cpp.mustache @@ -328,7 +328,7 @@ void {{prefix}}HttpRequestWorker::execute({{prefix}}HttpRequestInput *input) { if ({{prefix}}HttpRequestWorker::sslDefaultConfiguration != nullptr) { request.setSslConfiguration(*{{prefix}}HttpRequestWorker::sslDefaultConfiguration); } - request.setRawHeader("User-Agent", "{{#httpUserAgent}}{{.}}{{/httpUserAgent}}{{^httpUserAgent}}OpenAPI-Generator/{{apiVersion}}/cpp-qt5{{/httpUserAgent}}"); + request.setRawHeader("User-Agent", "{{#httpUserAgent}}{{.}}{{/httpUserAgent}}{{^httpUserAgent}}OpenAPI-Generator/{{apiVersion}}/cpp-qt{{/httpUserAgent}}"); foreach (QString key, input->headers.keys()) { request.setRawHeader(key.toStdString().c_str(), input->headers.value(key).toStdString().c_str()); } if (request_content.size() > 0 && !isFormData && (input->var_layout != MULTIPART)) { diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/HttpRequest.h.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/HttpRequest.h.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/Project.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/Project.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/Project.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/Project.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/README.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/README.mustache similarity index 98% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/README.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/README.mustache index 5f319457532..9692bf79152 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/README.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt-client/README.mustache @@ -53,10 +53,10 @@ At first generate the JAR by executing: mvn clean package ``` -Use the Jar file to generate the Qt5 Client: +Use the Jar file to generate the Qt Client: ```shell -java -jar target/openapi-generator-cli.jar generate -i -g cpp-qt5-client -o +java -jar target/openapi-generator-cli.jar generate -i -g cpp-qt-client -o ``` ## Getting Started diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/ServerConfiguration.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/ServerConfiguration.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/ServerConfiguration.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/ServerConfiguration.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/ServerVariable.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/ServerVariable.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/ServerVariable.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/ServerVariable.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/api-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/api-body.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/api-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/api-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/enum.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/enum.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/enum.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/enum.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/helpers-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/helpers-body.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/helpers-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/helpers-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/licenseInfo.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/licenseInfo.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/licenseInfo.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/licenseInfo.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/model-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/model-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/model-body.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/model-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/model-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/object.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/object.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-client/object.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-client/object.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/CMakeLists.txt.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/CMakeLists.txt.mustache similarity index 93% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/CMakeLists.txt.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/CMakeLists.txt.mustache index 54e6d36d73f..71b8bdb45f4 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/CMakeLists.txt.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/CMakeLists.txt.mustache @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.2 FATAL_ERROR) -project(cpp-qt5-qhttpengine-server) +project(cpp-qt-qhttpengine-server) include(ExternalProject) diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/Dockerfile.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/Dockerfile.mustache similarity index 78% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/Dockerfile.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/Dockerfile.mustache index b0c591d10f6..9dfdd9ab478 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/Dockerfile.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/Dockerfile.mustache @@ -23,7 +23,7 @@ RUN apk add --update \ openssl WORKDIR /usr/server -COPY --from=build /usr/server/build/src/cpp-qt5-qhttpengine-server ./build/src/ +COPY --from=build /usr/server/build/src/cpp-qt-qhttpengine-server ./build/src/ COPY --from=build /usr/server/external/ ./external EXPOSE 8080/tcp -ENTRYPOINT ["/usr/server/build/src/cpp-qt5-qhttpengine-server"] \ No newline at end of file +ENTRYPOINT ["/usr/server/build/src/cpp-qt-qhttpengine-server"] diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/HttpFileElement.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/HttpFileElement.cpp.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/HttpFileElement.cpp.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/HttpFileElement.cpp.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/HttpFileElement.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/HttpFileElement.h.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/HttpFileElement.h.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/HttpFileElement.h.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/LICENSE.txt.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/LICENSE.txt.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/LICENSE.txt.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/LICENSE.txt.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/Makefile.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/Makefile.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/Makefile.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/Makefile.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/README.md.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/README.md.mustache similarity index 89% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/README.md.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/README.md.mustache index e5439dcae3b..68ec6bf4369 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/README.md.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/README.md.mustache @@ -1,6 +1,6 @@ -# C++ Qt5 Server +# C++ Qt Server -## Qt5 HTTP Server based on the Qhttpengine +## Qt HTTP Server based on the Qhttpengine This server was generated by the [openapi-generator](https://openapi-generator.tech) project. By using the [OpenAPI-Spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate a server stub. @@ -50,18 +50,18 @@ make To run the server ```shell -./build/src/cpp-qt5-qhttpengine-server & +./build/src/cpp-qt-qhttpengine-server & ``` To override the default port via the command line, provide the parameters `port` and `address` like below ```shell -cpp-qt5-qhttpengine-server --port 9080 --address 127.17.0.1 +cpp-qt-qhttpengine-server --port 9080 --address 127.17.0.1 ``` or ```shell -cpp-qt5-qhttpengine-server -p 9080 -a 127.17.0.1 +cpp-qt-qhttpengine-server -p 9080 -a 127.17.0.1 ``` #### Invoke an API @@ -80,13 +80,13 @@ If you dont have docker install [here](https://docs.docker.com/install) Add yourself to the docker group ```shell -docker build --network=host -t cpp-qt5-qhttpengine-server . +docker build --network=host -t cpp-qt-qhttpengine-server . ``` Running with docker ```shell -docker run --rm -it --name=server-container cpp-qt5-qhttpengine-server +docker run --rm -it --name=server-container cpp-qt-qhttpengine-server ``` #### Invoking an API diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apihandler.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/apihandler.cpp.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apihandler.cpp.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/apihandler.cpp.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apihandler.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/apihandler.h.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apihandler.h.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/apihandler.h.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apirequest.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/apirequest.cpp.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apirequest.cpp.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/apirequest.cpp.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apirequest.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/apirequest.h.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apirequest.h.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/apirequest.h.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apirouter.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/apirouter.cpp.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apirouter.cpp.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/apirouter.cpp.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apirouter.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/apirouter.h.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/apirouter.h.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/apirouter.h.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/enum.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/enum.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/enum.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/enum.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/helpers-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/helpers-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/helpers-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/helpers-body.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/helpers-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/helpers-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/helpers-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/helpers-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/licenseInfo.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/licenseInfo.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/licenseInfo.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/licenseInfo.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/main.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/main.cpp.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/main.cpp.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/main.cpp.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/model-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/model-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/model-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/model-body.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/model-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/model-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/model-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/object.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/object.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/object.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/object.mustache diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/src-CMakeLists.txt.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/src-CMakeLists.txt.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/src-CMakeLists.txt.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt-qhttpengine-server/src-CMakeLists.txt.mustache diff --git a/pom.xml b/pom.xml index fd2f7903af4..f5954bbd850 100644 --- a/pom.xml +++ b/pom.xml @@ -1201,7 +1201,7 @@ - samples/client/petstore/cpp-qt5 + samples/client/petstore/cpp-qt samples/client/petstore/rust samples/client/petstore/rust/reqwest/petstore samples/client/petstore/rust/reqwest/petstore-async diff --git a/samples/client/petstore/cpp-qt5/.clang-format b/samples/client/petstore/cpp-qt/.clang-format similarity index 100% rename from samples/client/petstore/cpp-qt5/.clang-format rename to samples/client/petstore/cpp-qt/.clang-format diff --git a/samples/client/petstore/cpp-qt5/.gitignore b/samples/client/petstore/cpp-qt/.gitignore similarity index 100% rename from samples/client/petstore/cpp-qt5/.gitignore rename to samples/client/petstore/cpp-qt/.gitignore diff --git a/samples/client/petstore/cpp-qt5/.openapi-generator-ignore b/samples/client/petstore/cpp-qt/.openapi-generator-ignore similarity index 100% rename from samples/client/petstore/cpp-qt5/.openapi-generator-ignore rename to samples/client/petstore/cpp-qt/.openapi-generator-ignore diff --git a/samples/client/petstore/cpp-qt5/.openapi-generator/FILES b/samples/client/petstore/cpp-qt/.openapi-generator/FILES similarity index 100% rename from samples/client/petstore/cpp-qt5/.openapi-generator/FILES rename to samples/client/petstore/cpp-qt/.openapi-generator/FILES diff --git a/samples/client/petstore/cpp-qt5/.openapi-generator/VERSION b/samples/client/petstore/cpp-qt/.openapi-generator/VERSION similarity index 100% rename from samples/client/petstore/cpp-qt5/.openapi-generator/VERSION rename to samples/client/petstore/cpp-qt/.openapi-generator/VERSION diff --git a/samples/client/petstore/cpp-qt5/CMakeLists.txt b/samples/client/petstore/cpp-qt/CMakeLists.txt similarity index 100% rename from samples/client/petstore/cpp-qt5/CMakeLists.txt rename to samples/client/petstore/cpp-qt/CMakeLists.txt diff --git a/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp b/samples/client/petstore/cpp-qt/PetStore/PetApiTests.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp rename to samples/client/petstore/cpp-qt/PetStore/PetApiTests.cpp diff --git a/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.h b/samples/client/petstore/cpp-qt/PetStore/PetApiTests.h similarity index 100% rename from samples/client/petstore/cpp-qt5/PetStore/PetApiTests.h rename to samples/client/petstore/cpp-qt/PetStore/PetApiTests.h diff --git a/samples/client/petstore/cpp-qt5/PetStore/PetStore.pro b/samples/client/petstore/cpp-qt/PetStore/PetStore.pro similarity index 100% rename from samples/client/petstore/cpp-qt5/PetStore/PetStore.pro rename to samples/client/petstore/cpp-qt/PetStore/PetStore.pro diff --git a/samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.cpp b/samples/client/petstore/cpp-qt/PetStore/StoreApiTests.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.cpp rename to samples/client/petstore/cpp-qt/PetStore/StoreApiTests.cpp diff --git a/samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.h b/samples/client/petstore/cpp-qt/PetStore/StoreApiTests.h similarity index 100% rename from samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.h rename to samples/client/petstore/cpp-qt/PetStore/StoreApiTests.h diff --git a/samples/client/petstore/cpp-qt5/PetStore/UserApiTests.cpp b/samples/client/petstore/cpp-qt/PetStore/UserApiTests.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/PetStore/UserApiTests.cpp rename to samples/client/petstore/cpp-qt/PetStore/UserApiTests.cpp diff --git a/samples/client/petstore/cpp-qt5/PetStore/UserApiTests.h b/samples/client/petstore/cpp-qt/PetStore/UserApiTests.h similarity index 100% rename from samples/client/petstore/cpp-qt5/PetStore/UserApiTests.h rename to samples/client/petstore/cpp-qt/PetStore/UserApiTests.h diff --git a/samples/client/petstore/cpp-qt5/PetStore/main.cpp b/samples/client/petstore/cpp-qt/PetStore/main.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/PetStore/main.cpp rename to samples/client/petstore/cpp-qt/PetStore/main.cpp diff --git a/samples/client/petstore/cpp-qt5/README.md b/samples/client/petstore/cpp-qt/README.md similarity index 98% rename from samples/client/petstore/cpp-qt5/README.md rename to samples/client/petstore/cpp-qt/README.md index f72d21e557d..156bb656f1d 100644 --- a/samples/client/petstore/cpp-qt5/README.md +++ b/samples/client/petstore/cpp-qt/README.md @@ -46,10 +46,10 @@ At first generate the JAR by executing: mvn clean package ``` -Use the Jar file to generate the Qt5 Client: +Use the Jar file to generate the Qt Client: ```shell -java -jar target/openapi-generator-cli.jar generate -i -g cpp-qt5-client -o +java -jar target/openapi-generator-cli.jar generate -i -g cpp-qt-client -o ``` ## Getting Started diff --git a/samples/client/petstore/cpp-qt5/build-and-test.bash b/samples/client/petstore/cpp-qt/build-and-test.bash similarity index 100% rename from samples/client/petstore/cpp-qt5/build-and-test.bash rename to samples/client/petstore/cpp-qt/build-and-test.bash diff --git a/samples/client/petstore/cpp-qt5/client/CMakeLists.txt b/samples/client/petstore/cpp-qt/client/CMakeLists.txt similarity index 100% rename from samples/client/petstore/cpp-qt5/client/CMakeLists.txt rename to samples/client/petstore/cpp-qt/client/CMakeLists.txt diff --git a/samples/client/petstore/cpp-qt5/client/PFXApiResponse.cpp b/samples/client/petstore/cpp-qt/client/PFXApiResponse.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXApiResponse.cpp rename to samples/client/petstore/cpp-qt/client/PFXApiResponse.cpp diff --git a/samples/client/petstore/cpp-qt5/client/PFXApiResponse.h b/samples/client/petstore/cpp-qt/client/PFXApiResponse.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXApiResponse.h rename to samples/client/petstore/cpp-qt/client/PFXApiResponse.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXCategory.cpp b/samples/client/petstore/cpp-qt/client/PFXCategory.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXCategory.cpp rename to samples/client/petstore/cpp-qt/client/PFXCategory.cpp diff --git a/samples/client/petstore/cpp-qt5/client/PFXCategory.h b/samples/client/petstore/cpp-qt/client/PFXCategory.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXCategory.h rename to samples/client/petstore/cpp-qt/client/PFXCategory.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXEnum.h b/samples/client/petstore/cpp-qt/client/PFXEnum.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXEnum.h rename to samples/client/petstore/cpp-qt/client/PFXEnum.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXHelpers.cpp b/samples/client/petstore/cpp-qt/client/PFXHelpers.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXHelpers.cpp rename to samples/client/petstore/cpp-qt/client/PFXHelpers.cpp diff --git a/samples/client/petstore/cpp-qt5/client/PFXHelpers.h b/samples/client/petstore/cpp-qt/client/PFXHelpers.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXHelpers.h rename to samples/client/petstore/cpp-qt/client/PFXHelpers.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.cpp b/samples/client/petstore/cpp-qt/client/PFXHttpFileElement.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.cpp rename to samples/client/petstore/cpp-qt/client/PFXHttpFileElement.cpp diff --git a/samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.h b/samples/client/petstore/cpp-qt/client/PFXHttpFileElement.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXHttpFileElement.h rename to samples/client/petstore/cpp-qt/client/PFXHttpFileElement.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.cpp b/samples/client/petstore/cpp-qt/client/PFXHttpRequest.cpp similarity index 99% rename from samples/client/petstore/cpp-qt5/client/PFXHttpRequest.cpp rename to samples/client/petstore/cpp-qt/client/PFXHttpRequest.cpp index ec16ac8e916..b05c2c19219 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.cpp +++ b/samples/client/petstore/cpp-qt/client/PFXHttpRequest.cpp @@ -335,7 +335,7 @@ void PFXHttpRequestWorker::execute(PFXHttpRequestInput *input) { if (PFXHttpRequestWorker::sslDefaultConfiguration != nullptr) { request.setSslConfiguration(*PFXHttpRequestWorker::sslDefaultConfiguration); } - request.setRawHeader("User-Agent", "OpenAPI-Generator/1.0.0/cpp-qt5"); + request.setRawHeader("User-Agent", "OpenAPI-Generator/1.0.0/cpp-qt"); foreach (QString key, input->headers.keys()) { request.setRawHeader(key.toStdString().c_str(), input->headers.value(key).toStdString().c_str()); } if (request_content.size() > 0 && !isFormData && (input->var_layout != MULTIPART)) { diff --git a/samples/client/petstore/cpp-qt5/client/PFXHttpRequest.h b/samples/client/petstore/cpp-qt/client/PFXHttpRequest.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXHttpRequest.h rename to samples/client/petstore/cpp-qt/client/PFXHttpRequest.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXObject.h b/samples/client/petstore/cpp-qt/client/PFXObject.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXObject.h rename to samples/client/petstore/cpp-qt/client/PFXObject.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXOrder.cpp b/samples/client/petstore/cpp-qt/client/PFXOrder.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXOrder.cpp rename to samples/client/petstore/cpp-qt/client/PFXOrder.cpp diff --git a/samples/client/petstore/cpp-qt5/client/PFXOrder.h b/samples/client/petstore/cpp-qt/client/PFXOrder.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXOrder.h rename to samples/client/petstore/cpp-qt/client/PFXOrder.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXPet.cpp b/samples/client/petstore/cpp-qt/client/PFXPet.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXPet.cpp rename to samples/client/petstore/cpp-qt/client/PFXPet.cpp diff --git a/samples/client/petstore/cpp-qt5/client/PFXPet.h b/samples/client/petstore/cpp-qt/client/PFXPet.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXPet.h rename to samples/client/petstore/cpp-qt/client/PFXPet.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp b/samples/client/petstore/cpp-qt/client/PFXPetApi.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXPetApi.cpp rename to samples/client/petstore/cpp-qt/client/PFXPetApi.cpp diff --git a/samples/client/petstore/cpp-qt5/client/PFXPetApi.h b/samples/client/petstore/cpp-qt/client/PFXPetApi.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXPetApi.h rename to samples/client/petstore/cpp-qt/client/PFXPetApi.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXServerConfiguration.h b/samples/client/petstore/cpp-qt/client/PFXServerConfiguration.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXServerConfiguration.h rename to samples/client/petstore/cpp-qt/client/PFXServerConfiguration.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXServerVariable.h b/samples/client/petstore/cpp-qt/client/PFXServerVariable.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXServerVariable.h rename to samples/client/petstore/cpp-qt/client/PFXServerVariable.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp b/samples/client/petstore/cpp-qt/client/PFXStoreApi.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXStoreApi.cpp rename to samples/client/petstore/cpp-qt/client/PFXStoreApi.cpp diff --git a/samples/client/petstore/cpp-qt5/client/PFXStoreApi.h b/samples/client/petstore/cpp-qt/client/PFXStoreApi.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXStoreApi.h rename to samples/client/petstore/cpp-qt/client/PFXStoreApi.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXTag.cpp b/samples/client/petstore/cpp-qt/client/PFXTag.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXTag.cpp rename to samples/client/petstore/cpp-qt/client/PFXTag.cpp diff --git a/samples/client/petstore/cpp-qt5/client/PFXTag.h b/samples/client/petstore/cpp-qt/client/PFXTag.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXTag.h rename to samples/client/petstore/cpp-qt/client/PFXTag.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXUser.cpp b/samples/client/petstore/cpp-qt/client/PFXUser.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXUser.cpp rename to samples/client/petstore/cpp-qt/client/PFXUser.cpp diff --git a/samples/client/petstore/cpp-qt5/client/PFXUser.h b/samples/client/petstore/cpp-qt/client/PFXUser.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXUser.h rename to samples/client/petstore/cpp-qt/client/PFXUser.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp b/samples/client/petstore/cpp-qt/client/PFXUserApi.cpp similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXUserApi.cpp rename to samples/client/petstore/cpp-qt/client/PFXUserApi.cpp diff --git a/samples/client/petstore/cpp-qt5/client/PFXUserApi.h b/samples/client/petstore/cpp-qt/client/PFXUserApi.h similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXUserApi.h rename to samples/client/petstore/cpp-qt/client/PFXUserApi.h diff --git a/samples/client/petstore/cpp-qt5/client/PFXclient.pri b/samples/client/petstore/cpp-qt/client/PFXclient.pri similarity index 100% rename from samples/client/petstore/cpp-qt5/client/PFXclient.pri rename to samples/client/petstore/cpp-qt/client/PFXclient.pri diff --git a/samples/client/petstore/cpp-qt5/pom.xml b/samples/client/petstore/cpp-qt/pom.xml similarity index 100% rename from samples/client/petstore/cpp-qt5/pom.xml rename to samples/client/petstore/cpp-qt/pom.xml diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/.openapi-generator-ignore b/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator-ignore similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/.openapi-generator-ignore rename to samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator-ignore diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/.openapi-generator/FILES b/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/FILES similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/.openapi-generator/FILES rename to samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/FILES diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/.openapi-generator/VERSION b/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/.openapi-generator/VERSION rename to samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/CMakeLists.txt b/samples/server/petstore/cpp-qt-qhttpengine-server/server/CMakeLists.txt similarity index 93% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/CMakeLists.txt rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/CMakeLists.txt index 54e6d36d73f..71b8bdb45f4 100644 --- a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/CMakeLists.txt +++ b/samples/server/petstore/cpp-qt-qhttpengine-server/server/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.2 FATAL_ERROR) -project(cpp-qt5-qhttpengine-server) +project(cpp-qt-qhttpengine-server) include(ExternalProject) diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/Dockerfile b/samples/server/petstore/cpp-qt-qhttpengine-server/server/Dockerfile similarity index 78% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/Dockerfile rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/Dockerfile index b0c591d10f6..9dfdd9ab478 100644 --- a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/Dockerfile +++ b/samples/server/petstore/cpp-qt-qhttpengine-server/server/Dockerfile @@ -23,7 +23,7 @@ RUN apk add --update \ openssl WORKDIR /usr/server -COPY --from=build /usr/server/build/src/cpp-qt5-qhttpengine-server ./build/src/ +COPY --from=build /usr/server/build/src/cpp-qt-qhttpengine-server ./build/src/ COPY --from=build /usr/server/external/ ./external EXPOSE 8080/tcp -ENTRYPOINT ["/usr/server/build/src/cpp-qt5-qhttpengine-server"] \ No newline at end of file +ENTRYPOINT ["/usr/server/build/src/cpp-qt-qhttpengine-server"] diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/LICENSE.txt b/samples/server/petstore/cpp-qt-qhttpengine-server/server/LICENSE.txt similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/LICENSE.txt rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/LICENSE.txt diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/Makefile b/samples/server/petstore/cpp-qt-qhttpengine-server/server/Makefile similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/Makefile rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/Makefile diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/README.MD b/samples/server/petstore/cpp-qt-qhttpengine-server/server/README.MD similarity index 88% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/README.MD rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/README.MD index 5225ebb24fd..8158062ef70 100644 --- a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/README.MD +++ b/samples/server/petstore/cpp-qt-qhttpengine-server/server/README.MD @@ -1,6 +1,6 @@ -# C++ Qt5 Server +# C++ Qt Server -## Qt5 HTTP Server based on the Qhttpengine +## Qt HTTP Server based on the Qhttpengine This server was generated by the [openapi-generator](https://openapi-generator.tech) project. By using the [OpenAPI-Spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate a server stub. @@ -46,18 +46,18 @@ make To run the server ```shell -./build/src/cpp-qt5-qhttpengine-server & +./build/src/cpp-qt-qhttpengine-server & ``` To override the default port via the command line, provide the parameters `port` and `address` like below ```shell -cpp-qt5-qhttpengine-server --port 9080 --address 127.17.0.1 +cpp-qt-qhttpengine-server --port 9080 --address 127.17.0.1 ``` or ```shell -cpp-qt5-qhttpengine-server -p 9080 -a 127.17.0.1 +cpp-qt-qhttpengine-server -p 9080 -a 127.17.0.1 ``` #### Invoke an API @@ -76,13 +76,13 @@ If you dont have docker install [here](https://docs.docker.com/install) Add yourself to the docker group ```shell -docker build --network=host -t cpp-qt5-qhttpengine-server . +docker build --network=host -t cpp-qt-qhttpengine-server . ``` Running with docker ```shell -docker run --rm -it --name=server-container cpp-qt5-qhttpengine-server +docker run --rm -it --name=server-container cpp-qt-qhttpengine-server ``` #### Invoking an API diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/CMakeLists.txt b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/CMakeLists.txt similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/CMakeLists.txt rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/CMakeLists.txt diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIApiRouter.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIApiRouter.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIApiRouter.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIApiRouter.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIApiRouter.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIApiRouter.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIApiRouter.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIApiRouter.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIPetApiHandler.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIPetApiHandler.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIPetApiHandler.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIPetApiHandler.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIPetApiHandler.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIPetApiHandler.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIPetApiHandler.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIPetApiHandler.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIStoreApiHandler.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIStoreApiHandler.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIStoreApiHandler.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIStoreApiHandler.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIStoreApiHandler.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIStoreApiHandler.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIStoreApiHandler.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIStoreApiHandler.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIUserApiHandler.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIUserApiHandler.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIUserApiHandler.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIUserApiHandler.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIUserApiHandler.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIUserApiHandler.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/handlers/OAIUserApiHandler.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/handlers/OAIUserApiHandler.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/main.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/main.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/main.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/main.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIApiResponse.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIApiResponse.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIApiResponse.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIApiResponse.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIApiResponse.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIApiResponse.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIApiResponse.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIApiResponse.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAICategory.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAICategory.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAICategory.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAICategory.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAICategory.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAICategory.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAICategory.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAICategory.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIEnum.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIEnum.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIEnum.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIEnum.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIHelpers.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIHelpers.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIHelpers.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIHelpers.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIHelpers.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIHelpers.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIHelpers.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIHelpers.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIHttpFileElement.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIHttpFileElement.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIHttpFileElement.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIHttpFileElement.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIHttpFileElement.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIHttpFileElement.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIHttpFileElement.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIHttpFileElement.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIObject.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIObject.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIObject.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIObject.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIOrder.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIOrder.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIOrder.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIOrder.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIOrder.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIOrder.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIOrder.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIOrder.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIPet.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIPet.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIPet.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIPet.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIPet.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIPet.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIPet.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIPet.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAITag.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAITag.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAITag.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAITag.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAITag.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAITag.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAITag.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAITag.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIUser.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIUser.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIUser.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIUser.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIUser.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIUser.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIUser.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/models/OAIUser.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/requests/OAIPetApiRequest.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/requests/OAIPetApiRequest.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/requests/OAIPetApiRequest.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/requests/OAIPetApiRequest.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/requests/OAIPetApiRequest.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/requests/OAIPetApiRequest.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/requests/OAIPetApiRequest.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/requests/OAIPetApiRequest.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/requests/OAIStoreApiRequest.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/requests/OAIStoreApiRequest.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/requests/OAIStoreApiRequest.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/requests/OAIStoreApiRequest.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/requests/OAIStoreApiRequest.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/requests/OAIStoreApiRequest.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/requests/OAIStoreApiRequest.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/requests/OAIStoreApiRequest.h diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/requests/OAIUserApiRequest.cpp b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/requests/OAIUserApiRequest.cpp similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/requests/OAIUserApiRequest.cpp rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/requests/OAIUserApiRequest.cpp diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/requests/OAIUserApiRequest.h b/samples/server/petstore/cpp-qt-qhttpengine-server/server/src/requests/OAIUserApiRequest.h similarity index 100% rename from samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/requests/OAIUserApiRequest.h rename to samples/server/petstore/cpp-qt-qhttpengine-server/server/src/requests/OAIUserApiRequest.h From 6b5794df9d90d8fba02cfadc3c4540d8662d3365 Mon Sep 17 00:00:00 2001 From: Dennis Melzer Date: Tue, 18 May 2021 17:17:57 +0200 Subject: [PATCH 018/192] Fix bean validation for type Optional (#8708) * Fix bean validation for type Optional #8690 * Revert path params --- .../resources/JavaSpring/beanValidationQueryParams.mustache | 2 +- .../src/main/resources/JavaSpring/optionalDataType.mustache | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/beanValidationQueryParams.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/beanValidationQueryParams.mustache index 9cca8cb8874..a2f19f77468 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/beanValidationQueryParams.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/beanValidationQueryParams.mustache @@ -1 +1 @@ -{{#required}}@NotNull {{/required}}{{>beanValidationCore}} \ No newline at end of file +{{#required}}@NotNull {{/required}}{{^useOptional}}{{>beanValidationCore}}{{/useOptional}}{{#useOptional}}{{#required}}{{>beanValidationCore}}{{/required}}{{/useOptional}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/optionalDataType.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/optionalDataType.mustache index 976950e27e8..84505f8fc29 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/optionalDataType.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/optionalDataType.mustache @@ -1 +1 @@ -{{#useOptional}}{{#required}}{{{dataType}}}{{/required}}{{^required}}Optional<{{{dataType}}}>{{/required}}{{/useOptional}}{{^useOptional}}{{{dataType}}}{{/useOptional}} \ No newline at end of file +{{#useOptional}}{{#required}}{{{dataType}}}{{/required}}{{^required}}Optional<{{#useBeanValidation}}{{>beanValidationCore}}{{/useBeanValidation}}{{{dataType}}}>{{/required}}{{/useOptional}}{{^useOptional}}{{{dataType}}}{{/useOptional}} \ No newline at end of file From f48311dac4738716ec808c6544971d3fdb765f35 Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Tue, 18 May 2021 16:47:26 +0100 Subject: [PATCH 019/192] [swift5][client] make AnyCodable optional (#9479) * [swift5][client] make AnyCodable usage optional * [swift5][client] update sample projects --- .../src/main/resources/swift5/Extensions.mustache | 8 ++++++-- .../src/main/resources/swift5/XcodeGen.mustache | 4 ++-- .../src/main/resources/swift5/model.mustache | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Extensions.swift | 6 +++++- .../OpenAPIs/Models/AdditionalPropertiesClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Animal.swift | 2 ++ .../Classes/OpenAPIs/Models/AnimalFarm.swift | 2 ++ .../Classes/OpenAPIs/Models/ApiResponse.swift | 2 ++ .../OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayTest.swift | 2 ++ .../Classes/OpenAPIs/Models/Capitalization.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Cat.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Category.swift | 2 ++ .../Classes/OpenAPIs/Models/ClassModel.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Client.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Dog.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumArrays.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/File.swift | 2 ++ .../Classes/OpenAPIs/Models/FileSchemaTestClass.swift | 2 ++ .../Classes/OpenAPIs/Models/FormatTest.swift | 2 ++ .../Classes/OpenAPIs/Models/HasOnlyReadOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/List.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift | 2 ++ .../MixedPropertiesAndAdditionalPropertiesClass.swift | 2 ++ .../Classes/OpenAPIs/Models/Model200Response.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Name.swift | 2 ++ .../Classes/OpenAPIs/Models/NumberOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Order.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterComposite.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterEnum.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Pet.swift | 2 ++ .../Classes/OpenAPIs/Models/ReadOnlyFirst.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Return.swift | 2 ++ .../Classes/OpenAPIs/Models/SpecialModelName.swift | 2 ++ .../Classes/OpenAPIs/Models/StringBooleanMap.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Tag.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderDefault.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderExample.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/User.swift | 2 ++ .../client/petstore/swift5/alamofireLibrary/project.yml | 2 +- .../PetstoreClient/Classes/OpenAPIs/Extensions.swift | 6 +++++- .../OpenAPIs/Models/AdditionalPropertiesClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Animal.swift | 2 ++ .../Classes/OpenAPIs/Models/AnimalFarm.swift | 2 ++ .../Classes/OpenAPIs/Models/ApiResponse.swift | 2 ++ .../OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayTest.swift | 2 ++ .../Classes/OpenAPIs/Models/Capitalization.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Cat.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Category.swift | 2 ++ .../Classes/OpenAPIs/Models/ClassModel.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Client.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Dog.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumArrays.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/File.swift | 2 ++ .../Classes/OpenAPIs/Models/FileSchemaTestClass.swift | 2 ++ .../Classes/OpenAPIs/Models/FormatTest.swift | 2 ++ .../Classes/OpenAPIs/Models/HasOnlyReadOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/List.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift | 2 ++ .../MixedPropertiesAndAdditionalPropertiesClass.swift | 2 ++ .../Classes/OpenAPIs/Models/Model200Response.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Name.swift | 2 ++ .../Classes/OpenAPIs/Models/NumberOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Order.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterComposite.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterEnum.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Pet.swift | 2 ++ .../Classes/OpenAPIs/Models/ReadOnlyFirst.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Return.swift | 2 ++ .../Classes/OpenAPIs/Models/SpecialModelName.swift | 2 ++ .../Classes/OpenAPIs/Models/StringBooleanMap.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Tag.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderDefault.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderExample.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/User.swift | 2 ++ samples/client/petstore/swift5/combineLibrary/project.yml | 2 +- .../PetstoreClient/Classes/OpenAPIs/Extensions.swift | 6 +++++- .../OpenAPIs/Models/AdditionalPropertiesAnyType.swift | 2 ++ .../OpenAPIs/Models/AdditionalPropertiesArray.swift | 2 ++ .../OpenAPIs/Models/AdditionalPropertiesBoolean.swift | 2 ++ .../OpenAPIs/Models/AdditionalPropertiesClass.swift | 2 ++ .../OpenAPIs/Models/AdditionalPropertiesInteger.swift | 2 ++ .../OpenAPIs/Models/AdditionalPropertiesNumber.swift | 2 ++ .../OpenAPIs/Models/AdditionalPropertiesObject.swift | 2 ++ .../OpenAPIs/Models/AdditionalPropertiesString.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Animal.swift | 2 ++ .../Classes/OpenAPIs/Models/AnimalFarm.swift | 2 ++ .../Classes/OpenAPIs/Models/ApiResponse.swift | 2 ++ .../OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayTest.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift | 2 ++ .../Classes/OpenAPIs/Models/BigCatAllOf.swift | 2 ++ .../Classes/OpenAPIs/Models/Capitalization.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Cat.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Category.swift | 2 ++ .../Classes/OpenAPIs/Models/ClassModel.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Client.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Dog.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumArrays.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/File.swift | 2 ++ .../Classes/OpenAPIs/Models/FileSchemaTestClass.swift | 2 ++ .../Classes/OpenAPIs/Models/FormatTest.swift | 2 ++ .../Classes/OpenAPIs/Models/HasOnlyReadOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/List.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift | 2 ++ .../MixedPropertiesAndAdditionalPropertiesClass.swift | 2 ++ .../Classes/OpenAPIs/Models/Model200Response.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Name.swift | 2 ++ .../Classes/OpenAPIs/Models/NumberOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Order.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterComposite.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterEnum.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Pet.swift | 2 ++ .../Classes/OpenAPIs/Models/ReadOnlyFirst.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Return.swift | 2 ++ .../Classes/OpenAPIs/Models/SpecialModelName.swift | 2 ++ .../Classes/OpenAPIs/Models/StringBooleanMap.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Tag.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderDefault.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderExample.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/User.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift | 2 ++ samples/client/petstore/swift5/default/project.yml | 2 +- .../PetstoreClient/Classes/OpenAPIs/Extensions.swift | 6 +++++- .../Classes/OpenAPIs/Models/ApiResponse.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Category.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Order.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Pet.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Tag.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/User.swift | 2 ++ samples/client/petstore/swift5/deprecated/project.yml | 2 +- .../PetstoreClient/Classes/OpenAPIs/Extensions.swift | 6 +++++- .../OpenAPIs/Models/AdditionalPropertiesClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Animal.swift | 2 ++ .../Classes/OpenAPIs/Models/AnimalFarm.swift | 2 ++ .../Classes/OpenAPIs/Models/ApiResponse.swift | 2 ++ .../OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayTest.swift | 2 ++ .../Classes/OpenAPIs/Models/Capitalization.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Cat.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Category.swift | 2 ++ .../Classes/OpenAPIs/Models/ClassModel.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Client.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Dog.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumArrays.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/File.swift | 2 ++ .../Classes/OpenAPIs/Models/FileSchemaTestClass.swift | 2 ++ .../Classes/OpenAPIs/Models/FormatTest.swift | 2 ++ .../Classes/OpenAPIs/Models/HasOnlyReadOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/List.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift | 2 ++ .../MixedPropertiesAndAdditionalPropertiesClass.swift | 2 ++ .../Classes/OpenAPIs/Models/Model200Response.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Name.swift | 2 ++ .../Classes/OpenAPIs/Models/NumberOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Order.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterComposite.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterEnum.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Pet.swift | 2 ++ .../Classes/OpenAPIs/Models/ReadOnlyFirst.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Return.swift | 2 ++ .../Classes/OpenAPIs/Models/SpecialModelName.swift | 2 ++ .../Classes/OpenAPIs/Models/StringBooleanMap.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Tag.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderDefault.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderExample.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/User.swift | 2 ++ samples/client/petstore/swift5/nonPublicApi/project.yml | 2 +- .../PetstoreClient/Classes/OpenAPIs/Extensions.swift | 6 +++++- .../OpenAPIs/Models/AdditionalPropertiesClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Animal.swift | 2 ++ .../Classes/OpenAPIs/Models/AnimalFarm.swift | 2 ++ .../Classes/OpenAPIs/Models/ApiResponse.swift | 2 ++ .../OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayTest.swift | 2 ++ .../Classes/OpenAPIs/Models/Capitalization.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Cat.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Category.swift | 2 ++ .../Classes/OpenAPIs/Models/ClassModel.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Client.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Dog.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumArrays.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/File.swift | 2 ++ .../Classes/OpenAPIs/Models/FileSchemaTestClass.swift | 2 ++ .../Classes/OpenAPIs/Models/FormatTest.swift | 2 ++ .../Classes/OpenAPIs/Models/HasOnlyReadOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/List.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift | 2 ++ .../MixedPropertiesAndAdditionalPropertiesClass.swift | 2 ++ .../Classes/OpenAPIs/Models/Model200Response.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Name.swift | 2 ++ .../Classes/OpenAPIs/Models/NumberOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Order.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterComposite.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterEnum.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Pet.swift | 2 ++ .../Classes/OpenAPIs/Models/ReadOnlyFirst.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Return.swift | 2 ++ .../Classes/OpenAPIs/Models/SpecialModelName.swift | 2 ++ .../Classes/OpenAPIs/Models/StringBooleanMap.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Tag.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderDefault.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderExample.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/User.swift | 2 ++ samples/client/petstore/swift5/objcCompatible/project.yml | 2 +- .../PetstoreClient/Classes/OpenAPIs/Extensions.swift | 6 +++++- .../OpenAPIs/Models/AdditionalPropertiesClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Animal.swift | 2 ++ .../Classes/OpenAPIs/Models/AnimalFarm.swift | 2 ++ .../Classes/OpenAPIs/Models/ApiResponse.swift | 2 ++ .../OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayTest.swift | 2 ++ .../Classes/OpenAPIs/Models/Capitalization.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Cat.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Category.swift | 2 ++ .../Classes/OpenAPIs/Models/ClassModel.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Client.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Dog.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumArrays.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/File.swift | 2 ++ .../Classes/OpenAPIs/Models/FileSchemaTestClass.swift | 2 ++ .../Classes/OpenAPIs/Models/FormatTest.swift | 2 ++ .../Classes/OpenAPIs/Models/HasOnlyReadOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/List.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift | 2 ++ .../MixedPropertiesAndAdditionalPropertiesClass.swift | 2 ++ .../Classes/OpenAPIs/Models/Model200Response.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Name.swift | 2 ++ .../Classes/OpenAPIs/Models/NumberOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Order.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterComposite.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterEnum.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Pet.swift | 2 ++ .../Classes/OpenAPIs/Models/ReadOnlyFirst.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Return.swift | 2 ++ .../Classes/OpenAPIs/Models/SpecialModelName.swift | 2 ++ .../Classes/OpenAPIs/Models/StringBooleanMap.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Tag.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderDefault.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderExample.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/User.swift | 2 ++ .../client/petstore/swift5/promisekitLibrary/project.yml | 2 +- .../PetstoreClient/Classes/OpenAPIs/Extensions.swift | 6 +++++- .../OpenAPIs/Models/AdditionalPropertiesClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Animal.swift | 2 ++ .../Classes/OpenAPIs/Models/AnimalFarm.swift | 2 ++ .../Classes/OpenAPIs/Models/ApiResponse.swift | 2 ++ .../OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayTest.swift | 2 ++ .../Classes/OpenAPIs/Models/Capitalization.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Cat.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Category.swift | 2 ++ .../Classes/OpenAPIs/Models/ClassModel.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Client.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Dog.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumArrays.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/File.swift | 2 ++ .../Classes/OpenAPIs/Models/FileSchemaTestClass.swift | 2 ++ .../Classes/OpenAPIs/Models/FormatTest.swift | 2 ++ .../Classes/OpenAPIs/Models/HasOnlyReadOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/List.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift | 2 ++ .../MixedPropertiesAndAdditionalPropertiesClass.swift | 2 ++ .../Classes/OpenAPIs/Models/Model200Response.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Name.swift | 2 ++ .../Classes/OpenAPIs/Models/NumberOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Order.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterComposite.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterEnum.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Pet.swift | 2 ++ .../Classes/OpenAPIs/Models/ReadOnlyFirst.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Return.swift | 2 ++ .../Classes/OpenAPIs/Models/SpecialModelName.swift | 2 ++ .../Classes/OpenAPIs/Models/StringBooleanMap.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Tag.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderDefault.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderExample.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/User.swift | 2 ++ .../client/petstore/swift5/readonlyProperties/project.yml | 2 +- .../PetstoreClient/Classes/OpenAPIs/Extensions.swift | 6 +++++- .../OpenAPIs/Models/AdditionalPropertiesClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Animal.swift | 2 ++ .../Classes/OpenAPIs/Models/AnimalFarm.swift | 2 ++ .../Classes/OpenAPIs/Models/ApiResponse.swift | 2 ++ .../OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayTest.swift | 2 ++ .../Classes/OpenAPIs/Models/Capitalization.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Cat.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Category.swift | 2 ++ .../Classes/OpenAPIs/Models/ClassModel.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Client.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Dog.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumArrays.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/File.swift | 2 ++ .../Classes/OpenAPIs/Models/FileSchemaTestClass.swift | 2 ++ .../Classes/OpenAPIs/Models/FormatTest.swift | 2 ++ .../Classes/OpenAPIs/Models/HasOnlyReadOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/List.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift | 2 ++ .../MixedPropertiesAndAdditionalPropertiesClass.swift | 2 ++ .../Classes/OpenAPIs/Models/Model200Response.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Name.swift | 2 ++ .../Classes/OpenAPIs/Models/NumberOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Order.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterComposite.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterEnum.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Pet.swift | 2 ++ .../Classes/OpenAPIs/Models/ReadOnlyFirst.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Return.swift | 2 ++ .../Classes/OpenAPIs/Models/SpecialModelName.swift | 2 ++ .../Classes/OpenAPIs/Models/StringBooleanMap.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Tag.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderDefault.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderExample.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/User.swift | 2 ++ samples/client/petstore/swift5/resultLibrary/project.yml | 2 +- .../PetstoreClient/Classes/OpenAPIs/Extensions.swift | 6 +++++- .../OpenAPIs/Models/AdditionalPropertiesClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Animal.swift | 2 ++ .../Classes/OpenAPIs/Models/AnimalFarm.swift | 2 ++ .../Classes/OpenAPIs/Models/ApiResponse.swift | 2 ++ .../OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayTest.swift | 2 ++ .../Classes/OpenAPIs/Models/Capitalization.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Cat.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Category.swift | 2 ++ .../Classes/OpenAPIs/Models/ClassModel.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Client.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Dog.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumArrays.swift | 2 ++ .../Classes/OpenAPIs/Models/EnumClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/File.swift | 2 ++ .../Classes/OpenAPIs/Models/FileSchemaTestClass.swift | 2 ++ .../Classes/OpenAPIs/Models/FormatTest.swift | 2 ++ .../Classes/OpenAPIs/Models/HasOnlyReadOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/List.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift | 2 ++ .../MixedPropertiesAndAdditionalPropertiesClass.swift | 2 ++ .../Classes/OpenAPIs/Models/Model200Response.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Name.swift | 2 ++ .../Classes/OpenAPIs/Models/NumberOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Order.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterComposite.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterEnum.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Pet.swift | 2 ++ .../Classes/OpenAPIs/Models/ReadOnlyFirst.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Return.swift | 2 ++ .../Classes/OpenAPIs/Models/SpecialModelName.swift | 2 ++ .../Classes/OpenAPIs/Models/StringBooleanMap.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Tag.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderDefault.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderExample.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/User.swift | 2 ++ samples/client/petstore/swift5/rxswiftLibrary/project.yml | 2 +- .../Sources/PetstoreClient/Extensions.swift | 6 +++++- .../PetstoreClient/Models/AdditionalPropertiesClass.swift | 2 ++ .../Sources/PetstoreClient/Models/Animal.swift | 2 ++ .../Sources/PetstoreClient/Models/AnimalFarm.swift | 2 ++ .../Sources/PetstoreClient/Models/ApiResponse.swift | 2 ++ .../PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift | 2 ++ .../Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift | 2 ++ .../Sources/PetstoreClient/Models/ArrayTest.swift | 2 ++ .../Sources/PetstoreClient/Models/Capitalization.swift | 2 ++ .../Sources/PetstoreClient/Models/Cat.swift | 2 ++ .../Sources/PetstoreClient/Models/CatAllOf.swift | 2 ++ .../Sources/PetstoreClient/Models/Category.swift | 2 ++ .../Sources/PetstoreClient/Models/ClassModel.swift | 2 ++ .../Sources/PetstoreClient/Models/Client.swift | 2 ++ .../Sources/PetstoreClient/Models/Dog.swift | 2 ++ .../Sources/PetstoreClient/Models/DogAllOf.swift | 2 ++ .../Sources/PetstoreClient/Models/EnumArrays.swift | 2 ++ .../Sources/PetstoreClient/Models/EnumClass.swift | 2 ++ .../Sources/PetstoreClient/Models/EnumTest.swift | 2 ++ .../Sources/PetstoreClient/Models/File.swift | 2 ++ .../PetstoreClient/Models/FileSchemaTestClass.swift | 2 ++ .../Sources/PetstoreClient/Models/FormatTest.swift | 2 ++ .../Sources/PetstoreClient/Models/HasOnlyReadOnly.swift | 2 ++ .../Sources/PetstoreClient/Models/List.swift | 2 ++ .../Sources/PetstoreClient/Models/MapTest.swift | 2 ++ .../MixedPropertiesAndAdditionalPropertiesClass.swift | 2 ++ .../Sources/PetstoreClient/Models/Model200Response.swift | 2 ++ .../Sources/PetstoreClient/Models/Name.swift | 2 ++ .../Sources/PetstoreClient/Models/NumberOnly.swift | 2 ++ .../Sources/PetstoreClient/Models/Order.swift | 2 ++ .../Sources/PetstoreClient/Models/OuterComposite.swift | 2 ++ .../Sources/PetstoreClient/Models/OuterEnum.swift | 2 ++ .../Sources/PetstoreClient/Models/Pet.swift | 2 ++ .../Sources/PetstoreClient/Models/ReadOnlyFirst.swift | 2 ++ .../Sources/PetstoreClient/Models/Return.swift | 2 ++ .../Sources/PetstoreClient/Models/SpecialModelName.swift | 2 ++ .../Sources/PetstoreClient/Models/StringBooleanMap.swift | 2 ++ .../Sources/PetstoreClient/Models/Tag.swift | 2 ++ .../Sources/PetstoreClient/Models/TypeHolderDefault.swift | 2 ++ .../Sources/PetstoreClient/Models/TypeHolderExample.swift | 2 ++ .../Sources/PetstoreClient/Models/User.swift | 2 ++ .../client/petstore/swift5/urlsessionLibrary/project.yml | 2 +- 441 files changed, 908 insertions(+), 26 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache b/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache index 7a7ec22715c..e3b069f432c 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache @@ -5,7 +5,9 @@ // import Foundation -import AnyCodable{{#usePromiseKit}} +#if canImport(AnyCodable) +import AnyCodable +#endif{{#usePromiseKit}} import PromiseKit{{/usePromiseKit}} extension Bool: JSONEncodable { @@ -201,6 +203,7 @@ extension RequestBuilder { } }{{/usePromiseKit}} +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -240,4 +243,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/modules/openapi-generator/src/main/resources/swift5/XcodeGen.mustache b/modules/openapi-generator/src/main/resources/swift5/XcodeGen.mustache index 54fbb33d468..aed8dcb76b2 100644 --- a/modules/openapi-generator/src/main/resources/swift5/XcodeGen.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/XcodeGen.mustache @@ -11,8 +11,8 @@ targets: settings: APPLICATION_EXTENSION_API_ONLY: true scheme: {} - {{#useAlamofire}}dependencies:{{/useAlamofire}}{{^useAlamofire}}{{#useRxSwift}}dependencies:{{/useRxSwift}}{{/useAlamofire}}{{^useAlamofire}}{{^useRxSwift}}{{#usePromiseKit}}dependencies:{{/usePromiseKit}}{{/useRxSwift}}{{/useAlamofire}}{{#useAlamofire}} + dependencies: + - carthage: AnyCodable{{#useAlamofire}} - carthage: Alamofire{{/useAlamofire}}{{#useRxSwift}} - carthage: RxSwift{{/useRxSwift}}{{#usePromiseKit}} - carthage: PromiseKit{{/usePromiseKit}} - - carthage: AnyCodable diff --git a/modules/openapi-generator/src/main/resources/swift5/model.mustache b/modules/openapi-generator/src/main/resources/swift5/model.mustache index 7ea71a27f23..07c2565c313 100644 --- a/modules/openapi-generator/src/main/resources/swift5/model.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/model.mustache @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif {{#description}} /** {{description}} */{{/description}}{{#isDeprecated}} diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 3aef2d1d6c5..11e807937bd 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } @@ -185,6 +187,7 @@ extension HTTPURLResponse { } } +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -224,4 +227,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 23c4af6d4ff..61a478de142 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index a422ee73b55..157cca1d227 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Animal: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift index b20b894a1ad..a0b09cb9761 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -6,6 +6,8 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 7f7c6a34bdf..8607cbef1a3 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ApiResponse: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 0221229e7dd..f3f161b44c1 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index b5c7ca501e7..d62de957472 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 9074d9ab4aa..360d50d027f 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index f0ca1a76f27..f0781a9cb73 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Capitalization: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 89aaea45b91..d5519760387 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Cat: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index c80f7549e69..8312680deb3 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct CatAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 0def88b1fc8..398da60aa73 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Category: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 90e4986e7f6..03bf63e4cad 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model with \"_class\" property */ public struct ClassModel: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 4e031806901..59604878043 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Client: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 2387b3e7b2c..4ada3ceb605 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Dog: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 4317578cee4..f6c3d287301 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct DogAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 01b8960fe34..0e0aad42abe 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumArrays: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift index ab01cf297f8..6ea2895aee5 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum EnumClass: String, Codable, CaseIterable { case abc = "_abc" diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 9c8e2e9ac84..9e44926be9b 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 2a9c769ca6c..11694b2ca59 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Must be named `File` for test. */ public struct File: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index cd8a9a0e9fe..6aa85d8eecf 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FileSchemaTestClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 11493f7ce28..114c884efc5 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FormatTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index b7a1449830a..cb1a7456a7d 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct HasOnlyReadOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8d484cf0a33..8ecdd3b0233 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct List: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 4b56880fed6..0ff74ed8400 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MapTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index f07f8132af7..58a0a54ca09 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index dc99e8cb8dd..0f59769954f 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name starting with number */ public struct Model200Response: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index d9f893c86ba..d88c94f05c9 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name same as property name */ public struct Name: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 8c1ad5ddd4b..0f05482b9b7 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct NumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index c474a6e657b..100d6b71fed 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Order: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index cdaad279b0f..15a4e4a15b6 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct OuterComposite: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift index 9bd6f3bef8f..76c34b3c2ce 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum OuterEnum: String, Codable, CaseIterable { case placed = "placed" diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index ea9ece39161..a87ab825ea0 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Pet: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index d08a673dbf4..6426deedf63 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ReadOnlyFirst: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index d34dc71ec37..777c241bc0c 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing reserved words */ public struct Return: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index e0e0ea6ae29..b677523a749 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct SpecialModelName: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 8fb1b40e5ee..d3b2bda9b77 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct StringBooleanMap: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 5d90c8a7400..cd5acc827db 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Tag: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index e6e6530dc51..341c9b4b8c2 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderDefault: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 17c811b2edc..04166af0895 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderExample: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index f93cecfc5d0..9f3ded8fcd9 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct User: Codable, Hashable { diff --git a/samples/client/petstore/swift5/alamofireLibrary/project.yml b/samples/client/petstore/swift5/alamofireLibrary/project.yml index 148e2487eae..29a682f4478 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/project.yml +++ b/samples/client/petstore/swift5/alamofireLibrary/project.yml @@ -12,5 +12,5 @@ targets: APPLICATION_EXTENSION_API_ONLY: true scheme: {} dependencies: - - carthage: Alamofire - carthage: AnyCodable + - carthage: Alamofire diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 3aef2d1d6c5..11e807937bd 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } @@ -185,6 +187,7 @@ extension HTTPURLResponse { } } +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -224,4 +227,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 23c4af6d4ff..61a478de142 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index a422ee73b55..157cca1d227 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Animal: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift index b20b894a1ad..a0b09cb9761 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -6,6 +6,8 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 7f7c6a34bdf..8607cbef1a3 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ApiResponse: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 0221229e7dd..f3f161b44c1 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index b5c7ca501e7..d62de957472 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 9074d9ab4aa..360d50d027f 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index f0ca1a76f27..f0781a9cb73 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Capitalization: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 89aaea45b91..d5519760387 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Cat: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index c80f7549e69..8312680deb3 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct CatAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 0def88b1fc8..398da60aa73 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Category: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 90e4986e7f6..03bf63e4cad 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model with \"_class\" property */ public struct ClassModel: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 4e031806901..59604878043 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Client: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 2387b3e7b2c..4ada3ceb605 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Dog: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 4317578cee4..f6c3d287301 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct DogAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 01b8960fe34..0e0aad42abe 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumArrays: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift index ab01cf297f8..6ea2895aee5 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum EnumClass: String, Codable, CaseIterable { case abc = "_abc" diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 9c8e2e9ac84..9e44926be9b 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 2a9c769ca6c..11694b2ca59 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Must be named `File` for test. */ public struct File: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index cd8a9a0e9fe..6aa85d8eecf 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FileSchemaTestClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 11493f7ce28..114c884efc5 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FormatTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index b7a1449830a..cb1a7456a7d 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct HasOnlyReadOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8d484cf0a33..8ecdd3b0233 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct List: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 4b56880fed6..0ff74ed8400 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MapTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index f07f8132af7..58a0a54ca09 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index dc99e8cb8dd..0f59769954f 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name starting with number */ public struct Model200Response: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index d9f893c86ba..d88c94f05c9 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name same as property name */ public struct Name: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 8c1ad5ddd4b..0f05482b9b7 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct NumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index c474a6e657b..100d6b71fed 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Order: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index cdaad279b0f..15a4e4a15b6 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct OuterComposite: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift index 9bd6f3bef8f..76c34b3c2ce 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum OuterEnum: String, Codable, CaseIterable { case placed = "placed" diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index ea9ece39161..a87ab825ea0 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Pet: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index d08a673dbf4..6426deedf63 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ReadOnlyFirst: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index d34dc71ec37..777c241bc0c 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing reserved words */ public struct Return: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index e0e0ea6ae29..b677523a749 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct SpecialModelName: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 8fb1b40e5ee..d3b2bda9b77 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct StringBooleanMap: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 5d90c8a7400..cd5acc827db 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Tag: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index e6e6530dc51..341c9b4b8c2 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderDefault: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 17c811b2edc..04166af0895 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderExample: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index f93cecfc5d0..9f3ded8fcd9 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct User: Codable, Hashable { diff --git a/samples/client/petstore/swift5/combineLibrary/project.yml b/samples/client/petstore/swift5/combineLibrary/project.yml index 5528eeee513..0493cf65896 100644 --- a/samples/client/petstore/swift5/combineLibrary/project.yml +++ b/samples/client/petstore/swift5/combineLibrary/project.yml @@ -11,5 +11,5 @@ targets: settings: APPLICATION_EXTENSION_API_ONLY: true scheme: {} - + dependencies: - carthage: AnyCodable diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 3aef2d1d6c5..11e807937bd 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } @@ -185,6 +187,7 @@ extension HTTPURLResponse { } } +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -224,4 +227,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift index d178f10df64..1ad80b83a3e 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesAnyType: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift index 8ddb4720d6d..273a9f185e3 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesArray: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift index efa557ee7a8..164ae0e09c0 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesBoolean: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 10b6866249a..614e0963353 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift index 4274f8bde69..dcf8d5c01cd 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesInteger: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift index 5bacbca4808..ea7bd463916 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesNumber: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift index cd460f79f64..cf9072f53a2 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesObject: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift index a5b9c4d43ee..d34017e6c97 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesString: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index a422ee73b55..157cca1d227 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Animal: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift index b20b894a1ad..a0b09cb9761 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -6,6 +6,8 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 7f7c6a34bdf..8607cbef1a3 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ApiResponse: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 0221229e7dd..f3f161b44c1 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index b5c7ca501e7..d62de957472 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 9074d9ab4aa..360d50d027f 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift index 288d1f5c29f..3284de5040e 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct BigCat: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift index b4e5595c22f..7d2d2489849 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct BigCatAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index f0ca1a76f27..f0781a9cb73 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Capitalization: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 89aaea45b91..d5519760387 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Cat: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index c80f7549e69..8312680deb3 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct CatAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index d695f78bb4e..24dd89221d0 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Category: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 90e4986e7f6..03bf63e4cad 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model with \"_class\" property */ public struct ClassModel: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 4e031806901..59604878043 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Client: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 2387b3e7b2c..4ada3ceb605 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Dog: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 4317578cee4..f6c3d287301 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct DogAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 01b8960fe34..0e0aad42abe 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumArrays: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift index ab01cf297f8..6ea2895aee5 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum EnumClass: String, Codable, CaseIterable { case abc = "_abc" diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 9c8e2e9ac84..9e44926be9b 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 2a9c769ca6c..11694b2ca59 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Must be named `File` for test. */ public struct File: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index cd8a9a0e9fe..6aa85d8eecf 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FileSchemaTestClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 8b16c3a2013..60eafb2febe 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FormatTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index b7a1449830a..cb1a7456a7d 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct HasOnlyReadOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8d484cf0a33..8ecdd3b0233 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct List: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 4b56880fed6..0ff74ed8400 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MapTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index f07f8132af7..58a0a54ca09 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index dc99e8cb8dd..0f59769954f 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name starting with number */ public struct Model200Response: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index d9f893c86ba..d88c94f05c9 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name same as property name */ public struct Name: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 8c1ad5ddd4b..0f05482b9b7 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct NumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index c474a6e657b..100d6b71fed 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Order: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index cdaad279b0f..15a4e4a15b6 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct OuterComposite: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift index 9bd6f3bef8f..76c34b3c2ce 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum OuterEnum: String, Codable, CaseIterable { case placed = "placed" diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index a1a04b93d26..63b32ba8f11 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Pet: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index d08a673dbf4..6426deedf63 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ReadOnlyFirst: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index d34dc71ec37..777c241bc0c 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing reserved words */ public struct Return: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index e0e0ea6ae29..b677523a749 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct SpecialModelName: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 8fb1b40e5ee..d3b2bda9b77 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct StringBooleanMap: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 5d90c8a7400..cd5acc827db 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Tag: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index e6e6530dc51..341c9b4b8c2 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderDefault: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 3e25b228846..7a0b4dda2a5 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderExample: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/User.swift index f93cecfc5d0..9f3ded8fcd9 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct User: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift index d7fa1248dcd..997e2eebce5 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct XmlItem: Codable, Hashable { diff --git a/samples/client/petstore/swift5/default/project.yml b/samples/client/petstore/swift5/default/project.yml index 5528eeee513..0493cf65896 100644 --- a/samples/client/petstore/swift5/default/project.yml +++ b/samples/client/petstore/swift5/default/project.yml @@ -11,5 +11,5 @@ targets: settings: APPLICATION_EXTENSION_API_ONLY: true scheme: {} - + dependencies: - carthage: AnyCodable diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 3aef2d1d6c5..11e807937bd 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } @@ -185,6 +187,7 @@ extension HTTPURLResponse { } } +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -224,4 +227,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 665bc7675c1..619a45e20bb 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Describes the result of uploading an image resource */ public struct ApiResponse: Codable, Hashable { diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 3212f61529d..26ba10c456e 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** A category for a pet */ public struct Category: Codable, Hashable { diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index f98e4977639..81d122defdf 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** An order for a pets from the pet store */ @available(*, deprecated, message: "This schema is deprecated.") diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 7ade27d71a0..475b1d7e546 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** A pet for sale in the pet store */ public struct Pet: Codable, Hashable { diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 864a0dbbf99..6f008baf726 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** A tag for a pet */ public struct Tag: Codable, Hashable { diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 7b8fee0dd9f..f46bd774131 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** A User who is purchasing from the pet store */ public struct User: Codable, Hashable { diff --git a/samples/client/petstore/swift5/deprecated/project.yml b/samples/client/petstore/swift5/deprecated/project.yml index 5528eeee513..0493cf65896 100644 --- a/samples/client/petstore/swift5/deprecated/project.yml +++ b/samples/client/petstore/swift5/deprecated/project.yml @@ -11,5 +11,5 @@ targets: settings: APPLICATION_EXTENSION_API_ONLY: true scheme: {} - + dependencies: - carthage: AnyCodable diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 729a612f7e6..481f3ce95ce 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } @@ -185,6 +187,7 @@ extension HTTPURLResponse { } } +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -224,4 +227,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index d9dd5e56501..048d2223b46 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct AdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index db644cbd921..cf3022b7a59 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct Animal: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift index 49ec4b6ac6e..58d2309771e 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -6,6 +6,8 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 4b3bb87eef8..3bba5d0f051 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct ApiResponse: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 709e7f19109..6600b567f54 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct ArrayOfArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index 960702ef37e..b9bb366249b 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct ArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index eeb73442a48..5aab5e0237f 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct ArrayTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index 5c5341e77a7..cc75d775764 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct Capitalization: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 61463086913..e1d59e33c66 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct Cat: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 7c742b83be1..8a3358a747a 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct CatAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 9ee881909bf..cdd51a8ffba 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct Category: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 3ed6d33da0f..c5561f409fc 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model with \"_class\" property */ internal struct ClassModel: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 390f624be4f..a5640b27b26 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct Client: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 71848669f32..fcf4077c0b1 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct Dog: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index d26c5f5d87d..f5cb2649406 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct DogAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 553e1b1de09..502b7f16fd2 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct EnumArrays: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift index 0c35bd818e0..7b5fa846ca1 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal enum EnumClass: String, Codable, CaseIterable { case abc = "_abc" diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 23817dcd6d5..6ab42303c45 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct EnumTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift index f14a3a326ca..c4843091f8d 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Must be named `File` for test. */ internal struct File: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index ff5e1a2bf00..52bea1373b0 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct FileSchemaTestClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index a03e2aaa930..c1eff9ffd18 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct FormatTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index 3e928855ab4..df1e18887c5 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct HasOnlyReadOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 80d8b0c4071..10956a8bf61 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct List: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index d61a6e2bd7f..cee2c1dc24f 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct MapTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index a8d53ffb288..ef916b0d877 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 14656a218e7..6a6ff7664b9 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name starting with number */ internal struct Model200Response: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index f61b75d6533..5e4345bb54a 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name same as property name */ internal struct Name: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index dcae16adea4..0a36afc7855 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct NumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index a2aed66bc25..bb0eb5c601f 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct Order: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 5bd719c715f..3b41213b30f 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct OuterComposite: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift index cb0a71c180c..e947654ad72 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal enum OuterEnum: String, Codable, CaseIterable { case placed = "placed" diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 0d1ec07d3e5..833730ac896 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct Pet: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 46101e49730..d0a73f836f7 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct ReadOnlyFirst: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 144e53c1759..9b2e502be39 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing reserved words */ internal struct Return: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index aa152383444..f77f26ce88c 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct SpecialModelName: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 2b1e5e2cf88..0da1a5ed223 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct StringBooleanMap: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 58215131abe..866911641d0 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct Tag: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index d4f790d97ee..3b3d4c7387a 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct TypeHolderDefault: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index e8b051a4508..2ca47db911d 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct TypeHolderExample: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift index d7ae1249219..4f1504516ba 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif internal struct User: Codable, Hashable { diff --git a/samples/client/petstore/swift5/nonPublicApi/project.yml b/samples/client/petstore/swift5/nonPublicApi/project.yml index 5528eeee513..0493cf65896 100644 --- a/samples/client/petstore/swift5/nonPublicApi/project.yml +++ b/samples/client/petstore/swift5/nonPublicApi/project.yml @@ -11,5 +11,5 @@ targets: settings: APPLICATION_EXTENSION_API_ONLY: true scheme: {} - + dependencies: - carthage: AnyCodable diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 3aef2d1d6c5..11e807937bd 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } @@ -185,6 +187,7 @@ extension HTTPURLResponse { } } +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -224,4 +227,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 3a2ec316678..3b250581cc1 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class AdditionalPropertiesClass: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index c011c374f67..c8bc6f8fd9b 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class Animal: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift index b20b894a1ad..a0b09cb9761 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -6,6 +6,8 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index dd42fa46250..9feb0336458 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class ApiResponse: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index e88fea34550..acab776dfa1 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class ArrayOfArrayOfNumberOnly: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index 010207d5832..d44e23a7567 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class ArrayOfNumberOnly: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 4e93d3ec195..2ed77dba0af 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class ArrayTest: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index 3edcf4aec71..c7c00b23f7c 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class Capitalization: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 7ed4aad879d..9f34145e79f 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class Cat: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index a921ec323a7..32fe1b1e59f 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class CatAllOf: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 448bbbd77fc..fd5f886af43 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class Category: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 3ab43620369..10b0983599d 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model with \"_class\" property */ @objc public class ClassModel: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 1e4e0390c6d..c6f66fc19cb 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class Client: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index d68dadf0697..baaa824e4e1 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class Dog: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 6e674757235..8e4ca318581 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class DogAllOf: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 7d461e9f488..317ec4f8628 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class EnumArrays: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift index ab01cf297f8..6ea2895aee5 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum EnumClass: String, Codable, CaseIterable { case abc = "_abc" diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 4a464b00cf2..39f68239e4d 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class EnumTest: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/File.swift index d3acff746fc..b1f58093b02 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Must be named `File` for test. */ @objc public class File: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 1b4688f9bd7..c766f63637d 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class FileSchemaTestClass: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 45bb30fca6e..70920c84fa8 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class FormatTest: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index b3cd9e7b4c3..f491a19800e 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class HasOnlyReadOnly: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8ea2f8feea7..baad1d10fe0 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class List: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index bb104e8169f..b095210c3f6 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class MapTest: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index 444ca3572e9..d3b66777924 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class MixedPropertiesAndAdditionalPropertiesClass: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 1bdf12817ba..6abc550286b 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name starting with number */ @objc public class Model200Response: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index c5a36141fab..1544a22cda5 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name same as property name */ @objc public class Name: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 2a90178bdb1..9e5280165f9 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class NumberOnly: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 5db1f6b36c6..d04a6cdab99 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class Order: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index fd6674b056d..6521635743e 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class OuterComposite: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift index 9bd6f3bef8f..76c34b3c2ce 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum OuterEnum: String, Codable, CaseIterable { case placed = "placed" diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 192ef69463a..1339931a073 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class Pet: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index ef38f6c6d9c..7d3b2e5c9b3 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class ReadOnlyFirst: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index e1bc6f765ac..aa7cae02016 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing reserved words */ @objc public class Return: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index abafeff9b75..c2ba68d894c 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class SpecialModelName: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index f9cb11c7cc6..f3da87612bc 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class StringBooleanMap: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index e861826bcf9..de3f7c181c4 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class Tag: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 66eaf47b803..4882236d3e1 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class TypeHolderDefault: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index f4aa2c171e5..17dfc262df3 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class TypeHolderExample: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 41aa41aaaff..8b9ef462778 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif @objc public class User: NSObject, Codable { diff --git a/samples/client/petstore/swift5/objcCompatible/project.yml b/samples/client/petstore/swift5/objcCompatible/project.yml index 5528eeee513..0493cf65896 100644 --- a/samples/client/petstore/swift5/objcCompatible/project.yml +++ b/samples/client/petstore/swift5/objcCompatible/project.yml @@ -11,5 +11,5 @@ targets: settings: APPLICATION_EXTENSION_API_ONLY: true scheme: {} - + dependencies: - carthage: AnyCodable diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 78d15ab2990..e03e70ec768 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif import PromiseKit extension Bool: JSONEncodable { @@ -201,6 +203,7 @@ extension RequestBuilder { } } +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -240,4 +243,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 23c4af6d4ff..61a478de142 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index a422ee73b55..157cca1d227 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Animal: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift index b20b894a1ad..a0b09cb9761 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -6,6 +6,8 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 7f7c6a34bdf..8607cbef1a3 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ApiResponse: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 0221229e7dd..f3f161b44c1 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index b5c7ca501e7..d62de957472 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 9074d9ab4aa..360d50d027f 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index f0ca1a76f27..f0781a9cb73 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Capitalization: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 89aaea45b91..d5519760387 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Cat: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index c80f7549e69..8312680deb3 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct CatAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 0def88b1fc8..398da60aa73 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Category: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 90e4986e7f6..03bf63e4cad 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model with \"_class\" property */ public struct ClassModel: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 4e031806901..59604878043 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Client: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 2387b3e7b2c..4ada3ceb605 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Dog: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 4317578cee4..f6c3d287301 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct DogAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 01b8960fe34..0e0aad42abe 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumArrays: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift index ab01cf297f8..6ea2895aee5 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum EnumClass: String, Codable, CaseIterable { case abc = "_abc" diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 9c8e2e9ac84..9e44926be9b 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 2a9c769ca6c..11694b2ca59 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Must be named `File` for test. */ public struct File: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index cd8a9a0e9fe..6aa85d8eecf 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FileSchemaTestClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 11493f7ce28..114c884efc5 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FormatTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index b7a1449830a..cb1a7456a7d 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct HasOnlyReadOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8d484cf0a33..8ecdd3b0233 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct List: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 4b56880fed6..0ff74ed8400 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MapTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index f07f8132af7..58a0a54ca09 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index dc99e8cb8dd..0f59769954f 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name starting with number */ public struct Model200Response: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index d9f893c86ba..d88c94f05c9 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name same as property name */ public struct Name: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 8c1ad5ddd4b..0f05482b9b7 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct NumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index c474a6e657b..100d6b71fed 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Order: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index cdaad279b0f..15a4e4a15b6 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct OuterComposite: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift index 9bd6f3bef8f..76c34b3c2ce 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum OuterEnum: String, Codable, CaseIterable { case placed = "placed" diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index ea9ece39161..a87ab825ea0 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Pet: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index d08a673dbf4..6426deedf63 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ReadOnlyFirst: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index d34dc71ec37..777c241bc0c 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing reserved words */ public struct Return: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index e0e0ea6ae29..b677523a749 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct SpecialModelName: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 8fb1b40e5ee..d3b2bda9b77 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct StringBooleanMap: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 5d90c8a7400..cd5acc827db 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Tag: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index e6e6530dc51..341c9b4b8c2 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderDefault: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 17c811b2edc..04166af0895 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderExample: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index f93cecfc5d0..9f3ded8fcd9 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct User: Codable, Hashable { diff --git a/samples/client/petstore/swift5/promisekitLibrary/project.yml b/samples/client/petstore/swift5/promisekitLibrary/project.yml index 043be1cc387..20bb0a7f6e9 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/project.yml +++ b/samples/client/petstore/swift5/promisekitLibrary/project.yml @@ -12,5 +12,5 @@ targets: APPLICATION_EXTENSION_API_ONLY: true scheme: {} dependencies: - - carthage: PromiseKit - carthage: AnyCodable + - carthage: PromiseKit diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 3aef2d1d6c5..11e807937bd 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } @@ -185,6 +187,7 @@ extension HTTPURLResponse { } } +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -224,4 +227,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index b8a7361ac05..55e1a850f06 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 7acb0151257..3fded4244c3 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Animal: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift index b20b894a1ad..a0b09cb9761 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -6,6 +6,8 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 1c9f0e12f41..1522485099c 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ApiResponse: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 4c439515c83..d754b57dd07 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index e882a622576..261f521a2e3 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 0e6db13a292..e68cd879f6c 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index 5993241ce32..d449c5890d1 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Capitalization: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index d1526a8ac3a..3ddf9bee2fd 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Cat: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 1e2fbc1a2bf..40685ac1a16 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct CatAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 73d137b704b..da9e51d2a51 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Category: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 823b48cad60..c6984e27050 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model with \"_class\" property */ public struct ClassModel: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 7ff9f1e47f1..a08ef9f5ba4 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Client: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 423eb7a58ef..efe8988d381 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Dog: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index ad9761aba9a..1d1f8ca7db9 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct DogAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index e413cc97d43..d8e15faf3a3 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumArrays: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift index ab01cf297f8..6ea2895aee5 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum EnumClass: String, Codable, CaseIterable { case abc = "_abc" diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 5ea4ff0cf5b..ca412e06fe1 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 48b1211fe02..1c9a0f33ee8 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Must be named `File` for test. */ public struct File: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index ad421491c9b..50304fe594a 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FileSchemaTestClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 0e262943f6d..bf2d4131948 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FormatTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index f89b0bac8eb..ee6bd8280bd 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct HasOnlyReadOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 97e9eb6c9a0..41a0eacd2ac 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct List: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index e3b9164f463..27e27b36d0f 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MapTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index 1156ca42155..306c8adeaa3 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 511011c84a1..233fa7656ab 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name starting with number */ public struct Model200Response: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index 10c59ae2a62..c1fda99c0c7 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name same as property name */ public struct Name: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 767a52c5b44..5526fc2fbf2 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct NumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 359def85db8..c79bc3f02d3 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Order: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 3f36b653aac..c69f16e2a88 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct OuterComposite: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift index 9bd6f3bef8f..76c34b3c2ce 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum OuterEnum: String, Codable, CaseIterable { case placed = "placed" diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 7fa54eaef81..46f5919b6b7 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Pet: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 24c117a4876..249d7691c21 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ReadOnlyFirst: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 47e57b215c5..23e8e52f6e5 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing reserved words */ public struct Return: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index ab93560e778..8a12be510ab 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct SpecialModelName: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 3b304716da4..37ff29a7315 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct StringBooleanMap: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index ff5e4bbaf36..e3d44bf635f 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Tag: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 22e7d001936..575466ee7d5 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderDefault: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index d03f41b1d95..ba22b15d848 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderExample: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 21532c7023b..33cb2a06044 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct User: Codable, Hashable { diff --git a/samples/client/petstore/swift5/readonlyProperties/project.yml b/samples/client/petstore/swift5/readonlyProperties/project.yml index 5528eeee513..0493cf65896 100644 --- a/samples/client/petstore/swift5/readonlyProperties/project.yml +++ b/samples/client/petstore/swift5/readonlyProperties/project.yml @@ -11,5 +11,5 @@ targets: settings: APPLICATION_EXTENSION_API_ONLY: true scheme: {} - + dependencies: - carthage: AnyCodable diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 3aef2d1d6c5..11e807937bd 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } @@ -185,6 +187,7 @@ extension HTTPURLResponse { } } +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -224,4 +227,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 23c4af6d4ff..61a478de142 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index a422ee73b55..157cca1d227 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Animal: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift index b20b894a1ad..a0b09cb9761 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -6,6 +6,8 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 7f7c6a34bdf..8607cbef1a3 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ApiResponse: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 0221229e7dd..f3f161b44c1 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index b5c7ca501e7..d62de957472 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 9074d9ab4aa..360d50d027f 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index f0ca1a76f27..f0781a9cb73 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Capitalization: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 89aaea45b91..d5519760387 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Cat: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index c80f7549e69..8312680deb3 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct CatAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 0def88b1fc8..398da60aa73 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Category: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 90e4986e7f6..03bf63e4cad 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model with \"_class\" property */ public struct ClassModel: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 4e031806901..59604878043 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Client: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 2387b3e7b2c..4ada3ceb605 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Dog: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 4317578cee4..f6c3d287301 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct DogAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 01b8960fe34..0e0aad42abe 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumArrays: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift index ab01cf297f8..6ea2895aee5 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum EnumClass: String, Codable, CaseIterable { case abc = "_abc" diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 9c8e2e9ac84..9e44926be9b 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 2a9c769ca6c..11694b2ca59 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Must be named `File` for test. */ public struct File: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index cd8a9a0e9fe..6aa85d8eecf 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FileSchemaTestClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 11493f7ce28..114c884efc5 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FormatTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index b7a1449830a..cb1a7456a7d 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct HasOnlyReadOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8d484cf0a33..8ecdd3b0233 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct List: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 4b56880fed6..0ff74ed8400 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MapTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index f07f8132af7..58a0a54ca09 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index dc99e8cb8dd..0f59769954f 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name starting with number */ public struct Model200Response: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index d9f893c86ba..d88c94f05c9 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name same as property name */ public struct Name: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 8c1ad5ddd4b..0f05482b9b7 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct NumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index c474a6e657b..100d6b71fed 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Order: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index cdaad279b0f..15a4e4a15b6 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct OuterComposite: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift index 9bd6f3bef8f..76c34b3c2ce 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum OuterEnum: String, Codable, CaseIterable { case placed = "placed" diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index ea9ece39161..a87ab825ea0 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Pet: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index d08a673dbf4..6426deedf63 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ReadOnlyFirst: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index d34dc71ec37..777c241bc0c 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing reserved words */ public struct Return: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index e0e0ea6ae29..b677523a749 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct SpecialModelName: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 8fb1b40e5ee..d3b2bda9b77 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct StringBooleanMap: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 5d90c8a7400..cd5acc827db 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Tag: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index e6e6530dc51..341c9b4b8c2 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderDefault: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 17c811b2edc..04166af0895 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderExample: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index f93cecfc5d0..9f3ded8fcd9 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct User: Codable, Hashable { diff --git a/samples/client/petstore/swift5/resultLibrary/project.yml b/samples/client/petstore/swift5/resultLibrary/project.yml index 5528eeee513..0493cf65896 100644 --- a/samples/client/petstore/swift5/resultLibrary/project.yml +++ b/samples/client/petstore/swift5/resultLibrary/project.yml @@ -11,5 +11,5 @@ targets: settings: APPLICATION_EXTENSION_API_ONLY: true scheme: {} - + dependencies: - carthage: AnyCodable diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 7c712846fbd..71e752b2e9f 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } @@ -99,6 +101,7 @@ extension HTTPURLResponse { } } +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -138,4 +141,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 23c4af6d4ff..61a478de142 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index a422ee73b55..157cca1d227 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Animal: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift index b20b894a1ad..a0b09cb9761 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -6,6 +6,8 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 7f7c6a34bdf..8607cbef1a3 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ApiResponse: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 0221229e7dd..f3f161b44c1 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index b5c7ca501e7..d62de957472 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 9074d9ab4aa..360d50d027f 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index f0ca1a76f27..f0781a9cb73 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Capitalization: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 89aaea45b91..d5519760387 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Cat: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index c80f7549e69..8312680deb3 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct CatAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 0def88b1fc8..398da60aa73 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Category: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index b83341aa308..761eb4f866e 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model with \"_class\" property */ public struct ClassModel: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 4e031806901..59604878043 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Client: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 2387b3e7b2c..4ada3ceb605 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Dog: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 4317578cee4..f6c3d287301 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct DogAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 01b8960fe34..0e0aad42abe 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumArrays: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift index ab01cf297f8..6ea2895aee5 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum EnumClass: String, Codable, CaseIterable { case abc = "_abc" diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 9c8e2e9ac84..9e44926be9b 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 2a9c769ca6c..11694b2ca59 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Must be named `File` for test. */ public struct File: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index cd8a9a0e9fe..6aa85d8eecf 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FileSchemaTestClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 11493f7ce28..114c884efc5 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FormatTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index b7a1449830a..cb1a7456a7d 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct HasOnlyReadOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8d484cf0a33..8ecdd3b0233 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct List: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 4b56880fed6..0ff74ed8400 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MapTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index f07f8132af7..58a0a54ca09 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 73afe1ea458..e5906f84436 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name starting with number */ public struct Model200Response: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index d9f893c86ba..d88c94f05c9 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name same as property name */ public struct Name: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 8c1ad5ddd4b..0f05482b9b7 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct NumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index c474a6e657b..100d6b71fed 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Order: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index cdaad279b0f..15a4e4a15b6 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct OuterComposite: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift index 9bd6f3bef8f..76c34b3c2ce 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum OuterEnum: String, Codable, CaseIterable { case placed = "placed" diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index ea9ece39161..a87ab825ea0 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Pet: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index d08a673dbf4..6426deedf63 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ReadOnlyFirst: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 99ff0ddad82..268ce3bfee0 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing reserved words */ public struct Return: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index e0e0ea6ae29..b677523a749 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct SpecialModelName: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index d6d89678adc..eb3882d7c2a 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct StringBooleanMap: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 5d90c8a7400..cd5acc827db 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Tag: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index e6e6530dc51..341c9b4b8c2 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderDefault: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 17c811b2edc..04166af0895 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderExample: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index f93cecfc5d0..9f3ded8fcd9 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct User: Codable, Hashable { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/project.yml b/samples/client/petstore/swift5/rxswiftLibrary/project.yml index 7f6334fda43..5471ac0bc64 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/project.yml +++ b/samples/client/petstore/swift5/rxswiftLibrary/project.yml @@ -12,5 +12,5 @@ targets: APPLICATION_EXTENSION_API_ONLY: true scheme: {} dependencies: - - carthage: RxSwift - carthage: AnyCodable + - carthage: RxSwift diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Extensions.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Extensions.swift index 3aef2d1d6c5..11e807937bd 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Extensions.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Extensions.swift @@ -5,7 +5,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } @@ -185,6 +187,7 @@ extension HTTPURLResponse { } } +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -224,4 +227,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift index 2898823a529..9363f25a029 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class AdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift index 927e6d2865b..9a953b845ba 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class Animal: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AnimalFarm.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AnimalFarm.swift index b20b894a1ad..a0b09cb9761 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AnimalFarm.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AnimalFarm.swift @@ -6,6 +6,8 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift index 77172181cc9..b0e3bad14a1 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class ApiResponse: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift index 090ffe3b17d..f0a8b45f20d 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class ArrayOfArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift index aa63577f84b..08cd7166864 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class ArrayOfNumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift index a51a38c8afe..c69cc3c6327 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class ArrayTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift index e7bad1f3da7..cc5eeba963b 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class Capitalization: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift index b22d8572b93..cbcdf143b87 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class Cat: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift index 5b374b752ce..4b4f862fe10 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class CatAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift index e5128f8b096..3a88c62a05f 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class Category: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift index 211f3f1a233..fee2cec87bf 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model with \"_class\" property */ public final class ClassModel: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift index 73ac3e22575..b9c0857371d 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class Client: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift index cee84354a05..022fddbb1fb 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class Dog: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift index a4d610050ff..40f0a1291be 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class DogAllOf: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift index 2348f0f01b1..e8a756e0ab3 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class EnumArrays: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumClass.swift index ab01cf297f8..6ea2895aee5 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum EnumClass: String, Codable, CaseIterable { case abc = "_abc" diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift index d7502d65c1c..fdb508f216d 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class EnumTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift index 439997188be..a8e0dfdebbb 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Must be named `File` for test. */ public final class File: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift index 136b2106145..c3de2775a3a 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class FileSchemaTestClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift index a4e2bf9a8ea..0ae5bd7d8a2 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class FormatTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift index 701101b66f7..7093d3cedf0 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class HasOnlyReadOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift index 08a9b37f367..cf232a2e300 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class List: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift index f89f3bea22f..5c42a4be48f 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class MapTest: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index b7d4981c4ae..faeff27eb6b 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift index 6231c764daa..c254a7530aa 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name starting with number */ public final class Model200Response: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift index ab883e7ce64..ce7ac369e33 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name same as property name */ public final class Name: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift index 0abdc58b2b5..07273896204 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class NumberOnly: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift index c4c4a3dd9ef..623c7b839c4 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class Order: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift index d16b840bec6..509f13dc3db 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class OuterComposite: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterEnum.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterEnum.swift index 9bd6f3bef8f..76c34b3c2ce 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterEnum.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterEnum.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum OuterEnum: String, Codable, CaseIterable { case placed = "placed" diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift index 15490bba714..c1bf287a8f3 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class Pet: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift index 8c66afb096a..8e82bd882d0 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class ReadOnlyFirst: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift index 273fac1a3e3..4221455581b 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing reserved words */ public final class Return: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift index de2a54506e7..6e632eb17e7 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class SpecialModelName: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift index 946c1b11a33..305ce505696 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class StringBooleanMap: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift index edf15aa3196..7b44db42539 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class Tag: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift index 7da67c016eb..30c51f43aea 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class TypeHolderDefault: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift index 4822336dccc..4c49c40554a 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class TypeHolderExample: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift index ccb1efefbd3..984e8bfc66c 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public final class User: Codable, Hashable { diff --git a/samples/client/petstore/swift5/urlsessionLibrary/project.yml b/samples/client/petstore/swift5/urlsessionLibrary/project.yml index 8280cd17d31..af642519aeb 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/project.yml +++ b/samples/client/petstore/swift5/urlsessionLibrary/project.yml @@ -11,5 +11,5 @@ targets: settings: APPLICATION_EXTENSION_API_ONLY: true scheme: {} - + dependencies: - carthage: AnyCodable From 0a34839567c92eb500568907954afbb1b821e70f Mon Sep 17 00:00:00 2001 From: Makoto Aoyama Date: Fri, 21 May 2021 00:04:19 +0900 Subject: [PATCH 020/192] Add hashableModels to additional properties (#9495) * Add hashableStruct * Revert "Remove x-swift-hashable" This reverts commit 18053af0016fdba13fd1e5df00ad86abee071283. * Add Hashable for x-swift-hashable * Add config yaml to test x-swift-hashable * Run ./bin/generate-samples.sh ./bin/configs/swift5* * Run ./bin/utils/export_docs_generators.sh * Run ./bin/generate-samples.sh ./bin/configs/swift5* * Verify setHashableStruct * Rename hashableStruct => hashableModels - Replace hashableStruct => hashableModels - Replace HashableStruct => HashableModels - Replace HASHABLE_STRUCT => HASHABLE_MODELS - Update docs * Refactor modelObject.mustache * Control equals and hash functions --- bin/configs/swift5-x-swift-hashable.yaml | 11 + docs/generators/swift5.md | 1 + .../languages/Swift5ClientCodegen.java | 19 +- .../resources/swift5/modelObject.mustache | 6 +- .../options/Swift5OptionsProvider.java | 2 + .../codegen/swift5/Swift5OptionsTest.java | 1 + ...ith-fake-endpoints-models-for-testing.yaml | 1 + .../swift5/x-swift-hashable/.gitignore | 63 ++ .../.openapi-generator-ignore | 23 + .../x-swift-hashable/.openapi-generator/FILES | 110 +++ .../.openapi-generator/VERSION | 1 + .../contents.xcworkspacedata | 7 + .../petstore/swift5/x-swift-hashable/Cartfile | 2 + .../swift5/x-swift-hashable/Package.resolved | 16 + .../swift5/x-swift-hashable/Package.swift | 33 + .../x-swift-hashable/PetstoreClient.podspec | 15 + .../Classes/OpenAPIs/APIHelper.swift | 71 ++ .../Classes/OpenAPIs/APIs.swift | 62 ++ .../OpenAPIs/APIs/AnotherFakeAPI.swift | 54 ++ .../Classes/OpenAPIs/APIs/FakeAPI.swift | 684 ++++++++++++++++++ .../APIs/FakeClassnameTags123API.swift | 57 ++ .../Classes/OpenAPIs/APIs/PetAPI.swift | 483 +++++++++++++ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 189 +++++ .../Classes/OpenAPIs/APIs/UserAPI.swift | 366 ++++++++++ .../Classes/OpenAPIs/CodableHelper.swift | 49 ++ .../Classes/OpenAPIs/Configuration.swift | 14 + .../Classes/OpenAPIs/Extensions.swift | 227 ++++++ .../Classes/OpenAPIs/JSONDataEncoding.swift | 53 ++ .../Classes/OpenAPIs/JSONEncodingHelper.swift | 45 ++ .../Classes/OpenAPIs/Models.swift | 54 ++ .../Models/AdditionalPropertiesAnyType.swift | 57 ++ .../Models/AdditionalPropertiesArray.swift | 57 ++ .../Models/AdditionalPropertiesBoolean.swift | 57 ++ .../Models/AdditionalPropertiesClass.swift | 33 + .../Models/AdditionalPropertiesInteger.swift | 57 ++ .../Models/AdditionalPropertiesNumber.swift | 57 ++ .../Models/AdditionalPropertiesObject.swift | 57 ++ .../Models/AdditionalPropertiesString.swift | 57 ++ .../Classes/OpenAPIs/Models/Animal.swift | 33 + .../Classes/OpenAPIs/Models/AnimalFarm.swift | 11 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 37 + .../Models/ArrayOfArrayOfNumberOnly.swift | 29 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 29 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 37 + .../Classes/OpenAPIs/Models/BigCat.swift | 37 + .../Classes/OpenAPIs/Models/BigCatAllOf.swift | 37 + .../OpenAPIs/Models/Capitalization.swift | 50 ++ .../Classes/OpenAPIs/Models/Cat.swift | 37 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 29 + .../Classes/OpenAPIs/Models/Category.swift | 33 + .../Classes/OpenAPIs/Models/ClassModel.swift | 30 + .../Classes/OpenAPIs/Models/Client.swift | 29 + .../Classes/OpenAPIs/Models/Dog.swift | 37 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 29 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 41 ++ .../Classes/OpenAPIs/Models/EnumClass.swift | 15 + .../Classes/OpenAPIs/Models/EnumTest.swift | 63 ++ .../Classes/OpenAPIs/Models/File.swift | 31 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 33 + .../Classes/OpenAPIs/Models/FormatTest.swift | 77 ++ .../OpenAPIs/Models/HasOnlyReadOnly.swift | 33 + .../Classes/OpenAPIs/Models/List.swift | 29 + .../Classes/OpenAPIs/Models/MapTest.swift | 45 ++ ...opertiesAndAdditionalPropertiesClass.swift | 37 + .../OpenAPIs/Models/Model200Response.swift | 34 + .../Classes/OpenAPIs/Models/Name.swift | 42 ++ .../Classes/OpenAPIs/Models/NumberOnly.swift | 29 + .../Classes/OpenAPIs/Models/Order.swift | 55 ++ .../OpenAPIs/Models/OuterComposite.swift | 37 + .../Classes/OpenAPIs/Models/OuterEnum.swift | 15 + .../Classes/OpenAPIs/Models/Pet.swift | 55 ++ .../OpenAPIs/Models/ReadOnlyFirst.swift | 33 + .../Classes/OpenAPIs/Models/Return.swift | 30 + .../OpenAPIs/Models/SpecialModelName.swift | 29 + .../OpenAPIs/Models/StringBooleanMap.swift | 48 ++ .../Classes/OpenAPIs/Models/Tag.swift | 33 + .../OpenAPIs/Models/TypeHolderDefault.swift | 45 ++ .../OpenAPIs/Models/TypeHolderExample.swift | 45 ++ .../Classes/OpenAPIs/Models/User.swift | 58 ++ .../Classes/OpenAPIs/Models/XmlItem.swift | 143 ++++ .../OpenAPIs/OpenISO8601DateFormatter.swift | 44 ++ .../OpenAPIs/SynchronizedDictionary.swift | 36 + .../OpenAPIs/URLSessionImplementations.swift | 606 ++++++++++++++++ .../swift5/x-swift-hashable/README.md | 141 ++++ .../docs/AdditionalPropertiesAnyType.md | 10 + .../docs/AdditionalPropertiesArray.md | 10 + .../docs/AdditionalPropertiesBoolean.md | 10 + .../docs/AdditionalPropertiesClass.md | 11 + .../docs/AdditionalPropertiesInteger.md | 10 + .../docs/AdditionalPropertiesNumber.md | 10 + .../docs/AdditionalPropertiesObject.md | 10 + .../docs/AdditionalPropertiesString.md | 10 + .../swift5/x-swift-hashable/docs/Animal.md | 11 + .../x-swift-hashable/docs/AnimalFarm.md | 9 + .../x-swift-hashable/docs/AnotherFakeAPI.md | 59 ++ .../x-swift-hashable/docs/ApiResponse.md | 12 + .../docs/ArrayOfArrayOfNumberOnly.md | 10 + .../docs/ArrayOfNumberOnly.md | 10 + .../swift5/x-swift-hashable/docs/ArrayTest.md | 12 + .../swift5/x-swift-hashable/docs/BigCat.md | 10 + .../x-swift-hashable/docs/BigCatAllOf.md | 10 + .../x-swift-hashable/docs/Capitalization.md | 15 + .../swift5/x-swift-hashable/docs/Cat.md | 10 + .../swift5/x-swift-hashable/docs/CatAllOf.md | 10 + .../swift5/x-swift-hashable/docs/Category.md | 11 + .../x-swift-hashable/docs/ClassModel.md | 10 + .../swift5/x-swift-hashable/docs/Client.md | 10 + .../swift5/x-swift-hashable/docs/Dog.md | 10 + .../swift5/x-swift-hashable/docs/DogAllOf.md | 10 + .../x-swift-hashable/docs/EnumArrays.md | 11 + .../swift5/x-swift-hashable/docs/EnumClass.md | 9 + .../swift5/x-swift-hashable/docs/EnumTest.md | 14 + .../swift5/x-swift-hashable/docs/FakeAPI.md | 662 +++++++++++++++++ .../docs/FakeClassnameTags123API.md | 59 ++ .../swift5/x-swift-hashable/docs/File.md | 10 + .../docs/FileSchemaTestClass.md | 11 + .../x-swift-hashable/docs/FormatTest.md | 22 + .../x-swift-hashable/docs/HasOnlyReadOnly.md | 11 + .../swift5/x-swift-hashable/docs/List.md | 10 + .../swift5/x-swift-hashable/docs/MapTest.md | 13 + ...dPropertiesAndAdditionalPropertiesClass.md | 12 + .../x-swift-hashable/docs/Model200Response.md | 11 + .../swift5/x-swift-hashable/docs/Name.md | 13 + .../x-swift-hashable/docs/NumberOnly.md | 10 + .../swift5/x-swift-hashable/docs/Order.md | 15 + .../x-swift-hashable/docs/OuterComposite.md | 12 + .../swift5/x-swift-hashable/docs/OuterEnum.md | 9 + .../swift5/x-swift-hashable/docs/Pet.md | 15 + .../swift5/x-swift-hashable/docs/PetAPI.md | 469 ++++++++++++ .../x-swift-hashable/docs/ReadOnlyFirst.md | 11 + .../swift5/x-swift-hashable/docs/Return.md | 10 + .../x-swift-hashable/docs/SpecialModelName.md | 10 + .../swift5/x-swift-hashable/docs/StoreAPI.md | 206 ++++++ .../x-swift-hashable/docs/StringBooleanMap.md | 9 + .../swift5/x-swift-hashable/docs/Tag.md | 11 + .../docs/TypeHolderDefault.md | 14 + .../docs/TypeHolderExample.md | 14 + .../swift5/x-swift-hashable/docs/User.md | 17 + .../swift5/x-swift-hashable/docs/UserAPI.md | 406 +++++++++++ .../swift5/x-swift-hashable/docs/XmlItem.md | 38 + .../swift5/x-swift-hashable/git_push.sh | 58 ++ .../swift5/x-swift-hashable/project.yml | 15 + 142 files changed, 8160 insertions(+), 4 deletions(-) create mode 100644 bin/configs/swift5-x-swift-hashable.yaml create mode 100644 samples/client/petstore/swift5/x-swift-hashable/.gitignore create mode 100644 samples/client/petstore/swift5/x-swift-hashable/.openapi-generator-ignore create mode 100644 samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/FILES create mode 100644 samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION create mode 100644 samples/client/petstore/swift5/x-swift-hashable/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata create mode 100644 samples/client/petstore/swift5/x-swift-hashable/Cartfile create mode 100644 samples/client/petstore/swift5/x-swift-hashable/Package.resolved create mode 100644 samples/client/petstore/swift5/x-swift-hashable/Package.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient.podspec create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIHelper.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Configuration.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Extensions.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/JSONDataEncoding.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Category.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Client.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/File.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/List.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Name.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Order.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Return.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/User.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/OpenISO8601DateFormatter.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/SynchronizedDictionary.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift create mode 100644 samples/client/petstore/swift5/x-swift-hashable/README.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesAnyType.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesArray.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesBoolean.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesClass.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesInteger.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesNumber.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesObject.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesString.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/Animal.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/AnimalFarm.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/AnotherFakeAPI.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/ApiResponse.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/ArrayOfArrayOfNumberOnly.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/ArrayOfNumberOnly.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/ArrayTest.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/BigCat.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/BigCatAllOf.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/Capitalization.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/Cat.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/CatAllOf.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/Category.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/ClassModel.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/Client.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/Dog.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/DogAllOf.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/EnumArrays.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/EnumClass.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/EnumTest.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/FakeAPI.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/FakeClassnameTags123API.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/File.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/FileSchemaTestClass.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/FormatTest.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/HasOnlyReadOnly.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/List.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/MapTest.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/MixedPropertiesAndAdditionalPropertiesClass.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/Model200Response.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/Name.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/NumberOnly.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/Order.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/OuterComposite.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/OuterEnum.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/Pet.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/PetAPI.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/ReadOnlyFirst.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/Return.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/SpecialModelName.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/StoreAPI.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/StringBooleanMap.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/Tag.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/TypeHolderDefault.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/TypeHolderExample.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/User.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/UserAPI.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/docs/XmlItem.md create mode 100644 samples/client/petstore/swift5/x-swift-hashable/git_push.sh create mode 100644 samples/client/petstore/swift5/x-swift-hashable/project.yml diff --git a/bin/configs/swift5-x-swift-hashable.yaml b/bin/configs/swift5-x-swift-hashable.yaml new file mode 100644 index 00000000000..c07937d5336 --- /dev/null +++ b/bin/configs/swift5-x-swift-hashable.yaml @@ -0,0 +1,11 @@ +generatorName: swift5 +outputDir: samples/client/petstore/swift5/x-swift-hashable +inputSpec: modules/openapi-generator/src/test/resources/2_0/swift/petstore-with-fake-endpoints-models-for-testing.yaml +templateDir: modules/openapi-generator/src/main/resources/swift5 +generateAliasAsModel: true +additionalProperties: + podAuthors: "" + podSummary: PetstoreClient + projectName: PetstoreClient + podHomepage: https://github.com/openapitools/openapi-generator + hashableModels: false diff --git a/docs/generators/swift5.md b/docs/generators/swift5.md index eb9bb6c3d71..47f0318e839 100644 --- a/docs/generators/swift5.md +++ b/docs/generators/swift5.md @@ -12,6 +12,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
    **false**
    The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
    **true**
    Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
    |true| |ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true| |generateModelAdditionalProperties|Generate model additional properties (default: true)| |true| +|hashableModels|Make hashable models (default: true)| |true| |hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true| |legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|
    **true**
    The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
    **false**
    The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
    |true| |lenientTypeCast|Accept and cast values for simple types (string->bool, string->int, int->string)| |false| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index a4ab7ecec20..e1932f31350 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -65,6 +65,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig public static final String SWIFT_PACKAGE_PATH = "swiftPackagePath"; public static final String USE_BACKTICK_ESCAPES = "useBacktickEscapes"; public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES = "generateModelAdditionalProperties"; + public static final String HASHABLE_MODELS = "hashableModels"; protected static final String LIBRARY_ALAMOFIRE = "alamofire"; protected static final String LIBRARY_URLSESSION = "urlsession"; protected static final String RESPONSE_LIBRARY_PROMISE_KIT = "PromiseKit"; @@ -82,6 +83,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig protected String swiftPackagePath = "Classes" + File.separator + "OpenAPIs"; protected boolean useBacktickEscapes = false; protected boolean generateModelAdditionalProperties = true; + protected boolean hashableModels = true; protected String[] responseAs = new String[0]; protected String sourceFolder = swiftPackagePath; protected HashSet objcReservedWords; @@ -279,6 +281,10 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig cliOptions.add(new CliOption(SWIFT_PACKAGE_PATH, "Set a custom source path instead of " + projectName + File.separator + "Classes" + File.separator + "OpenAPIs" + ".")); + cliOptions.add(new CliOption(HASHABLE_MODELS, + "Make hashable models (default: true)") + .defaultValue(Boolean.TRUE.toString())); + supportedLibraries.put(LIBRARY_URLSESSION, "[DEFAULT] HTTP client: URLSession"); supportedLibraries.put(LIBRARY_ALAMOFIRE, "HTTP client: Alamofire"); @@ -458,6 +464,11 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig } additionalProperties.put(GENERATE_MODEL_ADDITIONAL_PROPERTIES, generateModelAdditionalProperties); + if (additionalProperties.containsKey(HASHABLE_MODELS)) { + setHashableModels(convertPropertyToBooleanAndWriteBack(HASHABLE_MODELS)); + } + additionalProperties.put(HASHABLE_MODELS, hashableModels); + setLenientTypeCast(convertPropertyToBooleanAndWriteBack(LENIENT_TYPE_CAST)); // make api and model doc path available in mustache template @@ -828,7 +839,9 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig parentSchema = parentCodegenModel.parentSchema; } } - + if (hashableModels) { + codegenModel.vendorExtensions.put("x-swift-hashable", true); + } return codegenModel; } @@ -876,6 +889,10 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig this.generateModelAdditionalProperties = generateModelAdditionalProperties; } + public void setHashableModels(boolean hashableModels) { + this.hashableModels = hashableModels; + } + @Override public String toEnumValue(String value, String datatype) { // for string, array of string diff --git a/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache b/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache index bc6f9c64e70..336ee3467c8 100644 --- a/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache @@ -1,4 +1,4 @@ -{{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#useClasses}}final class{{/useClasses}}{{^useClasses}}struct{{/useClasses}} {{classname}}: Codable, Hashable { +{{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#useClasses}}final class{{/useClasses}}{{^useClasses}}struct{{/useClasses}} {{classname}}: Codable{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} { {{/objcCompatible}}{{#objcCompatible}}@objc {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable { {{/objcCompatible}} @@ -86,7 +86,7 @@ nonAdditionalPropertyKeys.insert("{{{baseName}}}") {{/allVars}} additionalProperties = try container.decodeMap({{{additionalPropertiesType}}}.self, excludedKeys: nonAdditionalPropertyKeys) - }{{/additionalPropertiesType}}{{/generateModelAdditionalProperties}}{{^objcCompatible}}{{#useClasses}} + }{{/additionalPropertiesType}}{{/generateModelAdditionalProperties}}{{^objcCompatible}}{{#useClasses}}{{#vendorExtensions.x-swift-hashable}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func == (lhs: {{classname}}, rhs: {{classname}}) -> Bool { {{#allVars}} @@ -100,5 +100,5 @@ hasher.combine({{{name}}}{{^required}}?{{/required}}.hashValue) {{/allVars}} {{#generateModelAdditionalProperties}}{{#additionalPropertiesType}}hasher.combine(additionalProperties.hashValue){{/additionalPropertiesType}}{{/generateModelAdditionalProperties}} - }{{/useClasses}}{{/objcCompatible}} + }{{/vendorExtensions.x-swift-hashable}}{{/useClasses}}{{/objcCompatible}} } \ No newline at end of file diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java index 5ed11f1036c..979da734eac 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java @@ -48,6 +48,7 @@ public class Swift5OptionsProvider implements OptionsProvider { public static final String SWIFT_USE_API_NAMESPACE_VALUE = "swiftUseApiNamespace"; public static final String USE_BACKTICKS_ESCAPES_VALUE = "false"; public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE = "true"; + public static final String HASHABLE_MODELS_VALUE = "true"; public static final String ALLOW_UNICODE_IDENTIFIERS_VALUE = "false"; public static final String PREPEND_FORM_OR_BODY_PARAMETERS_VALUE = "true"; public static final String LIBRARY_VALUE = "alamofire"; @@ -93,6 +94,7 @@ public class Swift5OptionsProvider implements OptionsProvider { .put(Swift5ClientCodegen.USE_SPM_FILE_STRUCTURE, USE_SPM_FILE_STRUCTURE_VALUE) .put(Swift5ClientCodegen.SWIFT_PACKAGE_PATH, SWIFT_PACKAGE_PATH_VALUE) .put(Swift5ClientCodegen.GENERATE_MODEL_ADDITIONAL_PROPERTIES, GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE) + .put(Swift5ClientCodegen.HASHABLE_MODELS, HASHABLE_MODELS_VALUE) .build(); } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5OptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5OptionsTest.java index ca237bb7daf..268d52bed28 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5OptionsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5OptionsTest.java @@ -49,5 +49,6 @@ public class Swift5OptionsTest extends AbstractOptionsTest { verify(clientCodegen).setPrependFormOrBodyParameters(Boolean.valueOf(Swift5OptionsProvider.PREPEND_FORM_OR_BODY_PARAMETERS_VALUE)); verify(clientCodegen).setReadonlyProperties(Boolean.parseBoolean(Swift5OptionsProvider.READONLY_PROPERTIES_VALUE)); verify(clientCodegen).setGenerateModelAdditionalProperties(Boolean.parseBoolean(Swift5OptionsProvider.GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE)); + verify(clientCodegen).setHashableModels(Boolean.parseBoolean(Swift5OptionsProvider.HASHABLE_MODELS_VALUE)); } } diff --git a/modules/openapi-generator/src/test/resources/2_0/swift/petstore-with-fake-endpoints-models-for-testing.yaml b/modules/openapi-generator/src/test/resources/2_0/swift/petstore-with-fake-endpoints-models-for-testing.yaml index 38797a5bf10..6fa25c30218 100644 --- a/modules/openapi-generator/src/test/resources/2_0/swift/petstore-with-fake-endpoints-models-for-testing.yaml +++ b/modules/openapi-generator/src/test/resources/2_0/swift/petstore-with-fake-endpoints-models-for-testing.yaml @@ -1086,6 +1086,7 @@ definitions: xml: name: Order Category: + x-swift-hashable: true type: object required: - name diff --git a/samples/client/petstore/swift5/x-swift-hashable/.gitignore b/samples/client/petstore/swift5/x-swift-hashable/.gitignore new file mode 100644 index 00000000000..5e5d5cebcf4 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/.gitignore @@ -0,0 +1,63 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated +build/ +DerivedData + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata + +## Other +*.xccheckout +*.moved-aside +*.xcuserstate +*.xcscmblueprint + +## Obj-C/Swift specific +*.hmap +*.ipa + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md + +fastlane/report.xml +fastlane/screenshots diff --git a/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator-ignore b/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/FILES b/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/FILES new file mode 100644 index 00000000000..c81943baf2a --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/FILES @@ -0,0 +1,110 @@ +.gitignore +Cartfile +Package.swift +PetstoreClient.podspec +PetstoreClient/Classes/OpenAPIs/APIHelper.swift +PetstoreClient/Classes/OpenAPIs/APIs.swift +PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +PetstoreClient/Classes/OpenAPIs/CodableHelper.swift +PetstoreClient/Classes/OpenAPIs/Configuration.swift +PetstoreClient/Classes/OpenAPIs/Extensions.swift +PetstoreClient/Classes/OpenAPIs/JSONDataEncoding.swift +PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift +PetstoreClient/Classes/OpenAPIs/Models.swift +PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift +PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +PetstoreClient/Classes/OpenAPIs/Models/Category.swift +PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +PetstoreClient/Classes/OpenAPIs/Models/Client.swift +PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift +PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +PetstoreClient/Classes/OpenAPIs/Models/File.swift +PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +PetstoreClient/Classes/OpenAPIs/Models/List.swift +PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +PetstoreClient/Classes/OpenAPIs/Models/Name.swift +PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +PetstoreClient/Classes/OpenAPIs/Models/Order.swift +PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift +PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +PetstoreClient/Classes/OpenAPIs/Models/Return.swift +PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +PetstoreClient/Classes/OpenAPIs/Models/User.swift +PetstoreClient/Classes/OpenAPIs/OpenISO8601DateFormatter.swift +PetstoreClient/Classes/OpenAPIs/SynchronizedDictionary.swift +PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +README.md +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnimalFarm.md +docs/AnotherFakeAPI.md +docs/ApiResponse.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ClassModel.md +docs/Client.md +docs/Dog.md +docs/DogAllOf.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/FakeAPI.md +docs/FakeClassnameTags123API.md +docs/File.md +docs/FileSchemaTestClass.md +docs/FormatTest.md +docs/HasOnlyReadOnly.md +docs/List.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/Name.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/Pet.md +docs/PetAPI.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/SpecialModelName.md +docs/StoreAPI.md +docs/StringBooleanMap.md +docs/Tag.md +docs/TypeHolderDefault.md +docs/TypeHolderExample.md +docs/User.md +docs/UserAPI.md +git_push.sh +project.yml diff --git a/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION b/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION new file mode 100644 index 00000000000..6555596f931 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/x-swift-hashable/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift5/x-swift-hashable/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/Cartfile b/samples/client/petstore/swift5/x-swift-hashable/Cartfile new file mode 100644 index 00000000000..84aaa61ef2d --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/Cartfile @@ -0,0 +1,2 @@ + +github "Flight-School/AnyCodable" ~> 0.4.0 diff --git a/samples/client/petstore/swift5/x-swift-hashable/Package.resolved b/samples/client/petstore/swift5/x-swift-hashable/Package.resolved new file mode 100644 index 00000000000..85bb93ced12 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "38b05fc9f86501ef8018aa90cf3d83bd97f74067", + "version": "0.4.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/Package.swift b/samples/client/petstore/swift5/x-swift-hashable/Package.swift new file mode 100644 index 00000000000..b724838fe8d --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/Package.swift @@ -0,0 +1,33 @@ +// swift-tools-version:5.1 + +import PackageDescription + +let package = Package( + name: "PetstoreClient", + platforms: [ + .iOS(.v9), + .macOS(.v10_11), + .tvOS(.v9), + .watchOS(.v3), + ], + products: [ + // Products define the executables and libraries produced by a package, and make them visible to other packages. + .library( + name: "PetstoreClient", + targets: ["PetstoreClient"] + ), + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages which this package depends on. + .target( + name: "PetstoreClient", + dependencies: ["AnyCodable", ], + path: "PetstoreClient/Classes" + ), + ] +) diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient.podspec b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient.podspec new file mode 100644 index 00000000000..de06558efbd --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient.podspec @@ -0,0 +1,15 @@ +Pod::Spec.new do |s| + s.name = 'PetstoreClient' + s.ios.deployment_target = '9.0' + s.osx.deployment_target = '10.11' + s.tvos.deployment_target = '9.0' + s.watchos.deployment_target = '3.0' + s.version = '1.0.0' + s.source = { :git => 'git@github.com:OpenAPITools/openapi-generator.git', :tag => 'v1.0.0' } + s.authors = '' + s.license = 'Proprietary' + s.homepage = 'https://github.com/openapitools/openapi-generator' + s.summary = 'PetstoreClient' + s.source_files = 'PetstoreClient/Classes/**/*.swift' + s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' +end diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIHelper.swift new file mode 100644 index 00000000000..f7bb5274bd9 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -0,0 +1,71 @@ +// APIHelper.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct APIHelper { + public static func rejectNil(_ source: [String: Any?]) -> [String: Any]? { + let destination = source.reduce(into: [String: Any]()) { result, item in + if let value = item.value { + result[item.key] = value + } + } + + if destination.isEmpty { + return nil + } + return destination + } + + public static func rejectNilHeaders(_ source: [String: Any?]) -> [String: String] { + return source.reduce(into: [String: String]()) { result, item in + if let collection = item.value as? [Any?] { + result[item.key] = collection.filter { $0 != nil }.map { "\($0!)" }.joined(separator: ",") + } else if let value: Any = item.value { + result[item.key] = "\(value)" + } + } + } + + public static func convertBoolToString(_ source: [String: Any]?) -> [String: Any]? { + guard let source = source else { + return nil + } + + return source.reduce(into: [String: Any]()) { result, item in + switch item.value { + case let x as Bool: + result[item.key] = x.description + default: + result[item.key] = item.value + } + } + } + + public static func mapValueToPathItem(_ source: Any) -> Any { + if let collection = source as? [Any?] { + return collection.filter { $0 != nil }.map { "\($0!)" }.joined(separator: ",") + } + return source + } + + public static func mapValuesToQueryItems(_ source: [String: Any?]) -> [URLQueryItem]? { + let destination = source.filter { $0.value != nil }.reduce(into: [URLQueryItem]()) { result, item in + if let collection = item.value as? [Any?] { + collection.filter { $0 != nil }.map { "\($0!)" }.forEach { value in + result.append(URLQueryItem(name: item.key, value: value)) + } + } else if let value = item.value { + result.append(URLQueryItem(name: item.key, value: "\(value)")) + } + } + + if destination.isEmpty { + return nil + } + return destination + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs.swift new file mode 100644 index 00000000000..dbdab491ff7 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -0,0 +1,62 @@ +// APIs.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class PetstoreClientAPI { + public static var basePath = "http://petstore.swagger.io:80/v2" + public static var credential: URLCredential? + public static var customHeaders: [String: String] = [:] + public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() + public static var apiResponseQueue: DispatchQueue = .main +} + +open class RequestBuilder { + var credential: URLCredential? + var headers: [String: String] + public let parameters: [String: Any]? + public let method: String + public let URLString: String + + /// Optional block to obtain a reference to the request's progress instance when available. + /// With the URLSession http client the request's progress only works on iOS 11.0, macOS 10.13, macCatalyst 13.0, tvOS 11.0, watchOS 4.0. + /// If you need to get the request's progress in older OS versions, please use Alamofire http client. + public var onProgressReady: ((Progress) -> Void)? + + required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) { + self.method = method + self.URLString = URLString + self.parameters = parameters + self.headers = headers + + addHeaders(PetstoreClientAPI.customHeaders) + } + + open func addHeaders(_ aHeaders: [String: String]) { + for (header, value) in aHeaders { + headers[header] = value + } + } + + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + + public func addHeader(name: String, value: String) -> Self { + if !value.isEmpty { + headers[name] = value + } + return self + } + + open func addCredential() -> Self { + credential = PetstoreClientAPI.credential + return self + } +} + +public protocol RequestBuilderFactory { + func getNonDecodableBuilder() -> RequestBuilder.Type + func getBuilder() -> RequestBuilder.Type +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift new file mode 100644 index 00000000000..72b89640eeb --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -0,0 +1,54 @@ +// +// AnotherFakeAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class AnotherFakeAPI { + /** + To test special tags + + - parameter body: (body) client model + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + To test special tags + - PATCH /another-fake/dummy + - To test special tags and operation ID starting with number + - parameter body: (body) client model + - returns: RequestBuilder + */ + open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { + let path = "/another-fake/dummy" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift new file mode 100644 index 00000000000..cf92424d9cc --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -0,0 +1,684 @@ +// +// FakeAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class FakeAPI { + /** + + - parameter body: (body) Input boolean as post body (optional) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { + fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + - POST /fake/outer/boolean + - Test serialization of outer boolean types + - parameter body: (body) Input boolean as post body (optional) + - returns: RequestBuilder + */ + open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { + let path = "/fake/outer/boolean" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + + - parameter body: (body) Input composite as post body (optional) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { + fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + - POST /fake/outer/composite + - Test serialization of object with outer number type + - parameter body: (body) Input composite as post body (optional) + - returns: RequestBuilder + */ + open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { + let path = "/fake/outer/composite" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + + - parameter body: (body) Input number as post body (optional) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { + fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + - POST /fake/outer/number + - Test serialization of outer number types + - parameter body: (body) Input number as post body (optional) + - returns: RequestBuilder + */ + open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { + let path = "/fake/outer/number" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + + - parameter body: (body) Input string as post body (optional) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + - POST /fake/outer/string + - Test serialization of outer string types + - parameter body: (body) Input string as post body (optional) + - returns: RequestBuilder + */ + open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { + let path = "/fake/outer/string" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + + - parameter body: (body) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + - PUT /fake/body-with-file-schema + - For this test, the body for this request much reference a schema named `File`. + - parameter body: (body) + - returns: RequestBuilder + */ + open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { + let path = "/fake/body-with-file-schema" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + + - parameter query: (query) + - parameter body: (body) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + - PUT /fake/body-with-query-params + - parameter query: (query) + - parameter body: (body) + - returns: RequestBuilder + */ + open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { + let path = "/fake/body-with-query-params" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + var urlComponents = URLComponents(string: URLString) + urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + "query": query.encodeToJSON(), + ]) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + To test \"client\" model + + - parameter body: (body) client model + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + To test \"client\" model + - PATCH /fake + - To test \"client\" model + - parameter body: (body) client model + - returns: RequestBuilder + */ + open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { + let path = "/fake" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + + - parameter number: (form) None + - parameter double: (form) None + - parameter patternWithoutDelimiter: (form) None + - parameter byte: (form) None + - parameter integer: (form) None (optional) + - parameter int32: (form) None (optional) + - parameter int64: (form) None (optional) + - parameter float: (form) None (optional) + - parameter string: (form) None (optional) + - parameter binary: (form) None (optional) + - parameter date: (form) None (optional) + - parameter dateTime: (form) None (optional) + - parameter password: (form) None (optional) + - parameter callback: (form) None (optional) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + - POST /fake + - Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + - BASIC: + - type: http + - name: http_basic_test + - parameter number: (form) None + - parameter double: (form) None + - parameter patternWithoutDelimiter: (form) None + - parameter byte: (form) None + - parameter integer: (form) None (optional) + - parameter int32: (form) None (optional) + - parameter int64: (form) None (optional) + - parameter float: (form) None (optional) + - parameter string: (form) None (optional) + - parameter binary: (form) None (optional) + - parameter date: (form) None (optional) + - parameter dateTime: (form) None (optional) + - parameter password: (form) None (optional) + - parameter callback: (form) None (optional) + - returns: RequestBuilder + */ + open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { + let path = "/fake" + let URLString = PetstoreClientAPI.basePath + path + let formParams: [String: Any?] = [ + "integer": integer?.encodeToJSON(), + "int32": int32?.encodeToJSON(), + "int64": int64?.encodeToJSON(), + "number": number.encodeToJSON(), + "float": float?.encodeToJSON(), + "double": double.encodeToJSON(), + "string": string?.encodeToJSON(), + "pattern_without_delimiter": patternWithoutDelimiter.encodeToJSON(), + "byte": byte.encodeToJSON(), + "binary": binary?.encodeToJSON(), + "date": date?.encodeToJSON(), + "dateTime": dateTime?.encodeToJSON(), + "password": password?.encodeToJSON(), + "callback": callback?.encodeToJSON(), + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + "Content-Type": "application/x-www-form-urlencoded", + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + * enum for parameter enumHeaderStringArray + */ + public enum EnumHeaderStringArray_testEnumParameters: String, CaseIterable { + case greaterThan = ">" + case dollar = "$" + } + + /** + * enum for parameter enumHeaderString + */ + public enum EnumHeaderString_testEnumParameters: String, CaseIterable { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" + } + + /** + * enum for parameter enumQueryStringArray + */ + public enum EnumQueryStringArray_testEnumParameters: String, CaseIterable { + case greaterThan = ">" + case dollar = "$" + } + + /** + * enum for parameter enumQueryString + */ + public enum EnumQueryString_testEnumParameters: String, CaseIterable { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" + } + + /** + * enum for parameter enumQueryInteger + */ + public enum EnumQueryInteger_testEnumParameters: Int, CaseIterable { + case _1 = 1 + case number2 = -2 + } + + /** + * enum for parameter enumQueryDouble + */ + public enum EnumQueryDouble_testEnumParameters: Double, CaseIterable { + case _11 = 1.1 + case number12 = -1.2 + } + + /** + * enum for parameter enumFormStringArray + */ + public enum EnumFormStringArray_testEnumParameters: String, CaseIterable { + case greaterThan = ">" + case dollar = "$" + } + + /** + * enum for parameter enumFormString + */ + public enum EnumFormString_testEnumParameters: String, CaseIterable { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" + } + + /** + To test enum parameters + + - parameter enumHeaderStringArray: (header) Header parameter enum test (string array) (optional) + - parameter enumHeaderString: (header) Header parameter enum test (string) (optional, default to .efg) + - parameter enumQueryStringArray: (query) Query parameter enum test (string array) (optional) + - parameter enumQueryString: (query) Query parameter enum test (string) (optional, default to .efg) + - parameter enumQueryInteger: (query) Query parameter enum test (double) (optional) + - parameter enumQueryDouble: (query) Query parameter enum test (double) (optional) + - parameter enumFormStringArray: (form) Form parameter enum test (string array) (optional, default to .dollar) + - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .efg) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + To test enum parameters + - GET /fake + - To test enum parameters + - parameter enumHeaderStringArray: (header) Header parameter enum test (string array) (optional) + - parameter enumHeaderString: (header) Header parameter enum test (string) (optional, default to .efg) + - parameter enumQueryStringArray: (query) Query parameter enum test (string array) (optional) + - parameter enumQueryString: (query) Query parameter enum test (string) (optional, default to .efg) + - parameter enumQueryInteger: (query) Query parameter enum test (double) (optional) + - parameter enumQueryDouble: (query) Query parameter enum test (double) (optional) + - parameter enumFormStringArray: (form) Form parameter enum test (string array) (optional, default to .dollar) + - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .efg) + - returns: RequestBuilder + */ + open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { + let path = "/fake" + let URLString = PetstoreClientAPI.basePath + path + let formParams: [String: Any?] = [ + "enum_form_string_array": enumFormStringArray?.encodeToJSON(), + "enum_form_string": enumFormString?.encodeToJSON(), + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + var urlComponents = URLComponents(string: URLString) + urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), + "enum_query_string": enumQueryString?.encodeToJSON(), + "enum_query_integer": enumQueryInteger?.encodeToJSON(), + "enum_query_double": enumQueryDouble?.encodeToJSON(), + ]) + + let nillableHeaders: [String: Any?] = [ + "Content-Type": "application/x-www-form-urlencoded", + "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), + "enum_header_string": enumHeaderString?.encodeToJSON(), + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Fake endpoint to test group parameters (optional) + + - parameter requiredStringGroup: (query) Required String in group parameters + - parameter requiredBooleanGroup: (header) Required Boolean in group parameters + - parameter requiredInt64Group: (query) Required Integer in group parameters + - parameter stringGroup: (query) String in group parameters (optional) + - parameter booleanGroup: (header) Boolean in group parameters (optional) + - parameter int64Group: (query) Integer in group parameters (optional) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Fake endpoint to test group parameters (optional) + - DELETE /fake + - Fake endpoint to test group parameters (optional) + - parameter requiredStringGroup: (query) Required String in group parameters + - parameter requiredBooleanGroup: (header) Required Boolean in group parameters + - parameter requiredInt64Group: (query) Required Integer in group parameters + - parameter stringGroup: (query) String in group parameters (optional) + - parameter booleanGroup: (header) Boolean in group parameters (optional) + - parameter int64Group: (query) Integer in group parameters (optional) + - returns: RequestBuilder + */ + open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { + let path = "/fake" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + var urlComponents = URLComponents(string: URLString) + urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + "required_string_group": requiredStringGroup.encodeToJSON(), + "required_int64_group": requiredInt64Group.encodeToJSON(), + "string_group": stringGroup?.encodeToJSON(), + "int64_group": int64Group?.encodeToJSON(), + ]) + + let nillableHeaders: [String: Any?] = [ + "required_boolean_group": requiredBooleanGroup.encodeToJSON(), + "boolean_group": booleanGroup?.encodeToJSON(), + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + test inline additionalProperties + + - parameter param: (body) request body + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + test inline additionalProperties + - POST /fake/inline-additionalProperties + - parameter param: (body) request body + - returns: RequestBuilder + */ + open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { + let path = "/fake/inline-additionalProperties" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + test json serialization of form data + + - parameter param: (form) field1 + - parameter param2: (form) field2 + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + test json serialization of form data + - GET /fake/jsonFormData + - parameter param: (form) field1 + - parameter param2: (form) field2 + - returns: RequestBuilder + */ + open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { + let path = "/fake/jsonFormData" + let URLString = PetstoreClientAPI.basePath + path + let formParams: [String: Any?] = [ + "param": param.encodeToJSON(), + "param2": param2.encodeToJSON(), + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + "Content-Type": "application/x-www-form-urlencoded", + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift new file mode 100644 index 00000000000..d4d65166496 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -0,0 +1,57 @@ +// +// FakeClassnameTags123API.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class FakeClassnameTags123API { + /** + To test class name in snake case + + - parameter body: (body) client model + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + To test class name in snake case + - PATCH /fake_classname_test + - To test class name in snake case + - API Key: + - type: apiKey api_key_query (QUERY) + - name: api_key_query + - parameter body: (body) client model + - returns: RequestBuilder + */ + open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { + let path = "/fake_classname_test" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift new file mode 100644 index 00000000000..a1fe0d12b1d --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -0,0 +1,483 @@ +// +// PetAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class PetAPI { + /** + Add a new pet to the store + + - parameter body: (body) Pet object that needs to be added to the store + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Add a new pet to the store + - POST /pet + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter body: (body) Pet object that needs to be added to the store + - returns: RequestBuilder + */ + open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { + let path = "/pet" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Deletes a pet + + - parameter petId: (path) Pet id to delete + - parameter apiKey: (header) (optional) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Deletes a pet + - DELETE /pet/{petId} + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter petId: (path) Pet id to delete + - parameter apiKey: (header) (optional) + - returns: RequestBuilder + */ + open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { + var path = "/pet/{petId}" + let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" + let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + "api_key": apiKey?.encodeToJSON(), + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + * enum for parameter status + */ + public enum Status_findPetsByStatus: String, CaseIterable { + case available = "available" + case pending = "pending" + case sold = "sold" + } + + /** + Finds Pets by status + + - parameter status: (query) Status values that need to be considered for filter + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Finds Pets by status + - GET /pet/findByStatus + - Multiple status values can be provided with comma separated strings + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter status: (query) Status values that need to be considered for filter + - returns: RequestBuilder<[Pet]> + */ + open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { + let path = "/pet/findByStatus" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + var urlComponents = URLComponents(string: URLString) + urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + "status": status.encodeToJSON(), + ]) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Finds Pets by tags + + - parameter tags: (query) Tags to filter by + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + @available(*, deprecated, message: "This operation is deprecated.") + open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Finds Pets by tags + - GET /pet/findByTags + - Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter tags: (query) Tags to filter by + - returns: RequestBuilder<[Pet]> + */ + @available(*, deprecated, message: "This operation is deprecated.") + open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { + let path = "/pet/findByTags" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + var urlComponents = URLComponents(string: URLString) + urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + "tags": tags.encodeToJSON(), + ]) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Find pet by ID + + - parameter petId: (path) ID of pet to return + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { + getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Find pet by ID + - GET /pet/{petId} + - Returns a single pet + - API Key: + - type: apiKey api_key + - name: api_key + - parameter petId: (path) ID of pet to return + - returns: RequestBuilder + */ + open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { + var path = "/pet/{petId}" + let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" + let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Update an existing pet + + - parameter body: (body) Pet object that needs to be added to the store + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Update an existing pet + - PUT /pet + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter body: (body) Pet object that needs to be added to the store + - returns: RequestBuilder + */ + open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { + let path = "/pet" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Updates a pet in the store with form data + + - parameter petId: (path) ID of pet that needs to be updated + - parameter name: (form) Updated name of the pet (optional) + - parameter status: (form) Updated status of the pet (optional) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Updates a pet in the store with form data + - POST /pet/{petId} + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter petId: (path) ID of pet that needs to be updated + - parameter name: (form) Updated name of the pet (optional) + - parameter status: (form) Updated status of the pet (optional) + - returns: RequestBuilder + */ + open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { + var path = "/pet/{petId}" + let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" + let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClientAPI.basePath + path + let formParams: [String: Any?] = [ + "name": name?.encodeToJSON(), + "status": status?.encodeToJSON(), + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + "Content-Type": "application/x-www-form-urlencoded", + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + uploads an image + + - parameter petId: (path) ID of pet to update + - parameter additionalMetadata: (form) Additional data to pass to server (optional) + - parameter file: (form) file to upload (optional) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + uploads an image + - POST /pet/{petId}/uploadImage + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter petId: (path) ID of pet to update + - parameter additionalMetadata: (form) Additional data to pass to server (optional) + - parameter file: (form) file to upload (optional) + - returns: RequestBuilder + */ + open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { + var path = "/pet/{petId}/uploadImage" + let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" + let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClientAPI.basePath + path + let formParams: [String: Any?] = [ + "additionalMetadata": additionalMetadata?.encodeToJSON(), + "file": file?.encodeToJSON(), + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + "Content-Type": "multipart/form-data", + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + uploads an image (required) + + - parameter petId: (path) ID of pet to update + - parameter requiredFile: (form) file to upload + - parameter additionalMetadata: (form) Additional data to pass to server (optional) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + uploads an image (required) + - POST /fake/{petId}/uploadImageWithRequiredFile + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter petId: (path) ID of pet to update + - parameter requiredFile: (form) file to upload + - parameter additionalMetadata: (form) Additional data to pass to server (optional) + - returns: RequestBuilder + */ + open class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil) -> RequestBuilder { + var path = "/fake/{petId}/uploadImageWithRequiredFile" + let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" + let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClientAPI.basePath + path + let formParams: [String: Any?] = [ + "additionalMetadata": additionalMetadata?.encodeToJSON(), + "requiredFile": requiredFile.encodeToJSON(), + ] + + let nonNullParameters = APIHelper.rejectNil(formParams) + let parameters = APIHelper.convertBoolToString(nonNullParameters) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + "Content-Type": "multipart/form-data", + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift new file mode 100644 index 00000000000..501f11f5f21 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -0,0 +1,189 @@ +// +// StoreAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class StoreAPI { + /** + Delete purchase order by ID + + - parameter orderId: (path) ID of the order that needs to be deleted + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Delete purchase order by ID + - DELETE /store/order/{order_id} + - For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + - parameter orderId: (path) ID of the order that needs to be deleted + - returns: RequestBuilder + */ + open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { + var path = "/store/order/{order_id}" + let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" + let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Returns pet inventories by status + + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { + getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Returns pet inventories by status + - GET /store/inventory + - Returns a map of status codes to quantities + - API Key: + - type: apiKey api_key + - name: api_key + - returns: RequestBuilder<[String: Int]> + */ + open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { + let path = "/store/inventory" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Find purchase order by ID + + - parameter orderId: (path) ID of pet that needs to be fetched + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Find purchase order by ID + - GET /store/order/{order_id} + - For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + - parameter orderId: (path) ID of pet that needs to be fetched + - returns: RequestBuilder + */ + open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { + var path = "/store/order/{order_id}" + let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" + let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Place an order for a pet + + - parameter body: (body) order placed for purchasing the pet + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Place an order for a pet + - POST /store/order + - parameter body: (body) order placed for purchasing the pet + - returns: RequestBuilder + */ + open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { + let path = "/store/order" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift new file mode 100644 index 00000000000..254474014d3 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -0,0 +1,366 @@ +// +// UserAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class UserAPI { + /** + Create user + + - parameter body: (body) Created user object + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Create user + - POST /user + - This can only be done by the logged in user. + - parameter body: (body) Created user object + - returns: RequestBuilder + */ + open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { + let path = "/user" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Creates list of users with given input array + + - parameter body: (body) List of user object + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Creates list of users with given input array + - POST /user/createWithArray + - parameter body: (body) List of user object + - returns: RequestBuilder + */ + open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { + let path = "/user/createWithArray" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Creates list of users with given input array + + - parameter body: (body) List of user object + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Creates list of users with given input array + - POST /user/createWithList + - parameter body: (body) List of user object + - returns: RequestBuilder + */ + open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { + let path = "/user/createWithList" + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Delete user + + - parameter username: (path) The name that needs to be deleted + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Delete user + - DELETE /user/{username} + - This can only be done by the logged in user. + - parameter username: (path) The name that needs to be deleted + - returns: RequestBuilder + */ + open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { + var path = "/user/{username}" + let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" + let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Get user by user name + + - parameter username: (path) The name that needs to be fetched. Use user1 for testing. + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { + getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Get user by user name + - GET /user/{username} + - parameter username: (path) The name that needs to be fetched. Use user1 for testing. + - returns: RequestBuilder + */ + open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { + var path = "/user/{username}" + let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" + let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Logs user into the system + + - parameter username: (query) The user name for login + - parameter password: (query) The password for login in clear text + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Logs user into the system + - GET /user/login + - responseHeaders: [X-Rate-Limit(Int), X-Expires-After(Date)] + - parameter username: (query) The user name for login + - parameter password: (query) The password for login in clear text + - returns: RequestBuilder + */ + open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { + let path = "/user/login" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + var urlComponents = URLComponents(string: URLString) + urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + "username": username.encodeToJSON(), + "password": password.encodeToJSON(), + ]) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Logs out current logged in user session + + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Logs out current logged in user session + - GET /user/logout + - returns: RequestBuilder + */ + open class func logoutUserWithRequestBuilder() -> RequestBuilder { + let path = "/user/logout" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + + /** + Updated user + + - parameter username: (path) name that need to be deleted + - parameter body: (body) Updated user object + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in + switch result { + case .success: + completion((), nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + Updated user + - PUT /user/{username} + - This can only be done by the logged in user. + - parameter username: (path) name that need to be deleted + - parameter body: (body) Updated user object + - returns: RequestBuilder + */ + open class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { + var path = "/user/{username}" + let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" + let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let URLString = PetstoreClientAPI.basePath + path + let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + + return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift new file mode 100644 index 00000000000..09c82e53e13 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift @@ -0,0 +1,49 @@ +// +// CodableHelper.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class CodableHelper { + private static var customDateFormatter: DateFormatter? + private static var defaultDateFormatter: DateFormatter = OpenISO8601DateFormatter() + + private static var customJSONDecoder: JSONDecoder? + private static var defaultJSONDecoder: JSONDecoder = { + let decoder = JSONDecoder() + decoder.dateDecodingStrategy = .formatted(CodableHelper.dateFormatter) + return decoder + }() + + private static var customJSONEncoder: JSONEncoder? + private static var defaultJSONEncoder: JSONEncoder = { + let encoder = JSONEncoder() + encoder.dateEncodingStrategy = .formatted(CodableHelper.dateFormatter) + encoder.outputFormatting = .prettyPrinted + return encoder + }() + + public static var dateFormatter: DateFormatter { + get { return customDateFormatter ?? defaultDateFormatter } + set { customDateFormatter = newValue } + } + public static var jsonDecoder: JSONDecoder { + get { return customJSONDecoder ?? defaultJSONDecoder } + set { customJSONDecoder = newValue } + } + public static var jsonEncoder: JSONEncoder { + get { return customJSONEncoder ?? defaultJSONEncoder } + set { customJSONEncoder = newValue } + } + + open class func decode(_ type: T.Type, from data: Data) -> Swift.Result where T: Decodable { + return Swift.Result { try jsonDecoder.decode(type, from: data) } + } + + open class func encode(_ value: T) -> Swift.Result where T: Encodable { + return Swift.Result { try jsonEncoder.encode(value) } + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Configuration.swift new file mode 100644 index 00000000000..18edabbed78 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -0,0 +1,14 @@ +// Configuration.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. + // You must set it prior to encoding any dates, and it will only be read once. + @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") + public static var dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Extensions.swift new file mode 100644 index 00000000000..3aef2d1d6c5 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -0,0 +1,227 @@ +// Extensions.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +extension Bool: JSONEncodable { + func encodeToJSON() -> Any { return self as Any } +} + +extension Float: JSONEncodable { + func encodeToJSON() -> Any { return self as Any } +} + +extension Int: JSONEncodable { + func encodeToJSON() -> Any { return self as Any } +} + +extension Int32: JSONEncodable { + func encodeToJSON() -> Any { return NSNumber(value: self as Int32) } +} + +extension Int64: JSONEncodable { + func encodeToJSON() -> Any { return NSNumber(value: self as Int64) } +} + +extension Double: JSONEncodable { + func encodeToJSON() -> Any { return self as Any } +} + +extension String: JSONEncodable { + func encodeToJSON() -> Any { return self as Any } +} + +extension RawRepresentable where RawValue: JSONEncodable { + func encodeToJSON() -> Any { return self.rawValue as Any } +} + +private func encodeIfPossible(_ object: T) -> Any { + if let encodableObject = object as? JSONEncodable { + return encodableObject.encodeToJSON() + } else { + return object as Any + } +} + +extension Array: JSONEncodable { + func encodeToJSON() -> Any { + return self.map(encodeIfPossible) + } +} + +extension Set: JSONEncodable { + func encodeToJSON() -> Any { + return Array(self).encodeToJSON() + } +} + +extension Dictionary: JSONEncodable { + func encodeToJSON() -> Any { + var dictionary = [AnyHashable: Any]() + for (key, value) in self { + dictionary[key] = encodeIfPossible(value) + } + return dictionary as Any + } +} + +extension Data: JSONEncodable { + func encodeToJSON() -> Any { + return self.base64EncodedString(options: Data.Base64EncodingOptions()) + } +} + +extension Date: JSONEncodable { + func encodeToJSON() -> Any { + return CodableHelper.dateFormatter.string(from: self) as Any + } +} + +extension URL: JSONEncodable { + func encodeToJSON() -> Any { + return self + } +} + +extension UUID: JSONEncodable { + func encodeToJSON() -> Any { + return self.uuidString + } +} + +extension String: CodingKey { + + public var stringValue: String { + return self + } + + public init?(stringValue: String) { + self.init(stringLiteral: stringValue) + } + + public var intValue: Int? { + return nil + } + + public init?(intValue: Int) { + return nil + } + +} + +extension KeyedEncodingContainerProtocol { + + public mutating func encodeArray(_ values: [T], forKey key: Self.Key) throws where T: Encodable { + var arrayContainer = nestedUnkeyedContainer(forKey: key) + try arrayContainer.encode(contentsOf: values) + } + + public mutating func encodeArrayIfPresent(_ values: [T]?, forKey key: Self.Key) throws where T: Encodable { + if let values = values { + try encodeArray(values, forKey: key) + } + } + + public mutating func encodeMap(_ pairs: [Self.Key: T]) throws where T: Encodable { + for (key, value) in pairs { + try encode(value, forKey: key) + } + } + + public mutating func encodeMapIfPresent(_ pairs: [Self.Key: T]?) throws where T: Encodable { + if let pairs = pairs { + try encodeMap(pairs) + } + } + +} + +extension KeyedDecodingContainerProtocol { + + public func decodeArray(_ type: T.Type, forKey key: Self.Key) throws -> [T] where T: Decodable { + var tmpArray = [T]() + + var nestedContainer = try nestedUnkeyedContainer(forKey: key) + while !nestedContainer.isAtEnd { + let arrayValue = try nestedContainer.decode(T.self) + tmpArray.append(arrayValue) + } + + return tmpArray + } + + public func decodeArrayIfPresent(_ type: T.Type, forKey key: Self.Key) throws -> [T]? where T: Decodable { + var tmpArray: [T]? + + if contains(key) { + tmpArray = try decodeArray(T.self, forKey: key) + } + + return tmpArray + } + + public func decodeMap(_ type: T.Type, excludedKeys: Set) throws -> [Self.Key: T] where T: Decodable { + var map: [Self.Key: T] = [:] + + for key in allKeys { + if !excludedKeys.contains(key) { + let value = try decode(T.self, forKey: key) + map[key] = value + } + } + + return map + } + +} + +extension HTTPURLResponse { + var isStatusCodeSuccessful: Bool { + return Array(200 ..< 300).contains(statusCode) + } +} + +extension AnyCodable: Hashable { + public func hash(into hasher: inout Hasher) { + switch value { + case let value as Bool: + hasher.combine(value) + case let value as Int: + hasher.combine(value) + case let value as Int8: + hasher.combine(value) + case let value as Int16: + hasher.combine(value) + case let value as Int32: + hasher.combine(value) + case let value as Int64: + hasher.combine(value) + case let value as UInt: + hasher.combine(value) + case let value as UInt8: + hasher.combine(value) + case let value as UInt16: + hasher.combine(value) + case let value as UInt32: + hasher.combine(value) + case let value as UInt64: + hasher.combine(value) + case let value as Float: + hasher.combine(value) + case let value as Double: + hasher.combine(value) + case let value as String: + hasher.combine(value) + case let value as [String: AnyCodable]: + hasher.combine(value) + case let value as [AnyCodable]: + hasher.combine(value) + default: + hasher.combine(0) + } + } +} \ No newline at end of file diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/JSONDataEncoding.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/JSONDataEncoding.swift new file mode 100644 index 00000000000..b79e9f5e64d --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/JSONDataEncoding.swift @@ -0,0 +1,53 @@ +// +// JSONDataEncoding.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct JSONDataEncoding { + + // MARK: Properties + + private static let jsonDataKey = "jsonData" + + // MARK: Encoding + + /// Creates a URL request by encoding parameters and applying them onto an existing request. + /// + /// - parameter urlRequest: The request to have parameters applied. + /// - parameter parameters: The parameters to apply. This should have a single key/value + /// pair with "jsonData" as the key and a Data object as the value. + /// + /// - throws: An `Error` if the encoding process encounters an error. + /// + /// - returns: The encoded request. + public func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) -> URLRequest { + var urlRequest = urlRequest + + guard let jsonData = parameters?[JSONDataEncoding.jsonDataKey] as? Data, !jsonData.isEmpty else { + return urlRequest + } + + if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil { + urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") + } + + urlRequest.httpBody = jsonData + + return urlRequest + } + + public static func encodingParameters(jsonData: Data?) -> [String: Any]? { + var returnedParams: [String: Any]? + if let jsonData = jsonData, !jsonData.isEmpty { + var params: [String: Any] = [:] + params[jsonDataKey] = jsonData + returnedParams = params + } + return returnedParams + } + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift new file mode 100644 index 00000000000..02f78ffb470 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift @@ -0,0 +1,45 @@ +// +// JSONEncodingHelper.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class JSONEncodingHelper { + + open class func encodingParameters(forEncodableObject encodableObj: T?) -> [String: Any]? { + var params: [String: Any]? + + // Encode the Encodable object + if let encodableObj = encodableObj { + let encodeResult = CodableHelper.encode(encodableObj) + do { + let data = try encodeResult.get() + params = JSONDataEncoding.encodingParameters(jsonData: data) + } catch { + print(error.localizedDescription) + } + } + + return params + } + + open class func encodingParameters(forEncodableObject encodableObj: Any?) -> [String: Any]? { + var params: [String: Any]? + + if let encodableObj = encodableObj { + do { + let data = try JSONSerialization.data(withJSONObject: encodableObj, options: .prettyPrinted) + params = JSONDataEncoding.encodingParameters(jsonData: data) + } catch { + print(error.localizedDescription) + return nil + } + } + + return params + } + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models.swift new file mode 100644 index 00000000000..96e26a20f7d --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -0,0 +1,54 @@ +// Models.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +protocol JSONEncodable { + func encodeToJSON() -> Any +} + +public enum ErrorResponse: Error { + case error(Int, Data?, URLResponse?, Error) +} + +public enum DownloadException: Error { + case responseDataMissing + case responseFailed + case requestMissing + case requestMissingPath + case requestMissingURL +} + +public enum DecodableRequestBuilderError: Error { + case emptyDataResponse + case nilHTTPResponse + case unsuccessfulHTTPStatusCode + case jsonDecoding(DecodingError) + case generalError(Error) +} + +open class Response { + public let statusCode: Int + public let header: [String: String] + public let body: T? + + public init(statusCode: Int, header: [String: String], body: T?) { + self.statusCode = statusCode + self.header = header + self.body = body + } + + public convenience init(response: HTTPURLResponse, body: T?) { + let rawHeader = response.allHeaderFields + var header = [String: String]() + for (key, value) in rawHeader { + if let key = key.base as? String, let value = value as? String { + header[key] = value + } + } + self.init(statusCode: response.statusCode, header: header, body: body) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift new file mode 100644 index 00000000000..7022f41580f --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift @@ -0,0 +1,57 @@ +// +// AdditionalPropertiesAnyType.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct AdditionalPropertiesAnyType: Codable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + public var additionalProperties: [String: AnyCodable] = [:] + + public subscript(key: String) -> AnyCodable? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: String.self) + + name = try container.decodeIfPresent(String.self, forKey: "name") + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + additionalProperties = try container.decodeMap(AnyCodable.self, excludedKeys: nonAdditionalPropertyKeys) + } + + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift new file mode 100644 index 00000000000..f0ac1d5c0e0 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift @@ -0,0 +1,57 @@ +// +// AdditionalPropertiesArray.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct AdditionalPropertiesArray: Codable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + public var additionalProperties: [String: [AnyCodable]] = [:] + + public subscript(key: String) -> [AnyCodable]? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: String.self) + + name = try container.decodeIfPresent(String.self, forKey: "name") + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + additionalProperties = try container.decodeMap([AnyCodable].self, excludedKeys: nonAdditionalPropertyKeys) + } + + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift new file mode 100644 index 00000000000..5879e198764 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift @@ -0,0 +1,57 @@ +// +// AdditionalPropertiesBoolean.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct AdditionalPropertiesBoolean: Codable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + public var additionalProperties: [String: Bool] = [:] + + public subscript(key: String) -> Bool? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: String.self) + + name = try container.decodeIfPresent(String.self, forKey: "name") + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + } + + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift new file mode 100644 index 00000000000..5e200855eb8 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -0,0 +1,33 @@ +// +// AdditionalPropertiesClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct AdditionalPropertiesClass: Codable { + + public var mapString: [String: String]? + public var mapMapString: [String: [String: String]]? + + public init(mapString: [String: String]? = nil, mapMapString: [String: [String: String]]? = nil) { + self.mapString = mapString + self.mapMapString = mapMapString + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case mapString = "map_string" + case mapMapString = "map_map_string" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(mapString, forKey: .mapString) + try container.encodeIfPresent(mapMapString, forKey: .mapMapString) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift new file mode 100644 index 00000000000..acfd7ae67be --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift @@ -0,0 +1,57 @@ +// +// AdditionalPropertiesInteger.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct AdditionalPropertiesInteger: Codable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + public var additionalProperties: [String: Int] = [:] + + public subscript(key: String) -> Int? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: String.self) + + name = try container.decodeIfPresent(String.self, forKey: "name") + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + additionalProperties = try container.decodeMap(Int.self, excludedKeys: nonAdditionalPropertyKeys) + } + + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift new file mode 100644 index 00000000000..006997c5f6b --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift @@ -0,0 +1,57 @@ +// +// AdditionalPropertiesNumber.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct AdditionalPropertiesNumber: Codable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + public var additionalProperties: [String: Double] = [:] + + public subscript(key: String) -> Double? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: String.self) + + name = try container.decodeIfPresent(String.self, forKey: "name") + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + additionalProperties = try container.decodeMap(Double.self, excludedKeys: nonAdditionalPropertyKeys) + } + + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift new file mode 100644 index 00000000000..adc28863447 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift @@ -0,0 +1,57 @@ +// +// AdditionalPropertiesObject.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct AdditionalPropertiesObject: Codable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + public var additionalProperties: [String: [String: AnyCodable]] = [:] + + public subscript(key: String) -> [String: AnyCodable]? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: String.self) + + name = try container.decodeIfPresent(String.self, forKey: "name") + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + additionalProperties = try container.decodeMap([String: AnyCodable].self, excludedKeys: nonAdditionalPropertyKeys) + } + + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift new file mode 100644 index 00000000000..eba32fc30e1 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift @@ -0,0 +1,57 @@ +// +// AdditionalPropertiesString.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct AdditionalPropertiesString: Codable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + public var additionalProperties: [String: String] = [:] + + public subscript(key: String) -> String? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: String.self) + + name = try container.decodeIfPresent(String.self, forKey: "name") + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + additionalProperties = try container.decodeMap(String.self, excludedKeys: nonAdditionalPropertyKeys) + } + + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift new file mode 100644 index 00000000000..bd89731cf33 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -0,0 +1,33 @@ +// +// Animal.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct Animal: Codable { + + public var className: String + public var color: String? = "red" + + public init(className: String, color: String? = "red") { + self.className = className + self.color = color + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case className + case color + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(className, forKey: .className) + try container.encodeIfPresent(color, forKey: .color) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift new file mode 100644 index 00000000000..b20b894a1ad --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -0,0 +1,11 @@ +// +// AnimalFarm.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift new file mode 100644 index 00000000000..efc4b699815 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -0,0 +1,37 @@ +// +// ApiResponse.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct ApiResponse: Codable { + + public var code: Int? + public var type: String? + public var message: String? + + public init(code: Int? = nil, type: String? = nil, message: String? = nil) { + self.code = code + self.type = type + self.message = message + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case code + case type + case message + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(code, forKey: .code) + try container.encodeIfPresent(type, forKey: .type) + try container.encodeIfPresent(message, forKey: .message) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift new file mode 100644 index 00000000000..8f042bcafcf --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -0,0 +1,29 @@ +// +// ArrayOfArrayOfNumberOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct ArrayOfArrayOfNumberOnly: Codable { + + public var arrayArrayNumber: [[Double]]? + + public init(arrayArrayNumber: [[Double]]? = nil) { + self.arrayArrayNumber = arrayArrayNumber + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case arrayArrayNumber = "ArrayArrayNumber" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift new file mode 100644 index 00000000000..216ddb96303 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -0,0 +1,29 @@ +// +// ArrayOfNumberOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct ArrayOfNumberOnly: Codable { + + public var arrayNumber: [Double]? + + public init(arrayNumber: [Double]? = nil) { + self.arrayNumber = arrayNumber + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case arrayNumber = "ArrayNumber" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift new file mode 100644 index 00000000000..0c81613f51d --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -0,0 +1,37 @@ +// +// ArrayTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct ArrayTest: Codable { + + public var arrayOfString: [String]? + public var arrayArrayOfInteger: [[Int64]]? + public var arrayArrayOfModel: [[ReadOnlyFirst]]? + + public init(arrayOfString: [String]? = nil, arrayArrayOfInteger: [[Int64]]? = nil, arrayArrayOfModel: [[ReadOnlyFirst]]? = nil) { + self.arrayOfString = arrayOfString + self.arrayArrayOfInteger = arrayArrayOfInteger + self.arrayArrayOfModel = arrayArrayOfModel + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case arrayOfString = "array_of_string" + case arrayArrayOfInteger = "array_array_of_integer" + case arrayArrayOfModel = "array_array_of_model" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(arrayOfString, forKey: .arrayOfString) + try container.encodeIfPresent(arrayArrayOfInteger, forKey: .arrayArrayOfInteger) + try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift new file mode 100644 index 00000000000..842930f738d --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift @@ -0,0 +1,37 @@ +// +// BigCat.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct BigCat: Codable { + + public enum Kind: String, Codable, CaseIterable { + case lions = "lions" + case tigers = "tigers" + case leopards = "leopards" + case jaguars = "jaguars" + } + public var kind: Kind? + + public init(kind: Kind? = nil) { + self.kind = kind + } + public enum CodingKeys: String, CodingKey, CaseIterable { + case kind + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(kind, forKey: .kind) + } + + + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift new file mode 100644 index 00000000000..b7c03fe8821 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift @@ -0,0 +1,37 @@ +// +// BigCatAllOf.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct BigCatAllOf: Codable { + + public enum Kind: String, Codable, CaseIterable { + case lions = "lions" + case tigers = "tigers" + case leopards = "leopards" + case jaguars = "jaguars" + } + public var kind: Kind? + + public init(kind: Kind? = nil) { + self.kind = kind + } + public enum CodingKeys: String, CodingKey, CaseIterable { + case kind + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(kind, forKey: .kind) + } + + + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift new file mode 100644 index 00000000000..86d95d462a9 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -0,0 +1,50 @@ +// +// Capitalization.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct Capitalization: Codable { + + public var smallCamel: String? + public var capitalCamel: String? + public var smallSnake: String? + public var capitalSnake: String? + public var sCAETHFlowPoints: String? + /** Name of the pet */ + public var ATT_NAME: String? + + public init(smallCamel: String? = nil, capitalCamel: String? = nil, smallSnake: String? = nil, capitalSnake: String? = nil, sCAETHFlowPoints: String? = nil, ATT_NAME: String? = nil) { + self.smallCamel = smallCamel + self.capitalCamel = capitalCamel + self.smallSnake = smallSnake + self.capitalSnake = capitalSnake + self.sCAETHFlowPoints = sCAETHFlowPoints + self.ATT_NAME = ATT_NAME + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case smallCamel + case capitalCamel = "CapitalCamel" + case smallSnake = "small_Snake" + case capitalSnake = "Capital_Snake" + case sCAETHFlowPoints = "SCA_ETH_Flow_Points" + case ATT_NAME + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(smallCamel, forKey: .smallCamel) + try container.encodeIfPresent(capitalCamel, forKey: .capitalCamel) + try container.encodeIfPresent(smallSnake, forKey: .smallSnake) + try container.encodeIfPresent(capitalSnake, forKey: .capitalSnake) + try container.encodeIfPresent(sCAETHFlowPoints, forKey: .sCAETHFlowPoints) + try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift new file mode 100644 index 00000000000..8bcdaa52c2a --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -0,0 +1,37 @@ +// +// Cat.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct Cat: Codable { + + public var className: String + public var color: String? = "red" + public var declawed: Bool? + + public init(className: String, color: String? = "red", declawed: Bool? = nil) { + self.className = className + self.color = color + self.declawed = declawed + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case className + case color + case declawed + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(className, forKey: .className) + try container.encodeIfPresent(color, forKey: .color) + try container.encodeIfPresent(declawed, forKey: .declawed) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift new file mode 100644 index 00000000000..af61714a29b --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -0,0 +1,29 @@ +// +// CatAllOf.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct CatAllOf: Codable { + + public var declawed: Bool? + + public init(declawed: Bool? = nil) { + self.declawed = declawed + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case declawed + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(declawed, forKey: .declawed) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Category.swift new file mode 100644 index 00000000000..0def88b1fc8 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -0,0 +1,33 @@ +// +// Category.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct Category: Codable, Hashable { + + public var id: Int64? + public var name: String? = "default-name" + + public init(id: Int64? = nil, name: String? = "default-name") { + self.id = id + self.name = name + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case id + case name + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(id, forKey: .id) + try container.encode(name, forKey: .name) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift new file mode 100644 index 00000000000..7a15b3a7c3b --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -0,0 +1,30 @@ +// +// ClassModel.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +/** Model for testing model with \"_class\" property */ +public struct ClassModel: Codable { + + public var _class: String? + + public init(_class: String? = nil) { + self._class = _class + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case _class + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(_class, forKey: ._class) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Client.swift new file mode 100644 index 00000000000..82451c58923 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -0,0 +1,29 @@ +// +// Client.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct Client: Codable { + + public var client: String? + + public init(client: String? = nil) { + self.client = client + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case client + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(client, forKey: .client) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift new file mode 100644 index 00000000000..f935e75ea71 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -0,0 +1,37 @@ +// +// Dog.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct Dog: Codable { + + public var className: String + public var color: String? = "red" + public var breed: String? + + public init(className: String, color: String? = "red", breed: String? = nil) { + self.className = className + self.color = color + self.breed = breed + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case className + case color + case breed + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(className, forKey: .className) + try container.encodeIfPresent(color, forKey: .color) + try container.encodeIfPresent(breed, forKey: .breed) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift new file mode 100644 index 00000000000..378eb3c3847 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -0,0 +1,29 @@ +// +// DogAllOf.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct DogAllOf: Codable { + + public var breed: String? + + public init(breed: String? = nil) { + self.breed = breed + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case breed + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(breed, forKey: .breed) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift new file mode 100644 index 00000000000..6502415e4f7 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -0,0 +1,41 @@ +// +// EnumArrays.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct EnumArrays: Codable { + + public enum JustSymbol: String, Codable, CaseIterable { + case greaterThanOrEqualTo = ">=" + case dollar = "$" + } + public enum ArrayEnum: String, Codable, CaseIterable { + case fish = "fish" + case crab = "crab" + } + public var justSymbol: JustSymbol? + public var arrayEnum: [ArrayEnum]? + + public init(justSymbol: JustSymbol? = nil, arrayEnum: [ArrayEnum]? = nil) { + self.justSymbol = justSymbol + self.arrayEnum = arrayEnum + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case justSymbol = "just_symbol" + case arrayEnum = "array_enum" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(justSymbol, forKey: .justSymbol) + try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift new file mode 100644 index 00000000000..ab01cf297f8 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -0,0 +1,15 @@ +// +// EnumClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public enum EnumClass: String, Codable, CaseIterable { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift new file mode 100644 index 00000000000..11883eb92b4 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -0,0 +1,63 @@ +// +// EnumTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct EnumTest: Codable { + + public enum EnumString: String, Codable, CaseIterable { + case upper = "UPPER" + case lower = "lower" + case empty = "" + } + public enum EnumStringRequired: String, Codable, CaseIterable { + case upper = "UPPER" + case lower = "lower" + case empty = "" + } + public enum EnumInteger: Int, Codable, CaseIterable { + case _1 = 1 + case number1 = -1 + } + public enum EnumNumber: Double, Codable, CaseIterable { + case _11 = 1.1 + case number12 = -1.2 + } + public var enumString: EnumString? + public var enumStringRequired: EnumStringRequired + public var enumInteger: EnumInteger? + public var enumNumber: EnumNumber? + public var outerEnum: OuterEnum? + + public init(enumString: EnumString? = nil, enumStringRequired: EnumStringRequired, enumInteger: EnumInteger? = nil, enumNumber: EnumNumber? = nil, outerEnum: OuterEnum? = nil) { + self.enumString = enumString + self.enumStringRequired = enumStringRequired + self.enumInteger = enumInteger + self.enumNumber = enumNumber + self.outerEnum = outerEnum + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case enumString = "enum_string" + case enumStringRequired = "enum_string_required" + case enumInteger = "enum_integer" + case enumNumber = "enum_number" + case outerEnum + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(enumString, forKey: .enumString) + try container.encode(enumStringRequired, forKey: .enumStringRequired) + try container.encodeIfPresent(enumInteger, forKey: .enumInteger) + try container.encodeIfPresent(enumNumber, forKey: .enumNumber) + try container.encodeIfPresent(outerEnum, forKey: .outerEnum) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/File.swift new file mode 100644 index 00000000000..beed22f4452 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -0,0 +1,31 @@ +// +// File.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +/** Must be named `File` for test. */ +public struct File: Codable { + + /** Test capitalization */ + public var sourceURI: String? + + public init(sourceURI: String? = nil) { + self.sourceURI = sourceURI + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case sourceURI + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(sourceURI, forKey: .sourceURI) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift new file mode 100644 index 00000000000..286fd1363ec --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -0,0 +1,33 @@ +// +// FileSchemaTestClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct FileSchemaTestClass: Codable { + + public var file: File? + public var files: [File]? + + public init(file: File? = nil, files: [File]? = nil) { + self.file = file + self.files = files + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case file + case files + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(file, forKey: .file) + try container.encodeIfPresent(files, forKey: .files) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift new file mode 100644 index 00000000000..0c3ae8c0c52 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -0,0 +1,77 @@ +// +// FormatTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct FormatTest: Codable { + + public var integer: Int? + public var int32: Int? + public var int64: Int64? + public var number: Double + public var float: Float? + public var double: Double? + public var string: String? + public var byte: Data + public var binary: URL? + public var date: Date + public var dateTime: Date? + public var uuid: UUID? + public var password: String + + public init(integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, number: Double, float: Float? = nil, double: Double? = nil, string: String? = nil, byte: Data, binary: URL? = nil, date: Date, dateTime: Date? = nil, uuid: UUID? = nil, password: String) { + self.integer = integer + self.int32 = int32 + self.int64 = int64 + self.number = number + self.float = float + self.double = double + self.string = string + self.byte = byte + self.binary = binary + self.date = date + self.dateTime = dateTime + self.uuid = uuid + self.password = password + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case integer + case int32 + case int64 + case number + case float + case double + case string + case byte + case binary + case date + case dateTime + case uuid + case password + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(integer, forKey: .integer) + try container.encodeIfPresent(int32, forKey: .int32) + try container.encodeIfPresent(int64, forKey: .int64) + try container.encode(number, forKey: .number) + try container.encodeIfPresent(float, forKey: .float) + try container.encodeIfPresent(double, forKey: .double) + try container.encodeIfPresent(string, forKey: .string) + try container.encode(byte, forKey: .byte) + try container.encodeIfPresent(binary, forKey: .binary) + try container.encode(date, forKey: .date) + try container.encodeIfPresent(dateTime, forKey: .dateTime) + try container.encodeIfPresent(uuid, forKey: .uuid) + try container.encode(password, forKey: .password) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift new file mode 100644 index 00000000000..5139c97869e --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -0,0 +1,33 @@ +// +// HasOnlyReadOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct HasOnlyReadOnly: Codable { + + public var bar: String? + public var foo: String? + + public init(bar: String? = nil, foo: String? = nil) { + self.bar = bar + self.foo = foo + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case bar + case foo + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(bar, forKey: .bar) + try container.encodeIfPresent(foo, forKey: .foo) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/List.swift new file mode 100644 index 00000000000..5774c22584b --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -0,0 +1,29 @@ +// +// List.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct List: Codable { + + public var _123list: String? + + public init(_123list: String? = nil) { + self._123list = _123list + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case _123list = "123-list" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(_123list, forKey: ._123list) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift new file mode 100644 index 00000000000..245b554c5b1 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -0,0 +1,45 @@ +// +// MapTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct MapTest: Codable { + + public enum MapOfEnumString: String, Codable, CaseIterable { + case upper = "UPPER" + case lower = "lower" + } + public var mapMapOfString: [String: [String: String]]? + public var mapOfEnumString: [String: String]? + public var directMap: [String: Bool]? + public var indirectMap: StringBooleanMap? + + public init(mapMapOfString: [String: [String: String]]? = nil, mapOfEnumString: [String: String]? = nil, directMap: [String: Bool]? = nil, indirectMap: StringBooleanMap? = nil) { + self.mapMapOfString = mapMapOfString + self.mapOfEnumString = mapOfEnumString + self.directMap = directMap + self.indirectMap = indirectMap + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case mapMapOfString = "map_map_of_string" + case mapOfEnumString = "map_of_enum_string" + case directMap = "direct_map" + case indirectMap = "indirect_map" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(mapMapOfString, forKey: .mapMapOfString) + try container.encodeIfPresent(mapOfEnumString, forKey: .mapOfEnumString) + try container.encodeIfPresent(directMap, forKey: .directMap) + try container.encodeIfPresent(indirectMap, forKey: .indirectMap) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift new file mode 100644 index 00000000000..353dfe0095c --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -0,0 +1,37 @@ +// +// MixedPropertiesAndAdditionalPropertiesClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct MixedPropertiesAndAdditionalPropertiesClass: Codable { + + public var uuid: UUID? + public var dateTime: Date? + public var map: [String: Animal]? + + public init(uuid: UUID? = nil, dateTime: Date? = nil, map: [String: Animal]? = nil) { + self.uuid = uuid + self.dateTime = dateTime + self.map = map + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case uuid + case dateTime + case map + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(uuid, forKey: .uuid) + try container.encodeIfPresent(dateTime, forKey: .dateTime) + try container.encodeIfPresent(map, forKey: .map) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift new file mode 100644 index 00000000000..b05878fec39 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -0,0 +1,34 @@ +// +// Model200Response.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +/** Model for testing model name starting with number */ +public struct Model200Response: Codable { + + public var name: Int? + public var _class: String? + + public init(name: Int? = nil, _class: String? = nil) { + self.name = name + self._class = _class + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + case _class = "class" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + try container.encodeIfPresent(_class, forKey: ._class) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Name.swift new file mode 100644 index 00000000000..9f37e7a69d9 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -0,0 +1,42 @@ +// +// Name.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +/** Model for testing model name same as property name */ +public struct Name: Codable { + + public var name: Int + public var snakeCase: Int? + public var property: String? + public var _123number: Int? + + public init(name: Int, snakeCase: Int? = nil, property: String? = nil, _123number: Int? = nil) { + self.name = name + self.snakeCase = snakeCase + self.property = property + self._123number = _123number + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + case snakeCase = "snake_case" + case property + case _123number = "123Number" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(name, forKey: .name) + try container.encodeIfPresent(snakeCase, forKey: .snakeCase) + try container.encodeIfPresent(property, forKey: .property) + try container.encodeIfPresent(_123number, forKey: ._123number) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift new file mode 100644 index 00000000000..f790388df53 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -0,0 +1,29 @@ +// +// NumberOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct NumberOnly: Codable { + + public var justNumber: Double? + + public init(justNumber: Double? = nil) { + self.justNumber = justNumber + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case justNumber = "JustNumber" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(justNumber, forKey: .justNumber) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Order.swift new file mode 100644 index 00000000000..2b038b6a6a7 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -0,0 +1,55 @@ +// +// Order.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct Order: Codable { + + public enum Status: String, Codable, CaseIterable { + case placed = "placed" + case approved = "approved" + case delivered = "delivered" + } + public var id: Int64? + public var petId: Int64? + public var quantity: Int? + public var shipDate: Date? + /** Order Status */ + public var status: Status? + public var complete: Bool? = false + + public init(id: Int64? = nil, petId: Int64? = nil, quantity: Int? = nil, shipDate: Date? = nil, status: Status? = nil, complete: Bool? = false) { + self.id = id + self.petId = petId + self.quantity = quantity + self.shipDate = shipDate + self.status = status + self.complete = complete + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case id + case petId + case quantity + case shipDate + case status + case complete + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(id, forKey: .id) + try container.encodeIfPresent(petId, forKey: .petId) + try container.encodeIfPresent(quantity, forKey: .quantity) + try container.encodeIfPresent(shipDate, forKey: .shipDate) + try container.encodeIfPresent(status, forKey: .status) + try container.encodeIfPresent(complete, forKey: .complete) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift new file mode 100644 index 00000000000..940ba71637a --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -0,0 +1,37 @@ +// +// OuterComposite.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct OuterComposite: Codable { + + public var myNumber: Double? + public var myString: String? + public var myBoolean: Bool? + + public init(myNumber: Double? = nil, myString: String? = nil, myBoolean: Bool? = nil) { + self.myNumber = myNumber + self.myString = myString + self.myBoolean = myBoolean + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case myNumber = "my_number" + case myString = "my_string" + case myBoolean = "my_boolean" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(myNumber, forKey: .myNumber) + try container.encodeIfPresent(myString, forKey: .myString) + try container.encodeIfPresent(myBoolean, forKey: .myBoolean) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift new file mode 100644 index 00000000000..9bd6f3bef8f --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -0,0 +1,15 @@ +// +// OuterEnum.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public enum OuterEnum: String, Codable, CaseIterable { + case placed = "placed" + case approved = "approved" + case delivered = "delivered" +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift new file mode 100644 index 00000000000..ea9ece39161 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -0,0 +1,55 @@ +// +// Pet.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct Pet: Codable, Hashable { + + public enum Status: String, Codable, CaseIterable { + case available = "available" + case pending = "pending" + case sold = "sold" + } + public var id: Int64? + public var category: Category? + public var name: String + public var photoUrls: [String] + public var tags: [Tag]? + /** pet status in the store */ + public var status: Status? + + public init(id: Int64? = nil, category: Category? = nil, name: String, photoUrls: [String], tags: [Tag]? = nil, status: Status? = nil) { + self.id = id + self.category = category + self.name = name + self.photoUrls = photoUrls + self.tags = tags + self.status = status + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case id + case category + case name + case photoUrls + case tags + case status + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(id, forKey: .id) + try container.encodeIfPresent(category, forKey: .category) + try container.encode(name, forKey: .name) + try container.encode(photoUrls, forKey: .photoUrls) + try container.encodeIfPresent(tags, forKey: .tags) + try container.encodeIfPresent(status, forKey: .status) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift new file mode 100644 index 00000000000..f54c2e9ddab --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -0,0 +1,33 @@ +// +// ReadOnlyFirst.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct ReadOnlyFirst: Codable { + + public var bar: String? + public var baz: String? + + public init(bar: String? = nil, baz: String? = nil) { + self.bar = bar + self.baz = baz + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case bar + case baz + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(bar, forKey: .bar) + try container.encodeIfPresent(baz, forKey: .baz) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Return.swift new file mode 100644 index 00000000000..0053e62ba10 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -0,0 +1,30 @@ +// +// Return.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +/** Model for testing reserved words */ +public struct Return: Codable { + + public var _return: Int? + + public init(_return: Int? = nil) { + self._return = _return + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case _return = "return" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(_return, forKey: ._return) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift new file mode 100644 index 00000000000..373a7e8fc8c --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -0,0 +1,29 @@ +// +// SpecialModelName.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct SpecialModelName: Codable { + + public var specialPropertyName: Int64? + + public init(specialPropertyName: Int64? = nil) { + self.specialPropertyName = specialPropertyName + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case specialPropertyName = "$special[property.name]" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift new file mode 100644 index 00000000000..a103da75ea3 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -0,0 +1,48 @@ +// +// StringBooleanMap.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct StringBooleanMap: Codable { + + + public enum CodingKeys: CodingKey, CaseIterable { + } + + public var additionalProperties: [String: Bool] = [:] + + public subscript(key: String) -> Bool? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: String.self) + + var nonAdditionalPropertyKeys = Set() + additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift new file mode 100644 index 00000000000..5d90c8a7400 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -0,0 +1,33 @@ +// +// Tag.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct Tag: Codable, Hashable { + + public var id: Int64? + public var name: String? + + public init(id: Int64? = nil, name: String? = nil) { + self.id = id + self.name = name + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case id + case name + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(id, forKey: .id) + try container.encodeIfPresent(name, forKey: .name) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift new file mode 100644 index 00000000000..2c4ecd20dde --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -0,0 +1,45 @@ +// +// TypeHolderDefault.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct TypeHolderDefault: Codable { + + public var stringItem: String = "what" + public var numberItem: Double + public var integerItem: Int + public var boolItem: Bool = true + public var arrayItem: [Int] + + public init(stringItem: String = "what", numberItem: Double, integerItem: Int, boolItem: Bool = true, arrayItem: [Int]) { + self.stringItem = stringItem + self.numberItem = numberItem + self.integerItem = integerItem + self.boolItem = boolItem + self.arrayItem = arrayItem + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case stringItem = "string_item" + case numberItem = "number_item" + case integerItem = "integer_item" + case boolItem = "bool_item" + case arrayItem = "array_item" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(stringItem, forKey: .stringItem) + try container.encode(numberItem, forKey: .numberItem) + try container.encode(integerItem, forKey: .integerItem) + try container.encode(boolItem, forKey: .boolItem) + try container.encode(arrayItem, forKey: .arrayItem) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift new file mode 100644 index 00000000000..c6a93c87f8b --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -0,0 +1,45 @@ +// +// TypeHolderExample.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct TypeHolderExample: Codable { + + public var stringItem: String + public var numberItem: Double + public var integerItem: Int + public var boolItem: Bool + public var arrayItem: [Int] + + public init(stringItem: String, numberItem: Double, integerItem: Int, boolItem: Bool, arrayItem: [Int]) { + self.stringItem = stringItem + self.numberItem = numberItem + self.integerItem = integerItem + self.boolItem = boolItem + self.arrayItem = arrayItem + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case stringItem = "string_item" + case numberItem = "number_item" + case integerItem = "integer_item" + case boolItem = "bool_item" + case arrayItem = "array_item" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(stringItem, forKey: .stringItem) + try container.encode(numberItem, forKey: .numberItem) + try container.encode(integerItem, forKey: .integerItem) + try container.encode(boolItem, forKey: .boolItem) + try container.encode(arrayItem, forKey: .arrayItem) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/User.swift new file mode 100644 index 00000000000..c905a34d516 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -0,0 +1,58 @@ +// +// User.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct User: Codable { + + public var id: Int64? + public var username: String? + public var firstName: String? + public var lastName: String? + public var email: String? + public var password: String? + public var phone: String? + /** User Status */ + public var userStatus: Int? + + public init(id: Int64? = nil, username: String? = nil, firstName: String? = nil, lastName: String? = nil, email: String? = nil, password: String? = nil, phone: String? = nil, userStatus: Int? = nil) { + self.id = id + self.username = username + self.firstName = firstName + self.lastName = lastName + self.email = email + self.password = password + self.phone = phone + self.userStatus = userStatus + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case id + case username + case firstName + case lastName + case email + case password + case phone + case userStatus + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(id, forKey: .id) + try container.encodeIfPresent(username, forKey: .username) + try container.encodeIfPresent(firstName, forKey: .firstName) + try container.encodeIfPresent(lastName, forKey: .lastName) + try container.encodeIfPresent(email, forKey: .email) + try container.encodeIfPresent(password, forKey: .password) + try container.encodeIfPresent(phone, forKey: .phone) + try container.encodeIfPresent(userStatus, forKey: .userStatus) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift new file mode 100644 index 00000000000..896202b00ec --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift @@ -0,0 +1,143 @@ +// +// XmlItem.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import AnyCodable + +public struct XmlItem: Codable { + + public var attributeString: String? + public var attributeNumber: Double? + public var attributeInteger: Int? + public var attributeBoolean: Bool? + public var wrappedArray: [Int]? + public var nameString: String? + public var nameNumber: Double? + public var nameInteger: Int? + public var nameBoolean: Bool? + public var nameArray: [Int]? + public var nameWrappedArray: [Int]? + public var prefixString: String? + public var prefixNumber: Double? + public var prefixInteger: Int? + public var prefixBoolean: Bool? + public var prefixArray: [Int]? + public var prefixWrappedArray: [Int]? + public var namespaceString: String? + public var namespaceNumber: Double? + public var namespaceInteger: Int? + public var namespaceBoolean: Bool? + public var namespaceArray: [Int]? + public var namespaceWrappedArray: [Int]? + public var prefixNsString: String? + public var prefixNsNumber: Double? + public var prefixNsInteger: Int? + public var prefixNsBoolean: Bool? + public var prefixNsArray: [Int]? + public var prefixNsWrappedArray: [Int]? + + public init(attributeString: String? = nil, attributeNumber: Double? = nil, attributeInteger: Int? = nil, attributeBoolean: Bool? = nil, wrappedArray: [Int]? = nil, nameString: String? = nil, nameNumber: Double? = nil, nameInteger: Int? = nil, nameBoolean: Bool? = nil, nameArray: [Int]? = nil, nameWrappedArray: [Int]? = nil, prefixString: String? = nil, prefixNumber: Double? = nil, prefixInteger: Int? = nil, prefixBoolean: Bool? = nil, prefixArray: [Int]? = nil, prefixWrappedArray: [Int]? = nil, namespaceString: String? = nil, namespaceNumber: Double? = nil, namespaceInteger: Int? = nil, namespaceBoolean: Bool? = nil, namespaceArray: [Int]? = nil, namespaceWrappedArray: [Int]? = nil, prefixNsString: String? = nil, prefixNsNumber: Double? = nil, prefixNsInteger: Int? = nil, prefixNsBoolean: Bool? = nil, prefixNsArray: [Int]? = nil, prefixNsWrappedArray: [Int]? = nil) { + self.attributeString = attributeString + self.attributeNumber = attributeNumber + self.attributeInteger = attributeInteger + self.attributeBoolean = attributeBoolean + self.wrappedArray = wrappedArray + self.nameString = nameString + self.nameNumber = nameNumber + self.nameInteger = nameInteger + self.nameBoolean = nameBoolean + self.nameArray = nameArray + self.nameWrappedArray = nameWrappedArray + self.prefixString = prefixString + self.prefixNumber = prefixNumber + self.prefixInteger = prefixInteger + self.prefixBoolean = prefixBoolean + self.prefixArray = prefixArray + self.prefixWrappedArray = prefixWrappedArray + self.namespaceString = namespaceString + self.namespaceNumber = namespaceNumber + self.namespaceInteger = namespaceInteger + self.namespaceBoolean = namespaceBoolean + self.namespaceArray = namespaceArray + self.namespaceWrappedArray = namespaceWrappedArray + self.prefixNsString = prefixNsString + self.prefixNsNumber = prefixNsNumber + self.prefixNsInteger = prefixNsInteger + self.prefixNsBoolean = prefixNsBoolean + self.prefixNsArray = prefixNsArray + self.prefixNsWrappedArray = prefixNsWrappedArray + } + public enum CodingKeys: String, CodingKey, CaseIterable { + case attributeString = "attribute_string" + case attributeNumber = "attribute_number" + case attributeInteger = "attribute_integer" + case attributeBoolean = "attribute_boolean" + case wrappedArray = "wrapped_array" + case nameString = "name_string" + case nameNumber = "name_number" + case nameInteger = "name_integer" + case nameBoolean = "name_boolean" + case nameArray = "name_array" + case nameWrappedArray = "name_wrapped_array" + case prefixString = "prefix_string" + case prefixNumber = "prefix_number" + case prefixInteger = "prefix_integer" + case prefixBoolean = "prefix_boolean" + case prefixArray = "prefix_array" + case prefixWrappedArray = "prefix_wrapped_array" + case namespaceString = "namespace_string" + case namespaceNumber = "namespace_number" + case namespaceInteger = "namespace_integer" + case namespaceBoolean = "namespace_boolean" + case namespaceArray = "namespace_array" + case namespaceWrappedArray = "namespace_wrapped_array" + case prefixNsString = "prefix_ns_string" + case prefixNsNumber = "prefix_ns_number" + case prefixNsInteger = "prefix_ns_integer" + case prefixNsBoolean = "prefix_ns_boolean" + case prefixNsArray = "prefix_ns_array" + case prefixNsWrappedArray = "prefix_ns_wrapped_array" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(attributeString, forKey: .attributeString) + try container.encodeIfPresent(attributeNumber, forKey: .attributeNumber) + try container.encodeIfPresent(attributeInteger, forKey: .attributeInteger) + try container.encodeIfPresent(attributeBoolean, forKey: .attributeBoolean) + try container.encodeIfPresent(wrappedArray, forKey: .wrappedArray) + try container.encodeIfPresent(nameString, forKey: .nameString) + try container.encodeIfPresent(nameNumber, forKey: .nameNumber) + try container.encodeIfPresent(nameInteger, forKey: .nameInteger) + try container.encodeIfPresent(nameBoolean, forKey: .nameBoolean) + try container.encodeIfPresent(nameArray, forKey: .nameArray) + try container.encodeIfPresent(nameWrappedArray, forKey: .nameWrappedArray) + try container.encodeIfPresent(prefixString, forKey: .prefixString) + try container.encodeIfPresent(prefixNumber, forKey: .prefixNumber) + try container.encodeIfPresent(prefixInteger, forKey: .prefixInteger) + try container.encodeIfPresent(prefixBoolean, forKey: .prefixBoolean) + try container.encodeIfPresent(prefixArray, forKey: .prefixArray) + try container.encodeIfPresent(prefixWrappedArray, forKey: .prefixWrappedArray) + try container.encodeIfPresent(namespaceString, forKey: .namespaceString) + try container.encodeIfPresent(namespaceNumber, forKey: .namespaceNumber) + try container.encodeIfPresent(namespaceInteger, forKey: .namespaceInteger) + try container.encodeIfPresent(namespaceBoolean, forKey: .namespaceBoolean) + try container.encodeIfPresent(namespaceArray, forKey: .namespaceArray) + try container.encodeIfPresent(namespaceWrappedArray, forKey: .namespaceWrappedArray) + try container.encodeIfPresent(prefixNsString, forKey: .prefixNsString) + try container.encodeIfPresent(prefixNsNumber, forKey: .prefixNsNumber) + try container.encodeIfPresent(prefixNsInteger, forKey: .prefixNsInteger) + try container.encodeIfPresent(prefixNsBoolean, forKey: .prefixNsBoolean) + try container.encodeIfPresent(prefixNsArray, forKey: .prefixNsArray) + try container.encodeIfPresent(prefixNsWrappedArray, forKey: .prefixNsWrappedArray) + } + + + +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/OpenISO8601DateFormatter.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/OpenISO8601DateFormatter.swift new file mode 100644 index 00000000000..e06208074cd --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/OpenISO8601DateFormatter.swift @@ -0,0 +1,44 @@ +// +// OpenISO8601DateFormatter.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +// https://stackoverflow.com/a/50281094/976628 +public class OpenISO8601DateFormatter: DateFormatter { + static let withoutSeconds: DateFormatter = { + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .iso8601) + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.timeZone = TimeZone(secondsFromGMT: 0) + formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" + return formatter + }() + + private func setup() { + calendar = Calendar(identifier: .iso8601) + locale = Locale(identifier: "en_US_POSIX") + timeZone = TimeZone(secondsFromGMT: 0) + dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" + } + + override init() { + super.init() + setup() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setup() + } + + override public func date(from string: String) -> Date? { + if let result = super.date(from: string) { + return result + } + return OpenISO8601DateFormatter.withoutSeconds.date(from: string) + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/SynchronizedDictionary.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/SynchronizedDictionary.swift new file mode 100644 index 00000000000..acf7ff4031b --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/SynchronizedDictionary.swift @@ -0,0 +1,36 @@ +// SynchronizedDictionary.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct SynchronizedDictionary { + + private var dictionary = [K: V]() + private let queue = DispatchQueue( + label: "SynchronizedDictionary", + qos: DispatchQoS.userInitiated, + attributes: [DispatchQueue.Attributes.concurrent], + autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency.inherit, + target: nil + ) + + internal subscript(key: K) -> V? { + get { + var value: V? + + queue.sync { + value = self.dictionary[key] + } + + return value + } + set { + queue.sync(flags: DispatchWorkItemFlags.barrier) { + self.dictionary[key] = newValue + } + } + } +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift new file mode 100644 index 00000000000..52b2071ec1a --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -0,0 +1,606 @@ +// URLSessionImplementations.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if !os(macOS) +import MobileCoreServices +#endif + +class URLSessionRequestBuilderFactory: RequestBuilderFactory { + func getNonDecodableBuilder() -> RequestBuilder.Type { + return URLSessionRequestBuilder.self + } + + func getBuilder() -> RequestBuilder.Type { + return URLSessionDecodableRequestBuilder.self + } +} + +// Store the URLSession to retain its reference +private var urlSessionStore = SynchronizedDictionary() + +open class URLSessionRequestBuilder: RequestBuilder { + + /** + May be assigned if you want to control the authentication challenges. + */ + public var taskDidReceiveChallenge: ((URLSession, URLSessionTask, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))? + + /** + May be assigned if you want to do any of those things: + - control the task completion + - intercept and handle errors like authorization + - retry the request. + */ + @available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client") + public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)? + + required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) { + super.init(method: method, URLString: URLString, parameters: parameters, headers: headers) + } + + /** + May be overridden by a subclass if you want to control the URLSession + configuration. + */ + open func createURLSession() -> URLSession { + let configuration = URLSessionConfiguration.default + configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() + sessionDelegate.credential = credential + sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge + return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) + } + + /** + May be overridden by a subclass if you want to control the Content-Type + that is given to an uploaded form part. + + Return nil to use the default behavior (inferring the Content-Type from + the file extension). Return the desired Content-Type otherwise. + */ + open func contentTypeForFormPart(fileURL: URL) -> String? { + return nil + } + + /** + May be overridden by a subclass if you want to control the URLRequest + configuration (e.g. to override the cache policy). + */ + open func createURLRequest(urlSession: URLSession, method: HTTPMethod, encoding: ParameterEncoding, headers: [String: String]) throws -> URLRequest { + + guard let url = URL(string: URLString) else { + throw DownloadException.requestMissingURL + } + + var originalRequest = URLRequest(url: url) + + originalRequest.httpMethod = method.rawValue + + headers.forEach { key, value in + originalRequest.setValue(value, forHTTPHeaderField: key) + } + + buildHeaders().forEach { key, value in + originalRequest.setValue(value, forHTTPHeaderField: key) + } + + let modifiedRequest = try encoding.encode(originalRequest, with: parameters) + + return modifiedRequest + } + + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + let urlSessionId = UUID().uuidString + // Create a new manager for each request to customize its request header + let urlSession = createURLSession() + urlSessionStore[urlSessionId] = urlSession + + guard let xMethod = HTTPMethod(rawValue: method) else { + fatalError("Unsuported Http method - \(method)") + } + + let encoding: ParameterEncoding + + switch xMethod { + case .get, .head: + encoding = URLEncoding() + + case .options, .post, .put, .patch, .delete, .trace, .connect: + let contentType = headers["Content-Type"] ?? "application/json" + + if contentType == "application/json" { + encoding = JSONDataEncoding() + } else if contentType == "multipart/form-data" { + encoding = FormDataEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:)) + } else if contentType == "application/x-www-form-urlencoded" { + encoding = FormURLEncoding() + } else { + fatalError("Unsuported Media Type - \(contentType)") + } + } + + let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() + urlSessionStore[urlSessionId] = nil + } + + do { + let request = try createURLRequest(urlSession: urlSession, method: xMethod, encoding: encoding, headers: headers) + + let dataTask = urlSession.dataTask(with: request) { data, response, error in + + if let taskCompletionShouldRetry = self.taskCompletionShouldRetry { + + taskCompletionShouldRetry(data, response, error) { shouldRetry in + + if shouldRetry { + cleanupRequest() + self.execute(apiResponseQueue, completion) + } else { + apiResponseQueue.async { + self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() + } + } + } + } else { + apiResponseQueue.async { + self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() + } + } + } + + if #available(iOS 11.0, macOS 10.13, macCatalyst 13.0, tvOS 11.0, watchOS 4.0, *) { + onProgressReady?(dataTask.progress) + } + + dataTask.resume() + + } catch { + apiResponseQueue.async { + cleanupRequest() + completion(.failure(ErrorResponse.error(415, nil, nil, error))) + } + } + } + + fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + + if let error = error { + completion(.failure(ErrorResponse.error(-1, data, response, error))) + return + } + + guard let httpResponse = response as? HTTPURLResponse else { + completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse))) + return + } + + guard httpResponse.isStatusCodeSuccessful else { + completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode))) + return + } + + switch T.self { + case is String.Type: + + let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" + + completion(.success(Response(response: httpResponse, body: body as? T))) + + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } + + let filePath = documentsDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + + case is Void.Type: + + completion(.success(Response(response: httpResponse, body: nil))) + + default: + + completion(.success(Response(response: httpResponse, body: data as? T))) + } + + } + + open func buildHeaders() -> [String: String] { + var httpHeaders: [String: String] = [:] + for (key, value) in headers { + httpHeaders[key] = value + } + for (key, value) in PetstoreClientAPI.customHeaders { + httpHeaders[key] = value + } + return httpHeaders + } + + fileprivate func getFileName(fromContentDisposition contentDisposition: String?) -> String? { + + guard let contentDisposition = contentDisposition else { + return nil + } + + let items = contentDisposition.components(separatedBy: ";") + + var filename: String? + + for contentItem in items { + + let filenameKey = "filename=" + guard let range = contentItem.range(of: filenameKey) else { + break + } + + filename = contentItem + return filename? + .replacingCharacters(in: range, with: "") + .replacingOccurrences(of: "\"", with: "") + .trimmingCharacters(in: .whitespacesAndNewlines) + } + + return filename + + } + + fileprivate func getPath(from url: URL) throws -> String { + + guard var path = URLComponents(url: url, resolvingAgainstBaseURL: true)?.path else { + throw DownloadException.requestMissingPath + } + + if path.hasPrefix("/") { + path.remove(at: path.startIndex) + } + + return path + + } + + fileprivate func getURL(from urlRequest: URLRequest) throws -> URL { + + guard let url = urlRequest.url else { + throw DownloadException.requestMissingURL + } + + return url + } + +} + +open class URLSessionDecodableRequestBuilder: URLSessionRequestBuilder { + override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + + if let error = error { + completion(.failure(ErrorResponse.error(-1, data, response, error))) + return + } + + guard let httpResponse = response as? HTTPURLResponse else { + completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse))) + return + } + + guard httpResponse.isStatusCodeSuccessful else { + completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode))) + return + } + + switch T.self { + case is String.Type: + + let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" + + completion(.success(Response(response: httpResponse, body: body as? T))) + + case is Void.Type: + + completion(.success(Response(response: httpResponse, body: nil))) + + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + + default: + + guard let data = data, !data.isEmpty else { + completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) + return + } + + let decodeResult = CodableHelper.decode(T.self, from: data) + + switch decodeResult { + case let .success(decodableObj): + completion(.success(Response(response: httpResponse, body: decodableObj))) + case let .failure(error): + completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + } + } + } +} + +private class SessionDelegate: NSObject, URLSessionDelegate, URLSessionDataDelegate { + + var credential: URLCredential? + + var taskDidReceiveChallenge: ((URLSession, URLSessionTask, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))? + + func urlSession(_ session: URLSession, task: URLSessionTask, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { + + var disposition: URLSession.AuthChallengeDisposition = .performDefaultHandling + + var credential: URLCredential? + + if let taskDidReceiveChallenge = taskDidReceiveChallenge { + (disposition, credential) = taskDidReceiveChallenge(session, task, challenge) + } else { + if challenge.previousFailureCount > 0 { + disposition = .rejectProtectionSpace + } else { + credential = self.credential ?? session.configuration.urlCredentialStorage?.defaultCredential(for: challenge.protectionSpace) + + if credential != nil { + disposition = .useCredential + } + } + } + + completionHandler(disposition, credential) + } +} + +public enum HTTPMethod: String { + case options = "OPTIONS" + case get = "GET" + case head = "HEAD" + case post = "POST" + case put = "PUT" + case patch = "PATCH" + case delete = "DELETE" + case trace = "TRACE" + case connect = "CONNECT" +} + +public protocol ParameterEncoding { + func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest +} + +private class URLEncoding: ParameterEncoding { + func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest { + + var urlRequest = urlRequest + + guard let parameters = parameters else { return urlRequest } + + guard let url = urlRequest.url else { + throw DownloadException.requestMissingURL + } + + if var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false), !parameters.isEmpty { + urlComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters) + urlRequest.url = urlComponents.url + } + + return urlRequest + } +} + +private class FormDataEncoding: ParameterEncoding { + + let contentTypeForFormPart: (_ fileURL: URL) -> String? + + init(contentTypeForFormPart: @escaping (_ fileURL: URL) -> String?) { + self.contentTypeForFormPart = contentTypeForFormPart + } + + func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest { + + var urlRequest = urlRequest + + guard let parameters = parameters, !parameters.isEmpty else { + return urlRequest + } + + let boundary = "Boundary-\(UUID().uuidString)" + + urlRequest.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") + + for (key, value) in parameters { + switch value { + case let fileURL as URL: + + urlRequest = try configureFileUploadRequest( + urlRequest: urlRequest, + boundary: boundary, + name: key, + fileURL: fileURL + ) + + case let string as String: + + if let data = string.data(using: .utf8) { + urlRequest = configureDataUploadRequest( + urlRequest: urlRequest, + boundary: boundary, + name: key, + data: data + ) + } + + case let number as NSNumber: + + if let data = number.stringValue.data(using: .utf8) { + urlRequest = configureDataUploadRequest( + urlRequest: urlRequest, + boundary: boundary, + name: key, + data: data + ) + } + + default: + fatalError("Unprocessable value \(value) with key \(key)") + } + } + + var body = urlRequest.httpBody.orEmpty + + body.append("\r\n--\(boundary)--\r\n") + + urlRequest.httpBody = body + + return urlRequest + } + + private func configureFileUploadRequest(urlRequest: URLRequest, boundary: String, name: String, fileURL: URL) throws -> URLRequest { + + var urlRequest = urlRequest + + var body = urlRequest.httpBody.orEmpty + + let fileData = try Data(contentsOf: fileURL) + + let mimetype = contentTypeForFormPart(fileURL) ?? mimeType(for: fileURL) + + let fileName = fileURL.lastPathComponent + + // If we already added something then we need an additional newline. + if body.count > 0 { + body.append("\r\n") + } + + // Value boundary. + body.append("--\(boundary)\r\n") + + // Value headers. + body.append("Content-Disposition: form-data; name=\"\(name)\"; filename=\"\(fileName)\"\r\n") + body.append("Content-Type: \(mimetype)\r\n") + + // Separate headers and body. + body.append("\r\n") + + // The value data. + body.append(fileData) + + urlRequest.httpBody = body + + return urlRequest + } + + private func configureDataUploadRequest(urlRequest: URLRequest, boundary: String, name: String, data: Data) -> URLRequest { + + var urlRequest = urlRequest + + var body = urlRequest.httpBody.orEmpty + + // If we already added something then we need an additional newline. + if body.count > 0 { + body.append("\r\n") + } + + // Value boundary. + body.append("--\(boundary)\r\n") + + // Value headers. + body.append("Content-Disposition: form-data; name=\"\(name)\"\r\n") + + // Separate headers and body. + body.append("\r\n") + + // The value data. + body.append(data) + + urlRequest.httpBody = body + + return urlRequest + + } + + func mimeType(for url: URL) -> String { + let pathExtension = url.pathExtension + + if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() { + if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() { + return mimetype as String + } + } + return "application/octet-stream" + } + +} + +private class FormURLEncoding: ParameterEncoding { + func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest { + + var urlRequest = urlRequest + + var requestBodyComponents = URLComponents() + requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:]) + + if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil { + urlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") + } + + urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8) + + return urlRequest + } +} + +private extension Data { + /// Append string to Data + /// + /// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8. + /// + /// - parameter string: The string to be added to the `Data`. + + mutating func append(_ string: String) { + if let data = string.data(using: .utf8) { + append(data) + } + } +} + +private extension Optional where Wrapped == Data { + var orEmpty: Data { + self ?? Data() + } +} + +extension JSONDataEncoding: ParameterEncoding {} diff --git a/samples/client/petstore/swift5/x-swift-hashable/README.md b/samples/client/petstore/swift5/x-swift-hashable/README.md new file mode 100644 index 00000000000..1725415f7e0 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/README.md @@ -0,0 +1,141 @@ +# Swift5 API client for PetstoreClient + +This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + +## Overview +This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate an API client. + +- API version: 1.0.0 +- Package version: +- Build package: org.openapitools.codegen.languages.Swift5ClientCodegen + +## Installation + +### Carthage + +Run `carthage update` + +### CocoaPods + +Run `pod install` + +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*AnotherFakeAPI* | [**call123testSpecialTags**](docs/AnotherFakeAPI.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*FakeAPI* | [**fakeOuterBooleanSerialize**](docs/FakeAPI.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeAPI* | [**fakeOuterCompositeSerialize**](docs/FakeAPI.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeAPI* | [**fakeOuterNumberSerialize**](docs/FakeAPI.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeAPI* | [**fakeOuterStringSerialize**](docs/FakeAPI.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeAPI* | [**testBodyWithFileSchema**](docs/FakeAPI.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeAPI* | [**testBodyWithQueryParams**](docs/FakeAPI.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeAPI* | [**testClientModel**](docs/FakeAPI.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeAPI* | [**testEndpointParameters**](docs/FakeAPI.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeAPI* | [**testEnumParameters**](docs/FakeAPI.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeAPI* | [**testGroupParameters**](docs/FakeAPI.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeAPI* | [**testInlineAdditionalProperties**](docs/FakeAPI.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeAPI* | [**testJsonFormData**](docs/FakeAPI.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeClassnameTags123API* | [**testClassname**](docs/FakeClassnameTags123API.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetAPI* | [**addPet**](docs/PetAPI.md#addpet) | **POST** /pet | Add a new pet to the store +*PetAPI* | [**deletePet**](docs/PetAPI.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetAPI* | [**findPetsByStatus**](docs/PetAPI.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetAPI* | [**findPetsByTags**](docs/PetAPI.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetAPI* | [**getPetById**](docs/PetAPI.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetAPI* | [**updatePet**](docs/PetAPI.md#updatepet) | **PUT** /pet | Update an existing pet +*PetAPI* | [**updatePetWithForm**](docs/PetAPI.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetAPI* | [**uploadFile**](docs/PetAPI.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetAPI* | [**uploadFileWithRequiredFile**](docs/PetAPI.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreAPI* | [**deleteOrder**](docs/StoreAPI.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreAPI* | [**getInventory**](docs/StoreAPI.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreAPI* | [**getOrderById**](docs/StoreAPI.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreAPI* | [**placeOrder**](docs/StoreAPI.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserAPI* | [**createUser**](docs/UserAPI.md#createuser) | **POST** /user | Create user +*UserAPI* | [**createUsersWithArrayInput**](docs/UserAPI.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserAPI* | [**createUsersWithListInput**](docs/UserAPI.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserAPI* | [**deleteUser**](docs/UserAPI.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserAPI* | [**getUserByName**](docs/UserAPI.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserAPI* | [**loginUser**](docs/UserAPI.md#loginuser) | **GET** /user/login | Logs user into the system +*UserAPI* | [**logoutUser**](docs/UserAPI.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserAPI* | [**updateUser**](docs/UserAPI.md#updateuser) | **PUT** /user/{username} | Updated user + + +## Documentation For Models + + - [AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md) + - [Animal](docs/Animal.md) + - [AnimalFarm](docs/AnimalFarm.md) + - [ApiResponse](docs/ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md) + - [ArrayTest](docs/ArrayTest.md) + - [Capitalization](docs/Capitalization.md) + - [Cat](docs/Cat.md) + - [CatAllOf](docs/CatAllOf.md) + - [Category](docs/Category.md) + - [ClassModel](docs/ClassModel.md) + - [Client](docs/Client.md) + - [Dog](docs/Dog.md) + - [DogAllOf](docs/DogAllOf.md) + - [EnumArrays](docs/EnumArrays.md) + - [EnumClass](docs/EnumClass.md) + - [EnumTest](docs/EnumTest.md) + - [File](docs/File.md) + - [FileSchemaTestClass](docs/FileSchemaTestClass.md) + - [FormatTest](docs/FormatTest.md) + - [HasOnlyReadOnly](docs/HasOnlyReadOnly.md) + - [List](docs/List.md) + - [MapTest](docs/MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](docs/Model200Response.md) + - [Name](docs/Name.md) + - [NumberOnly](docs/NumberOnly.md) + - [Order](docs/Order.md) + - [OuterComposite](docs/OuterComposite.md) + - [OuterEnum](docs/OuterEnum.md) + - [Pet](docs/Pet.md) + - [ReadOnlyFirst](docs/ReadOnlyFirst.md) + - [Return](docs/Return.md) + - [SpecialModelName](docs/SpecialModelName.md) + - [StringBooleanMap](docs/StringBooleanMap.md) + - [Tag](docs/Tag.md) + - [TypeHolderDefault](docs/TypeHolderDefault.md) + - [TypeHolderExample](docs/TypeHolderExample.md) + - [User](docs/User.md) + + +## Documentation For Authorization + + +## api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + +## api_key_query + +- **Type**: API key +- **API key parameter name**: api_key_query +- **Location**: URL query string + +## http_basic_test + +- **Type**: HTTP basic authentication + +## petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - **write:pets**: modify pets in your account + - **read:pets**: read your pets + + +## Author + + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesAnyType.md b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesAnyType.md new file mode 100644 index 00000000000..bae60ab148f --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesAnyType.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesAnyType + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesArray.md b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesArray.md new file mode 100644 index 00000000000..a371b5e28f3 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesArray.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesArray + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesBoolean.md b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesBoolean.md new file mode 100644 index 00000000000..d5f0d6da11e --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesBoolean.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesBoolean + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesClass.md b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesClass.md new file mode 100644 index 00000000000..1f222244134 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesClass.md @@ -0,0 +1,11 @@ +# AdditionalPropertiesClass + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**mapString** | **[String: String]** | | [optional] +**mapMapString** | [String: [String: String]] | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesInteger.md b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesInteger.md new file mode 100644 index 00000000000..629293abdfe --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesInteger.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesInteger + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesNumber.md b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesNumber.md new file mode 100644 index 00000000000..65adfe78137 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesNumber.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesNumber + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesObject.md b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesObject.md new file mode 100644 index 00000000000..99d69b7aae6 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesObject.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesObject + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesString.md b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesString.md new file mode 100644 index 00000000000..5bb8122887c --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/AdditionalPropertiesString.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesString + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/Animal.md b/samples/client/petstore/swift5/x-swift-hashable/docs/Animal.md new file mode 100644 index 00000000000..69c601455cd --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/Animal.md @@ -0,0 +1,11 @@ +# Animal + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**className** | **String** | | +**color** | **String** | | [optional] [default to "red"] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/AnimalFarm.md b/samples/client/petstore/swift5/x-swift-hashable/docs/AnimalFarm.md new file mode 100644 index 00000000000..df6bab21dae --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/AnimalFarm.md @@ -0,0 +1,9 @@ +# AnimalFarm + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/AnotherFakeAPI.md b/samples/client/petstore/swift5/x-swift-hashable/docs/AnotherFakeAPI.md new file mode 100644 index 00000000000..aead5f1f980 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/AnotherFakeAPI.md @@ -0,0 +1,59 @@ +# AnotherFakeAPI + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**call123testSpecialTags**](AnotherFakeAPI.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags + + +# **call123testSpecialTags** +```swift + open class func call123testSpecialTags(body: Client, completion: @escaping (_ data: Client?, _ error: Error?) -> Void) +``` + +To test special tags + +To test special tags and operation ID starting with number + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = Client(client: "client_example") // Client | client model + +// To test special tags +AnotherFakeAPI.call123testSpecialTags(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Client**](Client.md) | client model | + +### Return type + +[**Client**](Client.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/ApiResponse.md b/samples/client/petstore/swift5/x-swift-hashable/docs/ApiResponse.md new file mode 100644 index 00000000000..c6d9768fe9b --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/ApiResponse.md @@ -0,0 +1,12 @@ +# ApiResponse + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**code** | **Int** | | [optional] +**type** | **String** | | [optional] +**message** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/ArrayOfArrayOfNumberOnly.md b/samples/client/petstore/swift5/x-swift-hashable/docs/ArrayOfArrayOfNumberOnly.md new file mode 100644 index 00000000000..c6fceff5e08 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/ArrayOfArrayOfNumberOnly.md @@ -0,0 +1,10 @@ +# ArrayOfArrayOfNumberOnly + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**arrayArrayNumber** | [[Double]] | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/ArrayOfNumberOnly.md b/samples/client/petstore/swift5/x-swift-hashable/docs/ArrayOfNumberOnly.md new file mode 100644 index 00000000000..f09f8fa6f70 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/ArrayOfNumberOnly.md @@ -0,0 +1,10 @@ +# ArrayOfNumberOnly + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**arrayNumber** | **[Double]** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/ArrayTest.md b/samples/client/petstore/swift5/x-swift-hashable/docs/ArrayTest.md new file mode 100644 index 00000000000..bf416b8330c --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/ArrayTest.md @@ -0,0 +1,12 @@ +# ArrayTest + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**arrayOfString** | **[String]** | | [optional] +**arrayArrayOfInteger** | [[Int64]] | | [optional] +**arrayArrayOfModel** | [[ReadOnlyFirst]] | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/BigCat.md b/samples/client/petstore/swift5/x-swift-hashable/docs/BigCat.md new file mode 100644 index 00000000000..cd904c7381a --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/BigCat.md @@ -0,0 +1,10 @@ +# BigCat + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**kind** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/BigCatAllOf.md b/samples/client/petstore/swift5/x-swift-hashable/docs/BigCatAllOf.md new file mode 100644 index 00000000000..20da4caf5d0 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/BigCatAllOf.md @@ -0,0 +1,10 @@ +# BigCatAllOf + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**kind** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/Capitalization.md b/samples/client/petstore/swift5/x-swift-hashable/docs/Capitalization.md new file mode 100644 index 00000000000..95374216c77 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/Capitalization.md @@ -0,0 +1,15 @@ +# Capitalization + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**smallCamel** | **String** | | [optional] +**capitalCamel** | **String** | | [optional] +**smallSnake** | **String** | | [optional] +**capitalSnake** | **String** | | [optional] +**sCAETHFlowPoints** | **String** | | [optional] +**ATT_NAME** | **String** | Name 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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/Cat.md b/samples/client/petstore/swift5/x-swift-hashable/docs/Cat.md new file mode 100644 index 00000000000..fb5949b1576 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/Cat.md @@ -0,0 +1,10 @@ +# Cat + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**declawed** | **Bool** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/CatAllOf.md b/samples/client/petstore/swift5/x-swift-hashable/docs/CatAllOf.md new file mode 100644 index 00000000000..79789be61c0 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/CatAllOf.md @@ -0,0 +1,10 @@ +# CatAllOf + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**declawed** | **Bool** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/Category.md b/samples/client/petstore/swift5/x-swift-hashable/docs/Category.md new file mode 100644 index 00000000000..5ca5408c0f9 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/Category.md @@ -0,0 +1,11 @@ +# Category + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Int64** | | [optional] +**name** | **String** | | [default to "default-name"] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/ClassModel.md b/samples/client/petstore/swift5/x-swift-hashable/docs/ClassModel.md new file mode 100644 index 00000000000..e3912fdf0fd --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/ClassModel.md @@ -0,0 +1,10 @@ +# ClassModel + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**_class** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/Client.md b/samples/client/petstore/swift5/x-swift-hashable/docs/Client.md new file mode 100644 index 00000000000..0de1b238c36 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/Client.md @@ -0,0 +1,10 @@ +# Client + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**client** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/Dog.md b/samples/client/petstore/swift5/x-swift-hashable/docs/Dog.md new file mode 100644 index 00000000000..4824786da04 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/Dog.md @@ -0,0 +1,10 @@ +# Dog + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**breed** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/DogAllOf.md b/samples/client/petstore/swift5/x-swift-hashable/docs/DogAllOf.md new file mode 100644 index 00000000000..9302ef52e93 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/DogAllOf.md @@ -0,0 +1,10 @@ +# DogAllOf + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**breed** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/EnumArrays.md b/samples/client/petstore/swift5/x-swift-hashable/docs/EnumArrays.md new file mode 100644 index 00000000000..b9a9807d3c8 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/EnumArrays.md @@ -0,0 +1,11 @@ +# EnumArrays + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**justSymbol** | **String** | | [optional] +**arrayEnum** | **[String]** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/EnumClass.md b/samples/client/petstore/swift5/x-swift-hashable/docs/EnumClass.md new file mode 100644 index 00000000000..67f017becd0 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/EnumClass.md @@ -0,0 +1,9 @@ +# EnumClass + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/EnumTest.md b/samples/client/petstore/swift5/x-swift-hashable/docs/EnumTest.md new file mode 100644 index 00000000000..bc9b036dd76 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/EnumTest.md @@ -0,0 +1,14 @@ +# EnumTest + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**enumString** | **String** | | [optional] +**enumStringRequired** | **String** | | +**enumInteger** | **Int** | | [optional] +**enumNumber** | **Double** | | [optional] +**outerEnum** | [**OuterEnum**](OuterEnum.md) | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/FakeAPI.md b/samples/client/petstore/swift5/x-swift-hashable/docs/FakeAPI.md new file mode 100644 index 00000000000..543869c0d2e --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/FakeAPI.md @@ -0,0 +1,662 @@ +# FakeAPI + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**fakeOuterBooleanSerialize**](FakeAPI.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +[**fakeOuterCompositeSerialize**](FakeAPI.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +[**fakeOuterNumberSerialize**](FakeAPI.md#fakeouternumberserialize) | **POST** /fake/outer/number | +[**fakeOuterStringSerialize**](FakeAPI.md#fakeouterstringserialize) | **POST** /fake/outer/string | +[**testBodyWithFileSchema**](FakeAPI.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +[**testBodyWithQueryParams**](FakeAPI.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +[**testClientModel**](FakeAPI.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +[**testEndpointParameters**](FakeAPI.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +[**testEnumParameters**](FakeAPI.md#testenumparameters) | **GET** /fake | To test enum parameters +[**testGroupParameters**](FakeAPI.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +[**testInlineAdditionalProperties**](FakeAPI.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +[**testJsonFormData**](FakeAPI.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data + + +# **fakeOuterBooleanSerialize** +```swift + open class func fakeOuterBooleanSerialize(body: Bool? = nil, completion: @escaping (_ data: Bool?, _ error: Error?) -> Void) +``` + + + +Test serialization of outer boolean types + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = true // Bool | Input boolean as post body (optional) + +FakeAPI.fakeOuterBooleanSerialize(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **Bool** | Input boolean as post body | [optional] + +### Return type + +**Bool** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: */* + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **fakeOuterCompositeSerialize** +```swift + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, completion: @escaping (_ data: OuterComposite?, _ error: Error?) -> Void) +``` + + + +Test serialization of object with outer number type + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = OuterComposite(myNumber: 123, myString: "myString_example", myBoolean: false) // OuterComposite | Input composite as post body (optional) + +FakeAPI.fakeOuterCompositeSerialize(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**OuterComposite**](OuterComposite.md) | Input composite as post body | [optional] + +### Return type + +[**OuterComposite**](OuterComposite.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: */* + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **fakeOuterNumberSerialize** +```swift + open class func fakeOuterNumberSerialize(body: Double? = nil, completion: @escaping (_ data: Double?, _ error: Error?) -> Void) +``` + + + +Test serialization of outer number types + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = 987 // Double | Input number as post body (optional) + +FakeAPI.fakeOuterNumberSerialize(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **Double** | Input number as post body | [optional] + +### Return type + +**Double** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: */* + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **fakeOuterStringSerialize** +```swift + open class func fakeOuterStringSerialize(body: String? = nil, completion: @escaping (_ data: String?, _ error: Error?) -> Void) +``` + + + +Test serialization of outer string types + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = "body_example" // String | Input string as post body (optional) + +FakeAPI.fakeOuterStringSerialize(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **String** | Input string as post body | [optional] + +### Return type + +**String** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: */* + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testBodyWithFileSchema** +```swift + open class func testBodyWithFileSchema(body: FileSchemaTestClass, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + + + +For this test, the body for this request much reference a schema named `File`. + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = FileSchemaTestClass(file: File(sourceURI: "sourceURI_example"), files: [nil]) // FileSchemaTestClass | + +FakeAPI.testBodyWithFileSchema(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**FileSchemaTestClass**](FileSchemaTestClass.md) | | + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testBodyWithQueryParams** +```swift + open class func testBodyWithQueryParams(query: String, body: User, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + + + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let query = "query_example" // String | +let body = User(id: 123, username: "username_example", firstName: "firstName_example", lastName: "lastName_example", email: "email_example", password: "password_example", phone: "phone_example", userStatus: 123) // User | + +FakeAPI.testBodyWithQueryParams(query: query, body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **query** | **String** | | + **body** | [**User**](User.md) | | + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testClientModel** +```swift + open class func testClientModel(body: Client, completion: @escaping (_ data: Client?, _ error: Error?) -> Void) +``` + +To test \"client\" model + +To test \"client\" model + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = Client(client: "client_example") // Client | client model + +// To test \"client\" model +FakeAPI.testClientModel(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Client**](Client.md) | client model | + +### Return type + +[**Client**](Client.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testEndpointParameters** +```swift + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + +Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let number = 987 // Double | None +let double = 987 // Double | None +let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None +let byte = 987 // Data | None +let integer = 987 // Int | None (optional) +let int32 = 987 // Int | None (optional) +let int64 = 987 // Int64 | None (optional) +let float = 987 // Float | None (optional) +let string = "string_example" // String | None (optional) +let binary = URL(string: "https://example.com")! // URL | None (optional) +let date = Date() // Date | None (optional) +let dateTime = Date() // Date | None (optional) +let password = "password_example" // String | None (optional) +let callback = "callback_example" // String | None (optional) + +// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +FakeAPI.testEndpointParameters(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **number** | **Double** | None | + **double** | **Double** | None | + **patternWithoutDelimiter** | **String** | None | + **byte** | **Data** | None | + **integer** | **Int** | None | [optional] + **int32** | **Int** | None | [optional] + **int64** | **Int64** | None | [optional] + **float** | **Float** | None | [optional] + **string** | **String** | None | [optional] + **binary** | **URL** | None | [optional] + **date** | **Date** | None | [optional] + **dateTime** | **Date** | None | [optional] + **password** | **String** | None | [optional] + **callback** | **String** | None | [optional] + +### Return type + +Void (empty response body) + +### Authorization + +[http_basic_test](../README.md#http_basic_test) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testEnumParameters** +```swift + open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +To test enum parameters + +To test enum parameters + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let enumHeaderStringArray = ["enumHeaderStringArray_example"] // [String] | Header parameter enum test (string array) (optional) +let enumHeaderString = "enumHeaderString_example" // String | Header parameter enum test (string) (optional) (default to .efg) +let enumQueryStringArray = ["enumQueryStringArray_example"] // [String] | Query parameter enum test (string array) (optional) +let enumQueryString = "enumQueryString_example" // String | Query parameter enum test (string) (optional) (default to .efg) +let enumQueryInteger = 987 // Int | Query parameter enum test (double) (optional) +let enumQueryDouble = 987 // Double | Query parameter enum test (double) (optional) +let enumFormStringArray = ["inner_example"] // [String] | Form parameter enum test (string array) (optional) (default to .dollar) +let enumFormString = "enumFormString_example" // String | Form parameter enum test (string) (optional) (default to .efg) + +// To test enum parameters +FakeAPI.testEnumParameters(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **enumHeaderStringArray** | [**[String]**](String.md) | Header parameter enum test (string array) | [optional] + **enumHeaderString** | **String** | Header parameter enum test (string) | [optional] [default to .efg] + **enumQueryStringArray** | [**[String]**](String.md) | Query parameter enum test (string array) | [optional] + **enumQueryString** | **String** | Query parameter enum test (string) | [optional] [default to .efg] + **enumQueryInteger** | **Int** | Query parameter enum test (double) | [optional] + **enumQueryDouble** | **Double** | Query parameter enum test (double) | [optional] + **enumFormStringArray** | [**[String]**](String.md) | Form parameter enum test (string array) | [optional] [default to .dollar] + **enumFormString** | **String** | Form parameter enum test (string) | [optional] [default to .efg] + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testGroupParameters** +```swift + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Fake endpoint to test group parameters (optional) + +Fake endpoint to test group parameters (optional) + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let requiredStringGroup = 987 // Int | Required String in group parameters +let requiredBooleanGroup = true // Bool | Required Boolean in group parameters +let requiredInt64Group = 987 // Int64 | Required Integer in group parameters +let stringGroup = 987 // Int | String in group parameters (optional) +let booleanGroup = true // Bool | Boolean in group parameters (optional) +let int64Group = 987 // Int64 | Integer in group parameters (optional) + +// Fake endpoint to test group parameters (optional) +FakeAPI.testGroupParameters(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **requiredStringGroup** | **Int** | Required String in group parameters | + **requiredBooleanGroup** | **Bool** | Required Boolean in group parameters | + **requiredInt64Group** | **Int64** | Required Integer in group parameters | + **stringGroup** | **Int** | String in group parameters | [optional] + **booleanGroup** | **Bool** | Boolean in group parameters | [optional] + **int64Group** | **Int64** | Integer in group parameters | [optional] + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testInlineAdditionalProperties** +```swift + open class func testInlineAdditionalProperties(param: [String: String], completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +test inline additionalProperties + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let param = "TODO" // [String: String] | request body + +// test inline additionalProperties +FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **param** | [**[String: String]**](String.md) | request body | + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testJsonFormData** +```swift + open class func testJsonFormData(param: String, param2: String, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +test json serialization of form data + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let param = "param_example" // String | field1 +let param2 = "param2_example" // String | field2 + +// test json serialization of form data +FakeAPI.testJsonFormData(param: param, param2: param2) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **param** | **String** | field1 | + **param2** | **String** | field2 | + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/FakeClassnameTags123API.md b/samples/client/petstore/swift5/x-swift-hashable/docs/FakeClassnameTags123API.md new file mode 100644 index 00000000000..9f24b46edbc --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/FakeClassnameTags123API.md @@ -0,0 +1,59 @@ +# FakeClassnameTags123API + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**testClassname**](FakeClassnameTags123API.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case + + +# **testClassname** +```swift + open class func testClassname(body: Client, completion: @escaping (_ data: Client?, _ error: Error?) -> Void) +``` + +To test class name in snake case + +To test class name in snake case + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = Client(client: "client_example") // Client | client model + +// To test class name in snake case +FakeClassnameTags123API.testClassname(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Client**](Client.md) | client model | + +### Return type + +[**Client**](Client.md) + +### Authorization + +[api_key_query](../README.md#api_key_query) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/File.md b/samples/client/petstore/swift5/x-swift-hashable/docs/File.md new file mode 100644 index 00000000000..3edfef17b79 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/File.md @@ -0,0 +1,10 @@ +# File + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**sourceURI** | **String** | Test capitalization | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/FileSchemaTestClass.md b/samples/client/petstore/swift5/x-swift-hashable/docs/FileSchemaTestClass.md new file mode 100644 index 00000000000..afdacc60b2c --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/FileSchemaTestClass.md @@ -0,0 +1,11 @@ +# FileSchemaTestClass + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**file** | [**File**](File.md) | | [optional] +**files** | [File] | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/FormatTest.md b/samples/client/petstore/swift5/x-swift-hashable/docs/FormatTest.md new file mode 100644 index 00000000000..f74d94f6c46 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/FormatTest.md @@ -0,0 +1,22 @@ +# FormatTest + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**integer** | **Int** | | [optional] +**int32** | **Int** | | [optional] +**int64** | **Int64** | | [optional] +**number** | **Double** | | +**float** | **Float** | | [optional] +**double** | **Double** | | [optional] +**string** | **String** | | [optional] +**byte** | **Data** | | +**binary** | **URL** | | [optional] +**date** | **Date** | | +**dateTime** | **Date** | | [optional] +**uuid** | **UUID** | | [optional] +**password** | **String** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/HasOnlyReadOnly.md b/samples/client/petstore/swift5/x-swift-hashable/docs/HasOnlyReadOnly.md new file mode 100644 index 00000000000..57b6e3a17e6 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/HasOnlyReadOnly.md @@ -0,0 +1,11 @@ +# HasOnlyReadOnly + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**bar** | **String** | | [optional] [readonly] +**foo** | **String** | | [optional] [readonly] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/List.md b/samples/client/petstore/swift5/x-swift-hashable/docs/List.md new file mode 100644 index 00000000000..b77718302ed --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/List.md @@ -0,0 +1,10 @@ +# List + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**_123list** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/MapTest.md b/samples/client/petstore/swift5/x-swift-hashable/docs/MapTest.md new file mode 100644 index 00000000000..73f9e0d50ac --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/MapTest.md @@ -0,0 +1,13 @@ +# MapTest + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**mapMapOfString** | [String: [String: String]] | | [optional] +**mapOfEnumString** | **[String: String]** | | [optional] +**directMap** | **[String: Bool]** | | [optional] +**indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/swift5/x-swift-hashable/docs/MixedPropertiesAndAdditionalPropertiesClass.md new file mode 100644 index 00000000000..3fdfd03f0e3 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/MixedPropertiesAndAdditionalPropertiesClass.md @@ -0,0 +1,12 @@ +# MixedPropertiesAndAdditionalPropertiesClass + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**uuid** | **UUID** | | [optional] +**dateTime** | **Date** | | [optional] +**map** | [String: Animal] | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/Model200Response.md b/samples/client/petstore/swift5/x-swift-hashable/docs/Model200Response.md new file mode 100644 index 00000000000..5865ea690cc --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/Model200Response.md @@ -0,0 +1,11 @@ +# Model200Response + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **Int** | | [optional] +**_class** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/Name.md b/samples/client/petstore/swift5/x-swift-hashable/docs/Name.md new file mode 100644 index 00000000000..f7b180292cd --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/Name.md @@ -0,0 +1,13 @@ +# Name + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **Int** | | +**snakeCase** | **Int** | | [optional] [readonly] +**property** | **String** | | [optional] +**_123number** | **Int** | | [optional] [readonly] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/NumberOnly.md b/samples/client/petstore/swift5/x-swift-hashable/docs/NumberOnly.md new file mode 100644 index 00000000000..72bd361168b --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/NumberOnly.md @@ -0,0 +1,10 @@ +# NumberOnly + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**justNumber** | **Double** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/Order.md b/samples/client/petstore/swift5/x-swift-hashable/docs/Order.md new file mode 100644 index 00000000000..15487f01175 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/Order.md @@ -0,0 +1,15 @@ +# Order + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Int64** | | [optional] +**petId** | **Int64** | | [optional] +**quantity** | **Int** | | [optional] +**shipDate** | **Date** | | [optional] +**status** | **String** | Order Status | [optional] +**complete** | **Bool** | | [optional] [default to false] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/OuterComposite.md b/samples/client/petstore/swift5/x-swift-hashable/docs/OuterComposite.md new file mode 100644 index 00000000000..d6b3583bc3f --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/OuterComposite.md @@ -0,0 +1,12 @@ +# OuterComposite + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**myNumber** | **Double** | | [optional] +**myString** | **String** | | [optional] +**myBoolean** | **Bool** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/OuterEnum.md b/samples/client/petstore/swift5/x-swift-hashable/docs/OuterEnum.md new file mode 100644 index 00000000000..06d413b0168 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/OuterEnum.md @@ -0,0 +1,9 @@ +# OuterEnum + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/Pet.md b/samples/client/petstore/swift5/x-swift-hashable/docs/Pet.md new file mode 100644 index 00000000000..5c05f98fad4 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/Pet.md @@ -0,0 +1,15 @@ +# Pet + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Int64** | | [optional] +**category** | [**Category**](Category.md) | | [optional] +**name** | **String** | | +**photoUrls** | **[String]** | | +**tags** | [Tag] | | [optional] +**status** | **String** | pet status in the store | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/PetAPI.md b/samples/client/petstore/swift5/x-swift-hashable/docs/PetAPI.md new file mode 100644 index 00000000000..27efe083347 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/PetAPI.md @@ -0,0 +1,469 @@ +# PetAPI + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**addPet**](PetAPI.md#addpet) | **POST** /pet | Add a new pet to the store +[**deletePet**](PetAPI.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetAPI.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetAPI.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +[**getPetById**](PetAPI.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +[**updatePet**](PetAPI.md#updatepet) | **PUT** /pet | Update an existing pet +[**updatePetWithForm**](PetAPI.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetAPI.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +[**uploadFileWithRequiredFile**](PetAPI.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) + + +# **addPet** +```swift + open class func addPet(body: Pet, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Add a new pet to the store + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = Pet(id: 123, category: Category(id: 123, name: "name_example"), name: "name_example", photoUrls: ["photoUrls_example"], tags: [Tag(id: 123, name: "name_example")], status: "status_example") // Pet | Pet object that needs to be added to the store + +// Add a new pet to the store +PetAPI.addPet(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Pet**](Pet.md) | Pet object that needs to be added to the store | + +### Return type + +Void (empty response body) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **deletePet** +```swift + open class func deletePet(petId: Int64, apiKey: String? = nil, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Deletes a pet + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let petId = 987 // Int64 | Pet id to delete +let apiKey = "apiKey_example" // String | (optional) + +// Deletes a pet +PetAPI.deletePet(petId: petId, apiKey: apiKey) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **Int64** | Pet id to delete | + **apiKey** | **String** | | [optional] + +### Return type + +Void (empty response body) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **findPetsByStatus** +```swift + open class func findPetsByStatus(status: [String], completion: @escaping (_ data: [Pet]?, _ error: Error?) -> Void) +``` + +Finds Pets by status + +Multiple status values can be provided with comma separated strings + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let status = ["status_example"] // [String] | Status values that need to be considered for filter + +// Finds Pets by status +PetAPI.findPetsByStatus(status: status) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | [**[String]**](String.md) | Status values that need to be considered for filter | + +### Return type + +[**[Pet]**](Pet.md) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **findPetsByTags** +```swift + open class func findPetsByTags(tags: [String], completion: @escaping (_ data: [Pet]?, _ error: Error?) -> Void) +``` + +Finds Pets by tags + +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let tags = ["inner_example"] // [String] | Tags to filter by + +// Finds Pets by tags +PetAPI.findPetsByTags(tags: tags) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | [**[String]**](String.md) | Tags to filter by | + +### Return type + +[**[Pet]**](Pet.md) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getPetById** +```swift + open class func getPetById(petId: Int64, completion: @escaping (_ data: Pet?, _ error: Error?) -> Void) +``` + +Find pet by ID + +Returns a single pet + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let petId = 987 // Int64 | ID of pet to return + +// Find pet by ID +PetAPI.getPetById(petId: petId) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **Int64** | ID of pet to return | + +### Return type + +[**Pet**](Pet.md) + +### Authorization + +[api_key](../README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **updatePet** +```swift + open class func updatePet(body: Pet, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Update an existing pet + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = Pet(id: 123, category: Category(id: 123, name: "name_example"), name: "name_example", photoUrls: ["photoUrls_example"], tags: [Tag(id: 123, name: "name_example")], status: "status_example") // Pet | Pet object that needs to be added to the store + +// Update an existing pet +PetAPI.updatePet(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Pet**](Pet.md) | Pet object that needs to be added to the store | + +### Return type + +Void (empty response body) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **updatePetWithForm** +```swift + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Updates a pet in the store with form data + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let petId = 987 // Int64 | ID of pet that needs to be updated +let name = "name_example" // String | Updated name of the pet (optional) +let status = "status_example" // String | Updated status of the pet (optional) + +// Updates a pet in the store with form data +PetAPI.updatePetWithForm(petId: petId, name: name, status: status) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **Int64** | ID of pet that needs to be updated | + **name** | **String** | Updated name of the pet | [optional] + **status** | **String** | Updated status of the pet | [optional] + +### Return type + +Void (empty response body) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **uploadFile** +```swift + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, completion: @escaping (_ data: ApiResponse?, _ error: Error?) -> Void) +``` + +uploads an image + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let petId = 987 // Int64 | ID of pet to update +let additionalMetadata = "additionalMetadata_example" // String | Additional data to pass to server (optional) +let file = URL(string: "https://example.com")! // URL | file to upload (optional) + +// uploads an image +PetAPI.uploadFile(petId: petId, additionalMetadata: additionalMetadata, file: file) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **Int64** | ID of pet to update | + **additionalMetadata** | **String** | Additional data to pass to server | [optional] + **file** | **URL** | file to upload | [optional] + +### Return type + +[**ApiResponse**](ApiResponse.md) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **uploadFileWithRequiredFile** +```swift + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, completion: @escaping (_ data: ApiResponse?, _ error: Error?) -> Void) +``` + +uploads an image (required) + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let petId = 987 // Int64 | ID of pet to update +let requiredFile = URL(string: "https://example.com")! // URL | file to upload +let additionalMetadata = "additionalMetadata_example" // String | Additional data to pass to server (optional) + +// uploads an image (required) +PetAPI.uploadFileWithRequiredFile(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **Int64** | ID of pet to update | + **requiredFile** | **URL** | file to upload | + **additionalMetadata** | **String** | Additional data to pass to server | [optional] + +### Return type + +[**ApiResponse**](ApiResponse.md) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/ReadOnlyFirst.md b/samples/client/petstore/swift5/x-swift-hashable/docs/ReadOnlyFirst.md new file mode 100644 index 00000000000..ed537b87598 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/ReadOnlyFirst.md @@ -0,0 +1,11 @@ +# ReadOnlyFirst + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**bar** | **String** | | [optional] [readonly] +**baz** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/Return.md b/samples/client/petstore/swift5/x-swift-hashable/docs/Return.md new file mode 100644 index 00000000000..66d17c27c88 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/Return.md @@ -0,0 +1,10 @@ +# Return + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**_return** | **Int** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/SpecialModelName.md b/samples/client/petstore/swift5/x-swift-hashable/docs/SpecialModelName.md new file mode 100644 index 00000000000..3ec27a38c2a --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/SpecialModelName.md @@ -0,0 +1,10 @@ +# SpecialModelName + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**specialPropertyName** | **Int64** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/StoreAPI.md b/samples/client/petstore/swift5/x-swift-hashable/docs/StoreAPI.md new file mode 100644 index 00000000000..383dda5d3c7 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/StoreAPI.md @@ -0,0 +1,206 @@ +# StoreAPI + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**deleteOrder**](StoreAPI.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +[**getInventory**](StoreAPI.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +[**getOrderById**](StoreAPI.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +[**placeOrder**](StoreAPI.md#placeorder) | **POST** /store/order | Place an order for a pet + + +# **deleteOrder** +```swift + open class func deleteOrder(orderId: String, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Delete purchase order by ID + +For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let orderId = "orderId_example" // String | ID of the order that needs to be deleted + +// Delete purchase order by ID +StoreAPI.deleteOrder(orderId: orderId) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **String** | ID of the order that needs to be deleted | + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getInventory** +```swift + open class func getInventory(completion: @escaping (_ data: [String: Int]?, _ error: Error?) -> Void) +``` + +Returns pet inventories by status + +Returns a map of status codes to quantities + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + + +// Returns pet inventories by status +StoreAPI.getInventory() { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +**[String: Int]** + +### Authorization + +[api_key](../README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getOrderById** +```swift + open class func getOrderById(orderId: Int64, completion: @escaping (_ data: Order?, _ error: Error?) -> Void) +``` + +Find purchase order by ID + +For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let orderId = 987 // Int64 | ID of pet that needs to be fetched + +// Find purchase order by ID +StoreAPI.getOrderById(orderId: orderId) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **Int64** | ID of pet that needs to be fetched | + +### Return type + +[**Order**](Order.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **placeOrder** +```swift + open class func placeOrder(body: Order, completion: @escaping (_ data: Order?, _ error: Error?) -> Void) +``` + +Place an order for a pet + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = Order(id: 123, petId: 123, quantity: 123, shipDate: Date(), status: "status_example", complete: false) // Order | order placed for purchasing the pet + +// Place an order for a pet +StoreAPI.placeOrder(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Order**](Order.md) | order placed for purchasing the pet | + +### Return type + +[**Order**](Order.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/StringBooleanMap.md b/samples/client/petstore/swift5/x-swift-hashable/docs/StringBooleanMap.md new file mode 100644 index 00000000000..7abf11ec68b --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/StringBooleanMap.md @@ -0,0 +1,9 @@ +# StringBooleanMap + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/Tag.md b/samples/client/petstore/swift5/x-swift-hashable/docs/Tag.md new file mode 100644 index 00000000000..ff4ac8aa451 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/Tag.md @@ -0,0 +1,11 @@ +# Tag + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Int64** | | [optional] +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/TypeHolderDefault.md b/samples/client/petstore/swift5/x-swift-hashable/docs/TypeHolderDefault.md new file mode 100644 index 00000000000..5161394bdc3 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/TypeHolderDefault.md @@ -0,0 +1,14 @@ +# TypeHolderDefault + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**stringItem** | **String** | | [default to "what"] +**numberItem** | **Double** | | +**integerItem** | **Int** | | +**boolItem** | **Bool** | | [default to true] +**arrayItem** | **[Int]** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/TypeHolderExample.md b/samples/client/petstore/swift5/x-swift-hashable/docs/TypeHolderExample.md new file mode 100644 index 00000000000..46d0471cd71 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/TypeHolderExample.md @@ -0,0 +1,14 @@ +# TypeHolderExample + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**stringItem** | **String** | | +**numberItem** | **Double** | | +**integerItem** | **Int** | | +**boolItem** | **Bool** | | +**arrayItem** | **[Int]** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/User.md b/samples/client/petstore/swift5/x-swift-hashable/docs/User.md new file mode 100644 index 00000000000..5a439de0ff9 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/User.md @@ -0,0 +1,17 @@ +# User + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Int64** | | [optional] +**username** | **String** | | [optional] +**firstName** | **String** | | [optional] +**lastName** | **String** | | [optional] +**email** | **String** | | [optional] +**password** | **String** | | [optional] +**phone** | **String** | | [optional] +**userStatus** | **Int** | User Status | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/UserAPI.md b/samples/client/petstore/swift5/x-swift-hashable/docs/UserAPI.md new file mode 100644 index 00000000000..380813bc68c --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/UserAPI.md @@ -0,0 +1,406 @@ +# UserAPI + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**createUser**](UserAPI.md#createuser) | **POST** /user | Create user +[**createUsersWithArrayInput**](UserAPI.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserAPI.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +[**deleteUser**](UserAPI.md#deleteuser) | **DELETE** /user/{username} | Delete user +[**getUserByName**](UserAPI.md#getuserbyname) | **GET** /user/{username} | Get user by user name +[**loginUser**](UserAPI.md#loginuser) | **GET** /user/login | Logs user into the system +[**logoutUser**](UserAPI.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +[**updateUser**](UserAPI.md#updateuser) | **PUT** /user/{username} | Updated user + + +# **createUser** +```swift + open class func createUser(body: User, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Create user + +This can only be done by the logged in user. + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = User(id: 123, username: "username_example", firstName: "firstName_example", lastName: "lastName_example", email: "email_example", password: "password_example", phone: "phone_example", userStatus: 123) // User | Created user object + +// Create user +UserAPI.createUser(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**User**](User.md) | Created user object | + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **createUsersWithArrayInput** +```swift + open class func createUsersWithArrayInput(body: [User], completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Creates list of users with given input array + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = [User(id: 123, username: "username_example", firstName: "firstName_example", lastName: "lastName_example", email: "email_example", password: "password_example", phone: "phone_example", userStatus: 123)] // [User] | List of user object + +// Creates list of users with given input array +UserAPI.createUsersWithArrayInput(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**[User]**](User.md) | List of user object | + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **createUsersWithListInput** +```swift + open class func createUsersWithListInput(body: [User], completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Creates list of users with given input array + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = [User(id: 123, username: "username_example", firstName: "firstName_example", lastName: "lastName_example", email: "email_example", password: "password_example", phone: "phone_example", userStatus: 123)] // [User] | List of user object + +// Creates list of users with given input array +UserAPI.createUsersWithListInput(body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**[User]**](User.md) | List of user object | + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **deleteUser** +```swift + open class func deleteUser(username: String, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Delete user + +This can only be done by the logged in user. + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let username = "username_example" // String | The name that needs to be deleted + +// Delete user +UserAPI.deleteUser(username: username) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String** | The name that needs to be deleted | + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getUserByName** +```swift + open class func getUserByName(username: String, completion: @escaping (_ data: User?, _ error: Error?) -> Void) +``` + +Get user by user name + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let username = "username_example" // String | The name that needs to be fetched. Use user1 for testing. + +// Get user by user name +UserAPI.getUserByName(username: username) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String** | The name that needs to be fetched. Use user1 for testing. | + +### Return type + +[**User**](User.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **loginUser** +```swift + open class func loginUser(username: String, password: String, completion: @escaping (_ data: String?, _ error: Error?) -> Void) +``` + +Logs user into the system + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let username = "username_example" // String | The user name for login +let password = "password_example" // String | The password for login in clear text + +// Logs user into the system +UserAPI.loginUser(username: username, password: password) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String** | The user name for login | + **password** | **String** | The password for login in clear text | + +### Return type + +**String** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **logoutUser** +```swift + open class func logoutUser(completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Logs out current logged in user session + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + + +// Logs out current logged in user session +UserAPI.logoutUser() { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **updateUser** +```swift + open class func updateUser(username: String, body: User, completion: @escaping (_ data: Void?, _ error: Error?) -> Void) +``` + +Updated user + +This can only be done by the logged in user. + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let username = "username_example" // String | name that need to be deleted +let body = User(id: 123, username: "username_example", firstName: "firstName_example", lastName: "lastName_example", email: "email_example", password: "password_example", phone: "phone_example", userStatus: 123) // User | Updated user object + +// Updated user +UserAPI.updateUser(username: username, body: body) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String** | name that need to be deleted | + **body** | [**User**](User.md) | Updated user object | + +### Return type + +Void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/XmlItem.md b/samples/client/petstore/swift5/x-swift-hashable/docs/XmlItem.md new file mode 100644 index 00000000000..1a4eb4e9c83 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/XmlItem.md @@ -0,0 +1,38 @@ +# XmlItem + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**attributeString** | **String** | | [optional] +**attributeNumber** | **Double** | | [optional] +**attributeInteger** | **Int** | | [optional] +**attributeBoolean** | **Bool** | | [optional] +**wrappedArray** | **[Int]** | | [optional] +**nameString** | **String** | | [optional] +**nameNumber** | **Double** | | [optional] +**nameInteger** | **Int** | | [optional] +**nameBoolean** | **Bool** | | [optional] +**nameArray** | **[Int]** | | [optional] +**nameWrappedArray** | **[Int]** | | [optional] +**prefixString** | **String** | | [optional] +**prefixNumber** | **Double** | | [optional] +**prefixInteger** | **Int** | | [optional] +**prefixBoolean** | **Bool** | | [optional] +**prefixArray** | **[Int]** | | [optional] +**prefixWrappedArray** | **[Int]** | | [optional] +**namespaceString** | **String** | | [optional] +**namespaceNumber** | **Double** | | [optional] +**namespaceInteger** | **Int** | | [optional] +**namespaceBoolean** | **Bool** | | [optional] +**namespaceArray** | **[Int]** | | [optional] +**namespaceWrappedArray** | **[Int]** | | [optional] +**prefixNsString** | **String** | | [optional] +**prefixNsNumber** | **Double** | | [optional] +**prefixNsInteger** | **Int** | | [optional] +**prefixNsBoolean** | **Bool** | | [optional] +**prefixNsArray** | **[Int]** | | [optional] +**prefixNsWrappedArray** | **[Int]** | | [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) + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/git_push.sh b/samples/client/petstore/swift5/x-swift-hashable/git_push.sh new file mode 100644 index 00000000000..ced3be2b0c7 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/git_push.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/samples/client/petstore/swift5/x-swift-hashable/project.yml b/samples/client/petstore/swift5/x-swift-hashable/project.yml new file mode 100644 index 00000000000..5528eeee513 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/project.yml @@ -0,0 +1,15 @@ +name: PetstoreClient +targets: + PetstoreClient: + type: framework + platform: iOS + deploymentTarget: "9.0" + sources: [PetstoreClient] + info: + path: ./Info.plist + version: 1.0.0 + settings: + APPLICATION_EXTENSION_API_ONLY: true + scheme: {} + + - carthage: AnyCodable From 1ff436a86aad6b5eca8b7cf3c7838308b43f22d0 Mon Sep 17 00:00:00 2001 From: Kazuki Chigita Date: Fri, 21 May 2021 00:05:22 +0900 Subject: [PATCH 021/192] [REQ] [kotlin-client] Add uriAdapter for moshiBuilder (#9494) * Apply UriAdapter to moshiBuilder * Add UriAdapter for supportingFiles * Fix test * Apply ./bin/generate-samples.sh --- .../languages/KotlinClientCodegen.java | 1 + .../infrastructure/Serializer.kt.mustache | 1 + .../infrastructure/URIAdapter.kt.mustache | 19 ++++++++++++++++++- .../codegen/DefaultGeneratorTest.java | 8 ++++---- .../.openapi-generator/FILES | 1 + .../client/infrastructure/Serializer.kt | 1 + .../client/infrastructure/URIAdapter.kt | 13 +++++++++++++ .../.openapi-generator/FILES | 1 + .../client/infrastructure/Serializer.kt | 1 + .../client/infrastructure/URIAdapter.kt | 13 +++++++++++++ .../kotlin-nonpublic/.openapi-generator/FILES | 1 + .../client/infrastructure/Serializer.kt | 1 + .../client/infrastructure/URIAdapter.kt | 13 +++++++++++++ .../kotlin-nullable/.openapi-generator/FILES | 1 + .../client/infrastructure/Serializer.kt | 1 + .../client/infrastructure/URIAdapter.kt | 13 +++++++++++++ .../kotlin-okhttp3/.openapi-generator/FILES | 1 + .../client/infrastructure/Serializer.kt | 1 + .../client/infrastructure/URIAdapter.kt | 13 +++++++++++++ .../client/infrastructure/URIAdapter.kt | 2 +- .../.openapi-generator/FILES | 1 + .../client/infrastructure/Serializer.kt | 1 + .../client/infrastructure/URIAdapter.kt | 13 +++++++++++++ .../kotlin-retrofit2/.openapi-generator/FILES | 1 + .../client/infrastructure/Serializer.kt | 1 + .../client/infrastructure/URIAdapter.kt | 13 +++++++++++++ .../kotlin-string/.openapi-generator/FILES | 1 + .../client/infrastructure/Serializer.kt | 1 + .../client/infrastructure/URIAdapter.kt | 13 +++++++++++++ .../.openapi-generator/FILES | 1 + .../client/infrastructure/Serializer.kt | 1 + .../client/infrastructure/URIAdapter.kt | 13 +++++++++++++ .../.openapi-generator/FILES | 1 + .../client/infrastructure/Serializer.kt | 1 + .../client/infrastructure/URIAdapter.kt | 13 +++++++++++++ .../petstore/kotlin/.openapi-generator/FILES | 1 + .../client/infrastructure/Serializer.kt | 1 + .../client/infrastructure/URIAdapter.kt | 13 +++++++++++++ 38 files changed, 190 insertions(+), 6 deletions(-) create mode 100644 samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt create mode 100644 samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt create mode 100644 samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt create mode 100644 samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt create mode 100644 samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt create mode 100644 samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt create mode 100644 samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt create mode 100644 samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt create mode 100644 samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt create mode 100644 samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt create mode 100644 samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index 3ff2429d99d..d2a229fe988 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -471,6 +471,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { supportingFiles.add(new SupportingFile("jvm-common/infrastructure/OffsetDateTimeAdapter.kt.mustache", infrastructureFolder, "OffsetDateTimeAdapter.kt")); supportingFiles.add(new SupportingFile("jvm-common/infrastructure/BigDecimalAdapter.kt.mustache", infrastructureFolder, "BigDecimalAdapter.kt")); supportingFiles.add(new SupportingFile("jvm-common/infrastructure/BigIntegerAdapter.kt.mustache", infrastructureFolder, "BigIntegerAdapter.kt")); + supportingFiles.add(new SupportingFile("jvm-common/infrastructure/URIAdapter.kt.mustache", infrastructureFolder, "URIAdapter.kt")); break; case gson: diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache index beef3fc2bf3..ba46e733195 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache @@ -60,6 +60,7 @@ import java.util.concurrent.atomic.AtomicLong .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) + .add(UriAdapter()) {{^moshiCodeGen}} .add(KotlinJsonAdapterFactory()) {{/moshiCodeGen}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/URIAdapter.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/URIAdapter.kt.mustache index 0225ccf549b..20dd42023e8 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/URIAdapter.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/URIAdapter.kt.mustache @@ -1,5 +1,6 @@ package {{packageName}}.infrastructure +{{#kotlinx_serialization}} import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializer import kotlinx.serialization.encoding.Decoder @@ -7,8 +8,23 @@ import kotlinx.serialization.encoding.Encoder import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor import kotlinx.serialization.descriptors.PrimitiveKind import kotlinx.serialization.descriptors.SerialDescriptor +{{/kotlinx_serialization}} +{{#moshi}} +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +{{/moshi}} import java.net.URI +{{#moshi}} +{{#nonPublicApi}}internal {{/nonPublicApi}}class UriAdapter { + @ToJson + fun toJson(uri: URI) = uri.toString() + + @FromJson + fun fromJson(s: String) = URI.create(s) +} +{{/moshi}} +{{#kotlinx_serialization}} @Serializer(forClass = URI::class) object UriAdapter : KSerializer { override fun serialize(encoder: Encoder, value: URI) { @@ -18,4 +34,5 @@ object UriAdapter : KSerializer { override fun deserialize(decoder: Decoder): URI = URI(decoder.decodeString()) override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("URI", PrimitiveKind.STRING) -} \ No newline at end of file +} +{{/kotlinx_serialization}} \ No newline at end of file diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java index 7e6a986bb32..dac05915223 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java @@ -459,7 +459,7 @@ public class DefaultGeneratorTest { List files = generator.opts(clientOptInput).generate(); - Assert.assertEquals(files.size(), 26); + Assert.assertEquals(files.size(), 27); // Generator should report a library templated file as a generated file TestUtils.ensureContainsFile(files, output, "src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt"); @@ -501,7 +501,7 @@ public class DefaultGeneratorTest { List files = generator.opts(clientOptInput).generate(); - Assert.assertEquals(files.size(), 26); + Assert.assertEquals(files.size(), 27); // Generator should report README.md as a generated file TestUtils.ensureContainsFile(files, output, "README.md"); @@ -566,7 +566,7 @@ public class DefaultGeneratorTest { List files = generator.opts(clientOptInput).generate(); - Assert.assertEquals(files.size(), 26); + Assert.assertEquals(files.size(), 27); // Generator should report a library templated file as a generated file TestUtils.ensureContainsFile(files, output, "src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt"); @@ -620,7 +620,7 @@ public class DefaultGeneratorTest { List files = generator.opts(clientOptInput).generate(); - Assert.assertEquals(files.size(), 26); + Assert.assertEquals(files.size(), 27); // Generator should report README.md as a generated file TestUtils.ensureContainsFile(files, output, "README.md"); diff --git a/samples/client/petstore/kotlin-json-request-string/.openapi-generator/FILES b/samples/client/petstore/kotlin-json-request-string/.openapi-generator/FILES index 3f4610174cc..ca4c31651a4 100644 --- a/samples/client/petstore/kotlin-json-request-string/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-json-request-string/.openapi-generator/FILES @@ -32,6 +32,7 @@ src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt src/main/kotlin/org/openapitools/client/models/ApiResponse.kt src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 3d0a6c32566..5b6d177ca89 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,6 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) + .add(UriAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt new file mode 100644 index 00000000000..87de0b17353 --- /dev/null +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.net.URI + +class UriAdapter { + @ToJson + fun toJson(uri: URI) = uri.toString() + + @FromJson + fun fromJson(s: String) = URI.create(s) +} diff --git a/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/FILES b/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/FILES index 3f4610174cc..ca4c31651a4 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/FILES @@ -32,6 +32,7 @@ src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt src/main/kotlin/org/openapitools/client/models/ApiResponse.kt src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 1ac7a1908fa..e1cee08d055 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -11,6 +11,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) + .add(UriAdapter()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt new file mode 100644 index 00000000000..87de0b17353 --- /dev/null +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.net.URI + +class UriAdapter { + @ToJson + fun toJson(uri: URI) = uri.toString() + + @FromJson + fun fromJson(s: String) = URI.create(s) +} diff --git a/samples/client/petstore/kotlin-nonpublic/.openapi-generator/FILES b/samples/client/petstore/kotlin-nonpublic/.openapi-generator/FILES index 3f4610174cc..ca4c31651a4 100644 --- a/samples/client/petstore/kotlin-nonpublic/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-nonpublic/.openapi-generator/FILES @@ -32,6 +32,7 @@ src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt src/main/kotlin/org/openapitools/client/models/ApiResponse.kt src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 54e21400c43..914d277df5e 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,6 +12,7 @@ internal object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) + .add(UriAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt new file mode 100644 index 00000000000..bfe92917615 --- /dev/null +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.net.URI + +internal class UriAdapter { + @ToJson + fun toJson(uri: URI) = uri.toString() + + @FromJson + fun fromJson(s: String) = URI.create(s) +} diff --git a/samples/client/petstore/kotlin-nullable/.openapi-generator/FILES b/samples/client/petstore/kotlin-nullable/.openapi-generator/FILES index 3f4610174cc..ca4c31651a4 100644 --- a/samples/client/petstore/kotlin-nullable/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-nullable/.openapi-generator/FILES @@ -32,6 +32,7 @@ src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt src/main/kotlin/org/openapitools/client/models/ApiResponse.kt src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 3d0a6c32566..5b6d177ca89 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,6 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) + .add(UriAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt new file mode 100644 index 00000000000..87de0b17353 --- /dev/null +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.net.URI + +class UriAdapter { + @ToJson + fun toJson(uri: URI) = uri.toString() + + @FromJson + fun fromJson(s: String) = URI.create(s) +} diff --git a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/FILES b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/FILES index 3f4610174cc..ca4c31651a4 100644 --- a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/FILES @@ -32,6 +32,7 @@ src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt src/main/kotlin/org/openapitools/client/models/ApiResponse.kt src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 3d0a6c32566..5b6d177ca89 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,6 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) + .add(UriAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt new file mode 100644 index 00000000000..87de0b17353 --- /dev/null +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.net.URI + +class UriAdapter { + @ToJson + fun toJson(uri: URI) = uri.toString() + + @FromJson + fun fromJson(s: String) = URI.create(s) +} diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index ef3c2b387be..0b734134afa 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -18,4 +18,4 @@ object UriAdapter : KSerializer { override fun deserialize(decoder: Decoder): URI = URI(decoder.decodeString()) override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("URI", PrimitiveKind.STRING) -} \ No newline at end of file +} diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/FILES b/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/FILES index 871f0c1d09c..04b505d1f17 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/FILES @@ -31,6 +31,7 @@ src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/ResponseExt.kt src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt src/main/kotlin/org/openapitools/client/models/ApiResponse.kt src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 3d0a6c32566..5b6d177ca89 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,6 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) + .add(UriAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt new file mode 100644 index 00000000000..87de0b17353 --- /dev/null +++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.net.URI + +class UriAdapter { + @ToJson + fun toJson(uri: URI) = uri.toString() + + @FromJson + fun fromJson(s: String) = URI.create(s) +} diff --git a/samples/client/petstore/kotlin-retrofit2/.openapi-generator/FILES b/samples/client/petstore/kotlin-retrofit2/.openapi-generator/FILES index 871f0c1d09c..04b505d1f17 100644 --- a/samples/client/petstore/kotlin-retrofit2/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-retrofit2/.openapi-generator/FILES @@ -31,6 +31,7 @@ src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/ResponseExt.kt src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt src/main/kotlin/org/openapitools/client/models/ApiResponse.kt src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 3d0a6c32566..5b6d177ca89 100644 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,6 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) + .add(UriAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt new file mode 100644 index 00000000000..87de0b17353 --- /dev/null +++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.net.URI + +class UriAdapter { + @ToJson + fun toJson(uri: URI) = uri.toString() + + @FromJson + fun fromJson(s: String) = URI.create(s) +} diff --git a/samples/client/petstore/kotlin-string/.openapi-generator/FILES b/samples/client/petstore/kotlin-string/.openapi-generator/FILES index 3f4610174cc..ca4c31651a4 100644 --- a/samples/client/petstore/kotlin-string/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-string/.openapi-generator/FILES @@ -32,6 +32,7 @@ src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt src/main/kotlin/org/openapitools/client/models/ApiResponse.kt src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 3d0a6c32566..5b6d177ca89 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,6 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) + .add(UriAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt new file mode 100644 index 00000000000..87de0b17353 --- /dev/null +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.net.URI + +class UriAdapter { + @ToJson + fun toJson(uri: URI) = uri.toString() + + @FromJson + fun fromJson(s: String) = URI.create(s) +} diff --git a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/FILES b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/FILES index 3f4610174cc..ca4c31651a4 100644 --- a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/FILES @@ -32,6 +32,7 @@ src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt src/main/kotlin/org/openapitools/client/models/ApiResponse.kt src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 3d0a6c32566..5b6d177ca89 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,6 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) + .add(UriAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt new file mode 100644 index 00000000000..87de0b17353 --- /dev/null +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.net.URI + +class UriAdapter { + @ToJson + fun toJson(uri: URI) = uri.toString() + + @FromJson + fun fromJson(s: String) = URI.create(s) +} diff --git a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/FILES b/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/FILES index 7619fbe8f8e..bfbf9941fa5 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/FILES @@ -23,5 +23,6 @@ src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt src/main/kotlin/org/openapitools/client/models/PetEnum.kt diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 3d0a6c32566..5b6d177ca89 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,6 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) + .add(UriAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt new file mode 100644 index 00000000000..87de0b17353 --- /dev/null +++ b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.net.URI + +class UriAdapter { + @ToJson + fun toJson(uri: URI) = uri.toString() + + @FromJson + fun fromJson(s: String) = URI.create(s) +} diff --git a/samples/client/petstore/kotlin/.openapi-generator/FILES b/samples/client/petstore/kotlin/.openapi-generator/FILES index 3f4610174cc..ca4c31651a4 100644 --- a/samples/client/petstore/kotlin/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin/.openapi-generator/FILES @@ -32,6 +32,7 @@ src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt src/main/kotlin/org/openapitools/client/models/ApiResponse.kt src/main/kotlin/org/openapitools/client/models/Category.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 3d0a6c32566..5b6d177ca89 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,6 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) + .add(UriAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt new file mode 100644 index 00000000000..87de0b17353 --- /dev/null +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -0,0 +1,13 @@ +package org.openapitools.client.infrastructure + +import com.squareup.moshi.FromJson +import com.squareup.moshi.ToJson +import java.net.URI + +class UriAdapter { + @ToJson + fun toJson(uri: URI) = uri.toString() + + @FromJson + fun fromJson(s: String) = URI.create(s) +} From d1b8a3fac4d9820500929af73d271a3c9bec3098 Mon Sep 17 00:00:00 2001 From: Stefan Hanselmann <69970522+shanselm-ergon@users.noreply.github.com> Date: Thu, 20 May 2021 17:07:04 +0200 Subject: [PATCH 022/192] =?UTF-8?q?[Kotlin]=20[#8809]=20Allow=20optional?= =?UTF-8?q?=20header=20parameters=20with=20Kotlin=20and=20ret=E2=80=A6=20(?= =?UTF-8?q?#9306)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Kotlin] [#8809] Allow optional header parameters with Kotlin and retrofit2 * [Kotlin] [#8809] Update sample client * [Kotlin] [#8809] Replace mustache dot notation with more classic style * [Kotlin] [#8809] Remove new line at the end of the mustache template --- .../kotlin-client/libraries/jvm-retrofit2/headerParams.mustache | 2 +- .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 2 +- .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 2 +- .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/headerParams.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/headerParams.mustache index aa5a8e34673..f546244307b 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/headerParams.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/headerParams.mustache @@ -1 +1 @@ -{{#isHeaderParam}}@Header("{{baseName}}") {{{paramName}}}: {{{dataType}}}{{/isHeaderParam}} \ No newline at end of file +{{#isHeaderParam}}@Header("{{baseName}}") {{{paramName}}}: {{{dataType}}}{{#required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{/required}}{{^required}}?{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{/isHeaderParam}} \ No newline at end of file diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 3b2a4128209..d30336f02e9 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -34,7 +34,7 @@ interface PetApi { * @return [Call]<[Unit]> */ @DELETE("pet/{petId}") - fun deletePet(@Path("petId") petId: kotlin.Long, @Header("api_key") apiKey: kotlin.String): Call + fun deletePet(@Path("petId") petId: kotlin.Long, @Header("api_key") apiKey: kotlin.String? = null): Call /** * Finds Pets by status diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 8162b6dc448..d90c3c85f92 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -35,7 +35,7 @@ interface PetApi { * @return [Call]<[Unit]> */ @DELETE("pet/{petId}") - fun deletePet(@Path("petId") petId: kotlin.Long, @Header("api_key") apiKey: kotlin.String): Completable + fun deletePet(@Path("petId") petId: kotlin.Long, @Header("api_key") apiKey: kotlin.String? = null): Completable /** * Finds Pets by status diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 3b2a4128209..d30336f02e9 100644 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -34,7 +34,7 @@ interface PetApi { * @return [Call]<[Unit]> */ @DELETE("pet/{petId}") - fun deletePet(@Path("petId") petId: kotlin.Long, @Header("api_key") apiKey: kotlin.String): Call + fun deletePet(@Path("petId") petId: kotlin.Long, @Header("api_key") apiKey: kotlin.String? = null): Call /** * Finds Pets by status From 338812114c4925858bb1c37a046c9eec9744efa2 Mon Sep 17 00:00:00 2001 From: Yusuke Hosonuma Date: Fri, 21 May 2021 13:37:21 +0900 Subject: [PATCH 023/192] [crystal][client] support configure method with block (#9506) * [crystal][client] allow initialize Configuration with block * [crystal][client] update samples * [crystal][client] add test for configuration.cr * [crystal][client] fix .configure * [crystal][client] update samples * [crystal][client] add test for pestore.cr * [crystal][client] fix Configuration#configure --- .../resources/crystal/configuration.mustache | 18 ++++++++++--- .../resources/crystal/shard_name.mustache | 25 ++++++++++-------- .../crystal/spec/configuration_spec.cr | 26 +++++++++++++++++++ .../petstore/crystal/spec/petstore_spec.cr | 19 ++++++++++++++ .../client/petstore/crystal/src/petstore.cr | 25 ++++++++++-------- .../crystal/src/petstore/configuration.cr | 18 ++++++++++--- 6 files changed, 103 insertions(+), 28 deletions(-) create mode 100644 samples/client/petstore/crystal/spec/configuration_spec.cr create mode 100644 samples/client/petstore/crystal/spec/petstore_spec.cr diff --git a/modules/openapi-generator/src/main/resources/crystal/configuration.mustache b/modules/openapi-generator/src/main/resources/crystal/configuration.mustache index eec2509376d..103cf1820b2 100644 --- a/modules/openapi-generator/src/main/resources/crystal/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/configuration.mustache @@ -119,6 +119,7 @@ module {{moduleName}} # https://github.com/typhoeus/ethon/blob/master/lib/ethon/easy/queryable.rb#L96 #property params_encoding : String? + # Create a new `Configuration`. def initialize @scheme = "{{scheme}}" @host = "{{host}}{{#port}}:{{{.}}}{{/port}}" @@ -141,9 +142,19 @@ module {{moduleName}} @password = nil @access_token = nil @temp_folder_path = nil + end - # TODO revise below to support block - #yield(self) if block_given? + # Create a new `Configuration` with block. + # + # ``` + # config = Petstore::Configuration.new do |config| + # config.username = "xxx" + # config.password = "xxx" + # end + # ``` + def initialize + initialize + yield self end # The default Configuration object. @@ -151,8 +162,9 @@ module {{moduleName}} @@default ||= Configuration.new end + # Configure object with block. def configure - yield(self) if block_given? + yield self end def scheme=(scheme) diff --git a/modules/openapi-generator/src/main/resources/crystal/shard_name.mustache b/modules/openapi-generator/src/main/resources/crystal/shard_name.mustache index 7e3e9b162d4..6d2de8333a3 100644 --- a/modules/openapi-generator/src/main/resources/crystal/shard_name.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/shard_name.mustache @@ -9,18 +9,21 @@ module {{moduleName}} VERSION = {{ `shards version #{__DIR__}`.chomp.stringify }} + # Return the default `Configuration` object. + def self.configure + Configuration.default + end + # Customize default settings for the SDK using block. - # {{moduleName}}.configure do |config| - # config.username = "xxx" - # config.password = "xxx" - # end - # If no block given, return the default Configuration object. - def configure - if block_given? - yield(Configuration.default) - else - Configuration.default - end + # + # ``` + # {{moduleName}}.configure do |config| + # config.username = "xxx" + # config.password = "xxx" + # end + # ``` + def self.configure + yield Configuration.default end end diff --git a/samples/client/petstore/crystal/spec/configuration_spec.cr b/samples/client/petstore/crystal/spec/configuration_spec.cr new file mode 100644 index 00000000000..a99e77166dd --- /dev/null +++ b/samples/client/petstore/crystal/spec/configuration_spec.cr @@ -0,0 +1,26 @@ +require "./spec_helper" + +describe Petstore::Configuration do + describe "#initialize" do + context "with block" do + it "works" do + config = Petstore::Configuration.new do |config| + config.username = "xxx" + end + + config.username.should eq "xxx" + end + end + end + + describe "#configure" do + it "works" do + config = Petstore::Configuration.new + config.configure do |config| + config.username = "xxx" + end + + config.username.should eq "xxx" + end + end +end diff --git a/samples/client/petstore/crystal/spec/petstore_spec.cr b/samples/client/petstore/crystal/spec/petstore_spec.cr new file mode 100644 index 00000000000..cca7698a536 --- /dev/null +++ b/samples/client/petstore/crystal/spec/petstore_spec.cr @@ -0,0 +1,19 @@ +require "./spec_helper" + +describe Petstore do + describe "#configure" do + it "works" do + Petstore.configure do |config| + config.username = "xxx" + end + + config = Petstore.configure + + config.should eq Petstore::Configuration.default + config.username.should eq "xxx" + + # Clean up + Petstore::Configuration.default.username = nil + end + end +end diff --git a/samples/client/petstore/crystal/src/petstore.cr b/samples/client/petstore/crystal/src/petstore.cr index 1f02cc1930d..fadebdc4848 100644 --- a/samples/client/petstore/crystal/src/petstore.cr +++ b/samples/client/petstore/crystal/src/petstore.cr @@ -17,18 +17,21 @@ module Petstore VERSION = {{ `shards version #{__DIR__}`.chomp.stringify }} + # Return the default `Configuration` object. + def self.configure + Configuration.default + end + # Customize default settings for the SDK using block. - # Petstore.configure do |config| - # config.username = "xxx" - # config.password = "xxx" - # end - # If no block given, return the default Configuration object. - def configure - if block_given? - yield(Configuration.default) - else - Configuration.default - end + # + # ``` + # Petstore.configure do |config| + # config.username = "xxx" + # config.password = "xxx" + # end + # ``` + def self.configure + yield Configuration.default end end diff --git a/samples/client/petstore/crystal/src/petstore/configuration.cr b/samples/client/petstore/crystal/src/petstore/configuration.cr index b3d1c1ca202..18ef2969ac3 100644 --- a/samples/client/petstore/crystal/src/petstore/configuration.cr +++ b/samples/client/petstore/crystal/src/petstore/configuration.cr @@ -127,6 +127,7 @@ module Petstore # https://github.com/typhoeus/ethon/blob/master/lib/ethon/easy/queryable.rb#L96 #property params_encoding : String? + # Create a new `Configuration`. def initialize @scheme = "http" @host = "petstore.swagger.io" @@ -149,9 +150,19 @@ module Petstore @password = nil @access_token = nil @temp_folder_path = nil + end - # TODO revise below to support block - #yield(self) if block_given? + # Create a new `Configuration` with block. + # + # ``` + # config = Petstore::Configuration.new do |config| + # config.username = "xxx" + # config.password = "xxx" + # end + # ``` + def initialize + initialize + yield self end # The default Configuration object. @@ -159,8 +170,9 @@ module Petstore @@default ||= Configuration.new end + # Configure object with block. def configure - yield(self) if block_given? + yield self end def scheme=(scheme) From 4948ce78ed001ccf4a870934e7713025be2ac46a Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 21 May 2021 12:54:40 +0800 Subject: [PATCH 024/192] update samples --- .../PetstoreClient/Classes/OpenAPIs/Extensions.swift | 6 +++++- .../Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Animal.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift | 2 ++ .../Classes/OpenAPIs/Models/ApiResponse.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift | 2 ++ .../Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift | 2 ++ .../Classes/OpenAPIs/Models/Capitalization.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Cat.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Category.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Client.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Dog.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/File.swift | 2 ++ .../Classes/OpenAPIs/Models/FileSchemaTestClass.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift | 2 ++ .../Classes/OpenAPIs/Models/HasOnlyReadOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/List.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift | 2 ++ .../MixedPropertiesAndAdditionalPropertiesClass.swift | 2 ++ .../Classes/OpenAPIs/Models/Model200Response.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Name.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Order.swift | 2 ++ .../Classes/OpenAPIs/Models/OuterComposite.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Pet.swift | 2 ++ .../Classes/OpenAPIs/Models/ReadOnlyFirst.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Return.swift | 2 ++ .../Classes/OpenAPIs/Models/SpecialModelName.swift | 2 ++ .../Classes/OpenAPIs/Models/StringBooleanMap.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/Tag.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderDefault.swift | 2 ++ .../Classes/OpenAPIs/Models/TypeHolderExample.swift | 2 ++ .../PetstoreClient/Classes/OpenAPIs/Models/User.swift | 2 ++ samples/client/petstore/swift5/x-swift-hashable/project.yml | 2 +- 42 files changed, 86 insertions(+), 2 deletions(-) diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 3aef2d1d6c5..11e807937bd 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -5,7 +5,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } @@ -185,6 +187,7 @@ extension HTTPURLResponse { } } +#if canImport(AnyCodable) extension AnyCodable: Hashable { public func hash(into hasher: inout Hasher) { switch value { @@ -224,4 +227,5 @@ extension AnyCodable: Hashable { hasher.combine(0) } } -} \ No newline at end of file +} +#endif diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 5e200855eb8..9080af3e960 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct AdditionalPropertiesClass: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index bd89731cf33..c26cc3b6a8d 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Animal: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift index b20b894a1ad..a0b09cb9761 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AnimalFarm.swift @@ -6,6 +6,8 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index efc4b699815..7d81a45adbe 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ApiResponse: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 8f042bcafcf..d25598464fb 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfArrayOfNumberOnly: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index 216ddb96303..1d28ec680cc 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayOfNumberOnly: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 0c81613f51d..6f1028d1507 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ArrayTest: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index 86d95d462a9..74ec197ecda 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Capitalization: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 8bcdaa52c2a..8645c52b44f 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Cat: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index af61714a29b..ed986d32cc6 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct CatAllOf: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 0def88b1fc8..398da60aa73 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Category: Codable, Hashable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 7a15b3a7c3b..c38e0db828f 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model with \"_class\" property */ public struct ClassModel: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 82451c58923..170939891b6 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Client: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index f935e75ea71..57ed7a20a3c 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Dog: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 378eb3c3847..5be7f8b08ca 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct DogAllOf: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 6502415e4f7..67c2e914a2e 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumArrays: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift index ab01cf297f8..6ea2895aee5 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum EnumClass: String, Codable, CaseIterable { case abc = "_abc" diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 11883eb92b4..a70a595f214 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct EnumTest: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/File.swift index beed22f4452..69e3da33b3f 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Must be named `File` for test. */ public struct File: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 286fd1363ec..68387be7c4c 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FileSchemaTestClass: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 0c3ae8c0c52..fcbb5c3f7be 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct FormatTest: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index 5139c97869e..42fe810e04a 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct HasOnlyReadOnly: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 5774c22584b..e5c7ec7f3d6 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct List: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 245b554c5b1..c1d8412cda0 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MapTest: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index 353dfe0095c..e2b08455158 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct MixedPropertiesAndAdditionalPropertiesClass: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index b05878fec39..3e02e71a66f 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name starting with number */ public struct Model200Response: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index 9f37e7a69d9..9cef79be16c 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing model name same as property name */ public struct Name: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index f790388df53..9da0be0af2b 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct NumberOnly: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 2b038b6a6a7..adde2ac7624 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Order: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 940ba71637a..0a520ef9ae7 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct OuterComposite: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift index 9bd6f3bef8f..76c34b3c2ce 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterEnum.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public enum OuterEnum: String, Codable, CaseIterable { case placed = "placed" diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index ea9ece39161..a87ab825ea0 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Pet: Codable, Hashable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index f54c2e9ddab..eeaf9625e38 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct ReadOnlyFirst: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 0053e62ba10..b1abd5c6485 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif /** Model for testing reserved words */ public struct Return: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index 373a7e8fc8c..65d9147f3e6 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct SpecialModelName: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index a103da75ea3..517b23a181f 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct StringBooleanMap: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 5d90c8a7400..cd5acc827db 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct Tag: Codable, Hashable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 2c4ecd20dde..ac7d4626df7 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderDefault: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index c6a93c87f8b..2de070c4927 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct TypeHolderExample: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/User.swift index c905a34d516..c25aec1dc04 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -6,7 +6,9 @@ // import Foundation +#if canImport(AnyCodable) import AnyCodable +#endif public struct User: Codable { diff --git a/samples/client/petstore/swift5/x-swift-hashable/project.yml b/samples/client/petstore/swift5/x-swift-hashable/project.yml index 5528eeee513..0493cf65896 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/project.yml +++ b/samples/client/petstore/swift5/x-swift-hashable/project.yml @@ -11,5 +11,5 @@ targets: settings: APPLICATION_EXTENSION_API_ONLY: true scheme: {} - + dependencies: - carthage: AnyCodable From ab6d66147b858dca268119456e084a6540512329 Mon Sep 17 00:00:00 2001 From: Arthur Mogliev Date: Fri, 21 May 2021 10:40:38 +0400 Subject: [PATCH 025/192] [php-mezzio-ph] PHP 8 support (#9445) * Huge update for php-mezzio-ph generator: - proper container support for data types - support for query parameter references and query parameter schema references - dependency update (PHP 7.3+, PathHandler 0.7+, DataTransfer 0.5+) * Sample regeneration after rebasing for php-mezzio-ph * - added custom CLI option for php-mezzio-ph to generate code using modern PHP syntax - removed obsolete php-mezzio-ph samples in samples/openapi3/server/petstore/php-mezzio-ph * - fixes for JavaDoc declarations that seems to break CI * - fix for outdated sample file --- .gitignore | 1 - bin/configs/php-mezzio-ph-modern.yaml | 6 + docs/generators/php-mezzio-ph.md | 1 + .../PhpMezzioPathHandlerServerCodegen.java | 227 +++++++++++++----- .../php-mezzio-ph-modern/Factory.php.mustache | 53 ++++ .../InternalServerError.php.mustache | 45 ++++ .../php-mezzio-ph-modern/README.md.mustache | 34 +++ .../php-mezzio-ph-modern/api.mustache | 73 ++++++ .../php-mezzio-ph-modern/app.yml.mustache | 0 .../composer.json.mustache | 26 ++ .../php-mezzio-ph-modern}/config.yml | 11 +- .../php-mezzio-ph-modern}/container.php | 3 - .../data_transfer.yml.mustache | 34 +++ .../resources/php-mezzio-ph-modern/gitignore | 0 .../resources/php-mezzio-ph-modern}/index.php | 0 .../list_item_type.mustache | 8 + .../map_item_type.mustache | 8 + .../php-mezzio-ph-modern/model.mustache | 13 + .../model_container.mustache | 57 +++++ .../model_normal_var.mustache | 45 ++++ .../model_object.mustache | 23 ++ .../model_query_var.mustache | 51 ++++ .../path_handler.yml.mustache | 44 ++++ .../php-mezzio-ph/Factory.php.mustache | 16 +- .../php-mezzio-ph/README.md.mustache | 4 +- .../main/resources/php-mezzio-ph/api.mustache | 17 +- .../php-mezzio-ph/composer.json.mustache | 8 +- .../main/resources/php-mezzio-ph/config.yml | 9 +- .../php-mezzio-ph/data_transfer.yml.mustache | 8 + .../php-mezzio-ph/list_item_type.mustache | 8 + .../php-mezzio-ph/map_item_type.mustache | 8 + .../resources/php-mezzio-ph/model.mustache | 26 +- .../php-mezzio-ph/model_container.mustache | 59 +++++ .../php-mezzio-ph/model_normal_var.mustache | 105 ++++---- .../php-mezzio-ph/model_object.mustache | 24 ++ .../php-mezzio-ph/model_query_var.mustache | 101 ++++---- .../php-mezzio-ph/path_handler.yml.mustache | 37 +-- .../php-mezzio-ph/.openapi-generator/FILES | 36 --- .../php-mezzio-ph/.openapi-generator/VERSION | 1 - .../petstore/php-mezzio-ph/composer.json | 27 --- .../php-mezzio-ph/src/App/DTO/ApiResponse.php | 31 --- .../php-mezzio-ph/src/App/DTO/Category.php | 26 -- .../src/App/DTO/FindPetsByStatusQueryData.php | 22 -- .../src/App/DTO/FindPetsByTagsQueryData.php | 22 -- .../src/App/DTO/InlineObject.php | 26 -- .../src/App/DTO/InlineObject1.php | 27 --- .../src/App/DTO/LoginUserQueryData.php | 30 --- .../php-mezzio-ph/src/App/DTO/Order.php | 51 ---- .../php-mezzio-ph/src/App/DTO/Pet.php | 58 ----- .../php-mezzio-ph/src/App/DTO/Tag.php | 25 -- .../php-mezzio-ph/src/App/DTO/User.php | 62 ----- .../php-mezzio-ph/src/App/Handler/Pet.php | 68 ------ .../src/App/Handler/PetFindByStatus.php | 44 ---- .../src/App/Handler/PetFindByTags.php | 44 ---- .../src/App/Handler/StoreOrder.php | 41 ---- .../src/App/Handler/UserLogin.php | 43 ---- .../petstore/php-mezzio-ph-modern/.gitignore | 9 + .../.openapi-generator-ignore | 0 .../.openapi-generator/FILES | 71 ++++++ .../.openapi-generator/VERSION | 1 + .../petstore/php-mezzio-ph-modern}/README.md | 6 +- .../application/config.yml | 21 ++ .../application/config/app.yml | 22 ++ .../application/config/data_transfer.yml | 14 +- .../application/config/path_handler.yml | 37 +-- .../application/container.php | 43 ++++ .../php-mezzio-ph-modern/composer.json | 26 ++ .../php-mezzio-ph-modern/public/index.php | 11 + .../src/App/DTO/ApiResponse.php | 25 ++ .../src/App/DTO/Category.php | 22 ++ .../src/App/DTO/Collection.php | 14 ++ .../src/App/DTO/Collection1.php | 14 ++ .../src/App/DTO/Collection10.php | 14 ++ .../src/App/DTO/Collection11.php | 14 ++ .../src/App/DTO/Collection12.php | 14 ++ .../src/App/DTO/Collection13.php | 14 ++ .../src/App/DTO/Collection14.php | 14 ++ .../src/App/DTO/Collection15.php | 14 ++ .../src/App/DTO/Collection16.php | 14 ++ .../src/App/DTO/Collection17.php | 14 ++ .../src/App/DTO/Collection18.php | 14 ++ .../src/App/DTO/Collection19.php | 14 ++ .../src/App/DTO/Collection2.php | 14 ++ .../src/App/DTO/Collection20.php | 14 ++ .../src/App/DTO/Collection21.php | 14 ++ .../src/App/DTO/Collection22.php | 14 ++ .../src/App/DTO/Collection23.php | 14 ++ .../src/App/DTO/Collection24.php | 14 ++ .../src/App/DTO/Collection25.php | 14 ++ .../src/App/DTO/Collection26.php | 14 ++ .../src/App/DTO/Collection27.php | 14 ++ .../src/App/DTO/Collection28.php | 14 ++ .../src/App/DTO/Collection29.php | 14 ++ .../src/App/DTO/Collection3.php | 14 ++ .../src/App/DTO/Collection30.php | 14 ++ .../src/App/DTO/Collection31.php | 14 ++ .../src/App/DTO/Collection32.php | 14 ++ .../src/App/DTO/Collection33.php | 14 ++ .../src/App/DTO/Collection34.php | 14 ++ .../src/App/DTO/Collection35.php | 14 ++ .../src/App/DTO/Collection36.php | 14 ++ .../src/App/DTO/Collection4.php | 14 ++ .../src/App/DTO/Collection5.php | 14 ++ .../src/App/DTO/Collection6.php | 14 ++ .../src/App/DTO/Collection7.php | 14 ++ .../src/App/DTO/Collection8.php | 14 ++ .../src/App/DTO/Collection9.php | 14 ++ .../src/App/DTO/FindPetsByStatusQueryData.php | 21 ++ .../src/App/DTO/FindPetsByTagsQueryData.php | 21 ++ .../src/App/DTO/LoginUserQueryData.php | 30 +++ .../src/App/DTO/Order.php | 41 ++++ .../php-mezzio-ph-modern/src/App/DTO/Pet.php | 43 ++++ .../php-mezzio-ph-modern/src/App/DTO/Tag.php | 21 ++ .../php-mezzio-ph-modern/src/App/DTO/User.php | 48 ++++ .../php-mezzio-ph-modern}/src/App/Factory.php | 19 +- .../src/App/Handler/Pet.php | 56 +++++ .../src/App/Handler/PetFindByStatus.php | 36 +++ .../src/App/Handler/PetFindByTags.php | 36 +++ .../src/App/Handler/PetPetId.php | 31 +-- .../src/App/Handler/PetPetIdUploadImage.php | 17 +- .../src/App/Handler/StoreInventory.php | 20 +- .../src/App/Handler/StoreOrder.php | 34 +++ .../src/App/Handler/StoreOrderOrderId.php | 26 +- .../src/App/Handler/User.php | 17 +- .../src/App/Handler/UserCreateWithArray.php | 20 +- .../src/App/Handler/UserCreateWithList.php | 20 +- .../src/App/Handler/UserLogin.php | 36 +++ .../src/App/Handler/UserLogout.php | 11 +- .../src/App/Handler/UserUsername.php | 37 +-- .../App/Middleware/InternalServerError.php | 11 +- .../php-mezzio-ph/.openapi-generator/FILES | 37 +++ .../server/petstore/php-mezzio-ph/README.md | 4 +- .../php-mezzio-ph/application/config.yml | 9 +- .../application/config/data_transfer.yml | 8 + .../application/config/path_handler.yml | 37 +-- .../petstore/php-mezzio-ph/composer.json | 8 +- .../php-mezzio-ph/src/App/DTO/ApiResponse.php | 3 + .../php-mezzio-ph/src/App/DTO/Category.php | 2 + .../php-mezzio-ph/src/App/DTO/Collection.php | 16 ++ .../php-mezzio-ph/src/App/DTO/Collection1.php | 16 ++ .../src/App/DTO/Collection10.php | 16 ++ .../src/App/DTO/Collection11.php | 16 ++ .../src/App/DTO/Collection12.php | 16 ++ .../src/App/DTO/Collection13.php | 16 ++ .../src/App/DTO/Collection14.php | 16 ++ .../src/App/DTO/Collection15.php | 16 ++ .../src/App/DTO/Collection16.php | 16 ++ .../src/App/DTO/Collection17.php | 16 ++ .../src/App/DTO/Collection18.php | 16 ++ .../src/App/DTO/Collection19.php | 16 ++ .../php-mezzio-ph/src/App/DTO/Collection2.php | 16 ++ .../src/App/DTO/Collection20.php | 16 ++ .../src/App/DTO/Collection21.php | 16 ++ .../src/App/DTO/Collection22.php | 16 ++ .../src/App/DTO/Collection23.php | 16 ++ .../src/App/DTO/Collection24.php | 16 ++ .../src/App/DTO/Collection25.php | 16 ++ .../src/App/DTO/Collection26.php | 16 ++ .../src/App/DTO/Collection27.php | 16 ++ .../src/App/DTO/Collection28.php | 16 ++ .../src/App/DTO/Collection29.php | 16 ++ .../php-mezzio-ph/src/App/DTO/Collection3.php | 16 ++ .../src/App/DTO/Collection30.php | 16 ++ .../src/App/DTO/Collection31.php | 16 ++ .../src/App/DTO/Collection32.php | 16 ++ .../src/App/DTO/Collection33.php | 16 ++ .../src/App/DTO/Collection34.php | 16 ++ .../src/App/DTO/Collection35.php | 16 ++ .../src/App/DTO/Collection36.php | 16 ++ .../php-mezzio-ph/src/App/DTO/Collection4.php | 16 ++ .../php-mezzio-ph/src/App/DTO/Collection5.php | 16 ++ .../php-mezzio-ph/src/App/DTO/Collection6.php | 16 ++ .../php-mezzio-ph/src/App/DTO/Collection7.php | 16 ++ .../php-mezzio-ph/src/App/DTO/Collection8.php | 16 ++ .../php-mezzio-ph/src/App/DTO/Collection9.php | 16 ++ .../src/App/DTO/FindPetsByStatusQueryData.php | 2 +- .../src/App/DTO/FindPetsByTagsQueryData.php | 2 +- .../src/App/DTO/InlineObject.php | 26 -- .../src/App/DTO/InlineObject1.php | 27 --- .../src/App/DTO/LoginUserQueryData.php | 2 + .../php-mezzio-ph/src/App/DTO/Order.php | 6 + .../php-mezzio-ph/src/App/DTO/Pet.php | 23 +- .../php-mezzio-ph/src/App/DTO/Tag.php | 2 + .../php-mezzio-ph/src/App/DTO/User.php | 8 + .../php-mezzio-ph/src/App/Factory.php | 16 +- .../src/App/Handler/PetFindByStatus.php | 5 +- .../src/App/Handler/PetFindByTags.php | 5 +- .../src/App/Handler/StoreInventory.php | 5 +- .../src/App/Handler/UserCreateWithArray.php | 5 +- .../src/App/Handler/UserCreateWithList.php | 5 +- 190 files changed, 2970 insertions(+), 1224 deletions(-) create mode 100644 bin/configs/php-mezzio-ph-modern.yaml create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/Factory.php.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/InternalServerError.php.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/README.md.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/api.mustache rename samples/openapi3/server/petstore/php-mezzio-ph/application/config/app.yml => modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/app.yml.mustache (100%) create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/composer.json.mustache rename {samples/openapi3/server/petstore/php-mezzio-ph/application => modules/openapi-generator/src/main/resources/php-mezzio-ph-modern}/config.yml (68%) rename {samples/openapi3/server/petstore/php-mezzio-ph/application => modules/openapi-generator/src/main/resources/php-mezzio-ph-modern}/container.php (91%) create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/data_transfer.yml.mustache rename samples/openapi3/server/petstore/php-mezzio-ph/.gitignore => modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/gitignore (100%) rename {samples/openapi3/server/petstore/php-mezzio-ph/public => modules/openapi-generator/src/main/resources/php-mezzio-ph-modern}/index.php (100%) create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/list_item_type.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/map_item_type.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_container.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_normal_var.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_object.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_query_var.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/path_handler.yml.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph/list_item_type.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph/map_item_type.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph/model_container.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-mezzio-ph/model_object.mustache delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/.openapi-generator/FILES delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/.openapi-generator/VERSION delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/composer.json delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/ApiResponse.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/Category.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/FindPetsByStatusQueryData.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/FindPetsByTagsQueryData.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/InlineObject.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/InlineObject1.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/LoginUserQueryData.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/Order.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/Pet.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/Tag.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/User.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/Pet.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByStatus.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByTags.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/StoreOrder.php delete mode 100644 samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserLogin.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/.gitignore rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/.openapi-generator-ignore (100%) create mode 100644 samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/FILES create mode 100644 samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/README.md (93%) create mode 100644 samples/server/petstore/php-mezzio-ph-modern/application/config.yml create mode 100644 samples/server/petstore/php-mezzio-ph-modern/application/config/app.yml rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/application/config/data_transfer.yml (69%) rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/application/config/path_handler.yml (53%) create mode 100644 samples/server/petstore/php-mezzio-ph-modern/application/container.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/composer.json create mode 100644 samples/server/petstore/php-mezzio-ph-modern/public/index.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/ApiResponse.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Category.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection1.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection10.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection11.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection12.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection13.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection14.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection15.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection16.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection17.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection18.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection19.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection2.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection20.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection21.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection22.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection23.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection24.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection25.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection26.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection27.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection28.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection29.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection3.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection30.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection31.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection32.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection33.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection34.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection35.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection36.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection4.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection5.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection6.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection7.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection8.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection9.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/FindPetsByStatusQueryData.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/FindPetsByTagsQueryData.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/LoginUserQueryData.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Order.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Pet.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Tag.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/User.php rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/src/App/Factory.php (71%) create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/Pet.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetFindByStatus.php create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetFindByTags.php rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/src/App/Handler/PetPetId.php (55%) rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/src/App/Handler/PetPetIdUploadImage.php (58%) rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/src/App/Handler/StoreInventory.php (54%) create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/StoreOrder.php rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/src/App/Handler/StoreOrderOrderId.php (54%) rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/src/App/Handler/User.php (57%) rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/src/App/Handler/UserCreateWithArray.php (52%) rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/src/App/Handler/UserCreateWithList.php (52%) create mode 100644 samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserLogin.php rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/src/App/Handler/UserLogout.php (70%) rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/src/App/Handler/UserUsername.php (51%) rename samples/{openapi3/server/petstore/php-mezzio-ph => server/petstore/php-mezzio-ph-modern}/src/App/Middleware/InternalServerError.php (82%) create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection1.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection10.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection11.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection12.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection13.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection14.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection15.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection16.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection17.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection18.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection19.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection2.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection20.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection21.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection22.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection23.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection24.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection25.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection26.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection27.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection28.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection29.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection3.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection30.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection31.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection32.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection33.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection34.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection35.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection36.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection4.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection5.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection6.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection7.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection8.php create mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection9.php delete mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/InlineObject.php delete mode 100644 samples/server/petstore/php-mezzio-ph/src/App/DTO/InlineObject1.php diff --git a/.gitignore b/.gitignore index b56824e26e3..3a964a0bc5e 100644 --- a/.gitignore +++ b/.gitignore @@ -177,7 +177,6 @@ samples/client/petstore/python-tornado/.venv/ # PHP samples/client/petstore/php/OpenAPIClient-php/composer.lock samples/openapi3/server/petstore/php-symfony/SymfonyBundle-php/composer.lock -samples/openapi3/server/petstore/php-mezzio-ph/composer.lock samples/server/petstore/php-laravel/lib/composer.lock samples/server/petstore/php-lumen/lib/composer.lock samples/server/petstore/php-slim4/composer.lock diff --git a/bin/configs/php-mezzio-ph-modern.yaml b/bin/configs/php-mezzio-ph-modern.yaml new file mode 100644 index 00000000000..accaa2dfe30 --- /dev/null +++ b/bin/configs/php-mezzio-ph-modern.yaml @@ -0,0 +1,6 @@ +generatorName: php-mezzio-ph +outputDir: samples/server/petstore/php-mezzio-ph-modern +inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml +templateDir: modules/openapi-generator/src/main/resources/php-mezzio-ph-modern +additionalProperties: + modern: "true" diff --git a/docs/generators/php-mezzio-ph.md b/docs/generators/php-mezzio-ph.md index f691e8f57fb..93f31d7fbca 100644 --- a/docs/generators/php-mezzio-ph.md +++ b/docs/generators/php-mezzio-ph.md @@ -15,6 +15,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |invokerPackage|The main namespace to use for all classes. e.g. Yay\Pets| |null| |legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|
    **true**
    The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
    **false**
    The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
    |true| |modelPackage|package for generated models| |null| +|modern|use modern language features (generated code will require PHP 8.0)| |false| |packageName|The main package name for classes. e.g. GeneratedPetstore| |null| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java index 658537e414b..529c5a27e21 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java @@ -21,9 +21,13 @@ import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.PathItem; import io.swagger.v3.oas.models.PathItem.HttpMethod; +import io.swagger.v3.oas.models.Paths; import io.swagger.v3.oas.models.media.*; import io.swagger.v3.oas.models.parameters.Parameter; import io.swagger.v3.oas.models.parameters.QueryParameter; +import io.swagger.v3.oas.models.parameters.RequestBody; +import io.swagger.v3.oas.models.responses.ApiResponse; +import io.swagger.v3.oas.models.responses.ApiResponses; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.utils.ModelUtils; @@ -35,12 +39,17 @@ import java.util.*; public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { private final Logger LOGGER = LoggerFactory.getLogger(PhpMezzioPathHandlerServerCodegen.class); - - // TODO: Rename to x- prefixed vendor extensions, per specification. + // Custom generator option names + public static final String OPT_MODERN = "modern"; + // Internal vendor extension names for extra template data that should not be set in specification public static final String VEN_FROM_QUERY = "internal.ze-ph.fromQuery"; public static final String VEN_COLLECTION_FORMAT = "internal.ze-ph.collectionFormat"; public static final String VEN_QUERY_DATA_TYPE = "internal.ze-ph.queryDataType"; public static final String VEN_HAS_QUERY_DATA = "internal.ze-ph.hasQueryData"; + public static final String VEN_FROM_CONTAINER = "internal.ze-ph.fromContainer"; + public static final String VEN_CONTAINER_DATA_TYPE = "internal.ze-ph.containerDataType"; + + private boolean useModernSyntax = false; @Override public CodegenType getTag() { @@ -85,6 +94,8 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { modelDirName = "DTO"; apiPackage = invokerPackage + "\\" + apiDirName; modelPackage = invokerPackage + "\\" + modelDirName; + //"Api" classes have dedicated namespace so there is no need to add non-empty suffix by default + apiNameSuffix = ""; apiTestTemplateFiles.clear(); modelTestTemplateFiles.clear(); @@ -103,6 +114,17 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { supportingFiles.add(new SupportingFile("InternalServerError.php.mustache", srcBasePath + File.separator + "Middleware", "InternalServerError.php")); additionalProperties.put(CodegenConstants.ARTIFACT_VERSION, "1.0.0"); + //Register custom CLI options + addSwitch(OPT_MODERN, "use modern language features (generated code will require PHP 8.0)", useModernSyntax); + } + + @Override + public void processOpts() { + super.processOpts(); + if (additionalProperties.containsKey(OPT_MODERN)) { + embeddedTemplateDir = templateDir = "php-mezzio-ph-modern"; + useModernSyntax = true; + } } /** @@ -136,29 +158,31 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { } } - /** - * Return the file name of the Api Test - * - * @param name the file name of the Api - * @return the file name of the Api - */ - @Override - public String toApiFilename(String name) { - return toApiName(name); - } - - /** - * Output the API (class) name (capitalized) ending with "Api" - * Return DefaultApi if name is empty - * - * @param name the name of the Api - * @return capitalized Api name ending with "Api" - */ @Override public String toApiName(String name) { - //Remove } - name = name.replaceAll("[\\}]", ""); - return super.toModelName(name); + return super.toApiName(toModelName(name)); + } + + @Override + public String getTypeDeclaration(Schema p) { + String result; + Map extensions = p.getExtensions(); + if ((extensions != null) && extensions.containsKey(VEN_CONTAINER_DATA_TYPE)) { + result = (String) extensions.get(VEN_CONTAINER_DATA_TYPE); + } else if (useModernSyntax && (ModelUtils.isArraySchema(p) || ModelUtils.isMapSchema(p))) { + result = "array"; + } else { + result = super.getTypeDeclaration(p); + } + return result; + } + + @Override + public void preprocessOpenAPI(OpenAPI openAPI) { + super.preprocessOpenAPI(openAPI); + + generateParameterSchemas(openAPI); + generateContainerSchemas(openAPI); } /** @@ -166,10 +190,7 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { * * @param openAPI OpenAPI object */ - @Override - public void preprocessOpenAPI(OpenAPI openAPI) { - super.preprocessOpenAPI(openAPI); - + protected void generateParameterSchemas(OpenAPI openAPI) { Map paths = openAPI.getPaths(); if (paths != null) { for (String pathname : paths.keySet()) { @@ -178,34 +199,34 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { if (operationMap != null) { for (HttpMethod method : operationMap.keySet()) { Operation operation = operationMap.get(method); - Map schemas = new HashMap<>(); + Map propertySchemas = new HashMap<>(); if (operation == null || operation.getParameters() == null) { continue; } List requiredProperties = new ArrayList<>(); for (Parameter parameter : operation.getParameters()) { - Schema schema = convertParameterToSchema(parameter); - if (schema != null) { - schemas.put(schema.getName(), schema); - if (Boolean.TRUE.equals(parameter.getRequired())) { - requiredProperties.add(schema.getName()); + Parameter referencedParameter = ModelUtils.getReferencedParameter(openAPI, parameter); + Schema propertySchema = convertParameterToSchema(openAPI, referencedParameter); + if (propertySchema != null) { + propertySchemas.put(propertySchema.getName(), propertySchema); + if (Boolean.TRUE.equals(referencedParameter.getRequired())) { + requiredProperties.add(propertySchema.getName()); } } } - if (!schemas.isEmpty()) { - ObjectSchema model = new ObjectSchema(); + if (!propertySchemas.isEmpty()) { + ObjectSchema schema = new ObjectSchema(); String operationId = getOrGenerateOperationId(operation, pathname, method.name()); - model.setDescription("Query parameters for " + operationId); - model.setProperties(schemas); - model.setRequired(requiredProperties); - //Add internal extension directly, because addExtension filters extension names - addInternalExtensionToSchema(model, VEN_FROM_QUERY, Boolean.TRUE); - String definitionName = generateUniqueDefinitionName(operationId + "QueryData", openAPI); - openAPI.getComponents().addSchemas(definitionName, model); - String definitionModel = "\\" + modelPackage + "\\" + toModelName(definitionName); - addInternalExtensionToOperation(operation, VEN_QUERY_DATA_TYPE, definitionModel); + schema.setDescription("Query parameters for " + operationId); + schema.setProperties(propertySchemas); + schema.setRequired(requiredProperties); + addInternalExtensionToSchema(schema, VEN_FROM_QUERY, Boolean.TRUE); + String schemaName = generateUniqueSchemaName(openAPI, operationId + "QueryData"); + openAPI.getComponents().addSchemas(schemaName, schema); + String schemaDataType = getTypeDeclaration(toModelName(schemaName)); + addInternalExtensionToOperation(operation, VEN_QUERY_DATA_TYPE, schemaDataType); addInternalExtensionToOperation(operation, VEN_HAS_QUERY_DATA, Boolean.TRUE); } } @@ -214,17 +235,18 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { } } - protected Schema convertParameterToSchema(Parameter parameter) { + protected Schema convertParameterToSchema(OpenAPI openAPI, Parameter parameter) { Schema property = null; if (parameter instanceof QueryParameter) { QueryParameter queryParameter = (QueryParameter) parameter; + Schema parameterSchema = ModelUtils.getReferencedSchema(openAPI, queryParameter.getSchema()); // array - if (ModelUtils.isArraySchema(queryParameter.getSchema())) { - Schema inner = ((ArraySchema) queryParameter.getSchema()).getItems(); + if (ModelUtils.isArraySchema(parameterSchema)) { + Schema itemSchema = ((ArraySchema) parameterSchema).getItems(); ArraySchema arraySchema = new ArraySchema(); - arraySchema.setMinItems(queryParameter.getSchema().getMinItems()); - arraySchema.setMaxItems(queryParameter.getSchema().getMaxItems()); - arraySchema.setItems(inner); + arraySchema.setMinItems(parameterSchema.getMinItems()); + arraySchema.setMaxItems(parameterSchema.getMaxItems()); + arraySchema.setItems(itemSchema); String collectionFormat = getCollectionFormat(queryParameter); if (collectionFormat == null) { collectionFormat = "csv"; @@ -232,25 +254,25 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { addInternalExtensionToSchema(arraySchema, VEN_COLLECTION_FORMAT, collectionFormat); property = arraySchema; } else { // non-array e.g. string, integer - switch (queryParameter.getSchema().getType()) { + switch (parameterSchema.getType()) { case "string": StringSchema stringSchema = new StringSchema(); - stringSchema.setMinLength(queryParameter.getSchema().getMinLength()); - stringSchema.setMaxLength(queryParameter.getSchema().getMaxLength()); - stringSchema.setPattern(queryParameter.getSchema().getPattern()); - stringSchema.setEnum(queryParameter.getSchema().getEnum()); + stringSchema.setMinLength(parameterSchema.getMinLength()); + stringSchema.setMaxLength(parameterSchema.getMaxLength()); + stringSchema.setPattern(parameterSchema.getPattern()); + stringSchema.setEnum(parameterSchema.getEnum()); property = stringSchema; break; case "integer": IntegerSchema integerSchema = new IntegerSchema(); - integerSchema.setMinimum(queryParameter.getSchema().getMinimum()); - integerSchema.setMaximum(queryParameter.getSchema().getMaximum()); + integerSchema.setMinimum(parameterSchema.getMinimum()); + integerSchema.setMaximum(parameterSchema.getMaximum()); property = integerSchema; break; case "number": NumberSchema floatSchema = new NumberSchema(); - floatSchema.setMinimum(queryParameter.getSchema().getMinimum()); - floatSchema.setMaximum(queryParameter.getSchema().getMaximum()); + floatSchema.setMinimum(parameterSchema.getMinimum()); + floatSchema.setMaximum(parameterSchema.getMaximum()); property = floatSchema; break; case "boolean": @@ -264,6 +286,7 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { break; } } + if (property != null) { property.setName(queryParameter.getName()); property.setDescription(queryParameter.getDescription()); @@ -289,7 +312,7 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { operation.getExtensions().put(name, value); } - protected String generateUniqueDefinitionName(String name, OpenAPI openAPI) { + protected String generateUniqueSchemaName(OpenAPI openAPI, String name) { String result = name; if (openAPI.getComponents().getSchemas() != null) { int count = 1; @@ -301,6 +324,90 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen { return result; } + /** + * Generate additional model definitions for containers in whole specification + * + * @param openAPI OpenAPI object + */ + protected void generateContainerSchemas(OpenAPI openAPI) { + Paths paths = openAPI.getPaths(); + for (String pathName : paths.keySet()) { + for (Operation operation : paths.get(pathName).readOperations()) { + List parameters = operation.getParameters(); + if (parameters != null) { + for (Parameter parameter : parameters) { + generateContainerSchemas(openAPI, ModelUtils.getReferencedParameter(openAPI, parameter).getSchema()); + } + } + RequestBody requestBody = ModelUtils.getReferencedRequestBody(openAPI, operation.getRequestBody()); + if (requestBody != null) { + Content requestBodyContent = requestBody.getContent(); + if (requestBodyContent != null) { + for (String mediaTypeName : requestBodyContent.keySet()) { + generateContainerSchemas(openAPI, requestBodyContent.get(mediaTypeName).getSchema()); + } + } + } + ApiResponses responses = operation.getResponses(); + for (String responseCode : responses.keySet()) { + ApiResponse response = ModelUtils.getReferencedApiResponse(openAPI, responses.get(responseCode)); + Content responseContent = response.getContent(); + if (responseContent != null) { + for (String mediaTypeName : responseContent.keySet()) { + generateContainerSchemas(openAPI, responseContent.get(mediaTypeName).getSchema()); + } + } + } + } + } + } + + /** + * Generate additional model definitions for containers in specified schema + * + * @param openAPI OpenAPI object + * @param schema OAS schema to process + */ + protected void generateContainerSchemas(OpenAPI openAPI, Schema schema) { + if (schema != null) { + //Dereference schema + schema = ModelUtils.getReferencedSchema(openAPI, schema); + Boolean isContainer = Boolean.FALSE; + + if (ModelUtils.isObjectSchema(schema)) { + //Recursively process all schemas of object properties + Map properties = schema.getProperties(); + if (properties != null) { + for (String propertyName: properties.keySet()) { + generateContainerSchemas(openAPI, properties.get(propertyName)); + } + } + } else if (ModelUtils.isArraySchema(schema)) { + //Recursively process schema of array items + generateContainerSchemas(openAPI, ((ArraySchema) schema).getItems()); + isContainer = Boolean.TRUE; + } else if (ModelUtils.isMapSchema(schema)) { + //Recursively process schema of map items + Object itemSchema = schema.getAdditionalProperties(); + if (itemSchema instanceof Schema) { + generateContainerSchemas(openAPI, (Schema) itemSchema); + } + isContainer = Boolean.TRUE; + } + + if (isContainer) { + //Generate special component schema for container + String containerSchemaName = generateUniqueSchemaName(openAPI, "Collection"); + Schema containerSchema = new ObjectSchema(); + containerSchema.addProperties("inner", schema); + addInternalExtensionToSchema(containerSchema, VEN_FROM_CONTAINER, Boolean.TRUE); + openAPI.getComponents().addSchemas(containerSchemaName, containerSchema); + String containerDataType = getTypeDeclaration(toModelName(containerSchemaName)); + addInternalExtensionToSchema(schema, VEN_CONTAINER_DATA_TYPE, containerDataType); + } + } + } + @Override public Map postProcessOperationsWithModels(Map objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/Factory.php.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/Factory.php.mustache new file mode 100644 index 00000000000..c517b693604 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/Factory.php.mustache @@ -0,0 +1,53 @@ +get(EmitterInterface::class), + $container->get(ServerRequestInterface::class), + static fn(\Throwable $error): ResponseInterface => $errorMiddleware->handleError($error) + ); + $application = new Application( + $container->get(MiddlewareFactory::class), + $pipeline, + $container->get(RouteCollector::class), + $runner + ); + $application->pipe($errorMiddleware); + $application->pipe(RouteMiddleware::class); + $application->pipe(MethodNotAllowedMiddleware::class); + $application->pipe(DispatchMiddleware::class); + $application->pipe(NotFoundHandler::class); + + return $application; + } + + protected static function getErrorMiddleware(ContainerInterface $container): Middleware\InternalServerError + { + return $container->get(Middleware\InternalServerError::class); + } +} diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/InternalServerError.php.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/InternalServerError.php.mustache new file mode 100644 index 00000000000..54f4d66a56d --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/InternalServerError.php.mustache @@ -0,0 +1,45 @@ +handle($request); + ErrorHandler::stop(true); + } + catch (\Throwable $error) { + $result = $this->handleError($error); + } + return $result; + } + + public function handleError(\Throwable $error): ResponseInterface + { + \error_log((string)$error); + return $this->generateEmptyResponse()->withStatus(500, 'Internal server error'); + } + + protected function generateEmptyResponse(): ResponseInterface + { + return ($this->responseGenerator)(); + } +} diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/README.md.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/README.md.mustache new file mode 100644 index 00000000000..fd66369b261 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/README.md.mustache @@ -0,0 +1,34 @@ +# OpenAPI generated server + +Generated by the [OpenAPI Generator](https://openapi-generator.tech) project. + +## Overview +This server stub aims to provide light, yet comprehensive structure for your API project using: + +- PHP: >=8.0 +- [Laminas Mezzio](https://docs.mezzio.dev/mezzio/): >=3.3 +- [Path Handler](https://github.com/Articus/PathHandler): >=0.7 + +## How to use +All you have to do to start development is: + +- install dependencies via [Composer](https://getcomposer.org/) (small note: [ext-yaml](https://pecl.php.net/package/yaml) is used only for configuration parsing, so if you want to drop this dependency, simply adjust `./application/container.php`) +- create cache folder: `mkdir -p ./data/cache` (you will need it later for configuration and metadata caches - check comments in `./application/config.yml`) +- start PHP development server: `php -S 0.0.0.0:8080 -t ./public` (or any other SAPI you prefer, just make sure that you configure webroot to `./public` and rewrites to `./public/index.php`) + +After that you should be able to call all methods from your API spec. Most of the negative scenarios should be handled: + +- `404 Not found` for unknown routes +- `406 Not acceptable` for invalid `Accept` header +- `415 Unsupported media type` for invalid `Content-Type` header +- `400 Malformed JSON` for unparsable JSON body +- `422 Unprocessable entity` for parsable JSON body that fails validation + +But for obvious reason you will not get any `200 OK`, only `501 Not implemented`. So your next steps are: + +- check all TODOs left in the stub code where generator was not smart enough and could not guarantee correct implementation +- implement your API security mechanism (either special attribute or separate middleware) - generator does not do anything about it yet +- implement your handlers - the most tricky part :) + +## Enjoy! +Hopefully this stub will reduce the amount of boilerplate code you have to write manually. If you have any suggestions or questions about `php-mezzio-ph` generator, feel free to create issue either in [Path Handler repository](https://github.com/Articus/PathHandler/issues) or in [OpenAPI Generator repository](https://openapi-generator.tech/issues). diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/api.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/api.mustache new file mode 100644 index 00000000000..fdba51f5e00 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/api.mustache @@ -0,0 +1,73 @@ + {{internal.ze-ph.queryDataType}}::class, + "objectAttr" => "queryData", + "source" => PHAttribute\Transfer::SOURCE_GET + ])] +{{/internal.ze-ph.hasQueryData}} +{{/vendorExtensions}} +{{#bodyParam}} +{{#consumes}} + // TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Consumer("{{{mediaType}}}", PHConsumer\Json::class)] +{{/consumes}} +{{^isPrimitiveType}} + #[PHA\Attribute(PHAttribute\Transfer::class, ["type" => {{dataType}}::class, "objectAttr" => "bodyData"])] +{{/isPrimitiveType}} +{{/bodyParam}} +{{#produces}} + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("{{{mediaType}}}", PHProducer\Transfer::class)] +{{/produces}} + public function {{operationId}}(ServerRequestInterface $request){{#returnType}}: {{returnType}}{{/returnType}} + { + //TODO implement method +{{#vendorExtensions}} +{{#internal.ze-ph.hasQueryData}} + /** @var {{internal.ze-ph.queryDataType}} $queryData */ + $queryData = $request->getAttribute("queryData"); +{{/internal.ze-ph.hasQueryData}} +{{/vendorExtensions}} +{{#bodyParam}} +{{^isPrimitiveType}} + /** @var {{dataType}} $bodyData */ + $bodyData = $request->getAttribute("bodyData"); +{{/isPrimitiveType}} +{{/bodyParam}} + throw new PHException\HttpCode(501, "Not implemented"); + } +{{/operation}} +} +{{/operations}} diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/application/config/app.yml b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/app.yml.mustache similarity index 100% rename from samples/openapi3/server/petstore/php-mezzio-ph/application/config/app.yml rename to modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/app.yml.mustache diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/composer.json.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/composer.json.mustache new file mode 100644 index 00000000000..787d5fb97f2 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/composer.json.mustache @@ -0,0 +1,26 @@ +{ + "name": "{{#lambda.lowercase}}{{gitUserId}}/{{gitRepoId}}{{/lambda.lowercase}}", + "description": "{{description}}", + "license": "unlicense", + "version": "{{artifactVersion}}", + "type": "project", + "require": { + "php": "^8.0", + "ext-yaml": "^2.2", + "mezzio/mezzio": "^3.3", + "laminas/laminas-diactoros": "^2.5", + "articus/path-handler": "^0.7", + "articus/data-transfer": "^0.5", + "articus/openapi-generator-common": "^0.2", + "psr/simple-cache": "^1.0", + "laminas/laminas-config": "^3.4", + "laminas/laminas-stdlib": "^3.3", + "laminas/laminas-validator": "^2.14", + "nikic/fast-route": "^1.3" + }, + "autoload": { + "psr-4": { + "": "src/" + } + } +} \ No newline at end of file diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/application/config.yml b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/config.yml similarity index 68% rename from samples/openapi3/server/petstore/php-mezzio-ph/application/config.yml rename to modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/config.yml index 1f106812353..58056552c5b 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/application/config.yml +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/config.yml @@ -9,12 +9,13 @@ # router: # cache: # directory: ./data/cache/PathHandler -# #Enable handler metadata cache -# metadata: -# cache: -# directory: ./data/cache/PathHandler + +#Enable handler metadata cache +#Articus\PathHandler\MetadataProvider\PhpAttribute: +# cache: +# directory: ./data/cache/PathHandler #Enable data transfer metadata cache for DTOs -#Articus\DataTransfer\MetadataProvider\Annotation: +#Articus\DataTransfer\MetadataProvider\PhpAttribute: # cache: # directory: ./data/cache/DataTransfer diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/application/container.php b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/container.php similarity index 91% rename from samples/openapi3/server/petstore/php-mezzio-ph/application/container.php rename to modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/container.php index b9638c5584b..9c54fafcfec 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/application/container.php +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/container.php @@ -6,9 +6,6 @@ use Laminas\Config\Factory as ConfigFactory; //Use Composer autoload that includes code both from ../src and ../vendor require __DIR__ . '/../vendor/autoload.php'; -//Register Doctrine annotation autoload -\Doctrine\Common\Annotations\AnnotationRegistry::registerLoader('class_exists'); - //Path to file for caching full configuration const CONFIG_CACHE_PATH = __DIR__ . '/../data/cache/config.php'; diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/data_transfer.yml.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/data_transfer.yml.mustache new file mode 100644 index 00000000000..7bdd139bb9f --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/data_transfer.yml.mustache @@ -0,0 +1,34 @@ +dependencies: + factories: + Articus\DataTransfer\Service: Articus\DataTransfer\Factory + Articus\DataTransfer\MetadataProvider\PhpAttribute: Articus\DataTransfer\MetadataProvider\Factory\PhpAttribute + Articus\DataTransfer\Strategy\PluginManager: Articus\DataTransfer\Strategy\Factory\PluginManager + Articus\DataTransfer\Validator\PluginManager: Articus\DataTransfer\Validator\Factory\PluginManager + Laminas\Validator\ValidatorPluginManager: Laminas\Validator\ValidatorPluginManagerFactory + aliases: + Articus\DataTransfer\ClassMetadataProviderInterface: Articus\DataTransfer\MetadataProvider\PhpAttribute + Articus\DataTransfer\FieldMetadataProviderInterface: Articus\DataTransfer\MetadataProvider\PhpAttribute + +Articus\DataTransfer\Strategy\PluginManager: + invokables: + QueryStringScalar: OpenAPIGenerator\Common\Strategy\QueryStringScalar + QueryStringScalarArray: OpenAPIGenerator\Common\Strategy\QueryStringScalarArray + factories: + Date: OpenAPIGenerator\Common\Strategy\Factory\MutableDate + DateTime: OpenAPIGenerator\Common\Strategy\Factory\MutableDateTime + ObjectList: OpenAPIGenerator\Common\Strategy\Factory\NoArgObjectList + ObjectMap: OpenAPIGenerator\Common\Strategy\Factory\NoArgObjectMap + ScalarList: OpenAPIGenerator\Common\Strategy\Factory\ScalarList + ScalarMap: OpenAPIGenerator\Common\Strategy\Factory\ScalarMap + +Articus\DataTransfer\Validator\PluginManager: + invokables: + Scalar: OpenAPIGenerator\Common\Validator\Scalar + QueryStringScalar: OpenAPIGenerator\Common\Validator\QueryStringScalar + QueryStringScalarArray: OpenAPIGenerator\Common\Validator\QueryStringScalarArray + abstract_factories: + - Articus\DataTransfer\Validator\Factory\Laminas + +validators: + invokables: + Count: Laminas\Validator\IsCountable diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/.gitignore b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/gitignore similarity index 100% rename from samples/openapi3/server/petstore/php-mezzio-ph/.gitignore rename to modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/gitignore diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/public/index.php b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/index.php similarity index 100% rename from samples/openapi3/server/petstore/php-mezzio-ph/public/index.php rename to modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/index.php diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/list_item_type.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/list_item_type.mustache new file mode 100644 index 00000000000..25467661433 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/list_item_type.mustache @@ -0,0 +1,8 @@ +{{#items +}}{{^isContainer +}}{{#isPrimitiveType}}"{{dataType}}"{{/isPrimitiveType +}}{{^isPrimitiveType}}{{dataType}}::class{{/isPrimitiveType +}}{{/isContainer +}}{{#isContainer +}}{{dataType}}::class{{/isContainer +}}{{/items}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/map_item_type.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/map_item_type.mustache new file mode 100644 index 00000000000..a58e19beca5 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/map_item_type.mustache @@ -0,0 +1,8 @@ +{{#additionalProperties +}}{{^isContainer +}}{{#isPrimitiveType}}"{{dataType}}"{{/isPrimitiveType +}}{{^isPrimitiveType}}{{dataType}}::class{{/isPrimitiveType +}}{{/isContainer +}}{{#isContainer +}}{{dataType}}::class{{/isContainer +}}{{/additionalProperties}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model.mustache new file mode 100644 index 00000000000..4d73c185945 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model.mustache @@ -0,0 +1,13 @@ +model_container}}{{/internal.ze-ph.fromContainer +}}{{^internal.ze-ph.fromContainer}}{{>model_object}}{{/internal.ze-ph.fromContainer +}}{{/vendorExtensions +}}{{^vendorExtensions}}{{>model_object}}{{/vendorExtensions +}}{{/model}}{{/models}} diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_container.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_container.mustache new file mode 100644 index 00000000000..543194c798b --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_container.mustache @@ -0,0 +1,57 @@ +{{#vars +}}{{#isArray +}}#[DTA\Strategy("{{#isPrimitiveType}}ScalarList{{/isPrimitiveType}}{{^isPrimitiveType}}ObjectList{{/isPrimitiveType}}", ["type" => {{>list_item_type}}])] +{{#minItems}}{{^maxItems +}}#[DTA\Validator("Count", ["min" => {{minItems}}], blocker: true)] +{{/maxItems}}{{/minItems +}}{{^minItems}}{{#maxItems +}}#[DTA\Validator("Count", ["max" => {{maxItems}}], blocker: true)] +{{/maxItems}}{{/minItems +}}{{#minItems}}{{#maxItems +}}#[DTA\Validator("Count", ["min" => {{minItems}}, "max" => {{maxItems}}], blocker: true)] +{{/maxItems}}{{/minItems +}}#[DTA\Validator("Collection", ["validators" => [ +{{#isPrimitiveType +}} ["name" => "Scalar", "options" => ["type" => {{>list_item_type}}]] +{{/isPrimitiveType +}}{{#isDate +}} ["name" => "Date"] +{{/isDate +}}{{#isDateTime +}} ["name" => "Date", "options" => ["format" => \DateTime::RFC3339]] +{{/isDateTime +}}{{^isPrimitiveType}}{{^isDate}}{{^isDateTime +}} ["name" => "TypeCompliant", "options" => ["type" => {{>list_item_type}}]] +{{/isDateTime}}{{/isDate}}{{/isPrimitiveType +}}]])] +{{/isArray +}}{{#isMap +}}#[DTA\Strategy("{{#isPrimitiveType}}ScalarMap{{/isPrimitiveType}}{{^isPrimitiveType}}ObjectMap{{/isPrimitiveType}}", ["type" => {{>map_item_type}}])] +{{#minProperties}}{{^maxProperties +}}#[DTA\Validator("Count", ["min" => {{minProperties}}], blocker: true)] +{{/maxProperties}}{{/minProperties +}}{{^minProperties}}{{#maxProperties +}}#[DTA\Validator("Count", ["max" => {{maxProperties}}], blocker: true)] +{{/maxProperties}}{{/minProperties +}}{{#minProperties}}{{#maxProperties +}}#[DTA\Validator("Count", ["min" => {{minProperties}}, "max" => {{maxProperties}}], blocker: true)] +{{/maxProperties}}{{/minProperties +}}#[DTA\Validator("Collection", ["validators" => [ +{{#isPrimitiveType +}} ["name" => "Scalar", "options" => ["type" => {{>map_item_type}}]] +{{/isPrimitiveType +}}{{#isDate +}} ["name" => "Date"] +{{/isDate +}}{{#isDateTime +}} ["name" => "Date", "options" => ["format" => \DateTime::RFC3339]] +{{/isDateTime +}}{{^isPrimitiveType}}{{^isDate}}{{^isDateTime +}} ["name" => "TypeCompliant", "options" => ["type" => {{>map_item_type}}]] +{{/isDateTime}}{{/isDate}}{{/isPrimitiveType +}}]])] +{{/isMap +}}{{/vars +}}class {{classname}} extends \ArrayObject +{ +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_normal_var.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_normal_var.mustache new file mode 100644 index 00000000000..6e215f7fc63 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_normal_var.mustache @@ -0,0 +1,45 @@ +{{#isContainer +}} #[DTA\Strategy("Object", ["type" => {{internal.ze-ph.containerDataType}}::class])] + #[DTA\Validator("TypeCompliant", ["type" => {{internal.ze-ph.containerDataType}}::class])] +{{/isContainer +}}{{^isContainer +}}{{#isPrimitiveType +}} #[DTA\Validator("Scalar", ["type" => "{{dataType}}"])] +{{/isPrimitiveType +}}{{#isDate +}} #[DTA\Strategy("Date")] + #[DTA\Validator("Date")] +{{/isDate +}}{{#isDateTime +}} #[DTA\Strategy("DateTime")] + #[DTA\Validator("Date", ["format" => \DateTime::RFC3339])] +{{/isDateTime +}}{{^isPrimitiveType +}}{{^isDate +}}{{^isDateTime +}} #[DTA\Strategy("Object", ["type" => {{dataType}}::class])] + #[DTA\Validator("TypeCompliant", ["type" => {{dataType}}::class])] +{{/isDateTime +}}{{/isDate +}}{{/isPrimitiveType +}}{{/isContainer +}}{{#hasValidation +}}{{#minLength}}{{#maxLength +}} #[DTA\Validator("StringLength", ["min" => {{minLength}}, "max" => {{maxLength}}])] +{{/maxLength}}{{/minLength +}}{{^minLength}}{{#maxLength +}} #[DTA\Validator("StringLength", ["max" => {{maxLength}}])] +{{/maxLength}}{{/minLength +}}{{#minLength}}{{^maxLength +}} #[DTA\Validator("StringLength", ["min" => {{minLength}}])] +{{/maxLength}}{{/minLength +}}{{#minimum +}} #[DTA\Validator("GreaterThan", ["min" => {{minimum}}{{^exclusiveMinimum}}, "inclusive" => true{{/exclusiveMinimum}}])] +{{/minimum +}}{{#maximum +}} #[DTA\Validator("LessThan", ["max" => {{maximum}}{{^exclusiveMaximum}}, "inclusive" => true{{/exclusiveMaximum}}])] +{{/maximum +}}{{#pattern +}} #[DTA\Validator("Regex", ["pattern" => "{{{pattern}}}"])] +{{/pattern +}}{{/hasValidation}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_object.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_object.mustache new file mode 100644 index 00000000000..253d551e3c7 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_object.mustache @@ -0,0 +1,23 @@ +{{#description +}}/** + * {{description}} + */ +{{/description +}}class {{classname}} +{ +{{#vars +}}{{#description +}} /** + * {{description}} + */ +{{/description +}} #[DTA\Data(field: "{{baseName}}"{{^required}}, nullable: true{{/required}})] +{{#vendorExtensions +}}{{#internal.ze-ph.fromQuery}}{{>model_query_var}}{{/internal.ze-ph.fromQuery +}}{{^internal.ze-ph.fromQuery}}{{>model_normal_var}}{{/internal.ze-ph.fromQuery +}}{{/vendorExtensions +}}{{^vendorExtensions}}{{>model_normal_var}}{{/vendorExtensions +}} public {{dataType}}|null ${{name}} = null; + +{{/vars +}}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_query_var.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_query_var.mustache new file mode 100644 index 00000000000..f2e6525b9b9 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/model_query_var.mustache @@ -0,0 +1,51 @@ +{{#isArray +}}{{#isPrimitiveType +}} #[DTA\Strategy("QueryStringScalarArray", ["type" => {{>list_item_type}}, "format" => "{{internal.ze-ph.collectionFormat}}"])] + #[DTA\Validator("QueryStringScalarArray", ["type" => {{>list_item_type}}, "format" => "{{internal.ze-ph.collectionFormat}}"{{#minItems}}, "min_items" => {{minItems}}{{/minItems}}{{#maxItems}}, "max_items" => {{maxItems}}{{/maxItems}}])] +{{/isPrimitiveType +}}{{^isPrimitiveType +}} // TODO add validator(s) and strategy for list of {{>list_item_type}} and collection format {{internal.ze-ph.collectionFormat}} inside query string +{{/isPrimitiveType +}}{{/isArray +}}{{#isMap +}} // TODO add validator(s) and strategy for map of {{>map_item_type}} and collection format {{internal.ze-ph.collectionFormat}} inside query string +{{/isMap +}}{{^isContainer +}}{{#isPrimitiveType +}} #[DTA\Strategy("QueryStringScalar", ["type" => "{{dataType}}"])] + #[DTA\Validator("QueryStringScalar", ["type" => "{{dataType}}"])] +{{/isPrimitiveType +}}{{#isDate +}} #[DTA\Strategy("Date")] + #[DTA\Validator("Date")] +{{/isDate +}}{{#isDateTime +}} #[DTA\Strategy("DateTime")] + #[DTA\Validator("Date", ["format" => \DateTime::RFC3339])] +{{/isDateTime +}}{{^isPrimitiveType +}}{{^isDate}}{{^isDateTime +}} // TODO add validator(s) and strategy for {{dataType}} inside query string +{{/isDateTime}}{{/isDate +}}{{/isPrimitiveType +}}{{/isContainer +}}{{#hasValidation +}}{{#minLength}}{{#maxLength +}} #[DTA\Validator("StringLength", ["min" => {{minLength}}, "max" => {{maxLength}}])] +{{/maxLength}}{{/minLength +}}{{^minLength}}{{#maxLength +}} #[DTA\Validator("StringLength", ["max" => {{maxLength}}])] +{{/maxLength}}{{/minLength +}}{{#minLength}}{{^maxLength +}} #[DTA\Validator("StringLength", ["min" => {{minLength}}])] +{{/maxLength}}{{/minLength +}}{{#minimum +}} #[DTA\Validator("GreaterThan", ["min" => {{minimum}}{{^exclusiveMinimum}}, "inclusive" => true{{/exclusiveMinimum}}])] +{{/minimum +}}{{#maximum +}} #[DTA\Validator("LessThan", ["max" => {{maximum}}{{^exclusiveMaximum}}, "inclusive" => true{{/exclusiveMaximum}}])] +{{/maximum +}}{{#pattern +}} #[DTA\Validator("Regex", ["pattern" => "{{{pattern}}}"])] +{{/pattern +}}{{/hasValidation}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/path_handler.yml.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/path_handler.yml.mustache new file mode 100644 index 00000000000..a9739a17216 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph-modern/path_handler.yml.mustache @@ -0,0 +1,44 @@ +dependencies: + factories: + Mezzio\Router\RouterInterface: Articus\PathHandler\RouteInjectionFactory + Articus\PathHandler\MetadataProviderInterface: Articus\PathHandler\MetadataProvider\Factory\PhpAttribute + Articus\PathHandler\Handler\PluginManager: Articus\PathHandler\Handler\Factory\PluginManager + Articus\PathHandler\Consumer\PluginManager: Articus\PathHandler\Consumer\Factory\PluginManager + Articus\PathHandler\Attribute\PluginManager: Articus\PathHandler\Attribute\Factory\PluginManager + Articus\PathHandler\Producer\PluginManager: Articus\PathHandler\Producer\Factory\PluginManager + +Articus\PathHandler\RouteInjectionFactory: + paths: + '{{basePathWithoutHost}}': +{{#apiInfo}} +{{#apis}} +{{#operations}} + - {{package}}\{{classname}} +{{/operations}} +{{/apis}} +{{/apiInfo}} + +Articus\PathHandler\Handler\PluginManager: + abstract_factories: + - Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory + +#Articus\PathHandler\Consumer\PluginManager: +# factories: +# invokables: + +#Articus\PathHandler\Attribute\PluginManager: +# factories: +# invokables: + +#Articus\PathHandler\Producer\PluginManager: +# factories: +# invokables: + +Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory: +{{#apiInfo}} +{{#apis}} +{{#operations}} + {{package}}\{{classname}}: [] +{{/operations}} +{{/apis}} +{{/apiInfo}} diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/Factory.php.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/Factory.php.mustache index 68787c5fd6c..bee7ad98a78 100644 --- a/modules/openapi-generator/src/main/resources/php-mezzio-ph/Factory.php.mustache +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/Factory.php.mustache @@ -23,20 +23,13 @@ class Factory implements FactoryInterface { public function __invoke(ContainerInterface $container, $requestedName, array $options = null): Application { - $errorMiddleware = $container->get(Middleware\InternalServerError::class); - if (!($errorMiddleware instanceof Middleware\InternalServerError)) { - throw new \LogicException(\sprintf( - 'Invalid error middleware: expecting %s, not %s.', - Middleware\InternalServerError::class, - \is_object($errorMiddleware) ? \get_class($errorMiddleware) : \gettype($errorMiddleware) - )); - } + $errorMiddleware = self::getErrorMiddleware($container); $pipeline = new MiddlewarePipe(); $runner = new RequestHandlerRunner( $pipeline, $container->get(EmitterInterface::class), $container->get(ServerRequestInterface::class), - function(\Throwable $error) use ($errorMiddleware) : ResponseInterface + static function(\Throwable $error) use ($errorMiddleware) : ResponseInterface { return $errorMiddleware->handleError($error); } @@ -55,4 +48,9 @@ class Factory implements FactoryInterface return $application; } + + protected static function getErrorMiddleware(ContainerInterface $container): Middleware\InternalServerError + { + return $container->get(Middleware\InternalServerError::class); + } } diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/README.md.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/README.md.mustache index 584fd156879..a8047005901 100644 --- a/modules/openapi-generator/src/main/resources/php-mezzio-ph/README.md.mustache +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/README.md.mustache @@ -5,9 +5,9 @@ Generated by the [OpenAPI Generator](https://openapi-generator.tech) project. ## Overview This server stub aims to provide light, yet comprehensive structure for your API project using: -- PHP: >=7.2 +- PHP: >=7.3 - [Laminas Mezzio](https://docs.mezzio.dev/mezzio/): >=3.2 -- [Path Handler](https://github.com/Articus/PathHandler): >=0.6 +- [Path Handler](https://github.com/Articus/PathHandler): >=0.7 ## How to use All you have to do to start development is: diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/api.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/api.mustache index d44e206de6f..ec0d1df137b 100644 --- a/modules/openapi-generator/src/main/resources/php-mezzio-ph/api.mustache +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/api.mustache @@ -43,13 +43,7 @@ class {{classname}} * @PHA\Consumer(name=PHConsumer\Json::class, mediaRange="{{{mediaType}}}") {{/consumes}} {{^isPrimitiveType}} -{{#isContainer}} - * TODO check if attribute is valid and can handle your container type - * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":"{{{dataType}}}","objectAttr":"bodyData"}) -{{/isContainer}} -{{^isContainer}} - * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":{{{dataType}}}::class,"objectAttr":"bodyData"}) -{{/isContainer}} + * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":{{dataType}}::class,"objectAttr":"bodyData"}) {{/isPrimitiveType}} {{/bodyParam}} {{#produces}} @@ -61,13 +55,10 @@ class {{classname}} * @throws PHException\HttpCode 501 if the method is not implemented {{#returnType}} * -{{#returnContainer}} - * TODO check if generated return container type is valid -{{/returnContainer}} - * @return {{{returnType}}} + * @return {{returnType}} {{/returnType}} */ - public function {{operationId}}(ServerRequestInterface $request){{#returnType}}: {{#returnContainer}}array{{/returnContainer}}{{^returnContainer}}{{returnType}}{{/returnContainer}}{{/returnType}} + public function {{operationId}}(ServerRequestInterface $request){{#returnType}}: {{returnType}}{{/returnType}} { //TODO implement method {{#vendorExtensions}} @@ -78,7 +69,7 @@ class {{classname}} {{/vendorExtensions}} {{#bodyParam}} {{^isPrimitiveType}} - /** @var {{{dataType}}} $bodyData */ + /** @var {{dataType}} $bodyData */ $bodyData = $request->getAttribute("bodyData"); {{/isPrimitiveType}} {{/bodyParam}} diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/composer.json.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/composer.json.mustache index a768982234a..de46c4b20ea 100644 --- a/modules/openapi-generator/src/main/resources/php-mezzio-ph/composer.json.mustache +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/composer.json.mustache @@ -5,13 +5,13 @@ "version": "{{artifactVersion}}", "type": "project", "require": { - "php": "^7.2", + "php": "^7.3 || ^8.0", "ext-yaml": "^2.0", "mezzio/mezzio": "^3.2", "laminas/laminas-diactoros": "^2.1", - "articus/path-handler": "^0.6", - "articus/data-transfer": "^0.4", - "articus/openapi-generator-common": "^0.1", + "articus/path-handler": "^0.7", + "articus/data-transfer": "^0.5", + "articus/openapi-generator-common": "^0.2", "doctrine/annotations": "^1.10", "psr/simple-cache": "^1.0", "laminas/laminas-config": "^3.4", diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/config.yml b/modules/openapi-generator/src/main/resources/php-mezzio-ph/config.yml index 1f106812353..71371becf21 100644 --- a/modules/openapi-generator/src/main/resources/php-mezzio-ph/config.yml +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/config.yml @@ -9,10 +9,11 @@ # router: # cache: # directory: ./data/cache/PathHandler -# #Enable handler metadata cache -# metadata: -# cache: -# directory: ./data/cache/PathHandler + +#Enable handler metadata cache +#Articus\PathHandler\MetadataProvider\Annotation: +# cache: +# directory: ./data/cache/PathHandler #Enable data transfer metadata cache for DTOs #Articus\DataTransfer\MetadataProvider\Annotation: diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/data_transfer.yml.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/data_transfer.yml.mustache index c5174147c23..548c898fb9c 100644 --- a/modules/openapi-generator/src/main/resources/php-mezzio-ph/data_transfer.yml.mustache +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/data_transfer.yml.mustache @@ -16,6 +16,10 @@ Articus\DataTransfer\Strategy\PluginManager: factories: Date: OpenAPIGenerator\Common\Strategy\Factory\MutableDate DateTime: OpenAPIGenerator\Common\Strategy\Factory\MutableDateTime + ObjectList: OpenAPIGenerator\Common\Strategy\Factory\NoArgObjectList + ObjectMap: OpenAPIGenerator\Common\Strategy\Factory\NoArgObjectMap + ScalarList: OpenAPIGenerator\Common\Strategy\Factory\ScalarList + ScalarMap: OpenAPIGenerator\Common\Strategy\Factory\ScalarMap Articus\DataTransfer\Validator\PluginManager: invokables: @@ -24,3 +28,7 @@ Articus\DataTransfer\Validator\PluginManager: QueryStringScalarArray: OpenAPIGenerator\Common\Validator\QueryStringScalarArray abstract_factories: - Articus\DataTransfer\Validator\Factory\Laminas + +validators: + invokables: + Count: Laminas\Validator\IsCountable diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/list_item_type.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/list_item_type.mustache new file mode 100644 index 00000000000..25467661433 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/list_item_type.mustache @@ -0,0 +1,8 @@ +{{#items +}}{{^isContainer +}}{{#isPrimitiveType}}"{{dataType}}"{{/isPrimitiveType +}}{{^isPrimitiveType}}{{dataType}}::class{{/isPrimitiveType +}}{{/isContainer +}}{{#isContainer +}}{{dataType}}::class{{/isContainer +}}{{/items}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/map_item_type.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/map_item_type.mustache new file mode 100644 index 00000000000..a58e19beca5 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/map_item_type.mustache @@ -0,0 +1,8 @@ +{{#additionalProperties +}}{{^isContainer +}}{{#isPrimitiveType}}"{{dataType}}"{{/isPrimitiveType +}}{{^isPrimitiveType}}{{dataType}}::class{{/isPrimitiveType +}}{{/isContainer +}}{{#isContainer +}}{{dataType}}::class{{/isContainer +}}{{/additionalProperties}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/model.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/model.mustache index 57f70bfc767..fd2a8cc6208 100644 --- a/modules/openapi-generator/src/main/resources/php-mezzio-ph/model.mustache +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/model.mustache @@ -5,23 +5,9 @@ namespace {{package}}; use Articus\DataTransfer\Annotation as DTA; -/** -{{#description}} - * {{description}} -{{/description}} - */ -class {{classname}} -{ -{{#vars}} - /** -{{#description}} - * {{description}} -{{/description}} - * @DTA\Data(field="{{baseName}}"{{^required}}, nullable=true{{/required}}){{#vendorExtensions}}{{#internal.ze-ph.fromQuery}} -{{>model_query_var}}{{/internal.ze-ph.fromQuery}}{{/vendorExtensions}}{{#vendorExtensions}}{{^internal.ze-ph.fromQuery}} -{{>model_normal_var}}{{/internal.ze-ph.fromQuery}}{{/vendorExtensions}}{{^vendorExtensions}} -{{>model_normal_var}}{{/vendorExtensions}} * @var {{dataType}}|null - */ - public ${{name}}; -{{/vars}} -}{{/model}}{{/models}} +{{#vendorExtensions +}}{{#internal.ze-ph.fromContainer}}{{>model_container}}{{/internal.ze-ph.fromContainer +}}{{^internal.ze-ph.fromContainer}}{{>model_object}}{{/internal.ze-ph.fromContainer +}}{{/vendorExtensions +}}{{^vendorExtensions}}{{>model_object}}{{/vendorExtensions +}}{{/model}}{{/models}} diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_container.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_container.mustache new file mode 100644 index 00000000000..bbecf5ed190 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_container.mustache @@ -0,0 +1,59 @@ +/** +{{#vars +}}{{#isArray +}} * @DTA\Strategy(name="{{#isPrimitiveType}}ScalarList{{/isPrimitiveType}}{{^isPrimitiveType}}ObjectList{{/isPrimitiveType}}", options={"type":{{>list_item_type}}}) +{{#minItems}}{{^maxItems +}} * @DTA\Validator(name="Count", options={"min":{{minItems}}}, blocker=true) +{{/maxItems}}{{/minItems +}}{{^minItems}}{{#maxItems +}} * @DTA\Validator(name="Count", options={"max":{{maxItems}}}, blocker=true) +{{/maxItems}}{{/minItems +}}{{#minItems}}{{#maxItems +}} * @DTA\Validator(name="Count", options={"min":{{minItems}},"max":{{maxItems}}}, blocker=true) +{{/maxItems}}{{/minItems +}} * @DTA\Validator(name="Collection", options={"validators":{ +{{#isPrimitiveType +}} * {"name":"Scalar", "options":{"type":{{>list_item_type}}}} +{{/isPrimitiveType +}}{{#isDate +}} * {"name":"Date"} +{{/isDate +}}{{#isDateTime +}} * {"name":"Date", "options":{"format": \DateTime::RFC3339}} +{{/isDateTime +}}{{^isPrimitiveType}}{{^isDate}}{{^isDateTime +}} * {"name":"TypeCompliant", "options":{"type":{{>list_item_type}}}} +{{/isDateTime}}{{/isDate}}{{/isPrimitiveType +}} * }}) +{{/isArray +}}{{#isMap +}} * @DTA\Strategy(name="{{#isPrimitiveType}}ScalarMap{{/isPrimitiveType}}{{^isPrimitiveType}}ObjectMap{{/isPrimitiveType}}", options={"type":{{>map_item_type}}}) +{{#minProperties}}{{^maxProperties +}} * @DTA\Validator(name="Count", options={"min":{{minProperties}}}, blocker=true) +{{/maxProperties}}{{/minProperties +}}{{^minProperties}}{{#maxProperties +}} * @DTA\Validator(name="Count", options={"max":{{maxProperties}}}, blocker=true) +{{/maxProperties}}{{/minProperties +}}{{#minProperties}}{{#maxProperties +}} * @DTA\Validator(name="Count", options={"min":{{minProperties}},"max":{{maxProperties}}}, blocker=true) +{{/maxProperties}}{{/minProperties +}} * @DTA\Validator(name="Collection", options={"validators":{ +{{#isPrimitiveType +}} * {"name":"Scalar", "options":{"type":{{>map_item_type}}}} +{{/isPrimitiveType +}}{{#isDate +}} * {"name":"Date"} +{{/isDate +}}{{#isDateTime +}} * {"name":"Date", "options":{"format": \DateTime::RFC3339}} +{{/isDateTime +}}{{^isPrimitiveType}}{{^isDate}}{{^isDateTime +}} * {"name":"TypeCompliant", "options":{"type":{{>map_item_type}}}} +{{/isDateTime}}{{/isDate}}{{/isPrimitiveType +}} * }}) +{{/isMap +}}{{/vars +}} */ +class {{classname}} extends \ArrayObject +{ +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_normal_var.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_normal_var.mustache index 33c6e46337a..fe568901f9b 100644 --- a/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_normal_var.mustache +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_normal_var.mustache @@ -1,64 +1,45 @@ -{{^isPrimitiveType}} -{{^isContainer}} -{{^isDate}} -{{^isDateTime}} - * @DTA\Strategy(name="Object", options={"type":{{dataType}}::class}) - * @DTA\Validator(name="TypeCompliant", options={"type":{{dataType}}::class}) -{{/isDateTime}} -{{/isDate}} -{{#isDate}} - * @DTA\Strategy(name="Date") +{{#isContainer +}} * @DTA\Strategy(name="Object", options={"type":{{internal.ze-ph.containerDataType}}::class}) + * @DTA\Validator(name="TypeCompliant", options={"type":{{internal.ze-ph.containerDataType}}::class}) +{{/isContainer +}}{{^isContainer +}}{{#isPrimitiveType +}} * @DTA\Validator(name="Scalar", options={"type":"{{dataType}}"}) +{{/isPrimitiveType +}}{{#isDate +}} * @DTA\Strategy(name="Date") * @DTA\Validator(name="Date") -{{/isDate}} -{{#isDateTime}} - * @DTA\Strategy(name="DateTime") +{{/isDate +}}{{#isDateTime +}} * @DTA\Strategy(name="DateTime") * @DTA\Validator(name="Date", options={"format": \DateTime::RFC3339}) -{{/isDateTime}} -{{/isContainer}} -{{#isContainer}} - * TODO check validator and strategy are correct and can handle container item type - * @DTA\Strategy(name="ObjectArray", options={"type":{{#items}}{{dataType}}{{/items}}::class}) - * @DTA\Validator(name="Collection", options={"validators":{ - * {"name":"TypeCompliant", "options":{"type":{{#items}}{{dataType}}{{/items}}::class}} - * }}) -{{/isContainer}} -{{/isPrimitiveType}} -{{#isPrimitiveType}} -{{#isContainer}} -{{#items}} - * TODO check validator and strategy are correct and can handle container item type - * @DTA\Validator(name="Collection", options={"validators":{ - * {"name":"Scalar", "options":{"type":"{{dataType}}"}} - * }}) -{{/items}} -{{/isContainer}} -{{^isContainer}} - * @DTA\Validator(name="Scalar", options={"type":"{{dataType}}"}) -{{/isContainer}} -{{/isPrimitiveType}} -{{#hasValidation}} -{{#minLength}} -{{#maxLength}} - * @DTA\Validator(name="StringLength", options={"min":{{minLength}}, "max":{{maxLength}}}) -{{/maxLength}} -{{/minLength}} -{{^minLength}} -{{#maxLength}} - * @DTA\Validator(name="StringLength", options={"max":{{maxLength}}}) -{{/maxLength}} -{{/minLength}} -{{#minLength}} -{{^maxLength}} - * @DTA\Validator(name="StringLength", options={"min":{{minLength}}}) -{{/maxLength}} -{{/minLength}} -{{#minimum}} - * @DTA\Validator(name="GreaterThan", options={"min":{{minimum}}{{^exclusiveMinimum}}, "inclusive":true{{/exclusiveMinimum}}}) -{{/minimum}} -{{#maximum}} - * @DTA\Validator(name="LessThan", options={"max":{{maximum}}{{^exclusiveMaximum}}, "inclusive":true{{/exclusiveMaximum}}}) -{{/maximum}} -{{#pattern}} - * @DTA\Validator(name="Regex", options={"pattern":"{{{pattern}}}"}) -{{/pattern}} -{{/hasValidation}} \ No newline at end of file +{{/isDateTime +}}{{^isPrimitiveType +}}{{^isDate +}}{{^isDateTime +}} * @DTA\Strategy(name="Object", options={"type":{{dataType}}::class}) + * @DTA\Validator(name="TypeCompliant", options={"type":{{dataType}}::class}) +{{/isDateTime +}}{{/isDate +}}{{/isPrimitiveType +}}{{/isContainer +}}{{#hasValidation +}}{{#minLength}}{{#maxLength +}} * @DTA\Validator(name="StringLength", options={"min":{{minLength}}, "max":{{maxLength}}}) +{{/maxLength}}{{/minLength +}}{{^minLength}}{{#maxLength +}} * @DTA\Validator(name="StringLength", options={"max":{{maxLength}}}) +{{/maxLength}}{{/minLength +}}{{#minLength}}{{^maxLength +}} * @DTA\Validator(name="StringLength", options={"min":{{minLength}}}) +{{/maxLength}}{{/minLength +}}{{#minimum +}} * @DTA\Validator(name="GreaterThan", options={"min":{{minimum}}{{^exclusiveMinimum}}, "inclusive":true{{/exclusiveMinimum}}}) +{{/minimum +}}{{#maximum +}} * @DTA\Validator(name="LessThan", options={"max":{{maximum}}{{^exclusiveMaximum}}, "inclusive":true{{/exclusiveMaximum}}}) +{{/maximum +}}{{#pattern +}} * @DTA\Validator(name="Regex", options={"pattern":"{{{pattern}}}"}) +{{/pattern +}}{{/hasValidation}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_object.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_object.mustache new file mode 100644 index 00000000000..2e7d61fde45 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_object.mustache @@ -0,0 +1,24 @@ +/** +{{#description +}} * {{description}} +{{/description +}} */ +class {{classname}} +{ +{{#vars +}} /** +{{#description +}} * {{description}} +{{/description +}} * @DTA\Data(field="{{baseName}}"{{^required}}, nullable=true{{/required}}) +{{#vendorExtensions +}}{{#internal.ze-ph.fromQuery}}{{>model_query_var}}{{/internal.ze-ph.fromQuery +}}{{^internal.ze-ph.fromQuery}}{{>model_normal_var}}{{/internal.ze-ph.fromQuery +}}{{/vendorExtensions +}}{{^vendorExtensions}}{{>model_normal_var}}{{/vendorExtensions +}} * @var {{dataType}}|null + */ + public ${{name}}; + +{{/vars +}}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_query_var.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_query_var.mustache index 27f0a72c955..deaf0e37049 100644 --- a/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_query_var.mustache +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/model_query_var.mustache @@ -1,52 +1,51 @@ -{{^isPrimitiveType}} -{{^isContainer}} -{{#isDate}} - * @DTA\Strategy(name="Date") - * @DTA\Validator(name="Date") -{{/isDate}} -{{#isDateTime}} - * @DTA\Strategy(name="DateTime") - * @DTA\Validator(name="Date", options={"format": \DateTime::RFC3339}) -{{/isDateTime}} -{{/isContainer}} -{{#isContainer}} - * TODO add validator(s) and strategy for {{dataType}} and collection format {{internal.ze-ph.collectionFormat}} -{{/isContainer}} -{{/isPrimitiveType}} -{{#isPrimitiveType}} -{{#isContainer}} - * TODO check validator and strategy are correct and can handle container item type - * @DTA\Strategy(name="QueryStringScalarArray", options={"type":"{{#items}}{{dataType}}{{/items}}", "format":"{{internal.ze-ph.collectionFormat}}"}) - * @DTA\Validator(name="QueryStringScalarArray", options={"type":"{{#items}}{{dataType}}{{/items}}", "format":"{{internal.ze-ph.collectionFormat}}"{{#minItems}}, "min_items":{{minItems}}{{/minItems}}{{#maxItems}}, "max_items":{{maxItems}}{{/maxItems}}}) -{{/isContainer}} -{{^isContainer}} - * @DTA\Strategy(name="QueryStringScalar", options={"type":"{{dataType}}"}) +{{#isArray +}}{{#isPrimitiveType +}} * @DTA\Strategy(name="QueryStringScalarArray", options={"type":{{>list_item_type}}, "format":"{{internal.ze-ph.collectionFormat}}"}) + * @DTA\Validator(name="QueryStringScalarArray", options={"type":{{>list_item_type}}, "format":"{{internal.ze-ph.collectionFormat}}"{{#minItems}}, "min_items":{{minItems}}{{/minItems}}{{#maxItems}}, "max_items":{{maxItems}}{{/maxItems}}}) +{{/isPrimitiveType +}}{{^isPrimitiveType +}} * TODO add validator(s) and strategy for list of {{>list_item_type}} and collection format {{internal.ze-ph.collectionFormat}} inside query string +{{/isPrimitiveType +}}{{/isArray +}}{{#isMap +}} * TODO add validator(s) and strategy for map of {{>map_item_type}} and collection format {{internal.ze-ph.collectionFormat}} inside query string +{{/isMap +}}{{^isContainer +}}{{#isPrimitiveType +}} * @DTA\Strategy(name="QueryStringScalar", options={"type":"{{dataType}}"}) * @DTA\Validator(name="QueryStringScalar", options={"type":"{{dataType}}"}) -{{/isContainer}} -{{/isPrimitiveType}} -{{#hasValidation}} -{{#minLength}} -{{#maxLength}} - * @DTA\Validator(name="StringLength", options={"min":{{minLength}}, "max":{{maxLength}}}) -{{/maxLength}} -{{/minLength}} -{{^minLength}} -{{#maxLength}} - * @DTA\Validator(name="StringLength", options={"max":{{maxLength}}}) -{{/maxLength}} -{{/minLength}} -{{#minLength}} -{{^maxLength}} - * @DTA\Validator(name="StringLength", options={"min":{{minLength}}}) -{{/maxLength}} -{{/minLength}} -{{#minimum}} - * @DTA\Validator(name="GreaterThan", options={"min":{{minimum}}{{^exclusiveMinimum}}, "inclusive":true{{/exclusiveMinimum}}}) -{{/minimum}} -{{#maximum}} - * @DTA\Validator(name="LessThan", options={"max":{{maximum}}{{^exclusiveMaximum}}, "inclusive":true{{/exclusiveMaximum}}}) -{{/maximum}} -{{#pattern}} - * @DTA\Validator(name="Regex", options={"pattern":"{{{pattern}}}"}) -{{/pattern}} -{{/hasValidation}} \ No newline at end of file +{{/isPrimitiveType +}}{{#isDate +}} * @DTA\Strategy(name="Date") + * @DTA\Validator(name="Date") +{{/isDate +}}{{#isDateTime +}} * @DTA\Strategy(name="DateTime") + * @DTA\Validator(name="Date", options={"format": \DateTime::RFC3339}) +{{/isDateTime +}}{{^isPrimitiveType +}}{{^isDate}}{{^isDateTime +}} * TODO add validator(s) and strategy for {{dataType}} inside query string +{{/isDateTime}}{{/isDate +}}{{/isPrimitiveType +}}{{/isContainer +}}{{#hasValidation +}}{{#minLength}}{{#maxLength +}} * @DTA\Validator(name="StringLength", options={"min":{{minLength}}, "max":{{maxLength}}}) +{{/maxLength}}{{/minLength +}}{{^minLength}}{{#maxLength +}} * @DTA\Validator(name="StringLength", options={"max":{{maxLength}}}) +{{/maxLength}}{{/minLength +}}{{#minLength}}{{^maxLength +}} * @DTA\Validator(name="StringLength", options={"min":{{minLength}}}) +{{/maxLength}}{{/minLength +}}{{#minimum +}} * @DTA\Validator(name="GreaterThan", options={"min":{{minimum}}{{^exclusiveMinimum}}, "inclusive":true{{/exclusiveMinimum}}}) +{{/minimum +}}{{#maximum +}} * @DTA\Validator(name="LessThan", options={"max":{{maximum}}{{^exclusiveMaximum}}, "inclusive":true{{/exclusiveMaximum}}}) +{{/maximum +}}{{#pattern +}} * @DTA\Validator(name="Regex", options={"pattern":"{{{pattern}}}"}) +{{/pattern +}}{{/hasValidation}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-mezzio-ph/path_handler.yml.mustache b/modules/openapi-generator/src/main/resources/php-mezzio-ph/path_handler.yml.mustache index dd01611f359..1f9167a0fa4 100644 --- a/modules/openapi-generator/src/main/resources/php-mezzio-ph/path_handler.yml.mustache +++ b/modules/openapi-generator/src/main/resources/php-mezzio-ph/path_handler.yml.mustache @@ -1,8 +1,13 @@ dependencies: factories: - Mezzio\Router\RouterInterface: Articus\PathHandler\RouteInjection\Factory + Mezzio\Router\RouterInterface: Articus\PathHandler\RouteInjectionFactory + Articus\PathHandler\MetadataProviderInterface: Articus\PathHandler\MetadataProvider\Factory\Annotation + Articus\PathHandler\Handler\PluginManager: Articus\PathHandler\Handler\Factory\PluginManager + Articus\PathHandler\Consumer\PluginManager: Articus\PathHandler\Consumer\Factory\PluginManager + Articus\PathHandler\Attribute\PluginManager: Articus\PathHandler\Attribute\Factory\PluginManager + Articus\PathHandler\Producer\PluginManager: Articus\PathHandler\Producer\Factory\PluginManager -Articus\PathHandler\RouteInjection\Factory: +Articus\PathHandler\RouteInjectionFactory: paths: '{{basePathWithoutHost}}': {{#apiInfo}} @@ -12,18 +17,22 @@ Articus\PathHandler\RouteInjection\Factory: {{/operations}} {{/apis}} {{/apiInfo}} - handlers: - abstract_factories: - - Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory -# consumers: -# factories: -# invokables: -# attributes: -# factories: -# invokables: -# producers: -# factories: -# invokables: + +Articus\PathHandler\Handler\PluginManager: + abstract_factories: + - Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory + +#Articus\PathHandler\Consumer\PluginManager: +# factories: +# invokables: + +#Articus\PathHandler\Attribute\PluginManager: +# factories: +# invokables: + +#Articus\PathHandler\Producer\PluginManager: +# factories: +# invokables: Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory: {{#apiInfo}} diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/.openapi-generator/FILES b/samples/openapi3/server/petstore/php-mezzio-ph/.openapi-generator/FILES deleted file mode 100644 index fd268242a0e..00000000000 --- a/samples/openapi3/server/petstore/php-mezzio-ph/.openapi-generator/FILES +++ /dev/null @@ -1,36 +0,0 @@ -.gitignore -README.md -application/config.yml -application/config/app.yml -application/config/data_transfer.yml -application/config/path_handler.yml -application/container.php -composer.json -public/index.php -src/App/DTO/ApiResponse.php -src/App/DTO/Category.php -src/App/DTO/FindPetsByStatusQueryData.php -src/App/DTO/FindPetsByTagsQueryData.php -src/App/DTO/InlineObject.php -src/App/DTO/InlineObject1.php -src/App/DTO/LoginUserQueryData.php -src/App/DTO/Order.php -src/App/DTO/Pet.php -src/App/DTO/Tag.php -src/App/DTO/User.php -src/App/Factory.php -src/App/Handler/Pet.php -src/App/Handler/PetFindByStatus.php -src/App/Handler/PetFindByTags.php -src/App/Handler/PetPetId.php -src/App/Handler/PetPetIdUploadImage.php -src/App/Handler/StoreInventory.php -src/App/Handler/StoreOrder.php -src/App/Handler/StoreOrderOrderId.php -src/App/Handler/User.php -src/App/Handler/UserCreateWithArray.php -src/App/Handler/UserCreateWithList.php -src/App/Handler/UserLogin.php -src/App/Handler/UserLogout.php -src/App/Handler/UserUsername.php -src/App/Middleware/InternalServerError.php diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/.openapi-generator/VERSION b/samples/openapi3/server/petstore/php-mezzio-ph/.openapi-generator/VERSION deleted file mode 100644 index d99e7162d01..00000000000 --- a/samples/openapi3/server/petstore/php-mezzio-ph/.openapi-generator/VERSION +++ /dev/null @@ -1 +0,0 @@ -5.0.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/composer.json b/samples/openapi3/server/petstore/php-mezzio-ph/composer.json deleted file mode 100644 index 54f8e97226c..00000000000 --- a/samples/openapi3/server/petstore/php-mezzio-ph/composer.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "git_user_id/git_repo_id", - "description": "", - "license": "unlicense", - "version": "1.0.0", - "type": "project", - "require": { - "php": "^7.2", - "ext-yaml": "^2.0", - "mezzio/mezzio": "^3.2", - "laminas/laminas-diactoros": "^2.1", - "articus/path-handler": "^0.6", - "articus/data-transfer": "^0.4", - "articus/openapi-generator-common": "^0.1", - "doctrine/annotations": "^1.10", - "psr/simple-cache": "^1.0", - "laminas/laminas-config": "^3.4", - "laminas/laminas-stdlib": "^3.2", - "laminas/laminas-validator": "^2.13", - "nikic/fast-route": "^1.3" - }, - "autoload": { - "psr-4": { - "": "src/" - } - } -} \ No newline at end of file diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/ApiResponse.php b/samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/ApiResponse.php deleted file mode 100644 index a08cb2c9275..00000000000 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/DTO/ApiResponse.php +++ /dev/null @@ -1,31 +0,0 @@ -getAttribute("bodyData"); - throw new PHException\HttpCode(501, "Not implemented"); - } - /** - * Update an existing pet - * @PHA\Put() - * TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Consumer(name=PHConsumer\Json::class, mediaRange="application/json") - * TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Consumer(name=PHConsumer\Json::class, mediaRange="application/xml") - * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":\App\DTO\Pet::class,"objectAttr":"bodyData"}) - * TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Producer(name=PHProducer\Transfer::class, mediaType="application/xml") - * TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Producer(name=PHProducer\Transfer::class, mediaType="application/json") - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented - * - * @return \App\DTO\Pet - */ - public function updatePet(ServerRequestInterface $request): \App\DTO\Pet - { - //TODO implement method - /** @var \App\DTO\Pet $bodyData */ - $bodyData = $request->getAttribute("bodyData"); - throw new PHException\HttpCode(501, "Not implemented"); - } -} diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByStatus.php b/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByStatus.php deleted file mode 100644 index c1c1ce75400..00000000000 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByStatus.php +++ /dev/null @@ -1,44 +0,0 @@ -getAttribute("queryData"); - throw new PHException\HttpCode(501, "Not implemented"); - } -} diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByTags.php b/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByTags.php deleted file mode 100644 index b722a310efb..00000000000 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByTags.php +++ /dev/null @@ -1,44 +0,0 @@ -getAttribute("queryData"); - throw new PHException\HttpCode(501, "Not implemented"); - } -} diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/StoreOrder.php b/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/StoreOrder.php deleted file mode 100644 index be6af69243a..00000000000 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/StoreOrder.php +++ /dev/null @@ -1,41 +0,0 @@ -getAttribute("bodyData"); - throw new PHException\HttpCode(501, "Not implemented"); - } -} diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserLogin.php b/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserLogin.php deleted file mode 100644 index 577e7c3f562..00000000000 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserLogin.php +++ /dev/null @@ -1,43 +0,0 @@ -getAttribute("queryData"); - throw new PHException\HttpCode(501, "Not implemented"); - } -} diff --git a/samples/server/petstore/php-mezzio-ph-modern/.gitignore b/samples/server/petstore/php-mezzio-ph-modern/.gitignore new file mode 100644 index 00000000000..1ddcdf2a709 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/.gitignore @@ -0,0 +1,9 @@ +#based on .gitignore generated by https://github.com/zendframework/zend-expressive-skeleton +.idea + +# Composer files +composer.phar +vendor/ + +# Default cache folder +data/cache/ diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/.openapi-generator-ignore b/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator-ignore similarity index 100% rename from samples/openapi3/server/petstore/php-mezzio-ph/.openapi-generator-ignore rename to samples/server/petstore/php-mezzio-ph-modern/.openapi-generator-ignore diff --git a/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/FILES b/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/FILES new file mode 100644 index 00000000000..bc9a68917b6 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/FILES @@ -0,0 +1,71 @@ +.gitignore +README.md +application/config.yml +application/config/app.yml +application/config/data_transfer.yml +application/config/path_handler.yml +application/container.php +composer.json +public/index.php +src/App/DTO/ApiResponse.php +src/App/DTO/Category.php +src/App/DTO/Collection.php +src/App/DTO/Collection1.php +src/App/DTO/Collection10.php +src/App/DTO/Collection11.php +src/App/DTO/Collection12.php +src/App/DTO/Collection13.php +src/App/DTO/Collection14.php +src/App/DTO/Collection15.php +src/App/DTO/Collection16.php +src/App/DTO/Collection17.php +src/App/DTO/Collection18.php +src/App/DTO/Collection19.php +src/App/DTO/Collection2.php +src/App/DTO/Collection20.php +src/App/DTO/Collection21.php +src/App/DTO/Collection22.php +src/App/DTO/Collection23.php +src/App/DTO/Collection24.php +src/App/DTO/Collection25.php +src/App/DTO/Collection26.php +src/App/DTO/Collection27.php +src/App/DTO/Collection28.php +src/App/DTO/Collection29.php +src/App/DTO/Collection3.php +src/App/DTO/Collection30.php +src/App/DTO/Collection31.php +src/App/DTO/Collection32.php +src/App/DTO/Collection33.php +src/App/DTO/Collection34.php +src/App/DTO/Collection35.php +src/App/DTO/Collection36.php +src/App/DTO/Collection4.php +src/App/DTO/Collection5.php +src/App/DTO/Collection6.php +src/App/DTO/Collection7.php +src/App/DTO/Collection8.php +src/App/DTO/Collection9.php +src/App/DTO/FindPetsByStatusQueryData.php +src/App/DTO/FindPetsByTagsQueryData.php +src/App/DTO/LoginUserQueryData.php +src/App/DTO/Order.php +src/App/DTO/Pet.php +src/App/DTO/Tag.php +src/App/DTO/User.php +src/App/Factory.php +src/App/Handler/Pet.php +src/App/Handler/PetFindByStatus.php +src/App/Handler/PetFindByTags.php +src/App/Handler/PetPetId.php +src/App/Handler/PetPetIdUploadImage.php +src/App/Handler/StoreInventory.php +src/App/Handler/StoreOrder.php +src/App/Handler/StoreOrderOrderId.php +src/App/Handler/User.php +src/App/Handler/UserCreateWithArray.php +src/App/Handler/UserCreateWithList.php +src/App/Handler/UserLogin.php +src/App/Handler/UserLogout.php +src/App/Handler/UserUsername.php +src/App/Middleware/InternalServerError.php diff --git a/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION b/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION new file mode 100644 index 00000000000..6555596f931 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/README.md b/samples/server/petstore/php-mezzio-ph-modern/README.md similarity index 93% rename from samples/openapi3/server/petstore/php-mezzio-ph/README.md rename to samples/server/petstore/php-mezzio-ph-modern/README.md index 584fd156879..fd66369b261 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/README.md +++ b/samples/server/petstore/php-mezzio-ph-modern/README.md @@ -5,9 +5,9 @@ Generated by the [OpenAPI Generator](https://openapi-generator.tech) project. ## Overview This server stub aims to provide light, yet comprehensive structure for your API project using: -- PHP: >=7.2 -- [Laminas Mezzio](https://docs.mezzio.dev/mezzio/): >=3.2 -- [Path Handler](https://github.com/Articus/PathHandler): >=0.6 +- PHP: >=8.0 +- [Laminas Mezzio](https://docs.mezzio.dev/mezzio/): >=3.3 +- [Path Handler](https://github.com/Articus/PathHandler): >=0.7 ## How to use All you have to do to start development is: diff --git a/samples/server/petstore/php-mezzio-ph-modern/application/config.yml b/samples/server/petstore/php-mezzio-ph-modern/application/config.yml new file mode 100644 index 00000000000..58056552c5b --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/application/config.yml @@ -0,0 +1,21 @@ +#Empty configuration placeholder, remove when you add any real configuration settings to this file +{} + +#Enable configuration cache +#cache_configuration: true + +#Articus\PathHandler\RouteInjection\Factory: +# #Enable routing table cache +# router: +# cache: +# directory: ./data/cache/PathHandler + +#Enable handler metadata cache +#Articus\PathHandler\MetadataProvider\PhpAttribute: +# cache: +# directory: ./data/cache/PathHandler + +#Enable data transfer metadata cache for DTOs +#Articus\DataTransfer\MetadataProvider\PhpAttribute: +# cache: +# directory: ./data/cache/DataTransfer diff --git a/samples/server/petstore/php-mezzio-ph-modern/application/config/app.yml b/samples/server/petstore/php-mezzio-ph-modern/application/config/app.yml new file mode 100644 index 00000000000..0ffd5e8864c --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/application/config/app.yml @@ -0,0 +1,22 @@ +dependencies: + invokables: + Laminas\HttpHandlerRunner\Emitter\EmitterInterface: Laminas\HttpHandlerRunner\Emitter\SapiStreamEmitter + factories: + Mezzio\Application: App\Factory + Mezzio\MiddlewareContainer: Mezzio\Container\MiddlewareContainerFactory + Mezzio\MiddlewareFactory: Mezzio\Container\MiddlewareFactoryFactory + Mezzio\Router\RouteCollector: Mezzio\Router\RouteCollectorFactory + + Psr\Http\Message\ServerRequestInterface: Mezzio\Container\ServerRequestFactoryFactory + Psr\Http\Message\StreamInterface: Mezzio\Container\StreamFactoryFactory + Psr\Http\Message\ResponseInterface: Mezzio\Container\ResponseFactoryFactory + + App\Middleware\InternalServerError: Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory + Mezzio\Router\Middleware\RouteMiddleware: Mezzio\Router\Middleware\RouteMiddlewareFactory + Mezzio\Router\Middleware\DispatchMiddleware: Mezzio\Router\Middleware\DispatchMiddlewareFactory + Mezzio\Router\Middleware\MethodNotAllowedMiddleware: Mezzio\Router\Middleware\MethodNotAllowedMiddlewareFactory + Mezzio\Handler\NotFoundHandler: Mezzio\Container\NotFoundHandlerFactory + +Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory: + App\Middleware\InternalServerError: + - Psr\Http\Message\ResponseInterface diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/application/config/data_transfer.yml b/samples/server/petstore/php-mezzio-ph-modern/application/config/data_transfer.yml similarity index 69% rename from samples/openapi3/server/petstore/php-mezzio-ph/application/config/data_transfer.yml rename to samples/server/petstore/php-mezzio-ph-modern/application/config/data_transfer.yml index c5174147c23..7bdd139bb9f 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/application/config/data_transfer.yml +++ b/samples/server/petstore/php-mezzio-ph-modern/application/config/data_transfer.yml @@ -1,13 +1,13 @@ dependencies: factories: Articus\DataTransfer\Service: Articus\DataTransfer\Factory - Articus\DataTransfer\MetadataProvider\Annotation: Articus\DataTransfer\MetadataProvider\Factory\Annotation + Articus\DataTransfer\MetadataProvider\PhpAttribute: Articus\DataTransfer\MetadataProvider\Factory\PhpAttribute Articus\DataTransfer\Strategy\PluginManager: Articus\DataTransfer\Strategy\Factory\PluginManager Articus\DataTransfer\Validator\PluginManager: Articus\DataTransfer\Validator\Factory\PluginManager Laminas\Validator\ValidatorPluginManager: Laminas\Validator\ValidatorPluginManagerFactory aliases: - Articus\DataTransfer\ClassMetadataProviderInterface: Articus\DataTransfer\MetadataProvider\Annotation - Articus\DataTransfer\FieldMetadataProviderInterface: Articus\DataTransfer\MetadataProvider\Annotation + Articus\DataTransfer\ClassMetadataProviderInterface: Articus\DataTransfer\MetadataProvider\PhpAttribute + Articus\DataTransfer\FieldMetadataProviderInterface: Articus\DataTransfer\MetadataProvider\PhpAttribute Articus\DataTransfer\Strategy\PluginManager: invokables: @@ -16,6 +16,10 @@ Articus\DataTransfer\Strategy\PluginManager: factories: Date: OpenAPIGenerator\Common\Strategy\Factory\MutableDate DateTime: OpenAPIGenerator\Common\Strategy\Factory\MutableDateTime + ObjectList: OpenAPIGenerator\Common\Strategy\Factory\NoArgObjectList + ObjectMap: OpenAPIGenerator\Common\Strategy\Factory\NoArgObjectMap + ScalarList: OpenAPIGenerator\Common\Strategy\Factory\ScalarList + ScalarMap: OpenAPIGenerator\Common\Strategy\Factory\ScalarMap Articus\DataTransfer\Validator\PluginManager: invokables: @@ -24,3 +28,7 @@ Articus\DataTransfer\Validator\PluginManager: QueryStringScalarArray: OpenAPIGenerator\Common\Validator\QueryStringScalarArray abstract_factories: - Articus\DataTransfer\Validator\Factory\Laminas + +validators: + invokables: + Count: Laminas\Validator\IsCountable diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/application/config/path_handler.yml b/samples/server/petstore/php-mezzio-ph-modern/application/config/path_handler.yml similarity index 53% rename from samples/openapi3/server/petstore/php-mezzio-ph/application/config/path_handler.yml rename to samples/server/petstore/php-mezzio-ph-modern/application/config/path_handler.yml index 25995b20d6f..eb46b1891a3 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/application/config/path_handler.yml +++ b/samples/server/petstore/php-mezzio-ph-modern/application/config/path_handler.yml @@ -1,8 +1,13 @@ dependencies: factories: - Mezzio\Router\RouterInterface: Articus\PathHandler\RouteInjection\Factory + Mezzio\Router\RouterInterface: Articus\PathHandler\RouteInjectionFactory + Articus\PathHandler\MetadataProviderInterface: Articus\PathHandler\MetadataProvider\Factory\PhpAttribute + Articus\PathHandler\Handler\PluginManager: Articus\PathHandler\Handler\Factory\PluginManager + Articus\PathHandler\Consumer\PluginManager: Articus\PathHandler\Consumer\Factory\PluginManager + Articus\PathHandler\Attribute\PluginManager: Articus\PathHandler\Attribute\Factory\PluginManager + Articus\PathHandler\Producer\PluginManager: Articus\PathHandler\Producer\Factory\PluginManager -Articus\PathHandler\RouteInjection\Factory: +Articus\PathHandler\RouteInjectionFactory: paths: '/v2': - App\Handler\Pet @@ -19,18 +24,22 @@ Articus\PathHandler\RouteInjection\Factory: - App\Handler\UserLogin - App\Handler\UserLogout - App\Handler\UserUsername - handlers: - abstract_factories: - - Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory -# consumers: -# factories: -# invokables: -# attributes: -# factories: -# invokables: -# producers: -# factories: -# invokables: + +Articus\PathHandler\Handler\PluginManager: + abstract_factories: + - Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory + +#Articus\PathHandler\Consumer\PluginManager: +# factories: +# invokables: + +#Articus\PathHandler\Attribute\PluginManager: +# factories: +# invokables: + +#Articus\PathHandler\Producer\PluginManager: +# factories: +# invokables: Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory: App\Handler\Pet: [] diff --git a/samples/server/petstore/php-mezzio-ph-modern/application/container.php b/samples/server/petstore/php-mezzio-ph-modern/application/container.php new file mode 100644 index 00000000000..9c54fafcfec --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/application/container.php @@ -0,0 +1,43 @@ +setService('config', $config); +$container->setAlias('Config', 'config'); + +return $container; diff --git a/samples/server/petstore/php-mezzio-ph-modern/composer.json b/samples/server/petstore/php-mezzio-ph-modern/composer.json new file mode 100644 index 00000000000..7f03f079e4a --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/composer.json @@ -0,0 +1,26 @@ +{ + "name": "git_user_id/git_repo_id", + "description": "", + "license": "unlicense", + "version": "1.0.0", + "type": "project", + "require": { + "php": "^8.0", + "ext-yaml": "^2.2", + "mezzio/mezzio": "^3.3", + "laminas/laminas-diactoros": "^2.5", + "articus/path-handler": "^0.7", + "articus/data-transfer": "^0.5", + "articus/openapi-generator-common": "^0.2", + "psr/simple-cache": "^1.0", + "laminas/laminas-config": "^3.4", + "laminas/laminas-stdlib": "^3.3", + "laminas/laminas-validator": "^2.14", + "nikic/fast-route": "^1.3" + }, + "autoload": { + "psr-4": { + "": "src/" + } + } +} \ No newline at end of file diff --git a/samples/server/petstore/php-mezzio-ph-modern/public/index.php b/samples/server/petstore/php-mezzio-ph-modern/public/index.php new file mode 100644 index 00000000000..7c3de73df16 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/public/index.php @@ -0,0 +1,11 @@ +get(\Mezzio\Application::class); +$app->run(); diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/ApiResponse.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/ApiResponse.php new file mode 100644 index 00000000000..bfe65906ea5 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/ApiResponse.php @@ -0,0 +1,25 @@ + "int"])] + public int|null $code = null; + + #[DTA\Data(field: "type", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "string"])] + public string|null $type = null; + + #[DTA\Data(field: "message", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "string"])] + public string|null $message = null; + +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Category.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Category.php new file mode 100644 index 00000000000..e6b28c29028 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Category.php @@ -0,0 +1,22 @@ + "int"])] + public int|null $id = null; + + #[DTA\Data(field: "name", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "string"])] + #[DTA\Validator("Regex", ["pattern" => "/^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$/"])] + public string|null $name = null; + +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection.php new file mode 100644 index 00000000000..f0e14da6cd8 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection1.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection1.php new file mode 100644 index 00000000000..c05da2858bd --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection1.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection1 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection10.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection10.php new file mode 100644 index 00000000000..29e6ccdb347 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection10.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection10 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection11.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection11.php new file mode 100644 index 00000000000..89b2d0d01f8 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection11.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection11 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection12.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection12.php new file mode 100644 index 00000000000..e0657b0d467 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection12.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection12 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection13.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection13.php new file mode 100644 index 00000000000..26f88d9685d --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection13.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection13 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection14.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection14.php new file mode 100644 index 00000000000..d1e0e11495b --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection14.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection14 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection15.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection15.php new file mode 100644 index 00000000000..085f17e1e97 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection15.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection15 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection16.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection16.php new file mode 100644 index 00000000000..1b1523c7d09 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection16.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection16 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection17.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection17.php new file mode 100644 index 00000000000..eb5b0e828f8 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection17.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection17 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection18.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection18.php new file mode 100644 index 00000000000..dd55bd5840a --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection18.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection18 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection19.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection19.php new file mode 100644 index 00000000000..45da36c7301 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection19.php @@ -0,0 +1,14 @@ + \App\DTO\Pet::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Pet::class]] +]])] +class Collection19 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection2.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection2.php new file mode 100644 index 00000000000..26176dcc5e5 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection2.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection2 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection20.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection20.php new file mode 100644 index 00000000000..26b16ef104e --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection20.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection20 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection21.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection21.php new file mode 100644 index 00000000000..9e0c2429bde --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection21.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection21 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection22.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection22.php new file mode 100644 index 00000000000..6f7a04ff4bd --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection22.php @@ -0,0 +1,14 @@ + \App\DTO\Pet::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Pet::class]] +]])] +class Collection22 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection23.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection23.php new file mode 100644 index 00000000000..608c9ad5020 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection23.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection23 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection24.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection24.php new file mode 100644 index 00000000000..b876816c2dd --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection24.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection24 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection25.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection25.php new file mode 100644 index 00000000000..ad3a8102ad3 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection25.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection25 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection26.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection26.php new file mode 100644 index 00000000000..f8e958fcb40 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection26.php @@ -0,0 +1,14 @@ + \App\DTO\Pet::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Pet::class]] +]])] +class Collection26 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection27.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection27.php new file mode 100644 index 00000000000..b53e9e87a72 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection27.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection27 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection28.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection28.php new file mode 100644 index 00000000000..3b6e05419ef --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection28.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection28 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection29.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection29.php new file mode 100644 index 00000000000..24a1ee261d8 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection29.php @@ -0,0 +1,14 @@ + \App\DTO\Pet::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Pet::class]] +]])] +class Collection29 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection3.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection3.php new file mode 100644 index 00000000000..1833307cd7e --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection3.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection3 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection30.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection30.php new file mode 100644 index 00000000000..916229afc92 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection30.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection30 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection31.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection31.php new file mode 100644 index 00000000000..12b771c1c16 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection31.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection31 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection32.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection32.php new file mode 100644 index 00000000000..e89cbcd4397 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection32.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection32 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection33.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection33.php new file mode 100644 index 00000000000..91229b175cf --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection33.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection33 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection34.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection34.php new file mode 100644 index 00000000000..1670c4ee7e3 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection34.php @@ -0,0 +1,14 @@ + "int"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "int"]] +]])] +class Collection34 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection35.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection35.php new file mode 100644 index 00000000000..4b1082abc1b --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection35.php @@ -0,0 +1,14 @@ + \App\DTO\User::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\User::class]] +]])] +class Collection35 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection36.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection36.php new file mode 100644 index 00000000000..38595c2f5d3 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection36.php @@ -0,0 +1,14 @@ + \App\DTO\User::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\User::class]] +]])] +class Collection36 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection4.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection4.php new file mode 100644 index 00000000000..54e2f1a12de --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection4.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection4 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection5.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection5.php new file mode 100644 index 00000000000..3f32f4513a7 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection5.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection5 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection6.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection6.php new file mode 100644 index 00000000000..79abc43f339 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection6.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection6 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection7.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection7.php new file mode 100644 index 00000000000..8574d82b365 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection7.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection7 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection8.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection8.php new file mode 100644 index 00000000000..c264d8076a1 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection8.php @@ -0,0 +1,14 @@ + "string"])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "Scalar", "options" => ["type" => "string"]] +]])] +class Collection8 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection9.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection9.php new file mode 100644 index 00000000000..99cc837d6a5 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Collection9.php @@ -0,0 +1,14 @@ + \App\DTO\Tag::class])] +#[DTA\Validator("Collection", ["validators" => [ + ["name" => "TypeCompliant", "options" => ["type" => \App\DTO\Tag::class]] +]])] +class Collection9 extends \ArrayObject +{ +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/FindPetsByStatusQueryData.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/FindPetsByStatusQueryData.php new file mode 100644 index 00000000000..178b4949794 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/FindPetsByStatusQueryData.php @@ -0,0 +1,21 @@ + "string", "format" => "csv"])] + #[DTA\Validator("QueryStringScalarArray", ["type" => "string", "format" => "csv"])] + public array|null $status = null; + +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/FindPetsByTagsQueryData.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/FindPetsByTagsQueryData.php new file mode 100644 index 00000000000..cbf9e1d0c39 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/FindPetsByTagsQueryData.php @@ -0,0 +1,21 @@ + "string", "format" => "csv"])] + #[DTA\Validator("QueryStringScalarArray", ["type" => "string", "format" => "csv"])] + public array|null $tags = null; + +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/LoginUserQueryData.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/LoginUserQueryData.php new file mode 100644 index 00000000000..2c01e944c91 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/LoginUserQueryData.php @@ -0,0 +1,30 @@ + "string"])] + #[DTA\Validator("QueryStringScalar", ["type" => "string"])] + public string|null $password = null; + + /** + * The user name for login + */ + #[DTA\Data(field: "username")] + #[DTA\Strategy("QueryStringScalar", ["type" => "string"])] + #[DTA\Validator("QueryStringScalar", ["type" => "string"])] + #[DTA\Validator("Regex", ["pattern" => "/^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$/"])] + public string|null $username = null; + +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Order.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Order.php new file mode 100644 index 00000000000..8dd384b4475 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Order.php @@ -0,0 +1,41 @@ + "int"])] + public int|null $id = null; + + #[DTA\Data(field: "petId", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "int"])] + public int|null $pet_id = null; + + #[DTA\Data(field: "quantity", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "int"])] + public int|null $quantity = null; + + #[DTA\Data(field: "shipDate", nullable: true)] + #[DTA\Strategy("DateTime")] + #[DTA\Validator("Date", ["format" => \DateTime::RFC3339])] + public \DateTime|null $ship_date = null; + + /** + * Order Status + */ + #[DTA\Data(field: "status", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "string"])] + public string|null $status = null; + + #[DTA\Data(field: "complete", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "bool"])] + public bool|null $complete = null; + +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Pet.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Pet.php new file mode 100644 index 00000000000..bcd5cdb6e81 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Pet.php @@ -0,0 +1,43 @@ + "int"])] + public int|null $id = null; + + #[DTA\Data(field: "category", nullable: true)] + #[DTA\Strategy("Object", ["type" => \App\DTO\Category::class])] + #[DTA\Validator("TypeCompliant", ["type" => \App\DTO\Category::class])] + public \App\DTO\Category|null $category = null; + + #[DTA\Data(field: "name")] + #[DTA\Validator("Scalar", ["type" => "string"])] + public string|null $name = null; + + #[DTA\Data(field: "photoUrls")] + #[DTA\Strategy("Object", ["type" => \App\DTO\Collection32::class])] + #[DTA\Validator("TypeCompliant", ["type" => \App\DTO\Collection32::class])] + public \App\DTO\Collection32|null $photo_urls = null; + + #[DTA\Data(field: "tags", nullable: true)] + #[DTA\Strategy("Object", ["type" => \App\DTO\Collection33::class])] + #[DTA\Validator("TypeCompliant", ["type" => \App\DTO\Collection33::class])] + public \App\DTO\Collection33|null $tags = null; + + /** + * pet status in the store + */ + #[DTA\Data(field: "status", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "string"])] + public string|null $status = null; + +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Tag.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Tag.php new file mode 100644 index 00000000000..5fcc6c116b0 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/Tag.php @@ -0,0 +1,21 @@ + "int"])] + public int|null $id = null; + + #[DTA\Data(field: "name", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "string"])] + public string|null $name = null; + +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/User.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/User.php new file mode 100644 index 00000000000..c257dfea319 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/DTO/User.php @@ -0,0 +1,48 @@ + "int"])] + public int|null $id = null; + + #[DTA\Data(field: "username", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "string"])] + public string|null $username = null; + + #[DTA\Data(field: "firstName", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "string"])] + public string|null $first_name = null; + + #[DTA\Data(field: "lastName", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "string"])] + public string|null $last_name = null; + + #[DTA\Data(field: "email", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "string"])] + public string|null $email = null; + + #[DTA\Data(field: "password", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "string"])] + public string|null $password = null; + + #[DTA\Data(field: "phone", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "string"])] + public string|null $phone = null; + + /** + * User Status + */ + #[DTA\Data(field: "userStatus", nullable: true)] + #[DTA\Validator("Scalar", ["type" => "int"])] + public int|null $user_status = null; + +} diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Factory.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Factory.php similarity index 71% rename from samples/openapi3/server/petstore/php-mezzio-ph/src/App/Factory.php rename to samples/server/petstore/php-mezzio-ph-modern/src/App/Factory.php index 0757bcfbea7..24eb21b492c 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Factory.php +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Factory.php @@ -23,23 +23,13 @@ class Factory implements FactoryInterface { public function __invoke(ContainerInterface $container, $requestedName, array $options = null): Application { - $errorMiddleware = $container->get(Middleware\InternalServerError::class); - if (!($errorMiddleware instanceof Middleware\InternalServerError)) { - throw new \LogicException(\sprintf( - 'Invalid error middleware: expecting %s, not %s.', - Middleware\InternalServerError::class, - \is_object($errorMiddleware) ? \get_class($errorMiddleware) : \gettype($errorMiddleware) - )); - } + $errorMiddleware = self::getErrorMiddleware($container); $pipeline = new MiddlewarePipe(); $runner = new RequestHandlerRunner( $pipeline, $container->get(EmitterInterface::class), $container->get(ServerRequestInterface::class), - function(\Throwable $error) use ($errorMiddleware) : ResponseInterface - { - return $errorMiddleware->handleError($error); - } + static fn(\Throwable $error): ResponseInterface => $errorMiddleware->handleError($error) ); $application = new Application( $container->get(MiddlewareFactory::class), @@ -55,4 +45,9 @@ class Factory implements FactoryInterface return $application; } + + protected static function getErrorMiddleware(ContainerInterface $container): Middleware\InternalServerError + { + return $container->get(Middleware\InternalServerError::class); + } } diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/Pet.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/Pet.php new file mode 100644 index 00000000000..625b36f693a --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/Pet.php @@ -0,0 +1,56 @@ + \App\DTO\Pet::class, "objectAttr" => "bodyData"])] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/xml", PHProducer\Transfer::class)] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/json", PHProducer\Transfer::class)] + public function addPet(ServerRequestInterface $request): \App\DTO\Pet + { + //TODO implement method + /** @var \App\DTO\Pet $bodyData */ + $bodyData = $request->getAttribute("bodyData"); + throw new PHException\HttpCode(501, "Not implemented"); + } + /** + * Update an existing pet + */ + #[PHA\Put()] + // TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Consumer("application/json", PHConsumer\Json::class)] + // TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Consumer("application/xml", PHConsumer\Json::class)] + #[PHA\Attribute(PHAttribute\Transfer::class, ["type" => \App\DTO\Pet::class, "objectAttr" => "bodyData"])] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/xml", PHProducer\Transfer::class)] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/json", PHProducer\Transfer::class)] + public function updatePet(ServerRequestInterface $request): \App\DTO\Pet + { + //TODO implement method + /** @var \App\DTO\Pet $bodyData */ + $bodyData = $request->getAttribute("bodyData"); + throw new PHException\HttpCode(501, "Not implemented"); + } +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetFindByStatus.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetFindByStatus.php new file mode 100644 index 00000000000..53d217f9969 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetFindByStatus.php @@ -0,0 +1,36 @@ + \App\DTO\FindPetsByStatusQueryData::class, + "objectAttr" => "queryData", + "source" => PHAttribute\Transfer::SOURCE_GET + ])] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/xml", PHProducer\Transfer::class)] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/json", PHProducer\Transfer::class)] + public function findPetsByStatus(ServerRequestInterface $request): \App\DTO\Collection19 + { + //TODO implement method + /** @var \App\DTO\FindPetsByStatusQueryData $queryData */ + $queryData = $request->getAttribute("queryData"); + throw new PHException\HttpCode(501, "Not implemented"); + } +} diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetFindByTags.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetFindByTags.php new file mode 100644 index 00000000000..a40122909bc --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetFindByTags.php @@ -0,0 +1,36 @@ + \App\DTO\FindPetsByTagsQueryData::class, + "objectAttr" => "queryData", + "source" => PHAttribute\Transfer::SOURCE_GET + ])] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/xml", PHProducer\Transfer::class)] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/json", PHProducer\Transfer::class)] + public function findPetsByTags(ServerRequestInterface $request): \App\DTO\Collection26 + { + //TODO implement method + /** @var \App\DTO\FindPetsByTagsQueryData $queryData */ + $queryData = $request->getAttribute("queryData"); + throw new PHException\HttpCode(501, "Not implemented"); + } +} diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetPetId.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetPetId.php similarity index 55% rename from samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetPetId.php rename to samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetPetId.php index 625bbf5832c..8da421be678 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetPetId.php +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetPetId.php @@ -3,25 +3,20 @@ declare(strict_types=1); namespace App\Handler; -use Articus\PathHandler\Annotation as PHA; +use Articus\PathHandler\PhpAttribute as PHA; use Articus\PathHandler\Consumer as PHConsumer; use Articus\PathHandler\Producer as PHProducer; use Articus\PathHandler\Attribute as PHAttribute; use Articus\PathHandler\Exception as PHException; use Psr\Http\Message\ServerRequestInterface; -/** - * @PHA\Route(pattern="/pet/{petId}") - */ +#[PHA\Route("/pet/{petId}")] class PetPetId { /** * Deletes a pet - * @PHA\Delete() - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented */ + #[PHA\Delete()] public function deletePet(ServerRequestInterface $request) { //TODO implement method @@ -29,17 +24,12 @@ class PetPetId } /** * Find pet by ID - * @PHA\Get() - * TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Producer(name=PHProducer\Transfer::class, mediaType="application/xml") - * TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Producer(name=PHProducer\Transfer::class, mediaType="application/json") - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented - * - * @return \App\DTO\Pet */ + #[PHA\Get()] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/xml", PHProducer\Transfer::class)] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/json", PHProducer\Transfer::class)] public function getPetById(ServerRequestInterface $request): \App\DTO\Pet { //TODO implement method @@ -47,11 +37,8 @@ class PetPetId } /** * Updates a pet in the store with form data - * @PHA\Post() - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented */ + #[PHA\Post()] public function updatePetWithForm(ServerRequestInterface $request) { //TODO implement method diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetPetIdUploadImage.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetPetIdUploadImage.php similarity index 58% rename from samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetPetIdUploadImage.php rename to samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetPetIdUploadImage.php index 67cc0784caa..886a35c1e32 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/PetPetIdUploadImage.php +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/PetPetIdUploadImage.php @@ -3,29 +3,22 @@ declare(strict_types=1); namespace App\Handler; -use Articus\PathHandler\Annotation as PHA; +use Articus\PathHandler\PhpAttribute as PHA; use Articus\PathHandler\Consumer as PHConsumer; use Articus\PathHandler\Producer as PHProducer; use Articus\PathHandler\Attribute as PHAttribute; use Articus\PathHandler\Exception as PHException; use Psr\Http\Message\ServerRequestInterface; -/** - * @PHA\Route(pattern="/pet/{petId}/uploadImage") - */ +#[PHA\Route("/pet/{petId}/uploadImage")] class PetPetIdUploadImage { /** * uploads an image - * @PHA\Post() - * TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Producer(name=PHProducer\Transfer::class, mediaType="application/json") - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented - * - * @return \App\DTO\ApiResponse */ + #[PHA\Post()] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/json", PHProducer\Transfer::class)] public function uploadFile(ServerRequestInterface $request): \App\DTO\ApiResponse { //TODO implement method diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/StoreInventory.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/StoreInventory.php similarity index 54% rename from samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/StoreInventory.php rename to samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/StoreInventory.php index 6d6d3ceb946..bc35720421c 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/StoreInventory.php +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/StoreInventory.php @@ -3,31 +3,23 @@ declare(strict_types=1); namespace App\Handler; -use Articus\PathHandler\Annotation as PHA; +use Articus\PathHandler\PhpAttribute as PHA; use Articus\PathHandler\Consumer as PHConsumer; use Articus\PathHandler\Producer as PHProducer; use Articus\PathHandler\Attribute as PHAttribute; use Articus\PathHandler\Exception as PHException; use Psr\Http\Message\ServerRequestInterface; -/** - * @PHA\Route(pattern="/store/inventory") - */ +#[PHA\Route("/store/inventory")] class StoreInventory { /** * Returns pet inventories by status - * @PHA\Get() - * TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Producer(name=PHProducer\Transfer::class, mediaType="application/json") - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented - * - * TODO check if generated return container type is valid - * @return map[string,int] */ - public function getInventory(ServerRequestInterface $request): array + #[PHA\Get()] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/json", PHProducer\Transfer::class)] + public function getInventory(ServerRequestInterface $request): \App\DTO\Collection34 { //TODO implement method throw new PHException\HttpCode(501, "Not implemented"); diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/StoreOrder.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/StoreOrder.php new file mode 100644 index 00000000000..9399d0e4d3b --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/StoreOrder.php @@ -0,0 +1,34 @@ + \App\DTO\Order::class, "objectAttr" => "bodyData"])] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/xml", PHProducer\Transfer::class)] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/json", PHProducer\Transfer::class)] + public function placeOrder(ServerRequestInterface $request): \App\DTO\Order + { + //TODO implement method + /** @var \App\DTO\Order $bodyData */ + $bodyData = $request->getAttribute("bodyData"); + throw new PHException\HttpCode(501, "Not implemented"); + } +} diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/StoreOrderOrderId.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/StoreOrderOrderId.php similarity index 54% rename from samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/StoreOrderOrderId.php rename to samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/StoreOrderOrderId.php index 31c53e597eb..ae8313b20ea 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/StoreOrderOrderId.php +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/StoreOrderOrderId.php @@ -3,25 +3,20 @@ declare(strict_types=1); namespace App\Handler; -use Articus\PathHandler\Annotation as PHA; +use Articus\PathHandler\PhpAttribute as PHA; use Articus\PathHandler\Consumer as PHConsumer; use Articus\PathHandler\Producer as PHProducer; use Articus\PathHandler\Attribute as PHAttribute; use Articus\PathHandler\Exception as PHException; use Psr\Http\Message\ServerRequestInterface; -/** - * @PHA\Route(pattern="/store/order/{orderId}") - */ +#[PHA\Route("/store/order/{orderId}")] class StoreOrderOrderId { /** * Delete purchase order by ID - * @PHA\Delete() - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented */ + #[PHA\Delete()] public function deleteOrder(ServerRequestInterface $request) { //TODO implement method @@ -29,17 +24,12 @@ class StoreOrderOrderId } /** * Find purchase order by ID - * @PHA\Get() - * TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Producer(name=PHProducer\Transfer::class, mediaType="application/xml") - * TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Producer(name=PHProducer\Transfer::class, mediaType="application/json") - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented - * - * @return \App\DTO\Order */ + #[PHA\Get()] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/xml", PHProducer\Transfer::class)] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/json", PHProducer\Transfer::class)] public function getOrderById(ServerRequestInterface $request): \App\DTO\Order { //TODO implement method diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/User.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/User.php similarity index 57% rename from samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/User.php rename to samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/User.php index 5a48f2ec072..8ad9221e263 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/User.php +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/User.php @@ -3,28 +3,23 @@ declare(strict_types=1); namespace App\Handler; -use Articus\PathHandler\Annotation as PHA; +use Articus\PathHandler\PhpAttribute as PHA; use Articus\PathHandler\Consumer as PHConsumer; use Articus\PathHandler\Producer as PHProducer; use Articus\PathHandler\Attribute as PHAttribute; use Articus\PathHandler\Exception as PHException; use Psr\Http\Message\ServerRequestInterface; -/** - * @PHA\Route(pattern="/user") - */ +#[PHA\Route("/user")] class User { /** * Create user - * @PHA\Post() - * TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Consumer(name=PHConsumer\Json::class, mediaRange="application/json") - * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":\App\DTO\User::class,"objectAttr":"bodyData"}) - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented */ + #[PHA\Post()] + // TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Consumer("application/json", PHConsumer\Json::class)] + #[PHA\Attribute(PHAttribute\Transfer::class, ["type" => \App\DTO\User::class, "objectAttr" => "bodyData"])] public function createUser(ServerRequestInterface $request) { //TODO implement method diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithArray.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserCreateWithArray.php similarity index 52% rename from samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithArray.php rename to samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserCreateWithArray.php index a8a39215bab..304f85782c5 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithArray.php +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserCreateWithArray.php @@ -3,33 +3,27 @@ declare(strict_types=1); namespace App\Handler; -use Articus\PathHandler\Annotation as PHA; +use Articus\PathHandler\PhpAttribute as PHA; use Articus\PathHandler\Consumer as PHConsumer; use Articus\PathHandler\Producer as PHProducer; use Articus\PathHandler\Attribute as PHAttribute; use Articus\PathHandler\Exception as PHException; use Psr\Http\Message\ServerRequestInterface; -/** - * @PHA\Route(pattern="/user/createWithArray") - */ +#[PHA\Route("/user/createWithArray")] class UserCreateWithArray { /** * Creates list of users with given input array - * @PHA\Post() - * TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Consumer(name=PHConsumer\Json::class, mediaRange="application/json") - * TODO check if attribute is valid and can handle your container type - * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":"\App\DTO\User[]","objectAttr":"bodyData"}) - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented */ + #[PHA\Post()] + // TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Consumer("application/json", PHConsumer\Json::class)] + #[PHA\Attribute(PHAttribute\Transfer::class, ["type" => \App\DTO\Collection36::class, "objectAttr" => "bodyData"])] public function createUsersWithArrayInput(ServerRequestInterface $request) { //TODO implement method - /** @var \App\DTO\User[] $bodyData */ + /** @var \App\DTO\Collection36 $bodyData */ $bodyData = $request->getAttribute("bodyData"); throw new PHException\HttpCode(501, "Not implemented"); } diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithList.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserCreateWithList.php similarity index 52% rename from samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithList.php rename to samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserCreateWithList.php index b34cca7045f..1d415fcee23 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithList.php +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserCreateWithList.php @@ -3,33 +3,27 @@ declare(strict_types=1); namespace App\Handler; -use Articus\PathHandler\Annotation as PHA; +use Articus\PathHandler\PhpAttribute as PHA; use Articus\PathHandler\Consumer as PHConsumer; use Articus\PathHandler\Producer as PHProducer; use Articus\PathHandler\Attribute as PHAttribute; use Articus\PathHandler\Exception as PHException; use Psr\Http\Message\ServerRequestInterface; -/** - * @PHA\Route(pattern="/user/createWithList") - */ +#[PHA\Route("/user/createWithList")] class UserCreateWithList { /** * Creates list of users with given input array - * @PHA\Post() - * TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Consumer(name=PHConsumer\Json::class, mediaRange="application/json") - * TODO check if attribute is valid and can handle your container type - * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":"\App\DTO\User[]","objectAttr":"bodyData"}) - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented */ + #[PHA\Post()] + // TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Consumer("application/json", PHConsumer\Json::class)] + #[PHA\Attribute(PHAttribute\Transfer::class, ["type" => \App\DTO\Collection36::class, "objectAttr" => "bodyData"])] public function createUsersWithListInput(ServerRequestInterface $request) { //TODO implement method - /** @var \App\DTO\User[] $bodyData */ + /** @var \App\DTO\Collection36 $bodyData */ $bodyData = $request->getAttribute("bodyData"); throw new PHException\HttpCode(501, "Not implemented"); } diff --git a/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserLogin.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserLogin.php new file mode 100644 index 00000000000..38a502537f7 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserLogin.php @@ -0,0 +1,36 @@ + \App\DTO\LoginUserQueryData::class, + "objectAttr" => "queryData", + "source" => PHAttribute\Transfer::SOURCE_GET + ])] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/xml", PHProducer\Transfer::class)] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/json", PHProducer\Transfer::class)] + public function loginUser(ServerRequestInterface $request): string + { + //TODO implement method + /** @var \App\DTO\LoginUserQueryData $queryData */ + $queryData = $request->getAttribute("queryData"); + throw new PHException\HttpCode(501, "Not implemented"); + } +} diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserLogout.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserLogout.php similarity index 70% rename from samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserLogout.php rename to samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserLogout.php index 4c0d8b1bb06..7cb7b9a8a2e 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserLogout.php +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserLogout.php @@ -3,25 +3,20 @@ declare(strict_types=1); namespace App\Handler; -use Articus\PathHandler\Annotation as PHA; +use Articus\PathHandler\PhpAttribute as PHA; use Articus\PathHandler\Consumer as PHConsumer; use Articus\PathHandler\Producer as PHProducer; use Articus\PathHandler\Attribute as PHAttribute; use Articus\PathHandler\Exception as PHException; use Psr\Http\Message\ServerRequestInterface; -/** - * @PHA\Route(pattern="/user/logout") - */ +#[PHA\Route("/user/logout")] class UserLogout { /** * Logs out current logged in user session - * @PHA\Get() - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented */ + #[PHA\Get()] public function logoutUser(ServerRequestInterface $request) { //TODO implement method diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserUsername.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserUsername.php similarity index 51% rename from samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserUsername.php rename to samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserUsername.php index ce3de984969..68be5f4fc1a 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Handler/UserUsername.php +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Handler/UserUsername.php @@ -3,25 +3,20 @@ declare(strict_types=1); namespace App\Handler; -use Articus\PathHandler\Annotation as PHA; +use Articus\PathHandler\PhpAttribute as PHA; use Articus\PathHandler\Consumer as PHConsumer; use Articus\PathHandler\Producer as PHProducer; use Articus\PathHandler\Attribute as PHAttribute; use Articus\PathHandler\Exception as PHException; use Psr\Http\Message\ServerRequestInterface; -/** - * @PHA\Route(pattern="/user/{username}") - */ +#[PHA\Route("/user/{username}")] class UserUsername { /** * Delete user - * @PHA\Delete() - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented */ + #[PHA\Delete()] public function deleteUser(ServerRequestInterface $request) { //TODO implement method @@ -29,17 +24,12 @@ class UserUsername } /** * Get user by user name - * @PHA\Get() - * TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Producer(name=PHProducer\Transfer::class, mediaType="application/xml") - * TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Producer(name=PHProducer\Transfer::class, mediaType="application/json") - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented - * - * @return \App\DTO\User */ + #[PHA\Get()] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/xml", PHProducer\Transfer::class)] + // TODO check if producer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Producer("application/json", PHProducer\Transfer::class)] public function getUserByName(ServerRequestInterface $request): \App\DTO\User { //TODO implement method @@ -47,14 +37,11 @@ class UserUsername } /** * Updated user - * @PHA\Put() - * TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation - * @PHA\Consumer(name=PHConsumer\Json::class, mediaRange="application/json") - * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":\App\DTO\User::class,"objectAttr":"bodyData"}) - * @param ServerRequestInterface $request - * - * @throws PHException\HttpCode 501 if the method is not implemented */ + #[PHA\Put()] + // TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation + #[PHA\Consumer("application/json", PHConsumer\Json::class)] + #[PHA\Attribute(PHAttribute\Transfer::class, ["type" => \App\DTO\User::class, "objectAttr" => "bodyData"])] public function updateUser(ServerRequestInterface $request) { //TODO implement method diff --git a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Middleware/InternalServerError.php b/samples/server/petstore/php-mezzio-ph-modern/src/App/Middleware/InternalServerError.php similarity index 82% rename from samples/openapi3/server/petstore/php-mezzio-ph/src/App/Middleware/InternalServerError.php rename to samples/server/petstore/php-mezzio-ph-modern/src/App/Middleware/InternalServerError.php index f0354421e00..bc6d5969e2a 100644 --- a/samples/openapi3/server/petstore/php-mezzio-ph/src/App/Middleware/InternalServerError.php +++ b/samples/server/petstore/php-mezzio-ph-modern/src/App/Middleware/InternalServerError.php @@ -11,17 +11,8 @@ use Laminas\Stdlib\ErrorHandler; class InternalServerError implements MiddlewareInterface { - /** - * @var callable - */ - protected $responseGenerator; - - /** - * @param callable $responseGenerator - */ - public function __construct(callable $responseGenerator) + public function __construct(protected \Closure $responseGenerator) { - $this->responseGenerator = $responseGenerator; } /** diff --git a/samples/server/petstore/php-mezzio-ph/.openapi-generator/FILES b/samples/server/petstore/php-mezzio-ph/.openapi-generator/FILES index fc8224fecb8..bc9a68917b6 100644 --- a/samples/server/petstore/php-mezzio-ph/.openapi-generator/FILES +++ b/samples/server/petstore/php-mezzio-ph/.openapi-generator/FILES @@ -9,6 +9,43 @@ composer.json public/index.php src/App/DTO/ApiResponse.php src/App/DTO/Category.php +src/App/DTO/Collection.php +src/App/DTO/Collection1.php +src/App/DTO/Collection10.php +src/App/DTO/Collection11.php +src/App/DTO/Collection12.php +src/App/DTO/Collection13.php +src/App/DTO/Collection14.php +src/App/DTO/Collection15.php +src/App/DTO/Collection16.php +src/App/DTO/Collection17.php +src/App/DTO/Collection18.php +src/App/DTO/Collection19.php +src/App/DTO/Collection2.php +src/App/DTO/Collection20.php +src/App/DTO/Collection21.php +src/App/DTO/Collection22.php +src/App/DTO/Collection23.php +src/App/DTO/Collection24.php +src/App/DTO/Collection25.php +src/App/DTO/Collection26.php +src/App/DTO/Collection27.php +src/App/DTO/Collection28.php +src/App/DTO/Collection29.php +src/App/DTO/Collection3.php +src/App/DTO/Collection30.php +src/App/DTO/Collection31.php +src/App/DTO/Collection32.php +src/App/DTO/Collection33.php +src/App/DTO/Collection34.php +src/App/DTO/Collection35.php +src/App/DTO/Collection36.php +src/App/DTO/Collection4.php +src/App/DTO/Collection5.php +src/App/DTO/Collection6.php +src/App/DTO/Collection7.php +src/App/DTO/Collection8.php +src/App/DTO/Collection9.php src/App/DTO/FindPetsByStatusQueryData.php src/App/DTO/FindPetsByTagsQueryData.php src/App/DTO/LoginUserQueryData.php diff --git a/samples/server/petstore/php-mezzio-ph/README.md b/samples/server/petstore/php-mezzio-ph/README.md index 584fd156879..a8047005901 100644 --- a/samples/server/petstore/php-mezzio-ph/README.md +++ b/samples/server/petstore/php-mezzio-ph/README.md @@ -5,9 +5,9 @@ Generated by the [OpenAPI Generator](https://openapi-generator.tech) project. ## Overview This server stub aims to provide light, yet comprehensive structure for your API project using: -- PHP: >=7.2 +- PHP: >=7.3 - [Laminas Mezzio](https://docs.mezzio.dev/mezzio/): >=3.2 -- [Path Handler](https://github.com/Articus/PathHandler): >=0.6 +- [Path Handler](https://github.com/Articus/PathHandler): >=0.7 ## How to use All you have to do to start development is: diff --git a/samples/server/petstore/php-mezzio-ph/application/config.yml b/samples/server/petstore/php-mezzio-ph/application/config.yml index 1f106812353..71371becf21 100644 --- a/samples/server/petstore/php-mezzio-ph/application/config.yml +++ b/samples/server/petstore/php-mezzio-ph/application/config.yml @@ -9,10 +9,11 @@ # router: # cache: # directory: ./data/cache/PathHandler -# #Enable handler metadata cache -# metadata: -# cache: -# directory: ./data/cache/PathHandler + +#Enable handler metadata cache +#Articus\PathHandler\MetadataProvider\Annotation: +# cache: +# directory: ./data/cache/PathHandler #Enable data transfer metadata cache for DTOs #Articus\DataTransfer\MetadataProvider\Annotation: diff --git a/samples/server/petstore/php-mezzio-ph/application/config/data_transfer.yml b/samples/server/petstore/php-mezzio-ph/application/config/data_transfer.yml index c5174147c23..548c898fb9c 100644 --- a/samples/server/petstore/php-mezzio-ph/application/config/data_transfer.yml +++ b/samples/server/petstore/php-mezzio-ph/application/config/data_transfer.yml @@ -16,6 +16,10 @@ Articus\DataTransfer\Strategy\PluginManager: factories: Date: OpenAPIGenerator\Common\Strategy\Factory\MutableDate DateTime: OpenAPIGenerator\Common\Strategy\Factory\MutableDateTime + ObjectList: OpenAPIGenerator\Common\Strategy\Factory\NoArgObjectList + ObjectMap: OpenAPIGenerator\Common\Strategy\Factory\NoArgObjectMap + ScalarList: OpenAPIGenerator\Common\Strategy\Factory\ScalarList + ScalarMap: OpenAPIGenerator\Common\Strategy\Factory\ScalarMap Articus\DataTransfer\Validator\PluginManager: invokables: @@ -24,3 +28,7 @@ Articus\DataTransfer\Validator\PluginManager: QueryStringScalarArray: OpenAPIGenerator\Common\Validator\QueryStringScalarArray abstract_factories: - Articus\DataTransfer\Validator\Factory\Laminas + +validators: + invokables: + Count: Laminas\Validator\IsCountable diff --git a/samples/server/petstore/php-mezzio-ph/application/config/path_handler.yml b/samples/server/petstore/php-mezzio-ph/application/config/path_handler.yml index 25995b20d6f..174f6fc3d26 100644 --- a/samples/server/petstore/php-mezzio-ph/application/config/path_handler.yml +++ b/samples/server/petstore/php-mezzio-ph/application/config/path_handler.yml @@ -1,8 +1,13 @@ dependencies: factories: - Mezzio\Router\RouterInterface: Articus\PathHandler\RouteInjection\Factory + Mezzio\Router\RouterInterface: Articus\PathHandler\RouteInjectionFactory + Articus\PathHandler\MetadataProviderInterface: Articus\PathHandler\MetadataProvider\Factory\Annotation + Articus\PathHandler\Handler\PluginManager: Articus\PathHandler\Handler\Factory\PluginManager + Articus\PathHandler\Consumer\PluginManager: Articus\PathHandler\Consumer\Factory\PluginManager + Articus\PathHandler\Attribute\PluginManager: Articus\PathHandler\Attribute\Factory\PluginManager + Articus\PathHandler\Producer\PluginManager: Articus\PathHandler\Producer\Factory\PluginManager -Articus\PathHandler\RouteInjection\Factory: +Articus\PathHandler\RouteInjectionFactory: paths: '/v2': - App\Handler\Pet @@ -19,18 +24,22 @@ Articus\PathHandler\RouteInjection\Factory: - App\Handler\UserLogin - App\Handler\UserLogout - App\Handler\UserUsername - handlers: - abstract_factories: - - Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory -# consumers: -# factories: -# invokables: -# attributes: -# factories: -# invokables: -# producers: -# factories: -# invokables: + +Articus\PathHandler\Handler\PluginManager: + abstract_factories: + - Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory + +#Articus\PathHandler\Consumer\PluginManager: +# factories: +# invokables: + +#Articus\PathHandler\Attribute\PluginManager: +# factories: +# invokables: + +#Articus\PathHandler\Producer\PluginManager: +# factories: +# invokables: Laminas\ServiceManager\AbstractFactory\ConfigAbstractFactory: App\Handler\Pet: [] diff --git a/samples/server/petstore/php-mezzio-ph/composer.json b/samples/server/petstore/php-mezzio-ph/composer.json index 54f8e97226c..c98cf998302 100644 --- a/samples/server/petstore/php-mezzio-ph/composer.json +++ b/samples/server/petstore/php-mezzio-ph/composer.json @@ -5,13 +5,13 @@ "version": "1.0.0", "type": "project", "require": { - "php": "^7.2", + "php": "^7.3 || ^8.0", "ext-yaml": "^2.0", "mezzio/mezzio": "^3.2", "laminas/laminas-diactoros": "^2.1", - "articus/path-handler": "^0.6", - "articus/data-transfer": "^0.4", - "articus/openapi-generator-common": "^0.1", + "articus/path-handler": "^0.7", + "articus/data-transfer": "^0.5", + "articus/openapi-generator-common": "^0.2", "doctrine/annotations": "^1.10", "psr/simple-cache": "^1.0", "laminas/laminas-config": "^3.4", diff --git a/samples/server/petstore/php-mezzio-ph/src/App/DTO/ApiResponse.php b/samples/server/petstore/php-mezzio-ph/src/App/DTO/ApiResponse.php index a08cb2c9275..0161f75b2b2 100644 --- a/samples/server/petstore/php-mezzio-ph/src/App/DTO/ApiResponse.php +++ b/samples/server/petstore/php-mezzio-ph/src/App/DTO/ApiResponse.php @@ -16,16 +16,19 @@ class ApiResponse * @var int|null */ public $code; + /** * @DTA\Data(field="type", nullable=true) * @DTA\Validator(name="Scalar", options={"type":"string"}) * @var string|null */ public $type; + /** * @DTA\Data(field="message", nullable=true) * @DTA\Validator(name="Scalar", options={"type":"string"}) * @var string|null */ public $message; + } diff --git a/samples/server/petstore/php-mezzio-ph/src/App/DTO/Category.php b/samples/server/petstore/php-mezzio-ph/src/App/DTO/Category.php index 7b65c273d40..41a221be1cf 100644 --- a/samples/server/petstore/php-mezzio-ph/src/App/DTO/Category.php +++ b/samples/server/petstore/php-mezzio-ph/src/App/DTO/Category.php @@ -16,6 +16,7 @@ class Category * @var int|null */ public $id; + /** * @DTA\Data(field="name", nullable=true) * @DTA\Validator(name="Scalar", options={"type":"string"}) @@ -23,4 +24,5 @@ class Category * @var string|null */ public $name; + } diff --git a/samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection.php b/samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection.php new file mode 100644 index 00000000000..0e478eb4bd8 --- /dev/null +++ b/samples/server/petstore/php-mezzio-ph/src/App/DTO/Collection.php @@ -0,0 +1,16 @@ +get(Middleware\InternalServerError::class); - if (!($errorMiddleware instanceof Middleware\InternalServerError)) { - throw new \LogicException(\sprintf( - 'Invalid error middleware: expecting %s, not %s.', - Middleware\InternalServerError::class, - \is_object($errorMiddleware) ? \get_class($errorMiddleware) : \gettype($errorMiddleware) - )); - } + $errorMiddleware = self::getErrorMiddleware($container); $pipeline = new MiddlewarePipe(); $runner = new RequestHandlerRunner( $pipeline, $container->get(EmitterInterface::class), $container->get(ServerRequestInterface::class), - function(\Throwable $error) use ($errorMiddleware) : ResponseInterface + static function(\Throwable $error) use ($errorMiddleware) : ResponseInterface { return $errorMiddleware->handleError($error); } @@ -55,4 +48,9 @@ class Factory implements FactoryInterface return $application; } + + protected static function getErrorMiddleware(ContainerInterface $container): Middleware\InternalServerError + { + return $container->get(Middleware\InternalServerError::class); + } } diff --git a/samples/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByStatus.php b/samples/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByStatus.php index c1c1ce75400..917f9f767a3 100644 --- a/samples/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByStatus.php +++ b/samples/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByStatus.php @@ -31,10 +31,9 @@ class PetFindByStatus * * @throws PHException\HttpCode 501 if the method is not implemented * - * TODO check if generated return container type is valid - * @return \App\DTO\Pet[] + * @return \App\DTO\Collection19 */ - public function findPetsByStatus(ServerRequestInterface $request): array + public function findPetsByStatus(ServerRequestInterface $request): \App\DTO\Collection19 { //TODO implement method /** @var \App\DTO\FindPetsByStatusQueryData $queryData */ diff --git a/samples/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByTags.php b/samples/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByTags.php index b722a310efb..b74484da909 100644 --- a/samples/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByTags.php +++ b/samples/server/petstore/php-mezzio-ph/src/App/Handler/PetFindByTags.php @@ -31,10 +31,9 @@ class PetFindByTags * * @throws PHException\HttpCode 501 if the method is not implemented * - * TODO check if generated return container type is valid - * @return \App\DTO\Pet[] + * @return \App\DTO\Collection26 */ - public function findPetsByTags(ServerRequestInterface $request): array + public function findPetsByTags(ServerRequestInterface $request): \App\DTO\Collection26 { //TODO implement method /** @var \App\DTO\FindPetsByTagsQueryData $queryData */ diff --git a/samples/server/petstore/php-mezzio-ph/src/App/Handler/StoreInventory.php b/samples/server/petstore/php-mezzio-ph/src/App/Handler/StoreInventory.php index c1ca1be83d1..c9150110c44 100644 --- a/samples/server/petstore/php-mezzio-ph/src/App/Handler/StoreInventory.php +++ b/samples/server/petstore/php-mezzio-ph/src/App/Handler/StoreInventory.php @@ -24,10 +24,9 @@ class StoreInventory * * @throws PHException\HttpCode 501 if the method is not implemented * - * TODO check if generated return container type is valid - * @return array + * @return \App\DTO\Collection34 */ - public function getInventory(ServerRequestInterface $request): array + public function getInventory(ServerRequestInterface $request): \App\DTO\Collection34 { //TODO implement method throw new PHException\HttpCode(501, "Not implemented"); diff --git a/samples/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithArray.php b/samples/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithArray.php index a8a39215bab..8df1e8b18fd 100644 --- a/samples/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithArray.php +++ b/samples/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithArray.php @@ -20,8 +20,7 @@ class UserCreateWithArray * @PHA\Post() * TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation * @PHA\Consumer(name=PHConsumer\Json::class, mediaRange="application/json") - * TODO check if attribute is valid and can handle your container type - * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":"\App\DTO\User[]","objectAttr":"bodyData"}) + * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":\App\DTO\Collection36::class,"objectAttr":"bodyData"}) * @param ServerRequestInterface $request * * @throws PHException\HttpCode 501 if the method is not implemented @@ -29,7 +28,7 @@ class UserCreateWithArray public function createUsersWithArrayInput(ServerRequestInterface $request) { //TODO implement method - /** @var \App\DTO\User[] $bodyData */ + /** @var \App\DTO\Collection36 $bodyData */ $bodyData = $request->getAttribute("bodyData"); throw new PHException\HttpCode(501, "Not implemented"); } diff --git a/samples/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithList.php b/samples/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithList.php index b34cca7045f..dae1cc0f264 100644 --- a/samples/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithList.php +++ b/samples/server/petstore/php-mezzio-ph/src/App/Handler/UserCreateWithList.php @@ -20,8 +20,7 @@ class UserCreateWithList * @PHA\Post() * TODO check if consumer is valid, if it has correct priority and if it can be moved to class annotation * @PHA\Consumer(name=PHConsumer\Json::class, mediaRange="application/json") - * TODO check if attribute is valid and can handle your container type - * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":"\App\DTO\User[]","objectAttr":"bodyData"}) + * @PHA\Attribute(name=PHAttribute\Transfer::class, options={"type":\App\DTO\Collection36::class,"objectAttr":"bodyData"}) * @param ServerRequestInterface $request * * @throws PHException\HttpCode 501 if the method is not implemented @@ -29,7 +28,7 @@ class UserCreateWithList public function createUsersWithListInput(ServerRequestInterface $request) { //TODO implement method - /** @var \App\DTO\User[] $bodyData */ + /** @var \App\DTO\Collection36 $bodyData */ $bodyData = $request->getAttribute("bodyData"); throw new PHException\HttpCode(501, "Not implemented"); } From 071dc3413dd1227e2af41c83abc562bb309a72aa Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 21 May 2021 14:45:14 +0800 Subject: [PATCH 026/192] fix typescript node due to @types/bluebird 3.5.35 (#9533) --- .../src/main/resources/typescript-node/package.mustache | 2 +- samples/client/petstore/typescript-node/npm/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-node/package.mustache b/modules/openapi-generator/src/main/resources/typescript-node/package.mustache index ff1c5c44519..3679a80fadd 100644 --- a/modules/openapi-generator/src/main/resources/typescript-node/package.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-node/package.mustache @@ -15,7 +15,7 @@ "dependencies": { "bluebird": "^3.5.0", "request": "^2.81.0", - "@types/bluebird": "*", + "@types/bluebird": "3.5.33", "@types/request": "*", "rewire": "^3.0.2" }, diff --git a/samples/client/petstore/typescript-node/npm/package.json b/samples/client/petstore/typescript-node/npm/package.json index 0ff014f766a..2bab750c5ba 100644 --- a/samples/client/petstore/typescript-node/npm/package.json +++ b/samples/client/petstore/typescript-node/npm/package.json @@ -15,7 +15,7 @@ "dependencies": { "bluebird": "^3.5.0", "request": "^2.81.0", - "@types/bluebird": "*", + "@types/bluebird": "3.5.33", "@types/request": "*", "rewire": "^3.0.2" }, From b8c5a647e0bbd6c29138edaed5d820177687084f Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Fri, 21 May 2021 08:45:50 +0200 Subject: [PATCH 027/192] [dart][ci] Move Dart samples from CircleCI to Github actions (#9515) * [dart] Move Dart samples from CircleCI to Github actions * Fix format failing with latest Dart version * Workflow naming * Split dart samples depending on version * use fixed version to prevent flaky builds * Change branch pattern for release branches --- .github/actions/run-samples/action.yaml | 19 +++++ .github/workflows/samples-dart.yaml | 78 +++++++++++++++++++ CI/circle_parallel.sh | 13 ---- pom.xml | 59 ++++++++++---- .../petstore_client_lib_fake/pom.xml | 20 ----- .../test/model/date_serializer_test.dart | 15 +++- 6 files changed, 154 insertions(+), 50 deletions(-) create mode 100644 .github/actions/run-samples/action.yaml create mode 100644 .github/workflows/samples-dart.yaml diff --git a/.github/actions/run-samples/action.yaml b/.github/actions/run-samples/action.yaml new file mode 100644 index 00000000000..64bc7745862 --- /dev/null +++ b/.github/actions/run-samples/action.yaml @@ -0,0 +1,19 @@ +name: 'Run samples' +description: 'Runs sample integration test profile with Maven' +inputs: + name: + description: 'The Maven profile name' + required: true + goal: + description: 'Maven goal' + required: false + default: 'verify' + args: + description: 'Additional maven arguments' + required: false + default: '' +runs: + using: "composite" + steps: + - run: mvn --no-snapshot-updates --batch-mode --quiet ${{ inputs.goal }} -P${{ inputs.name }} -Dintegration-test -Dmaven.javadoc.skip=true ${{ inputs.args }} + shell: bash \ No newline at end of file diff --git a/.github/workflows/samples-dart.yaml b/.github/workflows/samples-dart.yaml new file mode 100644 index 00000000000..a1392d65e7c --- /dev/null +++ b/.github/workflows/samples-dart.yaml @@ -0,0 +1,78 @@ +name: Samples Dart + +on: + push: + branches: + - master + - '[5-9]+.[0-9]+.x' + pull_request: + branches: + - master + - '[5-9]+.[0-9]+.x' + +jobs: + tests-dart-2-10: + name: Tests Dart 2.10 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: 8 + - name: Cache maven dependencies + uses: actions/cache@v2 + env: + cache-name: maven-repository + with: + path: | + ~/.m2/repository + ~/.gradle + key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} + - name: Cache test dependencies + uses: actions/cache@v2 + env: + cache-name: pub-cache + with: + path: $PUB_CACHE + key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('samples/**/pubspec.yaml') }} + - uses: dart-lang/setup-dart@v1 + with: + sdk: 2.10.5 + - name: Run tests + uses: ./.github/actions/run-samples + with: + name: samples.dart-2.10 + + tests-dart-2-13: + name: Tests Dart 2.13 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: 8 + - name: Cache maven dependencies + uses: actions/cache@v2 + env: + cache-name: maven-repository + with: + path: | + ~/.m2/repository + ~/.gradle + key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} + - name: Cache test dependencies + uses: actions/cache@v2 + env: + cache-name: pub-cache + with: + path: $PUB_CACHE + key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('samples/**/pubspec.yaml') }} + - uses: dart-lang/setup-dart@v1 + with: + sdk: 2.13.0 + - name: Run tests + uses: ./.github/actions/run-samples + with: + name: samples.dart-2.13 diff --git a/CI/circle_parallel.sh b/CI/circle_parallel.sh index b647131c7d7..36e0c179b24 100755 --- a/CI/circle_parallel.sh +++ b/CI/circle_parallel.sh @@ -14,17 +14,6 @@ function cleanup { trap cleanup EXIT -function installDart { - # install dart2 - sudo apt-get update - sudo apt-get install apt-transport-https - sudo sh -c 'wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -' - sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list' - sudo apt-get update - sudo apt-get install dart - export PATH="$PATH:/usr/lib/dart/bin" -} - if [ "$NODE_INDEX" = "1" ]; then echo "Running node $NODE_INDEX to test 'samples.circleci' defined in pom.xml ..." java -version @@ -35,8 +24,6 @@ if [ "$NODE_INDEX" = "1" ]; then ls -l /home/circleci/.ivy2/cache elif [ "$NODE_INDEX" = "2" ]; then - installDart - # run ensure-up-to-date sample script on SNAPSHOT version only project_version=`mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout` if [[ $project_version == *"-SNAPSHOT" ]]; then diff --git a/pom.xml b/pom.xml index f5954bbd850..b968a476900 100644 --- a/pom.xml +++ b/pom.xml @@ -1418,18 +1418,40 @@ - samples/openapi3/client/petstore/dart2/petstore_client_lib - samples/openapi3/client/petstore/dart2/petstore - samples/openapi3/client/petstore/dart-dio/petstore_client_lib - samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake - samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake - samples/client/petstore/R + + samples.dart-2.13 + + + env + samples.dart-2.13 + + + + samples/openapi3/client/petstore/dart2/petstore_client_lib + samples/openapi3/client/petstore/dart2/petstore + + samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake + + + + samples.dart-2.10 + + + env + samples.dart-2.10 + + + + samples/openapi3/client/petstore/dart-dio/petstore_client_lib + samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake + + samples.ios @@ -1475,15 +1497,24 @@ samples/client/petstore/objc/core-data/SwaggerClientTests--> + + openapi-generator + + true + + !integration-test + + + + modules/openapi-generator-core + modules/openapi-generator + modules/openapi-generator-cli + modules/openapi-generator-maven-plugin + modules/openapi-generator-gradle-plugin + modules/openapi-generator-online + + - - modules/openapi-generator-core - modules/openapi-generator - modules/openapi-generator-cli - modules/openapi-generator-maven-plugin - modules/openapi-generator-gradle-plugin - modules/openapi-generator-online - target/site diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/pom.xml b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/pom.xml index 86285381f97..dec7604a53a 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/pom.xml +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/pom.xml @@ -39,26 +39,6 @@ - - format - pre-integration-test - - exec - - - dart - - format - - --output=none - . - - - pub-run-build-runner pre-integration-test diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/model/date_serializer_test.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/model/date_serializer_test.dart index acae38e3d90..9422fe8e47d 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/model/date_serializer_test.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/model/date_serializer_test.dart @@ -8,15 +8,24 @@ void main() { group(DateSerializer, () { test('serialize', () { - expect(serializer.serialize(serializers, date1), '1999-03-25'); + expect( + serializer.serialize(serializers, date1), + '1999-03-25', + ); }); test('deserialize date', () { - expect(serializer.deserialize(serializers, '1999-03-25'), date1); + expect( + serializer.deserialize(serializers, '1999-03-25'), + date1, + ); }); test('deserialize ISO', () { - expect(serializer.deserialize(serializers, '1999-03-25T12:30:55.123Z'), date1); + expect( + serializer.deserialize(serializers, '1999-03-25T12:30:55.123Z'), + date1, + ); }); }); } From 2c4e79f45c843b98ab797f8fac5e0a1859b0492a Mon Sep 17 00:00:00 2001 From: Blackclaws Date: Fri, 21 May 2021 08:49:33 +0200 Subject: [PATCH 028/192] [csharp][httpclient] Introduce FileParameter as an abstraction (#9426) * Introduce FileParameter as an abstraction * Update Samples * Add new file to samples * Fix hardcoded package name * Fix hardcoded package name, import FileParameter in Model * Remove unneccesary warning --- .../languages/CSharpNetCoreClientCodegen.java | 5 ++ .../libraries/httpclient/ApiClient.mustache | 10 ++- .../httpclient/FileParameter.mustache | 54 +++++++++++++++ .../httpclient/RequestOptions.mustache | 66 +++++++++++++++++++ .../libraries/httpclient/model.mustache | 48 ++++++++++++++ .../.openapi-generator/FILES | 1 + .../OpenAPIClient-httpclient/docs/FakeApi.md | 6 +- .../docs/FormatTest.md | 2 +- .../OpenAPIClient-httpclient/docs/PetApi.md | 12 ++-- .../src/Org.OpenAPITools/Api/FakeApi.cs | 16 ++--- .../src/Org.OpenAPITools/Api/PetApi.cs | 32 ++++----- .../src/Org.OpenAPITools/Client/ApiClient.cs | 10 ++- .../Org.OpenAPITools/Client/FileParameter.cs | 62 +++++++++++++++++ .../Org.OpenAPITools/Client/RequestOptions.cs | 4 +- .../Model/AdditionalPropertiesClass.cs | 1 + .../src/Org.OpenAPITools/Model/Animal.cs | 1 + .../src/Org.OpenAPITools/Model/ApiResponse.cs | 1 + .../src/Org.OpenAPITools/Model/Apple.cs | 1 + .../src/Org.OpenAPITools/Model/AppleReq.cs | 1 + .../Model/ArrayOfArrayOfNumberOnly.cs | 1 + .../Model/ArrayOfNumberOnly.cs | 1 + .../src/Org.OpenAPITools/Model/ArrayTest.cs | 1 + .../src/Org.OpenAPITools/Model/Banana.cs | 1 + .../src/Org.OpenAPITools/Model/BananaReq.cs | 1 + .../src/Org.OpenAPITools/Model/BasquePig.cs | 1 + .../Org.OpenAPITools/Model/Capitalization.cs | 1 + .../src/Org.OpenAPITools/Model/Cat.cs | 1 + .../src/Org.OpenAPITools/Model/CatAllOf.cs | 1 + .../src/Org.OpenAPITools/Model/Category.cs | 1 + .../src/Org.OpenAPITools/Model/ChildCat.cs | 1 + .../Org.OpenAPITools/Model/ChildCatAllOf.cs | 1 + .../src/Org.OpenAPITools/Model/ClassModel.cs | 1 + .../Model/ComplexQuadrilateral.cs | 1 + .../src/Org.OpenAPITools/Model/DanishPig.cs | 1 + .../src/Org.OpenAPITools/Model/Dog.cs | 1 + .../src/Org.OpenAPITools/Model/DogAllOf.cs | 1 + .../src/Org.OpenAPITools/Model/Drawing.cs | 1 + .../src/Org.OpenAPITools/Model/EnumArrays.cs | 1 + .../src/Org.OpenAPITools/Model/EnumClass.cs | 1 + .../src/Org.OpenAPITools/Model/EnumTest.cs | 1 + .../Model/EquilateralTriangle.cs | 1 + .../src/Org.OpenAPITools/Model/File.cs | 1 + .../Model/FileSchemaTestClass.cs | 1 + .../src/Org.OpenAPITools/Model/Foo.cs | 1 + .../src/Org.OpenAPITools/Model/FormatTest.cs | 5 +- .../src/Org.OpenAPITools/Model/Fruit.cs | 1 + .../src/Org.OpenAPITools/Model/FruitReq.cs | 1 + .../src/Org.OpenAPITools/Model/GmFruit.cs | 1 + .../Model/GrandparentAnimal.cs | 1 + .../Org.OpenAPITools/Model/HasOnlyReadOnly.cs | 1 + .../Model/HealthCheckResult.cs | 1 + .../Model/InlineResponseDefault.cs | 1 + .../Model/IsoscelesTriangle.cs | 1 + .../src/Org.OpenAPITools/Model/List.cs | 1 + .../src/Org.OpenAPITools/Model/Mammal.cs | 1 + .../src/Org.OpenAPITools/Model/MapTest.cs | 1 + ...dPropertiesAndAdditionalPropertiesClass.cs | 1 + .../Model/Model200Response.cs | 1 + .../src/Org.OpenAPITools/Model/ModelClient.cs | 1 + .../src/Org.OpenAPITools/Model/Name.cs | 1 + .../Org.OpenAPITools/Model/NullableClass.cs | 1 + .../Org.OpenAPITools/Model/NullableShape.cs | 1 + .../src/Org.OpenAPITools/Model/NumberOnly.cs | 1 + .../src/Org.OpenAPITools/Model/Order.cs | 1 + .../Org.OpenAPITools/Model/OuterComposite.cs | 1 + .../src/Org.OpenAPITools/Model/OuterEnum.cs | 1 + .../Model/OuterEnumDefaultValue.cs | 1 + .../Model/OuterEnumInteger.cs | 1 + .../Model/OuterEnumIntegerDefaultValue.cs | 1 + .../src/Org.OpenAPITools/Model/ParentPet.cs | 1 + .../src/Org.OpenAPITools/Model/Pet.cs | 1 + .../src/Org.OpenAPITools/Model/Pig.cs | 1 + .../Org.OpenAPITools/Model/Quadrilateral.cs | 1 + .../Model/QuadrilateralInterface.cs | 1 + .../Org.OpenAPITools/Model/ReadOnlyFirst.cs | 1 + .../src/Org.OpenAPITools/Model/Return.cs | 1 + .../Org.OpenAPITools/Model/ScaleneTriangle.cs | 1 + .../src/Org.OpenAPITools/Model/Shape.cs | 1 + .../Org.OpenAPITools/Model/ShapeInterface.cs | 1 + .../src/Org.OpenAPITools/Model/ShapeOrNull.cs | 1 + .../Model/SimpleQuadrilateral.cs | 1 + .../Model/SpecialModelName.cs | 1 + .../src/Org.OpenAPITools/Model/Tag.cs | 1 + .../src/Org.OpenAPITools/Model/Triangle.cs | 1 + .../Model/TriangleInterface.cs | 1 + .../src/Org.OpenAPITools/Model/User.cs | 1 + .../src/Org.OpenAPITools/Model/Whale.cs | 1 + .../src/Org.OpenAPITools/Model/Zebra.cs | 1 + 88 files changed, 356 insertions(+), 50 deletions(-) create mode 100644 modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/FileParameter.mustache create mode 100644 modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/RequestOptions.mustache create mode 100644 modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/model.mustache create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/FileParameter.cs diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java index ff90d1e30e2..356c6a895b0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java @@ -681,6 +681,11 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { binRelativePath += "vendor"; additionalProperties.put("binRelativePath", binRelativePath); + if(HTTPCLIENT.equals(getLibrary())) { + supportingFiles.add(new SupportingFile("FileParameter.mustache", clientPackageDir, "FileParameter.cs")); + typeMapping.put("file", "FileParameter"); + } + supportingFiles.add(new SupportingFile("IApiAccessor.mustache", clientPackageDir, "IApiAccessor.cs")); supportingFiles.add(new SupportingFile("Configuration.mustache", clientPackageDir, "Configuration.cs")); supportingFiles.add(new SupportingFile("ApiClient.mustache", clientPackageDir, "ApiClient.cs")); diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache index 5477cb0cc73..3703a8521d0 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache @@ -278,12 +278,10 @@ namespace {{packageName}}.Client { foreach (var fileParam in options.FileParameters) { - var fileStream = fileParam.Value as FileStream; - var fileStreamName = fileStream != null ? System.IO.Path.GetFileName(fileStream.Name) : null; - var content = new StreamContent(fileParam.Value); + var content = new StreamContent(fileParam.Value.Content); content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); multipartContent.Add(content, fileParam.Key, - fileStreamName ?? "no_file_name_provided"); + fileParam.Value.Name); } } return multipartContent; @@ -370,11 +368,11 @@ namespace {{packageName}}.Client { if (options.Data != null) { - if (options.Data is Stream s) + if (options.Data is FileParameter fp) { contentType = contentType ?? "application/octet-stream"; - var streamContent = new StreamContent(s); + var streamContent = new StreamContent(fp.Content); streamContent.Headers.ContentType = new MediaTypeHeaderValue(contentType); request.Content = streamContent; } diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/FileParameter.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/FileParameter.mustache new file mode 100644 index 00000000000..3fa243ed54f --- /dev/null +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/FileParameter.mustache @@ -0,0 +1,54 @@ +{{>partial_header}} + +using System.IO; + +namespace {{packageName}}.Client +{ + + /// + /// Represents a File passed to the API as a Parameter, allows using different backends for files + /// + public class FileParameter + { + /// + /// The filename + /// + public string Name { get; set; } = "no_name_provided"; + + /// + /// The content of the file + /// + public Stream Content { get; set; } + + /// + /// Construct a FileParameter just from the contents, will extract the filename from a filestream + /// + /// The file content + public FileParameter(Stream content) + { + if (content is FileStream fs) + { + Name = fs.Name; + } + Content = content; + } + + /// + /// Construct a FileParameter from name and content + /// + /// The filename + /// The file content + public FileParameter(string filename, Stream content) + { + Name = filename; + Content = content; + } + + /// + /// Implicit conversion of stream to file parameter. Useful for backwards compatibility. + /// + /// Stream to convert + /// FileParameter + public static implicit operator FileParameter(Stream s) => new FileParameter(s); + } +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/RequestOptions.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/RequestOptions.mustache new file mode 100644 index 00000000000..b0137d97997 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/RequestOptions.mustache @@ -0,0 +1,66 @@ +{{>partial_header}} + +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; + +namespace {{packageName}}.Client +{ + /// + /// A container for generalized request inputs. This type allows consumers to extend the request functionality + /// by abstracting away from the default (built-in) request framework (e.g. RestSharp). + /// + public class RequestOptions + { + /// + /// Parameters to be bound to path parts of the Request's URL + /// + public Dictionary PathParameters { get; set; } + + /// + /// Query parameters to be applied to the request. + /// Keys may have 1 or more values associated. + /// + public Multimap QueryParameters { get; set; } + + /// + /// Header parameters to be applied to to the request. + /// Keys may have 1 or more values associated. + /// + public Multimap HeaderParameters { get; set; } + + /// + /// Form parameters to be sent along with the request. + /// + public Dictionary FormParameters { get; set; } + + /// + /// File parameters to be sent along with the request. + /// + public Dictionary FileParameters { get; set; } + + /// + /// Cookies to be sent along with the request. + /// + public List Cookies { get; set; } + + /// + /// Any data associated with a request body. + /// + public Object Data { get; set; } + + /// + /// Constructs a new instance of + /// + public RequestOptions() + { + PathParameters = new Dictionary(); + QueryParameters = new Multimap(); + HeaderParameters = new Multimap(); + FormParameters = new Dictionary(); + FileParameters = new Dictionary(); + Cookies = new List(); + } + } +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/model.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/model.mustache new file mode 100644 index 00000000000..0de1e05e514 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/model.mustache @@ -0,0 +1,48 @@ +{{>partial_header}} + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +{{#models}} +{{#model}} +{{#discriminator}} +using JsonSubTypes; +{{/discriminator}} +{{/model}} +{{/models}} +{{#validatable}} +using System.ComponentModel.DataAnnotations; +{{/validatable}} +using FileParameter = {{packageName}}.Client.FileParameter; +using OpenAPIDateConverter = {{packageName}}.Client.OpenAPIDateConverter; +{{#useCompareNetObjects}} +using OpenAPIClientUtils = {{packageName}}.Client.ClientUtils; +{{/useCompareNetObjects}} +{{#models}} +{{#model}} +{{#oneOf}} +{{#-first}} +using System.Reflection; +{{/-first}} +{{/oneOf}} +{{#aneOf}} +{{#-first}} +using System.Reflection; +{{/-first}} +{{/aneOf}} + +namespace {{packageName}}.{{modelPackage}} +{ +{{#isEnum}}{{>modelEnum}}{{/isEnum}}{{^isEnum}}{{#oneOf}}{{#-first}}{{>modelOneOf}}{{/-first}}{{/oneOf}}{{#anyOf}}{{#-first}}{{>modelAnyOf}}{{/-first}}{{/anyOf}}{{^oneOf}}{{^anyOf}}{{>modelGeneric}}{{/anyOf}}{{/oneOf}}{{/isEnum}} +{{/model}} +{{/models}} +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES index e6b9861f332..d317e612051 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES @@ -97,6 +97,7 @@ src/Org.OpenAPITools/Client/ApiResponse.cs src/Org.OpenAPITools/Client/ClientUtils.cs src/Org.OpenAPITools/Client/Configuration.cs src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/FileParameter.cs src/Org.OpenAPITools/Client/GlobalConfiguration.cs src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs src/Org.OpenAPITools/Client/IApiAccessor.cs diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FakeApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FakeApi.md index 947fbb114ef..c5a0b767f3d 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FakeApi.md +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FakeApi.md @@ -678,7 +678,7 @@ No authorization required # **TestEndpointParameters** -> void TestEndpointParameters (decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, string _string = null, System.IO.Stream binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null, string callback = null) +> void TestEndpointParameters (decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, string _string = null, FileParameter binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null, string callback = null) Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -718,7 +718,7 @@ namespace Example var int64 = 789; // long? | None (optional) var _float = 3.4F; // float? | None (optional) var _string = _string_example; // string | None (optional) - var binary = BINARY_DATA_HERE; // System.IO.Stream | None (optional) + var binary = BINARY_DATA_HERE; // FileParameter | None (optional) var date = 2013-10-20; // DateTime? | None (optional) var dateTime = 2013-10-20T19:20:30+01:00; // DateTime? | None (optional) (default to "2010-02-01T10:20:10.111110+01:00") var password = password_example; // string | None (optional) @@ -753,7 +753,7 @@ Name | Type | Description | Notes **int64** | **long?**| None | [optional] **_float** | **float?**| None | [optional] **_string** | **string**| None | [optional] - **binary** | **System.IO.Stream****System.IO.Stream**| None | [optional] + **binary** | **FileParameter****FileParameter**| None | [optional] **date** | **DateTime?**| None | [optional] **dateTime** | **DateTime?**| None | [optional] [default to "2010-02-01T10:20:10.111110+01:00"] **password** | **string**| None | [optional] diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FormatTest.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FormatTest.md index 39a70be7ad4..505dbad52df 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FormatTest.md +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/FormatTest.md @@ -13,7 +13,7 @@ Name | Type | Description | Notes **Decimal** | **decimal** | | [optional] **String** | **string** | | [optional] **Byte** | **byte[]** | | -**Binary** | **System.IO.Stream** | | [optional] +**Binary** | [**FileParameter**](FileParameter.md) | | [optional] **Date** | **DateTime** | | **DateTime** | **DateTime** | | [optional] **Uuid** | **Guid** | | [optional] diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/PetApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/PetApi.md index 9f4ec108d05..02d0e8e111a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/PetApi.md +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/docs/PetApi.md @@ -565,7 +565,7 @@ void (empty response body) # **UploadFile** -> ApiResponse UploadFile (long petId, string additionalMetadata = null, System.IO.Stream file = null) +> ApiResponse UploadFile (long petId, string additionalMetadata = null, FileParameter file = null) uploads an image @@ -595,7 +595,7 @@ namespace Example var apiInstance = new PetApi(httpClient, config, httpClientHandler); var petId = 789; // long | ID of pet to update var additionalMetadata = additionalMetadata_example; // string | Additional data to pass to server (optional) - var file = BINARY_DATA_HERE; // System.IO.Stream | file to upload (optional) + var file = BINARY_DATA_HERE; // FileParameter | file to upload (optional) try { @@ -620,7 +620,7 @@ Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **petId** | **long**| ID of pet to update | **additionalMetadata** | **string**| Additional data to pass to server | [optional] - **file** | **System.IO.Stream****System.IO.Stream**| file to upload | [optional] + **file** | **FileParameter****FileParameter**| file to upload | [optional] ### Return type @@ -645,7 +645,7 @@ Name | Type | Description | Notes # **UploadFileWithRequiredFile** -> ApiResponse UploadFileWithRequiredFile (long petId, System.IO.Stream requiredFile, string additionalMetadata = null) +> ApiResponse UploadFileWithRequiredFile (long petId, FileParameter requiredFile, string additionalMetadata = null) uploads an image (required) @@ -674,7 +674,7 @@ namespace Example HttpClientHandler httpClientHandler = new HttpClientHandler(); var apiInstance = new PetApi(httpClient, config, httpClientHandler); var petId = 789; // long | ID of pet to update - var requiredFile = BINARY_DATA_HERE; // System.IO.Stream | file to upload + var requiredFile = BINARY_DATA_HERE; // FileParameter | file to upload var additionalMetadata = additionalMetadata_example; // string | Additional data to pass to server (optional) try @@ -699,7 +699,7 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **petId** | **long**| ID of pet to update | - **requiredFile** | **System.IO.Stream****System.IO.Stream**| file to upload | + **requiredFile** | **FileParameter****FileParameter**| file to upload | **additionalMetadata** | **string**| Additional data to pass to server | [optional] ### Return type diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeApi.cs index 66f86c619fc..5631e484c0c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeApi.cs @@ -227,7 +227,7 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional) /// - void TestEndpointParameters(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)); + void TestEndpointParameters(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), FileParameter binary = default(FileParameter), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)); /// /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -251,7 +251,7 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional) /// ApiResponse of Object(void) - ApiResponse TestEndpointParametersWithHttpInfo(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)); + ApiResponse TestEndpointParametersWithHttpInfo(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), FileParameter binary = default(FileParameter), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)); /// /// To test enum parameters /// @@ -622,7 +622,7 @@ namespace Org.OpenAPITools.Api /// None (optional) /// Cancellation Token to cancel the request. /// Task of void - System.Threading.Tasks.Task TestEndpointParametersAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + System.Threading.Tasks.Task TestEndpointParametersAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), FileParameter binary = default(FileParameter), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -647,7 +647,7 @@ namespace Org.OpenAPITools.Api /// None (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse - System.Threading.Tasks.Task> TestEndpointParametersWithHttpInfoAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + System.Threading.Tasks.Task> TestEndpointParametersWithHttpInfoAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), FileParameter binary = default(FileParameter), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// To test enum parameters /// @@ -2024,7 +2024,7 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional) /// - public void TestEndpointParameters(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)) + public void TestEndpointParameters(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), FileParameter binary = default(FileParameter), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)) { TestEndpointParametersWithHttpInfo(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, _string, binary, date, dateTime, password, callback); } @@ -2048,7 +2048,7 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional) /// ApiResponse of Object(void) - public Org.OpenAPITools.Client.ApiResponse TestEndpointParametersWithHttpInfo(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)) + public Org.OpenAPITools.Client.ApiResponse TestEndpointParametersWithHttpInfo(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), FileParameter binary = default(FileParameter), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)) { // verify the required parameter 'patternWithoutDelimiter' is set if (patternWithoutDelimiter == null) @@ -2158,7 +2158,7 @@ namespace Org.OpenAPITools.Api /// None (optional) /// Cancellation Token to cancel the request. /// Task of void - public async System.Threading.Tasks.Task TestEndpointParametersAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + public async System.Threading.Tasks.Task TestEndpointParametersAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), FileParameter binary = default(FileParameter), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { await TestEndpointParametersWithHttpInfoAsync(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, _string, binary, date, dateTime, password, callback, cancellationToken).ConfigureAwait(false); } @@ -2183,7 +2183,7 @@ namespace Org.OpenAPITools.Api /// None (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse - public async System.Threading.Tasks.Task> TestEndpointParametersWithHttpInfoAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + public async System.Threading.Tasks.Task> TestEndpointParametersWithHttpInfoAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), FileParameter binary = default(FileParameter), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { // verify the required parameter 'patternWithoutDelimiter' is set if (patternWithoutDelimiter == null) diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/PetApi.cs index 7f9a79b6bb3..1f74cee9c58 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/PetApi.cs @@ -176,7 +176,7 @@ namespace Org.OpenAPITools.Api /// Additional data to pass to server (optional) /// file to upload (optional) /// ApiResponse - ApiResponse UploadFile(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream)); + ApiResponse UploadFile(long petId, string additionalMetadata = default(string), FileParameter file = default(FileParameter)); /// /// uploads an image @@ -189,7 +189,7 @@ namespace Org.OpenAPITools.Api /// Additional data to pass to server (optional) /// file to upload (optional) /// ApiResponse of ApiResponse - ApiResponse UploadFileWithHttpInfo(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream)); + ApiResponse UploadFileWithHttpInfo(long petId, string additionalMetadata = default(string), FileParameter file = default(FileParameter)); /// /// uploads an image (required) /// @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Api /// file to upload /// Additional data to pass to server (optional) /// ApiResponse - ApiResponse UploadFileWithRequiredFile(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string)); + ApiResponse UploadFileWithRequiredFile(long petId, FileParameter requiredFile, string additionalMetadata = default(string)); /// /// uploads an image (required) @@ -211,7 +211,7 @@ namespace Org.OpenAPITools.Api /// file to upload /// Additional data to pass to server (optional) /// ApiResponse of ApiResponse - ApiResponse UploadFileWithRequiredFileWithHttpInfo(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string)); + ApiResponse UploadFileWithRequiredFileWithHttpInfo(long petId, FileParameter requiredFile, string additionalMetadata = default(string)); #endregion Synchronous Operations } @@ -400,7 +400,7 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse - System.Threading.Tasks.Task UploadFileAsync(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + System.Threading.Tasks.Task UploadFileAsync(long petId, string additionalMetadata = default(string), FileParameter file = default(FileParameter), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// uploads an image @@ -414,7 +414,7 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse (ApiResponse) - System.Threading.Tasks.Task> UploadFileWithHttpInfoAsync(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + System.Threading.Tasks.Task> UploadFileWithHttpInfoAsync(long petId, string additionalMetadata = default(string), FileParameter file = default(FileParameter), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// uploads an image (required) /// @@ -427,7 +427,7 @@ namespace Org.OpenAPITools.Api /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse - System.Threading.Tasks.Task UploadFileWithRequiredFileAsync(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + System.Threading.Tasks.Task UploadFileWithRequiredFileAsync(long petId, FileParameter requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// uploads an image (required) @@ -441,7 +441,7 @@ namespace Org.OpenAPITools.Api /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse (ApiResponse) - System.Threading.Tasks.Task> UploadFileWithRequiredFileWithHttpInfoAsync(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + System.Threading.Tasks.Task> UploadFileWithRequiredFileWithHttpInfoAsync(long petId, FileParameter requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); #endregion Asynchronous Operations } @@ -1690,7 +1690,7 @@ namespace Org.OpenAPITools.Api /// Additional data to pass to server (optional) /// file to upload (optional) /// ApiResponse - public ApiResponse UploadFile(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream)) + public ApiResponse UploadFile(long petId, string additionalMetadata = default(string), FileParameter file = default(FileParameter)) { Org.OpenAPITools.Client.ApiResponse localVarResponse = UploadFileWithHttpInfo(petId, additionalMetadata, file); return localVarResponse.Data; @@ -1704,7 +1704,7 @@ namespace Org.OpenAPITools.Api /// Additional data to pass to server (optional) /// file to upload (optional) /// ApiResponse of ApiResponse - public Org.OpenAPITools.Client.ApiResponse UploadFileWithHttpInfo(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream)) + public Org.OpenAPITools.Client.ApiResponse UploadFileWithHttpInfo(long petId, string additionalMetadata = default(string), FileParameter file = default(FileParameter)) { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); @@ -1761,7 +1761,7 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse - public async System.Threading.Tasks.Task UploadFileAsync(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + public async System.Threading.Tasks.Task UploadFileAsync(long petId, string additionalMetadata = default(string), FileParameter file = default(FileParameter), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { Org.OpenAPITools.Client.ApiResponse localVarResponse = await UploadFileWithHttpInfoAsync(petId, additionalMetadata, file, cancellationToken).ConfigureAwait(false); return localVarResponse.Data; @@ -1776,7 +1776,7 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse (ApiResponse) - public async System.Threading.Tasks.Task> UploadFileWithHttpInfoAsync(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + public async System.Threading.Tasks.Task> UploadFileWithHttpInfoAsync(long petId, string additionalMetadata = default(string), FileParameter file = default(FileParameter), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); @@ -1835,7 +1835,7 @@ namespace Org.OpenAPITools.Api /// file to upload /// Additional data to pass to server (optional) /// ApiResponse - public ApiResponse UploadFileWithRequiredFile(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string)) + public ApiResponse UploadFileWithRequiredFile(long petId, FileParameter requiredFile, string additionalMetadata = default(string)) { Org.OpenAPITools.Client.ApiResponse localVarResponse = UploadFileWithRequiredFileWithHttpInfo(petId, requiredFile, additionalMetadata); return localVarResponse.Data; @@ -1849,7 +1849,7 @@ namespace Org.OpenAPITools.Api /// file to upload /// Additional data to pass to server (optional) /// ApiResponse of ApiResponse - public Org.OpenAPITools.Client.ApiResponse UploadFileWithRequiredFileWithHttpInfo(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string)) + public Org.OpenAPITools.Client.ApiResponse UploadFileWithRequiredFileWithHttpInfo(long petId, FileParameter requiredFile, string additionalMetadata = default(string)) { // verify the required parameter 'requiredFile' is set if (requiredFile == null) @@ -1907,7 +1907,7 @@ namespace Org.OpenAPITools.Api /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse - public async System.Threading.Tasks.Task UploadFileWithRequiredFileAsync(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + public async System.Threading.Tasks.Task UploadFileWithRequiredFileAsync(long petId, FileParameter requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { Org.OpenAPITools.Client.ApiResponse localVarResponse = await UploadFileWithRequiredFileWithHttpInfoAsync(petId, requiredFile, additionalMetadata, cancellationToken).ConfigureAwait(false); return localVarResponse.Data; @@ -1922,7 +1922,7 @@ namespace Org.OpenAPITools.Api /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse (ApiResponse) - public async System.Threading.Tasks.Task> UploadFileWithRequiredFileWithHttpInfoAsync(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + public async System.Threading.Tasks.Task> UploadFileWithRequiredFileWithHttpInfoAsync(long petId, FileParameter requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { // verify the required parameter 'requiredFile' is set if (requiredFile == null) diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs index 526a4311117..fa9fe409ea0 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs @@ -277,12 +277,10 @@ namespace Org.OpenAPITools.Client { foreach (var fileParam in options.FileParameters) { - var fileStream = fileParam.Value as FileStream; - var fileStreamName = fileStream != null ? System.IO.Path.GetFileName(fileStream.Name) : null; - var content = new StreamContent(fileParam.Value); + var content = new StreamContent(fileParam.Value.Content); content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); multipartContent.Add(content, fileParam.Key, - fileStreamName ?? "no_file_name_provided"); + fileParam.Value.Name); } } return multipartContent; @@ -368,11 +366,11 @@ namespace Org.OpenAPITools.Client { if (options.Data != null) { - if (options.Data is Stream s) + if (options.Data is FileParameter fp) { contentType = contentType ?? "application/octet-stream"; - var streamContent = new StreamContent(s); + var streamContent = new StreamContent(fp.Content); streamContent.Headers.ContentType = new MediaTypeHeaderValue(contentType); request.Content = streamContent; } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/FileParameter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/FileParameter.cs new file mode 100644 index 00000000000..4a83ada8588 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/FileParameter.cs @@ -0,0 +1,62 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System.IO; + +namespace Org.OpenAPITools.Client +{ + + /// + /// Represents a File passed to the API as a Parameter, allows using different backends for files + /// + public class FileParameter + { + /// + /// The filename + /// + public string Name { get; set; } = "no_name_provided"; + + /// + /// The content of the file + /// + public Stream Content { get; set; } + + /// + /// Construct a FileParameter just from the contents, will extract the filename from a filestream + /// + /// The file content + public FileParameter(Stream content) + { + if (content is FileStream fs) + { + Name = fs.Name; + } + Content = content; + } + + /// + /// Construct a FileParameter from name and content + /// + /// The filename + /// The file content + public FileParameter(string filename, Stream content) + { + Name = filename; + Content = content; + } + + /// + /// Implicit conversion of stream to file parameter. Useful for backwards compatibility. + /// + /// Stream to convert + /// FileParameter + public static implicit operator FileParameter(Stream s) => new FileParameter(s); + } +} \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RequestOptions.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RequestOptions.cs index d8da585db9c..9c0a9a9f968 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RequestOptions.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RequestOptions.cs @@ -46,7 +46,7 @@ namespace Org.OpenAPITools.Client /// /// File parameters to be sent along with the request. /// - public Dictionary FileParameters { get; set; } + public Dictionary FileParameters { get; set; } /// /// Cookies to be sent along with the request. @@ -67,7 +67,7 @@ namespace Org.OpenAPITools.Client QueryParameters = new Multimap(); HeaderParameters = new Multimap(); FormParameters = new Dictionary(); - FileParameters = new Dictionary(); + FileParameters = new Dictionary(); Cookies = new List(); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs index 5f212ec734f..5c88c5a5ce9 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Animal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Animal.cs index 95c79122ad7..c39799127da 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Animal.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Animal.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ApiResponse.cs index c9a0a78efa7..5a990e9f881 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ApiResponse.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ApiResponse.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Apple.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Apple.cs index b414d3021a6..d52db06ca2e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Apple.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Apple.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AppleReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AppleReq.cs index a1203358492..3354d6a5932 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AppleReq.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AppleReq.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs index bf2c8663ff6..52f424010d5 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs index 09a9bbb8850..da6a1f50200 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayTest.cs index 4406ffb33ea..3b9b986b9ae 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayTest.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ArrayTest.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Banana.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Banana.cs index a7513bb453a..630ae7ecf0d 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Banana.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Banana.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BananaReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BananaReq.cs index 4a52e918a46..0a22d500b13 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BananaReq.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BananaReq.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BasquePig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BasquePig.cs index 5c6f9a0e83d..ade2a65ef24 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BasquePig.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/BasquePig.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Capitalization.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Capitalization.cs index a4ab27bd898..1ca2387e23c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Capitalization.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Capitalization.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Cat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Cat.cs index 3fd19648bb9..e62e22180fe 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Cat.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Cat.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/CatAllOf.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/CatAllOf.cs index 8d61cf77b64..c47a05d16c2 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/CatAllOf.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/CatAllOf.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Category.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Category.cs index 581a23ef2a5..35dd2674695 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Category.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Category.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCat.cs index e883d3d20bb..66e6c4ec0ee 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCat.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCat.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCatAllOf.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCatAllOf.cs index 36268a8093a..5c28c73530c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCatAllOf.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ChildCatAllOf.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ClassModel.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ClassModel.cs index bb2121cd517..52cedf0979d 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ClassModel.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ClassModel.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs index 78f3c6c03e3..cccb856a650 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DanishPig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DanishPig.cs index dd2de1d038a..68bf604b95f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DanishPig.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DanishPig.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Dog.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Dog.cs index 1ff9ab1624d..5abe5bc73b3 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Dog.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Dog.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DogAllOf.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DogAllOf.cs index cd2f1a0eeec..b33fdf12c68 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DogAllOf.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/DogAllOf.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Drawing.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Drawing.cs index 28e2ea55693..7240327f31e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Drawing.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Drawing.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumArrays.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumArrays.cs index be9b0c5e801..ca4515c95da 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumArrays.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumArrays.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumClass.cs index 48b3d7d0e7e..324fb5fba89 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumClass.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumTest.cs index c9c56e18386..a5135a7f39a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumTest.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EnumTest.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EquilateralTriangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EquilateralTriangle.cs index ed443f68cf7..751b3b8a99a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EquilateralTriangle.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/EquilateralTriangle.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/File.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/File.cs index af4a38ae023..81bd9c7fbef 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/File.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/File.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs index cc6b3e34c5d..1195e665650 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Foo.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Foo.cs index 83637468119..b1fa5a8fa43 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Foo.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Foo.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FormatTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FormatTest.cs index 9e7466bb502..c2dd5cc4d71 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FormatTest.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FormatTest.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; @@ -59,7 +60,7 @@ namespace Org.OpenAPITools.Model /// password (required). /// A string that is a 10 digit number. Can have leading zeros.. /// A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.. - public FormatTest(int integer = default(int), int int32 = default(int), long int64 = default(long), decimal number = default(decimal), float _float = default(float), double _double = default(double), decimal _decimal = default(decimal), string _string = default(string), byte[] _byte = default(byte[]), System.IO.Stream binary = default(System.IO.Stream), DateTime date = default(DateTime), DateTime dateTime = default(DateTime), Guid uuid = default(Guid), string password = default(string), string patternWithDigits = default(string), string patternWithDigitsAndDelimiter = default(string)) + public FormatTest(int integer = default(int), int int32 = default(int), long int64 = default(long), decimal number = default(decimal), float _float = default(float), double _double = default(double), decimal _decimal = default(decimal), string _string = default(string), byte[] _byte = default(byte[]), FileParameter binary = default(FileParameter), DateTime date = default(DateTime), DateTime dateTime = default(DateTime), Guid uuid = default(Guid), string password = default(string), string patternWithDigits = default(string), string patternWithDigitsAndDelimiter = default(string)) { this.Number = number; // to ensure "_byte" is required (not null) @@ -140,7 +141,7 @@ namespace Org.OpenAPITools.Model /// Gets or Sets Binary /// [DataMember(Name = "binary", EmitDefaultValue = false)] - public System.IO.Stream Binary { get; set; } + public FileParameter Binary { get; set; } /// /// Gets or Sets Date diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Fruit.cs index 132be5b4d3b..40a654afced 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Fruit.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; using System.Reflection; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FruitReq.cs index 380896933df..170960035f4 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FruitReq.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; using System.Reflection; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GmFruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GmFruit.cs index c168aa41d4c..4aef7618a37 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GmFruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GmFruit.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GrandparentAnimal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GrandparentAnimal.cs index 9352d27022f..129aae28554 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GrandparentAnimal.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GrandparentAnimal.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs index 3a2c3d26a92..84c369eb478 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HealthCheckResult.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HealthCheckResult.cs index 1cd90560cbe..e6b4399e926 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HealthCheckResult.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HealthCheckResult.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/InlineResponseDefault.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/InlineResponseDefault.cs index 5f4b24acafa..0352d11ac24 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/InlineResponseDefault.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/InlineResponseDefault.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs index 46963173f71..a7416acf77b 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/List.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/List.cs index ecf4e8ff00e..10cd9420a74 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/List.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/List.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Mammal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Mammal.cs index 2e847a10eb6..55f278a25ac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Mammal.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Mammal.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; using System.Reflection; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MapTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MapTest.cs index b88cfef72c1..76f2c995a93 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MapTest.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MapTest.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs index dc3d45a080a..88d8e6493d9 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Model200Response.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Model200Response.cs index b1e76d25081..50eb434c96d 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Model200Response.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Model200Response.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ModelClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ModelClient.cs index 4ee431a9b2f..744bda61564 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ModelClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ModelClient.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Name.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Name.cs index a6a01dd4ed3..25cd5ddb635 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Name.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Name.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableClass.cs index 4ceaab61bc6..f3fdf07243c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableClass.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableShape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableShape.cs index 80339ebf79b..b2be225d54c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableShape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableShape.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; using System.Reflection; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NumberOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NumberOnly.cs index e9b006094cf..3932b5404ee 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NumberOnly.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NumberOnly.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Order.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Order.cs index 4f327640915..d7a06f4eef8 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Order.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Order.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterComposite.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterComposite.cs index 1e4e03993e0..c9d3dd0b595 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterComposite.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterComposite.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnum.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnum.cs index 2aa496a2e07..f3ee68510aa 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnum.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnum.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs index dd79c7010d6..60fb98c58dc 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumInteger.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumInteger.cs index 44dc91c700a..8624155f745 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumInteger.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumInteger.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs index b927507cf97..5d6d21bf800 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ParentPet.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ParentPet.cs index a205b59b6d0..c2c91753d7c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ParentPet.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ParentPet.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pet.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pet.cs index db3cdd72606..88c2fb08970 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pet.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pet.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pig.cs index d8605861e63..b1c57219d9f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pig.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pig.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; using System.Reflection; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Quadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Quadrilateral.cs index 17463ca09a4..028b84f0752 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Quadrilateral.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Quadrilateral.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; using System.Reflection; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs index e7727cf856c..555fb636825 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs index 4ab8f7d5c6a..99ad2a8307c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Return.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Return.cs index 75e7f1f2530..18802e2b7f1 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Return.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Return.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ScaleneTriangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ScaleneTriangle.cs index c539590907c..527bcfab54c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ScaleneTriangle.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ScaleneTriangle.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Shape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Shape.cs index e75e0e8b167..7186154a961 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Shape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Shape.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; using System.Reflection; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeInterface.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeInterface.cs index 051100b4e6c..6d2208e202f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeInterface.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeInterface.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeOrNull.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeOrNull.cs index 7471bafb379..eb9191dbc4d 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeOrNull.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeOrNull.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; using System.Reflection; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs index 5280a0c308a..33787f755a7 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SpecialModelName.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SpecialModelName.cs index 26861d98d34..1023ae9a402 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SpecialModelName.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/SpecialModelName.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Tag.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Tag.cs index aba43e338be..dce80a7cbc3 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Tag.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Tag.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Triangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Triangle.cs index cccaa79a8ff..ba1fd6d00ec 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Triangle.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Triangle.cs @@ -22,6 +22,7 @@ using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using JsonSubTypes; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; using System.Reflection; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/TriangleInterface.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/TriangleInterface.cs index 4b7274465ce..66f49d7c2de 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/TriangleInterface.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/TriangleInterface.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/User.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/User.cs index ea24f093e14..532f743af53 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/User.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/User.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Whale.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Whale.cs index 80fbf9c368c..2abe262ebbd 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Whale.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Whale.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Zebra.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Zebra.cs index cfa92d1b708..91dce88b923 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Zebra.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Zebra.cs @@ -21,6 +21,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; From 696bcb3e856d5573902f2709b40113dd78ea7912 Mon Sep 17 00:00:00 2001 From: Blackclaws Date: Fri, 21 May 2021 08:50:42 +0200 Subject: [PATCH 029/192] [csharp][httpclient] Remove noncompliant post behaviour (#9427) * Remove behaviour that does not 1:1 represent spec * Update samples --- .../csharp-netcore/libraries/httpclient/ApiClient.mustache | 6 +----- .../src/Org.OpenAPITools/Client/ApiClient.cs | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache index 3703a8521d0..fe83457311c 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache @@ -313,11 +313,7 @@ namespace {{packageName}}.Client builder.AddPathParameters(options.PathParameters); - // In case of POST or PUT pass query parameters in request body - if (method != HttpMethod.Post && method != HttpMethod.Put) - { - builder.AddQueryParameters(options.QueryParameters); - } + builder.AddQueryParameters(options.QueryParameters); HttpRequestMessage request = new HttpRequestMessage(method, builder.GetFullUri()); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs index fa9fe409ea0..69d9bb714e3 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs @@ -312,11 +312,7 @@ namespace Org.OpenAPITools.Client builder.AddPathParameters(options.PathParameters); - // In case of POST or PUT pass query parameters in request body - if (method != HttpMethod.Post && method != HttpMethod.Put) - { - builder.AddQueryParameters(options.QueryParameters); - } + builder.AddQueryParameters(options.QueryParameters); HttpRequestMessage request = new HttpRequestMessage(method, builder.GetFullUri()); From 9eb9c30a927b0d03b867490e841350e852034b54 Mon Sep 17 00:00:00 2001 From: Rinish Sam <36656347+CaptainIRS@users.noreply.github.com> Date: Sun, 23 May 2021 08:57:07 +0530 Subject: [PATCH 030/192] [dart][dart-dio] Fix gitignore comment style (#9554) * Fix gitignore comment style in templates * Update samples --- .../src/main/resources/dart-dio/gitignore.mustache | 14 +++++++++----- .../dart/libraries/dio/gitignore.mustache | 14 +++++++++----- .../petstore_client_lib_fake/.gitignore | 14 +++++++++----- .../dart-dio/petstore_client_lib/.gitignore | 14 +++++++++----- .../dart-dio/petstore_client_lib_fake/.gitignore | 14 +++++++++----- 5 files changed, 45 insertions(+), 25 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/dart-dio/gitignore.mustache b/modules/openapi-generator/src/main/resources/dart-dio/gitignore.mustache index 8092a49d515..6d2ac22c0b4 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/gitignore.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/gitignore.mustache @@ -30,8 +30,12 @@ pubspec.lock # Don’t commit files and directories created by other development environments. # For example, if your development environment creates any of the following files, # consider putting them in a global ignore file: -*.iml // IntelliJ -*.ipr // IntelliJ -*.iws // IntelliJ -.idea/ // IntelliJ -.DS_Store // Mac + +# IntelliJ +*.iml +*.ipr +*.iws +.idea/ + +# Mac +.DS_Store diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/gitignore.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/gitignore.mustache index 8092a49d515..6d2ac22c0b4 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/gitignore.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/gitignore.mustache @@ -30,8 +30,12 @@ pubspec.lock # Don’t commit files and directories created by other development environments. # For example, if your development environment creates any of the following files, # consider putting them in a global ignore file: -*.iml // IntelliJ -*.ipr // IntelliJ -*.iws // IntelliJ -.idea/ // IntelliJ -.DS_Store // Mac + +# IntelliJ +*.iml +*.ipr +*.iws +.idea/ + +# Mac +.DS_Store diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.gitignore b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.gitignore index 8092a49d515..6d2ac22c0b4 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.gitignore +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.gitignore @@ -30,8 +30,12 @@ pubspec.lock # Don’t commit files and directories created by other development environments. # For example, if your development environment creates any of the following files, # consider putting them in a global ignore file: -*.iml // IntelliJ -*.ipr // IntelliJ -*.iws // IntelliJ -.idea/ // IntelliJ -.DS_Store // Mac + +# IntelliJ +*.iml +*.ipr +*.iws +.idea/ + +# Mac +.DS_Store diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.gitignore b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.gitignore index 8092a49d515..6d2ac22c0b4 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.gitignore +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.gitignore @@ -30,8 +30,12 @@ pubspec.lock # Don’t commit files and directories created by other development environments. # For example, if your development environment creates any of the following files, # consider putting them in a global ignore file: -*.iml // IntelliJ -*.ipr // IntelliJ -*.iws // IntelliJ -.idea/ // IntelliJ -.DS_Store // Mac + +# IntelliJ +*.iml +*.ipr +*.iws +.idea/ + +# Mac +.DS_Store diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.gitignore b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.gitignore index 8092a49d515..6d2ac22c0b4 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.gitignore +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.gitignore @@ -30,8 +30,12 @@ pubspec.lock # Don’t commit files and directories created by other development environments. # For example, if your development environment creates any of the following files, # consider putting them in a global ignore file: -*.iml // IntelliJ -*.ipr // IntelliJ -*.iws // IntelliJ -.idea/ // IntelliJ -.DS_Store // Mac + +# IntelliJ +*.iml +*.ipr +*.iws +.idea/ + +# Mac +.DS_Store From b1cba96627e07d4b1bbe49f6926a464c90efb4aa Mon Sep 17 00:00:00 2001 From: agilob Date: Sun, 23 May 2021 14:59:51 +0000 Subject: [PATCH 031/192] Revert "[Java][Spring] Fix for #8659 - Different in-parameter types generated for api and delegate for files (#9331)" (#9555) This reverts commit b9a1c8f016711307b9c718dbbdf60a137372c7af. --- .../codegen/languages/SpringCodegen.java | 4 ++-- .../Java/libraries/resttemplate/api.mustache | 4 ++-- .../Java/libraries/resttemplate/api_test.mustache | 2 +- .../resources/JavaSpring/homeController.mustache | 2 +- .../codegen/java/JavaClientCodegenTest.java | 12 ++++++------ .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../openapitools/configuration/HomeController.java | 2 +- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- .../org/openapitools/virtualan/model/FormatTest.java | 8 ++++---- .../main/java/org/openapitools/model/FormatTest.java | 8 ++++---- 24 files changed, 85 insertions(+), 85 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index 4c4f0e19496..058acbed956 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -336,8 +336,8 @@ public class SpringCodegen extends AbstractJavaCodegen } additionalProperties.put(UNHANDLED_EXCEPTION_HANDLING, this.isUnhandledException()); - typeMapping.put("file", "org.springframework.web.multipart.MultipartFile"); - importMapping.put("org.springframework.web.multipart.MultipartFile", "org.springframework.web.multipart.MultipartFile"); + typeMapping.put("file", "org.springframework.core.io.Resource"); + importMapping.put("org.springframework.core.io.Resource", "org.springframework.core.io.Resource"); if (useOptional) { writePropertyBack(USE_OPTIONAL, useOptional); diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/api.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/api.mustache index dce5d647267..006e6cf8f93 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/api.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/api.mustache @@ -71,7 +71,7 @@ public class {{classname}} { {{#isDeprecated}} @Deprecated {{/isDeprecated}} - public {{#returnType}}{{{returnType}}} {{/returnType}}{{^returnType}}void {{/returnType}}{{operationId}}({{#allParams}}{{#isFile}}{{#useAbstractionForFiles}}{{#collectionFormat}}java.util.Collection{{/collectionFormat}}{{^collectionFormat}}org.springframework.web.multipart.MultipartFile{{/collectionFormat}}{{/useAbstractionForFiles}}{{^useAbstractionForFiles}}{{{dataType}}}{{/useAbstractionForFiles}}{{/isFile}}{{^isFile}}{{{dataType}}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) throws RestClientException { + public {{#returnType}}{{{returnType}}} {{/returnType}}{{^returnType}}void {{/returnType}}{{operationId}}({{#allParams}}{{#isFile}}{{#useAbstractionForFiles}}{{#collectionFormat}}java.util.Collection{{/collectionFormat}}{{^collectionFormat}}org.springframework.core.io.Resource{{/collectionFormat}}{{/useAbstractionForFiles}}{{^useAbstractionForFiles}}{{{dataType}}}{{/useAbstractionForFiles}}{{/isFile}}{{^isFile}}{{{dataType}}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) throws RestClientException { {{#returnType}} return {{operationId}}WithHttpInfo({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).getBody(); {{/returnType}} @@ -99,7 +99,7 @@ public class {{classname}} { {{#isDeprecated}} @Deprecated {{/isDeprecated}} - public ResponseEntity<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {{operationId}}WithHttpInfo({{#allParams}}{{#isFile}}{{#useAbstractionForFiles}}{{#collectionFormat}}java.util.Collection{{/collectionFormat}}{{^collectionFormat}}org.springframework.web.multipart.MultipartFile{{/collectionFormat}}{{/useAbstractionForFiles}}{{^useAbstractionForFiles}}{{{dataType}}}{{/useAbstractionForFiles}}{{/isFile}}{{^isFile}}{{{dataType}}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) throws RestClientException { + public ResponseEntity<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {{operationId}}WithHttpInfo({{#allParams}}{{#isFile}}{{#useAbstractionForFiles}}{{#collectionFormat}}java.util.Collection{{/collectionFormat}}{{^collectionFormat}}org.springframework.core.io.Resource{{/collectionFormat}}{{/useAbstractionForFiles}}{{^useAbstractionForFiles}}{{{dataType}}}{{/useAbstractionForFiles}}{{/isFile}}{{^isFile}}{{{dataType}}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) throws RestClientException { Object postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; {{#allParams}}{{#required}} // verify the required parameter '{{paramName}}' is set diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/api_test.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/api_test.mustache index 56d89a842d4..119194543c3 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/api_test.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/api_test.mustache @@ -34,7 +34,7 @@ public class {{classname}}Test { @Test public void {{operationId}}Test() { {{#allParams}} - {{#isFile}}{{#useAbstractionForFiles}}{{#collectionFormat}}java.util.Collection{{/collectionFormat}}{{^collectionFormat}}org.springframework.web.multipart.MultipartFile{{/collectionFormat}}{{/useAbstractionForFiles}}{{^useAbstractionForFiles}}{{{dataType}}}{{/useAbstractionForFiles}}{{/isFile}}{{^isFile}}{{{dataType}}}{{/isFile}} {{paramName}} = null; + {{#isFile}}{{#useAbstractionForFiles}}{{#collectionFormat}}java.util.Collection{{/collectionFormat}}{{^collectionFormat}}org.springframework.core.io.Resource{{/collectionFormat}}{{/useAbstractionForFiles}}{{^useAbstractionForFiles}}{{{dataType}}}{{/useAbstractionForFiles}}{{/isFile}}{{^isFile}}{{{dataType}}}{{/isFile}} {{paramName}} = null; {{/allParams}} {{#returnType}}{{{returnType}}} response = {{/returnType}}api.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}); diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/homeController.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/homeController.mustache index 2b244c540bc..f909a15b37d 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/homeController.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/homeController.mustache @@ -4,7 +4,7 @@ package {{configPackage}}; import com.fasterxml.jackson.dataformat.yaml.YAMLMapper; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; -import org.springframework.web.multipart.MultipartFile; +import org.springframework.core.io.Resource; {{/useSpringfox}} import org.springframework.stereotype.Controller; {{^useSpringfox}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index 3a7636d631c..3ead6f31f9e 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -1028,18 +1028,18 @@ public class JavaClientCodegenTest { Path defaultApi = Paths.get(output + "/src/main/java/xyz/abcdef/api/MultipartApi.java"); TestUtils.assertFileContains(defaultApi, //multiple files - "multipartArray(java.util.Collection files)", - "multipartArrayWithHttpInfo(java.util.Collection files)", + "multipartArray(java.util.Collection files)", + "multipartArrayWithHttpInfo(java.util.Collection files)", "formParams.addAll(\"files\", files.stream().collect(Collectors.toList()));", //mixed - "multipartMixed(org.springframework.web.multipart.MultipartFile file, MultipartMixedMarker marker)", - "multipartMixedWithHttpInfo(org.springframework.web.multipart.MultipartFile file, MultipartMixedMarker marker)", + "multipartMixed(org.springframework.core.io.Resource file, MultipartMixedMarker marker)", + "multipartMixedWithHttpInfo(org.springframework.core.io.Resource file, MultipartMixedMarker marker)", "formParams.add(\"file\", file);", //single file - "multipartSingle(org.springframework.web.multipart.MultipartFile file)", - "multipartSingleWithHttpInfo(org.springframework.web.multipart.MultipartFile file)", + "multipartSingle(org.springframework.core.io.Resource file)", + "multipartSingleWithHttpInfo(org.springframework.core.io.Resource file)", "formParams.add(\"file\", file);" ); } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/FormatTest.java index 72f64c2b370..e894f561fc6 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/FormatTest.java index 9efca6d654b..04e164b1c52 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/model/FormatTest.java index 06978db9b9e..0962957d79f 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/model/FormatTest.java @@ -43,7 +43,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -235,7 +235,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -248,11 +248,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/model/FormatTest.java index 72f64c2b370..e894f561fc6 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/FormatTest.java index 2a1722c3190..80ea59cef11 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/FormatTest.java @@ -46,7 +46,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -238,7 +238,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -251,11 +251,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/model/FormatTest.java index 99f755655a9..60247deff4c 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/model/FormatTest.java @@ -43,7 +43,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -235,7 +235,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -248,11 +248,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/FormatTest.java index 72f64c2b370..e894f561fc6 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/FormatTest.java index 72f64c2b370..e894f561fc6 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/FormatTest.java index 72f64c2b370..e894f561fc6 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/FormatTest.java index 72f64c2b370..e894f561fc6 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/configuration/HomeController.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/configuration/HomeController.java index 5e4aeb0ea86..b1e5bfc21ee 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/configuration/HomeController.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/configuration/HomeController.java @@ -3,7 +3,7 @@ package org.openapitools.configuration; import com.fasterxml.jackson.dataformat.yaml.YAMLMapper; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; -import org.springframework.web.multipart.MultipartFile; +import org.springframework.core.io.Resource; import org.springframework.stereotype.Controller; import org.springframework.util.StreamUtils; import org.springframework.web.bind.annotation.GetMapping; diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/FormatTest.java index 72f64c2b370..e894f561fc6 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/model/FormatTest.java index 354373c3d6c..dedb11fe758 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/model/FormatTest.java index 72f64c2b370..e894f561fc6 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/model/FormatTest.java index 354373c3d6c..dedb11fe758 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/model/FormatTest.java index 72f64c2b370..e894f561fc6 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/FormatTest.java index 72f64c2b370..e894f561fc6 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/model/FormatTest.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/model/FormatTest.java index 07241a089c8..d58e787c368 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/model/FormatTest.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/FormatTest.java index 72f64c2b370..e894f561fc6 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/FormatTest.java @@ -44,7 +44,7 @@ public class FormatTest { private byte[] _byte; @JsonProperty("binary") - private org.springframework.web.multipart.MultipartFile binary; + private org.springframework.core.io.Resource binary; @JsonProperty("date") @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE) @@ -236,7 +236,7 @@ public class FormatTest { this._byte = _byte; } - public FormatTest binary(org.springframework.web.multipart.MultipartFile binary) { + public FormatTest binary(org.springframework.core.io.Resource binary) { this.binary = binary; return this; } @@ -249,11 +249,11 @@ public class FormatTest { @Valid - public org.springframework.web.multipart.MultipartFile getBinary() { + public org.springframework.core.io.Resource getBinary() { return binary; } - public void setBinary(org.springframework.web.multipart.MultipartFile binary) { + public void setBinary(org.springframework.core.io.Resource binary) { this.binary = binary; } From 7c152daa482be272ab949ae48686288b0cc5a4a0 Mon Sep 17 00:00:00 2001 From: Julian G <23147553+JulianGmp@users.noreply.github.com> Date: Sun, 23 May 2021 17:02:22 +0200 Subject: [PATCH 032/192] fix missing default values for string types (#9541) --- .../codegen/languages/CppPistacheServerCodegen.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java index 3064af52c20..cb21ea5a6de 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java @@ -401,7 +401,11 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen { } else if (!StringUtils.isEmpty(p.get$ref())) { // model return toModelName(ModelUtils.getSimpleRef(p.get$ref())) + "()"; } else if (ModelUtils.isStringSchema(p)) { - return "\"\""; + if (p.getDefault() == null) { + return "\"\""; + } else { + return "\"" + p.getDefault().toString() + "\""; + } } return ""; From 1e92469b9f9f56acc8c2d472a4ed27475e439517 Mon Sep 17 00:00:00 2001 From: Yuriy Belenko Date: Mon, 24 May 2021 05:43:18 +0300 Subject: [PATCH 033/192] Decouple Slim4 codegen from deprecated Slim3 (#9208) It was a mistake to extend Slim4 from Slim3 codegen. When I need to fix something in Slim4 I have to overwrite code from Slim3 somehow and it's not always possible. It's even more important that Slim3 codegen shouldn't be touched as soon as it's deprecated long time ago. --- .../languages/PhpSlim4ServerCodegen.java | 208 +++++++++++++++++- 1 file changed, 207 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java index d45bf289e7f..9105a4fe8de 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java @@ -16,6 +16,14 @@ package org.openapitools.codegen.languages; +import io.swagger.v3.oas.models.Operation; +import io.swagger.v3.oas.models.security.SecurityScheme; +import io.swagger.v3.oas.models.servers.Server; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; +import org.openapitools.codegen.CodegenType; +import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.CodegenSecurity; import org.openapitools.codegen.CliOption; import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.SupportingFile; @@ -26,12 +34,22 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.*; -public class PhpSlim4ServerCodegen extends PhpSlimServerCodegen { +import static org.openapitools.codegen.utils.StringUtils.camelize; + +public class PhpSlim4ServerCodegen extends AbstractPhpCodegen { private final Logger LOGGER = LoggerFactory.getLogger(PhpSlim4ServerCodegen.class); + public static final String USER_CLASSNAME_KEY = "userClassname"; public static final String PSR7_IMPLEMENTATION = "psr7Implementation"; + protected String groupId = "org.openapitools"; + protected String artifactId = "openapi-server"; + protected String authDirName = "Auth"; + protected String authPackage = ""; protected String psr7Implementation = "slim-psr7"; protected String interfacesDirName = "Interfaces"; protected String interfacesPackage = ""; @@ -40,6 +58,18 @@ public class PhpSlim4ServerCodegen extends PhpSlimServerCodegen { super(); modifyFeatureSet(features -> features + .includeDocumentationFeatures(DocumentationFeature.Readme) + .wireFormatFeatures(EnumSet.of(WireFormatFeature.JSON, WireFormatFeature.XML)) + .securityFeatures(EnumSet.noneOf(SecurityFeature.class)) + .excludeGlobalFeatures( + GlobalFeature.XMLStructureDefinitions, + GlobalFeature.Callbacks, + GlobalFeature.LinkObjects, + GlobalFeature.ParameterStyling + ) + .excludeSchemaSupportFeatures( + SchemaSupportFeature.Polymorphism + ) .includeClientModificationFeatures(ClientModificationFeature.MockServer) ); @@ -47,10 +77,29 @@ public class PhpSlim4ServerCodegen extends PhpSlimServerCodegen { .stability(Stability.STABLE) .build(); + // clear import mapping (from default generator) as slim does not use it + // at the moment + importMapping.clear(); + + variableNamingConvention = "camelCase"; + artifactVersion = "1.0.0"; + setInvokerPackage("OpenAPIServer"); + apiPackage = invokerPackage + "\\" + apiDirName; + modelPackage = invokerPackage + "\\" + modelDirName; + authPackage = invokerPackage + "\\" + authDirName; interfacesPackage = invokerPackage + "\\" + interfacesDirName; outputFolder = "generated-code" + File.separator + "slim4"; + + modelTestTemplateFiles.put("model_test.mustache", ".php"); + // no doc files + modelDocTemplateFiles.clear(); + apiDocTemplateFiles.clear(); + embeddedTemplateDir = templateDir = "php-slim4-server"; + additionalProperties.put(CodegenConstants.GROUP_ID, groupId); + additionalProperties.put(CodegenConstants.ARTIFACT_ID, artifactId); + // override cliOptions from AbstractPhpCodegen updateOption(AbstractPhpCodegen.VARIABLE_NAMING_CONVENTION, "camelCase"); @@ -68,6 +117,11 @@ public class PhpSlim4ServerCodegen extends PhpSlimServerCodegen { cliOptions.add(psr7Option); } + @Override + public CodegenType getTag() { + return CodegenType.SERVER; + } + @Override public String getName() { return "php-slim4"; @@ -78,15 +132,39 @@ public class PhpSlim4ServerCodegen extends PhpSlimServerCodegen { return "Generates a PHP Slim 4 Framework server library(with Mock server)."; } + @Override + public String apiFileFolder() { + if (apiPackage.startsWith(invokerPackage + "\\")) { + // need to strip out invokerPackage from path + return (outputFolder + File.separator + toSrcPath(StringUtils.removeStart(apiPackage, invokerPackage + "\\"), srcBasePath)); + } + return (outputFolder + File.separator + toSrcPath(apiPackage, srcBasePath)); + } + + @Override + public String modelFileFolder() { + if (modelPackage.startsWith(invokerPackage + "\\")) { + // need to strip out invokerPackage from path + return (outputFolder + File.separator + toSrcPath(StringUtils.removeStart(modelPackage, invokerPackage + "\\"), srcBasePath)); + } + return (outputFolder + File.separator + toSrcPath(modelPackage, srcBasePath)); + } + @Override public void processOpts() { super.processOpts(); if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { + // Update the invokerPackage for the default authPackage + authPackage = invokerPackage + "\\" + authDirName; // Update interfacesPackage interfacesPackage = invokerPackage + "\\" + interfacesDirName; } + // make auth src path available in mustache template + additionalProperties.put("authPackage", authPackage); + additionalProperties.put("authSrcPath", "./" + toSrcPath(authPackage, srcBasePath)); + // same for interfaces package additionalProperties.put("interfacesPackage", interfacesPackage); additionalProperties.put("interfacesSrcPath", "./" + toSrcPath(interfacesPackage, srcBasePath)); @@ -121,6 +199,14 @@ public class PhpSlim4ServerCodegen extends PhpSlimServerCodegen { additionalProperties.put("isSlimPsr7", Boolean.TRUE); } + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); + supportingFiles.add(new SupportingFile("composer.mustache", "", "composer.json")); + supportingFiles.add(new SupportingFile("index.mustache", "", "index.php")); + supportingFiles.add(new SupportingFile(".htaccess", "", ".htaccess")); + supportingFiles.add(new SupportingFile("SlimRouter.mustache", toSrcPath(invokerPackage, srcBasePath), "SlimRouter.php")); + supportingFiles.add(new SupportingFile("phpunit.xml.mustache", "", "phpunit.xml.dist")); + supportingFiles.add(new SupportingFile("phpcs.xml.mustache", "", "phpcs.xml.dist")); + // Slim 4 doesn't parse JSON body anymore we need to add suggested middleware // ref: https://www.slimframework.com/docs/v4/objects/request.html#the-request-body supportingFiles.add(new SupportingFile("htaccess_deny_all", "config", ".htaccess")); @@ -131,6 +217,126 @@ public class PhpSlim4ServerCodegen extends PhpSlimServerCodegen { supportingFiles.add(new SupportingFile("base_model_test.mustache", toSrcPath(invokerPackage, testBasePath), "BaseModelTest.php")); } + @Override + public Map postProcessOperationsWithModels(Map objs, List allModels) { + Map operations = (Map) objs.get("operations"); + List operationList = (List) operations.get("operation"); + addUserClassnameToOperations(operations); + escapeMediaType(operationList); + return objs; + } + + @Override + public Map postProcessSupportingFileData(Map objs) { + Map apiInfo = (Map) objs.get("apiInfo"); + List> apiList = (List>) apiInfo.get("apis"); + for (HashMap api : apiList) { + HashMap operations = (HashMap) api.get("operations"); + List operationList = (List) operations.get("operation"); + + // Sort operations to avoid static routes shadowing + // ref: https://github.com/nikic/FastRoute/blob/master/src/DataGenerator/RegexBasedAbstract.php#L92-L101 + Collections.sort(operationList, new Comparator() { + @Override + public int compare(CodegenOperation one, CodegenOperation another) { + if (one.getHasPathParams() && !another.getHasPathParams()) return 1; + if (!one.getHasPathParams() && another.getHasPathParams()) return -1; + return 0; + } + }); + } + return objs; + } + + @Override + public List fromSecurity(Map securitySchemeMap) { + List codegenSecurities = super.fromSecurity(securitySchemeMap); + if (Boolean.FALSE.equals(codegenSecurities.isEmpty())) { + supportingFiles.add(new SupportingFile("abstract_authenticator.mustache", toSrcPath(authPackage, srcBasePath), toAbstractName("Authenticator") + ".php")); + } + return codegenSecurities; + } + + @Override + public String toApiName(String name) { + if (name.length() == 0) { + return toAbstractName("DefaultApi"); + } + return toAbstractName(camelize(name) + "Api"); + } + + @Override + public String toApiTestFilename(String name) { + if (name.length() == 0) { + return "DefaultApiTest"; + } + return camelize(name) + "ApiTest"; + } + + /** + * Strips out abstract prefix and suffix from classname and puts it in "userClassname" property of operations object. + * + * @param operations codegen object with operations + */ + private void addUserClassnameToOperations(Map operations) { + String classname = (String) operations.get("classname"); + classname = classname.replaceAll("^" + abstractNamePrefix, ""); + classname = classname.replaceAll(abstractNameSuffix + "$", ""); + operations.put(USER_CLASSNAME_KEY, classname); + } + + @Override + public String encodePath(String input) { + if (input == null) { + return input; + } + + // from DefaultCodegen.java + // remove \t, \n, \r + // replace \ with \\ + // replace " with \" + // outter unescape to retain the original multi-byte characters + // finally escalate characters avoiding code injection + input = super.escapeUnsafeCharacters( + StringEscapeUtils.unescapeJava( + StringEscapeUtils.escapeJava(input) + .replace("\\/", "/")) + .replaceAll("[\\t\\n\\r]", " ") + .replace("\\", "\\\\")); + // .replace("\"", "\\\"")); + + // from AbstractPhpCodegen.java + // Trim the string to avoid leading and trailing spaces. + input = input.trim(); + try { + + input = URLEncoder.encode(input, "UTF-8") + .replaceAll("\\+", "%20") + .replaceAll("\\%2F", "/") + .replaceAll("\\%7B", "{") // keep { part of complex placeholders + .replaceAll("\\%7D", "}") // } part + .replaceAll("\\%5B", "[") // [ part + .replaceAll("\\%5D", "]") // ] part + .replaceAll("\\%3A", ":") // : part + .replaceAll("\\%2B", "+") // + part + .replaceAll("\\%5C\\%5Cd", "\\\\d"); // \d part + } catch (UnsupportedEncodingException e) { + // continue + LOGGER.error(e.getMessage(), e); + } + return input; + } + + @Override + public CodegenOperation fromOperation(String path, + String httpMethod, + Operation operation, + List servers) { + CodegenOperation op = super.fromOperation(path, httpMethod, operation, servers); + op.path = encodePath(path); + return op; + } + /** * Set PSR-7 implementation package. * Ref: https://www.slimframework.com/docs/v4/concepts/value-objects.html From 48924eb1a08e6ce1726ce15ef03ae5bcf96e5d0c Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Mon, 24 May 2021 04:53:39 +0200 Subject: [PATCH 034/192] [dart] Improve content-type handling (#9517) * [dart] Improve content-type handling * fixes #9334 * superseeds #9454 * use `prioritizedContentTypes` in the same way `JavaClientCodegen` does * move `application/json` to the front if it exists * don't do anything if it is multi-part or url-encoded as for this the first content-type already needs to match * log warning if an unsupported content-type is first after prioritizing * remove some unused code blocks from dio generators * Only use first prioritized content-type in dio generators * don't default to any content-type in dio-next, dio defaults itself to JSON --- .../languages/AbstractDartCodegen.java | 66 ++++++++++++++- .../languages/DartDioClientCodegen.java | 24 +----- .../languages/DartDioNextClientCodegen.java | 24 +----- .../src/main/resources/dart-dio/api.mustache | 5 +- .../resources/dart/libraries/dio/api.mustache | 7 +- .../src/main/resources/dart2/api.mustache | 2 +- .../petstore_client_lib_fake/README.md | 80 +++++++++---------- .../doc/AnotherFakeApi.md | 2 +- .../doc/DefaultApi.md | 2 +- .../petstore_client_lib_fake/doc/FakeApi.md | 32 ++++---- .../doc/FakeClassnameTags123Api.md | 2 +- .../petstore_client_lib_fake/doc/PetApi.md | 18 ++--- .../petstore_client_lib_fake/doc/StoreApi.md | 8 +- .../petstore_client_lib_fake/doc/UserApi.md | 16 ++-- .../lib/src/api/another_fake_api.dart | 4 +- .../lib/src/api/default_api.dart | 3 - .../lib/src/api/fake_api.dart | 62 +++----------- .../src/api/fake_classname_tags123_api.dart | 4 +- .../lib/src/api/pet_api.dart | 34 ++------ .../lib/src/api/store_api.dart | 13 +-- .../lib/src/api/user_api.dart | 28 +------ .../dart-dio/petstore_client_lib/README.md | 40 +++++----- .../petstore_client_lib/doc/PetApi.md | 16 ++-- .../petstore_client_lib/doc/StoreApi.md | 8 +- .../petstore_client_lib/doc/UserApi.md | 16 ++-- .../petstore_client_lib/lib/api/pet_api.dart | 34 ++------ .../lib/api/store_api.dart | 16 +--- .../petstore_client_lib/lib/api/user_api.dart | 32 ++------ .../petstore_client_lib_fake/README.md | 80 +++++++++---------- .../doc/AnotherFakeApi.md | 2 +- .../doc/DefaultApi.md | 2 +- .../petstore_client_lib_fake/doc/FakeApi.md | 32 ++++---- .../doc/FakeClassnameTags123Api.md | 2 +- .../petstore_client_lib_fake/doc/PetApi.md | 18 ++--- .../petstore_client_lib_fake/doc/StoreApi.md | 8 +- .../petstore_client_lib_fake/doc/UserApi.md | 16 ++-- .../lib/api/another_fake_api.dart | 4 +- .../lib/api/default_api.dart | 4 +- .../lib/api/fake_api.dart | 65 ++++----------- .../lib/api/fake_classname_tags123_api.dart | 4 +- .../lib/api/pet_api.dart | 38 +++------ .../lib/api/store_api.dart | 16 +--- .../lib/api/user_api.dart | 32 ++------ 43 files changed, 358 insertions(+), 563 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java index 6cd5d2926e8..c5d8f65516d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java @@ -1,7 +1,6 @@ package org.openapitools.codegen.languages; import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import com.google.common.collect.Sets; import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.media.ArraySchema; @@ -29,6 +28,9 @@ public abstract class AbstractDartCodegen extends DefaultCodegen { private static final Logger LOGGER = LoggerFactory.getLogger(AbstractDartCodegen.class); + protected static final List DEFAULT_SUPPORTED_CONTENT_TYPES = Arrays.asList( + "application/json", "application/x-www-form-urlencoded", "multipart/form-data"); + public static final String PUB_LIBRARY = "pubLibrary"; public static final String PUB_NAME = "pubName"; public static final String PUB_VERSION = "pubVersion"; @@ -556,6 +558,68 @@ public abstract class AbstractDartCodegen extends DefaultCodegen { return op; } + @Override + public Map postProcessOperationsWithModels(Map objs, List allModels) { + super.postProcessOperationsWithModels(objs, allModels); + Map operations = (Map) objs.get("operations"); + if (operations != null) { + List ops = (List) operations.get("operation"); + for (CodegenOperation op : ops) { + if (op.hasConsumes) { + if (!op.formParams.isEmpty() || op.isMultipart) { + // DefaultCodegen only sets this if the first consumes mediaType + // is application/x-www-form-urlencoded or multipart. + // Can just use the original + op.prioritizedContentTypes = op.consumes; + } else { + // Prioritize content types by moving application/json to the front + // similar to JavaCodegen + op.prioritizedContentTypes = prioritizeContentTypes(op.consumes); + String mediaType = op.prioritizedContentTypes.get(0).get("mediaType"); + if (!DEFAULT_SUPPORTED_CONTENT_TYPES.contains(mediaType)) { + LOGGER.warn("The media-type '{}' for operation '{}' is not support in the Dart generators by default.", mediaType, op.path); + } + } + } + } + } + return objs; + } + + private List> prioritizeContentTypes(List> consumes) { + if (consumes.size() <= 1) { + // no need to change any order + return consumes; + } + + List> prioritizedContentTypes = new ArrayList<>(consumes.size()); + + List> jsonVendorMimeTypes = new ArrayList<>(consumes.size()); + List> jsonMimeTypes = new ArrayList<>(consumes.size()); + + for (Map consume : consumes) { + String mediaType = consume.get("mediaType"); + if (isJsonVendorMimeType(mediaType)) { + jsonVendorMimeTypes.add(consume); + } else if (isJsonMimeType(mediaType)) { + jsonMimeTypes.add(consume); + } else { + prioritizedContentTypes.add(consume); + } + } + + prioritizedContentTypes.addAll(0, jsonMimeTypes); + prioritizedContentTypes.addAll(0, jsonVendorMimeTypes); + return prioritizedContentTypes; + } + + private static boolean isMultipartType(String mediaType) { + if (mediaType != null) { + return "multipart/form-data".equals(mediaType); + } + return false; + } + @Override protected void updateEnumVarsWithExtensions(List> enumVars, Map vendorExtensions, String dataType) { if (vendorExtensions != null && useEnumExtension && vendorExtensions.containsKey("x-enum-values")) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java index 23b50b2f756..517d1023b98 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioClientCodegen.java @@ -264,7 +264,7 @@ public class DartDioClientCodegen extends AbstractDartCodegen { @Override public Map postProcessOperationsWithModels(Map objs, List allModels) { - objs = super.postProcessOperationsWithModels(objs, allModels); + super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); @@ -272,24 +272,8 @@ public class DartDioClientCodegen extends AbstractDartCodegen { Set resultImports = new HashSet<>(); for (CodegenOperation op : operationList) { - op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); - boolean isJson = true; //default to JSON - boolean isForm = false; - boolean isMultipart = false; - if (op.consumes != null) { - for (Map consume : op.consumes) { - if (consume.containsKey("mediaType")) { - String type = consume.get("mediaType"); - isJson = type.equalsIgnoreCase("application/json"); - isForm = type.equalsIgnoreCase("application/x-www-form-urlencoded"); - isMultipart = type.equalsIgnoreCase("multipart/form-data"); - break; - } - } - } - for (CodegenParameter param : op.bodyParams) { - if (param.baseType != null && param.baseType.equalsIgnoreCase("Uint8List") && isMultipart) { + if (param.baseType != null && param.baseType.equalsIgnoreCase("Uint8List") && op.isMultipart) { param.baseType = "MultipartFile"; param.dataType = "MultipartFile"; } @@ -303,10 +287,6 @@ public class DartDioClientCodegen extends AbstractDartCodegen { } } - op.vendorExtensions.put("x-is-json", isJson); - op.vendorExtensions.put("x-is-form", isForm); - op.vendorExtensions.put("x-is-multipart", isMultipart); - resultImports.addAll(rewriteImports(op.imports)); if (op.getHasFormParams()) { resultImports.add("package:" + pubName + "/api_util.dart"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java index 764c1146426..3beb4ca9a4a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java @@ -305,7 +305,7 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { @Override public Map postProcessOperationsWithModels(Map objs, List allModels) { - objs = super.postProcessOperationsWithModels(objs, allModels); + super.postProcessOperationsWithModels(objs, allModels); Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); @@ -313,24 +313,8 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { Set resultImports = new HashSet<>(); for (CodegenOperation op : operationList) { - op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); - boolean isJson = true; //default to JSON - boolean isForm = false; - boolean isMultipart = false; - if (op.consumes != null) { - for (Map consume : op.consumes) { - if (consume.containsKey("mediaType")) { - String type = consume.get("mediaType"); - isJson = type.equalsIgnoreCase("application/json"); - isForm = type.equalsIgnoreCase("application/x-www-form-urlencoded"); - isMultipart = type.equalsIgnoreCase("multipart/form-data"); - break; - } - } - } - for (CodegenParameter param : op.bodyParams) { - if (param.baseType != null && param.baseType.equalsIgnoreCase("Uint8List") && isMultipart) { + if (param.baseType != null && param.baseType.equalsIgnoreCase("Uint8List") && op.isMultipart) { param.baseType = "MultipartFile"; param.dataType = "MultipartFile"; } @@ -344,10 +328,6 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { } } - op.vendorExtensions.put("x-is-json", isJson); - op.vendorExtensions.put("x-is-form", isForm); - op.vendorExtensions.put("x-is-multipart", isMultipart); - resultImports.addAll(rewriteImports(op.imports)); if (op.getHasFormParams()) { resultImports.add("package:" + pubName + "/src/api_util.dart"); diff --git a/modules/openapi-generator/src/main/resources/dart-dio/api.mustache b/modules/openapi-generator/src/main/resources/dart-dio/api.mustache index dff1dcd4235..522815498c5 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/api.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/api.mustache @@ -63,10 +63,7 @@ class {{classname}} { ...?extra, }, validateStatus: validateStatus, - contentType: [{{^hasConsumes}} - 'application/json',{{/hasConsumes}}{{#hasConsumes}}{{#consumes}} - '{{{mediaType}}}',{{/consumes}}{{/hasConsumes}} - ].first, + contentType: '{{^hasConsumes}}application/json{{/hasConsumes}}{{#hasConsumes}}{{#prioritizedContentTypes}}{{#-first}}{{{mediaType}}}{{/-first}}{{/prioritizedContentTypes}}{{/hasConsumes}}', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache index 34cf9554991..b019de39c66 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache @@ -60,11 +60,8 @@ class {{classname}} { },{{/authMethods}} ],{{/hasAuthMethods}} ...?extra, - }, - contentType: [{{^hasConsumes}} - 'application/json',{{/hasConsumes}}{{#hasConsumes}}{{#consumes}} - '{{{mediaType}}}',{{/consumes}}{{/hasConsumes}} - ].first, + },{{#hasConsumes}} + contentType: '{{#prioritizedContentTypes}}{{#-first}}{{{mediaType}}}{{/-first}}{{/prioritizedContentTypes}}',{{/hasConsumes}} validateStatus: validateStatus, ); diff --git a/modules/openapi-generator/src/main/resources/dart2/api.mustache b/modules/openapi-generator/src/main/resources/dart2/api.mustache index 6a53829cb59..a7bb9289143 100644 --- a/modules/openapi-generator/src/main/resources/dart2/api.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/api.mustache @@ -95,7 +95,7 @@ class {{{classname}}} { {{/headerParams}} {{/hasHeaderParams}} - final contentTypes = [{{#consumes}}'{{{mediaType}}}'{{^-last}}, {{/-last}}{{/consumes}}]; + final contentTypes = [{{#prioritizedContentTypes}}'{{{mediaType}}}'{{^-last}}, {{/-last}}{{/prioritizedContentTypes}}]; final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; final authNames = [{{#authMethods}}'{{{name}}}'{{^-last}}, {{/-last}}{{/authMethods}}]; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md index f49dd295950..31cdc5ce99b 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md @@ -64,46 +64,46 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc/AnotherFakeApi.md#call123testspecialtags) | **patch** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc/DefaultApi.md#fooget) | **get** /foo | -*FakeApi* | [**fakeHealthGet**](doc/FakeApi.md#fakehealthget) | **get** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc/FakeApi.md#fakehttpsignaturetest) | **get** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc/FakeApi.md#fakeouterbooleanserialize) | **post** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc/FakeApi.md#fakeoutercompositeserialize) | **post** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc/FakeApi.md#fakeouternumberserialize) | **post** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc/FakeApi.md#fakeouterstringserialize) | **post** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc/FakeApi.md#fakepropertyenumintegerserialize) | **post** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc/FakeApi.md#testbodywithfileschema) | **put** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc/FakeApi.md#testbodywithqueryparams) | **put** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc/FakeApi.md#testclientmodel) | **patch** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc/FakeApi.md#testendpointparameters) | **post** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc/FakeApi.md#testenumparameters) | **get** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc/FakeApi.md#testgroupparameters) | **delete** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc/FakeApi.md#testinlineadditionalproperties) | **post** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc/FakeApi.md#testjsonformdata) | **get** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc/FakeApi.md#testqueryparametercollectionformat) | **put** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc/FakeClassnameTags123Api.md#testclassname) | **patch** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **post** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **delete** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **get** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **get** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **get** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **put** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **post** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **post** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc/PetApi.md#uploadfilewithrequiredfile) | **post** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **delete** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **get** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **get** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **post** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **post** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **post** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **post** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **delete** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **get** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **get** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **get** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **put** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc/DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/AnotherFakeApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/AnotherFakeApi.md index d55663297c1..bb401f7c20c 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/AnotherFakeApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/AnotherFakeApi.md @@ -9,7 +9,7 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**call123testSpecialTags**](AnotherFakeApi.md#call123testspecialtags) | **patch** /another-fake/dummy | To test special tags +[**call123testSpecialTags**](AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags # **call123testSpecialTags** diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/DefaultApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/DefaultApi.md index be916c3037d..5c305ecaa71 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/DefaultApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/DefaultApi.md @@ -9,7 +9,7 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**fooGet**](DefaultApi.md#fooget) | **get** /foo | +[**fooGet**](DefaultApi.md#fooget) | **GET** /foo | # **fooGet** diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeApi.md index c01cc40f97d..8ceda8fa68d 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeApi.md @@ -9,22 +9,22 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**fakeHealthGet**](FakeApi.md#fakehealthget) | **get** /fake/health | Health check endpoint -[**fakeHttpSignatureTest**](FakeApi.md#fakehttpsignaturetest) | **get** /fake/http-signature-test | test http signature authentication -[**fakeOuterBooleanSerialize**](FakeApi.md#fakeouterbooleanserialize) | **post** /fake/outer/boolean | -[**fakeOuterCompositeSerialize**](FakeApi.md#fakeoutercompositeserialize) | **post** /fake/outer/composite | -[**fakeOuterNumberSerialize**](FakeApi.md#fakeouternumberserialize) | **post** /fake/outer/number | -[**fakeOuterStringSerialize**](FakeApi.md#fakeouterstringserialize) | **post** /fake/outer/string | -[**fakePropertyEnumIntegerSerialize**](FakeApi.md#fakepropertyenumintegerserialize) | **post** /fake/property/enum-int | -[**testBodyWithFileSchema**](FakeApi.md#testbodywithfileschema) | **put** /fake/body-with-file-schema | -[**testBodyWithQueryParams**](FakeApi.md#testbodywithqueryparams) | **put** /fake/body-with-query-params | -[**testClientModel**](FakeApi.md#testclientmodel) | **patch** /fake | To test \"client\" model -[**testEndpointParameters**](FakeApi.md#testendpointparameters) | **post** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -[**testEnumParameters**](FakeApi.md#testenumparameters) | **get** /fake | To test enum parameters -[**testGroupParameters**](FakeApi.md#testgroupparameters) | **delete** /fake | Fake endpoint to test group parameters (optional) -[**testInlineAdditionalProperties**](FakeApi.md#testinlineadditionalproperties) | **post** /fake/inline-additionalProperties | test inline additionalProperties -[**testJsonFormData**](FakeApi.md#testjsonformdata) | **get** /fake/jsonFormData | test json serialization of form data -[**testQueryParameterCollectionFormat**](FakeApi.md#testqueryparametercollectionformat) | **put** /fake/test-query-paramters | +[**fakeHealthGet**](FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +[**fakeHttpSignatureTest**](FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +[**fakeOuterBooleanSerialize**](FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +[**fakeOuterCompositeSerialize**](FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +[**fakeOuterNumberSerialize**](FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +[**fakeOuterStringSerialize**](FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +[**fakePropertyEnumIntegerSerialize**](FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +[**testBodyWithFileSchema**](FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +[**testBodyWithQueryParams**](FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +[**testClientModel**](FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +[**testEndpointParameters**](FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +[**testEnumParameters**](FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +[**testGroupParameters**](FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +[**testInlineAdditionalProperties**](FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +[**testJsonFormData**](FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +[**testQueryParameterCollectionFormat**](FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | # **fakeHealthGet** diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeClassnameTags123Api.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeClassnameTags123Api.md index 9745ca8e3ff..98fe0b47358 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeClassnameTags123Api.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeClassnameTags123Api.md @@ -9,7 +9,7 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**testClassname**](FakeClassnameTags123Api.md#testclassname) | **patch** /fake_classname_test | To test class name in snake case +[**testClassname**](FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case # **testClassname** diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/PetApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/PetApi.md index d5a07d5046e..841eed63291 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/PetApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/PetApi.md @@ -9,15 +9,15 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**addPet**](PetApi.md#addpet) | **post** /pet | Add a new pet to the store -[**deletePet**](PetApi.md#deletepet) | **delete** /pet/{petId} | Deletes a pet -[**findPetsByStatus**](PetApi.md#findpetsbystatus) | **get** /pet/findByStatus | Finds Pets by status -[**findPetsByTags**](PetApi.md#findpetsbytags) | **get** /pet/findByTags | Finds Pets by tags -[**getPetById**](PetApi.md#getpetbyid) | **get** /pet/{petId} | Find pet by ID -[**updatePet**](PetApi.md#updatepet) | **put** /pet | Update an existing pet -[**updatePetWithForm**](PetApi.md#updatepetwithform) | **post** /pet/{petId} | Updates a pet in the store with form data -[**uploadFile**](PetApi.md#uploadfile) | **post** /pet/{petId}/uploadImage | uploads an image -[**uploadFileWithRequiredFile**](PetApi.md#uploadfilewithrequiredfile) | **post** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +[**addPet**](PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +[**deletePet**](PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +[**getPetById**](PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +[**updatePet**](PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +[**updatePetWithForm**](PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +[**uploadFileWithRequiredFile**](PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) # **addPet** diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/StoreApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/StoreApi.md index 1fcb8f71eea..a7dbf9ad019 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/StoreApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/StoreApi.md @@ -9,10 +9,10 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**deleteOrder**](StoreApi.md#deleteorder) | **delete** /store/order/{order_id} | Delete purchase order by ID -[**getInventory**](StoreApi.md#getinventory) | **get** /store/inventory | Returns pet inventories by status -[**getOrderById**](StoreApi.md#getorderbyid) | **get** /store/order/{order_id} | Find purchase order by ID -[**placeOrder**](StoreApi.md#placeorder) | **post** /store/order | Place an order for a pet +[**deleteOrder**](StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +[**getInventory**](StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +[**getOrderById**](StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +[**placeOrder**](StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet # **deleteOrder** diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/UserApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/UserApi.md index 62e01652e80..32bc2e675da 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/UserApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/UserApi.md @@ -9,14 +9,14 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**createUser**](UserApi.md#createuser) | **post** /user | Create user -[**createUsersWithArrayInput**](UserApi.md#createuserswitharrayinput) | **post** /user/createWithArray | Creates list of users with given input array -[**createUsersWithListInput**](UserApi.md#createuserswithlistinput) | **post** /user/createWithList | Creates list of users with given input array -[**deleteUser**](UserApi.md#deleteuser) | **delete** /user/{username} | Delete user -[**getUserByName**](UserApi.md#getuserbyname) | **get** /user/{username} | Get user by user name -[**loginUser**](UserApi.md#loginuser) | **get** /user/login | Logs user into the system -[**logoutUser**](UserApi.md#logoutuser) | **get** /user/logout | Logs out current logged in user session -[**updateUser**](UserApi.md#updateuser) | **put** /user/{username} | Updated user +[**createUser**](UserApi.md#createuser) | **POST** /user | Create user +[**createUsersWithArrayInput**](UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +[**deleteUser**](UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +[**getUserByName**](UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +[**loginUser**](UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +[**logoutUser**](UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +[**updateUser**](UserApi.md#updateuser) | **PUT** /user/{username} | Updated user # **createUser** diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart index 00d88a5c178..6730b6925ad 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart @@ -39,9 +39,7 @@ class AnotherFakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart index 48fc9b8c444..1311f160e5b 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart @@ -38,9 +38,6 @@ class DefaultApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart index fed890a78c1..c3915495c81 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart @@ -48,9 +48,6 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -126,10 +123,7 @@ class FakeApi { ], ...?extra, }, - contentType: [ - 'application/json', - 'application/xml', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -190,9 +184,7 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -274,9 +266,7 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -363,9 +353,7 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -447,9 +435,7 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -531,9 +517,7 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -620,9 +604,7 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -683,9 +665,7 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -746,9 +726,7 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -853,9 +831,7 @@ class FakeApi { ], ...?extra, }, - contentType: [ - 'application/x-www-form-urlencoded', - ].first, + contentType: 'application/x-www-form-urlencoded', validateStatus: validateStatus, ); @@ -938,9 +914,7 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/x-www-form-urlencoded', - ].first, + contentType: 'application/x-www-form-urlencoded', validateStatus: validateStatus, ); @@ -1018,9 +992,6 @@ class FakeApi { ], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -1065,9 +1036,7 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -1128,9 +1097,7 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/x-www-form-urlencoded', - ].first, + contentType: 'application/x-www-form-urlencoded', validateStatus: validateStatus, ); @@ -1196,9 +1163,6 @@ class FakeApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart index 01d0383fd16..a2b5a816bab 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart @@ -46,9 +46,7 @@ class FakeClassnameTags123Api { ], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart index 219b0cecd26..8a684092fc2 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart @@ -48,10 +48,7 @@ class PetApi { ], ...?extra, }, - contentType: [ - 'application/json', - 'application/xml', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -118,9 +115,6 @@ class PetApi { ], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -166,9 +160,6 @@ class PetApi { ], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -242,9 +233,6 @@ class PetApi { ], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -320,9 +308,6 @@ class PetApi { ], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -395,10 +380,7 @@ class PetApi { ], ...?extra, }, - contentType: [ - 'application/json', - 'application/xml', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -465,9 +447,7 @@ class PetApi { ], ...?extra, }, - contentType: [ - 'application/x-www-form-urlencoded', - ].first, + contentType: 'application/x-www-form-urlencoded', validateStatus: validateStatus, ); @@ -536,9 +516,7 @@ class PetApi { ], ...?extra, }, - contentType: [ - 'multipart/form-data', - ].first, + contentType: 'multipart/form-data', validateStatus: validateStatus, ); @@ -634,9 +612,7 @@ class PetApi { ], ...?extra, }, - contentType: [ - 'multipart/form-data', - ].first, + contentType: 'multipart/form-data', validateStatus: validateStatus, ); diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart index 0c0b9f44794..3b77dd62607 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart @@ -40,9 +40,6 @@ class StoreApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -89,9 +86,6 @@ class StoreApi { ], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -159,9 +153,6 @@ class StoreApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -229,9 +220,7 @@ class StoreApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart index c0551df5e51..ebfb06b1c97 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart @@ -40,9 +40,7 @@ class UserApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -102,9 +100,7 @@ class UserApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -164,9 +160,7 @@ class UserApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); @@ -226,9 +220,6 @@ class UserApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -269,9 +260,6 @@ class UserApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -340,9 +328,6 @@ class UserApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -407,9 +392,6 @@ class UserApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, validateStatus: validateStatus, ); @@ -451,9 +433,7 @@ class UserApi { 'secure': >[], ...?extra, }, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', validateStatus: validateStatus, ); diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md index af1b22de4d5..ac04fa9f72b 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md @@ -58,26 +58,26 @@ All URIs are relative to *http://petstore.swagger.io/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **post** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **delete** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **get** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **get** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **get** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **put** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **post** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **post** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **delete** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **get** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **get** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **post** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **post** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **post** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **post** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **delete** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **get** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **get** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **get** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **put** /user/{username} | Updated user +*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/doc/PetApi.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/doc/PetApi.md index 3a78296f383..74c87b72acc 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/doc/PetApi.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/doc/PetApi.md @@ -9,14 +9,14 @@ All URIs are relative to *http://petstore.swagger.io/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**addPet**](PetApi.md#addpet) | **post** /pet | Add a new pet to the store -[**deletePet**](PetApi.md#deletepet) | **delete** /pet/{petId} | Deletes a pet -[**findPetsByStatus**](PetApi.md#findpetsbystatus) | **get** /pet/findByStatus | Finds Pets by status -[**findPetsByTags**](PetApi.md#findpetsbytags) | **get** /pet/findByTags | Finds Pets by tags -[**getPetById**](PetApi.md#getpetbyid) | **get** /pet/{petId} | Find pet by ID -[**updatePet**](PetApi.md#updatepet) | **put** /pet | Update an existing pet -[**updatePetWithForm**](PetApi.md#updatepetwithform) | **post** /pet/{petId} | Updates a pet in the store with form data -[**uploadFile**](PetApi.md#uploadfile) | **post** /pet/{petId}/uploadImage | uploads an image +[**addPet**](PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +[**deletePet**](PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +[**getPetById**](PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +[**updatePet**](PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +[**updatePetWithForm**](PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image # **addPet** diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/doc/StoreApi.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/doc/StoreApi.md index 0b016d70a84..6075223c741 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/doc/StoreApi.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/doc/StoreApi.md @@ -9,10 +9,10 @@ All URIs are relative to *http://petstore.swagger.io/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**deleteOrder**](StoreApi.md#deleteorder) | **delete** /store/order/{orderId} | Delete purchase order by ID -[**getInventory**](StoreApi.md#getinventory) | **get** /store/inventory | Returns pet inventories by status -[**getOrderById**](StoreApi.md#getorderbyid) | **get** /store/order/{orderId} | Find purchase order by ID -[**placeOrder**](StoreApi.md#placeorder) | **post** /store/order | Place an order for a pet +[**deleteOrder**](StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +[**getInventory**](StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +[**getOrderById**](StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +[**placeOrder**](StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet # **deleteOrder** diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/doc/UserApi.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/doc/UserApi.md index c939d874a99..b3b11fe6748 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/doc/UserApi.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/doc/UserApi.md @@ -9,14 +9,14 @@ All URIs are relative to *http://petstore.swagger.io/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**createUser**](UserApi.md#createuser) | **post** /user | Create user -[**createUsersWithArrayInput**](UserApi.md#createuserswitharrayinput) | **post** /user/createWithArray | Creates list of users with given input array -[**createUsersWithListInput**](UserApi.md#createuserswithlistinput) | **post** /user/createWithList | Creates list of users with given input array -[**deleteUser**](UserApi.md#deleteuser) | **delete** /user/{username} | Delete user -[**getUserByName**](UserApi.md#getuserbyname) | **get** /user/{username} | Get user by user name -[**loginUser**](UserApi.md#loginuser) | **get** /user/login | Logs user into the system -[**logoutUser**](UserApi.md#logoutuser) | **get** /user/logout | Logs out current logged in user session -[**updateUser**](UserApi.md#updateuser) | **put** /user/{username} | Updated user +[**createUser**](UserApi.md#createuser) | **POST** /user | Create user +[**createUsersWithArrayInput**](UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +[**deleteUser**](UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +[**getUserByName**](UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +[**loginUser**](UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +[**logoutUser**](UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +[**updateUser**](UserApi.md#updateuser) | **PUT** /user/{username} | Updated user # **createUser** diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart index 9b378a4b3fa..70fc2b2dbe6 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart @@ -51,10 +51,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - 'application/xml', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -119,9 +116,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -169,9 +164,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -234,9 +227,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -298,9 +289,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -360,10 +349,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - 'application/xml', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -428,9 +414,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/x-www-form-urlencoded', - ].first, + contentType: 'application/x-www-form-urlencoded', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -482,9 +466,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'multipart/form-data', - ].first, + contentType: 'multipart/form-data', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart index d0184f6eda8..80b074645c8 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart @@ -43,9 +43,7 @@ class StoreApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -91,9 +89,7 @@ class StoreApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -148,9 +144,7 @@ class StoreApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -205,9 +199,7 @@ class StoreApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart index 5253ac66028..fef22be0b97 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart @@ -50,9 +50,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -102,9 +100,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -154,9 +150,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -206,9 +200,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -248,9 +240,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -310,9 +300,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -369,9 +357,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -419,9 +405,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md index af00b20ee1d..22789ae7761 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md @@ -58,46 +58,46 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc/AnotherFakeApi.md#call123testspecialtags) | **patch** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc/DefaultApi.md#fooget) | **get** /foo | -*FakeApi* | [**fakeHealthGet**](doc/FakeApi.md#fakehealthget) | **get** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc/FakeApi.md#fakehttpsignaturetest) | **get** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc/FakeApi.md#fakeouterbooleanserialize) | **post** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc/FakeApi.md#fakeoutercompositeserialize) | **post** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc/FakeApi.md#fakeouternumberserialize) | **post** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc/FakeApi.md#fakeouterstringserialize) | **post** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc/FakeApi.md#fakepropertyenumintegerserialize) | **post** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc/FakeApi.md#testbodywithfileschema) | **put** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc/FakeApi.md#testbodywithqueryparams) | **put** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc/FakeApi.md#testclientmodel) | **patch** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc/FakeApi.md#testendpointparameters) | **post** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc/FakeApi.md#testenumparameters) | **get** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc/FakeApi.md#testgroupparameters) | **delete** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc/FakeApi.md#testinlineadditionalproperties) | **post** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc/FakeApi.md#testjsonformdata) | **get** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc/FakeApi.md#testqueryparametercollectionformat) | **put** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc/FakeClassnameTags123Api.md#testclassname) | **patch** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **post** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **delete** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **get** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **get** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **get** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **put** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **post** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **post** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc/PetApi.md#uploadfilewithrequiredfile) | **post** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **delete** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **get** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **get** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **post** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **post** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **post** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **post** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **delete** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **get** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **get** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **get** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **put** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc/DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/AnotherFakeApi.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/AnotherFakeApi.md index d55663297c1..bb401f7c20c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/AnotherFakeApi.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/AnotherFakeApi.md @@ -9,7 +9,7 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**call123testSpecialTags**](AnotherFakeApi.md#call123testspecialtags) | **patch** /another-fake/dummy | To test special tags +[**call123testSpecialTags**](AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags # **call123testSpecialTags** diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/DefaultApi.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/DefaultApi.md index be916c3037d..5c305ecaa71 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/DefaultApi.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/DefaultApi.md @@ -9,7 +9,7 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**fooGet**](DefaultApi.md#fooget) | **get** /foo | +[**fooGet**](DefaultApi.md#fooget) | **GET** /foo | # **fooGet** diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FakeApi.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FakeApi.md index 41ab4e4fc12..b28fe4abbe3 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FakeApi.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FakeApi.md @@ -9,22 +9,22 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**fakeHealthGet**](FakeApi.md#fakehealthget) | **get** /fake/health | Health check endpoint -[**fakeHttpSignatureTest**](FakeApi.md#fakehttpsignaturetest) | **get** /fake/http-signature-test | test http signature authentication -[**fakeOuterBooleanSerialize**](FakeApi.md#fakeouterbooleanserialize) | **post** /fake/outer/boolean | -[**fakeOuterCompositeSerialize**](FakeApi.md#fakeoutercompositeserialize) | **post** /fake/outer/composite | -[**fakeOuterNumberSerialize**](FakeApi.md#fakeouternumberserialize) | **post** /fake/outer/number | -[**fakeOuterStringSerialize**](FakeApi.md#fakeouterstringserialize) | **post** /fake/outer/string | -[**fakePropertyEnumIntegerSerialize**](FakeApi.md#fakepropertyenumintegerserialize) | **post** /fake/property/enum-int | -[**testBodyWithFileSchema**](FakeApi.md#testbodywithfileschema) | **put** /fake/body-with-file-schema | -[**testBodyWithQueryParams**](FakeApi.md#testbodywithqueryparams) | **put** /fake/body-with-query-params | -[**testClientModel**](FakeApi.md#testclientmodel) | **patch** /fake | To test \"client\" model -[**testEndpointParameters**](FakeApi.md#testendpointparameters) | **post** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -[**testEnumParameters**](FakeApi.md#testenumparameters) | **get** /fake | To test enum parameters -[**testGroupParameters**](FakeApi.md#testgroupparameters) | **delete** /fake | Fake endpoint to test group parameters (optional) -[**testInlineAdditionalProperties**](FakeApi.md#testinlineadditionalproperties) | **post** /fake/inline-additionalProperties | test inline additionalProperties -[**testJsonFormData**](FakeApi.md#testjsonformdata) | **get** /fake/jsonFormData | test json serialization of form data -[**testQueryParameterCollectionFormat**](FakeApi.md#testqueryparametercollectionformat) | **put** /fake/test-query-paramters | +[**fakeHealthGet**](FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +[**fakeHttpSignatureTest**](FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +[**fakeOuterBooleanSerialize**](FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +[**fakeOuterCompositeSerialize**](FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +[**fakeOuterNumberSerialize**](FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +[**fakeOuterStringSerialize**](FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +[**fakePropertyEnumIntegerSerialize**](FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +[**testBodyWithFileSchema**](FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +[**testBodyWithQueryParams**](FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +[**testClientModel**](FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +[**testEndpointParameters**](FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +[**testEnumParameters**](FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +[**testGroupParameters**](FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +[**testInlineAdditionalProperties**](FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +[**testJsonFormData**](FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +[**testQueryParameterCollectionFormat**](FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | # **fakeHealthGet** diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FakeClassnameTags123Api.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FakeClassnameTags123Api.md index 9745ca8e3ff..98fe0b47358 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FakeClassnameTags123Api.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FakeClassnameTags123Api.md @@ -9,7 +9,7 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**testClassname**](FakeClassnameTags123Api.md#testclassname) | **patch** /fake_classname_test | To test class name in snake case +[**testClassname**](FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case # **testClassname** diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/PetApi.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/PetApi.md index d5a07d5046e..841eed63291 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/PetApi.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/PetApi.md @@ -9,15 +9,15 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**addPet**](PetApi.md#addpet) | **post** /pet | Add a new pet to the store -[**deletePet**](PetApi.md#deletepet) | **delete** /pet/{petId} | Deletes a pet -[**findPetsByStatus**](PetApi.md#findpetsbystatus) | **get** /pet/findByStatus | Finds Pets by status -[**findPetsByTags**](PetApi.md#findpetsbytags) | **get** /pet/findByTags | Finds Pets by tags -[**getPetById**](PetApi.md#getpetbyid) | **get** /pet/{petId} | Find pet by ID -[**updatePet**](PetApi.md#updatepet) | **put** /pet | Update an existing pet -[**updatePetWithForm**](PetApi.md#updatepetwithform) | **post** /pet/{petId} | Updates a pet in the store with form data -[**uploadFile**](PetApi.md#uploadfile) | **post** /pet/{petId}/uploadImage | uploads an image -[**uploadFileWithRequiredFile**](PetApi.md#uploadfilewithrequiredfile) | **post** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +[**addPet**](PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +[**deletePet**](PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +[**getPetById**](PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +[**updatePet**](PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +[**updatePetWithForm**](PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +[**uploadFileWithRequiredFile**](PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) # **addPet** diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/StoreApi.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/StoreApi.md index 1fcb8f71eea..a7dbf9ad019 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/StoreApi.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/StoreApi.md @@ -9,10 +9,10 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**deleteOrder**](StoreApi.md#deleteorder) | **delete** /store/order/{order_id} | Delete purchase order by ID -[**getInventory**](StoreApi.md#getinventory) | **get** /store/inventory | Returns pet inventories by status -[**getOrderById**](StoreApi.md#getorderbyid) | **get** /store/order/{order_id} | Find purchase order by ID -[**placeOrder**](StoreApi.md#placeorder) | **post** /store/order | Place an order for a pet +[**deleteOrder**](StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +[**getInventory**](StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +[**getOrderById**](StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +[**placeOrder**](StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet # **deleteOrder** diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/UserApi.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/UserApi.md index 62e01652e80..32bc2e675da 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/UserApi.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/UserApi.md @@ -9,14 +9,14 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**createUser**](UserApi.md#createuser) | **post** /user | Create user -[**createUsersWithArrayInput**](UserApi.md#createuserswitharrayinput) | **post** /user/createWithArray | Creates list of users with given input array -[**createUsersWithListInput**](UserApi.md#createuserswithlistinput) | **post** /user/createWithList | Creates list of users with given input array -[**deleteUser**](UserApi.md#deleteuser) | **delete** /user/{username} | Delete user -[**getUserByName**](UserApi.md#getuserbyname) | **get** /user/{username} | Get user by user name -[**loginUser**](UserApi.md#loginuser) | **get** /user/login | Logs user into the system -[**logoutUser**](UserApi.md#logoutuser) | **get** /user/logout | Logs out current logged in user session -[**updateUser**](UserApi.md#updateuser) | **put** /user/{username} | Updated user +[**createUser**](UserApi.md#createuser) | **POST** /user | Create user +[**createUsersWithArrayInput**](UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +[**deleteUser**](UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +[**getUserByName**](UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +[**loginUser**](UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +[**logoutUser**](UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +[**updateUser**](UserApi.md#updateuser) | **PUT** /user/{username} | Updated user # **createUser** diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart index 4bea8f87dbd..cabc80b7798 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/another_fake_api.dart @@ -42,9 +42,7 @@ class AnotherFakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart index ab47f0a6571..51dd7ea125e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/default_api.dart @@ -41,9 +41,7 @@ class DefaultApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart index b50d02d5cf6..a8310d5f4a2 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart @@ -50,9 +50,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -118,10 +116,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - 'application/xml', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -164,9 +159,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -219,9 +212,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -279,9 +270,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -334,9 +323,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -389,9 +376,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -449,9 +434,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -498,9 +481,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -543,9 +524,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -621,9 +600,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/x-www-form-urlencoded', - ].first, + contentType: 'application/x-www-form-urlencoded', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -695,9 +672,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/x-www-form-urlencoded', - ].first, + contentType: 'application/x-www-form-urlencoded', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -760,9 +735,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -802,9 +775,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -848,9 +819,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/x-www-form-urlencoded', - ].first, + contentType: 'application/x-www-form-urlencoded', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -906,9 +875,7 @@ class FakeApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart index f9b44deb6d5..54c40f0e343 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_classname_tags123_api.dart @@ -49,9 +49,7 @@ class FakeClassnameTags123Api { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart index 56bdd8556bc..9cc7beeb57e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/pet_api.dart @@ -51,10 +51,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - 'application/xml', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -104,9 +101,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -154,9 +149,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -219,9 +212,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -283,9 +274,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -345,10 +334,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - 'application/xml', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -398,9 +384,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/x-www-form-urlencoded', - ].first, + contentType: 'application/x-www-form-urlencoded', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -452,9 +436,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'multipart/form-data', - ].first, + contentType: 'multipart/form-data', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -521,9 +503,7 @@ class PetApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'multipart/form-data', - ].first, + contentType: 'multipart/form-data', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart index e6c7679d1cd..14fa8b60121 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/store_api.dart @@ -43,9 +43,7 @@ class StoreApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -91,9 +89,7 @@ class StoreApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -148,9 +144,7 @@ class StoreApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -205,9 +199,7 @@ class StoreApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart index d85fbcc8585..86032dba94a 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/user_api.dart @@ -43,9 +43,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -88,9 +86,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -133,9 +129,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -178,9 +172,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -220,9 +212,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -282,9 +272,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -334,9 +322,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -377,9 +363,7 @@ class UserApi { ...?extra, }, validateStatus: validateStatus, - contentType: [ - 'application/json', - ].first, + contentType: 'application/json', cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, From be84c44fccb45c41655b8908d684859544846817 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Mon, 24 May 2021 04:54:51 +0200 Subject: [PATCH 035/192] [dart][dart-dio-next] Add stacktraces to manual DioError instances (#9549) --- .../resources/dart/libraries/dio/api.mustache | 8 +- .../lib/src/api/another_fake_api.dart | 8 +- .../lib/src/api/default_api.dart | 4 +- .../lib/src/api/fake_api.dart | 80 +++++++++---------- .../src/api/fake_classname_tags123_api.dart | 8 +- .../lib/src/api/pet_api.dart | 40 +++++----- .../lib/src/api/store_api.dart | 16 ++-- .../lib/src/api/user_api.dart | 24 +++--- 8 files changed, 94 insertions(+), 94 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache index b019de39c66..328506457c0 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache @@ -76,7 +76,7 @@ class {{classname}} { try { {{#useBuiltValue}}{{>serialization/built_value/serialize}}{{/useBuiltValue}} - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -85,7 +85,7 @@ class {{classname}} { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } {{/hasBodyOrFormParams}} @@ -104,13 +104,13 @@ class {{classname}} { try { {{#useBuiltValue}}{{>serialization/built_value/deserialize}}{{/useBuiltValue}} - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response<{{{returnType}}}>( diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart index 6730b6925ad..a65b9647944 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart @@ -52,7 +52,7 @@ class AnotherFakeApi { const _type = FullType(ModelClient); _bodyData = _serializers.serialize(modelClient, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -61,7 +61,7 @@ class AnotherFakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -83,13 +83,13 @@ class AnotherFakeApi { specifiedType: _responseType, ) as ModelClient; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart index 1311f160e5b..22b4500214c 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart @@ -62,13 +62,13 @@ class DefaultApi { specifiedType: _responseType, ) as InlineResponseDefault; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart index c3915495c81..b5d03c9bda1 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart @@ -72,13 +72,13 @@ class FakeApi { specifiedType: _responseType, ) as HealthCheckResult; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( @@ -137,7 +137,7 @@ class FakeApi { const _type = FullType(Pet); _bodyData = _serializers.serialize(pet, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -146,7 +146,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -196,7 +196,7 @@ class FakeApi { try { _bodyData = body; - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -205,7 +205,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -223,13 +223,13 @@ class FakeApi { try { _responseData = _response.data as bool; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( @@ -279,7 +279,7 @@ class FakeApi { const _type = FullType(OuterComposite); _bodyData = outerComposite == null ? null : _serializers.serialize(outerComposite, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -288,7 +288,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -310,13 +310,13 @@ class FakeApi { specifiedType: _responseType, ) as OuterComposite; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( @@ -365,7 +365,7 @@ class FakeApi { try { _bodyData = body; - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -374,7 +374,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -392,13 +392,13 @@ class FakeApi { try { _responseData = _response.data as num; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( @@ -447,7 +447,7 @@ class FakeApi { try { _bodyData = body; - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -456,7 +456,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -474,13 +474,13 @@ class FakeApi { try { _responseData = _response.data as String; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( @@ -530,7 +530,7 @@ class FakeApi { const _type = FullType(OuterObjectWithEnumProperty); _bodyData = _serializers.serialize(outerObjectWithEnumProperty, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -539,7 +539,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -561,13 +561,13 @@ class FakeApi { specifiedType: _responseType, ) as OuterObjectWithEnumProperty; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( @@ -617,7 +617,7 @@ class FakeApi { const _type = FullType(FileSchemaTestClass); _bodyData = _serializers.serialize(fileSchemaTestClass, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -626,7 +626,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -679,7 +679,7 @@ class FakeApi { const _type = FullType(User); _bodyData = _serializers.serialize(user, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -688,7 +688,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -739,7 +739,7 @@ class FakeApi { const _type = FullType(ModelClient); _bodyData = _serializers.serialize(modelClient, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -748,7 +748,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -770,13 +770,13 @@ class FakeApi { specifiedType: _responseType, ) as ModelClient; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( @@ -858,7 +858,7 @@ class FakeApi { if (callback != null) r'callback': encodeFormParameter(_serializers, callback, const FullType(String)), }; - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -867,7 +867,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -933,7 +933,7 @@ class FakeApi { if (enumFormString != null) r'enum_form_string': encodeFormParameter(_serializers, enumFormString, const FullType(String)), }; - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -942,7 +942,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -1049,7 +1049,7 @@ class FakeApi { const _type = FullType(BuiltMap, [FullType(String), FullType(String)]); _bodyData = _serializers.serialize(requestBody, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -1058,7 +1058,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -1112,7 +1112,7 @@ class FakeApi { r'param2': encodeFormParameter(_serializers, param2, const FullType(String)), }; - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -1121,7 +1121,7 @@ class FakeApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart index a2b5a816bab..e97d899d0be 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart @@ -59,7 +59,7 @@ class FakeClassnameTags123Api { const _type = FullType(ModelClient); _bodyData = _serializers.serialize(modelClient, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -68,7 +68,7 @@ class FakeClassnameTags123Api { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -90,13 +90,13 @@ class FakeClassnameTags123Api { specifiedType: _responseType, ) as ModelClient; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart index 8a684092fc2..e3f1473c5be 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart @@ -61,7 +61,7 @@ class PetApi { const _type = FullType(Pet); _bodyData = _serializers.serialize(pet, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -70,7 +70,7 @@ class PetApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -185,13 +185,13 @@ class PetApi { specifiedType: _responseType, ) as BuiltList; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response>( @@ -258,13 +258,13 @@ class PetApi { specifiedType: _responseType, ) as BuiltSet; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response>( @@ -332,13 +332,13 @@ class PetApi { specifiedType: _responseType, ) as Pet; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( @@ -393,7 +393,7 @@ class PetApi { const _type = FullType(Pet); _bodyData = _serializers.serialize(pet, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -402,7 +402,7 @@ class PetApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -462,7 +462,7 @@ class PetApi { if (status != null) r'status': encodeFormParameter(_serializers, status, const FullType(String)), }; - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -471,7 +471,7 @@ class PetApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -531,7 +531,7 @@ class PetApi { if (file != null) r'file': MultipartFile.fromBytes(file, filename: r'file'), }); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -540,7 +540,7 @@ class PetApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -562,13 +562,13 @@ class PetApi { specifiedType: _responseType, ) as ApiResponse; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( @@ -627,7 +627,7 @@ class PetApi { r'requiredFile': MultipartFile.fromBytes(requiredFile, filename: r'requiredFile'), }); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -636,7 +636,7 @@ class PetApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -658,13 +658,13 @@ class PetApi { specifiedType: _responseType, ) as ApiResponse; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart index 3b77dd62607..66fccc40e4b 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart @@ -110,13 +110,13 @@ class StoreApi { specifiedType: _responseType, ) as BuiltMap; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response>( @@ -177,13 +177,13 @@ class StoreApi { specifiedType: _responseType, ) as Order; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( @@ -233,7 +233,7 @@ class StoreApi { const _type = FullType(Order); _bodyData = _serializers.serialize(order, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -242,7 +242,7 @@ class StoreApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -264,13 +264,13 @@ class StoreApi { specifiedType: _responseType, ) as Order; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart index ebfb06b1c97..d8f42219111 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart @@ -53,7 +53,7 @@ class UserApi { const _type = FullType(User); _bodyData = _serializers.serialize(user, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -62,7 +62,7 @@ class UserApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -113,7 +113,7 @@ class UserApi { const _type = FullType(BuiltList, [FullType(User)]); _bodyData = _serializers.serialize(user, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -122,7 +122,7 @@ class UserApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -173,7 +173,7 @@ class UserApi { const _type = FullType(BuiltList, [FullType(User)]); _bodyData = _serializers.serialize(user, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -182,7 +182,7 @@ class UserApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( @@ -284,13 +284,13 @@ class UserApi { specifiedType: _responseType, ) as User; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( @@ -350,13 +350,13 @@ class UserApi { try { _responseData = _response.data as String; - } catch (error) { + } catch (error, stackTrace) { throw DioError( requestOptions: _response.requestOptions, response: _response, type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } return Response( @@ -446,7 +446,7 @@ class UserApi { const _type = FullType(User); _bodyData = _serializers.serialize(user, specifiedType: _type); - } catch(error) { + } catch(error, stackTrace) { throw DioError( requestOptions: _options.compose( _dio.options, @@ -455,7 +455,7 @@ class UserApi { ), type: DioErrorType.other, error: error, - ); + )..stackTrace = stackTrace; } final _response = await _dio.request( From 22db406c3536c071d827446bb41cac20ad244b77 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Mon, 24 May 2021 04:59:35 +0200 Subject: [PATCH 036/192] [ci] Move openapi-generator build/docs/samples to github actions (#9550) * [ci] Move openapi-generator build/docs/samples to github actions * Naming * Test failure on samples and docs * Revert code changes after successful docs/sample failure --- .../openapi-generator-test-results.yaml | 19 ++ .github/workflows/openapi-generator.yaml | 214 ++++++++++++++++++ CI/.drone.yml | 2 - CI/circle_parallel.sh | 13 -- shippable.yml | 10 - 5 files changed, 233 insertions(+), 25 deletions(-) create mode 100644 .github/workflows/openapi-generator-test-results.yaml create mode 100644 .github/workflows/openapi-generator.yaml diff --git a/.github/workflows/openapi-generator-test-results.yaml b/.github/workflows/openapi-generator-test-results.yaml new file mode 100644 index 00000000000..f246b16c36b --- /dev/null +++ b/.github/workflows/openapi-generator-test-results.yaml @@ -0,0 +1,19 @@ +name: OpenAPI Generator Test Report + +on: + workflow_run: + workflows: ['OpenAPI Generator'] + types: + - completed + +# separate workflow required due to https://github.com/dorny/test-reporter#recommended-setup-for-public-repositories +jobs: + report: + runs-on: ubuntu-latest + steps: + - uses: dorny/test-reporter@v1 + with: + artifact: surefire-test-results + name: JUnit Test results + path: '**/surefire-reports/TEST-*.xml' + reporter: java-junit diff --git a/.github/workflows/openapi-generator.yaml b/.github/workflows/openapi-generator.yaml new file mode 100644 index 00000000000..5bb78a6f3b0 --- /dev/null +++ b/.github/workflows/openapi-generator.yaml @@ -0,0 +1,214 @@ +name: OpenAPI Generator + +on: + push: + branches: + - master + - '[5-9]+.[0-9]+.x' + pull_request: + branches: + - master + - '[5-9]+.[0-9]+.x' + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 8 + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: Cache maven dependencies + uses: actions/cache@v2 + env: + cache-name: cache-maven-repository + with: + path: | + ~/.m2/repository + ~/.gradle + !~/.gradle/caches/*/plugin-resolution/ + !~/.m2/repository/org/openapitools/ + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + - name: Run maven + run: mvn --no-snapshot-updates --batch-mode --quiet install -DskipTests -Dorg.slf4j.simpleLogger.defaultLogLevel=error + - run: ls -la modules/openapi-generator-cli/target + - name: Upload openapi-generator-cli.jar artifact + uses: actions/upload-artifact@v2 + with: + name: openapi-generator-cli.jar + path: modules/openapi-generator-cli/target/openapi-generator-cli.jar + retention-days: 1 + + test: + name: Unit tests + runs-on: ubuntu-latest + needs: + - build + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 8 + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: Cache maven dependencies + uses: actions/cache@v2 + env: + cache-name: cache-maven-repository + with: + path: | + ~/.m2/repository + ~/.gradle + !~/.gradle/caches/*/plugin-resolution/ + !~/.m2/repository/org/openapitools/ + key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + - name: Run unit tests + run: mvn --no-snapshot-updates --batch-mode --quiet --fail-at-end test -Dorg.slf4j.simpleLogger.defaultLogLevel=error + - name: Publish unit test reports + if: ${{ always() }} + uses: actions/upload-artifact@v2 + with: + name: surefire-test-results + path: '**/surefire-reports/TEST-*.xml' + + documentation: + name: Docs up-to-date + runs-on: ubuntu-latest + needs: + - build + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 8 + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: Download openapi-generator-cli.jar artifact + uses: actions/download-artifact@v2 + with: + name: openapi-generator-cli.jar + path: modules/openapi-generator-cli/target + - name: Generate docs + run: | + bash bin/meta-codegen.sh + bash bin/utils/export_docs_generators.sh + bash bin/utils/copy-to-website.sh + bash bin/utils/export_generators_readme.sh + - name: Verify git status + run: | + if [[ "$(git status --porcelain)" != "" ]]; then + echo "UNCOMMITTED CHANGES ERROR" + echo "There are uncommitted changes in working tree after execution of 'bin/ensure-up-to-date'" + echo "Perform git diff" + git --no-pager diff + echo "Perform git status" + git status + echo -e "\nThis script runs in pull requests against the anticipated merge commit (as if the PR was merged now)." + echo "When you see unexpected files here, it likely means that there are newer commits in master that you need to " + echo -e "rebase or merge into your branch.\n" + echo "Please run 'bin/utils/ensure-up-to-date' locally and commit changes (UNCOMMITTED CHANGES ERROR)" + exit 1 + fi + + samples: + name: Samples up-to-date + needs: + - build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 8 + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: Download openapi-generator-cli.jar artifact + uses: actions/download-artifact@v2 + with: + name: openapi-generator-cli.jar + path: modules/openapi-generator-cli/target + - name: Generate samples + run: bash bin/generate-samples.sh + - name: Verify git status + run: | + if [[ "$(git status --porcelain)" != "" ]]; then + echo "UNCOMMITTED CHANGES ERROR" + echo "There are uncommitted changes in working tree after execution of 'bin/generate-samples.sh'" + echo "Perform git diff" + git --no-pager diff + echo "Perform git status" + git status + echo -e "\nThis script runs in pull requests against the anticipated merge commit (as if the PR was merged now)." + echo "When you see unexpected files here, it likely means that there are newer commits in master that you need to " + echo -e "rebase or merge into your branch.\n" + echo "Please run 'bin/generate-samples.sh' locally and commit changes (UNCOMMITTED CHANGES ERROR)" + exit 1 + fi + + test-maven-plugin: + name: Maven plugin tests + runs-on: ubuntu-latest + needs: + - build + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + - name: Cache maven dependencies + uses: actions/cache@v2 + env: + cache-name: cache-maven-repository + with: + path: | + ~/.m2/repository + ~/.gradle + !~/.gradle/caches/*/plugin-resolution/ + !~/.m2/repository/org/openapitools/ + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-test-maven-plugin-${{ env.cache-name }}- + ${{ runner.os }}-test-maven-plugin- + - name: Run tests + run: | + mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/java-client.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error + mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/multi-module/pom.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error + mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/kotlin.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error + mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/spring.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error + + test-gradle-plugin: + name: Gradle plugin tests + runs-on: ubuntu-latest + needs: + - build + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + - name: Cache maven dependencies + uses: actions/cache@v2 + env: + cache-name: cache-maven-repository + with: + path: | + ~/.m2/repository + ~/.gradle + !~/.gradle/caches/modules-2/modules-2.lock + !~/.gradle/caches/*/plugin-resolution/ + !~/.m2/repository/org/openapitools/ + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-test-gradle-plugin-${{ env.cache-name }}- + ${{ runner.os }}-test-gradle-plugin- + - name: Run tests + run: | + (cd modules/openapi-generator-gradle-plugin/samples/local-spec && ./gradlew buildGoSdk) + (cd modules/openapi-generator-gradle-plugin/samples/local-spec && ./gradlew openApiGenerate) diff --git a/CI/.drone.yml b/CI/.drone.yml index 032d64b9e15..073d7332a43 100644 --- a/CI/.drone.yml +++ b/CI/.drone.yml @@ -7,8 +7,6 @@ steps: commands: - ./mvnw --quiet clean install -Dorg.slf4j.simpleLogger.defaultLogLevel=error - ./mvnw --quiet verify -Psamples.droneio -Dorg.slf4j.simpleLogger.defaultLogLevel=error - # run ensure up-to-date - - /bin/bash bin/utils/ensure-up-to-date # test java native client - ./mvnw clean test -f samples/client/petstore/java/native/pom.xml - ./mvnw clean test -f samples/client/petstore/java/native-async/pom.xml diff --git a/CI/circle_parallel.sh b/CI/circle_parallel.sh index 36e0c179b24..f1a5a529a79 100755 --- a/CI/circle_parallel.sh +++ b/CI/circle_parallel.sh @@ -24,19 +24,6 @@ if [ "$NODE_INDEX" = "1" ]; then ls -l /home/circleci/.ivy2/cache elif [ "$NODE_INDEX" = "2" ]; then - # run ensure-up-to-date sample script on SNAPSHOT version only - project_version=`mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout` - if [[ $project_version == *"-SNAPSHOT" ]]; then - echo "Running node $NODE_INDEX to test ensure-up-to-date" - java -version - - # clear any changes to the samples - git checkout -- . - - # look for outdated samples - #./bin/utils/ensure-up-to-date - # UPDATE: moved to drone.io - fi echo "Running node $NODE_INDEX to test haskell" # install haskell curl -sSL https://get.haskellstack.org/ | sh diff --git a/shippable.yml b/shippable.yml index 5dc40c6fa41..009806b31a3 100644 --- a/shippable.yml +++ b/shippable.yml @@ -21,7 +21,6 @@ build: - export PATH=/opt/gradle/gradle-5.6.4/bin:$PATH - gradle -v - java -version - - mvn --no-snapshot-updates --quiet clean install -Dmaven.javadoc.skip=true # ensure all modifications created by 'mature' generators are in the git repo # below move to CircleCI ./bin/utils/ensure-up-to-date # prepare environment for tests @@ -49,12 +48,3 @@ build: - mix --version # test samples defined in pom.xml - mvn --no-snapshot-updates --quiet verify -P samples.shippable -Dmaven.javadoc.skip=true - # test maven plugin - - mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/java-client.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error - - mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/multi-module/pom.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error - - mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/kotlin.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error - - mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/spring.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error - # test gradle plugin - - (cd modules/openapi-generator-gradle-plugin/samples/local-spec && ./gradlew buildGoSdk) - - (cd modules/openapi-generator-gradle-plugin/samples/local-spec && ./gradlew openApiGenerate) - From e360228a76d31c78267f0f166e426c38adc1081b Mon Sep 17 00:00:00 2001 From: alespour <42931850+alespour@users.noreply.github.com> Date: Mon, 24 May 2021 05:01:53 +0200 Subject: [PATCH 037/192] fix: dart2 mustache templates minor improvements (#9539) * fix: prefer_is_not_empty linter suggestion * fix: annotate_overrides linter suggestion * chore: update samples --- .../src/main/resources/dart2/api_exception.mustache | 1 + .../src/main/resources/dart2/api_helper.mustache | 2 +- .../petstore/dart2/petstore_client_lib/lib/api_exception.dart | 1 + .../petstore/dart2/petstore_client_lib/lib/api_helper.dart | 2 +- .../dart2/petstore_client_lib_fake/lib/api_exception.dart | 1 + .../petstore/dart2/petstore_client_lib_fake/lib/api_helper.dart | 2 +- .../lib/api_exception.dart | 1 + .../lib/api_helper.dart | 2 +- 8 files changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/dart2/api_exception.mustache b/modules/openapi-generator/src/main/resources/dart2/api_exception.mustache index 40f4fda731e..28f734e5587 100644 --- a/modules/openapi-generator/src/main/resources/dart2/api_exception.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/api_exception.mustache @@ -10,6 +10,7 @@ class ApiException implements Exception { Exception innerException; StackTrace stackTrace; + @override String toString() { if (message == null) { return 'ApiException'; diff --git a/modules/openapi-generator/src/main/resources/dart2/api_helper.mustache b/modules/openapi-generator/src/main/resources/dart2/api_helper.mustache index 92f394176f6..e99fbb0505d 100644 --- a/modules/openapi-generator/src/main/resources/dart2/api_helper.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/api_helper.mustache @@ -19,7 +19,7 @@ Iterable _convertParametersForCollectionFormat( final params = []; // preconditions - if (name != null && !name.isEmpty && value != null) { + if (name != null && name.isNotEmpty && value != null) { if (value is List) { // get the collection format, default: csv collectionFormat = (collectionFormat == null || collectionFormat.isEmpty) diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_exception.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_exception.dart index 1537c9769b2..86e2054bffe 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_exception.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_exception.dart @@ -19,6 +19,7 @@ class ApiException implements Exception { Exception innerException; StackTrace stackTrace; + @override String toString() { if (message == null) { return 'ApiException'; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_helper.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_helper.dart index 4135dcf95b2..cb1db7f0a01 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_helper.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_helper.dart @@ -28,7 +28,7 @@ Iterable _convertParametersForCollectionFormat( final params = []; // preconditions - if (name != null && !name.isEmpty && value != null) { + if (name != null && name.isNotEmpty && value != null) { if (value is List) { // get the collection format, default: csv collectionFormat = (collectionFormat == null || collectionFormat.isEmpty) diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_exception.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_exception.dart index 1537c9769b2..86e2054bffe 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_exception.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_exception.dart @@ -19,6 +19,7 @@ class ApiException implements Exception { Exception innerException; StackTrace stackTrace; + @override String toString() { if (message == null) { return 'ApiException'; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_helper.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_helper.dart index 96214037944..474cfb4294f 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_helper.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_helper.dart @@ -28,7 +28,7 @@ Iterable _convertParametersForCollectionFormat( final params = []; // preconditions - if (name != null && !name.isEmpty && value != null) { + if (name != null && name.isNotEmpty && value != null) { if (value is List) { // get the collection format, default: csv collectionFormat = (collectionFormat == null || collectionFormat.isEmpty) diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_exception.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_exception.dart index 1537c9769b2..86e2054bffe 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_exception.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_exception.dart @@ -19,6 +19,7 @@ class ApiException implements Exception { Exception innerException; StackTrace stackTrace; + @override String toString() { if (message == null) { return 'ApiException'; diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_helper.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_helper.dart index 51db433eb30..e88f8cc2987 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_helper.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_helper.dart @@ -28,7 +28,7 @@ Iterable _convertParametersForCollectionFormat( final params = []; // preconditions - if (name != null && !name.isEmpty && value != null) { + if (name != null && name.isNotEmpty && value != null) { if (value is List) { // get the collection format, default: csv collectionFormat = (collectionFormat == null || collectionFormat.isEmpty) From 4e48dae8e4b824d84c84930d2fc05d23ccbcad21 Mon Sep 17 00:00:00 2001 From: Anders Aaen Springborg Date: Mon, 24 May 2021 05:11:44 +0200 Subject: [PATCH 038/192] New generator | Arduino cpp (#9489) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * initil tiny client generator * Helper string * WIP: added helper file with json helper functions * WIP: model implementation.. Working on JSON * Added codegen files for model and helper * WIP: toJson() * Added mapping configurations * Upadet string compare * Removed redundant namespaces * Added files for example * fixed syntax errors * fixed syntax errors * header generation * unittest example for pet class * Refactored mustache & fixed logical errors * WIP: unit test mustache format * Removed legacy file * mustache service * Declare service in Java file * Removed legacy file * removed legacy code * Documentation * Added folder structure + new supporting files * Added file to run all unittests * Refactored unit tests * typemappings and new paths * First service impl * Added esp32 and esp8266 env * Added default values * Added cli option to specify controller * added type decl method * Added stringify methods * service get requests * Fix helper header * post merge fix * fix long test * Tiny namespace * remove shared pointer * include petapi * stringify * return problems * Canged logic for response-body handling * Implemented last logic for reponse handeling * Implemented constructor logic * first tiny sample * update basepath to petstore v3 * standard main example * root certificate example * root folder * TODO cleanup * exclude features * supports delete again!👷 * remove todo ❌ * new main example ❣️ * new main example ❣️ * Make our feature set realistic * fix indentation * HTTP / HTTPS Connection * Root certificate sample * https vs http 👨🏻‍🔬 * fix lint in template * default value for controller in config * new readme 📜 * remove old comments * removed unused testfile * no default root certificate * new main * remove test * Update platformio.ini.mustache 🤷‍♂️ * Update platformio.ini.mustache remove native * added support info * Add namespace to Pet 🐅 * bourne compatibility fix * spelling error in python file * bourne python script 🐍 * Version bump * Add bourne script to readme * update main sample, from template * pre_compiling_bourne.py.mustache to samples folder 📃 * set header Content'type to json * map todo🗺️ * remove unused debug flag⚒️ * added support for ESP8266 ༼ つ ◕_◕ ༽つ * added new sample for ESP32 📀 * 🎯 * removed use of namespace std ❌ * removed use of "__" in variables * removed unused code in destructor * fixed type comparison * move default ctor to header * added zero initialized primitive variables * moved variable to TypeMappings * updated ifndefines * Extra comment for build error in standard example 🦸🏽‍ * afer cpp-ish cast from std::string to uint8* cast🏰 * excluded maps type * Documentation og generator Co-authored-by: kaareHH Co-authored-by: mkakbas <45030188+mkakbas@users.noreply.github.com> Co-authored-by: mkakbas --- bin/configs/tiny-cpp-client-petstore-new.yaml | 7 + docs/generators/tiny-cpp.md | 243 ++++++++++ .../languages/TinyCppClientCodegen.java | 338 ++++++++++++++ .../org.openapitools.codegen.CodegenConfig | 1 + .../resources/tiny-cpp-client/README.mustache | 43 ++ .../tiny-cpp-client/helpers-body.mustache | 102 +++++ .../tiny-cpp-client/helpers-header.mustache | 22 + .../resources/tiny-cpp-client/main.mustache | 40 ++ .../tiny-cpp-client/model-body.mustache | 160 +++++++ .../tiny-cpp-client/model-header.mustache | 81 ++++ .../tiny-cpp-client/platformio.ini.mustache | 19 + .../pre_compiling_bourne.py.mustache | 25 ++ .../tiny-cpp-client/root.cert.mustache | 53 +++ .../tiny-cpp-client/run-tests.mustache | 44 ++ .../service/AbstractService.cpp.mustache | 15 + .../service/AbstractService.h.mustache | 39 ++ .../service/Response.h.mustache | 25 ++ .../tiny-cpp-client/service/api-body.mustache | 219 +++++++++ .../service/api-header.mustache | 74 ++++ .../tiny-cpp-client/unit-test-model.mustache | 161 +++++++ .../tiny-cpp-client/unittest.mustache | 132 ++++++ samples/client/petstore/tiny/cpp/.gitignore | 5 + .../tiny/cpp/.openapi-generator-ignore | 23 + .../tiny/cpp/.openapi-generator/FILES | 30 ++ .../tiny/cpp/.openapi-generator/VERSION | 1 + samples/client/petstore/tiny/cpp/README.md | 73 +++ .../tiny/cpp/lib/Models/ApiResponse.cpp | 139 ++++++ .../tiny/cpp/lib/Models/ApiResponse.h | 78 ++++ .../petstore/tiny/cpp/lib/Models/Category.cpp | 106 +++++ .../petstore/tiny/cpp/lib/Models/Category.h | 70 +++ .../petstore/tiny/cpp/lib/Models/Helpers.cpp | 102 +++++ .../petstore/tiny/cpp/lib/Models/Helpers.h | 22 + .../petstore/tiny/cpp/lib/Models/Order.cpp | 238 ++++++++++ .../petstore/tiny/cpp/lib/Models/Order.h | 102 +++++ .../petstore/tiny/cpp/lib/Models/Pet.cpp | 274 ++++++++++++ .../client/petstore/tiny/cpp/lib/Models/Pet.h | 105 +++++ .../petstore/tiny/cpp/lib/Models/Tag.cpp | 106 +++++ .../client/petstore/tiny/cpp/lib/Models/Tag.h | 70 +++ .../petstore/tiny/cpp/lib/Models/User.cpp | 304 +++++++++++++ .../petstore/tiny/cpp/lib/Models/User.h | 118 +++++ .../cpp/lib/TestFiles/ApiResponseTest.cpp | 139 ++++++ .../tiny/cpp/lib/TestFiles/CategoryTest.cpp | 97 ++++ .../tiny/cpp/lib/TestFiles/OrderTest.cpp | 245 ++++++++++ .../tiny/cpp/lib/TestFiles/PetTest.cpp | 145 ++++++ .../tiny/cpp/lib/TestFiles/TagTest.cpp | 97 ++++ .../tiny/cpp/lib/TestFiles/UserTest.cpp | 349 +++++++++++++++ .../tiny/cpp/lib/service/AbstractService.cpp | 8 + .../tiny/cpp/lib/service/AbstractService.h | 28 ++ .../petstore/tiny/cpp/lib/service/PetApi.cpp | 418 ++++++++++++++++++ .../petstore/tiny/cpp/lib/service/PetApi.h | 163 +++++++ .../petstore/tiny/cpp/lib/service/Response.h | 25 ++ .../tiny/cpp/lib/service/StoreApi.cpp | 185 ++++++++ .../petstore/tiny/cpp/lib/service/StoreApi.h | 83 ++++ .../petstore/tiny/cpp/lib/service/UserApi.cpp | 366 +++++++++++++++ .../petstore/tiny/cpp/lib/service/UserApi.h | 147 ++++++ .../client/petstore/tiny/cpp/platformio.ini | 7 + .../petstore/tiny/cpp/pre_compiling_bourne.py | 25 ++ samples/client/petstore/tiny/cpp/root.cert | 53 +++ samples/client/petstore/tiny/cpp/src/main.cpp | 37 ++ .../petstore/tiny/cpp/test/RunTests.cpp | 204 +++++++++ 60 files changed, 6630 insertions(+) create mode 100644 bin/configs/tiny-cpp-client-petstore-new.yaml create mode 100644 docs/generators/tiny-cpp.md create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TinyCppClientCodegen.java create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/README.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/helpers-body.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/helpers-header.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/main.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/model-body.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/model-header.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/platformio.ini.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/pre_compiling_bourne.py.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/root.cert.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/run-tests.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/service/AbstractService.cpp.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/service/AbstractService.h.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/service/Response.h.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/service/api-body.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/service/api-header.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/unit-test-model.mustache create mode 100644 modules/openapi-generator/src/main/resources/tiny-cpp-client/unittest.mustache create mode 100644 samples/client/petstore/tiny/cpp/.gitignore create mode 100644 samples/client/petstore/tiny/cpp/.openapi-generator-ignore create mode 100644 samples/client/petstore/tiny/cpp/.openapi-generator/FILES create mode 100644 samples/client/petstore/tiny/cpp/.openapi-generator/VERSION create mode 100644 samples/client/petstore/tiny/cpp/README.md create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/ApiResponse.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/ApiResponse.h create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/Category.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/Category.h create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/Helpers.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/Helpers.h create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/Order.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/Order.h create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/Pet.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/Pet.h create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/Tag.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/Tag.h create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/User.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/Models/User.h create mode 100644 samples/client/petstore/tiny/cpp/lib/TestFiles/ApiResponseTest.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/TestFiles/CategoryTest.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/TestFiles/OrderTest.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/TestFiles/PetTest.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/TestFiles/TagTest.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/TestFiles/UserTest.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/service/AbstractService.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/service/AbstractService.h create mode 100644 samples/client/petstore/tiny/cpp/lib/service/PetApi.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/service/PetApi.h create mode 100644 samples/client/petstore/tiny/cpp/lib/service/Response.h create mode 100644 samples/client/petstore/tiny/cpp/lib/service/StoreApi.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/service/StoreApi.h create mode 100644 samples/client/petstore/tiny/cpp/lib/service/UserApi.cpp create mode 100644 samples/client/petstore/tiny/cpp/lib/service/UserApi.h create mode 100644 samples/client/petstore/tiny/cpp/platformio.ini create mode 100644 samples/client/petstore/tiny/cpp/pre_compiling_bourne.py create mode 100644 samples/client/petstore/tiny/cpp/root.cert create mode 100644 samples/client/petstore/tiny/cpp/src/main.cpp create mode 100644 samples/client/petstore/tiny/cpp/test/RunTests.cpp diff --git a/bin/configs/tiny-cpp-client-petstore-new.yaml b/bin/configs/tiny-cpp-client-petstore-new.yaml new file mode 100644 index 00000000000..e80824e989a --- /dev/null +++ b/bin/configs/tiny-cpp-client-petstore-new.yaml @@ -0,0 +1,7 @@ +generatorName: tiny-cpp +outputDir: samples/client/petstore/tiny/cpp +inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml +templateDir: modules/openapi-generator/src/main/resources/tiny-cpp-client +additionalProperties: + hideGenerationTimestamp: "true" + controller: "esp32" diff --git a/docs/generators/tiny-cpp.md b/docs/generators/tiny-cpp.md new file mode 100644 index 00000000000..cd3877236ec --- /dev/null +++ b/docs/generators/tiny-cpp.md @@ -0,0 +1,243 @@ +--- +title: Config Options for tiny-cpp +sidebar_label: tiny-cpp +--- + +These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details. + +| Option | Description | Values | Default | +| ------ | ----------- | ------ | ------- | +|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false| +|controller|name of microcontroller (e.g esp32 or esp8266)| |esp32| +|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
    **false**
    The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
    **true**
    Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
    |true| +|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true| +|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|
    **true**
    The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
    **false**
    The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
    |true| +|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| +|reservedWordPrefix|Prefix to prepend to reserved words in order to avoid conflicts| |r_| +|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| +|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| +|variableNameFirstCharacterUppercase|Make first character of variable name uppercase (eg. value -> Value)| |true| + +## IMPORT MAPPING + +| Type/Alias | Imports | +| ---------- | ------- | + + +## INSTANTIATION TYPES + +| Type/Alias | Instantiated By | +| ---------- | --------------- | + + +## LANGUAGE PRIMITIVES + +
      +
    • bool
    • +
    • double
    • +
    • float
    • +
    • int
    • +
    • long
    • +
    • std::string
    • +
    + +## RESERVED WORDS + +
      +
    • alignas
    • +
    • alignof
    • +
    • and
    • +
    • and_eq
    • +
    • asm
    • +
    • auto
    • +
    • bitand
    • +
    • bitor
    • +
    • bool
    • +
    • break
    • +
    • case
    • +
    • catch
    • +
    • char
    • +
    • char16_t
    • +
    • char32_t
    • +
    • class
    • +
    • compl
    • +
    • concept
    • +
    • const
    • +
    • const_cast
    • +
    • constexpr
    • +
    • continue
    • +
    • decltype
    • +
    • default
    • +
    • delete
    • +
    • do
    • +
    • double
    • +
    • dynamic_cast
    • +
    • else
    • +
    • enum
    • +
    • explicit
    • +
    • export
    • +
    • extern
    • +
    • false
    • +
    • float
    • +
    • for
    • +
    • friend
    • +
    • goto
    • +
    • if
    • +
    • inline
    • +
    • int
    • +
    • linux
    • +
    • long
    • +
    • mutable
    • +
    • namespace
    • +
    • new
    • +
    • noexcept
    • +
    • not
    • +
    • not_eq
    • +
    • nullptr
    • +
    • operator
    • +
    • or
    • +
    • or_eq
    • +
    • private
    • +
    • protected
    • +
    • public
    • +
    • register
    • +
    • reinterpret_cast
    • +
    • requires
    • +
    • return
    • +
    • short
    • +
    • signed
    • +
    • sizeof
    • +
    • static
    • +
    • static_assert
    • +
    • static_cast
    • +
    • struct
    • +
    • switch
    • +
    • template
    • +
    • this
    • +
    • thread_local
    • +
    • throw
    • +
    • true
    • +
    • try
    • +
    • typedef
    • +
    • typeid
    • +
    • typename
    • +
    • union
    • +
    • unsigned
    • +
    • using
    • +
    • virtual
    • +
    • void
    • +
    • volatile
    • +
    • wchar_t
    • +
    • while
    • +
    • xor
    • +
    • xor_eq
    • +
    + +## FEATURE SET + + +### Client Modification Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|BasePath|✗|ToolingExtension +|Authorizations|✗|ToolingExtension +|UserAgent|✗|ToolingExtension +|MockServer|✗|ToolingExtension + +### Data Type Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Custom|✗|OAS2,OAS3 +|Int32|✓|OAS2,OAS3 +|Int64|✓|OAS2,OAS3 +|Float|✓|OAS2,OAS3 +|Double|✓|OAS2,OAS3 +|Decimal|✓|ToolingExtension +|String|✓|OAS2,OAS3 +|Byte|✓|OAS2,OAS3 +|Binary|✓|OAS2,OAS3 +|Boolean|✓|OAS2,OAS3 +|Date|✓|OAS2,OAS3 +|DateTime|✓|OAS2,OAS3 +|Password|✓|OAS2,OAS3 +|File|✓|OAS2 +|Array|✓|OAS2,OAS3 +|Maps|✗|ToolingExtension +|CollectionFormat|✓|OAS2 +|CollectionFormatMulti|✓|OAS2 +|Enum|✓|OAS2,OAS3 +|ArrayOfEnum|✓|ToolingExtension +|ArrayOfModel|✓|ToolingExtension +|ArrayOfCollectionOfPrimitives|✓|ToolingExtension +|ArrayOfCollectionOfModel|✓|ToolingExtension +|ArrayOfCollectionOfEnum|✓|ToolingExtension +|MapOfEnum|✗|ToolingExtension +|MapOfModel|✗|ToolingExtension +|MapOfCollectionOfPrimitives|✗|ToolingExtension +|MapOfCollectionOfModel|✗|ToolingExtension +|MapOfCollectionOfEnum|✗|ToolingExtension + +### Documentation Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Readme|✓|ToolingExtension +|Model|✓|ToolingExtension +|Api|✓|ToolingExtension + +### Global Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Host|✓|OAS2,OAS3 +|BasePath|✓|OAS2,OAS3 +|Info|✓|OAS2,OAS3 +|Schemes|✗|OAS2,OAS3 +|PartialSchemes|✓|OAS2,OAS3 +|Consumes|✓|OAS2 +|Produces|✓|OAS2 +|ExternalDocumentation|✓|OAS2,OAS3 +|Examples|✓|OAS2,OAS3 +|XMLStructureDefinitions|✗|OAS2,OAS3 +|MultiServer|✗|OAS3 +|ParameterizedServer|✗|OAS3 +|ParameterStyling|✗|OAS3 +|Callbacks|✗|OAS3 +|LinkObjects|✗|OAS3 + +### Parameter Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Path|✓|OAS2,OAS3 +|Query|✗|OAS2,OAS3 +|Header|✗|OAS2,OAS3 +|Body|✓|OAS2 +|FormUnencoded|✗|OAS2 +|FormMultipart|✗|OAS2 +|Cookie|✗|OAS3 + +### Schema Support Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Simple|✓|OAS2,OAS3 +|Composite|✓|OAS2,OAS3 +|Polymorphism|✗|OAS2,OAS3 +|Union|✗|OAS3 + +### Security Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|BasicAuth|✓|OAS2,OAS3 +|ApiKey|✓|OAS2,OAS3 +|OpenIDConnect|✗|OAS3 +|BearerToken|✓|OAS3 +|OAuth2_Implicit|✓|OAS2,OAS3 +|OAuth2_Password|✓|OAS2,OAS3 +|OAuth2_ClientCredentials|✓|OAS2,OAS3 +|OAuth2_AuthorizationCode|✓|OAS2,OAS3 + +### Wire Format Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|JSON|✓|OAS2,OAS3 +|XML|✗|OAS2,OAS3 +|PROTOBUF|✗|ToolingExtension +|Custom|✗|OAS2,OAS3 diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TinyCppClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TinyCppClientCodegen.java new file mode 100644 index 00000000000..91a9a95b5e4 --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TinyCppClientCodegen.java @@ -0,0 +1,338 @@ +package org.openapitools.codegen.languages; + +import org.openapitools.codegen.*; +import io.swagger.v3.oas.models.media.Schema; +import io.swagger.v3.parser.util.SchemaTypeUtil; +import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.utils.ModelUtils; + +import java.io.File; +import java.util.*; + +import org.apache.commons.lang3.StringUtils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenConfig { + public static final String PROJECT_NAME = "TinyClient"; + + static final Logger LOGGER = LoggerFactory.getLogger(TinyCppClientCodegen.class); + + public static final String MICROCONTROLLER = "controller"; + public static final String rootFolder = ""; + protected String controller = "esp32"; + + + public CodegenType getTag() { + return CodegenType.CLIENT; + } + + /** + * Configures a friendly name for the generator. This will be used by the + * generator to select the library with the -g flag. + * + * @return the friendly name for the generator + */ + public String getName() { + return "tiny-cpp"; + } + + /** + * Returns human-friendly help for the generator. Provide the consumer with + * help tips, parameters here + * + * @return A string value for the help message + */ + public String getHelp() { + return "Generates a Arduino rest client."; + } + + public void addControllerToAdditionalProperties(){ + Map supportedControllers = new HashMap(){{ + put("esp32", "isESP32"); + put("esp8266", "isESP8266"); + }}; + if (supportedControllers.containsKey(controller)) { + additionalProperties.put(supportedControllers.get(controller), true); + } + else { + //String msg = String.format("The specified controller: %s is not supported.\nSupported controllers are: %s", + // controller, + // supportedControllers.keySet()); + throw new UnsupportedOperationException("Supported controllers are: ESP32, ESP8266"); + } + } + + public TinyCppClientCodegen() { + super(); + + modifyFeatureSet(feature -> feature + .excludeGlobalFeatures( + GlobalFeature.XMLStructureDefinitions, + GlobalFeature.Callbacks, + GlobalFeature.LinkObjects, + GlobalFeature.ParameterStyling, + GlobalFeature.MultiServer) + .excludeSchemaSupportFeatures( + SchemaSupportFeature.Polymorphism + ) + .excludeParameterFeatures( + ParameterFeature.Cookie, + ParameterFeature.Header, + ParameterFeature.FormUnencoded, + ParameterFeature.FormMultipart, + ParameterFeature.Query + ) + .excludeDataTypeFeatures( + DataTypeFeature.Enum, + DataTypeFeature.Maps, + DataTypeFeature.MapOfCollectionOfEnum, + DataTypeFeature.MapOfCollectionOfModel, + DataTypeFeature.MapOfCollectionOfPrimitives, + DataTypeFeature.MapOfEnum, + DataTypeFeature.MapOfModel + + ) + .excludeWireFormatFeatures( + WireFormatFeature.XML, + WireFormatFeature.PROTOBUF, + WireFormatFeature.Custom + ) + .includeDocumentationFeatures( + DocumentationFeature.Readme + )); + + outputFolder = "generated-code" + File.separator + "tiny-cpp"; + embeddedTemplateDir = templateDir = "tiny-cpp-client"; + + String libFolder = "lib"; + // MODELS + modelPackage = libFolder + File.separator + "Models"; + modelTemplateFiles.put("model-header.mustache", ".h"); + modelTemplateFiles.put("model-body.mustache", ".cpp"); + + // MODELS: Helpers + supportingFiles.add(new SupportingFile("helpers-header.mustache", modelPackage, "Helpers.h")); + supportingFiles.add(new SupportingFile("helpers-body.mustache", modelPackage, "Helpers.cpp")); + + // MODELS: TESTS + testPackage = libFolder + File.separator + "TestFiles"; + modelTestTemplateFiles.put("unit-test-model.mustache", ".cpp"); + supportingFiles.add(new SupportingFile("run-tests.mustache", "test", "RunTests.cpp")); + + // SERVICES + apiPackage = TinyCppClientCodegen.libFolder + File.separator + "service"; + apiTemplateFiles.put("service/api-header.mustache".replace('/', File.separatorChar), ".h"); + apiTemplateFiles.put("service/api-body.mustache".replace('/', File.separatorChar), ".cpp"); + + // SERVICES: Helpers + supportingFiles.add(new SupportingFile("service/Response.h.mustache", serviceFolder, "Response.h")); + supportingFiles.add(new SupportingFile("service/AbstractService.h.mustache", serviceFolder, "AbstractService.h")); + supportingFiles.add(new SupportingFile("service/AbstractService.cpp.mustache", serviceFolder, "AbstractService.cpp")); + + + // Main + supportingFiles.add(new SupportingFile("main.mustache", TinyCppClientCodegen.sourceFolder, "main.cpp")); + + // Config files + supportingFiles.add(new SupportingFile("README.mustache", rootFolder, "README.md")); + supportingFiles.add(new SupportingFile("platformio.ini.mustache", rootFolder, "platformio.ini")); + supportingFiles.add(new SupportingFile("root.cert.mustache", rootFolder, "root.cert")); + supportingFiles.add(new SupportingFile("README.mustache", rootFolder, "README.md")); + supportingFiles.add(new SupportingFile("pre_compiling_bourne.py.mustache", rootFolder, "pre_compiling_bourne.py")); + + + + defaultIncludes = new HashSet( + Arrays.asList( + "bool", + "int", + "long", + "double", + "float") + ); + languageSpecificPrimitives = new HashSet( + Arrays.asList( + "bool", + "int", + "long", + "double", + "float", + "std::string") + ); + + + + + + super.typeMapping = new HashMap(); + typeMapping.put("string", "std::string"); + typeMapping.put("integer", "int"); + typeMapping.put("boolean", "bool"); + typeMapping.put("array", "std::list"); + typeMapping.put("DateTime", "std::string"); + + cliOptions.add(new CliOption(MICROCONTROLLER, "name of microcontroller (e.g esp32 or esp8266)"). + defaultValue("esp32")); + + makeTypeMappings(); + + } + + + // FilePaths + private static final String sourceFolder = "src"; + private static final String libFolder = "lib"; + private static final String serviceFolder = libFolder + File.separator + "service"; + + @Override + public String getTypeDeclaration(String str) { + return str; + } + + private void makeTypeMappings() { + // Types + String cpp_array_type = "std::list"; + typeMapping = new HashMap<>(); + + typeMapping.put("string", "std::string"); + typeMapping.put("integer", "int"); + typeMapping.put("float", "float"); + typeMapping.put("long", "long"); + typeMapping.put("boolean", "bool"); + typeMapping.put("double", "double"); + typeMapping.put("array", cpp_array_type); + typeMapping.put("number", "long"); + typeMapping.put("binary", "std::string"); + typeMapping.put("password", "std::string"); + typeMapping.put("file", "std::string"); + typeMapping.put("DateTime", "std::string"); + typeMapping.put("Date", "std::string"); + typeMapping.put("UUID", "std::string"); + typeMapping.put("URI", "std::string"); + } + + + + @Override + public void processOpts() { + super.processOpts(); + // Throw exception if http and esp8266 + + // -- --additional-properties=controller= + if (additionalProperties.containsKey(MICROCONTROLLER)) { + controller = additionalProperties.get(MICROCONTROLLER).toString(); + } + + addControllerToAdditionalProperties(); + + LOGGER.info("Generator targeting the following microcontroller: {}", controller); + } + + + @Override + public String toInstantiationType(Schema p) { + if (ModelUtils.isArraySchema(p)) { + return instantiationTypes.get("array"); + } else { + return null; + } + } + + + @Override + public String getTypeDeclaration(Schema p) { + String openAPIType = getSchemaType(p); + if (languageSpecificPrimitives.contains(openAPIType)) { + return toModelName(openAPIType); + } else { + return openAPIType + ""; + } + } + + + @Override + public String getSchemaType(Schema p) { + String openAPIType = super.getSchemaType(p); + String type = null; + if (typeMapping.containsKey(openAPIType)) { + type = typeMapping.get(openAPIType); + if (languageSpecificPrimitives.contains(type)) { + return toModelName(type); + } + } else { + type = openAPIType; + } + return toModelName(type); + } + + @Override + public String toModelName(String type) { + if (typeMapping.keySet().contains(type) || + typeMapping.values().contains(type) || + defaultIncludes.contains(type) || + languageSpecificPrimitives.contains(type)) { + return type; + } else { + return Character.toUpperCase(type.charAt(0)) + type.substring(1); + } + } + + @Override + public String toModelImport(String name) { + if (name.equals("std::string")) { + return "#include "; + } else if (name.equals("std::list")) { + return "#include "; + } else if (name.equals("Map")) { + return "#include "; + } + return "#include \"" + name + ".h\""; + } + + + + @Override + public String toApiImport(String name) { + return super.toApiImport(name); + } + + @Override + public String toVarName(String name) { + String paramName = name.replaceAll("[^a-zA-Z0-9_]", ""); + if (name.length() > 0 ) { + paramName = Character.toLowerCase(paramName.charAt(0)) + paramName.substring(1); + } + if (isReservedWord(paramName)) { + return escapeReservedWord(paramName); + } + return "" + paramName; + } + + public String toDefaultValue(Schema p) { + if (ModelUtils.isBooleanSchema(p)) { + return "bool(false)"; + } else if (ModelUtils.isNumberSchema(p)) { + return "float(0)"; + } else if (ModelUtils.isIntegerSchema(p)) { + if (SchemaTypeUtil.INTEGER64_FORMAT.equals(p.getFormat())) { + return "long(0)"; + } + return "int(0)"; + } else if (ModelUtils.isArraySchema(p)) { + return "std::list"; + } else if (!StringUtils.isEmpty(p.get$ref())) { + return toModelName(ModelUtils.getSimpleRef(p.get$ref())) + "()"; + } else if (ModelUtils.isDateSchema(p) || ModelUtils.isDateTimeSchema(p)) { + return "std::string()"; + } else if (ModelUtils.isStringSchema(p)) { + return "std::string()"; + } + return "null"; + } + + + + +} diff --git a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig index eacec0f5127..1d4ef4f2568 100644 --- a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig +++ b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig @@ -132,4 +132,5 @@ org.openapitools.codegen.languages.TypeScriptNestjsClientCodegen org.openapitools.codegen.languages.TypeScriptNodeClientCodegen org.openapitools.codegen.languages.TypeScriptReduxQueryClientCodegen org.openapitools.codegen.languages.TypeScriptRxjsClientCodegen +org.openapitools.codegen.languages.TinyCppClientCodegen org.openapitools.codegen.languages.GoEchoServerCodegen diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/README.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/README.mustache new file mode 100644 index 00000000000..e749562a0aa --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/README.mustache @@ -0,0 +1,43 @@ +# Documentation for OpenAPI Petstore +This is a client generator for microcontrollers on the Espressif32 platform and the Arduino framework +After the client have been generated, you have to change these following variablies: +- root.cert | Provide your service root certificate. +- src/main.cpp | Change wifi name +- src/main.cpp | Change wifi password +- lib/service/AbstractService.h | Change to your url + +# Documentation for {{#openAPI}}{{#info}}{{title}} {{version}} Tiny client cpp (Arduino) {{/info}}{{/openAPI}} + +The project is structured like this: +``` +samples/client/petstore/tiny/cpp/ +├── lib +│ ├── Models +│ ├── service +│ └── TestFiles +├── platformio.ini +├── pre_compiling_bourne.py +├── README.md +├── root.cert +├── src +│ └── main.cpp +└── test + └── RunTests.cpp +``` + +All URIs are relative to {{{scheme}}}://{{{host}}}{{{basePath}}} +{{#apiInfo}}{{#apis}}{{#operations}} +### {{classname}} +|Method | HTTP request | Description| +|------------- | ------------- | -------------| + {{#operation}} +|*{{operationId}}* | *{{httpMethod}}* {{{path}}} | {{{summary}}}.| + {{/operation}} +{{/operations}}{{/apis}}{{/apiInfo}} + +## What are the Model files for the data structures/objects? +|Class | Description| +|------------- | -------------| +{{#models}}{{#model}}|*{{classname}}* | {{{description}}}| +{{/model}}{{/models}} + diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/helpers-body.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/helpers-body.mustache new file mode 100644 index 00000000000..c3935b37cde --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/helpers-body.mustache @@ -0,0 +1,102 @@ +#include "Helpers.h" +#include +#include + +bool isprimitive(std::string type){ + if(type == "std::string" || + type == "int" || + type == "float" || + type == "long" || + type == "double" || + type == "bool" || + type == "std::map" || + type == "std::list") + { + return true; + } + return false; +} + + +void +jsonToValue(void* target, bourne::json value, std::string type) +{ + if (target == NULL || value.is_null()) { + return; + } + + else if (type.compare("bool") == 0) + { + bool* val = static_cast (target); + *val = value.to_bool(); + } + + else if (type.compare("int") == 0) + { + int* val = static_cast (target); + *val = value.to_int(); + } + + else if (type.compare("float") == 0) + { + float* val = static_cast (target); + *val = (float)(value.to_float()); + } + + else if (type.compare("long") == 0) + { + long* val = static_cast (target); + *val = (long)(value.to_int()); + } + + else if (type.compare("double") == 0) + { + double* val = static_cast (target); + *val = value.to_float(); + } + + else if (type.compare("std::string") == 0) + { + std::string* val = static_cast (target); + *val = value.to_string(); + } + else { + return; + } +} + +std::string +stringify(long input){ + std::stringstream stream; + stream << input; + return stream.str(); + +}; + +std::string +stringify(int input){ + std::stringstream stream; + stream << input; + return stream.str(); +}; + +std::string +stringify(double input){ + std::stringstream stream; + stream << input; + return stream.str(); +}; + +std::string +stringify(float input){ + std::stringstream stream; + stream << input; + return stream.str(); +}; + +std::string +stringify(std::string input){ + std::stringstream stream; + stream << input; + return stream.str(); +}; diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/helpers-header.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/helpers-header.mustache new file mode 100644 index 00000000000..5ef7d9afdf7 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/helpers-header.mustache @@ -0,0 +1,22 @@ +#ifndef TINY_CPP_CLIENT_HELPERS_H_ +#define TINY_CPP_CLIENT_HELPERS_H_ + +#include +#include "bourne/json.hpp" + +bool isprimitive(std::string type); + +void jsonToValue(void* target, bourne::json value, std::string type); + +std::string stringify(long input); + +std::string stringify(int input); + +std::string stringify(double input); + +std::string stringify(float input); + +std::string stringify(std::string input); + +#endif /* TINY_CPP_CLIENT_HELPERS_H_ */ + diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/main.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/main.mustache new file mode 100644 index 00000000000..56170a91e0f --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/main.mustache @@ -0,0 +1,40 @@ +#include "PetApi.h" +{{#isESP8266}} +#include "ESP8266WiFi.h" +{{/isESP8266}} + +const char* ssid = "your wifi name"; // TODO Change wifi name +const char* password = "Your wifi password"; //TODO Change wifi password + + +void setup(){ + //Initialize serial and wait for port to open: + Serial.begin(9600); + delay(100); + + Serial.print("Attempting to connect to SSID: "); + Serial.println(ssid); + WiFi.begin(ssid, password); + + // attempt to connect to Wifi network: + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + // wait 1 second for re-trying + delay(1000); + } + + Serial.print("Connected to "); + Serial.println(ssid); + + //Print LAN IP. + Serial.print("IP address set: "); + Serial.println(WiFi.localIP()); + + Tiny::PetApi petapi; + auto resp = petapi.getPetById(10); + Serial.println(resp.code); + Tiny::Pet pet = resp.obj; + Serial.println(pet.toJson().dump().c_str()); +} + +void loop(){} diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/model-body.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/model-body.mustache new file mode 100644 index 00000000000..b2f2ee66fd9 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/model-body.mustache @@ -0,0 +1,160 @@ + +{{#models}}{{#model}} +#include "{{classname}}.h" + +using namespace Tiny; + +{{classname}}::{{classname}}() +{ + {{#vars}} + {{#isContainer}} + {{name}} = {{defaultValue}}<{{#items}}{{baseType}}{{/items}}>(); + {{/isContainer}} + {{^isContainer}} + {{name}} = {{defaultValue}}; + {{/isContainer}} + {{/vars}} +} + +{{classname}}::{{classname}}(std::string jsonString) +{ + this->fromJson(jsonString); +} + +{{classname}}::~{{classname}}() +{ + +} + +void +{{classname}}::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + {{#vars}} + const char *{{name}}Key = "{{baseName}}"; + + if(object.has_key({{name}}Key)) + { + bourne::json value = object[{{name}}Key]; + + {{#isContainer}} + {{#isArray}} + + std::list<{{#items}}{{dataType}}{{/items}}> {{name}}_list; + {{#items}}{{dataType}}{{/items}} element; + for(auto& var : value.array_range()) + { + {{#items}} + + {{#isPrimitiveType}} + jsonToValue(&element, var, "{{dataType}}"); + {{/isPrimitiveType}} + + {{^isPrimitiveType}} + element.fromJson(var.dump()); + {{/isPrimitiveType}} + + {{/items}} + {{name}}_list.push_back(element); + } + {{name}} = {{name}}_list; + + {{/isArray}} + {{/isContainer}} + + {{^isContainer}} + + {{#isPrimitiveType}} + jsonToValue(&{{name}}, value, "{{baseType}}"); + {{/isPrimitiveType}} + + {{^isPrimitiveType}} + {{baseType}}* obj = &{{name}}; + obj->fromJson(value.dump()); + {{/isPrimitiveType}} + + {{/isContainer}} + } + + {{/vars}} + +} + +bourne::json +{{classname}}::toJson() +{ + bourne::json object = bourne::json::object(); + + {{#vars}} + + {{#isContainer}} + {{#isArray}} + + {{#items}} + {{#isPrimitiveType}} + + std::list<{{dataType}}> {{name}}_list = {{getter}}(); + bourne::json {{name}}_arr = bourne::json::array(); + + for(auto& var : {{name}}_list) + { + {{name}}_arr.append(var); + } + object["{{name}}"] = {{name}}_arr; + + + {{/isPrimitiveType}} + + {{^isPrimitiveType}} + std::list<{{dataType}}> {{name}}_list = {{getter}}(); + bourne::json {{name}}_arr = bourne::json::array(); + + for(auto& var : {{name}}_list) + { + {{dataType}} obj = var; + {{name}}_arr.append(obj.toJson()); + } + object["{{name}}"] = {{name}}_arr; + + {{/isPrimitiveType}} + {{/items}} + {{/isArray}} + {{/isContainer}} + + + {{^isContainer}} + + {{#isPrimitiveType}} + object["{{name}}"] = {{getter}}(); + {{/isPrimitiveType}} + + {{^isPrimitiveType}} + object["{{name}}"] = {{getter}}().toJson(); + {{/isPrimitiveType}} + + {{/isContainer}} + {{/vars}} + + return object; + +} + +{{#vars}} +{{dataType}}{{#isContainer}}{{#isMap}}{{/isMap}}{{^isMap}}<{{#items}}{{dataType}}{{/items}}>{{/isMap}}{{/isContainer}} +{{classname}}::{{getter}}() +{ + return {{name}}; +} + +void +{{classname}}::{{setter}}({{dataType}} {{#isContainer}}{{#isMap}}{{/isMap}}{{^isMap}}<{{#items}}{{dataType}}{{/items}}>{{/isMap}}{{/isContainer}} {{name}}) +{ + this->{{name}} = {{name}}; +} + +{{/vars}} + + +{{/model}} +{{/models}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/model-header.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/model-header.mustache new file mode 100644 index 00000000000..a71ba0677c1 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/model-header.mustache @@ -0,0 +1,81 @@ + +{{#models}}{{#model}}/* + * {{classname}}.h + * + * {{description}} + */ + +#ifndef TINY_CPP_CLIENT_{{classname}}_H_ +#define TINY_CPP_CLIENT_{{classname}}_H_ + +{{/model}}{{/models}} +#include +#include "bourne/json.hpp" +#include "Helpers.h" +{{#imports}} +{{{import}}} +{{/imports}} + +namespace Tiny { +{{#models}}{{#model}} + +/*! \brief {{{description}}} + * + * \ingroup Models + * + */ + +class {{classname}}{ +public: + + /*! \brief Constructor. + */ + {{classname}}(); + {{classname}}(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~{{classname}}(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + {{#vars}} + /*! \brief Get {{{description}}} + */ + {{dataType}}{{#isContainer}}{{#isMap}}{{/isMap}}{{^isMap}}<{{#items}}{{dataType}}{{/items}}>{{/isMap}}{{/isContainer}} {{getter}}(); + + /*! \brief Set {{{description}}} + */ + void {{setter}}({{dataType}} {{#isContainer}}{{#isMap}}{{/isMap}}{{^isMap}}<{{#items}}{{dataType}}{{/items}}>{{/isMap}}{{/isContainer}} {{name}}); + {{/vars}} + + + private: + {{#vars}} + {{^isContainer}} + {{#isPrimitiveType}} + {{dataType}} {{name}}{}; + {{/isPrimitiveType}} + {{^isPrimitiveType}} + {{dataType}} {{name}}; + {{/isPrimitiveType}} + {{/isContainer}} + {{#isContainer}} + {{dataType}}{{#isMap}}{{/isMap}}{{^isMap}}<{{#items}}{{dataType}}{{/items}}>{{/isMap}} {{name}}; + {{/isContainer}} + {{/vars}} +}; +{{/model}} +{{/models}} +} + +#endif /* TINY_CPP_CLIENT_{{classname}}_H_ */ diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/platformio.ini.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/platformio.ini.mustache new file mode 100644 index 00000000000..1e364ee0ab2 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/platformio.ini.mustache @@ -0,0 +1,19 @@ +{{#isESP32}} +[env:esp32] +platform = espressif32 +board = nodemcu-32s +framework = arduino +lib_deps = https://github.com/steinwurf/bourne.git +extra_scripts = pre_compiling_bourne.py +{{/isESP32}} + +{{#isESP8266}} +[env:esp8266] +platform = espressif8266 +board = d1_mini +framework = arduino +lib_deps = https://github.com/steinwurf/bourne.git +build_flags = -fexceptions +build_unflags = -fno-exceptions +extra_scripts = pre_compiling_bourne.py +{{/isESP8266}} diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/pre_compiling_bourne.py.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/pre_compiling_bourne.py.mustache new file mode 100644 index 00000000000..96356dcdf15 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/pre_compiling_bourne.py.mustache @@ -0,0 +1,25 @@ +Import("env") + +## Compatibility for bourne to work on microcontrollers +# We insert '#define _GLIBCXX_USE_C99' in files that use std::stoll or std::to_string +def insert_c99_into(file): + import fileinput + + path = env['PROJECT_LIBDEPS_DIR'] + "/" + env['PIOENV'] + "/bourne/src/bourne/" + file + value = '#define _GLIBCXX_USE_C99 1\n' + + for line in fileinput.FileInput(path,inplace=1): + if line.startswith('#define _GLIBCXX_USE_C99'): + continue + elif line.startswith('// D'): + line=line.replace(line,line+value) + print(line, end='') + +def fix_parser(): + insert_c99_into('detail/parser.cpp') + +def fix_json(): + insert_c99_into('json.cpp') + +fix_parser() +fix_json() \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/root.cert.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/root.cert.mustache new file mode 100644 index 00000000000..bad9c08efad --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/root.cert.mustache @@ -0,0 +1,53 @@ +// TODO: Provide your service root certificate. +// Below is two examples of root certificates. + +// Let's encrypt root certificate +/** +"-----BEGIN CERTIFICATE-----\n" \ +"MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n" \ +"MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" \ +"d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n" \ +"QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\n" \ +"MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n" \ +"b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n" \ +"9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\n" \ +"CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\n" \ +"nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n" \ +"43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\n" \ +"T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\n" \ +"gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\n" \ +"BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\n" \ +"TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\n" \ +"DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\n" \ +"hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n" \ +"06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\n" \ +"PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\n" \ +"YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n" \ +"CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n" \ +"-----END CERTIFICATE-----\n" +*/ + +// Amazon_Root_CA_1.pem +/** +"-----BEGIN CERTIFICATE-----\n" \ +"MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\n" \ +"ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\n" \ +"b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL\n" \ +"MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\n" \ +"b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj\n" \ +"ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM\n" \ +"9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw\n" \ +"IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6\n" \ +"VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L\n" \ +"93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm\n" \ +"jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\n" \ +"AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA\n" \ +"A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI\n" \ +"U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs\n" \ +"N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv\n" \ +"o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU\n" \ +"5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\n" \ +"rqXRfboQnoZsG4q5WTP468SQvvG5\n" \ +"-----END CERTIFICATE-----\n" \ +*/ + diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/run-tests.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/run-tests.mustache new file mode 100644 index 00000000000..54bf326c43a --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/run-tests.mustache @@ -0,0 +1,44 @@ +{{#models}}{{#model}} +#include "{{classname}}Test.cpp" +{{/model}}{{/models}} + + +void setUp(){} + +void tearDown(){} + +void runTests(){ + {{#models}}{{#model}} + {{#vars}} + {{#isPrimitiveType}}{{^isArray}} + RUN_TEST(test_{{classname}}_{{name}}_is_assigned_from_json); + {{/isArray}}{{/isPrimitiveType}} + {{/vars}} + {{/model}}{{/models}} + + {{#models}}{{#model}} + {{#vars}} + {{#isPrimitiveType}}{{^isArray}} + RUN_TEST(test_{{classname}}_{{name}}_is_converted_to_json); + {{/isArray}}{{/isPrimitiveType}} + {{/vars}} + {{/model}}{{/models}} + + +} + +int main(void) { + UNITY_BEGIN(); + runTests(); + return UNITY_END(); +} + +void setup() { + UNITY_BEGIN(); + runTests(); + UNITY_END(); +} + +void loop() { + +} diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/AbstractService.cpp.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/AbstractService.cpp.mustache new file mode 100644 index 00000000000..0c056c85ae3 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/AbstractService.cpp.mustache @@ -0,0 +1,15 @@ +#include "AbstractService.h" +#include "Arduino.h" + +{{#isESP8266}} +void Tiny::AbstractService::begin(std::string url){ + http.begin(client, String(url.c_str())); +} +{{/isESP8266}} + + +{{#isESP32}} +void Tiny::AbstractService::begin(std::string url){ + http.begin(String(url.c_str()), test_root_ca); //HTTPS connection +} +{{/isESP32}} diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/AbstractService.h.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/AbstractService.h.mustache new file mode 100644 index 00000000000..7dc46b5b20f --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/AbstractService.h.mustache @@ -0,0 +1,39 @@ +#ifndef TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ +#define TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ +{{#isESP8266}} +#include +#include +{{/isESP8266}} + +{{#isESP32}} +#include "HTTPClient.h" +{{/isESP32}} +#include "Response.h" +namespace Tiny { + +/** +* Class +* Generated with openapi::tiny-cpp-client +*/ +class AbstractService { +public: +HTTPClient http; +{{#isESP8266}} +WiFiClient client; +{{/isESP8266}} +std::string basepath = "https://petstore3.swagger.io/api/v3"; // TODO: change to your url + +void begin(std::string url); + +{{#isESP32}} +// Go and comment out a certificate in root.cert, if you get an error here +// Certificate from file +const char* test_root_ca = +#include "../../root.cert" +; +{{/isESP32}} + +}; // end class +}// namespace Tinyclient + +#endif /* TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ */ diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/Response.h.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/Response.h.mustache new file mode 100644 index 00000000000..9b7b616b8f1 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/Response.h.mustache @@ -0,0 +1,25 @@ +#ifndef TINY_CPP_CLIENT_RESPONSE_H_ +#define TINY_CPP_CLIENT_RESPONSE_H_ +#include + +namespace Tiny { + +/** +* Class +* Generated with openapi::tiny-cpp-client +*/ +template + class Response { + public: + + Response(T _obj, int _code){ + obj = _obj; + code = _code; + } + + int code; + T obj; + }; + } // namespace Tinyclient + +#endif /* TINY_CPP_CLIENT_RESPONSE_H_ */ diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/api-body.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/api-body.mustache new file mode 100644 index 00000000000..dc129868837 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/api-body.mustache @@ -0,0 +1,219 @@ +#include "{{classname}}.h" + +using namespace Tiny; + +{{#operations}} + + {{! Method }} + {{#operation}} + + Response< + {{#returnType}} + {{#returnContainer}} + {{#isArray}} + {{returnType}}<{{returnBaseType}}> + {{/isArray}} + {{#isMap}} + String + {{/isMap}} + {{/returnContainer}} + {{^returnContainer}} + {{returnType}} + {{/returnContainer}} + {{/returnType}} + {{^returnType}} + String + {{/returnType}} + > + {{classname}}:: + {{! Method name }} + {{nickname}}( + {{! Params }} + {{#allParams}} + {{! Arrays }} + {{#isContainer}}{{{dataType}}}<{{baseType}}> {{paramName}}{{/isContainer}}{{#isMap}}// TODO: Implement Maps{{/isMap}} + {{! Normal types/objects }} + {{^isContainer}}{{{dataType}}} {{paramName}}{{/isContainer}} + {{^-last}}, {{/-last}} + {{/allParams}} + ) + {{! Method start}} + { + std::string url = basepath + "{{{path}}}"; //{{#pathParams}}{{{paramName}}} {{/pathParams}} + // Query | {{#queryParams}}{{paramName}} {{/queryParams}} + // Headers | {{#headerParams}}{{paramName}} {{/headerParams}} + // Form | {{#formParams}}{{paramName}} {{/formParams}} + // Body | {{#bodyParam}}{{paramName}}{{/bodyParam}} + + {{#pathParams}} + std::string s_{{paramName}}("{"); + s_{{paramName}}.append("{{{baseName}}}"); + s_{{paramName}}.append("}"); + + int pos = url.find(s_{{paramName}}); + + url.erase(pos, s_{{paramName}}.length()); + url.insert(pos, stringify({{paramName}})); + {{/pathParams}} + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | {{httpMethod}} + {{#bodyParam}} + http.addHeader("Content-Type", "application/json"); + + {{#isContainer}} + {{#isArray}} + {{#items}} + {{#isPrimitiveType}} + bourne::json tmp_arr = bourne::json::array(); + for(auto& var : {{paramName}}) + { + tmp_arr.append(var); + } + payload = tmp_arr.dump(); + {{/isPrimitiveType}} + + {{^isPrimitiveType}} + bourne::json tmp_arr = bourne::json::array(); + for(auto& var : {{paramName}}) + { + auto tmp = var.toJson(); + tmp_arr.append(tmp); + + } + payload = tmp_arr.dump(); + {{/isPrimitiveType}} + {{/items}} + {{/isArray}} + {{/isContainer}} + + {{^isContainer}} + {{#isPrimitiveType}} + payload = stringify({{paramName}}); + {{/isPrimitiveType}} + + {{^isPrimitiveType}} + payload = {{paramName}}.toJson().dump(); + {{/isPrimitiveType}} + {{/isContainer}} + + {{/bodyParam}} + int httpCode = http.sendRequest("{{httpMethod}}", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + {{#returnType}} + + {{#returnContainer}} + {{#isArray}} + + std::list<{{returnBaseType}}> obj = std::list<{{returnBaseType}}>(); + bourne::json jsonPayload(output_string); + + {{#returnBaseType}} + + {{#isBool}} + for(auto& var : jsonPayload.array_range()) + { + {{returnBaseType}} tmp = var.to_bool(); + obj.push_back(tmp); + } + {{/isBool}} + + {{#isInteger}} + for(auto& var : jsonPayload.array_range()) + { + {{returnBaseType}} tmp = var.to_int(); + obj.push_back(tmp); + } + {{/isInteger}} + + {{#isLong}} + for(auto& var : jsonPayload.array_range()) + { + {{returnBaseType}} tmp = (long)(var.to_int()); + obj.push_back(tmp); + } + {{/isLong}} + + {{#isFloat}} + for(auto& var : jsonPayload.array_range()) + { + {{returnBaseType}} tmp = (float)(var.to_float()); + obj.push_back(tmp); + } + {{/isFloat}} + + {{#isString}} + for(auto& var : jsonPayload.array_range()) + { + {{returnBaseType}} tmp = var.to_string(); + obj.push_back(tmp); + } + {{/isString}} + + + {{^isBool}}{{^isInteger}}{{^isLong}}{{^isString}}{{^isFloat}} + for(auto& var : jsonPayload.array_range()) + { + {{returnBaseType}} tmp(var.dump()); + obj.push_back(tmp); + } + {{/isFloat}}{{/isString}}{{/isLong}}{{/isInteger}}{{/isBool}} + + {{/returnBaseType}} + + {{/isArray}} + + {{#isMap}} + //TODO: Implement map logic here + {{/isMap}} + + {{/returnContainer}} + + {{^returnContainer}} + {{#returnTypeIsPrimitive}} + bourne::json jsonPayload(output_string); + {{returnType}} obj; + jsonToValue(&obj, jsonPayload, "{{returnType}}"); + {{/returnTypeIsPrimitive}} + + {{^returnTypeIsPrimitive}} + {{returnType}} obj(output_string); + {{/returnTypeIsPrimitive}} + {{/returnContainer}} + + {{/returnType}} + + {{#returnType}} + {{#returnContainer}} + {{#isArray}} + Response<{{returnType}}<{{returnBaseType}}>> response(obj, httpCode); + {{/isArray}} + {{#isMap}} + //TODO: No support for maps. + Response response(output, httpCode); + {{/isMap}} + {{/returnContainer}} + {{^returnContainer}} + Response<{{returnType}}> response(obj, httpCode); + {{/returnContainer}} + {{/returnType}} + {{^returnType}} + Response response(output, httpCode); + {{/returnType}} + return response; + } + {{/operation}} + + + +{{/operations}} + diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/api-header.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/api-header.mustache new file mode 100644 index 00000000000..416369dcf31 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/api-header.mustache @@ -0,0 +1,74 @@ +#ifndef TINY_CPP_CLIENT_{{classname}}_H_ +#define TINY_CPP_CLIENT_{{classname}}_H_ + +{{{defaultInclude}}} +#include "Response.h" +#include "Arduino.h" +#include "AbstractService.h" +#include "Helpers.h" +#include + +{{#imports}} +{{{import}}} +{{/imports}} + +namespace Tiny { + +{{#operations}} +/** + * Class {{basename}} + * Generated with openapi::tiny-cpp-client + */ + +class {{classname}} : public AbstractService { +public: + {{! Constructor }} + {{classname}}() = default; + + {{! Destructor }} + virtual ~{{classname}}() = default; + + {{! Service endpoint }} + {{#operation}} + /** + * {{{summary}}}. + * + * {{{notes}}}{{#allParams}} + * \param {{paramName}} {{{description}}}{{#required}} *Required*{{/required}}{{/allParams}} + */ + Response< + {{#returnType}} + {{#returnContainer}} + {{#isArray}} + {{returnType}}<{{returnBaseType}}> + {{/isArray}} + {{#isMap}} + String + {{/isMap}} + {{/returnContainer}} + {{^returnContainer}} + {{returnType}} + {{/returnContainer}} + {{/returnType}} + {{^returnType}} + String + {{/returnType}} + > + {{! Method name }} + {{nickname}}( + {{! Params }} + {{#allParams}} + {{! Arrays }} + {{#isContainer}}{{{dataType}}}<{{baseType}}> {{paramName}}{{/isContainer}} + {{! Normal types/objects }} + {{^isContainer}}{{{dataType}}} {{paramName}}{{/isContainer}} + {{^-last}}, {{/-last}} + {{/allParams}} + ); + {{/operation}} +}; {{! Service endpoint end }} +{{/operations}} + +} {{! namespace end }} + +#endif /* TINY_CPP_CLIENT_{{classname}}_H_ */ \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/unit-test-model.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/unit-test-model.mustache new file mode 100644 index 00000000000..14894973b81 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/unit-test-model.mustache @@ -0,0 +1,161 @@ +{{#models}}{{#model}} +#include "{{classname}}.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + +{{#vars}} +{{#isPrimitiveType}}{{^isArray}} +void test_{{classname}}_{{name}}_is_assigned_from_json() +{ + {{#isInteger}} + bourne::json input = + { + "{{name}}", 1 + }; + + {{classname}} obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.{{getter}}()); + {{/isInteger}} + + + {{#isString}} + bourne::json input = + { + "{{name}}", "hello" + }; + + {{classname}} obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.{{getter}}().c_str()); + {{/isString}} + + + {{#isBoolean}} + bourne::json input = + { + "{{name}}", true + }; + + {{classname}} obj(input.dump()); + + TEST_ASSERT(true == obj.{{getter}}()); + {{/isBoolean}} + + + {{#isLong}} + bourne::json input = + { + "{{name}}", 1 + }; + + {{classname}} obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.{{getter}}()); + {{/isLong}} + + + {{#isFloat}} + bourne::json input = + { + "{{name}}", 1.0 + }; + + {{classname}} obj(input.dump()); + + TEST_ASSERT_EQUAL_FLOAT(1.0, obj.{{getter}}()); + {{/isFloat}} +} +{{/isArray}}{{/isPrimitiveType}} +{{/vars}} + +{{#vars}} +{{#isPrimitiveType}}{{^isArray}} +void test_{{classname}}_{{name}}_is_converted_to_json() +{ + {{#isInteger}} + bourne::json input = + { + "{{name}}", 1 + }; + + {{classname}} obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["{{name}}"] == output["{{name}}"]); + {{/isInteger}} + + {{#isString}} + bourne::json input = + { + "{{name}}", "hello" + }; + + {{classname}} obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["{{name}}"] == output["{{name}}"]); + {{/isString}} + + {{#isBoolean}} + bourne::json input = + { + "{{name}}", true + }; + + {{classname}} obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["{{name}}"] == output["{{name}}"]); + {{/isBoolean}} + + {{#isLong}} + bourne::json input = + { + "{{name}}", 1 + }; + + {{classname}} obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["{{name}}"] == output["{{name}}"]); + {{/isLong}} + + {{#isFloat}} + bourne::json input = + { + "{{name}}", 1.0 + }; + + {{classname}} obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["{{name}}"] == output["{{name}}"]); + {{/isFloat}} +} +{{/isArray}}{{/isPrimitiveType}} +{{/vars}} + +{{/model}} +{{/models}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/unittest.mustache b/modules/openapi-generator/src/main/resources/tiny-cpp-client/unittest.mustache new file mode 100644 index 00000000000..c6a1f23a6e3 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/tiny-cpp-client/unittest.mustache @@ -0,0 +1,132 @@ +#include "Pet.h" +#include +#include +#include +#include "bourne/json.hpp" + +void setUp(){ +} + + +void tearDown(){ +} + +void test_id_is_assigned(){ + bourne::json petJSON = + { + "id", 1 + }; + + Tiny::Pet pet(petJSON.dump()); + + + TEST_ASSERT_EQUAL_INT(1, pet.getId()); +} + +void test_name_is_assigned(){ + bourne::json petJSON = + { + "name", "Shiba" + }; + + Tiny::Pet pet(petJSON.dump()); + + TEST_ASSERT_EQUAL_STRING("Shiba", pet.getName().c_str()); + +} + +void test_status_is_assigned(){ + bourne::json petJSON = + { + "status", "Sold" + }; + + Tiny::Pet pet(petJSON.dump()); + + TEST_ASSERT_EQUAL_STRING("Sold", pet.getStatus().c_str()); +} + +void test_category_object_is_assigned(){ + + bourne::json catJSON = + { + "id", 3, + "name", "Small dog" + }; + + bourne::json petJSON = + { + "category", catJSON, + }; + + Tiny::Pet pet(petJSON.dump()); + + TEST_ASSERT_EQUAL_STRING("Small dog", pet.getCategory().getName().c_str()); + TEST_ASSERT_EQUAL_INT(3, pet.getCategory().getId()); + +} + + +void test_photo_string_list_is_assigned(){ + + std::list photoList = {"url1", "url2", "url3", "url4"}; + + bourne::json photoARR = bourne::json::array("url1", "url2", "url3", "url4"); + + bourne::json petJSON = + { + "photoUrls", photoARR, + }; + + Tiny::Pet pet(petJSON.dump()); + + TEST_ASSERT(photoList == pet.getPhotoUrls()); +} + +void test_tags_object_list_is_assigned(){ + bourne::json aTag = + { + "id", 2, + "name", "Hello" + }; + + bourne::json tagsARR = bourne::json::array(aTag); + bourne::json petJSON = + { + "tags", tagsARR, + }; + + Tiny::Pet pet(petJSON.dump()); + + TEST_ASSERT_EQUAL_INT(2, pet.getTags().front().getId()); + TEST_ASSERT_EQUAL_STRING("Hello", pet.getTags().front().getName().c_str()); +} + + + +void runTests(){ + RUN_TEST(test_id_is_assigned); + RUN_TEST(test_category_object_is_assigned); + RUN_TEST(test_name_is_assigned); + RUN_TEST(test_status_is_assigned); + RUN_TEST(test_photo_string_list_is_assigned); + RUN_TEST(test_tags_object_list_is_assigned); +} + +int main(void) { + UNITY_BEGIN(); + runTests(); + return UNITY_END(); +} + +void setup() { + UNITY_BEGIN(); + runTests(); + UNITY_END(); +} + +void loop() { + +} + + diff --git a/samples/client/petstore/tiny/cpp/.gitignore b/samples/client/petstore/tiny/cpp/.gitignore new file mode 100644 index 00000000000..89cc49cbd65 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/.gitignore @@ -0,0 +1,5 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch diff --git a/samples/client/petstore/tiny/cpp/.openapi-generator-ignore b/samples/client/petstore/tiny/cpp/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/tiny/cpp/.openapi-generator/FILES b/samples/client/petstore/tiny/cpp/.openapi-generator/FILES new file mode 100644 index 00000000000..1024d945064 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/.openapi-generator/FILES @@ -0,0 +1,30 @@ +README.md +README.md +lib/Models/ApiResponse.cpp +lib/Models/ApiResponse.h +lib/Models/Category.cpp +lib/Models/Category.h +lib/Models/Helpers.cpp +lib/Models/Helpers.h +lib/Models/Order.cpp +lib/Models/Order.h +lib/Models/Pet.cpp +lib/Models/Pet.h +lib/Models/Tag.cpp +lib/Models/Tag.h +lib/Models/User.cpp +lib/Models/User.h +lib/service/AbstractService.cpp +lib/service/AbstractService.h +lib/service/PetApi.cpp +lib/service/PetApi.h +lib/service/Response.h +lib/service/StoreApi.cpp +lib/service/StoreApi.h +lib/service/UserApi.cpp +lib/service/UserApi.h +platformio.ini +pre_compiling_bourne.py +root.cert +src/main.cpp +test/RunTests.cpp diff --git a/samples/client/petstore/tiny/cpp/.openapi-generator/VERSION b/samples/client/petstore/tiny/cpp/.openapi-generator/VERSION new file mode 100644 index 00000000000..6555596f931 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/tiny/cpp/README.md b/samples/client/petstore/tiny/cpp/README.md new file mode 100644 index 00000000000..e8bf721275b --- /dev/null +++ b/samples/client/petstore/tiny/cpp/README.md @@ -0,0 +1,73 @@ +# Documentation for OpenAPI Petstore +This is a client generator for microcontrollers on the Espressif32 platform and the Arduino framework +After the client have been generated, you have to change these following variablies: +- root.cert | Provide your service root certificate. +- src/main.cpp | Change wifi name +- src/main.cpp | Change wifi password +- lib/service/AbstractService.h | Change to your url + +# Documentation for OpenAPI Petstore 1.0.0 Tiny client cpp (Arduino) + +The project is structured like this: +``` +samples/client/petstore/tiny/cpp/ +├── lib +│ ├── Models +│ ├── service +│ └── TestFiles +├── platformio.ini +├── pre_compiling_bourne.py +├── README.md +├── root.cert +├── src +│ └── main.cpp +└── test + └── RunTests.cpp +``` + +All URIs are relative to http://petstore.swagger.iohttp://petstore.swagger.io/v2 + +### PetApi +|Method | HTTP request | Description| +|------------- | ------------- | -------------| +|*addPet* | *POST* /pet | Add a new pet to the store.| +|*deletePet* | *DELETE* /pet/{petId} | Deletes a pet.| +|*findPetsByStatus* | *GET* /pet/findByStatus | Finds Pets by status.| +|*findPetsByTags* | *GET* /pet/findByTags | Finds Pets by tags.| +|*getPetById* | *GET* /pet/{petId} | Find pet by ID.| +|*updatePet* | *PUT* /pet | Update an existing pet.| +|*updatePetWithForm* | *POST* /pet/{petId} | Updates a pet in the store with form data.| +|*uploadFile* | *POST* /pet/{petId}/uploadImage | uploads an image.| + +### StoreApi +|Method | HTTP request | Description| +|------------- | ------------- | -------------| +|*deleteOrder* | *DELETE* /store/order/{orderId} | Delete purchase order by ID.| +|*getInventory* | *GET* /store/inventory | Returns pet inventories by status.| +|*getOrderById* | *GET* /store/order/{orderId} | Find purchase order by ID.| +|*placeOrder* | *POST* /store/order | Place an order for a pet.| + +### UserApi +|Method | HTTP request | Description| +|------------- | ------------- | -------------| +|*createUser* | *POST* /user | Create user.| +|*createUsersWithArrayInput* | *POST* /user/createWithArray | Creates list of users with given input array.| +|*createUsersWithListInput* | *POST* /user/createWithList | Creates list of users with given input array.| +|*deleteUser* | *DELETE* /user/{username} | Delete user.| +|*getUserByName* | *GET* /user/{username} | Get user by user name.| +|*loginUser* | *GET* /user/login | Logs user into the system.| +|*logoutUser* | *GET* /user/logout | Logs out current logged in user session.| +|*updateUser* | *PUT* /user/{username} | Updated user.| + + +## What are the Model files for the data structures/objects? +|Class | Description| +|------------- | -------------| +|*ApiResponse* | Describes the result of uploading an image resource| +|*Category* | A category for a pet| +|*Order* | An order for a pets from the pet store| +|*Pet* | A pet for sale in the pet store| +|*Tag* | A tag for a pet| +|*User* | A User who is purchasing from the pet store| + + diff --git a/samples/client/petstore/tiny/cpp/lib/Models/ApiResponse.cpp b/samples/client/petstore/tiny/cpp/lib/Models/ApiResponse.cpp new file mode 100644 index 00000000000..e9be9e2b618 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/ApiResponse.cpp @@ -0,0 +1,139 @@ + + +#include "ApiResponse.h" + +using namespace Tiny; + +ApiResponse::ApiResponse() +{ + code = int(0); + type = std::string(); + message = std::string(); +} + +ApiResponse::ApiResponse(std::string jsonString) +{ + this->fromJson(jsonString); +} + +ApiResponse::~ApiResponse() +{ + +} + +void +ApiResponse::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + const char *codeKey = "code"; + + if(object.has_key(codeKey)) + { + bourne::json value = object[codeKey]; + + + + jsonToValue(&code, value, "int"); + + + } + + const char *typeKey = "type"; + + if(object.has_key(typeKey)) + { + bourne::json value = object[typeKey]; + + + + jsonToValue(&type, value, "std::string"); + + + } + + const char *messageKey = "message"; + + if(object.has_key(messageKey)) + { + bourne::json value = object[messageKey]; + + + + jsonToValue(&message, value, "std::string"); + + + } + + +} + +bourne::json +ApiResponse::toJson() +{ + bourne::json object = bourne::json::object(); + + + + + + object["code"] = getCode(); + + + + + + + object["type"] = getType(); + + + + + + + object["message"] = getMessage(); + + + + return object; + +} + +int +ApiResponse::getCode() +{ + return code; +} + +void +ApiResponse::setCode(int code) +{ + this->code = code; +} + +std::string +ApiResponse::getType() +{ + return type; +} + +void +ApiResponse::setType(std::string type) +{ + this->type = type; +} + +std::string +ApiResponse::getMessage() +{ + return message; +} + +void +ApiResponse::setMessage(std::string message) +{ + this->message = message; +} + + + diff --git a/samples/client/petstore/tiny/cpp/lib/Models/ApiResponse.h b/samples/client/petstore/tiny/cpp/lib/Models/ApiResponse.h new file mode 100644 index 00000000000..dbaf8abcaf3 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/ApiResponse.h @@ -0,0 +1,78 @@ + +/* + * ApiResponse.h + * + * Describes the result of uploading an image resource + */ + +#ifndef TINY_CPP_CLIENT_ApiResponse_H_ +#define TINY_CPP_CLIENT_ApiResponse_H_ + + +#include +#include "bourne/json.hpp" +#include "Helpers.h" + +namespace Tiny { + + +/*! \brief Describes the result of uploading an image resource + * + * \ingroup Models + * + */ + +class ApiResponse{ +public: + + /*! \brief Constructor. + */ + ApiResponse(); + ApiResponse(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~ApiResponse(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + /*! \brief Get + */ + int getCode(); + + /*! \brief Set + */ + void setCode(int code); + /*! \brief Get + */ + std::string getType(); + + /*! \brief Set + */ + void setType(std::string type); + /*! \brief Get + */ + std::string getMessage(); + + /*! \brief Set + */ + void setMessage(std::string message); + + + private: + int code{}; + std::string type{}; + std::string message{}; +}; +} + +#endif /* TINY_CPP_CLIENT_ApiResponse_H_ */ diff --git a/samples/client/petstore/tiny/cpp/lib/Models/Category.cpp b/samples/client/petstore/tiny/cpp/lib/Models/Category.cpp new file mode 100644 index 00000000000..950b06ffd44 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/Category.cpp @@ -0,0 +1,106 @@ + + +#include "Category.h" + +using namespace Tiny; + +Category::Category() +{ + id = long(0); + name = std::string(); +} + +Category::Category(std::string jsonString) +{ + this->fromJson(jsonString); +} + +Category::~Category() +{ + +} + +void +Category::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + const char *idKey = "id"; + + if(object.has_key(idKey)) + { + bourne::json value = object[idKey]; + + + + jsonToValue(&id, value, "long"); + + + } + + const char *nameKey = "name"; + + if(object.has_key(nameKey)) + { + bourne::json value = object[nameKey]; + + + + jsonToValue(&name, value, "std::string"); + + + } + + +} + +bourne::json +Category::toJson() +{ + bourne::json object = bourne::json::object(); + + + + + + object["id"] = getId(); + + + + + + + object["name"] = getName(); + + + + return object; + +} + +long +Category::getId() +{ + return id; +} + +void +Category::setId(long id) +{ + this->id = id; +} + +std::string +Category::getName() +{ + return name; +} + +void +Category::setName(std::string name) +{ + this->name = name; +} + + + diff --git a/samples/client/petstore/tiny/cpp/lib/Models/Category.h b/samples/client/petstore/tiny/cpp/lib/Models/Category.h new file mode 100644 index 00000000000..9c90e3dd416 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/Category.h @@ -0,0 +1,70 @@ + +/* + * Category.h + * + * A category for a pet + */ + +#ifndef TINY_CPP_CLIENT_Category_H_ +#define TINY_CPP_CLIENT_Category_H_ + + +#include +#include "bourne/json.hpp" +#include "Helpers.h" + +namespace Tiny { + + +/*! \brief A category for a pet + * + * \ingroup Models + * + */ + +class Category{ +public: + + /*! \brief Constructor. + */ + Category(); + Category(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~Category(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + /*! \brief Get + */ + long getId(); + + /*! \brief Set + */ + void setId(long id); + /*! \brief Get + */ + std::string getName(); + + /*! \brief Set + */ + void setName(std::string name); + + + private: + long id{}; + std::string name{}; +}; +} + +#endif /* TINY_CPP_CLIENT_Category_H_ */ diff --git a/samples/client/petstore/tiny/cpp/lib/Models/Helpers.cpp b/samples/client/petstore/tiny/cpp/lib/Models/Helpers.cpp new file mode 100644 index 00000000000..c3935b37cde --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/Helpers.cpp @@ -0,0 +1,102 @@ +#include "Helpers.h" +#include +#include + +bool isprimitive(std::string type){ + if(type == "std::string" || + type == "int" || + type == "float" || + type == "long" || + type == "double" || + type == "bool" || + type == "std::map" || + type == "std::list") + { + return true; + } + return false; +} + + +void +jsonToValue(void* target, bourne::json value, std::string type) +{ + if (target == NULL || value.is_null()) { + return; + } + + else if (type.compare("bool") == 0) + { + bool* val = static_cast (target); + *val = value.to_bool(); + } + + else if (type.compare("int") == 0) + { + int* val = static_cast (target); + *val = value.to_int(); + } + + else if (type.compare("float") == 0) + { + float* val = static_cast (target); + *val = (float)(value.to_float()); + } + + else if (type.compare("long") == 0) + { + long* val = static_cast (target); + *val = (long)(value.to_int()); + } + + else if (type.compare("double") == 0) + { + double* val = static_cast (target); + *val = value.to_float(); + } + + else if (type.compare("std::string") == 0) + { + std::string* val = static_cast (target); + *val = value.to_string(); + } + else { + return; + } +} + +std::string +stringify(long input){ + std::stringstream stream; + stream << input; + return stream.str(); + +}; + +std::string +stringify(int input){ + std::stringstream stream; + stream << input; + return stream.str(); +}; + +std::string +stringify(double input){ + std::stringstream stream; + stream << input; + return stream.str(); +}; + +std::string +stringify(float input){ + std::stringstream stream; + stream << input; + return stream.str(); +}; + +std::string +stringify(std::string input){ + std::stringstream stream; + stream << input; + return stream.str(); +}; diff --git a/samples/client/petstore/tiny/cpp/lib/Models/Helpers.h b/samples/client/petstore/tiny/cpp/lib/Models/Helpers.h new file mode 100644 index 00000000000..5ef7d9afdf7 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/Helpers.h @@ -0,0 +1,22 @@ +#ifndef TINY_CPP_CLIENT_HELPERS_H_ +#define TINY_CPP_CLIENT_HELPERS_H_ + +#include +#include "bourne/json.hpp" + +bool isprimitive(std::string type); + +void jsonToValue(void* target, bourne::json value, std::string type); + +std::string stringify(long input); + +std::string stringify(int input); + +std::string stringify(double input); + +std::string stringify(float input); + +std::string stringify(std::string input); + +#endif /* TINY_CPP_CLIENT_HELPERS_H_ */ + diff --git a/samples/client/petstore/tiny/cpp/lib/Models/Order.cpp b/samples/client/petstore/tiny/cpp/lib/Models/Order.cpp new file mode 100644 index 00000000000..b8b7e00d3fc --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/Order.cpp @@ -0,0 +1,238 @@ + + +#include "Order.h" + +using namespace Tiny; + +Order::Order() +{ + id = long(0); + petId = long(0); + quantity = int(0); + shipDate = std::string(); + status = std::string(); + complete = bool(false); +} + +Order::Order(std::string jsonString) +{ + this->fromJson(jsonString); +} + +Order::~Order() +{ + +} + +void +Order::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + const char *idKey = "id"; + + if(object.has_key(idKey)) + { + bourne::json value = object[idKey]; + + + + jsonToValue(&id, value, "long"); + + + } + + const char *petIdKey = "petId"; + + if(object.has_key(petIdKey)) + { + bourne::json value = object[petIdKey]; + + + + jsonToValue(&petId, value, "long"); + + + } + + const char *quantityKey = "quantity"; + + if(object.has_key(quantityKey)) + { + bourne::json value = object[quantityKey]; + + + + jsonToValue(&quantity, value, "int"); + + + } + + const char *shipDateKey = "shipDate"; + + if(object.has_key(shipDateKey)) + { + bourne::json value = object[shipDateKey]; + + + + jsonToValue(&shipDate, value, "std::string"); + + + } + + const char *statusKey = "status"; + + if(object.has_key(statusKey)) + { + bourne::json value = object[statusKey]; + + + + jsonToValue(&status, value, "std::string"); + + + } + + const char *completeKey = "complete"; + + if(object.has_key(completeKey)) + { + bourne::json value = object[completeKey]; + + + + jsonToValue(&complete, value, "bool"); + + + } + + +} + +bourne::json +Order::toJson() +{ + bourne::json object = bourne::json::object(); + + + + + + object["id"] = getId(); + + + + + + + object["petId"] = getPetId(); + + + + + + + object["quantity"] = getQuantity(); + + + + + + + object["shipDate"] = getShipDate(); + + + + + + + object["status"] = getStatus(); + + + + + + + object["complete"] = isComplete(); + + + + return object; + +} + +long +Order::getId() +{ + return id; +} + +void +Order::setId(long id) +{ + this->id = id; +} + +long +Order::getPetId() +{ + return petId; +} + +void +Order::setPetId(long petId) +{ + this->petId = petId; +} + +int +Order::getQuantity() +{ + return quantity; +} + +void +Order::setQuantity(int quantity) +{ + this->quantity = quantity; +} + +std::string +Order::getShipDate() +{ + return shipDate; +} + +void +Order::setShipDate(std::string shipDate) +{ + this->shipDate = shipDate; +} + +std::string +Order::getStatus() +{ + return status; +} + +void +Order::setStatus(std::string status) +{ + this->status = status; +} + +bool +Order::isComplete() +{ + return complete; +} + +void +Order::setComplete(bool complete) +{ + this->complete = complete; +} + + + diff --git a/samples/client/petstore/tiny/cpp/lib/Models/Order.h b/samples/client/petstore/tiny/cpp/lib/Models/Order.h new file mode 100644 index 00000000000..6f36404f959 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/Order.h @@ -0,0 +1,102 @@ + +/* + * Order.h + * + * An order for a pets from the pet store + */ + +#ifndef TINY_CPP_CLIENT_Order_H_ +#define TINY_CPP_CLIENT_Order_H_ + + +#include +#include "bourne/json.hpp" +#include "Helpers.h" + +namespace Tiny { + + +/*! \brief An order for a pets from the pet store + * + * \ingroup Models + * + */ + +class Order{ +public: + + /*! \brief Constructor. + */ + Order(); + Order(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~Order(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + /*! \brief Get + */ + long getId(); + + /*! \brief Set + */ + void setId(long id); + /*! \brief Get + */ + long getPetId(); + + /*! \brief Set + */ + void setPetId(long petId); + /*! \brief Get + */ + int getQuantity(); + + /*! \brief Set + */ + void setQuantity(int quantity); + /*! \brief Get + */ + std::string getShipDate(); + + /*! \brief Set + */ + void setShipDate(std::string shipDate); + /*! \brief Get Order Status + */ + std::string getStatus(); + + /*! \brief Set Order Status + */ + void setStatus(std::string status); + /*! \brief Get + */ + bool isComplete(); + + /*! \brief Set + */ + void setComplete(bool complete); + + + private: + long id{}; + long petId{}; + int quantity{}; + std::string shipDate{}; + std::string status{}; + bool complete{}; +}; +} + +#endif /* TINY_CPP_CLIENT_Order_H_ */ diff --git a/samples/client/petstore/tiny/cpp/lib/Models/Pet.cpp b/samples/client/petstore/tiny/cpp/lib/Models/Pet.cpp new file mode 100644 index 00000000000..57f7781aef2 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/Pet.cpp @@ -0,0 +1,274 @@ + + +#include "Pet.h" + +using namespace Tiny; + +Pet::Pet() +{ + id = long(0); + category = Category(); + name = std::string(); + photoUrls = std::list(); + tags = std::list(); + status = std::string(); +} + +Pet::Pet(std::string jsonString) +{ + this->fromJson(jsonString); +} + +Pet::~Pet() +{ + +} + +void +Pet::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + const char *idKey = "id"; + + if(object.has_key(idKey)) + { + bourne::json value = object[idKey]; + + + + jsonToValue(&id, value, "long"); + + + } + + const char *categoryKey = "category"; + + if(object.has_key(categoryKey)) + { + bourne::json value = object[categoryKey]; + + + + + Category* obj = &category; + obj->fromJson(value.dump()); + + } + + const char *nameKey = "name"; + + if(object.has_key(nameKey)) + { + bourne::json value = object[nameKey]; + + + + jsonToValue(&name, value, "std::string"); + + + } + + const char *photoUrlsKey = "photoUrls"; + + if(object.has_key(photoUrlsKey)) + { + bourne::json value = object[photoUrlsKey]; + + + std::list photoUrls_list; + std::string element; + for(auto& var : value.array_range()) + { + + jsonToValue(&element, var, "std::string"); + + + photoUrls_list.push_back(element); + } + photoUrls = photoUrls_list; + + + } + + const char *tagsKey = "tags"; + + if(object.has_key(tagsKey)) + { + bourne::json value = object[tagsKey]; + + + std::list tags_list; + Tag element; + for(auto& var : value.array_range()) + { + + + element.fromJson(var.dump()); + + tags_list.push_back(element); + } + tags = tags_list; + + + } + + const char *statusKey = "status"; + + if(object.has_key(statusKey)) + { + bourne::json value = object[statusKey]; + + + + jsonToValue(&status, value, "std::string"); + + + } + + +} + +bourne::json +Pet::toJson() +{ + bourne::json object = bourne::json::object(); + + + + + + object["id"] = getId(); + + + + + + + + object["category"] = getCategory().toJson(); + + + + + + object["name"] = getName(); + + + + + + std::list photoUrls_list = getPhotoUrls(); + bourne::json photoUrls_arr = bourne::json::array(); + + for(auto& var : photoUrls_list) + { + photoUrls_arr.append(var); + } + object["photoUrls"] = photoUrls_arr; + + + + + + + + + std::list tags_list = getTags(); + bourne::json tags_arr = bourne::json::array(); + + for(auto& var : tags_list) + { + Tag obj = var; + tags_arr.append(obj.toJson()); + } + object["tags"] = tags_arr; + + + + + + + + object["status"] = getStatus(); + + + + return object; + +} + +long +Pet::getId() +{ + return id; +} + +void +Pet::setId(long id) +{ + this->id = id; +} + +Category +Pet::getCategory() +{ + return category; +} + +void +Pet::setCategory(Category category) +{ + this->category = category; +} + +std::string +Pet::getName() +{ + return name; +} + +void +Pet::setName(std::string name) +{ + this->name = name; +} + +std::list +Pet::getPhotoUrls() +{ + return photoUrls; +} + +void +Pet::setPhotoUrls(std::list photoUrls) +{ + this->photoUrls = photoUrls; +} + +std::list +Pet::getTags() +{ + return tags; +} + +void +Pet::setTags(std::list tags) +{ + this->tags = tags; +} + +std::string +Pet::getStatus() +{ + return status; +} + +void +Pet::setStatus(std::string status) +{ + this->status = status; +} + + + diff --git a/samples/client/petstore/tiny/cpp/lib/Models/Pet.h b/samples/client/petstore/tiny/cpp/lib/Models/Pet.h new file mode 100644 index 00000000000..3329735f8a1 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/Pet.h @@ -0,0 +1,105 @@ + +/* + * Pet.h + * + * A pet for sale in the pet store + */ + +#ifndef TINY_CPP_CLIENT_Pet_H_ +#define TINY_CPP_CLIENT_Pet_H_ + + +#include +#include "bourne/json.hpp" +#include "Helpers.h" +#include "Category.h" +#include "Tag.h" +#include + +namespace Tiny { + + +/*! \brief A pet for sale in the pet store + * + * \ingroup Models + * + */ + +class Pet{ +public: + + /*! \brief Constructor. + */ + Pet(); + Pet(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~Pet(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + /*! \brief Get + */ + long getId(); + + /*! \brief Set + */ + void setId(long id); + /*! \brief Get + */ + Category getCategory(); + + /*! \brief Set + */ + void setCategory(Category category); + /*! \brief Get + */ + std::string getName(); + + /*! \brief Set + */ + void setName(std::string name); + /*! \brief Get + */ + std::list getPhotoUrls(); + + /*! \brief Set + */ + void setPhotoUrls(std::list photoUrls); + /*! \brief Get + */ + std::list getTags(); + + /*! \brief Set + */ + void setTags(std::list tags); + /*! \brief Get pet status in the store + */ + std::string getStatus(); + + /*! \brief Set pet status in the store + */ + void setStatus(std::string status); + + + private: + long id{}; + Category category; + std::string name{}; + std::list photoUrls; + std::list tags; + std::string status{}; +}; +} + +#endif /* TINY_CPP_CLIENT_Pet_H_ */ diff --git a/samples/client/petstore/tiny/cpp/lib/Models/Tag.cpp b/samples/client/petstore/tiny/cpp/lib/Models/Tag.cpp new file mode 100644 index 00000000000..e46d94258a1 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/Tag.cpp @@ -0,0 +1,106 @@ + + +#include "Tag.h" + +using namespace Tiny; + +Tag::Tag() +{ + id = long(0); + name = std::string(); +} + +Tag::Tag(std::string jsonString) +{ + this->fromJson(jsonString); +} + +Tag::~Tag() +{ + +} + +void +Tag::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + const char *idKey = "id"; + + if(object.has_key(idKey)) + { + bourne::json value = object[idKey]; + + + + jsonToValue(&id, value, "long"); + + + } + + const char *nameKey = "name"; + + if(object.has_key(nameKey)) + { + bourne::json value = object[nameKey]; + + + + jsonToValue(&name, value, "std::string"); + + + } + + +} + +bourne::json +Tag::toJson() +{ + bourne::json object = bourne::json::object(); + + + + + + object["id"] = getId(); + + + + + + + object["name"] = getName(); + + + + return object; + +} + +long +Tag::getId() +{ + return id; +} + +void +Tag::setId(long id) +{ + this->id = id; +} + +std::string +Tag::getName() +{ + return name; +} + +void +Tag::setName(std::string name) +{ + this->name = name; +} + + + diff --git a/samples/client/petstore/tiny/cpp/lib/Models/Tag.h b/samples/client/petstore/tiny/cpp/lib/Models/Tag.h new file mode 100644 index 00000000000..e05bcdc9290 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/Tag.h @@ -0,0 +1,70 @@ + +/* + * Tag.h + * + * A tag for a pet + */ + +#ifndef TINY_CPP_CLIENT_Tag_H_ +#define TINY_CPP_CLIENT_Tag_H_ + + +#include +#include "bourne/json.hpp" +#include "Helpers.h" + +namespace Tiny { + + +/*! \brief A tag for a pet + * + * \ingroup Models + * + */ + +class Tag{ +public: + + /*! \brief Constructor. + */ + Tag(); + Tag(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~Tag(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + /*! \brief Get + */ + long getId(); + + /*! \brief Set + */ + void setId(long id); + /*! \brief Get + */ + std::string getName(); + + /*! \brief Set + */ + void setName(std::string name); + + + private: + long id{}; + std::string name{}; +}; +} + +#endif /* TINY_CPP_CLIENT_Tag_H_ */ diff --git a/samples/client/petstore/tiny/cpp/lib/Models/User.cpp b/samples/client/petstore/tiny/cpp/lib/Models/User.cpp new file mode 100644 index 00000000000..ac84c40205a --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/User.cpp @@ -0,0 +1,304 @@ + + +#include "User.h" + +using namespace Tiny; + +User::User() +{ + id = long(0); + username = std::string(); + firstName = std::string(); + lastName = std::string(); + email = std::string(); + password = std::string(); + phone = std::string(); + userStatus = int(0); +} + +User::User(std::string jsonString) +{ + this->fromJson(jsonString); +} + +User::~User() +{ + +} + +void +User::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + const char *idKey = "id"; + + if(object.has_key(idKey)) + { + bourne::json value = object[idKey]; + + + + jsonToValue(&id, value, "long"); + + + } + + const char *usernameKey = "username"; + + if(object.has_key(usernameKey)) + { + bourne::json value = object[usernameKey]; + + + + jsonToValue(&username, value, "std::string"); + + + } + + const char *firstNameKey = "firstName"; + + if(object.has_key(firstNameKey)) + { + bourne::json value = object[firstNameKey]; + + + + jsonToValue(&firstName, value, "std::string"); + + + } + + const char *lastNameKey = "lastName"; + + if(object.has_key(lastNameKey)) + { + bourne::json value = object[lastNameKey]; + + + + jsonToValue(&lastName, value, "std::string"); + + + } + + const char *emailKey = "email"; + + if(object.has_key(emailKey)) + { + bourne::json value = object[emailKey]; + + + + jsonToValue(&email, value, "std::string"); + + + } + + const char *passwordKey = "password"; + + if(object.has_key(passwordKey)) + { + bourne::json value = object[passwordKey]; + + + + jsonToValue(&password, value, "std::string"); + + + } + + const char *phoneKey = "phone"; + + if(object.has_key(phoneKey)) + { + bourne::json value = object[phoneKey]; + + + + jsonToValue(&phone, value, "std::string"); + + + } + + const char *userStatusKey = "userStatus"; + + if(object.has_key(userStatusKey)) + { + bourne::json value = object[userStatusKey]; + + + + jsonToValue(&userStatus, value, "int"); + + + } + + +} + +bourne::json +User::toJson() +{ + bourne::json object = bourne::json::object(); + + + + + + object["id"] = getId(); + + + + + + + object["username"] = getUsername(); + + + + + + + object["firstName"] = getFirstName(); + + + + + + + object["lastName"] = getLastName(); + + + + + + + object["email"] = getEmail(); + + + + + + + object["password"] = getPassword(); + + + + + + + object["phone"] = getPhone(); + + + + + + + object["userStatus"] = getUserStatus(); + + + + return object; + +} + +long +User::getId() +{ + return id; +} + +void +User::setId(long id) +{ + this->id = id; +} + +std::string +User::getUsername() +{ + return username; +} + +void +User::setUsername(std::string username) +{ + this->username = username; +} + +std::string +User::getFirstName() +{ + return firstName; +} + +void +User::setFirstName(std::string firstName) +{ + this->firstName = firstName; +} + +std::string +User::getLastName() +{ + return lastName; +} + +void +User::setLastName(std::string lastName) +{ + this->lastName = lastName; +} + +std::string +User::getEmail() +{ + return email; +} + +void +User::setEmail(std::string email) +{ + this->email = email; +} + +std::string +User::getPassword() +{ + return password; +} + +void +User::setPassword(std::string password) +{ + this->password = password; +} + +std::string +User::getPhone() +{ + return phone; +} + +void +User::setPhone(std::string phone) +{ + this->phone = phone; +} + +int +User::getUserStatus() +{ + return userStatus; +} + +void +User::setUserStatus(int userStatus) +{ + this->userStatus = userStatus; +} + + + diff --git a/samples/client/petstore/tiny/cpp/lib/Models/User.h b/samples/client/petstore/tiny/cpp/lib/Models/User.h new file mode 100644 index 00000000000..84de5204ced --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/Models/User.h @@ -0,0 +1,118 @@ + +/* + * User.h + * + * A User who is purchasing from the pet store + */ + +#ifndef TINY_CPP_CLIENT_User_H_ +#define TINY_CPP_CLIENT_User_H_ + + +#include +#include "bourne/json.hpp" +#include "Helpers.h" + +namespace Tiny { + + +/*! \brief A User who is purchasing from the pet store + * + * \ingroup Models + * + */ + +class User{ +public: + + /*! \brief Constructor. + */ + User(); + User(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~User(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + /*! \brief Get + */ + long getId(); + + /*! \brief Set + */ + void setId(long id); + /*! \brief Get + */ + std::string getUsername(); + + /*! \brief Set + */ + void setUsername(std::string username); + /*! \brief Get + */ + std::string getFirstName(); + + /*! \brief Set + */ + void setFirstName(std::string firstName); + /*! \brief Get + */ + std::string getLastName(); + + /*! \brief Set + */ + void setLastName(std::string lastName); + /*! \brief Get + */ + std::string getEmail(); + + /*! \brief Set + */ + void setEmail(std::string email); + /*! \brief Get + */ + std::string getPassword(); + + /*! \brief Set + */ + void setPassword(std::string password); + /*! \brief Get + */ + std::string getPhone(); + + /*! \brief Set + */ + void setPhone(std::string phone); + /*! \brief Get User Status + */ + int getUserStatus(); + + /*! \brief Set User Status + */ + void setUserStatus(int userStatus); + + + private: + long id{}; + std::string username{}; + std::string firstName{}; + std::string lastName{}; + std::string email{}; + std::string password{}; + std::string phone{}; + int userStatus{}; +}; +} + +#endif /* TINY_CPP_CLIENT_User_H_ */ diff --git a/samples/client/petstore/tiny/cpp/lib/TestFiles/ApiResponseTest.cpp b/samples/client/petstore/tiny/cpp/lib/TestFiles/ApiResponseTest.cpp new file mode 100644 index 00000000000..160f4217f5d --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/TestFiles/ApiResponseTest.cpp @@ -0,0 +1,139 @@ + +#include "ApiResponse.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + + +void test_ApiResponse_code_is_assigned_from_json() +{ + bourne::json input = + { + "code", 1 + }; + + ApiResponse obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getCode()); + + + + + + + + +} + + +void test_ApiResponse_type_is_assigned_from_json() +{ + + + bourne::json input = + { + "type", "hello" + }; + + ApiResponse obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getType().c_str()); + + + + + + +} + + +void test_ApiResponse_message_is_assigned_from_json() +{ + + + bourne::json input = + { + "message", "hello" + }; + + ApiResponse obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getMessage().c_str()); + + + + + + +} + + + +void test_ApiResponse_code_is_converted_to_json() +{ + bourne::json input = + { + "code", 1 + }; + + ApiResponse obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["code"] == output["code"]); + + + + +} + + +void test_ApiResponse_type_is_converted_to_json() +{ + + bourne::json input = + { + "type", "hello" + }; + + ApiResponse obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["type"] == output["type"]); + + + +} + + +void test_ApiResponse_message_is_converted_to_json() +{ + + bourne::json input = + { + "message", "hello" + }; + + ApiResponse obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["message"] == output["message"]); + + + +} + + diff --git a/samples/client/petstore/tiny/cpp/lib/TestFiles/CategoryTest.cpp b/samples/client/petstore/tiny/cpp/lib/TestFiles/CategoryTest.cpp new file mode 100644 index 00000000000..2951856e6a5 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/TestFiles/CategoryTest.cpp @@ -0,0 +1,97 @@ + +#include "Category.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + + +void test_Category_id_is_assigned_from_json() +{ + + + + + + + bourne::json input = + { + "id", 1 + }; + + Category obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getId()); + + +} + + +void test_Category_name_is_assigned_from_json() +{ + + + bourne::json input = + { + "name", "hello" + }; + + Category obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getName().c_str()); + + + + + + +} + + + +void test_Category_id_is_converted_to_json() +{ + + + + bourne::json input = + { + "id", 1 + }; + + Category obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["id"] == output["id"]); + +} + + +void test_Category_name_is_converted_to_json() +{ + + bourne::json input = + { + "name", "hello" + }; + + Category obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["name"] == output["name"]); + + + +} + + diff --git a/samples/client/petstore/tiny/cpp/lib/TestFiles/OrderTest.cpp b/samples/client/petstore/tiny/cpp/lib/TestFiles/OrderTest.cpp new file mode 100644 index 00000000000..13125fc8fc5 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/TestFiles/OrderTest.cpp @@ -0,0 +1,245 @@ + +#include "Order.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + + +void test_Order_id_is_assigned_from_json() +{ + + + + + + + bourne::json input = + { + "id", 1 + }; + + Order obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getId()); + + +} + + +void test_Order_petId_is_assigned_from_json() +{ + + + + + + + bourne::json input = + { + "petId", 1 + }; + + Order obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getPetId()); + + +} + + +void test_Order_quantity_is_assigned_from_json() +{ + bourne::json input = + { + "quantity", 1 + }; + + Order obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getQuantity()); + + + + + + + + +} + + +void test_Order_shipDate_is_assigned_from_json() +{ + + + + + + + + +} + + +void test_Order_status_is_assigned_from_json() +{ + + + bourne::json input = + { + "status", "hello" + }; + + Order obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getStatus().c_str()); + + + + + + +} + + +void test_Order_complete_is_assigned_from_json() +{ + + + + + bourne::json input = + { + "complete", true + }; + + Order obj(input.dump()); + + TEST_ASSERT(true == obj.isComplete()); + + + + +} + + + +void test_Order_id_is_converted_to_json() +{ + + + + bourne::json input = + { + "id", 1 + }; + + Order obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["id"] == output["id"]); + +} + + +void test_Order_petId_is_converted_to_json() +{ + + + + bourne::json input = + { + "petId", 1 + }; + + Order obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["petId"] == output["petId"]); + +} + + +void test_Order_quantity_is_converted_to_json() +{ + bourne::json input = + { + "quantity", 1 + }; + + Order obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["quantity"] == output["quantity"]); + + + + +} + + +void test_Order_shipDate_is_converted_to_json() +{ + + + + +} + + +void test_Order_status_is_converted_to_json() +{ + + bourne::json input = + { + "status", "hello" + }; + + Order obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["status"] == output["status"]); + + + +} + + +void test_Order_complete_is_converted_to_json() +{ + + + bourne::json input = + { + "complete", true + }; + + Order obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["complete"] == output["complete"]); + + +} + + diff --git a/samples/client/petstore/tiny/cpp/lib/TestFiles/PetTest.cpp b/samples/client/petstore/tiny/cpp/lib/TestFiles/PetTest.cpp new file mode 100644 index 00000000000..04dad464093 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/TestFiles/PetTest.cpp @@ -0,0 +1,145 @@ + +#include "Pet.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + + +void test_Pet_id_is_assigned_from_json() +{ + + + + + + + bourne::json input = + { + "id", 1 + }; + + Pet obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getId()); + + +} + + + +void test_Pet_name_is_assigned_from_json() +{ + + + bourne::json input = + { + "name", "hello" + }; + + Pet obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getName().c_str()); + + + + + + +} + + + + +void test_Pet_status_is_assigned_from_json() +{ + + + bourne::json input = + { + "status", "hello" + }; + + Pet obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getStatus().c_str()); + + + + + + +} + + + +void test_Pet_id_is_converted_to_json() +{ + + + + bourne::json input = + { + "id", 1 + }; + + Pet obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["id"] == output["id"]); + +} + + + +void test_Pet_name_is_converted_to_json() +{ + + bourne::json input = + { + "name", "hello" + }; + + Pet obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["name"] == output["name"]); + + + +} + + + + +void test_Pet_status_is_converted_to_json() +{ + + bourne::json input = + { + "status", "hello" + }; + + Pet obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["status"] == output["status"]); + + + +} + + diff --git a/samples/client/petstore/tiny/cpp/lib/TestFiles/TagTest.cpp b/samples/client/petstore/tiny/cpp/lib/TestFiles/TagTest.cpp new file mode 100644 index 00000000000..41ea1d0095d --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/TestFiles/TagTest.cpp @@ -0,0 +1,97 @@ + +#include "Tag.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + + +void test_Tag_id_is_assigned_from_json() +{ + + + + + + + bourne::json input = + { + "id", 1 + }; + + Tag obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getId()); + + +} + + +void test_Tag_name_is_assigned_from_json() +{ + + + bourne::json input = + { + "name", "hello" + }; + + Tag obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getName().c_str()); + + + + + + +} + + + +void test_Tag_id_is_converted_to_json() +{ + + + + bourne::json input = + { + "id", 1 + }; + + Tag obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["id"] == output["id"]); + +} + + +void test_Tag_name_is_converted_to_json() +{ + + bourne::json input = + { + "name", "hello" + }; + + Tag obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["name"] == output["name"]); + + + +} + + diff --git a/samples/client/petstore/tiny/cpp/lib/TestFiles/UserTest.cpp b/samples/client/petstore/tiny/cpp/lib/TestFiles/UserTest.cpp new file mode 100644 index 00000000000..689ee582bee --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/TestFiles/UserTest.cpp @@ -0,0 +1,349 @@ + +#include "User.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + + +void test_User_id_is_assigned_from_json() +{ + + + + + + + bourne::json input = + { + "id", 1 + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getId()); + + +} + + +void test_User_username_is_assigned_from_json() +{ + + + bourne::json input = + { + "username", "hello" + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getUsername().c_str()); + + + + + + +} + + +void test_User_firstName_is_assigned_from_json() +{ + + + bourne::json input = + { + "firstName", "hello" + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getFirstName().c_str()); + + + + + + +} + + +void test_User_lastName_is_assigned_from_json() +{ + + + bourne::json input = + { + "lastName", "hello" + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getLastName().c_str()); + + + + + + +} + + +void test_User_email_is_assigned_from_json() +{ + + + bourne::json input = + { + "email", "hello" + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getEmail().c_str()); + + + + + + +} + + +void test_User_password_is_assigned_from_json() +{ + + + bourne::json input = + { + "password", "hello" + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getPassword().c_str()); + + + + + + +} + + +void test_User_phone_is_assigned_from_json() +{ + + + bourne::json input = + { + "phone", "hello" + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getPhone().c_str()); + + + + + + +} + + +void test_User_userStatus_is_assigned_from_json() +{ + bourne::json input = + { + "userStatus", 1 + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getUserStatus()); + + + + + + + + +} + + + +void test_User_id_is_converted_to_json() +{ + + + + bourne::json input = + { + "id", 1 + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["id"] == output["id"]); + +} + + +void test_User_username_is_converted_to_json() +{ + + bourne::json input = + { + "username", "hello" + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["username"] == output["username"]); + + + +} + + +void test_User_firstName_is_converted_to_json() +{ + + bourne::json input = + { + "firstName", "hello" + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["firstName"] == output["firstName"]); + + + +} + + +void test_User_lastName_is_converted_to_json() +{ + + bourne::json input = + { + "lastName", "hello" + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["lastName"] == output["lastName"]); + + + +} + + +void test_User_email_is_converted_to_json() +{ + + bourne::json input = + { + "email", "hello" + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["email"] == output["email"]); + + + +} + + +void test_User_password_is_converted_to_json() +{ + + bourne::json input = + { + "password", "hello" + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["password"] == output["password"]); + + + +} + + +void test_User_phone_is_converted_to_json() +{ + + bourne::json input = + { + "phone", "hello" + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["phone"] == output["phone"]); + + + +} + + +void test_User_userStatus_is_converted_to_json() +{ + bourne::json input = + { + "userStatus", 1 + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["userStatus"] == output["userStatus"]); + + + + +} + + diff --git a/samples/client/petstore/tiny/cpp/lib/service/AbstractService.cpp b/samples/client/petstore/tiny/cpp/lib/service/AbstractService.cpp new file mode 100644 index 00000000000..ac7e992cecc --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/service/AbstractService.cpp @@ -0,0 +1,8 @@ +#include "AbstractService.h" +#include "Arduino.h" + + + +void Tiny::AbstractService::begin(std::string url){ + http.begin(String(url.c_str()), test_root_ca); //HTTPS connection +} diff --git a/samples/client/petstore/tiny/cpp/lib/service/AbstractService.h b/samples/client/petstore/tiny/cpp/lib/service/AbstractService.h new file mode 100644 index 00000000000..07214896d7f --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/service/AbstractService.h @@ -0,0 +1,28 @@ +#ifndef TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ +#define TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ + +#include "HTTPClient.h" +#include "Response.h" +namespace Tiny { + +/** +* Class +* Generated with openapi::tiny-cpp-client +*/ +class AbstractService { +public: +HTTPClient http; +std::string basepath = "https://petstore3.swagger.io/api/v3"; // TODO: change to your url + +void begin(std::string url); + +// Go and comment out a certificate in root.cert, if you get an error here +// Certificate from file +const char* test_root_ca = +#include "../../root.cert" +; + +}; // end class +}// namespace Tinyclient + +#endif /* TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ */ diff --git a/samples/client/petstore/tiny/cpp/lib/service/PetApi.cpp b/samples/client/petstore/tiny/cpp/lib/service/PetApi.cpp new file mode 100644 index 00000000000..1fa081a04b4 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/service/PetApi.cpp @@ -0,0 +1,418 @@ +#include "PetApi.h" + +using namespace Tiny; + + + + Response< + Pet + > + PetApi:: + addPet( + + Pet pet + + ) + { + std::string url = basepath + "/pet"; // + // Query | + // Headers | + // Form | + // Body | pet + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + http.addHeader("Content-Type", "application/json"); + + + + payload = pet.toJson().dump(); + + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + Pet obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + Response< + String + > + PetApi:: + deletePet( + + long petId + , + + std::string apiKey + + ) + { + std::string url = basepath + "/pet/{petId}"; //petId + // Query | + // Headers | apiKey + // Form | + // Body | + + std::string s_petId("{"); + s_petId.append("petId"); + s_petId.append("}"); + + int pos = url.find(s_petId); + + url.erase(pos, s_petId.length()); + url.insert(pos, stringify(petId)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | DELETE + int httpCode = http.sendRequest("DELETE", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + std::list + > + PetApi:: + findPetsByStatus( + std::list status + + + ) + { + std::string url = basepath + "/pet/findByStatus"; // + // Query | status + // Headers | + // Form | + // Body | + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + std::list obj = std::list(); + bourne::json jsonPayload(output_string); + + + + + + + + + + for(auto& var : jsonPayload.array_range()) + { + Pet tmp(var.dump()); + obj.push_back(tmp); + } + + + + + + + + + Response> response(obj, httpCode); + return response; + } + + Response< + std::list + > + PetApi:: + findPetsByTags( + std::list tags + + + ) + { + std::string url = basepath + "/pet/findByTags"; // + // Query | tags + // Headers | + // Form | + // Body | + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + std::list obj = std::list(); + bourne::json jsonPayload(output_string); + + + + + + + + + + for(auto& var : jsonPayload.array_range()) + { + Pet tmp(var.dump()); + obj.push_back(tmp); + } + + + + + + + + + Response> response(obj, httpCode); + return response; + } + + Response< + Pet + > + PetApi:: + getPetById( + + long petId + + ) + { + std::string url = basepath + "/pet/{petId}"; //petId + // Query | + // Headers | + // Form | + // Body | + + std::string s_petId("{"); + s_petId.append("petId"); + s_petId.append("}"); + + int pos = url.find(s_petId); + + url.erase(pos, s_petId.length()); + url.insert(pos, stringify(petId)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + Pet obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + Response< + Pet + > + PetApi:: + updatePet( + + Pet pet + + ) + { + std::string url = basepath + "/pet"; // + // Query | + // Headers | + // Form | + // Body | pet + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | PUT + http.addHeader("Content-Type", "application/json"); + + + + payload = pet.toJson().dump(); + + int httpCode = http.sendRequest("PUT", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + Pet obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + Response< + String + > + PetApi:: + updatePetWithForm( + + long petId + , + + std::string name + , + + std::string status + + ) + { + std::string url = basepath + "/pet/{petId}"; //petId + // Query | + // Headers | + // Form | name status + // Body | + + std::string s_petId("{"); + s_petId.append("petId"); + s_petId.append("}"); + + int pos = url.find(s_petId); + + url.erase(pos, s_petId.length()); + url.insert(pos, stringify(petId)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + ApiResponse + > + PetApi:: + uploadFile( + + long petId + , + + std::string additionalMetadata + , + + std::string file + + ) + { + std::string url = basepath + "/pet/{petId}/uploadImage"; //petId + // Query | + // Headers | + // Form | additionalMetadata file + // Body | + + std::string s_petId("{"); + s_petId.append("petId"); + s_petId.append("}"); + + int pos = url.find(s_petId); + + url.erase(pos, s_petId.length()); + url.insert(pos, stringify(petId)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + ApiResponse obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + + + diff --git a/samples/client/petstore/tiny/cpp/lib/service/PetApi.h b/samples/client/petstore/tiny/cpp/lib/service/PetApi.h new file mode 100644 index 00000000000..abcb0af0de9 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/service/PetApi.h @@ -0,0 +1,163 @@ +#ifndef TINY_CPP_CLIENT_PetApi_H_ +#define TINY_CPP_CLIENT_PetApi_H_ + + +#include "Response.h" +#include "Arduino.h" +#include "AbstractService.h" +#include "Helpers.h" +#include + +#include "ApiResponse.h" +#include "Pet.h" + +namespace Tiny { + +/** + * Class + * Generated with openapi::tiny-cpp-client + */ + +class PetApi : public AbstractService { +public: + PetApi() = default; + + virtual ~PetApi() = default; + + /** + * Add a new pet to the store. + * + * + * \param pet Pet object that needs to be added to the store *Required* + */ + Response< + Pet + > + addPet( + + Pet pet + + ); + /** + * Deletes a pet. + * + * + * \param petId Pet id to delete *Required* + * \param apiKey + */ + Response< + String + > + deletePet( + + long petId + , + + std::string apiKey + + ); + /** + * Finds Pets by status. + * + * Multiple status values can be provided with comma separated strings + * \param status Status values that need to be considered for filter *Required* + */ + Response< + std::list + > + findPetsByStatus( + std::list status + + + ); + /** + * Finds Pets by tags. + * + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * \param tags Tags to filter by *Required* + */ + Response< + std::list + > + findPetsByTags( + std::list tags + + + ); + /** + * Find pet by ID. + * + * Returns a single pet + * \param petId ID of pet to return *Required* + */ + Response< + Pet + > + getPetById( + + long petId + + ); + /** + * Update an existing pet. + * + * + * \param pet Pet object that needs to be added to the store *Required* + */ + Response< + Pet + > + updatePet( + + Pet pet + + ); + /** + * Updates a pet in the store with form data. + * + * + * \param petId ID of pet that needs to be updated *Required* + * \param name Updated name of the pet + * \param status Updated status of the pet + */ + Response< + String + > + updatePetWithForm( + + long petId + , + + std::string name + , + + std::string status + + ); + /** + * uploads an image. + * + * + * \param petId ID of pet to update *Required* + * \param additionalMetadata Additional data to pass to server + * \param file file to upload + */ + Response< + ApiResponse + > + uploadFile( + + long petId + , + + std::string additionalMetadata + , + + std::string file + + ); +}; + +} + +#endif /* TINY_CPP_CLIENT_PetApi_H_ */ \ No newline at end of file diff --git a/samples/client/petstore/tiny/cpp/lib/service/Response.h b/samples/client/petstore/tiny/cpp/lib/service/Response.h new file mode 100644 index 00000000000..9b7b616b8f1 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/service/Response.h @@ -0,0 +1,25 @@ +#ifndef TINY_CPP_CLIENT_RESPONSE_H_ +#define TINY_CPP_CLIENT_RESPONSE_H_ +#include + +namespace Tiny { + +/** +* Class +* Generated with openapi::tiny-cpp-client +*/ +template + class Response { + public: + + Response(T _obj, int _code){ + obj = _obj; + code = _code; + } + + int code; + T obj; + }; + } // namespace Tinyclient + +#endif /* TINY_CPP_CLIENT_RESPONSE_H_ */ diff --git a/samples/client/petstore/tiny/cpp/lib/service/StoreApi.cpp b/samples/client/petstore/tiny/cpp/lib/service/StoreApi.cpp new file mode 100644 index 00000000000..210eb8277ac --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/service/StoreApi.cpp @@ -0,0 +1,185 @@ +#include "StoreApi.h" + +using namespace Tiny; + + + + Response< + String + > + StoreApi:: + deleteOrder( + + std::string orderId + + ) + { + std::string url = basepath + "/store/order/{orderId}"; //orderId + // Query | + // Headers | + // Form | + // Body | + + std::string s_orderId("{"); + s_orderId.append("orderId"); + s_orderId.append("}"); + + int pos = url.find(s_orderId); + + url.erase(pos, s_orderId.length()); + url.insert(pos, stringify(orderId)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | DELETE + int httpCode = http.sendRequest("DELETE", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + String + > + StoreApi:: + getInventory( + ) + { + std::string url = basepath + "/store/inventory"; // + // Query | + // Headers | + // Form | + // Body | + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + //TODO: Implement map logic here + + + + + //TODO: No support for maps. + Response response(output, httpCode); + return response; + } + + Response< + Order + > + StoreApi:: + getOrderById( + + long orderId + + ) + { + std::string url = basepath + "/store/order/{orderId}"; //orderId + // Query | + // Headers | + // Form | + // Body | + + std::string s_orderId("{"); + s_orderId.append("orderId"); + s_orderId.append("}"); + + int pos = url.find(s_orderId); + + url.erase(pos, s_orderId.length()); + url.insert(pos, stringify(orderId)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + Order obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + Response< + Order + > + StoreApi:: + placeOrder( + + Order order + + ) + { + std::string url = basepath + "/store/order"; // + // Query | + // Headers | + // Form | + // Body | order + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + http.addHeader("Content-Type", "application/json"); + + + + payload = order.toJson().dump(); + + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + Order obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + + + diff --git a/samples/client/petstore/tiny/cpp/lib/service/StoreApi.h b/samples/client/petstore/tiny/cpp/lib/service/StoreApi.h new file mode 100644 index 00000000000..1bf0db02373 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/service/StoreApi.h @@ -0,0 +1,83 @@ +#ifndef TINY_CPP_CLIENT_StoreApi_H_ +#define TINY_CPP_CLIENT_StoreApi_H_ + + +#include "Response.h" +#include "Arduino.h" +#include "AbstractService.h" +#include "Helpers.h" +#include + +#include +#include "Order.h" + +namespace Tiny { + +/** + * Class + * Generated with openapi::tiny-cpp-client + */ + +class StoreApi : public AbstractService { +public: + StoreApi() = default; + + virtual ~StoreApi() = default; + + /** + * Delete purchase order by ID. + * + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * \param orderId ID of the order that needs to be deleted *Required* + */ + Response< + String + > + deleteOrder( + + std::string orderId + + ); + /** + * Returns pet inventories by status. + * + * Returns a map of status codes to quantities + */ + Response< + String + > + getInventory( + ); + /** + * Find purchase order by ID. + * + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * \param orderId ID of pet that needs to be fetched *Required* + */ + Response< + Order + > + getOrderById( + + long orderId + + ); + /** + * Place an order for a pet. + * + * + * \param order order placed for purchasing the pet *Required* + */ + Response< + Order + > + placeOrder( + + Order order + + ); +}; + +} + +#endif /* TINY_CPP_CLIENT_StoreApi_H_ */ \ No newline at end of file diff --git a/samples/client/petstore/tiny/cpp/lib/service/UserApi.cpp b/samples/client/petstore/tiny/cpp/lib/service/UserApi.cpp new file mode 100644 index 00000000000..d1cf12b80a9 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/service/UserApi.cpp @@ -0,0 +1,366 @@ +#include "UserApi.h" + +using namespace Tiny; + + + + Response< + String + > + UserApi:: + createUser( + + User user + + ) + { + std::string url = basepath + "/user"; // + // Query | + // Headers | + // Form | + // Body | user + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + http.addHeader("Content-Type", "application/json"); + + + + payload = user.toJson().dump(); + + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + String + > + UserApi:: + createUsersWithArrayInput( + std::list user + + + ) + { + std::string url = basepath + "/user/createWithArray"; // + // Query | + // Headers | + // Form | + // Body | user + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + http.addHeader("Content-Type", "application/json"); + + + bourne::json tmp_arr = bourne::json::array(); + for(auto& var : user) + { + auto tmp = var.toJson(); + tmp_arr.append(tmp); + + } + payload = tmp_arr.dump(); + + + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + String + > + UserApi:: + createUsersWithListInput( + std::list user + + + ) + { + std::string url = basepath + "/user/createWithList"; // + // Query | + // Headers | + // Form | + // Body | user + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + http.addHeader("Content-Type", "application/json"); + + + bourne::json tmp_arr = bourne::json::array(); + for(auto& var : user) + { + auto tmp = var.toJson(); + tmp_arr.append(tmp); + + } + payload = tmp_arr.dump(); + + + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + String + > + UserApi:: + deleteUser( + + std::string username + + ) + { + std::string url = basepath + "/user/{username}"; //username + // Query | + // Headers | + // Form | + // Body | + + std::string s_username("{"); + s_username.append("username"); + s_username.append("}"); + + int pos = url.find(s_username); + + url.erase(pos, s_username.length()); + url.insert(pos, stringify(username)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | DELETE + int httpCode = http.sendRequest("DELETE", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + User + > + UserApi:: + getUserByName( + + std::string username + + ) + { + std::string url = basepath + "/user/{username}"; //username + // Query | + // Headers | + // Form | + // Body | + + std::string s_username("{"); + s_username.append("username"); + s_username.append("}"); + + int pos = url.find(s_username); + + url.erase(pos, s_username.length()); + url.insert(pos, stringify(username)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + User obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + Response< + std::string + > + UserApi:: + loginUser( + + std::string username + , + + std::string password + + ) + { + std::string url = basepath + "/user/login"; // + // Query | username password + // Headers | + // Form | + // Body | + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + bourne::json jsonPayload(output_string); + std::string obj; + jsonToValue(&obj, jsonPayload, "std::string"); + + + + Response response(obj, httpCode); + return response; + } + + Response< + String + > + UserApi:: + logoutUser( + ) + { + std::string url = basepath + "/user/logout"; // + // Query | + // Headers | + // Form | + // Body | + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + String + > + UserApi:: + updateUser( + + std::string username + , + + User user + + ) + { + std::string url = basepath + "/user/{username}"; //username + // Query | + // Headers | + // Form | + // Body | user + + std::string s_username("{"); + s_username.append("username"); + s_username.append("}"); + + int pos = url.find(s_username); + + url.erase(pos, s_username.length()); + url.insert(pos, stringify(username)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | PUT + http.addHeader("Content-Type", "application/json"); + + + + payload = user.toJson().dump(); + + int httpCode = http.sendRequest("PUT", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + + + diff --git a/samples/client/petstore/tiny/cpp/lib/service/UserApi.h b/samples/client/petstore/tiny/cpp/lib/service/UserApi.h new file mode 100644 index 00000000000..afdaefa0f8c --- /dev/null +++ b/samples/client/petstore/tiny/cpp/lib/service/UserApi.h @@ -0,0 +1,147 @@ +#ifndef TINY_CPP_CLIENT_UserApi_H_ +#define TINY_CPP_CLIENT_UserApi_H_ + + +#include "Response.h" +#include "Arduino.h" +#include "AbstractService.h" +#include "Helpers.h" +#include + +#include "User.h" +#include + +namespace Tiny { + +/** + * Class + * Generated with openapi::tiny-cpp-client + */ + +class UserApi : public AbstractService { +public: + UserApi() = default; + + virtual ~UserApi() = default; + + /** + * Create user. + * + * This can only be done by the logged in user. + * \param user Created user object *Required* + */ + Response< + String + > + createUser( + + User user + + ); + /** + * Creates list of users with given input array. + * + * + * \param user List of user object *Required* + */ + Response< + String + > + createUsersWithArrayInput( + std::list user + + + ); + /** + * Creates list of users with given input array. + * + * + * \param user List of user object *Required* + */ + Response< + String + > + createUsersWithListInput( + std::list user + + + ); + /** + * Delete user. + * + * This can only be done by the logged in user. + * \param username The name that needs to be deleted *Required* + */ + Response< + String + > + deleteUser( + + std::string username + + ); + /** + * Get user by user name. + * + * + * \param username The name that needs to be fetched. Use user1 for testing. *Required* + */ + Response< + User + > + getUserByName( + + std::string username + + ); + /** + * Logs user into the system. + * + * + * \param username The user name for login *Required* + * \param password The password for login in clear text *Required* + */ + Response< + std::string + > + loginUser( + + std::string username + , + + std::string password + + ); + /** + * Logs out current logged in user session. + * + * + */ + Response< + String + > + logoutUser( + ); + /** + * Updated user. + * + * This can only be done by the logged in user. + * \param username name that need to be deleted *Required* + * \param user Updated user object *Required* + */ + Response< + String + > + updateUser( + + std::string username + , + + User user + + ); +}; + +} + +#endif /* TINY_CPP_CLIENT_UserApi_H_ */ \ No newline at end of file diff --git a/samples/client/petstore/tiny/cpp/platformio.ini b/samples/client/petstore/tiny/cpp/platformio.ini new file mode 100644 index 00000000000..00781178d10 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/platformio.ini @@ -0,0 +1,7 @@ +[env:esp32] +platform = espressif32 +board = nodemcu-32s +framework = arduino +lib_deps = https://github.com/steinwurf/bourne.git +extra_scripts = pre_compiling_bourne.py + diff --git a/samples/client/petstore/tiny/cpp/pre_compiling_bourne.py b/samples/client/petstore/tiny/cpp/pre_compiling_bourne.py new file mode 100644 index 00000000000..96356dcdf15 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/pre_compiling_bourne.py @@ -0,0 +1,25 @@ +Import("env") + +## Compatibility for bourne to work on microcontrollers +# We insert '#define _GLIBCXX_USE_C99' in files that use std::stoll or std::to_string +def insert_c99_into(file): + import fileinput + + path = env['PROJECT_LIBDEPS_DIR'] + "/" + env['PIOENV'] + "/bourne/src/bourne/" + file + value = '#define _GLIBCXX_USE_C99 1\n' + + for line in fileinput.FileInput(path,inplace=1): + if line.startswith('#define _GLIBCXX_USE_C99'): + continue + elif line.startswith('// D'): + line=line.replace(line,line+value) + print(line, end='') + +def fix_parser(): + insert_c99_into('detail/parser.cpp') + +def fix_json(): + insert_c99_into('json.cpp') + +fix_parser() +fix_json() \ No newline at end of file diff --git a/samples/client/petstore/tiny/cpp/root.cert b/samples/client/petstore/tiny/cpp/root.cert new file mode 100644 index 00000000000..bad9c08efad --- /dev/null +++ b/samples/client/petstore/tiny/cpp/root.cert @@ -0,0 +1,53 @@ +// TODO: Provide your service root certificate. +// Below is two examples of root certificates. + +// Let's encrypt root certificate +/** +"-----BEGIN CERTIFICATE-----\n" \ +"MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n" \ +"MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" \ +"d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n" \ +"QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\n" \ +"MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n" \ +"b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n" \ +"9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\n" \ +"CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\n" \ +"nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n" \ +"43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\n" \ +"T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\n" \ +"gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\n" \ +"BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\n" \ +"TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\n" \ +"DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\n" \ +"hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n" \ +"06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\n" \ +"PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\n" \ +"YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n" \ +"CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n" \ +"-----END CERTIFICATE-----\n" +*/ + +// Amazon_Root_CA_1.pem +/** +"-----BEGIN CERTIFICATE-----\n" \ +"MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\n" \ +"ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\n" \ +"b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL\n" \ +"MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\n" \ +"b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj\n" \ +"ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM\n" \ +"9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw\n" \ +"IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6\n" \ +"VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L\n" \ +"93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm\n" \ +"jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\n" \ +"AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA\n" \ +"A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI\n" \ +"U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs\n" \ +"N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv\n" \ +"o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU\n" \ +"5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\n" \ +"rqXRfboQnoZsG4q5WTP468SQvvG5\n" \ +"-----END CERTIFICATE-----\n" \ +*/ + diff --git a/samples/client/petstore/tiny/cpp/src/main.cpp b/samples/client/petstore/tiny/cpp/src/main.cpp new file mode 100644 index 00000000000..34ba455fbdd --- /dev/null +++ b/samples/client/petstore/tiny/cpp/src/main.cpp @@ -0,0 +1,37 @@ +#include "PetApi.h" + +const char* ssid = "your wifi name"; // TODO Change wifi name +const char* password = "Your wifi password"; //TODO Change wifi password + + +void setup(){ + //Initialize serial and wait for port to open: + Serial.begin(9600); + delay(100); + + Serial.print("Attempting to connect to SSID: "); + Serial.println(ssid); + WiFi.begin(ssid, password); + + // attempt to connect to Wifi network: + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + // wait 1 second for re-trying + delay(1000); + } + + Serial.print("Connected to "); + Serial.println(ssid); + + //Print LAN IP. + Serial.print("IP address set: "); + Serial.println(WiFi.localIP()); + + Tiny::PetApi petapi; + auto resp = petapi.getPetById(10); + Serial.println(resp.code); + Tiny::Pet pet = resp.obj; + Serial.println(pet.toJson().dump().c_str()); +} + +void loop(){} diff --git a/samples/client/petstore/tiny/cpp/test/RunTests.cpp b/samples/client/petstore/tiny/cpp/test/RunTests.cpp new file mode 100644 index 00000000000..4caafb4ee44 --- /dev/null +++ b/samples/client/petstore/tiny/cpp/test/RunTests.cpp @@ -0,0 +1,204 @@ + +#include "ApiResponseTest.cpp" + +#include "CategoryTest.cpp" + +#include "OrderTest.cpp" + +#include "PetTest.cpp" + +#include "TagTest.cpp" + +#include "UserTest.cpp" + + + +void setUp(){} + +void tearDown(){} + +void runTests(){ + + + RUN_TEST(test_ApiResponse_code_is_assigned_from_json); + + + RUN_TEST(test_ApiResponse_type_is_assigned_from_json); + + + RUN_TEST(test_ApiResponse_message_is_assigned_from_json); + + + + RUN_TEST(test_Category_id_is_assigned_from_json); + + + RUN_TEST(test_Category_name_is_assigned_from_json); + + + + RUN_TEST(test_Order_id_is_assigned_from_json); + + + RUN_TEST(test_Order_petId_is_assigned_from_json); + + + RUN_TEST(test_Order_quantity_is_assigned_from_json); + + + RUN_TEST(test_Order_shipDate_is_assigned_from_json); + + + RUN_TEST(test_Order_status_is_assigned_from_json); + + + RUN_TEST(test_Order_complete_is_assigned_from_json); + + + + RUN_TEST(test_Pet_id_is_assigned_from_json); + + + + RUN_TEST(test_Pet_name_is_assigned_from_json); + + + + + RUN_TEST(test_Pet_status_is_assigned_from_json); + + + + RUN_TEST(test_Tag_id_is_assigned_from_json); + + + RUN_TEST(test_Tag_name_is_assigned_from_json); + + + + RUN_TEST(test_User_id_is_assigned_from_json); + + + RUN_TEST(test_User_username_is_assigned_from_json); + + + RUN_TEST(test_User_firstName_is_assigned_from_json); + + + RUN_TEST(test_User_lastName_is_assigned_from_json); + + + RUN_TEST(test_User_email_is_assigned_from_json); + + + RUN_TEST(test_User_password_is_assigned_from_json); + + + RUN_TEST(test_User_phone_is_assigned_from_json); + + + RUN_TEST(test_User_userStatus_is_assigned_from_json); + + + + + + RUN_TEST(test_ApiResponse_code_is_converted_to_json); + + + RUN_TEST(test_ApiResponse_type_is_converted_to_json); + + + RUN_TEST(test_ApiResponse_message_is_converted_to_json); + + + + RUN_TEST(test_Category_id_is_converted_to_json); + + + RUN_TEST(test_Category_name_is_converted_to_json); + + + + RUN_TEST(test_Order_id_is_converted_to_json); + + + RUN_TEST(test_Order_petId_is_converted_to_json); + + + RUN_TEST(test_Order_quantity_is_converted_to_json); + + + RUN_TEST(test_Order_shipDate_is_converted_to_json); + + + RUN_TEST(test_Order_status_is_converted_to_json); + + + RUN_TEST(test_Order_complete_is_converted_to_json); + + + + RUN_TEST(test_Pet_id_is_converted_to_json); + + + + RUN_TEST(test_Pet_name_is_converted_to_json); + + + + + RUN_TEST(test_Pet_status_is_converted_to_json); + + + + RUN_TEST(test_Tag_id_is_converted_to_json); + + + RUN_TEST(test_Tag_name_is_converted_to_json); + + + + RUN_TEST(test_User_id_is_converted_to_json); + + + RUN_TEST(test_User_username_is_converted_to_json); + + + RUN_TEST(test_User_firstName_is_converted_to_json); + + + RUN_TEST(test_User_lastName_is_converted_to_json); + + + RUN_TEST(test_User_email_is_converted_to_json); + + + RUN_TEST(test_User_password_is_converted_to_json); + + + RUN_TEST(test_User_phone_is_converted_to_json); + + + RUN_TEST(test_User_userStatus_is_converted_to_json); + + + + +} + +int main(void) { + UNITY_BEGIN(); + runTests(); + return UNITY_END(); +} + +void setup() { + UNITY_BEGIN(); + runTests(); + UNITY_END(); +} + +void loop() { + +} From 6c40192706cf95329f03e4c80ea628fb32a8ecab Mon Sep 17 00:00:00 2001 From: Alexandre Date: Mon, 24 May 2021 07:01:16 +0200 Subject: [PATCH 039/192] [swift5] Add support for oneOfs (#8714) * [swift5] Add support for oneOfs * Generate a sample Swift project with oneOfs * Update Swift Samples --- bin/configs/swift5-oneOf.yaml | 10 + .../languages/Swift5ClientCodegen.java | 1 + .../src/main/resources/swift5/model.mustache | 5 +- .../main/resources/swift5/modelOneOf.mustache | 31 + .../client/petstore/swift5/oneOf/.gitignore | 63 ++ .../swift5/oneOf/.openapi-generator-ignore | 23 + .../swift5/oneOf/.openapi-generator/FILES | 26 + .../swift5/oneOf/.openapi-generator/VERSION | 1 + samples/client/petstore/swift5/oneOf/Cartfile | 2 + .../petstore/swift5/oneOf/Package.swift | 33 + .../swift5/oneOf/PetstoreClient.podspec | 15 + .../Classes/OpenAPIs/APIHelper.swift | 71 ++ .../Classes/OpenAPIs/APIs.swift | 62 ++ .../Classes/OpenAPIs/APIs/DefaultAPI.swift | 49 ++ .../Classes/OpenAPIs/CodableHelper.swift | 49 ++ .../Classes/OpenAPIs/Configuration.swift | 14 + .../Classes/OpenAPIs/Extensions.swift | 231 +++++++ .../Classes/OpenAPIs/JSONDataEncoding.swift | 53 ++ .../Classes/OpenAPIs/JSONEncodingHelper.swift | 45 ++ .../Classes/OpenAPIs/Models.swift | 54 ++ .../Classes/OpenAPIs/Models/Apple.swift | 31 + .../Classes/OpenAPIs/Models/Banana.swift | 31 + .../Classes/OpenAPIs/Models/Fruit.swift | 38 ++ .../OpenAPIs/OpenISO8601DateFormatter.swift | 44 ++ .../OpenAPIs/SynchronizedDictionary.swift | 36 ++ .../OpenAPIs/URLSessionImplementations.swift | 606 ++++++++++++++++++ .../client/petstore/swift5/oneOf/README.md | 46 ++ .../petstore/swift5/oneOf/docs/Apple.md | 11 + .../petstore/swift5/oneOf/docs/Banana.md | 11 + .../petstore/swift5/oneOf/docs/DefaultAPI.md | 52 ++ .../petstore/swift5/oneOf/docs/Fruit.md | 12 + .../client/petstore/swift5/oneOf/git_push.sh | 58 ++ .../client/petstore/swift5/oneOf/project.yml | 15 + 33 files changed, 1827 insertions(+), 2 deletions(-) create mode 100644 bin/configs/swift5-oneOf.yaml create mode 100644 modules/openapi-generator/src/main/resources/swift5/modelOneOf.mustache create mode 100644 samples/client/petstore/swift5/oneOf/.gitignore create mode 100644 samples/client/petstore/swift5/oneOf/.openapi-generator-ignore create mode 100644 samples/client/petstore/swift5/oneOf/.openapi-generator/FILES create mode 100644 samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION create mode 100644 samples/client/petstore/swift5/oneOf/Cartfile create mode 100644 samples/client/petstore/swift5/oneOf/Package.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient.podspec create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIHelper.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Configuration.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Extensions.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/JSONDataEncoding.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Apple.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Banana.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Fruit.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/OpenISO8601DateFormatter.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/SynchronizedDictionary.swift create mode 100644 samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift create mode 100644 samples/client/petstore/swift5/oneOf/README.md create mode 100644 samples/client/petstore/swift5/oneOf/docs/Apple.md create mode 100644 samples/client/petstore/swift5/oneOf/docs/Banana.md create mode 100644 samples/client/petstore/swift5/oneOf/docs/DefaultAPI.md create mode 100644 samples/client/petstore/swift5/oneOf/docs/Fruit.md create mode 100644 samples/client/petstore/swift5/oneOf/git_push.sh create mode 100644 samples/client/petstore/swift5/oneOf/project.yml diff --git a/bin/configs/swift5-oneOf.yaml b/bin/configs/swift5-oneOf.yaml new file mode 100644 index 00000000000..975892b340c --- /dev/null +++ b/bin/configs/swift5-oneOf.yaml @@ -0,0 +1,10 @@ +generatorName: swift5 +outputDir: samples/client/petstore/swift5/oneOf +inputSpec: modules/openapi-generator/src/test/resources/3_0/oneOf.yaml +templateDir: modules/openapi-generator/src/main/resources/swift5 +generateAliasAsModel: true +additionalProperties: + podAuthors: "" + podSummary: PetstoreClient + projectName: PetstoreClient + podHomepage: https://github.com/openapitools/openapi-generator diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index e1932f31350..4766e2a9c91 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -95,6 +95,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig */ public Swift5ClientCodegen() { super(); + this.useOneOfInterfaces = true; generatorMetadata = GeneratorMetadata.newBuilder(generatorMetadata) .stability(Stability.BETA) diff --git a/modules/openapi-generator/src/main/resources/swift5/model.mustache b/modules/openapi-generator/src/main/resources/swift5/model.mustache index 07c2565c313..53892df270e 100644 --- a/modules/openapi-generator/src/main/resources/swift5/model.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/model.mustache @@ -12,7 +12,8 @@ import AnyCodable {{#description}} /** {{description}} */{{/description}}{{#isDeprecated}} -@available(*, deprecated, message: "This schema is deprecated."){{/isDeprecated}}{{#isArray}} +@available(*, deprecated, message: "This schema is deprecated."){{/isDeprecated}}{{#vendorExtensions.x-is-one-of-interface}} +{{> modelOneOf}}{{/vendorExtensions.x-is-one-of-interface}}{{^vendorExtensions.x-is-one-of-interface}}{{#isArray}} {{> modelArray}}{{/isArray}}{{^isArray}}{{#isEnum}} {{> modelEnum}}{{/isEnum}}{{^isEnum}} -{{> modelObject}}{{/isEnum}}{{/isArray}}{{/model}}{{/models}} +{{> modelObject}}{{/isEnum}}{{/isArray}}{{/vendorExtensions.x-is-one-of-interface}}{{/model}}{{/models}} diff --git a/modules/openapi-generator/src/main/resources/swift5/modelOneOf.mustache b/modules/openapi-generator/src/main/resources/swift5/modelOneOf.mustache new file mode 100644 index 00000000000..8aeddcc3c12 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/swift5/modelOneOf.mustache @@ -0,0 +1,31 @@ +public enum {{classname}}: Codable { + {{#oneOf}} + case type{{.}}({{.}}) + {{/oneOf}} + + public func encode(to encoder: Encoder) throws { + var container = encoder.singleValueContainer() + switch self { + {{#oneOf}} + case .type{{.}}(let value): + try container.encode(value) + {{/oneOf}} + } + } + + public init(from decoder: Decoder) throws { + let container = try decoder.singleValueContainer() + {{#oneOf}} + {{#-first}} + if let value = try? container.decode({{.}}.self) { + {{/-first}} + {{^-first}} + } else if let value = try? container.decode({{.}}.self) { + {{/-first}} + self = .type{{.}}(value) + {{/oneOf}} + } else { + throw DecodingError.typeMismatch(Self.Type.self, .init(codingPath: decoder.codingPath, debugDescription: "Unable to decode instance of {{classname}}")) + } + } +} diff --git a/samples/client/petstore/swift5/oneOf/.gitignore b/samples/client/petstore/swift5/oneOf/.gitignore new file mode 100644 index 00000000000..5e5d5cebcf4 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/.gitignore @@ -0,0 +1,63 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated +build/ +DerivedData + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata + +## Other +*.xccheckout +*.moved-aside +*.xcuserstate +*.xcscmblueprint + +## Obj-C/Swift specific +*.hmap +*.ipa + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md + +fastlane/report.xml +fastlane/screenshots diff --git a/samples/client/petstore/swift5/oneOf/.openapi-generator-ignore b/samples/client/petstore/swift5/oneOf/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/swift5/oneOf/.openapi-generator/FILES b/samples/client/petstore/swift5/oneOf/.openapi-generator/FILES new file mode 100644 index 00000000000..421958ec1d2 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/.openapi-generator/FILES @@ -0,0 +1,26 @@ +.gitignore +Cartfile +Package.swift +PetstoreClient.podspec +PetstoreClient/Classes/OpenAPIs/APIHelper.swift +PetstoreClient/Classes/OpenAPIs/APIs.swift +PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift +PetstoreClient/Classes/OpenAPIs/CodableHelper.swift +PetstoreClient/Classes/OpenAPIs/Configuration.swift +PetstoreClient/Classes/OpenAPIs/Extensions.swift +PetstoreClient/Classes/OpenAPIs/JSONDataEncoding.swift +PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift +PetstoreClient/Classes/OpenAPIs/Models.swift +PetstoreClient/Classes/OpenAPIs/Models/Apple.swift +PetstoreClient/Classes/OpenAPIs/Models/Banana.swift +PetstoreClient/Classes/OpenAPIs/Models/Fruit.swift +PetstoreClient/Classes/OpenAPIs/OpenISO8601DateFormatter.swift +PetstoreClient/Classes/OpenAPIs/SynchronizedDictionary.swift +PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +README.md +docs/Apple.md +docs/Banana.md +docs/DefaultAPI.md +docs/Fruit.md +git_push.sh +project.yml diff --git a/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION b/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION new file mode 100644 index 00000000000..6555596f931 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/oneOf/Cartfile b/samples/client/petstore/swift5/oneOf/Cartfile new file mode 100644 index 00000000000..84aaa61ef2d --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/Cartfile @@ -0,0 +1,2 @@ + +github "Flight-School/AnyCodable" ~> 0.4.0 diff --git a/samples/client/petstore/swift5/oneOf/Package.swift b/samples/client/petstore/swift5/oneOf/Package.swift new file mode 100644 index 00000000000..b724838fe8d --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/Package.swift @@ -0,0 +1,33 @@ +// swift-tools-version:5.1 + +import PackageDescription + +let package = Package( + name: "PetstoreClient", + platforms: [ + .iOS(.v9), + .macOS(.v10_11), + .tvOS(.v9), + .watchOS(.v3), + ], + products: [ + // Products define the executables and libraries produced by a package, and make them visible to other packages. + .library( + name: "PetstoreClient", + targets: ["PetstoreClient"] + ), + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages which this package depends on. + .target( + name: "PetstoreClient", + dependencies: ["AnyCodable", ], + path: "PetstoreClient/Classes" + ), + ] +) diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient.podspec b/samples/client/petstore/swift5/oneOf/PetstoreClient.podspec new file mode 100644 index 00000000000..5999bbadb38 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient.podspec @@ -0,0 +1,15 @@ +Pod::Spec.new do |s| + s.name = 'PetstoreClient' + s.ios.deployment_target = '9.0' + s.osx.deployment_target = '10.11' + s.tvos.deployment_target = '9.0' + s.watchos.deployment_target = '3.0' + s.version = '0.0.1' + s.source = { :git => 'git@github.com:OpenAPITools/openapi-generator.git', :tag => 'v0.0.1' } + s.authors = '' + s.license = 'Proprietary' + s.homepage = 'https://github.com/openapitools/openapi-generator' + s.summary = 'PetstoreClient' + s.source_files = 'PetstoreClient/Classes/**/*.swift' + s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' +end diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIHelper.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIHelper.swift new file mode 100644 index 00000000000..f7bb5274bd9 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIHelper.swift @@ -0,0 +1,71 @@ +// APIHelper.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct APIHelper { + public static func rejectNil(_ source: [String: Any?]) -> [String: Any]? { + let destination = source.reduce(into: [String: Any]()) { result, item in + if let value = item.value { + result[item.key] = value + } + } + + if destination.isEmpty { + return nil + } + return destination + } + + public static func rejectNilHeaders(_ source: [String: Any?]) -> [String: String] { + return source.reduce(into: [String: String]()) { result, item in + if let collection = item.value as? [Any?] { + result[item.key] = collection.filter { $0 != nil }.map { "\($0!)" }.joined(separator: ",") + } else if let value: Any = item.value { + result[item.key] = "\(value)" + } + } + } + + public static func convertBoolToString(_ source: [String: Any]?) -> [String: Any]? { + guard let source = source else { + return nil + } + + return source.reduce(into: [String: Any]()) { result, item in + switch item.value { + case let x as Bool: + result[item.key] = x.description + default: + result[item.key] = item.value + } + } + } + + public static func mapValueToPathItem(_ source: Any) -> Any { + if let collection = source as? [Any?] { + return collection.filter { $0 != nil }.map { "\($0!)" }.joined(separator: ",") + } + return source + } + + public static func mapValuesToQueryItems(_ source: [String: Any?]) -> [URLQueryItem]? { + let destination = source.filter { $0.value != nil }.reduce(into: [URLQueryItem]()) { result, item in + if let collection = item.value as? [Any?] { + collection.filter { $0 != nil }.map { "\($0!)" }.forEach { value in + result.append(URLQueryItem(name: item.key, value: value)) + } + } else if let value = item.value { + result.append(URLQueryItem(name: item.key, value: "\(value)")) + } + } + + if destination.isEmpty { + return nil + } + return destination + } +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs.swift new file mode 100644 index 00000000000..d2b0a9186b2 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -0,0 +1,62 @@ +// APIs.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class PetstoreClientAPI { + public static var basePath = "http://localhost" + public static var credential: URLCredential? + public static var customHeaders: [String: String] = [:] + public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() + public static var apiResponseQueue: DispatchQueue = .main +} + +open class RequestBuilder { + var credential: URLCredential? + var headers: [String: String] + public let parameters: [String: Any]? + public let method: String + public let URLString: String + + /// Optional block to obtain a reference to the request's progress instance when available. + /// With the URLSession http client the request's progress only works on iOS 11.0, macOS 10.13, macCatalyst 13.0, tvOS 11.0, watchOS 4.0. + /// If you need to get the request's progress in older OS versions, please use Alamofire http client. + public var onProgressReady: ((Progress) -> Void)? + + required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) { + self.method = method + self.URLString = URLString + self.parameters = parameters + self.headers = headers + + addHeaders(PetstoreClientAPI.customHeaders) + } + + open func addHeaders(_ aHeaders: [String: String]) { + for (header, value) in aHeaders { + headers[header] = value + } + } + + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + + public func addHeader(name: String, value: String) -> Self { + if !value.isEmpty { + headers[name] = value + } + return self + } + + open func addCredential() -> Self { + credential = PetstoreClientAPI.credential + return self + } +} + +public protocol RequestBuilderFactory { + func getNonDecodableBuilder() -> RequestBuilder.Type + func getBuilder() -> RequestBuilder.Type +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift new file mode 100644 index 00000000000..7bf2ca84749 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift @@ -0,0 +1,49 @@ +// +// DefaultAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class DefaultAPI { + /** + + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects + */ + open class func rootGet(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Fruit?, _ error: Error?) -> Void)) { + rootGetWithRequestBuilder().execute(apiResponseQueue) { result -> Void in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + - GET / + - returns: RequestBuilder + */ + open class func rootGetWithRequestBuilder() -> RequestBuilder { + let path = "/" + let URLString = PetstoreClientAPI.basePath + path + let parameters: [String: Any]? = nil + + let urlComponents = URLComponents(string: URLString) + + let nillableHeaders: [String: Any?] = [ + : + ] + + let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + + let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + + return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + } + +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift new file mode 100644 index 00000000000..09c82e53e13 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/CodableHelper.swift @@ -0,0 +1,49 @@ +// +// CodableHelper.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class CodableHelper { + private static var customDateFormatter: DateFormatter? + private static var defaultDateFormatter: DateFormatter = OpenISO8601DateFormatter() + + private static var customJSONDecoder: JSONDecoder? + private static var defaultJSONDecoder: JSONDecoder = { + let decoder = JSONDecoder() + decoder.dateDecodingStrategy = .formatted(CodableHelper.dateFormatter) + return decoder + }() + + private static var customJSONEncoder: JSONEncoder? + private static var defaultJSONEncoder: JSONEncoder = { + let encoder = JSONEncoder() + encoder.dateEncodingStrategy = .formatted(CodableHelper.dateFormatter) + encoder.outputFormatting = .prettyPrinted + return encoder + }() + + public static var dateFormatter: DateFormatter { + get { return customDateFormatter ?? defaultDateFormatter } + set { customDateFormatter = newValue } + } + public static var jsonDecoder: JSONDecoder { + get { return customJSONDecoder ?? defaultJSONDecoder } + set { customJSONDecoder = newValue } + } + public static var jsonEncoder: JSONEncoder { + get { return customJSONEncoder ?? defaultJSONEncoder } + set { customJSONEncoder = newValue } + } + + open class func decode(_ type: T.Type, from data: Data) -> Swift.Result where T: Decodable { + return Swift.Result { try jsonDecoder.decode(type, from: data) } + } + + open class func encode(_ value: T) -> Swift.Result where T: Encodable { + return Swift.Result { try jsonEncoder.encode(value) } + } +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Configuration.swift new file mode 100644 index 00000000000..18edabbed78 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -0,0 +1,14 @@ +// Configuration.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. + // You must set it prior to encoding any dates, and it will only be read once. + @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") + public static var dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Extensions.swift new file mode 100644 index 00000000000..11e807937bd --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -0,0 +1,231 @@ +// Extensions.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif + +extension Bool: JSONEncodable { + func encodeToJSON() -> Any { return self as Any } +} + +extension Float: JSONEncodable { + func encodeToJSON() -> Any { return self as Any } +} + +extension Int: JSONEncodable { + func encodeToJSON() -> Any { return self as Any } +} + +extension Int32: JSONEncodable { + func encodeToJSON() -> Any { return NSNumber(value: self as Int32) } +} + +extension Int64: JSONEncodable { + func encodeToJSON() -> Any { return NSNumber(value: self as Int64) } +} + +extension Double: JSONEncodable { + func encodeToJSON() -> Any { return self as Any } +} + +extension String: JSONEncodable { + func encodeToJSON() -> Any { return self as Any } +} + +extension RawRepresentable where RawValue: JSONEncodable { + func encodeToJSON() -> Any { return self.rawValue as Any } +} + +private func encodeIfPossible(_ object: T) -> Any { + if let encodableObject = object as? JSONEncodable { + return encodableObject.encodeToJSON() + } else { + return object as Any + } +} + +extension Array: JSONEncodable { + func encodeToJSON() -> Any { + return self.map(encodeIfPossible) + } +} + +extension Set: JSONEncodable { + func encodeToJSON() -> Any { + return Array(self).encodeToJSON() + } +} + +extension Dictionary: JSONEncodable { + func encodeToJSON() -> Any { + var dictionary = [AnyHashable: Any]() + for (key, value) in self { + dictionary[key] = encodeIfPossible(value) + } + return dictionary as Any + } +} + +extension Data: JSONEncodable { + func encodeToJSON() -> Any { + return self.base64EncodedString(options: Data.Base64EncodingOptions()) + } +} + +extension Date: JSONEncodable { + func encodeToJSON() -> Any { + return CodableHelper.dateFormatter.string(from: self) as Any + } +} + +extension URL: JSONEncodable { + func encodeToJSON() -> Any { + return self + } +} + +extension UUID: JSONEncodable { + func encodeToJSON() -> Any { + return self.uuidString + } +} + +extension String: CodingKey { + + public var stringValue: String { + return self + } + + public init?(stringValue: String) { + self.init(stringLiteral: stringValue) + } + + public var intValue: Int? { + return nil + } + + public init?(intValue: Int) { + return nil + } + +} + +extension KeyedEncodingContainerProtocol { + + public mutating func encodeArray(_ values: [T], forKey key: Self.Key) throws where T: Encodable { + var arrayContainer = nestedUnkeyedContainer(forKey: key) + try arrayContainer.encode(contentsOf: values) + } + + public mutating func encodeArrayIfPresent(_ values: [T]?, forKey key: Self.Key) throws where T: Encodable { + if let values = values { + try encodeArray(values, forKey: key) + } + } + + public mutating func encodeMap(_ pairs: [Self.Key: T]) throws where T: Encodable { + for (key, value) in pairs { + try encode(value, forKey: key) + } + } + + public mutating func encodeMapIfPresent(_ pairs: [Self.Key: T]?) throws where T: Encodable { + if let pairs = pairs { + try encodeMap(pairs) + } + } + +} + +extension KeyedDecodingContainerProtocol { + + public func decodeArray(_ type: T.Type, forKey key: Self.Key) throws -> [T] where T: Decodable { + var tmpArray = [T]() + + var nestedContainer = try nestedUnkeyedContainer(forKey: key) + while !nestedContainer.isAtEnd { + let arrayValue = try nestedContainer.decode(T.self) + tmpArray.append(arrayValue) + } + + return tmpArray + } + + public func decodeArrayIfPresent(_ type: T.Type, forKey key: Self.Key) throws -> [T]? where T: Decodable { + var tmpArray: [T]? + + if contains(key) { + tmpArray = try decodeArray(T.self, forKey: key) + } + + return tmpArray + } + + public func decodeMap(_ type: T.Type, excludedKeys: Set) throws -> [Self.Key: T] where T: Decodable { + var map: [Self.Key: T] = [:] + + for key in allKeys { + if !excludedKeys.contains(key) { + let value = try decode(T.self, forKey: key) + map[key] = value + } + } + + return map + } + +} + +extension HTTPURLResponse { + var isStatusCodeSuccessful: Bool { + return Array(200 ..< 300).contains(statusCode) + } +} + +#if canImport(AnyCodable) +extension AnyCodable: Hashable { + public func hash(into hasher: inout Hasher) { + switch value { + case let value as Bool: + hasher.combine(value) + case let value as Int: + hasher.combine(value) + case let value as Int8: + hasher.combine(value) + case let value as Int16: + hasher.combine(value) + case let value as Int32: + hasher.combine(value) + case let value as Int64: + hasher.combine(value) + case let value as UInt: + hasher.combine(value) + case let value as UInt8: + hasher.combine(value) + case let value as UInt16: + hasher.combine(value) + case let value as UInt32: + hasher.combine(value) + case let value as UInt64: + hasher.combine(value) + case let value as Float: + hasher.combine(value) + case let value as Double: + hasher.combine(value) + case let value as String: + hasher.combine(value) + case let value as [String: AnyCodable]: + hasher.combine(value) + case let value as [AnyCodable]: + hasher.combine(value) + default: + hasher.combine(0) + } + } +} +#endif diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/JSONDataEncoding.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/JSONDataEncoding.swift new file mode 100644 index 00000000000..b79e9f5e64d --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/JSONDataEncoding.swift @@ -0,0 +1,53 @@ +// +// JSONDataEncoding.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +public struct JSONDataEncoding { + + // MARK: Properties + + private static let jsonDataKey = "jsonData" + + // MARK: Encoding + + /// Creates a URL request by encoding parameters and applying them onto an existing request. + /// + /// - parameter urlRequest: The request to have parameters applied. + /// - parameter parameters: The parameters to apply. This should have a single key/value + /// pair with "jsonData" as the key and a Data object as the value. + /// + /// - throws: An `Error` if the encoding process encounters an error. + /// + /// - returns: The encoded request. + public func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) -> URLRequest { + var urlRequest = urlRequest + + guard let jsonData = parameters?[JSONDataEncoding.jsonDataKey] as? Data, !jsonData.isEmpty else { + return urlRequest + } + + if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil { + urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") + } + + urlRequest.httpBody = jsonData + + return urlRequest + } + + public static func encodingParameters(jsonData: Data?) -> [String: Any]? { + var returnedParams: [String: Any]? + if let jsonData = jsonData, !jsonData.isEmpty { + var params: [String: Any] = [:] + params[jsonDataKey] = jsonData + returnedParams = params + } + return returnedParams + } + +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift new file mode 100644 index 00000000000..02f78ffb470 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift @@ -0,0 +1,45 @@ +// +// JSONEncodingHelper.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +open class JSONEncodingHelper { + + open class func encodingParameters(forEncodableObject encodableObj: T?) -> [String: Any]? { + var params: [String: Any]? + + // Encode the Encodable object + if let encodableObj = encodableObj { + let encodeResult = CodableHelper.encode(encodableObj) + do { + let data = try encodeResult.get() + params = JSONDataEncoding.encodingParameters(jsonData: data) + } catch { + print(error.localizedDescription) + } + } + + return params + } + + open class func encodingParameters(forEncodableObject encodableObj: Any?) -> [String: Any]? { + var params: [String: Any]? + + if let encodableObj = encodableObj { + do { + let data = try JSONSerialization.data(withJSONObject: encodableObj, options: .prettyPrinted) + params = JSONDataEncoding.encodingParameters(jsonData: data) + } catch { + print(error.localizedDescription) + return nil + } + } + + return params + } + +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models.swift new file mode 100644 index 00000000000..96e26a20f7d --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -0,0 +1,54 @@ +// Models.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +protocol JSONEncodable { + func encodeToJSON() -> Any +} + +public enum ErrorResponse: Error { + case error(Int, Data?, URLResponse?, Error) +} + +public enum DownloadException: Error { + case responseDataMissing + case responseFailed + case requestMissing + case requestMissingPath + case requestMissingURL +} + +public enum DecodableRequestBuilderError: Error { + case emptyDataResponse + case nilHTTPResponse + case unsuccessfulHTTPStatusCode + case jsonDecoding(DecodingError) + case generalError(Error) +} + +open class Response { + public let statusCode: Int + public let header: [String: String] + public let body: T? + + public init(statusCode: Int, header: [String: String], body: T?) { + self.statusCode = statusCode + self.header = header + self.body = body + } + + public convenience init(response: HTTPURLResponse, body: T?) { + let rawHeader = response.allHeaderFields + var header = [String: String]() + for (key, value) in rawHeader { + if let key = key.base as? String, let value = value as? String { + header[key] = value + } + } + self.init(statusCode: response.statusCode, header: header, body: body) + } +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Apple.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Apple.swift new file mode 100644 index 00000000000..17495d47fd3 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Apple.swift @@ -0,0 +1,31 @@ +// +// Apple.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif + +public struct Apple: Codable, Hashable { + + public var kind: String? + + public init(kind: String? = nil) { + self.kind = kind + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case kind + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(kind, forKey: .kind) + } +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Banana.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Banana.swift new file mode 100644 index 00000000000..c0a23db0b1c --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Banana.swift @@ -0,0 +1,31 @@ +// +// Banana.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif + +public struct Banana: Codable, Hashable { + + public var count: Double? + + public init(count: Double? = nil) { + self.count = count + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case count + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(count, forKey: .count) + } +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Fruit.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Fruit.swift new file mode 100644 index 00000000000..d58ad1f8b31 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Fruit.swift @@ -0,0 +1,38 @@ +// +// Fruit.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif + +public enum Fruit: Codable { + case typeApple(Apple) + case typeBanana(Banana) + + public func encode(to encoder: Encoder) throws { + var container = encoder.singleValueContainer() + switch self { + case .typeApple(let value): + try container.encode(value) + case .typeBanana(let value): + try container.encode(value) + } + } + + public init(from decoder: Decoder) throws { + let container = try decoder.singleValueContainer() + if let value = try? container.decode(Apple.self) { + self = .typeApple(value) + } else if let value = try? container.decode(Banana.self) { + self = .typeBanana(value) + } else { + throw DecodingError.typeMismatch(Self.Type.self, .init(codingPath: decoder.codingPath, debugDescription: "Unable to decode instance of Fruit")) + } + } +} + diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/OpenISO8601DateFormatter.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/OpenISO8601DateFormatter.swift new file mode 100644 index 00000000000..e06208074cd --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/OpenISO8601DateFormatter.swift @@ -0,0 +1,44 @@ +// +// OpenISO8601DateFormatter.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +// https://stackoverflow.com/a/50281094/976628 +public class OpenISO8601DateFormatter: DateFormatter { + static let withoutSeconds: DateFormatter = { + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .iso8601) + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.timeZone = TimeZone(secondsFromGMT: 0) + formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" + return formatter + }() + + private func setup() { + calendar = Calendar(identifier: .iso8601) + locale = Locale(identifier: "en_US_POSIX") + timeZone = TimeZone(secondsFromGMT: 0) + dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" + } + + override init() { + super.init() + setup() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setup() + } + + override public func date(from string: String) -> Date? { + if let result = super.date(from: string) { + return result + } + return OpenISO8601DateFormatter.withoutSeconds.date(from: string) + } +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/SynchronizedDictionary.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/SynchronizedDictionary.swift new file mode 100644 index 00000000000..acf7ff4031b --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/SynchronizedDictionary.swift @@ -0,0 +1,36 @@ +// SynchronizedDictionary.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation + +internal struct SynchronizedDictionary { + + private var dictionary = [K: V]() + private let queue = DispatchQueue( + label: "SynchronizedDictionary", + qos: DispatchQoS.userInitiated, + attributes: [DispatchQueue.Attributes.concurrent], + autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency.inherit, + target: nil + ) + + internal subscript(key: K) -> V? { + get { + var value: V? + + queue.sync { + value = self.dictionary[key] + } + + return value + } + set { + queue.sync(flags: DispatchWorkItemFlags.barrier) { + self.dictionary[key] = newValue + } + } + } +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift new file mode 100644 index 00000000000..52b2071ec1a --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -0,0 +1,606 @@ +// URLSessionImplementations.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if !os(macOS) +import MobileCoreServices +#endif + +class URLSessionRequestBuilderFactory: RequestBuilderFactory { + func getNonDecodableBuilder() -> RequestBuilder.Type { + return URLSessionRequestBuilder.self + } + + func getBuilder() -> RequestBuilder.Type { + return URLSessionDecodableRequestBuilder.self + } +} + +// Store the URLSession to retain its reference +private var urlSessionStore = SynchronizedDictionary() + +open class URLSessionRequestBuilder: RequestBuilder { + + /** + May be assigned if you want to control the authentication challenges. + */ + public var taskDidReceiveChallenge: ((URLSession, URLSessionTask, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))? + + /** + May be assigned if you want to do any of those things: + - control the task completion + - intercept and handle errors like authorization + - retry the request. + */ + @available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client") + public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)? + + required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) { + super.init(method: method, URLString: URLString, parameters: parameters, headers: headers) + } + + /** + May be overridden by a subclass if you want to control the URLSession + configuration. + */ + open func createURLSession() -> URLSession { + let configuration = URLSessionConfiguration.default + configuration.httpAdditionalHeaders = buildHeaders() + let sessionDelegate = SessionDelegate() + sessionDelegate.credential = credential + sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge + return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) + } + + /** + May be overridden by a subclass if you want to control the Content-Type + that is given to an uploaded form part. + + Return nil to use the default behavior (inferring the Content-Type from + the file extension). Return the desired Content-Type otherwise. + */ + open func contentTypeForFormPart(fileURL: URL) -> String? { + return nil + } + + /** + May be overridden by a subclass if you want to control the URLRequest + configuration (e.g. to override the cache policy). + */ + open func createURLRequest(urlSession: URLSession, method: HTTPMethod, encoding: ParameterEncoding, headers: [String: String]) throws -> URLRequest { + + guard let url = URL(string: URLString) else { + throw DownloadException.requestMissingURL + } + + var originalRequest = URLRequest(url: url) + + originalRequest.httpMethod = method.rawValue + + headers.forEach { key, value in + originalRequest.setValue(value, forHTTPHeaderField: key) + } + + buildHeaders().forEach { key, value in + originalRequest.setValue(value, forHTTPHeaderField: key) + } + + let modifiedRequest = try encoding.encode(originalRequest, with: parameters) + + return modifiedRequest + } + + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + let urlSessionId = UUID().uuidString + // Create a new manager for each request to customize its request header + let urlSession = createURLSession() + urlSessionStore[urlSessionId] = urlSession + + guard let xMethod = HTTPMethod(rawValue: method) else { + fatalError("Unsuported Http method - \(method)") + } + + let encoding: ParameterEncoding + + switch xMethod { + case .get, .head: + encoding = URLEncoding() + + case .options, .post, .put, .patch, .delete, .trace, .connect: + let contentType = headers["Content-Type"] ?? "application/json" + + if contentType == "application/json" { + encoding = JSONDataEncoding() + } else if contentType == "multipart/form-data" { + encoding = FormDataEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:)) + } else if contentType == "application/x-www-form-urlencoded" { + encoding = FormURLEncoding() + } else { + fatalError("Unsuported Media Type - \(contentType)") + } + } + + let cleanupRequest = { + urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() + urlSessionStore[urlSessionId] = nil + } + + do { + let request = try createURLRequest(urlSession: urlSession, method: xMethod, encoding: encoding, headers: headers) + + let dataTask = urlSession.dataTask(with: request) { data, response, error in + + if let taskCompletionShouldRetry = self.taskCompletionShouldRetry { + + taskCompletionShouldRetry(data, response, error) { shouldRetry in + + if shouldRetry { + cleanupRequest() + self.execute(apiResponseQueue, completion) + } else { + apiResponseQueue.async { + self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() + } + } + } + } else { + apiResponseQueue.async { + self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) + cleanupRequest() + } + } + } + + if #available(iOS 11.0, macOS 10.13, macCatalyst 13.0, tvOS 11.0, watchOS 4.0, *) { + onProgressReady?(dataTask.progress) + } + + dataTask.resume() + + } catch { + apiResponseQueue.async { + cleanupRequest() + completion(.failure(ErrorResponse.error(415, nil, nil, error))) + } + } + } + + fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + + if let error = error { + completion(.failure(ErrorResponse.error(-1, data, response, error))) + return + } + + guard let httpResponse = response as? HTTPURLResponse else { + completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse))) + return + } + + guard httpResponse.isStatusCodeSuccessful else { + completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode))) + return + } + + switch T.self { + case is String.Type: + + let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" + + completion(.success(Response(response: httpResponse, body: body as? T))) + + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } + + let filePath = documentsDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + + case is Void.Type: + + completion(.success(Response(response: httpResponse, body: nil))) + + default: + + completion(.success(Response(response: httpResponse, body: data as? T))) + } + + } + + open func buildHeaders() -> [String: String] { + var httpHeaders: [String: String] = [:] + for (key, value) in headers { + httpHeaders[key] = value + } + for (key, value) in PetstoreClientAPI.customHeaders { + httpHeaders[key] = value + } + return httpHeaders + } + + fileprivate func getFileName(fromContentDisposition contentDisposition: String?) -> String? { + + guard let contentDisposition = contentDisposition else { + return nil + } + + let items = contentDisposition.components(separatedBy: ";") + + var filename: String? + + for contentItem in items { + + let filenameKey = "filename=" + guard let range = contentItem.range(of: filenameKey) else { + break + } + + filename = contentItem + return filename? + .replacingCharacters(in: range, with: "") + .replacingOccurrences(of: "\"", with: "") + .trimmingCharacters(in: .whitespacesAndNewlines) + } + + return filename + + } + + fileprivate func getPath(from url: URL) throws -> String { + + guard var path = URLComponents(url: url, resolvingAgainstBaseURL: true)?.path else { + throw DownloadException.requestMissingPath + } + + if path.hasPrefix("/") { + path.remove(at: path.startIndex) + } + + return path + + } + + fileprivate func getURL(from urlRequest: URLRequest) throws -> URL { + + guard let url = urlRequest.url else { + throw DownloadException.requestMissingURL + } + + return url + } + +} + +open class URLSessionDecodableRequestBuilder: URLSessionRequestBuilder { + override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + + if let error = error { + completion(.failure(ErrorResponse.error(-1, data, response, error))) + return + } + + guard let httpResponse = response as? HTTPURLResponse else { + completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse))) + return + } + + guard httpResponse.isStatusCodeSuccessful else { + completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode))) + return + } + + switch T.self { + case is String.Type: + + let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" + + completion(.success(Response(response: httpResponse, body: body as? T))) + + case is Void.Type: + + completion(.success(Response(response: httpResponse, body: nil))) + + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + + default: + + guard let data = data, !data.isEmpty else { + completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) + return + } + + let decodeResult = CodableHelper.decode(T.self, from: data) + + switch decodeResult { + case let .success(decodableObj): + completion(.success(Response(response: httpResponse, body: decodableObj))) + case let .failure(error): + completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + } + } + } +} + +private class SessionDelegate: NSObject, URLSessionDelegate, URLSessionDataDelegate { + + var credential: URLCredential? + + var taskDidReceiveChallenge: ((URLSession, URLSessionTask, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))? + + func urlSession(_ session: URLSession, task: URLSessionTask, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { + + var disposition: URLSession.AuthChallengeDisposition = .performDefaultHandling + + var credential: URLCredential? + + if let taskDidReceiveChallenge = taskDidReceiveChallenge { + (disposition, credential) = taskDidReceiveChallenge(session, task, challenge) + } else { + if challenge.previousFailureCount > 0 { + disposition = .rejectProtectionSpace + } else { + credential = self.credential ?? session.configuration.urlCredentialStorage?.defaultCredential(for: challenge.protectionSpace) + + if credential != nil { + disposition = .useCredential + } + } + } + + completionHandler(disposition, credential) + } +} + +public enum HTTPMethod: String { + case options = "OPTIONS" + case get = "GET" + case head = "HEAD" + case post = "POST" + case put = "PUT" + case patch = "PATCH" + case delete = "DELETE" + case trace = "TRACE" + case connect = "CONNECT" +} + +public protocol ParameterEncoding { + func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest +} + +private class URLEncoding: ParameterEncoding { + func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest { + + var urlRequest = urlRequest + + guard let parameters = parameters else { return urlRequest } + + guard let url = urlRequest.url else { + throw DownloadException.requestMissingURL + } + + if var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false), !parameters.isEmpty { + urlComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters) + urlRequest.url = urlComponents.url + } + + return urlRequest + } +} + +private class FormDataEncoding: ParameterEncoding { + + let contentTypeForFormPart: (_ fileURL: URL) -> String? + + init(contentTypeForFormPart: @escaping (_ fileURL: URL) -> String?) { + self.contentTypeForFormPart = contentTypeForFormPart + } + + func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest { + + var urlRequest = urlRequest + + guard let parameters = parameters, !parameters.isEmpty else { + return urlRequest + } + + let boundary = "Boundary-\(UUID().uuidString)" + + urlRequest.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") + + for (key, value) in parameters { + switch value { + case let fileURL as URL: + + urlRequest = try configureFileUploadRequest( + urlRequest: urlRequest, + boundary: boundary, + name: key, + fileURL: fileURL + ) + + case let string as String: + + if let data = string.data(using: .utf8) { + urlRequest = configureDataUploadRequest( + urlRequest: urlRequest, + boundary: boundary, + name: key, + data: data + ) + } + + case let number as NSNumber: + + if let data = number.stringValue.data(using: .utf8) { + urlRequest = configureDataUploadRequest( + urlRequest: urlRequest, + boundary: boundary, + name: key, + data: data + ) + } + + default: + fatalError("Unprocessable value \(value) with key \(key)") + } + } + + var body = urlRequest.httpBody.orEmpty + + body.append("\r\n--\(boundary)--\r\n") + + urlRequest.httpBody = body + + return urlRequest + } + + private func configureFileUploadRequest(urlRequest: URLRequest, boundary: String, name: String, fileURL: URL) throws -> URLRequest { + + var urlRequest = urlRequest + + var body = urlRequest.httpBody.orEmpty + + let fileData = try Data(contentsOf: fileURL) + + let mimetype = contentTypeForFormPart(fileURL) ?? mimeType(for: fileURL) + + let fileName = fileURL.lastPathComponent + + // If we already added something then we need an additional newline. + if body.count > 0 { + body.append("\r\n") + } + + // Value boundary. + body.append("--\(boundary)\r\n") + + // Value headers. + body.append("Content-Disposition: form-data; name=\"\(name)\"; filename=\"\(fileName)\"\r\n") + body.append("Content-Type: \(mimetype)\r\n") + + // Separate headers and body. + body.append("\r\n") + + // The value data. + body.append(fileData) + + urlRequest.httpBody = body + + return urlRequest + } + + private func configureDataUploadRequest(urlRequest: URLRequest, boundary: String, name: String, data: Data) -> URLRequest { + + var urlRequest = urlRequest + + var body = urlRequest.httpBody.orEmpty + + // If we already added something then we need an additional newline. + if body.count > 0 { + body.append("\r\n") + } + + // Value boundary. + body.append("--\(boundary)\r\n") + + // Value headers. + body.append("Content-Disposition: form-data; name=\"\(name)\"\r\n") + + // Separate headers and body. + body.append("\r\n") + + // The value data. + body.append(data) + + urlRequest.httpBody = body + + return urlRequest + + } + + func mimeType(for url: URL) -> String { + let pathExtension = url.pathExtension + + if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() { + if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() { + return mimetype as String + } + } + return "application/octet-stream" + } + +} + +private class FormURLEncoding: ParameterEncoding { + func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest { + + var urlRequest = urlRequest + + var requestBodyComponents = URLComponents() + requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:]) + + if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil { + urlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") + } + + urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8) + + return urlRequest + } +} + +private extension Data { + /// Append string to Data + /// + /// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8. + /// + /// - parameter string: The string to be added to the `Data`. + + mutating func append(_ string: String) { + if let data = string.data(using: .utf8) { + append(data) + } + } +} + +private extension Optional where Wrapped == Data { + var orEmpty: Data { + self ?? Data() + } +} + +extension JSONDataEncoding: ParameterEncoding {} diff --git a/samples/client/petstore/swift5/oneOf/README.md b/samples/client/petstore/swift5/oneOf/README.md new file mode 100644 index 00000000000..58f7c7f65ce --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/README.md @@ -0,0 +1,46 @@ +# Swift5 API client for PetstoreClient + +No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + +## Overview +This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate an API client. + +- API version: 0.0.1 +- Package version: +- Build package: org.openapitools.codegen.languages.Swift5ClientCodegen + +## Installation + +### Carthage + +Run `carthage update` + +### CocoaPods + +Run `pod install` + +## Documentation for API Endpoints + +All URIs are relative to *http://localhost* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*DefaultAPI* | [**rootGet**](docs/DefaultAPI.md#rootget) | **GET** / | + + +## Documentation For Models + + - [Apple](docs/Apple.md) + - [Banana](docs/Banana.md) + - [Fruit](docs/Fruit.md) + + +## Documentation For Authorization + + All endpoints do not require authorization. + + +## Author + + + diff --git a/samples/client/petstore/swift5/oneOf/docs/Apple.md b/samples/client/petstore/swift5/oneOf/docs/Apple.md new file mode 100644 index 00000000000..12ead3f7cb0 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/docs/Apple.md @@ -0,0 +1,11 @@ +# Apple + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**kind** | **String** | | [optional] +**color** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/oneOf/docs/Banana.md b/samples/client/petstore/swift5/oneOf/docs/Banana.md new file mode 100644 index 00000000000..e194ddc30d4 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/docs/Banana.md @@ -0,0 +1,11 @@ +# Banana + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**count** | **Double** | | [optional] +**color** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/oneOf/docs/DefaultAPI.md b/samples/client/petstore/swift5/oneOf/docs/DefaultAPI.md new file mode 100644 index 00000000000..bcefe1e3ffa --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/docs/DefaultAPI.md @@ -0,0 +1,52 @@ +# DefaultAPI + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**rootGet**](DefaultAPI.md#rootget) | **GET** / | + + +# **rootGet** +```swift + open class func rootGet(completion: @escaping (_ data: Fruit?, _ error: Error?) -> Void) +``` + + + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + + +DefaultAPI.rootGet() { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**Fruit**](Fruit.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/oneOf/docs/Fruit.md b/samples/client/petstore/swift5/oneOf/docs/Fruit.md new file mode 100644 index 00000000000..3efd863258b --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/docs/Fruit.md @@ -0,0 +1,12 @@ +# Fruit + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**color** | **String** | | [optional] +**kind** | **String** | | [optional] +**count** | **Double** | | [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) + + diff --git a/samples/client/petstore/swift5/oneOf/git_push.sh b/samples/client/petstore/swift5/oneOf/git_push.sh new file mode 100644 index 00000000000..ced3be2b0c7 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/git_push.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/samples/client/petstore/swift5/oneOf/project.yml b/samples/client/petstore/swift5/oneOf/project.yml new file mode 100644 index 00000000000..1949ec8ed3b --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/project.yml @@ -0,0 +1,15 @@ +name: PetstoreClient +targets: + PetstoreClient: + type: framework + platform: iOS + deploymentTarget: "9.0" + sources: [PetstoreClient] + info: + path: ./Info.plist + version: 0.0.1 + settings: + APPLICATION_EXTENSION_API_ONLY: true + scheme: {} + dependencies: + - carthage: AnyCodable From ae430a8c14c727141e534c419ffea71ceebb84aa Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 25 May 2021 23:55:16 +0800 Subject: [PATCH 040/192] [cpp][tiny] rename generator, update samples (#9560) * rename generator, update samples * add doc * update readme --- README.md | 3 +- ...client-petstore-new.yaml => cpp-tiny.yaml} | 6 +- docs/generators.md | 1 + docs/generators/cpp-tiny.md | 243 ++++++++++ ...Codegen.java => CppTinyClientCodegen.java} | 71 +-- .../org.openapitools.codegen.CodegenConfig | 2 +- .../README.mustache | 0 .../helpers-body.mustache | 0 .../helpers-header.mustache | 0 .../main.mustache | 0 .../model-body.mustache | 0 .../model-header.mustache | 0 .../platformio.ini.mustache | 0 .../pre_compiling_bourne.py.mustache | 0 .../root.cert.mustache | 0 .../run-tests.mustache | 0 .../service/AbstractService.cpp.mustache | 0 .../service/AbstractService.h.mustache | 0 .../service/Response.h.mustache | 0 .../service/api-body.mustache | 0 .../service/api-header.mustache | 0 .../unit-test-model.mustache | 0 .../unittest.mustache | 0 .../cpp-tiny/.openapi-generator-ignore | 23 + .../cpp-tiny/.openapi-generator/FILES | 30 ++ .../cpp-tiny/.openapi-generator/VERSION | 1 + samples/client/petstore/cpp-tiny/README.md | 73 +++ .../cpp-tiny/lib/Models/ApiResponse.cpp | 139 ++++++ .../cpp-tiny/lib/Models/ApiResponse.h | 78 ++++ .../petstore/cpp-tiny/lib/Models/Category.cpp | 106 +++++ .../petstore/cpp-tiny/lib/Models/Category.h | 70 +++ .../petstore/cpp-tiny/lib/Models/Helpers.cpp | 102 +++++ .../petstore/cpp-tiny/lib/Models/Helpers.h | 22 + .../petstore/cpp-tiny/lib/Models/Order.cpp | 238 ++++++++++ .../petstore/cpp-tiny/lib/Models/Order.h | 102 +++++ .../petstore/cpp-tiny/lib/Models/Pet.cpp | 274 ++++++++++++ .../client/petstore/cpp-tiny/lib/Models/Pet.h | 105 +++++ .../petstore/cpp-tiny/lib/Models/Tag.cpp | 106 +++++ .../client/petstore/cpp-tiny/lib/Models/Tag.h | 70 +++ .../petstore/cpp-tiny/lib/Models/User.cpp | 304 +++++++++++++ .../petstore/cpp-tiny/lib/Models/User.h | 118 +++++ .../lib/TestFiles/ApiResponseTest.cpp | 139 ++++++ .../cpp-tiny/lib/TestFiles/CategoryTest.cpp | 97 ++++ .../cpp-tiny/lib/TestFiles/OrderTest.cpp | 245 ++++++++++ .../cpp-tiny/lib/TestFiles/PetTest.cpp | 145 ++++++ .../cpp-tiny/lib/TestFiles/TagTest.cpp | 97 ++++ .../cpp-tiny/lib/TestFiles/UserTest.cpp | 349 +++++++++++++++ .../cpp-tiny/lib/service/AbstractService.cpp | 8 + .../cpp-tiny/lib/service/AbstractService.h | 28 ++ .../petstore/cpp-tiny/lib/service/PetApi.cpp | 418 ++++++++++++++++++ .../petstore/cpp-tiny/lib/service/PetApi.h | 163 +++++++ .../petstore/cpp-tiny/lib/service/Response.h | 25 ++ .../cpp-tiny/lib/service/StoreApi.cpp | 185 ++++++++ .../petstore/cpp-tiny/lib/service/StoreApi.h | 83 ++++ .../petstore/cpp-tiny/lib/service/UserApi.cpp | 366 +++++++++++++++ .../petstore/cpp-tiny/lib/service/UserApi.h | 147 ++++++ .../client/petstore/cpp-tiny/platformio.ini | 7 + .../petstore/cpp-tiny/pre_compiling_bourne.py | 25 ++ samples/client/petstore/cpp-tiny/root.cert | 53 +++ samples/client/petstore/cpp-tiny/src/main.cpp | 37 ++ .../petstore/cpp-tiny/test/RunTests.cpp | 204 +++++++++ 61 files changed, 5070 insertions(+), 38 deletions(-) rename bin/configs/{tiny-cpp-client-petstore-new.yaml => cpp-tiny.yaml} (51%) create mode 100644 docs/generators/cpp-tiny.md rename modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/{TinyCppClientCodegen.java => CppTinyClientCodegen.java} (87%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/README.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/helpers-body.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/helpers-header.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/main.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/model-body.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/model-header.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/platformio.ini.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/pre_compiling_bourne.py.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/root.cert.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/run-tests.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/service/AbstractService.cpp.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/service/AbstractService.h.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/service/Response.h.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/service/api-body.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/service/api-header.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/unit-test-model.mustache (100%) rename modules/openapi-generator/src/main/resources/{tiny-cpp-client => cpp-tiny}/unittest.mustache (100%) create mode 100644 samples/client/petstore/cpp-tiny/.openapi-generator-ignore create mode 100644 samples/client/petstore/cpp-tiny/.openapi-generator/FILES create mode 100644 samples/client/petstore/cpp-tiny/.openapi-generator/VERSION create mode 100644 samples/client/petstore/cpp-tiny/README.md create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/ApiResponse.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/ApiResponse.h create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/Category.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/Category.h create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/Helpers.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/Helpers.h create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/Order.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/Order.h create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/Pet.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/Pet.h create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/Tag.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/Tag.h create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/User.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/Models/User.h create mode 100644 samples/client/petstore/cpp-tiny/lib/TestFiles/ApiResponseTest.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/TestFiles/CategoryTest.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/TestFiles/OrderTest.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/TestFiles/PetTest.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/TestFiles/TagTest.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/TestFiles/UserTest.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/service/AbstractService.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/service/AbstractService.h create mode 100644 samples/client/petstore/cpp-tiny/lib/service/PetApi.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/service/PetApi.h create mode 100644 samples/client/petstore/cpp-tiny/lib/service/Response.h create mode 100644 samples/client/petstore/cpp-tiny/lib/service/StoreApi.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/service/StoreApi.h create mode 100644 samples/client/petstore/cpp-tiny/lib/service/UserApi.cpp create mode 100644 samples/client/petstore/cpp-tiny/lib/service/UserApi.h create mode 100644 samples/client/petstore/cpp-tiny/platformio.ini create mode 100644 samples/client/petstore/cpp-tiny/pre_compiling_bourne.py create mode 100644 samples/client/petstore/cpp-tiny/root.cert create mode 100644 samples/client/petstore/cpp-tiny/src/main.cpp create mode 100644 samples/client/petstore/cpp-tiny/test/RunTests.cpp diff --git a/README.md b/README.md index 625c094352d..5c6686628de 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ OpenAPI Generator allows generation of API client libraries (SDK generation), se | | Languages/Frameworks | | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later, .NET Standard 1.3 - 2.0, .NET Core 2.0, .NET 5.0. Libraries: RestSharp, HttpClient), **C++** (cpp-restsdk, Qt5, Tizen, Unreal Engine 4), **Clojure**, **Crystal**, **Dart**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client, MicroProfile Rest Client), **k6**, **Kotlin**, **Lua**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types, Apollo GraphQL DataStore), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (hyper, reqwest, rust-server), **Scala** (akka, http4s, scalaz, sttp, swagger-async-httpclient), **Swift** (2.x, 3.x, 4.x, 5.x), **Typescript** (AngularJS, Angular (2.x - 11.x), Aurelia, Axios, Fetch, Inversify, jQuery, Nestjs, Node, redux-query, Rxjs) | +| **API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later, .NET Standard 1.3 - 2.0, .NET Core 2.0, .NET 5.0. Libraries: RestSharp, HttpClient), **C++** (Arduino, cpp-restsdk, Qt5, Tizen, Unreal Engine 4), **Clojure**, **Crystal**, **Dart**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client, MicroProfile Rest Client), **k6**, **Kotlin**, **Lua**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types, Apollo GraphQL DataStore), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (hyper, reqwest, rust-server), **Scala** (akka, http4s, scalaz, sttp, swagger-async-httpclient), **Swift** (2.x, 3.x, 4.x, 5.x), **Typescript** (AngularJS, Angular (2.x - 11.x), Aurelia, Axios, Fetch, Inversify, jQuery, Nestjs, Node, redux-query, Rxjs) | | **Server stubs** | **Ada**, **C#** (ASP.NET Core, NancyFx), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin, Echo), **Haskell** (Servant), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/)), **Kotlin** (Spring Boot, Ktor, Vertx), **PHP** (Laravel, Lumen, Slim, Silex, [Symfony](https://symfony.com/), [Zend Expressive](https://github.com/zendframework/zend-expressive)), **Python** (Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** (rust-server), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), Scalatra) | | **API documentation generators** | **HTML**, **Confluence Wiki**, **Asciidoc**, **Markdown**, **PlantUML** | | **Configuration files** | [**Apache2**](https://httpd.apache.org/) | @@ -843,6 +843,7 @@ Here is a list of template creators: * Bash: @bkryza * C: @PowerOfCreation @zhemant [:heart:](https://www.patreon.com/zhemant) * C++ REST: @Danielku15 + * C++ Tiny: @AndersSpringborg * C++ UE4: @Kahncode * C# (.NET 2.0): @who * C# (.NET Standard 1.3 ): @Gronsak diff --git a/bin/configs/tiny-cpp-client-petstore-new.yaml b/bin/configs/cpp-tiny.yaml similarity index 51% rename from bin/configs/tiny-cpp-client-petstore-new.yaml rename to bin/configs/cpp-tiny.yaml index e80824e989a..237ae1403f4 100644 --- a/bin/configs/tiny-cpp-client-petstore-new.yaml +++ b/bin/configs/cpp-tiny.yaml @@ -1,7 +1,7 @@ -generatorName: tiny-cpp -outputDir: samples/client/petstore/tiny/cpp +generatorName: cpp-tiny +outputDir: samples/client/petstore/cpp-tiny inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml -templateDir: modules/openapi-generator/src/main/resources/tiny-cpp-client +templateDir: modules/openapi-generator/src/main/resources/cpp-tiny additionalProperties: hideGenerationTimestamp: "true" controller: "esp32" diff --git a/docs/generators.md b/docs/generators.md index d4e3e5065bc..e667c369f36 100644 --- a/docs/generators.md +++ b/docs/generators.md @@ -14,6 +14,7 @@ The following generators are available: * [clojure](generators/clojure.md) * [cpp-qt-client](generators/cpp-qt-client.md) * [cpp-restsdk](generators/cpp-restsdk.md) +* [cpp-tiny (beta)](generators/cpp-tiny.md) * [cpp-tizen](generators/cpp-tizen.md) * [cpp-ue4 (beta)](generators/cpp-ue4.md) * [crystal (beta)](generators/crystal.md) diff --git a/docs/generators/cpp-tiny.md b/docs/generators/cpp-tiny.md new file mode 100644 index 00000000000..1c90b5cbe8e --- /dev/null +++ b/docs/generators/cpp-tiny.md @@ -0,0 +1,243 @@ +--- +title: Config Options for cpp-tiny +sidebar_label: cpp-tiny +--- + +These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details. + +| Option | Description | Values | Default | +| ------ | ----------- | ------ | ------- | +|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false| +|controller|name of microcontroller (e.g esp32 or esp8266)| |esp32| +|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
    **false**
    The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
    **true**
    Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
    |true| +|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true| +|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|
    **true**
    The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
    **false**
    The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
    |true| +|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| +|reservedWordPrefix|Prefix to prepend to reserved words in order to avoid conflicts| |r_| +|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| +|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| +|variableNameFirstCharacterUppercase|Make first character of variable name uppercase (eg. value -> Value)| |true| + +## IMPORT MAPPING + +| Type/Alias | Imports | +| ---------- | ------- | + + +## INSTANTIATION TYPES + +| Type/Alias | Instantiated By | +| ---------- | --------------- | + + +## LANGUAGE PRIMITIVES + +
      +
    • bool
    • +
    • double
    • +
    • float
    • +
    • int
    • +
    • long
    • +
    • std::string
    • +
    + +## RESERVED WORDS + +
      +
    • alignas
    • +
    • alignof
    • +
    • and
    • +
    • and_eq
    • +
    • asm
    • +
    • auto
    • +
    • bitand
    • +
    • bitor
    • +
    • bool
    • +
    • break
    • +
    • case
    • +
    • catch
    • +
    • char
    • +
    • char16_t
    • +
    • char32_t
    • +
    • class
    • +
    • compl
    • +
    • concept
    • +
    • const
    • +
    • const_cast
    • +
    • constexpr
    • +
    • continue
    • +
    • decltype
    • +
    • default
    • +
    • delete
    • +
    • do
    • +
    • double
    • +
    • dynamic_cast
    • +
    • else
    • +
    • enum
    • +
    • explicit
    • +
    • export
    • +
    • extern
    • +
    • false
    • +
    • float
    • +
    • for
    • +
    • friend
    • +
    • goto
    • +
    • if
    • +
    • inline
    • +
    • int
    • +
    • linux
    • +
    • long
    • +
    • mutable
    • +
    • namespace
    • +
    • new
    • +
    • noexcept
    • +
    • not
    • +
    • not_eq
    • +
    • nullptr
    • +
    • operator
    • +
    • or
    • +
    • or_eq
    • +
    • private
    • +
    • protected
    • +
    • public
    • +
    • register
    • +
    • reinterpret_cast
    • +
    • requires
    • +
    • return
    • +
    • short
    • +
    • signed
    • +
    • sizeof
    • +
    • static
    • +
    • static_assert
    • +
    • static_cast
    • +
    • struct
    • +
    • switch
    • +
    • template
    • +
    • this
    • +
    • thread_local
    • +
    • throw
    • +
    • true
    • +
    • try
    • +
    • typedef
    • +
    • typeid
    • +
    • typename
    • +
    • union
    • +
    • unsigned
    • +
    • using
    • +
    • virtual
    • +
    • void
    • +
    • volatile
    • +
    • wchar_t
    • +
    • while
    • +
    • xor
    • +
    • xor_eq
    • +
    + +## FEATURE SET + + +### Client Modification Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|BasePath|✗|ToolingExtension +|Authorizations|✗|ToolingExtension +|UserAgent|✗|ToolingExtension +|MockServer|✗|ToolingExtension + +### Data Type Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Custom|✗|OAS2,OAS3 +|Int32|✓|OAS2,OAS3 +|Int64|✓|OAS2,OAS3 +|Float|✓|OAS2,OAS3 +|Double|✓|OAS2,OAS3 +|Decimal|✓|ToolingExtension +|String|✓|OAS2,OAS3 +|Byte|✓|OAS2,OAS3 +|Binary|✓|OAS2,OAS3 +|Boolean|✓|OAS2,OAS3 +|Date|✓|OAS2,OAS3 +|DateTime|✓|OAS2,OAS3 +|Password|✓|OAS2,OAS3 +|File|✓|OAS2 +|Array|✓|OAS2,OAS3 +|Maps|✗|ToolingExtension +|CollectionFormat|✓|OAS2 +|CollectionFormatMulti|✓|OAS2 +|Enum|✗|OAS2,OAS3 +|ArrayOfEnum|✓|ToolingExtension +|ArrayOfModel|✓|ToolingExtension +|ArrayOfCollectionOfPrimitives|✓|ToolingExtension +|ArrayOfCollectionOfModel|✓|ToolingExtension +|ArrayOfCollectionOfEnum|✓|ToolingExtension +|MapOfEnum|✗|ToolingExtension +|MapOfModel|✗|ToolingExtension +|MapOfCollectionOfPrimitives|✗|ToolingExtension +|MapOfCollectionOfModel|✗|ToolingExtension +|MapOfCollectionOfEnum|✗|ToolingExtension + +### Documentation Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Readme|✓|ToolingExtension +|Model|✓|ToolingExtension +|Api|✓|ToolingExtension + +### Global Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Host|✓|OAS2,OAS3 +|BasePath|✓|OAS2,OAS3 +|Info|✓|OAS2,OAS3 +|Schemes|✗|OAS2,OAS3 +|PartialSchemes|✓|OAS2,OAS3 +|Consumes|✓|OAS2 +|Produces|✓|OAS2 +|ExternalDocumentation|✓|OAS2,OAS3 +|Examples|✓|OAS2,OAS3 +|XMLStructureDefinitions|✗|OAS2,OAS3 +|MultiServer|✗|OAS3 +|ParameterizedServer|✗|OAS3 +|ParameterStyling|✗|OAS3 +|Callbacks|✗|OAS3 +|LinkObjects|✗|OAS3 + +### Parameter Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Path|✓|OAS2,OAS3 +|Query|✗|OAS2,OAS3 +|Header|✗|OAS2,OAS3 +|Body|✓|OAS2 +|FormUnencoded|✗|OAS2 +|FormMultipart|✗|OAS2 +|Cookie|✗|OAS3 + +### Schema Support Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Simple|✓|OAS2,OAS3 +|Composite|✓|OAS2,OAS3 +|Polymorphism|✗|OAS2,OAS3 +|Union|✗|OAS3 + +### Security Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|BasicAuth|✓|OAS2,OAS3 +|ApiKey|✓|OAS2,OAS3 +|OpenIDConnect|✗|OAS3 +|BearerToken|✓|OAS3 +|OAuth2_Implicit|✓|OAS2,OAS3 +|OAuth2_Password|✓|OAS2,OAS3 +|OAuth2_ClientCredentials|✓|OAS2,OAS3 +|OAuth2_AuthorizationCode|✓|OAS2,OAS3 + +### Wire Format Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|JSON|✓|OAS2,OAS3 +|XML|✗|OAS2,OAS3 +|PROTOBUF|✗|ToolingExtension +|Custom|✗|OAS2,OAS3 diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TinyCppClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTinyClientCodegen.java similarity index 87% rename from modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TinyCppClientCodegen.java rename to modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTinyClientCodegen.java index 91a9a95b5e4..d339555a86e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TinyCppClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTinyClientCodegen.java @@ -1,9 +1,28 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.openapitools.codegen.languages; import org.openapitools.codegen.*; import io.swagger.v3.oas.models.media.Schema; + import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.meta.GeneratorMetadata; +import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.utils.ModelUtils; import java.io.File; @@ -14,10 +33,10 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenConfig { +public class CppTinyClientCodegen extends AbstractCppCodegen implements CodegenConfig { public static final String PROJECT_NAME = "TinyClient"; - static final Logger LOGGER = LoggerFactory.getLogger(TinyCppClientCodegen.class); + static final Logger LOGGER = LoggerFactory.getLogger(CppTinyClientCodegen.class); public static final String MICROCONTROLLER = "controller"; public static final String rootFolder = ""; @@ -35,7 +54,7 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC * @return the friendly name for the generator */ public String getName() { - return "tiny-cpp"; + return "cpp-tiny"; } /** @@ -45,18 +64,17 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC * @return A string value for the help message */ public String getHelp() { - return "Generates a Arduino rest client."; + return "Generates a C++ Arduino REST API client."; } - public void addControllerToAdditionalProperties(){ - Map supportedControllers = new HashMap(){{ + public void addControllerToAdditionalProperties() { + Map supportedControllers = new HashMap() {{ put("esp32", "isESP32"); put("esp8266", "isESP8266"); }}; if (supportedControllers.containsKey(controller)) { additionalProperties.put(supportedControllers.get(controller), true); - } - else { + } else { //String msg = String.format("The specified controller: %s is not supported.\nSupported controllers are: %s", // controller, // supportedControllers.keySet()); @@ -64,7 +82,7 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC } } - public TinyCppClientCodegen() { + public CppTinyClientCodegen() { super(); modifyFeatureSet(feature -> feature @@ -103,8 +121,12 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC DocumentationFeature.Readme )); - outputFolder = "generated-code" + File.separator + "tiny-cpp"; - embeddedTemplateDir = templateDir = "tiny-cpp-client"; + generatorMetadata = GeneratorMetadata.newBuilder(generatorMetadata) + .stability(Stability.BETA) + .build(); + + outputFolder = "generated-code" + File.separator + "cpp-tiny"; + embeddedTemplateDir = templateDir = "cpp-tiny"; String libFolder = "lib"; // MODELS @@ -122,7 +144,7 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC supportingFiles.add(new SupportingFile("run-tests.mustache", "test", "RunTests.cpp")); // SERVICES - apiPackage = TinyCppClientCodegen.libFolder + File.separator + "service"; + apiPackage = CppTinyClientCodegen.libFolder + File.separator + "service"; apiTemplateFiles.put("service/api-header.mustache".replace('/', File.separatorChar), ".h"); apiTemplateFiles.put("service/api-body.mustache".replace('/', File.separatorChar), ".cpp"); @@ -131,9 +153,8 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC supportingFiles.add(new SupportingFile("service/AbstractService.h.mustache", serviceFolder, "AbstractService.h")); supportingFiles.add(new SupportingFile("service/AbstractService.cpp.mustache", serviceFolder, "AbstractService.cpp")); - // Main - supportingFiles.add(new SupportingFile("main.mustache", TinyCppClientCodegen.sourceFolder, "main.cpp")); + supportingFiles.add(new SupportingFile("main.mustache", CppTinyClientCodegen.sourceFolder, "main.cpp")); // Config files supportingFiles.add(new SupportingFile("README.mustache", rootFolder, "README.md")); @@ -142,8 +163,6 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC supportingFiles.add(new SupportingFile("README.mustache", rootFolder, "README.md")); supportingFiles.add(new SupportingFile("pre_compiling_bourne.py.mustache", rootFolder, "pre_compiling_bourne.py")); - - defaultIncludes = new HashSet( Arrays.asList( "bool", @@ -162,10 +181,6 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC "std::string") ); - - - - super.typeMapping = new HashMap(); typeMapping.put("string", "std::string"); typeMapping.put("integer", "int"); @@ -180,7 +195,6 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC } - // FilePaths private static final String sourceFolder = "src"; private static final String libFolder = "lib"; @@ -213,8 +227,6 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC typeMapping.put("URI", "std::string"); } - - @Override public void processOpts() { super.processOpts(); @@ -222,7 +234,7 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC // -- --additional-properties=controller= if (additionalProperties.containsKey(MICROCONTROLLER)) { - controller = additionalProperties.get(MICROCONTROLLER).toString(); + controller = additionalProperties.get(MICROCONTROLLER).toString(); } addControllerToAdditionalProperties(); @@ -230,17 +242,15 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC LOGGER.info("Generator targeting the following microcontroller: {}", controller); } - @Override public String toInstantiationType(Schema p) { - if (ModelUtils.isArraySchema(p)) { + if (ModelUtils.isArraySchema(p)) { return instantiationTypes.get("array"); } else { return null; } } - @Override public String getTypeDeclaration(Schema p) { String openAPIType = getSchemaType(p); @@ -251,7 +261,6 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC } } - @Override public String getSchemaType(Schema p) { String openAPIType = super.getSchemaType(p); @@ -291,8 +300,6 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC return "#include \"" + name + ".h\""; } - - @Override public String toApiImport(String name) { return super.toApiImport(name); @@ -301,7 +308,7 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC @Override public String toVarName(String name) { String paramName = name.replaceAll("[^a-zA-Z0-9_]", ""); - if (name.length() > 0 ) { + if (name.length() > 0) { paramName = Character.toLowerCase(paramName.charAt(0)) + paramName.substring(1); } if (isReservedWord(paramName)) { @@ -333,6 +340,4 @@ public class TinyCppClientCodegen extends AbstractCppCodegen implements CodegenC } - - } diff --git a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig index 1d4ef4f2568..dcc8eacbc8a 100644 --- a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig +++ b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig @@ -16,6 +16,7 @@ org.openapitools.codegen.languages.CppQtQHttpEngineServerCodegen org.openapitools.codegen.languages.CppPistacheServerCodegen org.openapitools.codegen.languages.CppRestbedServerCodegen org.openapitools.codegen.languages.CppRestSdkClientCodegen +org.openapitools.codegen.languages.CppTinyClientCodegen org.openapitools.codegen.languages.CppTizenClientCodegen org.openapitools.codegen.languages.CppUE4ClientCodegen org.openapitools.codegen.languages.CSharpClientCodegen @@ -132,5 +133,4 @@ org.openapitools.codegen.languages.TypeScriptNestjsClientCodegen org.openapitools.codegen.languages.TypeScriptNodeClientCodegen org.openapitools.codegen.languages.TypeScriptReduxQueryClientCodegen org.openapitools.codegen.languages.TypeScriptRxjsClientCodegen -org.openapitools.codegen.languages.TinyCppClientCodegen org.openapitools.codegen.languages.GoEchoServerCodegen diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/README.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/README.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/README.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/README.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/helpers-body.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/helpers-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/helpers-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/helpers-body.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/helpers-header.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/helpers-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/helpers-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/helpers-header.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/main.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/main.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/main.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/main.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/model-body.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/model-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/model-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/model-body.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/model-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/model-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/model-header.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/platformio.ini.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/platformio.ini.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/platformio.ini.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/platformio.ini.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/pre_compiling_bourne.py.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/pre_compiling_bourne.py.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/pre_compiling_bourne.py.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/pre_compiling_bourne.py.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/root.cert.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/root.cert.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/root.cert.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/root.cert.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/run-tests.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/run-tests.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/run-tests.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/run-tests.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/AbstractService.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/service/AbstractService.cpp.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/service/AbstractService.cpp.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/service/AbstractService.cpp.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/AbstractService.h.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/service/AbstractService.h.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/service/AbstractService.h.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/service/AbstractService.h.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/Response.h.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/service/Response.h.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/service/Response.h.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/service/Response.h.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/api-body.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/service/api-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/service/api-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/service/api-body.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/service/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/service/api-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/service/api-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/service/api-header.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/unit-test-model.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/unit-test-model.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/unit-test-model.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/unit-test-model.mustache diff --git a/modules/openapi-generator/src/main/resources/tiny-cpp-client/unittest.mustache b/modules/openapi-generator/src/main/resources/cpp-tiny/unittest.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tiny-cpp-client/unittest.mustache rename to modules/openapi-generator/src/main/resources/cpp-tiny/unittest.mustache diff --git a/samples/client/petstore/cpp-tiny/.openapi-generator-ignore b/samples/client/petstore/cpp-tiny/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/cpp-tiny/.openapi-generator/FILES b/samples/client/petstore/cpp-tiny/.openapi-generator/FILES new file mode 100644 index 00000000000..1024d945064 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/.openapi-generator/FILES @@ -0,0 +1,30 @@ +README.md +README.md +lib/Models/ApiResponse.cpp +lib/Models/ApiResponse.h +lib/Models/Category.cpp +lib/Models/Category.h +lib/Models/Helpers.cpp +lib/Models/Helpers.h +lib/Models/Order.cpp +lib/Models/Order.h +lib/Models/Pet.cpp +lib/Models/Pet.h +lib/Models/Tag.cpp +lib/Models/Tag.h +lib/Models/User.cpp +lib/Models/User.h +lib/service/AbstractService.cpp +lib/service/AbstractService.h +lib/service/PetApi.cpp +lib/service/PetApi.h +lib/service/Response.h +lib/service/StoreApi.cpp +lib/service/StoreApi.h +lib/service/UserApi.cpp +lib/service/UserApi.h +platformio.ini +pre_compiling_bourne.py +root.cert +src/main.cpp +test/RunTests.cpp diff --git a/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION b/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION new file mode 100644 index 00000000000..6555596f931 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/cpp-tiny/README.md b/samples/client/petstore/cpp-tiny/README.md new file mode 100644 index 00000000000..e8bf721275b --- /dev/null +++ b/samples/client/petstore/cpp-tiny/README.md @@ -0,0 +1,73 @@ +# Documentation for OpenAPI Petstore +This is a client generator for microcontrollers on the Espressif32 platform and the Arduino framework +After the client have been generated, you have to change these following variablies: +- root.cert | Provide your service root certificate. +- src/main.cpp | Change wifi name +- src/main.cpp | Change wifi password +- lib/service/AbstractService.h | Change to your url + +# Documentation for OpenAPI Petstore 1.0.0 Tiny client cpp (Arduino) + +The project is structured like this: +``` +samples/client/petstore/tiny/cpp/ +├── lib +│ ├── Models +│ ├── service +│ └── TestFiles +├── platformio.ini +├── pre_compiling_bourne.py +├── README.md +├── root.cert +├── src +│ └── main.cpp +└── test + └── RunTests.cpp +``` + +All URIs are relative to http://petstore.swagger.iohttp://petstore.swagger.io/v2 + +### PetApi +|Method | HTTP request | Description| +|------------- | ------------- | -------------| +|*addPet* | *POST* /pet | Add a new pet to the store.| +|*deletePet* | *DELETE* /pet/{petId} | Deletes a pet.| +|*findPetsByStatus* | *GET* /pet/findByStatus | Finds Pets by status.| +|*findPetsByTags* | *GET* /pet/findByTags | Finds Pets by tags.| +|*getPetById* | *GET* /pet/{petId} | Find pet by ID.| +|*updatePet* | *PUT* /pet | Update an existing pet.| +|*updatePetWithForm* | *POST* /pet/{petId} | Updates a pet in the store with form data.| +|*uploadFile* | *POST* /pet/{petId}/uploadImage | uploads an image.| + +### StoreApi +|Method | HTTP request | Description| +|------------- | ------------- | -------------| +|*deleteOrder* | *DELETE* /store/order/{orderId} | Delete purchase order by ID.| +|*getInventory* | *GET* /store/inventory | Returns pet inventories by status.| +|*getOrderById* | *GET* /store/order/{orderId} | Find purchase order by ID.| +|*placeOrder* | *POST* /store/order | Place an order for a pet.| + +### UserApi +|Method | HTTP request | Description| +|------------- | ------------- | -------------| +|*createUser* | *POST* /user | Create user.| +|*createUsersWithArrayInput* | *POST* /user/createWithArray | Creates list of users with given input array.| +|*createUsersWithListInput* | *POST* /user/createWithList | Creates list of users with given input array.| +|*deleteUser* | *DELETE* /user/{username} | Delete user.| +|*getUserByName* | *GET* /user/{username} | Get user by user name.| +|*loginUser* | *GET* /user/login | Logs user into the system.| +|*logoutUser* | *GET* /user/logout | Logs out current logged in user session.| +|*updateUser* | *PUT* /user/{username} | Updated user.| + + +## What are the Model files for the data structures/objects? +|Class | Description| +|------------- | -------------| +|*ApiResponse* | Describes the result of uploading an image resource| +|*Category* | A category for a pet| +|*Order* | An order for a pets from the pet store| +|*Pet* | A pet for sale in the pet store| +|*Tag* | A tag for a pet| +|*User* | A User who is purchasing from the pet store| + + diff --git a/samples/client/petstore/cpp-tiny/lib/Models/ApiResponse.cpp b/samples/client/petstore/cpp-tiny/lib/Models/ApiResponse.cpp new file mode 100644 index 00000000000..e9be9e2b618 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/ApiResponse.cpp @@ -0,0 +1,139 @@ + + +#include "ApiResponse.h" + +using namespace Tiny; + +ApiResponse::ApiResponse() +{ + code = int(0); + type = std::string(); + message = std::string(); +} + +ApiResponse::ApiResponse(std::string jsonString) +{ + this->fromJson(jsonString); +} + +ApiResponse::~ApiResponse() +{ + +} + +void +ApiResponse::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + const char *codeKey = "code"; + + if(object.has_key(codeKey)) + { + bourne::json value = object[codeKey]; + + + + jsonToValue(&code, value, "int"); + + + } + + const char *typeKey = "type"; + + if(object.has_key(typeKey)) + { + bourne::json value = object[typeKey]; + + + + jsonToValue(&type, value, "std::string"); + + + } + + const char *messageKey = "message"; + + if(object.has_key(messageKey)) + { + bourne::json value = object[messageKey]; + + + + jsonToValue(&message, value, "std::string"); + + + } + + +} + +bourne::json +ApiResponse::toJson() +{ + bourne::json object = bourne::json::object(); + + + + + + object["code"] = getCode(); + + + + + + + object["type"] = getType(); + + + + + + + object["message"] = getMessage(); + + + + return object; + +} + +int +ApiResponse::getCode() +{ + return code; +} + +void +ApiResponse::setCode(int code) +{ + this->code = code; +} + +std::string +ApiResponse::getType() +{ + return type; +} + +void +ApiResponse::setType(std::string type) +{ + this->type = type; +} + +std::string +ApiResponse::getMessage() +{ + return message; +} + +void +ApiResponse::setMessage(std::string message) +{ + this->message = message; +} + + + diff --git a/samples/client/petstore/cpp-tiny/lib/Models/ApiResponse.h b/samples/client/petstore/cpp-tiny/lib/Models/ApiResponse.h new file mode 100644 index 00000000000..dbaf8abcaf3 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/ApiResponse.h @@ -0,0 +1,78 @@ + +/* + * ApiResponse.h + * + * Describes the result of uploading an image resource + */ + +#ifndef TINY_CPP_CLIENT_ApiResponse_H_ +#define TINY_CPP_CLIENT_ApiResponse_H_ + + +#include +#include "bourne/json.hpp" +#include "Helpers.h" + +namespace Tiny { + + +/*! \brief Describes the result of uploading an image resource + * + * \ingroup Models + * + */ + +class ApiResponse{ +public: + + /*! \brief Constructor. + */ + ApiResponse(); + ApiResponse(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~ApiResponse(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + /*! \brief Get + */ + int getCode(); + + /*! \brief Set + */ + void setCode(int code); + /*! \brief Get + */ + std::string getType(); + + /*! \brief Set + */ + void setType(std::string type); + /*! \brief Get + */ + std::string getMessage(); + + /*! \brief Set + */ + void setMessage(std::string message); + + + private: + int code{}; + std::string type{}; + std::string message{}; +}; +} + +#endif /* TINY_CPP_CLIENT_ApiResponse_H_ */ diff --git a/samples/client/petstore/cpp-tiny/lib/Models/Category.cpp b/samples/client/petstore/cpp-tiny/lib/Models/Category.cpp new file mode 100644 index 00000000000..950b06ffd44 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/Category.cpp @@ -0,0 +1,106 @@ + + +#include "Category.h" + +using namespace Tiny; + +Category::Category() +{ + id = long(0); + name = std::string(); +} + +Category::Category(std::string jsonString) +{ + this->fromJson(jsonString); +} + +Category::~Category() +{ + +} + +void +Category::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + const char *idKey = "id"; + + if(object.has_key(idKey)) + { + bourne::json value = object[idKey]; + + + + jsonToValue(&id, value, "long"); + + + } + + const char *nameKey = "name"; + + if(object.has_key(nameKey)) + { + bourne::json value = object[nameKey]; + + + + jsonToValue(&name, value, "std::string"); + + + } + + +} + +bourne::json +Category::toJson() +{ + bourne::json object = bourne::json::object(); + + + + + + object["id"] = getId(); + + + + + + + object["name"] = getName(); + + + + return object; + +} + +long +Category::getId() +{ + return id; +} + +void +Category::setId(long id) +{ + this->id = id; +} + +std::string +Category::getName() +{ + return name; +} + +void +Category::setName(std::string name) +{ + this->name = name; +} + + + diff --git a/samples/client/petstore/cpp-tiny/lib/Models/Category.h b/samples/client/petstore/cpp-tiny/lib/Models/Category.h new file mode 100644 index 00000000000..9c90e3dd416 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/Category.h @@ -0,0 +1,70 @@ + +/* + * Category.h + * + * A category for a pet + */ + +#ifndef TINY_CPP_CLIENT_Category_H_ +#define TINY_CPP_CLIENT_Category_H_ + + +#include +#include "bourne/json.hpp" +#include "Helpers.h" + +namespace Tiny { + + +/*! \brief A category for a pet + * + * \ingroup Models + * + */ + +class Category{ +public: + + /*! \brief Constructor. + */ + Category(); + Category(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~Category(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + /*! \brief Get + */ + long getId(); + + /*! \brief Set + */ + void setId(long id); + /*! \brief Get + */ + std::string getName(); + + /*! \brief Set + */ + void setName(std::string name); + + + private: + long id{}; + std::string name{}; +}; +} + +#endif /* TINY_CPP_CLIENT_Category_H_ */ diff --git a/samples/client/petstore/cpp-tiny/lib/Models/Helpers.cpp b/samples/client/petstore/cpp-tiny/lib/Models/Helpers.cpp new file mode 100644 index 00000000000..c3935b37cde --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/Helpers.cpp @@ -0,0 +1,102 @@ +#include "Helpers.h" +#include +#include + +bool isprimitive(std::string type){ + if(type == "std::string" || + type == "int" || + type == "float" || + type == "long" || + type == "double" || + type == "bool" || + type == "std::map" || + type == "std::list") + { + return true; + } + return false; +} + + +void +jsonToValue(void* target, bourne::json value, std::string type) +{ + if (target == NULL || value.is_null()) { + return; + } + + else if (type.compare("bool") == 0) + { + bool* val = static_cast (target); + *val = value.to_bool(); + } + + else if (type.compare("int") == 0) + { + int* val = static_cast (target); + *val = value.to_int(); + } + + else if (type.compare("float") == 0) + { + float* val = static_cast (target); + *val = (float)(value.to_float()); + } + + else if (type.compare("long") == 0) + { + long* val = static_cast (target); + *val = (long)(value.to_int()); + } + + else if (type.compare("double") == 0) + { + double* val = static_cast (target); + *val = value.to_float(); + } + + else if (type.compare("std::string") == 0) + { + std::string* val = static_cast (target); + *val = value.to_string(); + } + else { + return; + } +} + +std::string +stringify(long input){ + std::stringstream stream; + stream << input; + return stream.str(); + +}; + +std::string +stringify(int input){ + std::stringstream stream; + stream << input; + return stream.str(); +}; + +std::string +stringify(double input){ + std::stringstream stream; + stream << input; + return stream.str(); +}; + +std::string +stringify(float input){ + std::stringstream stream; + stream << input; + return stream.str(); +}; + +std::string +stringify(std::string input){ + std::stringstream stream; + stream << input; + return stream.str(); +}; diff --git a/samples/client/petstore/cpp-tiny/lib/Models/Helpers.h b/samples/client/petstore/cpp-tiny/lib/Models/Helpers.h new file mode 100644 index 00000000000..5ef7d9afdf7 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/Helpers.h @@ -0,0 +1,22 @@ +#ifndef TINY_CPP_CLIENT_HELPERS_H_ +#define TINY_CPP_CLIENT_HELPERS_H_ + +#include +#include "bourne/json.hpp" + +bool isprimitive(std::string type); + +void jsonToValue(void* target, bourne::json value, std::string type); + +std::string stringify(long input); + +std::string stringify(int input); + +std::string stringify(double input); + +std::string stringify(float input); + +std::string stringify(std::string input); + +#endif /* TINY_CPP_CLIENT_HELPERS_H_ */ + diff --git a/samples/client/petstore/cpp-tiny/lib/Models/Order.cpp b/samples/client/petstore/cpp-tiny/lib/Models/Order.cpp new file mode 100644 index 00000000000..b8b7e00d3fc --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/Order.cpp @@ -0,0 +1,238 @@ + + +#include "Order.h" + +using namespace Tiny; + +Order::Order() +{ + id = long(0); + petId = long(0); + quantity = int(0); + shipDate = std::string(); + status = std::string(); + complete = bool(false); +} + +Order::Order(std::string jsonString) +{ + this->fromJson(jsonString); +} + +Order::~Order() +{ + +} + +void +Order::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + const char *idKey = "id"; + + if(object.has_key(idKey)) + { + bourne::json value = object[idKey]; + + + + jsonToValue(&id, value, "long"); + + + } + + const char *petIdKey = "petId"; + + if(object.has_key(petIdKey)) + { + bourne::json value = object[petIdKey]; + + + + jsonToValue(&petId, value, "long"); + + + } + + const char *quantityKey = "quantity"; + + if(object.has_key(quantityKey)) + { + bourne::json value = object[quantityKey]; + + + + jsonToValue(&quantity, value, "int"); + + + } + + const char *shipDateKey = "shipDate"; + + if(object.has_key(shipDateKey)) + { + bourne::json value = object[shipDateKey]; + + + + jsonToValue(&shipDate, value, "std::string"); + + + } + + const char *statusKey = "status"; + + if(object.has_key(statusKey)) + { + bourne::json value = object[statusKey]; + + + + jsonToValue(&status, value, "std::string"); + + + } + + const char *completeKey = "complete"; + + if(object.has_key(completeKey)) + { + bourne::json value = object[completeKey]; + + + + jsonToValue(&complete, value, "bool"); + + + } + + +} + +bourne::json +Order::toJson() +{ + bourne::json object = bourne::json::object(); + + + + + + object["id"] = getId(); + + + + + + + object["petId"] = getPetId(); + + + + + + + object["quantity"] = getQuantity(); + + + + + + + object["shipDate"] = getShipDate(); + + + + + + + object["status"] = getStatus(); + + + + + + + object["complete"] = isComplete(); + + + + return object; + +} + +long +Order::getId() +{ + return id; +} + +void +Order::setId(long id) +{ + this->id = id; +} + +long +Order::getPetId() +{ + return petId; +} + +void +Order::setPetId(long petId) +{ + this->petId = petId; +} + +int +Order::getQuantity() +{ + return quantity; +} + +void +Order::setQuantity(int quantity) +{ + this->quantity = quantity; +} + +std::string +Order::getShipDate() +{ + return shipDate; +} + +void +Order::setShipDate(std::string shipDate) +{ + this->shipDate = shipDate; +} + +std::string +Order::getStatus() +{ + return status; +} + +void +Order::setStatus(std::string status) +{ + this->status = status; +} + +bool +Order::isComplete() +{ + return complete; +} + +void +Order::setComplete(bool complete) +{ + this->complete = complete; +} + + + diff --git a/samples/client/petstore/cpp-tiny/lib/Models/Order.h b/samples/client/petstore/cpp-tiny/lib/Models/Order.h new file mode 100644 index 00000000000..6f36404f959 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/Order.h @@ -0,0 +1,102 @@ + +/* + * Order.h + * + * An order for a pets from the pet store + */ + +#ifndef TINY_CPP_CLIENT_Order_H_ +#define TINY_CPP_CLIENT_Order_H_ + + +#include +#include "bourne/json.hpp" +#include "Helpers.h" + +namespace Tiny { + + +/*! \brief An order for a pets from the pet store + * + * \ingroup Models + * + */ + +class Order{ +public: + + /*! \brief Constructor. + */ + Order(); + Order(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~Order(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + /*! \brief Get + */ + long getId(); + + /*! \brief Set + */ + void setId(long id); + /*! \brief Get + */ + long getPetId(); + + /*! \brief Set + */ + void setPetId(long petId); + /*! \brief Get + */ + int getQuantity(); + + /*! \brief Set + */ + void setQuantity(int quantity); + /*! \brief Get + */ + std::string getShipDate(); + + /*! \brief Set + */ + void setShipDate(std::string shipDate); + /*! \brief Get Order Status + */ + std::string getStatus(); + + /*! \brief Set Order Status + */ + void setStatus(std::string status); + /*! \brief Get + */ + bool isComplete(); + + /*! \brief Set + */ + void setComplete(bool complete); + + + private: + long id{}; + long petId{}; + int quantity{}; + std::string shipDate{}; + std::string status{}; + bool complete{}; +}; +} + +#endif /* TINY_CPP_CLIENT_Order_H_ */ diff --git a/samples/client/petstore/cpp-tiny/lib/Models/Pet.cpp b/samples/client/petstore/cpp-tiny/lib/Models/Pet.cpp new file mode 100644 index 00000000000..57f7781aef2 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/Pet.cpp @@ -0,0 +1,274 @@ + + +#include "Pet.h" + +using namespace Tiny; + +Pet::Pet() +{ + id = long(0); + category = Category(); + name = std::string(); + photoUrls = std::list(); + tags = std::list(); + status = std::string(); +} + +Pet::Pet(std::string jsonString) +{ + this->fromJson(jsonString); +} + +Pet::~Pet() +{ + +} + +void +Pet::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + const char *idKey = "id"; + + if(object.has_key(idKey)) + { + bourne::json value = object[idKey]; + + + + jsonToValue(&id, value, "long"); + + + } + + const char *categoryKey = "category"; + + if(object.has_key(categoryKey)) + { + bourne::json value = object[categoryKey]; + + + + + Category* obj = &category; + obj->fromJson(value.dump()); + + } + + const char *nameKey = "name"; + + if(object.has_key(nameKey)) + { + bourne::json value = object[nameKey]; + + + + jsonToValue(&name, value, "std::string"); + + + } + + const char *photoUrlsKey = "photoUrls"; + + if(object.has_key(photoUrlsKey)) + { + bourne::json value = object[photoUrlsKey]; + + + std::list photoUrls_list; + std::string element; + for(auto& var : value.array_range()) + { + + jsonToValue(&element, var, "std::string"); + + + photoUrls_list.push_back(element); + } + photoUrls = photoUrls_list; + + + } + + const char *tagsKey = "tags"; + + if(object.has_key(tagsKey)) + { + bourne::json value = object[tagsKey]; + + + std::list tags_list; + Tag element; + for(auto& var : value.array_range()) + { + + + element.fromJson(var.dump()); + + tags_list.push_back(element); + } + tags = tags_list; + + + } + + const char *statusKey = "status"; + + if(object.has_key(statusKey)) + { + bourne::json value = object[statusKey]; + + + + jsonToValue(&status, value, "std::string"); + + + } + + +} + +bourne::json +Pet::toJson() +{ + bourne::json object = bourne::json::object(); + + + + + + object["id"] = getId(); + + + + + + + + object["category"] = getCategory().toJson(); + + + + + + object["name"] = getName(); + + + + + + std::list photoUrls_list = getPhotoUrls(); + bourne::json photoUrls_arr = bourne::json::array(); + + for(auto& var : photoUrls_list) + { + photoUrls_arr.append(var); + } + object["photoUrls"] = photoUrls_arr; + + + + + + + + + std::list tags_list = getTags(); + bourne::json tags_arr = bourne::json::array(); + + for(auto& var : tags_list) + { + Tag obj = var; + tags_arr.append(obj.toJson()); + } + object["tags"] = tags_arr; + + + + + + + + object["status"] = getStatus(); + + + + return object; + +} + +long +Pet::getId() +{ + return id; +} + +void +Pet::setId(long id) +{ + this->id = id; +} + +Category +Pet::getCategory() +{ + return category; +} + +void +Pet::setCategory(Category category) +{ + this->category = category; +} + +std::string +Pet::getName() +{ + return name; +} + +void +Pet::setName(std::string name) +{ + this->name = name; +} + +std::list +Pet::getPhotoUrls() +{ + return photoUrls; +} + +void +Pet::setPhotoUrls(std::list photoUrls) +{ + this->photoUrls = photoUrls; +} + +std::list +Pet::getTags() +{ + return tags; +} + +void +Pet::setTags(std::list tags) +{ + this->tags = tags; +} + +std::string +Pet::getStatus() +{ + return status; +} + +void +Pet::setStatus(std::string status) +{ + this->status = status; +} + + + diff --git a/samples/client/petstore/cpp-tiny/lib/Models/Pet.h b/samples/client/petstore/cpp-tiny/lib/Models/Pet.h new file mode 100644 index 00000000000..3329735f8a1 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/Pet.h @@ -0,0 +1,105 @@ + +/* + * Pet.h + * + * A pet for sale in the pet store + */ + +#ifndef TINY_CPP_CLIENT_Pet_H_ +#define TINY_CPP_CLIENT_Pet_H_ + + +#include +#include "bourne/json.hpp" +#include "Helpers.h" +#include "Category.h" +#include "Tag.h" +#include + +namespace Tiny { + + +/*! \brief A pet for sale in the pet store + * + * \ingroup Models + * + */ + +class Pet{ +public: + + /*! \brief Constructor. + */ + Pet(); + Pet(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~Pet(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + /*! \brief Get + */ + long getId(); + + /*! \brief Set + */ + void setId(long id); + /*! \brief Get + */ + Category getCategory(); + + /*! \brief Set + */ + void setCategory(Category category); + /*! \brief Get + */ + std::string getName(); + + /*! \brief Set + */ + void setName(std::string name); + /*! \brief Get + */ + std::list getPhotoUrls(); + + /*! \brief Set + */ + void setPhotoUrls(std::list photoUrls); + /*! \brief Get + */ + std::list getTags(); + + /*! \brief Set + */ + void setTags(std::list tags); + /*! \brief Get pet status in the store + */ + std::string getStatus(); + + /*! \brief Set pet status in the store + */ + void setStatus(std::string status); + + + private: + long id{}; + Category category; + std::string name{}; + std::list photoUrls; + std::list tags; + std::string status{}; +}; +} + +#endif /* TINY_CPP_CLIENT_Pet_H_ */ diff --git a/samples/client/petstore/cpp-tiny/lib/Models/Tag.cpp b/samples/client/petstore/cpp-tiny/lib/Models/Tag.cpp new file mode 100644 index 00000000000..e46d94258a1 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/Tag.cpp @@ -0,0 +1,106 @@ + + +#include "Tag.h" + +using namespace Tiny; + +Tag::Tag() +{ + id = long(0); + name = std::string(); +} + +Tag::Tag(std::string jsonString) +{ + this->fromJson(jsonString); +} + +Tag::~Tag() +{ + +} + +void +Tag::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + const char *idKey = "id"; + + if(object.has_key(idKey)) + { + bourne::json value = object[idKey]; + + + + jsonToValue(&id, value, "long"); + + + } + + const char *nameKey = "name"; + + if(object.has_key(nameKey)) + { + bourne::json value = object[nameKey]; + + + + jsonToValue(&name, value, "std::string"); + + + } + + +} + +bourne::json +Tag::toJson() +{ + bourne::json object = bourne::json::object(); + + + + + + object["id"] = getId(); + + + + + + + object["name"] = getName(); + + + + return object; + +} + +long +Tag::getId() +{ + return id; +} + +void +Tag::setId(long id) +{ + this->id = id; +} + +std::string +Tag::getName() +{ + return name; +} + +void +Tag::setName(std::string name) +{ + this->name = name; +} + + + diff --git a/samples/client/petstore/cpp-tiny/lib/Models/Tag.h b/samples/client/petstore/cpp-tiny/lib/Models/Tag.h new file mode 100644 index 00000000000..e05bcdc9290 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/Tag.h @@ -0,0 +1,70 @@ + +/* + * Tag.h + * + * A tag for a pet + */ + +#ifndef TINY_CPP_CLIENT_Tag_H_ +#define TINY_CPP_CLIENT_Tag_H_ + + +#include +#include "bourne/json.hpp" +#include "Helpers.h" + +namespace Tiny { + + +/*! \brief A tag for a pet + * + * \ingroup Models + * + */ + +class Tag{ +public: + + /*! \brief Constructor. + */ + Tag(); + Tag(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~Tag(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + /*! \brief Get + */ + long getId(); + + /*! \brief Set + */ + void setId(long id); + /*! \brief Get + */ + std::string getName(); + + /*! \brief Set + */ + void setName(std::string name); + + + private: + long id{}; + std::string name{}; +}; +} + +#endif /* TINY_CPP_CLIENT_Tag_H_ */ diff --git a/samples/client/petstore/cpp-tiny/lib/Models/User.cpp b/samples/client/petstore/cpp-tiny/lib/Models/User.cpp new file mode 100644 index 00000000000..ac84c40205a --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/User.cpp @@ -0,0 +1,304 @@ + + +#include "User.h" + +using namespace Tiny; + +User::User() +{ + id = long(0); + username = std::string(); + firstName = std::string(); + lastName = std::string(); + email = std::string(); + password = std::string(); + phone = std::string(); + userStatus = int(0); +} + +User::User(std::string jsonString) +{ + this->fromJson(jsonString); +} + +User::~User() +{ + +} + +void +User::fromJson(std::string jsonObj) +{ + bourne::json object = bourne::json::parse(jsonObj); + + const char *idKey = "id"; + + if(object.has_key(idKey)) + { + bourne::json value = object[idKey]; + + + + jsonToValue(&id, value, "long"); + + + } + + const char *usernameKey = "username"; + + if(object.has_key(usernameKey)) + { + bourne::json value = object[usernameKey]; + + + + jsonToValue(&username, value, "std::string"); + + + } + + const char *firstNameKey = "firstName"; + + if(object.has_key(firstNameKey)) + { + bourne::json value = object[firstNameKey]; + + + + jsonToValue(&firstName, value, "std::string"); + + + } + + const char *lastNameKey = "lastName"; + + if(object.has_key(lastNameKey)) + { + bourne::json value = object[lastNameKey]; + + + + jsonToValue(&lastName, value, "std::string"); + + + } + + const char *emailKey = "email"; + + if(object.has_key(emailKey)) + { + bourne::json value = object[emailKey]; + + + + jsonToValue(&email, value, "std::string"); + + + } + + const char *passwordKey = "password"; + + if(object.has_key(passwordKey)) + { + bourne::json value = object[passwordKey]; + + + + jsonToValue(&password, value, "std::string"); + + + } + + const char *phoneKey = "phone"; + + if(object.has_key(phoneKey)) + { + bourne::json value = object[phoneKey]; + + + + jsonToValue(&phone, value, "std::string"); + + + } + + const char *userStatusKey = "userStatus"; + + if(object.has_key(userStatusKey)) + { + bourne::json value = object[userStatusKey]; + + + + jsonToValue(&userStatus, value, "int"); + + + } + + +} + +bourne::json +User::toJson() +{ + bourne::json object = bourne::json::object(); + + + + + + object["id"] = getId(); + + + + + + + object["username"] = getUsername(); + + + + + + + object["firstName"] = getFirstName(); + + + + + + + object["lastName"] = getLastName(); + + + + + + + object["email"] = getEmail(); + + + + + + + object["password"] = getPassword(); + + + + + + + object["phone"] = getPhone(); + + + + + + + object["userStatus"] = getUserStatus(); + + + + return object; + +} + +long +User::getId() +{ + return id; +} + +void +User::setId(long id) +{ + this->id = id; +} + +std::string +User::getUsername() +{ + return username; +} + +void +User::setUsername(std::string username) +{ + this->username = username; +} + +std::string +User::getFirstName() +{ + return firstName; +} + +void +User::setFirstName(std::string firstName) +{ + this->firstName = firstName; +} + +std::string +User::getLastName() +{ + return lastName; +} + +void +User::setLastName(std::string lastName) +{ + this->lastName = lastName; +} + +std::string +User::getEmail() +{ + return email; +} + +void +User::setEmail(std::string email) +{ + this->email = email; +} + +std::string +User::getPassword() +{ + return password; +} + +void +User::setPassword(std::string password) +{ + this->password = password; +} + +std::string +User::getPhone() +{ + return phone; +} + +void +User::setPhone(std::string phone) +{ + this->phone = phone; +} + +int +User::getUserStatus() +{ + return userStatus; +} + +void +User::setUserStatus(int userStatus) +{ + this->userStatus = userStatus; +} + + + diff --git a/samples/client/petstore/cpp-tiny/lib/Models/User.h b/samples/client/petstore/cpp-tiny/lib/Models/User.h new file mode 100644 index 00000000000..84de5204ced --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/Models/User.h @@ -0,0 +1,118 @@ + +/* + * User.h + * + * A User who is purchasing from the pet store + */ + +#ifndef TINY_CPP_CLIENT_User_H_ +#define TINY_CPP_CLIENT_User_H_ + + +#include +#include "bourne/json.hpp" +#include "Helpers.h" + +namespace Tiny { + + +/*! \brief A User who is purchasing from the pet store + * + * \ingroup Models + * + */ + +class User{ +public: + + /*! \brief Constructor. + */ + User(); + User(std::string jsonString); + + + /*! \brief Destructor. + */ + virtual ~User(); + + + /*! \brief Retrieve a bourne JSON representation of this class. + */ + bourne::json toJson(); + + + /*! \brief Fills in members of this class from bourne JSON object representing it. + */ + void fromJson(std::string jsonObj); + + /*! \brief Get + */ + long getId(); + + /*! \brief Set + */ + void setId(long id); + /*! \brief Get + */ + std::string getUsername(); + + /*! \brief Set + */ + void setUsername(std::string username); + /*! \brief Get + */ + std::string getFirstName(); + + /*! \brief Set + */ + void setFirstName(std::string firstName); + /*! \brief Get + */ + std::string getLastName(); + + /*! \brief Set + */ + void setLastName(std::string lastName); + /*! \brief Get + */ + std::string getEmail(); + + /*! \brief Set + */ + void setEmail(std::string email); + /*! \brief Get + */ + std::string getPassword(); + + /*! \brief Set + */ + void setPassword(std::string password); + /*! \brief Get + */ + std::string getPhone(); + + /*! \brief Set + */ + void setPhone(std::string phone); + /*! \brief Get User Status + */ + int getUserStatus(); + + /*! \brief Set User Status + */ + void setUserStatus(int userStatus); + + + private: + long id{}; + std::string username{}; + std::string firstName{}; + std::string lastName{}; + std::string email{}; + std::string password{}; + std::string phone{}; + int userStatus{}; +}; +} + +#endif /* TINY_CPP_CLIENT_User_H_ */ diff --git a/samples/client/petstore/cpp-tiny/lib/TestFiles/ApiResponseTest.cpp b/samples/client/petstore/cpp-tiny/lib/TestFiles/ApiResponseTest.cpp new file mode 100644 index 00000000000..160f4217f5d --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/TestFiles/ApiResponseTest.cpp @@ -0,0 +1,139 @@ + +#include "ApiResponse.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + + +void test_ApiResponse_code_is_assigned_from_json() +{ + bourne::json input = + { + "code", 1 + }; + + ApiResponse obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getCode()); + + + + + + + + +} + + +void test_ApiResponse_type_is_assigned_from_json() +{ + + + bourne::json input = + { + "type", "hello" + }; + + ApiResponse obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getType().c_str()); + + + + + + +} + + +void test_ApiResponse_message_is_assigned_from_json() +{ + + + bourne::json input = + { + "message", "hello" + }; + + ApiResponse obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getMessage().c_str()); + + + + + + +} + + + +void test_ApiResponse_code_is_converted_to_json() +{ + bourne::json input = + { + "code", 1 + }; + + ApiResponse obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["code"] == output["code"]); + + + + +} + + +void test_ApiResponse_type_is_converted_to_json() +{ + + bourne::json input = + { + "type", "hello" + }; + + ApiResponse obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["type"] == output["type"]); + + + +} + + +void test_ApiResponse_message_is_converted_to_json() +{ + + bourne::json input = + { + "message", "hello" + }; + + ApiResponse obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["message"] == output["message"]); + + + +} + + diff --git a/samples/client/petstore/cpp-tiny/lib/TestFiles/CategoryTest.cpp b/samples/client/petstore/cpp-tiny/lib/TestFiles/CategoryTest.cpp new file mode 100644 index 00000000000..2951856e6a5 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/TestFiles/CategoryTest.cpp @@ -0,0 +1,97 @@ + +#include "Category.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + + +void test_Category_id_is_assigned_from_json() +{ + + + + + + + bourne::json input = + { + "id", 1 + }; + + Category obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getId()); + + +} + + +void test_Category_name_is_assigned_from_json() +{ + + + bourne::json input = + { + "name", "hello" + }; + + Category obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getName().c_str()); + + + + + + +} + + + +void test_Category_id_is_converted_to_json() +{ + + + + bourne::json input = + { + "id", 1 + }; + + Category obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["id"] == output["id"]); + +} + + +void test_Category_name_is_converted_to_json() +{ + + bourne::json input = + { + "name", "hello" + }; + + Category obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["name"] == output["name"]); + + + +} + + diff --git a/samples/client/petstore/cpp-tiny/lib/TestFiles/OrderTest.cpp b/samples/client/petstore/cpp-tiny/lib/TestFiles/OrderTest.cpp new file mode 100644 index 00000000000..13125fc8fc5 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/TestFiles/OrderTest.cpp @@ -0,0 +1,245 @@ + +#include "Order.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + + +void test_Order_id_is_assigned_from_json() +{ + + + + + + + bourne::json input = + { + "id", 1 + }; + + Order obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getId()); + + +} + + +void test_Order_petId_is_assigned_from_json() +{ + + + + + + + bourne::json input = + { + "petId", 1 + }; + + Order obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getPetId()); + + +} + + +void test_Order_quantity_is_assigned_from_json() +{ + bourne::json input = + { + "quantity", 1 + }; + + Order obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getQuantity()); + + + + + + + + +} + + +void test_Order_shipDate_is_assigned_from_json() +{ + + + + + + + + +} + + +void test_Order_status_is_assigned_from_json() +{ + + + bourne::json input = + { + "status", "hello" + }; + + Order obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getStatus().c_str()); + + + + + + +} + + +void test_Order_complete_is_assigned_from_json() +{ + + + + + bourne::json input = + { + "complete", true + }; + + Order obj(input.dump()); + + TEST_ASSERT(true == obj.isComplete()); + + + + +} + + + +void test_Order_id_is_converted_to_json() +{ + + + + bourne::json input = + { + "id", 1 + }; + + Order obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["id"] == output["id"]); + +} + + +void test_Order_petId_is_converted_to_json() +{ + + + + bourne::json input = + { + "petId", 1 + }; + + Order obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["petId"] == output["petId"]); + +} + + +void test_Order_quantity_is_converted_to_json() +{ + bourne::json input = + { + "quantity", 1 + }; + + Order obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["quantity"] == output["quantity"]); + + + + +} + + +void test_Order_shipDate_is_converted_to_json() +{ + + + + +} + + +void test_Order_status_is_converted_to_json() +{ + + bourne::json input = + { + "status", "hello" + }; + + Order obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["status"] == output["status"]); + + + +} + + +void test_Order_complete_is_converted_to_json() +{ + + + bourne::json input = + { + "complete", true + }; + + Order obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["complete"] == output["complete"]); + + +} + + diff --git a/samples/client/petstore/cpp-tiny/lib/TestFiles/PetTest.cpp b/samples/client/petstore/cpp-tiny/lib/TestFiles/PetTest.cpp new file mode 100644 index 00000000000..04dad464093 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/TestFiles/PetTest.cpp @@ -0,0 +1,145 @@ + +#include "Pet.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + + +void test_Pet_id_is_assigned_from_json() +{ + + + + + + + bourne::json input = + { + "id", 1 + }; + + Pet obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getId()); + + +} + + + +void test_Pet_name_is_assigned_from_json() +{ + + + bourne::json input = + { + "name", "hello" + }; + + Pet obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getName().c_str()); + + + + + + +} + + + + +void test_Pet_status_is_assigned_from_json() +{ + + + bourne::json input = + { + "status", "hello" + }; + + Pet obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getStatus().c_str()); + + + + + + +} + + + +void test_Pet_id_is_converted_to_json() +{ + + + + bourne::json input = + { + "id", 1 + }; + + Pet obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["id"] == output["id"]); + +} + + + +void test_Pet_name_is_converted_to_json() +{ + + bourne::json input = + { + "name", "hello" + }; + + Pet obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["name"] == output["name"]); + + + +} + + + + +void test_Pet_status_is_converted_to_json() +{ + + bourne::json input = + { + "status", "hello" + }; + + Pet obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["status"] == output["status"]); + + + +} + + diff --git a/samples/client/petstore/cpp-tiny/lib/TestFiles/TagTest.cpp b/samples/client/petstore/cpp-tiny/lib/TestFiles/TagTest.cpp new file mode 100644 index 00000000000..41ea1d0095d --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/TestFiles/TagTest.cpp @@ -0,0 +1,97 @@ + +#include "Tag.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + + +void test_Tag_id_is_assigned_from_json() +{ + + + + + + + bourne::json input = + { + "id", 1 + }; + + Tag obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getId()); + + +} + + +void test_Tag_name_is_assigned_from_json() +{ + + + bourne::json input = + { + "name", "hello" + }; + + Tag obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getName().c_str()); + + + + + + +} + + + +void test_Tag_id_is_converted_to_json() +{ + + + + bourne::json input = + { + "id", 1 + }; + + Tag obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["id"] == output["id"]); + +} + + +void test_Tag_name_is_converted_to_json() +{ + + bourne::json input = + { + "name", "hello" + }; + + Tag obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["name"] == output["name"]); + + + +} + + diff --git a/samples/client/petstore/cpp-tiny/lib/TestFiles/UserTest.cpp b/samples/client/petstore/cpp-tiny/lib/TestFiles/UserTest.cpp new file mode 100644 index 00000000000..689ee582bee --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/TestFiles/UserTest.cpp @@ -0,0 +1,349 @@ + +#include "User.h" + +using namespace Tiny; + +#include +#include +#include +#include "bourne/json.hpp" + + + +void test_User_id_is_assigned_from_json() +{ + + + + + + + bourne::json input = + { + "id", 1 + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getId()); + + +} + + +void test_User_username_is_assigned_from_json() +{ + + + bourne::json input = + { + "username", "hello" + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getUsername().c_str()); + + + + + + +} + + +void test_User_firstName_is_assigned_from_json() +{ + + + bourne::json input = + { + "firstName", "hello" + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getFirstName().c_str()); + + + + + + +} + + +void test_User_lastName_is_assigned_from_json() +{ + + + bourne::json input = + { + "lastName", "hello" + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getLastName().c_str()); + + + + + + +} + + +void test_User_email_is_assigned_from_json() +{ + + + bourne::json input = + { + "email", "hello" + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getEmail().c_str()); + + + + + + +} + + +void test_User_password_is_assigned_from_json() +{ + + + bourne::json input = + { + "password", "hello" + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getPassword().c_str()); + + + + + + +} + + +void test_User_phone_is_assigned_from_json() +{ + + + bourne::json input = + { + "phone", "hello" + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_STRING("hello", obj.getPhone().c_str()); + + + + + + +} + + +void test_User_userStatus_is_assigned_from_json() +{ + bourne::json input = + { + "userStatus", 1 + }; + + User obj(input.dump()); + + TEST_ASSERT_EQUAL_INT(1, obj.getUserStatus()); + + + + + + + + +} + + + +void test_User_id_is_converted_to_json() +{ + + + + bourne::json input = + { + "id", 1 + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["id"] == output["id"]); + +} + + +void test_User_username_is_converted_to_json() +{ + + bourne::json input = + { + "username", "hello" + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["username"] == output["username"]); + + + +} + + +void test_User_firstName_is_converted_to_json() +{ + + bourne::json input = + { + "firstName", "hello" + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["firstName"] == output["firstName"]); + + + +} + + +void test_User_lastName_is_converted_to_json() +{ + + bourne::json input = + { + "lastName", "hello" + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["lastName"] == output["lastName"]); + + + +} + + +void test_User_email_is_converted_to_json() +{ + + bourne::json input = + { + "email", "hello" + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["email"] == output["email"]); + + + +} + + +void test_User_password_is_converted_to_json() +{ + + bourne::json input = + { + "password", "hello" + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["password"] == output["password"]); + + + +} + + +void test_User_phone_is_converted_to_json() +{ + + bourne::json input = + { + "phone", "hello" + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["phone"] == output["phone"]); + + + +} + + +void test_User_userStatus_is_converted_to_json() +{ + bourne::json input = + { + "userStatus", 1 + }; + + User obj(input.dump()); + + bourne::json output = bourne::json::object(); + + output = obj.toJson(); + + TEST_ASSERT(input["userStatus"] == output["userStatus"]); + + + + +} + + diff --git a/samples/client/petstore/cpp-tiny/lib/service/AbstractService.cpp b/samples/client/petstore/cpp-tiny/lib/service/AbstractService.cpp new file mode 100644 index 00000000000..ac7e992cecc --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/service/AbstractService.cpp @@ -0,0 +1,8 @@ +#include "AbstractService.h" +#include "Arduino.h" + + + +void Tiny::AbstractService::begin(std::string url){ + http.begin(String(url.c_str()), test_root_ca); //HTTPS connection +} diff --git a/samples/client/petstore/cpp-tiny/lib/service/AbstractService.h b/samples/client/petstore/cpp-tiny/lib/service/AbstractService.h new file mode 100644 index 00000000000..07214896d7f --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/service/AbstractService.h @@ -0,0 +1,28 @@ +#ifndef TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ +#define TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ + +#include "HTTPClient.h" +#include "Response.h" +namespace Tiny { + +/** +* Class +* Generated with openapi::tiny-cpp-client +*/ +class AbstractService { +public: +HTTPClient http; +std::string basepath = "https://petstore3.swagger.io/api/v3"; // TODO: change to your url + +void begin(std::string url); + +// Go and comment out a certificate in root.cert, if you get an error here +// Certificate from file +const char* test_root_ca = +#include "../../root.cert" +; + +}; // end class +}// namespace Tinyclient + +#endif /* TINY_CPP_CLIENT_ABSTRACTSERVICE_H_ */ diff --git a/samples/client/petstore/cpp-tiny/lib/service/PetApi.cpp b/samples/client/petstore/cpp-tiny/lib/service/PetApi.cpp new file mode 100644 index 00000000000..1fa081a04b4 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/service/PetApi.cpp @@ -0,0 +1,418 @@ +#include "PetApi.h" + +using namespace Tiny; + + + + Response< + Pet + > + PetApi:: + addPet( + + Pet pet + + ) + { + std::string url = basepath + "/pet"; // + // Query | + // Headers | + // Form | + // Body | pet + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + http.addHeader("Content-Type", "application/json"); + + + + payload = pet.toJson().dump(); + + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + Pet obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + Response< + String + > + PetApi:: + deletePet( + + long petId + , + + std::string apiKey + + ) + { + std::string url = basepath + "/pet/{petId}"; //petId + // Query | + // Headers | apiKey + // Form | + // Body | + + std::string s_petId("{"); + s_petId.append("petId"); + s_petId.append("}"); + + int pos = url.find(s_petId); + + url.erase(pos, s_petId.length()); + url.insert(pos, stringify(petId)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | DELETE + int httpCode = http.sendRequest("DELETE", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + std::list + > + PetApi:: + findPetsByStatus( + std::list status + + + ) + { + std::string url = basepath + "/pet/findByStatus"; // + // Query | status + // Headers | + // Form | + // Body | + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + std::list obj = std::list(); + bourne::json jsonPayload(output_string); + + + + + + + + + + for(auto& var : jsonPayload.array_range()) + { + Pet tmp(var.dump()); + obj.push_back(tmp); + } + + + + + + + + + Response> response(obj, httpCode); + return response; + } + + Response< + std::list + > + PetApi:: + findPetsByTags( + std::list tags + + + ) + { + std::string url = basepath + "/pet/findByTags"; // + // Query | tags + // Headers | + // Form | + // Body | + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + std::list obj = std::list(); + bourne::json jsonPayload(output_string); + + + + + + + + + + for(auto& var : jsonPayload.array_range()) + { + Pet tmp(var.dump()); + obj.push_back(tmp); + } + + + + + + + + + Response> response(obj, httpCode); + return response; + } + + Response< + Pet + > + PetApi:: + getPetById( + + long petId + + ) + { + std::string url = basepath + "/pet/{petId}"; //petId + // Query | + // Headers | + // Form | + // Body | + + std::string s_petId("{"); + s_petId.append("petId"); + s_petId.append("}"); + + int pos = url.find(s_petId); + + url.erase(pos, s_petId.length()); + url.insert(pos, stringify(petId)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + Pet obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + Response< + Pet + > + PetApi:: + updatePet( + + Pet pet + + ) + { + std::string url = basepath + "/pet"; // + // Query | + // Headers | + // Form | + // Body | pet + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | PUT + http.addHeader("Content-Type", "application/json"); + + + + payload = pet.toJson().dump(); + + int httpCode = http.sendRequest("PUT", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + Pet obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + Response< + String + > + PetApi:: + updatePetWithForm( + + long petId + , + + std::string name + , + + std::string status + + ) + { + std::string url = basepath + "/pet/{petId}"; //petId + // Query | + // Headers | + // Form | name status + // Body | + + std::string s_petId("{"); + s_petId.append("petId"); + s_petId.append("}"); + + int pos = url.find(s_petId); + + url.erase(pos, s_petId.length()); + url.insert(pos, stringify(petId)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + ApiResponse + > + PetApi:: + uploadFile( + + long petId + , + + std::string additionalMetadata + , + + std::string file + + ) + { + std::string url = basepath + "/pet/{petId}/uploadImage"; //petId + // Query | + // Headers | + // Form | additionalMetadata file + // Body | + + std::string s_petId("{"); + s_petId.append("petId"); + s_petId.append("}"); + + int pos = url.find(s_petId); + + url.erase(pos, s_petId.length()); + url.insert(pos, stringify(petId)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + ApiResponse obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + + + diff --git a/samples/client/petstore/cpp-tiny/lib/service/PetApi.h b/samples/client/petstore/cpp-tiny/lib/service/PetApi.h new file mode 100644 index 00000000000..abcb0af0de9 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/service/PetApi.h @@ -0,0 +1,163 @@ +#ifndef TINY_CPP_CLIENT_PetApi_H_ +#define TINY_CPP_CLIENT_PetApi_H_ + + +#include "Response.h" +#include "Arduino.h" +#include "AbstractService.h" +#include "Helpers.h" +#include + +#include "ApiResponse.h" +#include "Pet.h" + +namespace Tiny { + +/** + * Class + * Generated with openapi::tiny-cpp-client + */ + +class PetApi : public AbstractService { +public: + PetApi() = default; + + virtual ~PetApi() = default; + + /** + * Add a new pet to the store. + * + * + * \param pet Pet object that needs to be added to the store *Required* + */ + Response< + Pet + > + addPet( + + Pet pet + + ); + /** + * Deletes a pet. + * + * + * \param petId Pet id to delete *Required* + * \param apiKey + */ + Response< + String + > + deletePet( + + long petId + , + + std::string apiKey + + ); + /** + * Finds Pets by status. + * + * Multiple status values can be provided with comma separated strings + * \param status Status values that need to be considered for filter *Required* + */ + Response< + std::list + > + findPetsByStatus( + std::list status + + + ); + /** + * Finds Pets by tags. + * + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * \param tags Tags to filter by *Required* + */ + Response< + std::list + > + findPetsByTags( + std::list tags + + + ); + /** + * Find pet by ID. + * + * Returns a single pet + * \param petId ID of pet to return *Required* + */ + Response< + Pet + > + getPetById( + + long petId + + ); + /** + * Update an existing pet. + * + * + * \param pet Pet object that needs to be added to the store *Required* + */ + Response< + Pet + > + updatePet( + + Pet pet + + ); + /** + * Updates a pet in the store with form data. + * + * + * \param petId ID of pet that needs to be updated *Required* + * \param name Updated name of the pet + * \param status Updated status of the pet + */ + Response< + String + > + updatePetWithForm( + + long petId + , + + std::string name + , + + std::string status + + ); + /** + * uploads an image. + * + * + * \param petId ID of pet to update *Required* + * \param additionalMetadata Additional data to pass to server + * \param file file to upload + */ + Response< + ApiResponse + > + uploadFile( + + long petId + , + + std::string additionalMetadata + , + + std::string file + + ); +}; + +} + +#endif /* TINY_CPP_CLIENT_PetApi_H_ */ \ No newline at end of file diff --git a/samples/client/petstore/cpp-tiny/lib/service/Response.h b/samples/client/petstore/cpp-tiny/lib/service/Response.h new file mode 100644 index 00000000000..9b7b616b8f1 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/service/Response.h @@ -0,0 +1,25 @@ +#ifndef TINY_CPP_CLIENT_RESPONSE_H_ +#define TINY_CPP_CLIENT_RESPONSE_H_ +#include + +namespace Tiny { + +/** +* Class +* Generated with openapi::tiny-cpp-client +*/ +template + class Response { + public: + + Response(T _obj, int _code){ + obj = _obj; + code = _code; + } + + int code; + T obj; + }; + } // namespace Tinyclient + +#endif /* TINY_CPP_CLIENT_RESPONSE_H_ */ diff --git a/samples/client/petstore/cpp-tiny/lib/service/StoreApi.cpp b/samples/client/petstore/cpp-tiny/lib/service/StoreApi.cpp new file mode 100644 index 00000000000..210eb8277ac --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/service/StoreApi.cpp @@ -0,0 +1,185 @@ +#include "StoreApi.h" + +using namespace Tiny; + + + + Response< + String + > + StoreApi:: + deleteOrder( + + std::string orderId + + ) + { + std::string url = basepath + "/store/order/{orderId}"; //orderId + // Query | + // Headers | + // Form | + // Body | + + std::string s_orderId("{"); + s_orderId.append("orderId"); + s_orderId.append("}"); + + int pos = url.find(s_orderId); + + url.erase(pos, s_orderId.length()); + url.insert(pos, stringify(orderId)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | DELETE + int httpCode = http.sendRequest("DELETE", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + String + > + StoreApi:: + getInventory( + ) + { + std::string url = basepath + "/store/inventory"; // + // Query | + // Headers | + // Form | + // Body | + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + //TODO: Implement map logic here + + + + + //TODO: No support for maps. + Response response(output, httpCode); + return response; + } + + Response< + Order + > + StoreApi:: + getOrderById( + + long orderId + + ) + { + std::string url = basepath + "/store/order/{orderId}"; //orderId + // Query | + // Headers | + // Form | + // Body | + + std::string s_orderId("{"); + s_orderId.append("orderId"); + s_orderId.append("}"); + + int pos = url.find(s_orderId); + + url.erase(pos, s_orderId.length()); + url.insert(pos, stringify(orderId)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + Order obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + Response< + Order + > + StoreApi:: + placeOrder( + + Order order + + ) + { + std::string url = basepath + "/store/order"; // + // Query | + // Headers | + // Form | + // Body | order + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + http.addHeader("Content-Type", "application/json"); + + + + payload = order.toJson().dump(); + + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + Order obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + + + diff --git a/samples/client/petstore/cpp-tiny/lib/service/StoreApi.h b/samples/client/petstore/cpp-tiny/lib/service/StoreApi.h new file mode 100644 index 00000000000..1bf0db02373 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/service/StoreApi.h @@ -0,0 +1,83 @@ +#ifndef TINY_CPP_CLIENT_StoreApi_H_ +#define TINY_CPP_CLIENT_StoreApi_H_ + + +#include "Response.h" +#include "Arduino.h" +#include "AbstractService.h" +#include "Helpers.h" +#include + +#include +#include "Order.h" + +namespace Tiny { + +/** + * Class + * Generated with openapi::tiny-cpp-client + */ + +class StoreApi : public AbstractService { +public: + StoreApi() = default; + + virtual ~StoreApi() = default; + + /** + * Delete purchase order by ID. + * + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * \param orderId ID of the order that needs to be deleted *Required* + */ + Response< + String + > + deleteOrder( + + std::string orderId + + ); + /** + * Returns pet inventories by status. + * + * Returns a map of status codes to quantities + */ + Response< + String + > + getInventory( + ); + /** + * Find purchase order by ID. + * + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * \param orderId ID of pet that needs to be fetched *Required* + */ + Response< + Order + > + getOrderById( + + long orderId + + ); + /** + * Place an order for a pet. + * + * + * \param order order placed for purchasing the pet *Required* + */ + Response< + Order + > + placeOrder( + + Order order + + ); +}; + +} + +#endif /* TINY_CPP_CLIENT_StoreApi_H_ */ \ No newline at end of file diff --git a/samples/client/petstore/cpp-tiny/lib/service/UserApi.cpp b/samples/client/petstore/cpp-tiny/lib/service/UserApi.cpp new file mode 100644 index 00000000000..d1cf12b80a9 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/service/UserApi.cpp @@ -0,0 +1,366 @@ +#include "UserApi.h" + +using namespace Tiny; + + + + Response< + String + > + UserApi:: + createUser( + + User user + + ) + { + std::string url = basepath + "/user"; // + // Query | + // Headers | + // Form | + // Body | user + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + http.addHeader("Content-Type", "application/json"); + + + + payload = user.toJson().dump(); + + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + String + > + UserApi:: + createUsersWithArrayInput( + std::list user + + + ) + { + std::string url = basepath + "/user/createWithArray"; // + // Query | + // Headers | + // Form | + // Body | user + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + http.addHeader("Content-Type", "application/json"); + + + bourne::json tmp_arr = bourne::json::array(); + for(auto& var : user) + { + auto tmp = var.toJson(); + tmp_arr.append(tmp); + + } + payload = tmp_arr.dump(); + + + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + String + > + UserApi:: + createUsersWithListInput( + std::list user + + + ) + { + std::string url = basepath + "/user/createWithList"; // + // Query | + // Headers | + // Form | + // Body | user + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | POST + http.addHeader("Content-Type", "application/json"); + + + bourne::json tmp_arr = bourne::json::array(); + for(auto& var : user) + { + auto tmp = var.toJson(); + tmp_arr.append(tmp); + + } + payload = tmp_arr.dump(); + + + int httpCode = http.sendRequest("POST", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + String + > + UserApi:: + deleteUser( + + std::string username + + ) + { + std::string url = basepath + "/user/{username}"; //username + // Query | + // Headers | + // Form | + // Body | + + std::string s_username("{"); + s_username.append("username"); + s_username.append("}"); + + int pos = url.find(s_username); + + url.erase(pos, s_username.length()); + url.insert(pos, stringify(username)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | DELETE + int httpCode = http.sendRequest("DELETE", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + User + > + UserApi:: + getUserByName( + + std::string username + + ) + { + std::string url = basepath + "/user/{username}"; //username + // Query | + // Headers | + // Form | + // Body | + + std::string s_username("{"); + s_username.append("username"); + s_username.append("}"); + + int pos = url.find(s_username); + + url.erase(pos, s_username.length()); + url.insert(pos, stringify(username)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + + User obj(output_string); + + + Response response(obj, httpCode); + return response; + } + + Response< + std::string + > + UserApi:: + loginUser( + + std::string username + , + + std::string password + + ) + { + std::string url = basepath + "/user/login"; // + // Query | username password + // Headers | + // Form | + // Body | + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + + bourne::json jsonPayload(output_string); + std::string obj; + jsonToValue(&obj, jsonPayload, "std::string"); + + + + Response response(obj, httpCode); + return response; + } + + Response< + String + > + UserApi:: + logoutUser( + ) + { + std::string url = basepath + "/user/logout"; // + // Query | + // Headers | + // Form | + // Body | + + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | GET + int httpCode = http.sendRequest("GET", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + Response< + String + > + UserApi:: + updateUser( + + std::string username + , + + User user + + ) + { + std::string url = basepath + "/user/{username}"; //username + // Query | + // Headers | + // Form | + // Body | user + + std::string s_username("{"); + s_username.append("username"); + s_username.append("}"); + + int pos = url.find(s_username); + + url.erase(pos, s_username.length()); + url.insert(pos, stringify(username)); + + begin(url); + + std::string payload = ""; + // Send Request + // METHOD | PUT + http.addHeader("Content-Type", "application/json"); + + + + payload = user.toJson().dump(); + + int httpCode = http.sendRequest("PUT", reinterpret_cast(&payload[0]), payload.length()); + + // Handle Request + String output = http.getString(); + std::string output_string = output.c_str(); + + http.end(); + + + Response response(output, httpCode); + return response; + } + + + + diff --git a/samples/client/petstore/cpp-tiny/lib/service/UserApi.h b/samples/client/petstore/cpp-tiny/lib/service/UserApi.h new file mode 100644 index 00000000000..afdaefa0f8c --- /dev/null +++ b/samples/client/petstore/cpp-tiny/lib/service/UserApi.h @@ -0,0 +1,147 @@ +#ifndef TINY_CPP_CLIENT_UserApi_H_ +#define TINY_CPP_CLIENT_UserApi_H_ + + +#include "Response.h" +#include "Arduino.h" +#include "AbstractService.h" +#include "Helpers.h" +#include + +#include "User.h" +#include + +namespace Tiny { + +/** + * Class + * Generated with openapi::tiny-cpp-client + */ + +class UserApi : public AbstractService { +public: + UserApi() = default; + + virtual ~UserApi() = default; + + /** + * Create user. + * + * This can only be done by the logged in user. + * \param user Created user object *Required* + */ + Response< + String + > + createUser( + + User user + + ); + /** + * Creates list of users with given input array. + * + * + * \param user List of user object *Required* + */ + Response< + String + > + createUsersWithArrayInput( + std::list user + + + ); + /** + * Creates list of users with given input array. + * + * + * \param user List of user object *Required* + */ + Response< + String + > + createUsersWithListInput( + std::list user + + + ); + /** + * Delete user. + * + * This can only be done by the logged in user. + * \param username The name that needs to be deleted *Required* + */ + Response< + String + > + deleteUser( + + std::string username + + ); + /** + * Get user by user name. + * + * + * \param username The name that needs to be fetched. Use user1 for testing. *Required* + */ + Response< + User + > + getUserByName( + + std::string username + + ); + /** + * Logs user into the system. + * + * + * \param username The user name for login *Required* + * \param password The password for login in clear text *Required* + */ + Response< + std::string + > + loginUser( + + std::string username + , + + std::string password + + ); + /** + * Logs out current logged in user session. + * + * + */ + Response< + String + > + logoutUser( + ); + /** + * Updated user. + * + * This can only be done by the logged in user. + * \param username name that need to be deleted *Required* + * \param user Updated user object *Required* + */ + Response< + String + > + updateUser( + + std::string username + , + + User user + + ); +}; + +} + +#endif /* TINY_CPP_CLIENT_UserApi_H_ */ \ No newline at end of file diff --git a/samples/client/petstore/cpp-tiny/platformio.ini b/samples/client/petstore/cpp-tiny/platformio.ini new file mode 100644 index 00000000000..00781178d10 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/platformio.ini @@ -0,0 +1,7 @@ +[env:esp32] +platform = espressif32 +board = nodemcu-32s +framework = arduino +lib_deps = https://github.com/steinwurf/bourne.git +extra_scripts = pre_compiling_bourne.py + diff --git a/samples/client/petstore/cpp-tiny/pre_compiling_bourne.py b/samples/client/petstore/cpp-tiny/pre_compiling_bourne.py new file mode 100644 index 00000000000..96356dcdf15 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/pre_compiling_bourne.py @@ -0,0 +1,25 @@ +Import("env") + +## Compatibility for bourne to work on microcontrollers +# We insert '#define _GLIBCXX_USE_C99' in files that use std::stoll or std::to_string +def insert_c99_into(file): + import fileinput + + path = env['PROJECT_LIBDEPS_DIR'] + "/" + env['PIOENV'] + "/bourne/src/bourne/" + file + value = '#define _GLIBCXX_USE_C99 1\n' + + for line in fileinput.FileInput(path,inplace=1): + if line.startswith('#define _GLIBCXX_USE_C99'): + continue + elif line.startswith('// D'): + line=line.replace(line,line+value) + print(line, end='') + +def fix_parser(): + insert_c99_into('detail/parser.cpp') + +def fix_json(): + insert_c99_into('json.cpp') + +fix_parser() +fix_json() \ No newline at end of file diff --git a/samples/client/petstore/cpp-tiny/root.cert b/samples/client/petstore/cpp-tiny/root.cert new file mode 100644 index 00000000000..bad9c08efad --- /dev/null +++ b/samples/client/petstore/cpp-tiny/root.cert @@ -0,0 +1,53 @@ +// TODO: Provide your service root certificate. +// Below is two examples of root certificates. + +// Let's encrypt root certificate +/** +"-----BEGIN CERTIFICATE-----\n" \ +"MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n" \ +"MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" \ +"d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n" \ +"QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\n" \ +"MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n" \ +"b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n" \ +"9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\n" \ +"CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\n" \ +"nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n" \ +"43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\n" \ +"T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\n" \ +"gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\n" \ +"BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\n" \ +"TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\n" \ +"DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\n" \ +"hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n" \ +"06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\n" \ +"PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\n" \ +"YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n" \ +"CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n" \ +"-----END CERTIFICATE-----\n" +*/ + +// Amazon_Root_CA_1.pem +/** +"-----BEGIN CERTIFICATE-----\n" \ +"MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\n" \ +"ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\n" \ +"b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL\n" \ +"MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\n" \ +"b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj\n" \ +"ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM\n" \ +"9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw\n" \ +"IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6\n" \ +"VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L\n" \ +"93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm\n" \ +"jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\n" \ +"AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA\n" \ +"A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI\n" \ +"U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs\n" \ +"N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv\n" \ +"o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU\n" \ +"5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\n" \ +"rqXRfboQnoZsG4q5WTP468SQvvG5\n" \ +"-----END CERTIFICATE-----\n" \ +*/ + diff --git a/samples/client/petstore/cpp-tiny/src/main.cpp b/samples/client/petstore/cpp-tiny/src/main.cpp new file mode 100644 index 00000000000..34ba455fbdd --- /dev/null +++ b/samples/client/petstore/cpp-tiny/src/main.cpp @@ -0,0 +1,37 @@ +#include "PetApi.h" + +const char* ssid = "your wifi name"; // TODO Change wifi name +const char* password = "Your wifi password"; //TODO Change wifi password + + +void setup(){ + //Initialize serial and wait for port to open: + Serial.begin(9600); + delay(100); + + Serial.print("Attempting to connect to SSID: "); + Serial.println(ssid); + WiFi.begin(ssid, password); + + // attempt to connect to Wifi network: + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + // wait 1 second for re-trying + delay(1000); + } + + Serial.print("Connected to "); + Serial.println(ssid); + + //Print LAN IP. + Serial.print("IP address set: "); + Serial.println(WiFi.localIP()); + + Tiny::PetApi petapi; + auto resp = petapi.getPetById(10); + Serial.println(resp.code); + Tiny::Pet pet = resp.obj; + Serial.println(pet.toJson().dump().c_str()); +} + +void loop(){} diff --git a/samples/client/petstore/cpp-tiny/test/RunTests.cpp b/samples/client/petstore/cpp-tiny/test/RunTests.cpp new file mode 100644 index 00000000000..4caafb4ee44 --- /dev/null +++ b/samples/client/petstore/cpp-tiny/test/RunTests.cpp @@ -0,0 +1,204 @@ + +#include "ApiResponseTest.cpp" + +#include "CategoryTest.cpp" + +#include "OrderTest.cpp" + +#include "PetTest.cpp" + +#include "TagTest.cpp" + +#include "UserTest.cpp" + + + +void setUp(){} + +void tearDown(){} + +void runTests(){ + + + RUN_TEST(test_ApiResponse_code_is_assigned_from_json); + + + RUN_TEST(test_ApiResponse_type_is_assigned_from_json); + + + RUN_TEST(test_ApiResponse_message_is_assigned_from_json); + + + + RUN_TEST(test_Category_id_is_assigned_from_json); + + + RUN_TEST(test_Category_name_is_assigned_from_json); + + + + RUN_TEST(test_Order_id_is_assigned_from_json); + + + RUN_TEST(test_Order_petId_is_assigned_from_json); + + + RUN_TEST(test_Order_quantity_is_assigned_from_json); + + + RUN_TEST(test_Order_shipDate_is_assigned_from_json); + + + RUN_TEST(test_Order_status_is_assigned_from_json); + + + RUN_TEST(test_Order_complete_is_assigned_from_json); + + + + RUN_TEST(test_Pet_id_is_assigned_from_json); + + + + RUN_TEST(test_Pet_name_is_assigned_from_json); + + + + + RUN_TEST(test_Pet_status_is_assigned_from_json); + + + + RUN_TEST(test_Tag_id_is_assigned_from_json); + + + RUN_TEST(test_Tag_name_is_assigned_from_json); + + + + RUN_TEST(test_User_id_is_assigned_from_json); + + + RUN_TEST(test_User_username_is_assigned_from_json); + + + RUN_TEST(test_User_firstName_is_assigned_from_json); + + + RUN_TEST(test_User_lastName_is_assigned_from_json); + + + RUN_TEST(test_User_email_is_assigned_from_json); + + + RUN_TEST(test_User_password_is_assigned_from_json); + + + RUN_TEST(test_User_phone_is_assigned_from_json); + + + RUN_TEST(test_User_userStatus_is_assigned_from_json); + + + + + + RUN_TEST(test_ApiResponse_code_is_converted_to_json); + + + RUN_TEST(test_ApiResponse_type_is_converted_to_json); + + + RUN_TEST(test_ApiResponse_message_is_converted_to_json); + + + + RUN_TEST(test_Category_id_is_converted_to_json); + + + RUN_TEST(test_Category_name_is_converted_to_json); + + + + RUN_TEST(test_Order_id_is_converted_to_json); + + + RUN_TEST(test_Order_petId_is_converted_to_json); + + + RUN_TEST(test_Order_quantity_is_converted_to_json); + + + RUN_TEST(test_Order_shipDate_is_converted_to_json); + + + RUN_TEST(test_Order_status_is_converted_to_json); + + + RUN_TEST(test_Order_complete_is_converted_to_json); + + + + RUN_TEST(test_Pet_id_is_converted_to_json); + + + + RUN_TEST(test_Pet_name_is_converted_to_json); + + + + + RUN_TEST(test_Pet_status_is_converted_to_json); + + + + RUN_TEST(test_Tag_id_is_converted_to_json); + + + RUN_TEST(test_Tag_name_is_converted_to_json); + + + + RUN_TEST(test_User_id_is_converted_to_json); + + + RUN_TEST(test_User_username_is_converted_to_json); + + + RUN_TEST(test_User_firstName_is_converted_to_json); + + + RUN_TEST(test_User_lastName_is_converted_to_json); + + + RUN_TEST(test_User_email_is_converted_to_json); + + + RUN_TEST(test_User_password_is_converted_to_json); + + + RUN_TEST(test_User_phone_is_converted_to_json); + + + RUN_TEST(test_User_userStatus_is_converted_to_json); + + + + +} + +int main(void) { + UNITY_BEGIN(); + runTests(); + return UNITY_END(); +} + +void setup() { + UNITY_BEGIN(); + runTests(); + UNITY_END(); +} + +void loop() { + +} From ab11acd634c3a121b2c5e86891092ad196e503bf Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Tue, 25 May 2021 17:58:39 +0200 Subject: [PATCH 041/192] [dart][dart-dio-next] Improve support for file uploads (#9542) * [dart][dart-dio] Improve support for file uploads * add support for filenames in multipart requests by using `MultipartFile` from dio directly * add support for binary/file body data * fixes #6671 * fixes #9079 * Add and fix tests * Only use MultipartFile for body/multipart parameters * Fix test * Actually fix tests --- .circleci/config.yml | 1 - .../languages/DartDioNextClientCodegen.java | 29 +++++-- .../built_value/serialize.mustache | 4 +- .../petstore_client_lib_fake/doc/PetApi.md | 8 +- .../lib/src/api/fake_api.dart | 2 +- .../lib/src/api/pet_api.dart | 9 +-- .../pubspec.yaml | 10 +-- .../test/api/fake_api_test.dart | 2 +- .../test/api/pet_api_test.dart | 81 +++++++++++++++++++ .../test/matcher/form_data_matcher.dart | 26 ++++++ 10 files changed, 146 insertions(+), 26 deletions(-) create mode 100644 samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/matcher/form_data_matcher.dart diff --git a/.circleci/config.yml b/.circleci/config.yml index c5b0d3dc6f1..c3611c57351 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -82,7 +82,6 @@ jobs: - ~/.bundle - ~/.go_workspace - ~/.gradle - - ~/.pub-cache - ~/.cache/bower - ".git" - ~/.stack diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java index 3beb4ca9a4a..6b7beaeaea2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java @@ -46,6 +46,7 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { public static final String SERIALIZATION_LIBRARY_BUILT_VALUE = "built_value"; public static final String SERIALIZATION_LIBRARY_DEFAULT = SERIALIZATION_LIBRARY_BUILT_VALUE; + private static final String DIO_IMPORT = "package:dio/dio.dart"; private static final String CLIENT_NAME = "clientName"; private String dateLibrary; @@ -192,6 +193,7 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { imports.put("BuiltMap", "package:built_collection/built_collection.dart"); imports.put("JsonObject", "package:built_value/json_object.dart"); imports.put("Uint8List", "dart:typed_data"); + imports.put("MultipartFile", DIO_IMPORT); } private void configureDateLibrary(String srcFolder) { @@ -257,7 +259,7 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { for (Object _mo : models) { Map mo = (Map) _mo; CodegenModel cm = (CodegenModel) mo.get("model"); - cm.imports = rewriteImports(cm.imports); + cm.imports = rewriteImports(cm.imports, true); cm.vendorExtensions.put("x-has-vars", !cm.vars.isEmpty()); } return objs; @@ -302,7 +304,6 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { sb.append(")]"); } - @Override public Map postProcessOperationsWithModels(Map objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); @@ -313,11 +314,15 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { Set resultImports = new HashSet<>(); for (CodegenOperation op : operationList) { - for (CodegenParameter param : op.bodyParams) { - if (param.baseType != null && param.baseType.equalsIgnoreCase("Uint8List") && op.isMultipart) { + for (CodegenParameter param : op.allParams) { + if (((op.isMultipart && param.isFormParam) || param.isBodyParam) && (param.isBinary || param.isFile)) { param.baseType = "MultipartFile"; param.dataType = "MultipartFile"; + op.imports.add("MultipartFile"); } + } + + for (CodegenParameter param : op.bodyParams) { if (param.isContainer) { final Map serializer = new HashMap<>(); serializer.put("isArray", param.isArray); @@ -328,7 +333,12 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { } } - resultImports.addAll(rewriteImports(op.imports)); + if (op.allParams.stream().noneMatch(param -> param.dataType.equals("Uint8List"))) { + // Remove unused imports after processing + op.imports.remove("Uint8List"); + } + + resultImports.addAll(rewriteImports(op.imports, false)); if (op.getHasFormParams()) { resultImports.add("package:" + pubName + "/src/api_util.dart"); } @@ -349,11 +359,16 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { return objs; } - private Set rewriteImports(Set originalImports) { + private Set rewriteImports(Set originalImports, boolean isModel) { Set resultImports = Sets.newHashSet(); for (String modelImport : originalImports) { if (imports.containsKey(modelImport)) { - resultImports.add(imports.get(modelImport)); + String i = imports.get(modelImport); + if (Objects.equals(i, DIO_IMPORT) && !isModel) { + // Don't add imports to operations that are already imported + continue; + } + resultImports.add(i); } else { resultImports.add("package:" + pubName + "/src/model/" + underscore(modelImport) + ".dart"); } diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/serialize.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/serialize.mustache index 5794f34ad1a..03d38c93878 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/serialize.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/serialize.mustache @@ -1,13 +1,13 @@ {{#hasFormParams}} _bodyData = {{#isMultipart}}FormData.fromMap({{/isMultipart}}{ {{#formParams}} - {{^required}}{{^isNullable}}if ({{{paramName}}} != null) {{/isNullable}}{{/required}}r'{{{baseName}}}': {{#isFile}}MultipartFile.fromBytes({{{paramName}}}, filename: r'{{{baseName}}}'){{/isFile}}{{^isFile}}encodeFormParameter(_serializers, {{{paramName}}}, const FullType({{^isContainer}}{{{baseType}}}{{/isContainer}}{{#isContainer}}Built{{#isMap}}Map{{/isMap}}{{#isArray}}{{#uniqueItems}}Set{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}{{/isArray}}, [{{#isMap}}FullType(String), {{/isMap}}FullType({{{baseType}}})]{{/isContainer}})){{/isFile}}, + {{^required}}{{^isNullable}}if ({{{paramName}}} != null) {{/isNullable}}{{/required}}r'{{{baseName}}}': {{#isFile}}{{{paramName}}}{{/isFile}}{{^isFile}}encodeFormParameter(_serializers, {{{paramName}}}, const FullType({{^isContainer}}{{{baseType}}}{{/isContainer}}{{#isContainer}}Built{{#isMap}}Map{{/isMap}}{{#isArray}}{{#uniqueItems}}Set{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}{{/isArray}}, [{{#isMap}}FullType(String), {{/isMap}}FullType({{{baseType}}})]{{/isContainer}})){{/isFile}}, {{/formParams}} }{{#isMultipart}}){{/isMultipart}}; {{/hasFormParams}} {{#bodyParam}} {{#isPrimitiveType}} - _bodyData = {{paramName}}; + _bodyData = {{paramName}}{{#isFile}}.finalize(){{/isFile}}; {{/isPrimitiveType}} {{^isPrimitiveType}} {{#isContainer}} diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/PetApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/PetApi.md index 841eed63291..bca230088d8 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/PetApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/PetApi.md @@ -345,7 +345,7 @@ import 'package:openapi/api.dart'; var api_instance = new PetApi(); var petId = 789; // int | ID of pet to update var additionalMetadata = additionalMetadata_example; // String | Additional data to pass to server -var file = BINARY_DATA_HERE; // Uint8List | file to upload +var file = BINARY_DATA_HERE; // MultipartFile | file to upload try { var result = api_instance.uploadFile(petId, additionalMetadata, file); @@ -361,7 +361,7 @@ Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **petId** | **int**| ID of pet to update | **additionalMetadata** | **String**| Additional data to pass to server | [optional] - **file** | **Uint8List**| file to upload | [optional] + **file** | **MultipartFile**| file to upload | [optional] ### Return type @@ -391,7 +391,7 @@ import 'package:openapi/api.dart'; var api_instance = new PetApi(); var petId = 789; // int | ID of pet to update -var requiredFile = BINARY_DATA_HERE; // Uint8List | file to upload +var requiredFile = BINARY_DATA_HERE; // MultipartFile | file to upload var additionalMetadata = additionalMetadata_example; // String | Additional data to pass to server try { @@ -407,7 +407,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **petId** | **int**| ID of pet to update | - **requiredFile** | **Uint8List**| file to upload | + **requiredFile** | **MultipartFile**| file to upload | **additionalMetadata** | **String**| Additional data to pass to server | [optional] ### Return type diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart index b5d03c9bda1..c9f67f4b736 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart @@ -851,7 +851,7 @@ class FakeApi { if (string != null) r'string': encodeFormParameter(_serializers, string, const FullType(String)), r'pattern_without_delimiter': encodeFormParameter(_serializers, patternWithoutDelimiter, const FullType(String)), r'byte': encodeFormParameter(_serializers, byte, const FullType(String)), - if (binary != null) r'binary': MultipartFile.fromBytes(binary, filename: r'binary'), + if (binary != null) r'binary': binary, if (date != null) r'date': encodeFormParameter(_serializers, date, const FullType(Date)), if (dateTime != null) r'dateTime': encodeFormParameter(_serializers, dateTime, const FullType(DateTime)), if (password != null) r'password': encodeFormParameter(_serializers, password, const FullType(String)), diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart index e3f1473c5be..ede9b4e65ba 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart @@ -7,7 +7,6 @@ import 'dart:async'; import 'package:built_value/serializer.dart'; import 'package:dio/dio.dart'; -import 'dart:typed_data'; import 'package:built_collection/built_collection.dart'; import 'package:openapi/src/api_util.dart'; import 'package:openapi/src/model/api_response.dart'; @@ -493,7 +492,7 @@ class PetApi { Future> uploadFile({ required int petId, String? additionalMetadata, - Uint8List? file, + MultipartFile? file, CancelToken? cancelToken, Map? headers, Map? extra, @@ -528,7 +527,7 @@ class PetApi { try { _bodyData = FormData.fromMap({ if (additionalMetadata != null) r'additionalMetadata': encodeFormParameter(_serializers, additionalMetadata, const FullType(String)), - if (file != null) r'file': MultipartFile.fromBytes(file, filename: r'file'), + if (file != null) r'file': file, }); } catch(error, stackTrace) { @@ -588,7 +587,7 @@ class PetApi { /// Future> uploadFileWithRequiredFile({ required int petId, - required Uint8List requiredFile, + required MultipartFile requiredFile, String? additionalMetadata, CancelToken? cancelToken, Map? headers, @@ -624,7 +623,7 @@ class PetApi { try { _bodyData = FormData.fromMap({ if (additionalMetadata != null) r'additionalMetadata': encodeFormParameter(_serializers, additionalMetadata, const FullType(String)), - r'requiredFile': MultipartFile.fromBytes(requiredFile, filename: r'requiredFile'), + r'requiredFile': requiredFile, }); } catch(error, stackTrace) { diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/pubspec.yaml b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/pubspec.yaml index 6c33286cb5a..398c6a07470 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/pubspec.yaml @@ -8,11 +8,11 @@ environment: sdk: '>=2.10.0 <3.0.0' dev_dependencies: - built_collection: '5.0.0' - built_value: '8.0.4' - dio: '4.0.0' + built_collection: 5.0.0 + built_value: 8.0.6 + dio: 4.0.0 http_mock_adapter: 0.2.1 - mockito: '5.0.3' + mockito: 5.0.8 openapi: path: ../petstore_client_lib_fake - test: '1.16.8' + test: 1.17.4 diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/fake_api_test.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/fake_api_test.dart index e1a40f57fe5..9330474d499 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/fake_api_test.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/fake_api_test.dart @@ -36,7 +36,7 @@ void main() { 'int64': '9223372036854775807', 'date': '2020-08-11', 'dateTime': '2020-08-11T12:30:55.123Z', - 'binary': "Instance of 'MultipartFile'", + 'binary': '[0, 1, 2, 3, 4, 5]', }, headers: { 'content-type': 'application/x-www-form-urlencoded', diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/pet_api_test.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/pet_api_test.dart index 5aae7639fda..6b52fdce13e 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/pet_api_test.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/pet_api_test.dart @@ -1,9 +1,12 @@ import 'package:built_collection/built_collection.dart'; import 'package:dio/dio.dart'; import 'package:http_mock_adapter/http_mock_adapter.dart'; +import 'package:http_parser/http_parser.dart'; import 'package:openapi/openapi.dart'; import 'package:test/test.dart'; +import '../matcher/form_data_matcher.dart'; + void main() { const photo1 = 'https://localhost/photo1.jpg'; const photo2 = 'https://localhost/photo2.jpg'; @@ -221,5 +224,83 @@ void main() { expect(response.data[1].status, PetStatusEnum.available); }); }); + + group('uploadFile', () { + test('uploadFileWithRequiredFile', () async { + final file = MultipartFile.fromBytes( + [1, 2, 3, 4], + filename: 'test.png', + contentType: MediaType.parse('image/png'), + ); + + server.onRoute( + '/fake/5/uploadImageWithRequiredFile', + (request) => request.reply(200, { + 'code': 200, + 'type': 'success', + 'message': 'File uploaded', + }), + request: Request( + method: RequestMethods.post, + headers: { + Headers.contentTypeHeader: + Matchers.pattern('multipart/form-data'), + Headers.contentLengthHeader: Matchers.integer, + }, + data: FormDataMatcher( + expected: FormData.fromMap({ + r'requiredFile': file, + }), + ), + ), + ); + final response = await client.getPetApi().uploadFileWithRequiredFile( + petId: 5, + requiredFile: file, + ); + + expect(response.statusCode, 200); + expect(response.data.message, 'File uploaded'); + }); + + test('uploadFileWithRequiredFile & additionalMetadata', () async { + final file = MultipartFile.fromBytes( + [1, 2, 3, 4], + filename: 'test.png', + contentType: MediaType.parse('image/png'), + ); + + server.onRoute( + '/fake/3/uploadImageWithRequiredFile', + (request) => request.reply(200, { + 'code': 200, + 'type': 'success', + 'message': 'File uploaded', + }), + request: Request( + method: RequestMethods.post, + headers: { + Headers.contentTypeHeader: + Matchers.pattern('multipart/form-data'), + Headers.contentLengthHeader: Matchers.integer, + }, + data: FormDataMatcher( + expected: FormData.fromMap({ + 'additionalMetadata': 'foo', + r'requiredFile': file, + }), + ), + ), + ); + final response = await client.getPetApi().uploadFileWithRequiredFile( + petId: 3, + requiredFile: file, + additionalMetadata: 'foo', + ); + + expect(response.statusCode, 200); + expect(response.data.message, 'File uploaded'); + }); + }); }); } diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/matcher/form_data_matcher.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/matcher/form_data_matcher.dart new file mode 100644 index 00000000000..8e0a7a6c032 --- /dev/null +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/matcher/form_data_matcher.dart @@ -0,0 +1,26 @@ +import 'package:dio/dio.dart'; +import 'package:meta/meta.dart'; +import 'package:collection/collection.dart'; +import 'package:http_mock_adapter/src/matchers/matcher.dart'; + +class FormDataMatcher extends Matcher { + final FormData expected; + + const FormDataMatcher({@required this.expected}); + + @override + bool matches(dynamic actual) { + if (actual is! FormData) { + return false; + } + final data = actual as FormData; + return MapEquality().equals( + Map.fromEntries(expected.fields), + Map.fromEntries(data.fields), + ) && + MapEquality().equals( + Map.fromEntries(expected.files), + Map.fromEntries(data.files), + ); + } +} From e09409fbce83c81b96efb0975830f23d56fbb7df Mon Sep 17 00:00:00 2001 From: Blackclaws Date: Tue, 25 May 2021 18:12:12 +0200 Subject: [PATCH 042/192] Handle Deserialization Asynchronously (#9424) --- .../libraries/httpclient/ApiClient.mustache | 18 +++++++++--------- .../src/Org.OpenAPITools/Client/ApiClient.cs | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache index fe83457311c..e48722f8fa7 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache @@ -80,9 +80,9 @@ namespace {{packageName}}.Client } } - public T Deserialize(HttpResponseMessage response) + public async Task Deserialize(HttpResponseMessage response) { - var result = (T)Deserialize(response, typeof(T)); + var result = (T) await Deserialize(response, typeof(T)); return result; } @@ -92,19 +92,19 @@ namespace {{packageName}}.Client /// The HTTP response. /// Object type. /// Object representation of the JSON string. - internal object Deserialize(HttpResponseMessage response, Type type) + internal async Task Deserialize(HttpResponseMessage response, Type type) { IList headers = response.Headers.Select(x => x.Key + "=" + x.Value).ToList(); if (type == typeof(byte[])) // return byte array { - return response.Content.ReadAsByteArrayAsync().GetAwaiter().GetResult(); + return await response.Content.ReadAsByteArrayAsync(); } // TODO: ? if (type.IsAssignableFrom(typeof(Stream))) if (type == typeof(Stream)) { - var bytes = response.Content.ReadAsByteArrayAsync().GetAwaiter().GetResult(); + var bytes = await response.Content.ReadAsByteArrayAsync(); if (headers != null) { var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) @@ -128,18 +128,18 @@ namespace {{packageName}}.Client if (type.Name.StartsWith("System.Nullable`1[[System.DateTime")) // return a datetime object { - return DateTime.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult(), null, System.Globalization.DateTimeStyles.RoundtripKind); + return DateTime.Parse(await response.Content.ReadAsStringAsync(), null, System.Globalization.DateTimeStyles.RoundtripKind); } if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type { - return Convert.ChangeType(response.Content.ReadAsStringAsync().GetAwaiter().GetResult(), type); + return Convert.ChangeType(await response.Content.ReadAsStringAsync(), type); } // at this point, it must be a model (json) try { - return JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().GetAwaiter().GetResult(), type, _serializerSettings); + return JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync(), type, _serializerSettings); } catch (Exception e) { @@ -510,7 +510,7 @@ namespace {{packageName}}.Client return await ToApiResponse(response, default(T), req.RequestUri); } - object responseData = deserializer.Deserialize(response); + object responseData = await deserializer.Deserialize(response); // if the response type is oneOf/anyOf, call FromJSON to deserialize the data if (typeof({{{packageName}}}.{{modelPackage}}.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs index 69d9bb714e3..bc7d7d84785 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs @@ -80,9 +80,9 @@ namespace Org.OpenAPITools.Client } } - public T Deserialize(HttpResponseMessage response) + public async Task Deserialize(HttpResponseMessage response) { - var result = (T)Deserialize(response, typeof(T)); + var result = (T) await Deserialize(response, typeof(T)); return result; } @@ -92,19 +92,19 @@ namespace Org.OpenAPITools.Client /// The HTTP response. /// Object type. /// Object representation of the JSON string. - internal object Deserialize(HttpResponseMessage response, Type type) + internal async Task Deserialize(HttpResponseMessage response, Type type) { IList headers = response.Headers.Select(x => x.Key + "=" + x.Value).ToList(); if (type == typeof(byte[])) // return byte array { - return response.Content.ReadAsByteArrayAsync().GetAwaiter().GetResult(); + return await response.Content.ReadAsByteArrayAsync(); } // TODO: ? if (type.IsAssignableFrom(typeof(Stream))) if (type == typeof(Stream)) { - var bytes = response.Content.ReadAsByteArrayAsync().GetAwaiter().GetResult(); + var bytes = await response.Content.ReadAsByteArrayAsync(); if (headers != null) { var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) @@ -128,18 +128,18 @@ namespace Org.OpenAPITools.Client if (type.Name.StartsWith("System.Nullable`1[[System.DateTime")) // return a datetime object { - return DateTime.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult(), null, System.Globalization.DateTimeStyles.RoundtripKind); + return DateTime.Parse(await response.Content.ReadAsStringAsync(), null, System.Globalization.DateTimeStyles.RoundtripKind); } if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type { - return Convert.ChangeType(response.Content.ReadAsStringAsync().GetAwaiter().GetResult(), type); + return Convert.ChangeType(await response.Content.ReadAsStringAsync(), type); } // at this point, it must be a model (json) try { - return JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().GetAwaiter().GetResult(), type, _serializerSettings); + return JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync(), type, _serializerSettings); } catch (Exception e) { @@ -504,7 +504,7 @@ namespace Org.OpenAPITools.Client return await ToApiResponse(response, default(T), req.RequestUri); } - object responseData = deserializer.Deserialize(response); + object responseData = await deserializer.Deserialize(response); // if the response type is oneOf/anyOf, call FromJSON to deserialize the data if (typeof(Org.OpenAPITools.Model.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) From ae0350280f27dabc1a7aa6c485515ab02561de4b Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Wed, 26 May 2021 05:02:28 -0400 Subject: [PATCH 043/192] [swift5] Map file and binary to Data (#9419) * [swift5] Map file and binary to Data Fixes: https://github.com/OpenAPITools/openapi-generator/issues/9308 * Update docs --- docs/generators/swift5.md | 1 + docs/generators/tiny-cpp.md | 2 +- .../languages/Swift5ClientCodegen.java | 24 ++++++++++++++++++- .../options/Swift5OptionsProvider.java | 1 + 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/docs/generators/swift5.md b/docs/generators/swift5.md index 47f0318e839..480eda2ebfd 100644 --- a/docs/generators/swift5.md +++ b/docs/generators/swift5.md @@ -17,6 +17,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|
    **true**
    The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
    **false**
    The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
    |true| |lenientTypeCast|Accept and cast values for simple types (string->bool, string->int, int->string)| |false| |library|Library template (sub-template) to use|
    **urlsession**
    [DEFAULT] HTTP client: URLSession
    **alamofire**
    HTTP client: Alamofire
    |urlsession| +|mapFileBinaryToData|Map File and Binary to Data (default: false)| |false| |nonPublicApi|Generates code with reduced access modifiers; allows embedding elsewhere without exposing non-public API calls to consumers.(default: false)| |null| |objcCompatible|Add additional properties and methods for Objective-C compatibility (default: false)| |null| |podAuthors|Authors used for Podspec| |null| diff --git a/docs/generators/tiny-cpp.md b/docs/generators/tiny-cpp.md index cd3877236ec..f7f6a0385ca 100644 --- a/docs/generators/tiny-cpp.md +++ b/docs/generators/tiny-cpp.md @@ -165,7 +165,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |Maps|✗|ToolingExtension |CollectionFormat|✓|OAS2 |CollectionFormatMulti|✓|OAS2 -|Enum|✓|OAS2,OAS3 +|Enum|✗|OAS2,OAS3 |ArrayOfEnum|✓|ToolingExtension |ArrayOfModel|✓|ToolingExtension |ArrayOfCollectionOfPrimitives|✓|ToolingExtension diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index 4766e2a9c91..e84cd331369 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -66,6 +66,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig public static final String USE_BACKTICK_ESCAPES = "useBacktickEscapes"; public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES = "generateModelAdditionalProperties"; public static final String HASHABLE_MODELS = "hashableModels"; + public static final String MAP_FILE_BINARY_TO_DATA = "mapFileBinaryToData"; protected static final String LIBRARY_ALAMOFIRE = "alamofire"; protected static final String LIBRARY_URLSESSION = "urlsession"; protected static final String RESPONSE_LIBRARY_PROMISE_KIT = "PromiseKit"; @@ -84,6 +85,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig protected boolean useBacktickEscapes = false; protected boolean generateModelAdditionalProperties = true; protected boolean hashableModels = true; + protected boolean mapFileBinaryToData = false; protected String[] responseAs = new String[0]; protected String sourceFolder = swiftPackagePath; protected HashSet objcReservedWords; @@ -120,7 +122,6 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig "Bool", "Void", "String", - "URL", "Data", "Date", "Character", @@ -286,6 +287,10 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig "Make hashable models (default: true)") .defaultValue(Boolean.TRUE.toString())); + cliOptions.add(new CliOption(MAP_FILE_BINARY_TO_DATA, + "Map File and Binary to Data (default: false)") + .defaultValue(Boolean.FALSE.toString())); + supportedLibraries.put(LIBRARY_URLSESSION, "[DEFAULT] HTTP client: URLSession"); supportedLibraries.put(LIBRARY_ALAMOFIRE, "HTTP client: Alamofire"); @@ -470,6 +475,15 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig } additionalProperties.put(HASHABLE_MODELS, hashableModels); + if (additionalProperties.containsKey(MAP_FILE_BINARY_TO_DATA)) { + setMapFileBinaryToData(convertPropertyToBooleanAndWriteBack(MAP_FILE_BINARY_TO_DATA)); + } + additionalProperties.put(MAP_FILE_BINARY_TO_DATA, mapFileBinaryToData); + if (mapFileBinaryToData) { + typeMapping.put("file", "Data"); + typeMapping.put("binary", "Data"); + } + setLenientTypeCast(convertPropertyToBooleanAndWriteBack(LENIENT_TYPE_CAST)); // make api and model doc path available in mustache template @@ -547,6 +561,14 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig } + public boolean isMapFileBinaryToData() { + return mapFileBinaryToData; + } + + public void setMapFileBinaryToData(boolean mapFileBinaryToData) { + this.mapFileBinaryToData = mapFileBinaryToData; + } + @Override protected boolean isReservedWord(String word) { return word != null && reservedWords.contains(word); //don't lowercase as super does diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java index 979da734eac..6e5f48ca377 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java @@ -95,6 +95,7 @@ public class Swift5OptionsProvider implements OptionsProvider { .put(Swift5ClientCodegen.SWIFT_PACKAGE_PATH, SWIFT_PACKAGE_PATH_VALUE) .put(Swift5ClientCodegen.GENERATE_MODEL_ADDITIONAL_PROPERTIES, GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE) .put(Swift5ClientCodegen.HASHABLE_MODELS, HASHABLE_MODELS_VALUE) + .put(Swift5ClientCodegen.MAP_FILE_BINARY_TO_DATA, "false") .build(); } From 8742228049ac42d6b78bdce17e30c06338737a84 Mon Sep 17 00:00:00 2001 From: Anders Aaen Springborg Date: Wed, 26 May 2021 12:04:14 +0200 Subject: [PATCH 044/192] add Aalborg university (#9588) --- website/src/dynamic/users.yml | 5 +++++ .../img/companies/aalborg_university.png | Bin 0 -> 554010 bytes 2 files changed, 5 insertions(+) create mode 100644 website/static/img/companies/aalborg_university.png diff --git a/website/src/dynamic/users.yml b/website/src/dynamic/users.yml index 7b955bfe337..c8ff21541f9 100644 --- a/website/src/dynamic/users.yml +++ b/website/src/dynamic/users.yml @@ -1,3 +1,8 @@ +- + caption: "Aalborg University" + image: "img/companies/aalborg_university.png" + infoLink: "https://www.aau.dk/" + pinned: false - caption: "Adaptant Solutions AG" image: "img/companies/adaptant.png" diff --git a/website/static/img/companies/aalborg_university.png b/website/static/img/companies/aalborg_university.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa4fbe5777aa4a441c07bacd8787896ae140c5b GIT binary patch literal 554010 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¬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

    +p>F2&trrks*c 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

    Zh`8avOag)|hW8|F-IGC)=z_(+3yW ztTwDE|N0a{4Y{D?(iMhN#rWI-uJ4u2ZgF8KNGQggOIm-C5vReZ9l6Yjv46JYU{h_+ zg0V2UzN-&Yu%qv5zwsb(Qv{p(c|IpX(|Gx-jXmV2c(z9@?bFn?+fYg95$CB(uu3>{ z^hbaF=cs%i*TO_sZ~du2?T$EZGAnF}XV&f4oR(%EJL`<#0g>h?vj644gzMFDR6A>b z|0fOnHPHR_0H@gTcVtB#8c;mHza8hVxN|SdAu#a1^~9j{lMnNKePv_*r@*irMC2w- zYhSUI3~=FNs(>4iy`f|70G}2BnwvDMw5#i z*2k{5!Eya=6{V{r*G0e9S1)HC&Q`q^3{{l|+J|X-?`isWr*sF$^*BQD6|6;U6YM!Q z?v7MP5`CTWT2}6?v}$L*K}SiXbRLEuN?{XgOdlnw8cM0Tn;~GgoMztvVT`Zw6_li5 zjNZ!SXRWP>5@Y+VD5A07F$+UsyG*&&kr%P-zefa_pQ~ZZomYByqUYj%U5eR$q@}e) zqxsZ)6;8qPl#K$<%>J}3h{7%1!E4#?YgoB)F@^xu_0>EryRb zCNZd{o{Dic)?Qi84sDBH61406D37J&Z8eWYhOSIm6r?`2P?fz=S9D0`oaQE6E%-(G zoKtw!NFo2#3Ei!gRf}8c1JwoPqdD3UEgLCJA2gz=S^zZ*l{M4OInSj5RLE^9Wk1S0 zpgceCAE0aTpb6F@E*}?!@*CM1^44(bZOF_`K$3=~$-gB5;bkFWi23XBflFc(U}A!O zRBmmkR**}kLBspGcm8dOQjr>Y%Q{Ay;w|(M28_a^E6zJZH}!ikpu_Ja;A)6`n(Lp2SAAWTc4|B}!x^LQf!-d$)j92#C_h3t@aU$sB$m%;8 z`3$j>vfx{I)wteD8AmR6dp;SJYhE-G_s1to(9SG9tl&t2}G1~%A&f4cXP8+5a zPa0?J{%vVsd57y7gEl{Dfr)Qzivya9yWgq@#Kd!YN$2~pgC89noOJWlxLKJE|BbbY z1RZGZwCT7CT02A31Sqlor*gRdS4SQ3-#Szxqah@Dn*xZq=lw}FxWZ@Qc0a%R6p8-u znQ8c5^MM`Iy+Ng=pJbh})CV-I=MWd{8O`_x_f8keCeZzZb8?787*H_s zTsUw!^KVIzp9n$T#0riFef(~6SnlkB<=0{FUueqD(%60Z!13WT7l6$Q3;@NkzQ(Uf zH6kKmfvFy+N3X{SiL7UUnxY@29Jg5S!tkFrl?i!K4l@DfK5&|*MvQ6j`Pf?+P!9~h z1^t!A;;lb+21ejRHp-=R16RmZ{Um<5Hv;ilWAu&JL; zAAA{C0u$jC_F2||aFIC~_P*2kL4h4XE#(#X7~koJX(rlKbYTBM3LDtMavEp-wQmazwYHC|tS!;}EKCN+CEa9N=P@{c7dA3vX z6%rUWp!{Z@aVPWzhoQAxZl~ZpO)&M~cv#+wY?X2gvq6A@_G^J9;QPekqMJ%vX zg9cakp-sGAoeTy1_BqDbhlE%ncoyE;L%v^xTXjStvv8~(VQM>O_}Qys7V?xDK+#RbU*+I1kz2?=>`4;+HRJ`kz-XJuS{JCPUw=C~Pa3$6EqwH|v^WUg%g zCfG~j?czFbBL-HEKoe>78- z25`?(>aIsPf#rj8(6j~7frajt0@JF9Ay%d>rp#xjzX6@eg;OZ9e7+#_DmYiExwU1y*}Dlb~wrfjQDj=;7@BSrAtKZg(dT$Qh= zV;Wcn0@KMai|K8F1GzdtrhOtKfdOS45!6~<@x9x*_sfIXsQ>hnF^~H$CVc-rr;g^m zV0b9`S~)l1M@*AWVm2$gG8pSmqR2)?MFTs=IHlm4`sGu|=SnW(*st03%2cuh;+UMV zuYSywm%Xu0^hgD5D*~vFdQipRGyt`d_sxS0gs^8rxh?U|IGoH2-BF>WoWvX;GfLQRrS!q1FOIk42w+Tezpb`4^TJzEbGteg;HZ529+l=;tdbZ#LSS$Vw~+Dp zqS9pJS(I?$SMv|5>``#3;1jEZSANwBIi_9JCj&y!P#SQ3_ErXo?WolRQLXM%DQb|; z>afp)%=>l8?(*XHmO&#%gQXi*UQC1zOJx${#WoalC%x{95~|Syn|AU<~>X1 zEm;^pn5R3J^k2#IFGy%33TrHMBQ>~0A}1qb2)9ebie>^TEz_btadQzvUL}zWW40b5 zXdQifNvouRufN$DK(#%NM`(~z=_g(RSZt0G{o>5I>oZg@q@!8m${8xwFFUc$n%ApB zCx00Sy4WBRBd%=quEsUa7x=ii#Hed+ym*2p`@qFklPV|*w72V7zHg>P2?9XSbSb#y zzp53T{~oCWLi&!K*~gtCEn@_%cJXUoAt3HpkAxq1?@a!KlM%i=uAaKEX5qsT(&GJ~ zV+V*(hObd-tdBId0!QQT31UpEjVTJjkZtr?RF=w)crPAIr0vY^?y_hHGZvJq8-ZN( z@aEwq1Me{YwJ1;Y(oT^297f&64$R#?0;ws+<8Z}4KgR@Sk5%Lj$XNmD|`W~0?Y+bb}z(391yZZDgC%s~0vrz~gAsK~}pT?Ckv|q6fgJwE1f#r z8SZ8`#TFhkzY~=n2Bke~sCvRY?PEe(0T=@M<1 z+Z?ylnb(<@afM>(iSflRD#ReJ4=E`v2$eb&%iY8%^#U;Vt~$8Q65-!pjagR#JaJ^B z#h*u(&vS=v&%<=e0`lA;Jm?Z=#&STHoN}10;D!D#dKF-zd#;Ga75J7iLbZ+nYD8oK zyMgQ17&S|iE0@x;`giWsIhnzrPM)7r_3eLvX^owMUlw&3I>mo!z&?O2Q2DxC`E?~P zVPbnH;LagPvXOv(x0pvye5D%F-xPgTID@3tVv9CViV1)VhOKM4X+^9fiG!SGiJuUz znQKu*y5vK;?>krCfwpB}$YwUmOQ03- zJHo@~zU8cUa+qK0t5y(T_MYKCg2mX`wbi<+e+v_P%ctNz^oEBNt`<9Q7mPcA5L4bM z=(ZIi?XeI_7em)VK@6R*b}L4z%K1`YrYVET+32($P$0|)tGm^zQ__LsCB+lvEq-VrCn zdT!(b>C10oY1INSjFbPJ*3L`Q=Kx4%^3#RCt`Ivdg)yoI<(f4LnAJhtrg4g?;+uA+ zRs|uDVd8<43RMeV9uh3c0#l^aR@0KQ2XNp=j))K@`g^uAWF{`xGl`X*deBrk6g@XZ zaG1Pt&1~boIYklFd8l8)X~9B$HHCQE1X&V0>j0F$4lAW3c_0b}T6YczB+;6}rjqNG zhaBu3R43Hf$eE4m$T+T^Uu+gXoy@bQ?7U)AnM<|CqCBW^Wcb3|z3e?lyFJlG zycDe-jES9jO9dA6w}z0|`mt0_-=pKA1Qu2tQGJGj@*eG?JRZPFeoNG`l%MKJ;b+p7 zxOQ|jxPwY5oN<oJh`BsSI(pT z=iLQC3E7ut^Cy<1u4+?KCos)^NLT&rP73IU6I6JYXKk&&XqPah0{EQ_-fSL+vkRYd z=(V%tLqi};!5Si`U6v^(OTl^t|6#r0W}^~HnG`J1{yH@IOw9TgRZsp0)c&$-;3rTyhLEXt{sA8NQ{HJBb8xP2Xt&;~DS3G#6zTbs8_A=u5|)>CnM5 z8AARiV$)r%3cUpV-`fc{v5LY+Guv8}!Zl6;;%imsX^6O4SBWhjjW-SeD{KVvOMPxY zC0N=fwwKMzN&tTQDI?=tCC&i+X4Am-=-b&2{&|*;0JR)i`<)44rpyHqBjEo1|KFNCV$6qxwVFx!sbJ9zAbnPpOr=5 zS0VInjvmYstaNnK%*$&1R!S-XG6Ub~$KF=+qA*?{8;VcIjBnx2D7<=x*|I<=riy_q z{E$NJGtFf*@omd9X=7GaaJ|OK<`Q1$`!ngV$o<|V1;an+9+mZt0tz*vW8Nk=^6Pzh zk|J*xx^sXch|S2RD80rTb+~}~*K{DdqIv@-C^Z*E7t^f;#u!Ez>gM7YHXE}M`sIK_i2i&oAHMdaag;**8WCS|_ z*C;f5?J?yH`fvq028jPEcgBkonD_OPH7^d>63zm%+U z+EY$PDn(fTa77MAo2p;f);cI5D*n+bE5t&Qr0txej8p|G!J1Cpq;Yto1y?JWwm1_J zGspTm!)?gQ5ZA@VN&{&Sa&cCcQa|Uf4+ry^zu&g~BB?9|^5O~7nJUTAE4zw4YIuiP0 zljwVNxtgli`9BH02qUP{8#B)A7;yXS06_Z<&605bo2fC|;Bx}#DXc-<2dTxsEr74j zc#)eivyMCC`mzK#CGA}UblOrv9Q&@I*Sh=~uw_oWX*^Koi^hqk_v^^3A+}Ry}_=mA|4wRNucEx1P4u=$L^186A)$O zojHO>{D8C9!mqU{sR~ROA;IwFm7}lcY+ouDpDlh+lf&@Y)Z!J&UQhp9|1afSJz1j= zJ%2k*8=IBP-1C{GgR{?MkN5Vb9hWsceTH7o;Y@f!@QsTv54E(s87NvJ$IC;qqZA}7 zq?6WLKP85$Y@3Kl5A|@Gid8tdQ3XmZ8U6Os?mKq}3^hGXuGq^!(QO72@#o3pZ&sCYK; zIxXqYyeEo!;>c=H6g@db%(vw>=vTWr8MC6o3u)jf8V?}8nH&?AUunGXtePl3Zav+L zJE=QP`t&zd7M476kOMl6$b&;6Cvv__5Q-KWsM1<*tXlwri`)#4-r;q)AtM2Ic3{U* z)6G;3anw7;8N5TMT+08N+#nF?IBMHqxvLB7Hw)x}=J%Z!k1;dh`%5@%bm46Xr0`3I ztpN5CdG4^)72u~iJgzP=c*5``VhB&TJi=rfcw5oQc%rWW9CT_@mF^I4)_n&kf?{I{ z;7=m|50x*~(@jjfF`l<942SRwH&$5_F*Hr%Qw;ImjNzpp^%rs>!z zF5o%B>;}6^Y_bWsX$2?5+Rpm)94VR3nDDDZ%Q={X42&IOke z1VZU_c-p*DntLk11gDf6j`QPRiFUxx^6M5pG4#vGQ04-3BYt!4811PafP4RGjOk<~ zKw8pCg9|yRe3qg4h(JvFvpCS|| zb@SvwyMyEezBHRl1JD^UAC}Jtw7(5$cu6w5@Eit}$8vgX#xXIE%~CZ2-yIJeA{Og& z#lFy!q#E80+ptIAY+>5uK;qHl65HDu*3(nmvV7RIBLgV4V(*^3Fq-%Dexa_!^^;9$ zNAzxhU8jj=zJ=+WTO=M&?ky+VV0qca3QfOZLx3DXp)_rh1}wM5Fux&bWm7Cg+E;zo zLc3$uXTW>zEw&i#OH#cGRvdT#xh~=sgRAI{5^|~TuMV@ISt<|5bTB62^pjh9d?@9t z2`3#{k@IT{I3+RhLKkv_3&j+W!UG$J0A34uIE?4_sj?fd$FW{7y)$pf0yg!v=fVqA zG~yv}Hb6(`nl(A}sPGBFiV_KJiI3#UzovZv*G5S?tf5mK0`nk+HUHOO;|7rYpyxR> z-*|xhQU$0QG zeo%;|sbS@-_Ap>gAtyGhob{*42Z2WB{C=e=`Py%qThBBre6F-P1k*u{?E8vc^r!m) zY{({(3|$gi^1yh!GedbokAANb|B?}vhNl6H5N)?Us4pD$)skLh>XTH#a#Z5YUyNX$ zm2aIn<-Nb-YSqjQPU?E0G6}D^2EDu_(8Hbp;V2qtr7TQR$fr{LtL4%yF)>3n)-WX@ ze%Po+EHwz8qzVf`8@|A)6W@a6TF?39sSo+nxpTo{HD$A*9iFr zOwFwooBh6xXn56f)+in>(A~|L0BM1CFsGjLWq`x4dIg7Fhtyol)$1aGsRm+>@-99r zjm?3f0KPLBr7)+QD{O1gQIUc)d_=Ems`jxP;B47?2riZy2u04OH9CW<>qS84-8jd8 zz-zPoF+e1lr!3gWm{nMo02bOKqtfvzHm#mbKC_S)>1^N&LnnF_!=%MN+vwY*-!^Nt=nf<3f z#ms%b0eT$@o6mU(VBhyfFMnz?`vwT)qfZ(~RyA)!C7@h^1{*oz1^|lfJ;RR<{8Ui% zfTa5tI5;QN<_|Z5If5#Av;6%k_5p1Wy?s>L{jOD^poOmb&|m$aUW)K&NbE&-M~C!J z^%yYW*YXTne-Y_XWyCdbD=Et;)gwIcK`IohNICUj*(RgjiIa#cZPoV#QFW7~jYIK;aLWRCV+ryOxXI`5 z44>Q(;mu}ZkV*v0DyU{hA^@Z+x};$(d_HuH=FC<9xzWmg)u9m393dW+_$BrZM(8c6 zrWVR)(HKVo#FI#S5aOZDV3;F~udSMvAvcAPU%9bi{c z>SA8^nI>({?%C}3pRP}+lYqoyWY48a=`^Q*R&>uGu?NI;{c~w;yt2s63$jfc2lX62 zhfF-niog8)j@$gVPk(XswxV42q;lNMC02T=F5Bl zCA#+vyB^?E4Qoxza;r5){EAxpwcd~BkFT_)JKVVwv^k{PK;wAA@b%~pqIZKB!f?$D zUFmAhX`sc)Sr2}G>x zLJ7bVNhzy9f|~}w$r5ef)SX#y2yBDAv$Joc2cxBkYtT0L&!7_SWY-wr%)0(%*kXL+ zqbuu=pqO4`QlA8z1G_IR82d~^{pauFSz~ck`h1}|WqOOuVr&6L3xaJPa_)_X&yD?`(+MyQm6E*l6_*BeE1n-qS> zPjjv7Vu?wic@U<1X5%zMsnnhENOtQSy8Er4NAT` zia+HIzIebxP6G;Vt261=nC0pe&WthNl7!zi79C4%#KR^TG8)1G_7J_-YGq|56K!z< z4vBB=fqCS$RXNCO;K8V$>qdj=tEoQc4G)Q5K`pNk-{us>uTg@pjLQ-~m=9ux{7gz6`h%K5f=(QxKRk?0w#4W z4?*rEI4WFL4IPTxPYXW{Cmo2(qeDvfsWXM3rmw_P+=hLX zw)4j##<#yt2;&Qe9*y^V@JMc{u`c;W6(FX+fAO0BY{MlhiA`5xdA@dGp0L;j>^oYc zO@T!;m*VEMyV}5z)@Nica)=wYHT{{cmSmYnYYwuQJ&T1f^qlyaHiH%!pJ6Q9cCpC&dj9aCr;GhR9Ryz&xeStHI`zrsNU%|rl90c7b3;&6tbgPjV%tQT;X6jHCP zU6TrIYY=xbOy1s>3=Y-+ymv$1Oo&Yu;q~a0p}R9eO$;W8QP-MeZk{>yS)M-t%YoUpL(4RyWiWZrG{e_E&QCTOz_UN8iyw5Qs` z9BI3(sBJJ1KBL{t0pw_ep}`90F)zSDa-zW!Ydzn)mZhmEm6<+LnacY%H5XY0?r!4f zm%-IXh@O^eK8k&KBJl>sd7Kw_i8qDvN@QU}+D<;{t_eK`>vM_zxVVEJ@Ms~n>(tG- zjiemz+wOn{!pdJ$Gqx&p6C%htWJ$WWhv3^&$iC(g3xeBdwQ6ud>{a!Rp~zqONE~al z7mwigruS}rqMksNe*IFE0mm9K;9-G&Mzz|f)kfKgR%xGKxcMTFhCxAN0;kp73u9!O z_Cq>BIrrbg7#`VLLR{}8iP{8+%N<|62jwEGWDm+$=RWVx3mDd!OZf5VVO^rkDbss8?|(}p2U!WYo24<< z`Til%f2;Kw@X=`1A$0U1M!V! z$mfvjJMu};*tsuVN2gRKgCv=~n&QVX+n}rO z4zORJYS}uuHuvKz^C%Sqh#urD5MSu*)f0(N7d8DQlCh4{@3{4Mtjr$mJ2mlC^n8hmZX)3JTBx%O?ptv+YnFqk(YgfzpSn-I&cM zu!PUAdo5PcGrwQzz-mi~=OGGj;&Igqcn1{=6XhrtS;TM&QVvWn7C-C6?lktHJw~MG z2nb#sKYrXt(E8eDx9I;&-yC_xjzoYvq0i~!38lZ4=%<}x7l(2vbFq?Uyp~e{yqcl?aL|v!6>Dx@wl|PL0WXqN&_Ni`tV+lo;}-ia z-Y);WpfAPsOdq*UtCDRvC0V*M-jUzkkWx&|;k92l(m0`+W&*=O1r0hXdIl~^aFcck zo6P3at1OVHIB^1gr12M2kaih@5bG(D{uZ$rx>jDrKhe}%| zAbF(!k@yDsdDucdBH!lRLcAcEk1M`#!7f4ncsOt9>h+1&kNoWyTreD%D`ZQZ>%;>p zAwX)ez6k9ZsFpxZ=mhoBxifSxaJg|EWycu#L)hjp1Mbd(?z}qj@Z3ywj=9s3Jxtfj z9pow5ZrvZpK6Wz(D&%5aeB#Hb$qYX^i*9v&);?Oc(YtE0(F=swkeM5EHL}0{!l?Vx zSu)Q)P^1}AB_GNBVoxJQdL0m+C=tu#MIS(t#* zo2!$ZPlmS-2wS>_lWz(i-U;_l5mdG5)&skmuN_8|nY?>rF3~NGlJAoXY=51}R_)+! z_U4GvshgTef%qq5m{_%?J{m^5>B3N`>U6iR(tR97Vx+j>uxV0^Ez`msT-oi6rB>L3 z4~_~nD6WrvMG!y6ne=oz`eScu2iao#M^@^10vMAkxw>WDed4 zC;M0^`xojT)%;>b@{i6zZ@QP#<@F>b!v0c$pM(USPlgM)Z4O~bpcfB`rK(v#jk=*k zvp27SM3!Kewwq$H;4fz3g2oObHcPU8j1RioNn05$!+nQC!! z`}zl5slB#j!Cj<9!GN~&r|GEV#!i-~dk2x^AIHa^dR}po2xxP9iu-EpoDy1r1hL&x z^3MeSt8ZqHsCb0O$0&$3e)v28aWZ{e3?j~9VuZvE>`U*cbk#EWA}o)0Kb#idkNU=B z+VC>y8fX#O4Eu~gGQz=Zd`Ohtpo)fngnz#WS);9g5`R%w$hFyDr~7G3%B-L5qSls* zK<0K=asEAWv*N6gywKmq^3*xJYgFaS18DE+-Pl=x2OkVSr$Z(3yb-lwGpnN+ZxJdK zkcd4sa#ZpvxBsep_Av2?eUVCyKSnE2+s+2B*RTiQ2%MUEAJ zNP&n?_T1Egi=C2f&SBDKPLA37ty_~lOZB%TVNusZAO{^69h`$wz*V)3souq3?ml@F~PFU~_ON^}juLDTt{)1ri9B~1|{=fy0N`@pq z5E#qoKuc_J;bNXZ5qz)qjq9ho^a^WxK^oPHoiCz5s+!;%T-G_~z0HXo*}f5%i*x69 z=6AvzO^n85_qFz`d@F+wjPGzknL|`!e`Z|}4q&DFzA^u2HWqvOXA`K8dB3l$q>aY# z`mbvC@Q?O)3M;OaY`KVHOa#_rpl6E15ri-O@{9CVR$x+$9Gf8HgDPRO zl(>B;5yn6wA_vaz>Z?Up^$ zzaK&EO<)hk)Nm{mXP2C+H~(xb=u2fZzLR}ba_Z4NzJ-79$U{*4FYfzj;(PPV4PxuU9%W-nX9WnbT2}Jfmp|iKe_j$axYA(M=eZt#%g(W|MgzL%|D$=32 zlcf(-xqGKHd3H7V>cw4wYrySje3GacwyN-Z@v|T_V>tV-$Q2*Sxo8)pKaEqP)9t${ ztADM9=-8^*0h!gzy!ZVgFx*@m`8vCMUo+%1#>QQ5Hn`cP zyxVU=VlCC^TL`w~A7D%!j(oCI)?<&!nE8;NhlKP;3}%K?t&0H%6g9Tk7yc8{=*QK< zOCGp?6JcvL%do8J4bkkD#<*H}5C+k&t&Q2p``-}zc2%jk{0pibiQnAK%ND^8?8u8} ziet;DZD02Tq3n&CgjP>*T9zRD3YJnzX4)Htu)`qy!Jx-o$R!d08_xpLv7~Q>5!a@n|f*g76#WDxv zZTsf@za%7ES1|6$!7=XX>MFYZYx!*iyV&4mbMt#xqz>@cwZqIW963us**pAdWkLYJ z#q1R_yh#i#Jrq8V&oP;4g$vQ;bSSxfcC1g-BYTb-fv+7F*R^4BP>u(-CuoIDTfgZ4kSA(i;nxB8+<l9)&)0;NFIR5Cs}Lpb9oZvQjB*)Y#x;MWI<$lWNfUeSY5UgG_$GM2mQ;uNvM z&9qR<4^>Vv7edEt4LFN>#>;a860tmWrTZsEF zC8X!Ag^u%i#9J+tKB8RWmq^w8{v(L2WTJeg5#~PBc0dDM*8Pe}>igE#+JM2t^HTl7 zjguc4lM5Gqors3~K%nJCUY00n=WDHgS6e-hP5eBWPQ9Nhys)5~oh%JfG~1 zsxAIOy|R%A?Q$Vv{Qbt{1mOr~Q1_oyMo!>*Drs}4uGcaJNhMixr=L;xoGh&wy)u{& zn~}TavA+Ge&0~qH8MuGR#Vp!_Vn!qf!ElK3b-DJ-+Ifat#I0PLnm}OC2+p`&5pwEt z8S+qzw_yI1J#=@lj$VDK&#C#geq8ukO|QbBkfpo?Q!@>!bV6B!^@)v~{M}plu9KdO z-zxPfzU04k1~d?KzyAtz*R%mf460N!H_f!Q2L#+^r6omIpmXQH)$>x?!c(wG%#i=S9Zo7RFe6u+B?qHI7F*V*u|K{pV|Ej7zfk;wqc~%oJ;LlRplOL#0LZJ3s z4*NO7zhq0GV;wM0Fe9Z(oUL3FM#+W6p<8{Bb@OFA=V^=EbudBbEJ+cezdYA#7j|w< zhT^H}+rowSRWdA5JF0hxWu`DPzkf5%ZL}1(A)pV)|5g(f3RRW?=gj8Tt!tB=)Wcap zg;m}riw!?^O^rd=!nV-alMvNfATE(Q;cN~R80In1?Rc$|ciSERTKs4SIhnJHE#@M< zG?r3}&Z7pI2&6p^C8nYo;m6)Y!X*n{&J``~F46!{xG%JuKt04H3X4!EBd*j2@^CbQ zqtU_nV?wWfMH?2ZhcW+6w1Ag9w#^8Zy@+v}?!vB)z|fv7MZz;7_cQ0)JdV-RErC;6mtjt0n}*W%rIK=ZkDig@t)O4BOJ%Uk4{2 z^?)>jCQSIlsy(B#z?s1b2)_w>8JVeVhphGWuQ@2=E~bFwpKn1*pJrXih(?9SN$%j= z9}To~`UsiHKjV!2Y@p^@Hrhg9K;vIcgiSvuc77O8z@z?F5oPFj;m9BL=0E4l_1pO# zOC~K@L4ZnHk!{J7+`1U4?>9>TC@-aYouhf;0lvzWfU1jo*erhRy$fVN=F*9_7rpy( zS%QFR6JK%LGDcaT(7Y@$1~E%O3lKQGrbS_bDZ1~!0&0*6q*YXiz~ONO;=35aK@pw{ z!gf7}27{o~g50|WP)znl)%S}=Ksnp9_#MuCE0EO*1dL+i5h1K2xaGwsp_`yOy#YDw zgDo$VbIy@s|9U6Y8q$7ua`HnalBI#F))P88`QbW77$%5D?f9S55>l`b417gg-n1~7 z2FIK6FmZC@cW^!4Ec2qgXmG^Byf-0>PvT+x2H-Rhqh5G!9DRy53YF8ktzxL`97su!UBFYbaW>DBtZz&M+MWZKv z8$id&s%`fBMLcX$;HS|~&;Y}YQhNcC={v%RpI2xAqe=bL?p?6=fi~naexA@p<8@2f zhfG_JYPQ7-u;!hV*!5N{&=(5aQP_cXUKSmyCW-VjB01jE4<-nHz+b_}=^RCC;K;uYUm7+}sCETI?n?73X5_6tYva|n$%=`9 zl=vUIxJ^Q9%~nMp^^HPWY?9U@S7T{RoK55KqQ31ZYayi`U zx908;7e3G3H$I0-XM&E1ABVEyP@U})ev6$cal23=Vo3gpVtJn)^J~apg9{MS6n!=7 zbP=*Cx3<>5W{X#g`j#P~m8y3m+T(Je+zE@ln=vgMI#n_)Ut&#-VT!(u6ky1Uy?qbN z6=`;$yz)ayAnSBeuR1%&p{2VX*1|=o1;G;YaXaSJcZ6Ys7xsB`j6#4hY!8$9>WCrO z(Dqz+dRvc;@T>I1Hh+^9Pb{Ow4cr?1edt^2FTX@u0}^XyW~dLFdPfO{x>$E?@ud@k zh$}~eKJdcaw0+euMRBi*I$_=wZlw!kj|%}unIn=ErM(Xjfp7lp^9E_*+p}dfzmcpC zzjUT9zprBR=8@QY_vWVFx`i~Pm7-mbIc5~!pu!B!pWk(-JTk}micw%Mps~CGS5^30 zA_dw>=ei_+H6a)q6=~`dbe(ixstd%~LwI3n(43Jy03~zBUQUGNHLO2`pc?IjtJ;`k z$R##60%$e@`?>#PwZQ*xbA@$i)@&4sAz&Ha$iCGO{!wr(=X45)3 z>LDF?!G6SKRt()nken*|GCW!I1*`5psmO(B0eFR{iyVWv$w`ObSsSnAa)VpnV=$i)6XJkcMOyMp1FUI;& z|LA_0H*vrAE1?|sS|vup?RqEC?e%<%o9)DIY$zSyb2|8#`hk9+5t)PyFD&$Zc>{u@ zGdB@lR;t6G+q)A`{Dm=>`3QONTcrMCdWDfLpTNk=$fHHN#>Q8+#*}7(s`AGE$W@ik zy>k!2vOa?=5?UxsLW!T!YC9U`Wjqu#O(W#)+;#uK9Au6q-#f(SduoFj=M=nQ9nekL zH-D*AM8l+06=CdX2b3C$Mu63I@pqij;6N?S2k0oG&BVD^!ok{iOzz6UfqX+z9mDx} zW#{QkiXGpENlKB|>k+9eOblX^sOXa)TV3e2 zTk3#Vy$RCB*D3hx!R$VMus&wG{t;a|34 zSwvm_D3}@S9&ux{I(mFdx(*UB2n=z$x0pDfop^`ffJEFbFZ#a8Iwi5|y7mMu45_`^ zriSsE>?r@?wAwiaqjlCD8M3l&51Wcs>f=4xRVJSZP+Ks02t5x5utY2Kv}BOvjStw}q{A*|9a>S!mU8ic63^`y#Q&LP9C&`~^cosgEsv11HhsVv(r9Oir^GY*nvDZh9P$)}^yI^1dq!4@y z^i*Yh)E_QzrHO_>rr|-wS0wvNnEDNUdi84ob4e2+_r2gQP@UDzS15wIfoY?4!Z>1^ zem`Eu+mb1fY_}iX-Y^jeQm~@C5Cz)BdVtG+gJ}jVPb&-K6kXA2YnI!;??E3N>0Id| ztC%;!i;N0oJ5b-w(2d9712FBgGVx1gF_f&?8yJ>0!m+1%lYRi)ut2rigWVDj3iEtJ z=W*Tb5WVu1Qv4OUPVQ3aIt!P5icyBB!Qwnnmm56xTy1mp{I^Ccp}u8JKDwu^>>>{k zoXa}%LP^6NXk`u`TsewPWt%t@TTev8JtGl6mP#VF`fr0hD7h=bfOl9Z@G~c?besGqY0t3_ztxBj@3&3b|*QV4!sBqC+RdnR3Y_5c%i%Wvk zqK@@3nM2U4``_cox)rj%;&ucVFP8yL>!6jn9vo`57`EO}^jELjxd+{^Bu5#-_Q$k~R-P2uc%Nh2N@Erh20VM}rW;oM z2M|}dSIGEPTy`q1z6~Vxryf1P_wC!oIzGn4JM?^YH=^ibq60=b1)+s$k^O69M=jXg}8y&rQ+ai%+ z=7fYD66G+wH=Tb{CG&UGy+1`Q&9u2HqYR=>OXD-7BvPSXPCc{ndV-SM!W~r;c_B@# ztiT`!ILWcd9S}5zQhvqsJ?j34dZ&|4*S~2Hb+j!Ow7XKAHlGL#yM*<%dvHL3QRJUc zI?Xp@OHFB>g?yOR%NZ3<5^pQ>kLsSiYX)tZW$nFU3Xm1?I6Fah-t;1#q^to-q>fYL zW2>zTK6J7=#4WL=A-vymnP z6*E7s=1Y?HJ;?2KrCGJObEAeEc{!2T^+H#L7I5bO3A7<2M{RWi0kPD_VxC!4a@wkE z0G(`Sm@DKo!o49xKk&uJHyz=5$Im98qURkT9Z9ZuN>0JAW0qUH+rGtOM2S3d>*}uJ z@Py#b%PtD)XsO@NI+d$jlTsB0W#^=x96gsjT`}9 z@2#<)bb|7#mWFOwh>Alq4?@>|PNlofA5H-OIFdP)g_L!6do^_{Lkw3M`JDr~5Pa`| zbEa;?R3x+MjZh8ST)@dGQYdY-z#I<(Z$3o$s5w`^GOj*|2hFxu0nP>S7Xlwo-D-;x zI4s)%mGpnlKG}t`xMK!2_;00O{brb4xkN+ya`OH7jtz{;I8IxWkCf`SUMZe+!XTUi zo6B>rKdD1c$G78Jn5!EUk=`TVD-s0#el8hp3u9EOkTwUY z2>~q7UUt4Zg;SzIWt!)iB^6yDz(mk}g;)xfFMAm7f*(})mn2=AkHn^c0(-&72xzc5 z8by9ZCm@scOYZ=FhnRbo;n|u}le8i3R2`suSDzAFpoQU>11pFPd0fz{J<}JwYl8g@EQaAAw8{km=++pNCIoV?jQAYkvWyFcr)&8WVMKxfNQYU8Z z1n}4Gf8PPFsst`AC|a~Y5$x>PX7=lGZ`*5O7Cu^g@>vSPE&YjcONR1ynCe{TYGVPr zD_jd90fBlZzU&FN@#{$leu~T+tp2OMmHKdxsFM_uP|E>+<&-<{w{KbDk{^ z>ATicj=4Az*8Sa>>-wLJ-q=I*`|Nh+um{R1r zTPYt0?_J40m>O{9A}V~(M-H0>p3EkF;gnwwj$vPJ(&3KFZ~S;8ES8$CvgFxzmFAhm zM2@~v>d7#Y98D51K+gLiu?0WsljSKQg7L6*7_1Vpz}M&|FAwv3YA*KfGWXZoLoD*d zFLYA>*;uMeUE9omeujzWoTB~OH5}R@bC?n^*=U*IHW8m}UOA(LF~tOuO}*G#;GJ@Y3D%Z^dsi8>R}Pc*L9(xOSif=`~Yk6~r3S+h)f`Wu^Mi z+9{r=k|bQu`+kYv-B=OQ1+luB`bW9;{g6PR`mg;1qa=3_;%TZ!9xKdFX9?wbqzZjc zdwt3ydb7JNaa&gWg6WHcs4R!@Qeix3T_l<=sdJL&SncXy81%p2u@~v zb-rM)6~?HtLzFHhbCK{k&f&Sw0?a8vF%fj3X-k95D>T2=*N|f(=dnd{M%iDtvL7j* zUn2}JQwf~?LY`CKiT4T;C%b9J=6hDX%X*gI%G&dem5-S1BviKo6|5!5FUvZ31O~!b zSopM$c1-PUxrk00SUErkl=Vwpgr;6of-bysLx3W^byvh#AjlV`RZbVR{CVptXOZ<~ z%lbjU^my$8p)0anQs6FRtX};Dli9PFMylWAfmyadcfre!jTWZen#Kh*wokW$XWwmR z>C&78R!yA(z7ui#e0^UUVcHVoeXH$Hsq)_o-e^># z>u<cKmRlM{|GM0SRmotN3U;-+sHDsG*PoJQ~io?N~>f=e$WY)yDJkaM&Ka z@&^Jk?jV!x#z~t*A?qh8LEn3#zM3@%XMVKg~T$^~wvh`^rW!oYrKZE6`Zoaqm90 z|LE%<(spHxbK3hbY4Kz#gUBPNP$S{6Z(PhM zN&n61i2$p9rY+d8D6eezxM%cFFL1?5M(7VcHAs+L^lw`HxHL=q+#l37Efba>!%q93 z@Ns?BWd6G4DA?h>G)~rSeNRi2g*v^ST>KwF?Ce9NKF7rw1FT zex$zQpC&ORyzSbJ(7V=VE(~1g{vx2szRg|<7I5oIfTpD0_K&rxed~#P)iu*@Gl$V< zW95<#qlCdB=XcgsO5QY`5)wl5FV51X)S!0JOJ_%3rtGlFfth$LU zG8W^VtDg=)Av%zzZhqlfq;Jh^i-i=Y5z;FeoZj&uH_Y7jMUZ0dt0XBsindRR%Ub^3 z&ORPQkE8t1xS!2iV>AP^&U{U{{woeL`Y1;R3!h1EwYt-2+s`Jj{0wseQ(r?zB z@aaL!%PHe=mWcVZbaB<_A5V?WG|vz`ga-J^6RI0nkfvF3z=yiZks81A4WjpS?&bg#}v0;!}j>lAd- z(ns*ZEREOH=Y@8IWt>abdmcGZl=Jbo=eqfNvb8tP#zC(wBX|i<#}_v5S^*t87Pk_| z<|S7O4aU7iDpR&kQwf?C;& za_^e-%yOiV1fBtCEfP~3Tx5=QalxUPnUX6sg$#@WhehafyUq~v3XewZXwbNMZZV8f zy>+%Rgh`w+GY6%xyY7p1wck6qT##Ug1pT$);Wd1 zNplmkHC^7BRS8u(*E>9J((1R6QR%mZv${W_9Nsr$$zYaS03ajt0ug zrw4cv^hEnb>U|H-mJ$ONBfau;0QI4SV`;U`dtOP|cR>Od(Umcj+NiRv+!KZ97XA0g z6{SBHEBj)f-zkC|XzGif$B##xXp_EMMJ?}6OAO92B^a^~#@T~{_wgaG6lsYaPlQDE zS6_sCsA@1kbuZ}RV$H;()tE0Dc+n-|F#C!iY5$G8Q_>NwRJ#S^ zvD%9#{)u8+2$j^Hal4qH`i^`SjFaQnh0v&f&Sp5A=xQ&>U9)?~AEG;}gPCg_a#8JR zFxHv10$9r$!VuwRm?Qn_JO>3G$8=wlBUpL@i$+(fGpFqLup5c~K;Ft>ytua2Xy5V- z{+dmz7-8mDRmc@#uE$e$TbIyBofX#0Bunqgg=i!NEH?Mkk$)>zua4o-p*Pg{{OC}z zzP|fAPv&YXABQpM^=I-1bA8UZ8BbJ3H?F@m&ZN*W4hA|(4r%+MBhQF22ei?iD>9=O zY_^Rl&as7gK9_i&S|YYupYd!W?a7Z8R(d57cE6evSYM7j2x+Oz(ime#w)cVO#)x$A zx7(sUM=oZTJdafqC%^WtQHt1?mm>ZD{%5b1yc=GOr|owWez(6+lKGfaS>{MSCyeV> z#vL^?aK)i69iRl0I(L2a7lQwkL+? z$t{SBM1$v~-vR^#nHe^_m{4~AV3l8nXiK-;HY*|+awc(*l757h2r;uP>*K!a>u3xa zysTJa9}gU{Bul?7%F2G1{bA36dx1^G_EQo6681wEeeSFL@D|!QnFS|J8wmhpP#`}K z_wo`&hkVL$i2Cu)aC@%p^};5`vC}il4=`!(W*nK?-S?GQ_uXEeL;ZsbagiCOXp))p z%~qpvcYh%&-@lEJYmY1Ykyt&miXFmB&pAiq;_%i>hFgV|QkAV)%qSFBMu~lWXL`T~ zCNP<~5#KfPJ5ML^wxm;Y9(R+7;a`8STY8#y`(;i0(#A6%<3a>{9<@dtoL3c>EC$)bS9PfX^dxn5pTcqUCiA2dG*StO#6tM7Mg-O|dfBBaG1+czMiwXUG2;bXdS zhtLd$q(WJyCN593T`?Wj%pbgn!$?!bbLUP}x%sp&u@_uimg37Tyv|eRMB9D@0NZ23 zAPntS(JA2Z`ozuAszU}7rDK!1$e5c2P2QPe^d#uKy)|0(wlw`!l<7EAt1&KSu)5qr z@?f(cEE}b_=9z=M;zY;J>V~A0f*4)LB~LQ*dAzu0c3`vV4h8Dz8AG#40VRBc9H(Ug zmq*9>IrP%)d2GA!mlt|8W6R4cgBKUBSSGX&qgPbcw_wl$r>7PlO+C~3 zaNfbVV9%JccU5yj@Q0aXvw?D4cCQhm?U~A`-nU3ba9CH*Fw+)NA(^iBLuBF_D?Fs>(mcy5CB%CojvwAB@t!I18SxcV zQK=nQTyZ-u)ghsEV6@{eMZ&6_#yJv=YE|{J`m+=lVqlK_fqkg!mAVAuj-J)BpYLtQ z+QbB9QqUvq&MN)RCyqSLDXibSW`z6W5>qi7>Es%SUGMPX6xErJxBrC=(T{jBZOP%H zrORz3C@OUK!5B-#ld(-;K5Sq6$xS%?cx$oyuAgzilXAM;B{#?lZER&dEKh8Fe&)W> zD&i#llQs)+z9jq*km8urqSrgq%)}AQA<5A3IHqbn*C2_Bh=glZ>Ty^H;k4~&Bf+3G)*3KcDK_5+ zA=n!3qNT4_Ddw?~e#YPXnq7v|GbxZP4316W*X3w`AD#ZKDWxdX!)xU1SDB{d1pXOJ zjv~}6;?EOYdWOF`9T5Rr2% z`1R}GqO!gcK980Y_w$y_zbY{l8xEx@!66#@-deoyh0WWOGf7$^!7#rK`&DUAu@IyA z5$(CvsP-;#M)Pxr@I|J#xR4`u_7Dx~?mx^ax%#)F-ML9|e#{2qHc?2LQ}^Y@7fOgZwxy)ziw$mt1SlIub2H%ivj2OG%mwwMNxfe-_Lrd>! zgXtMb&M_+57zs9sG&B9?gd<;n^nd&={UDAY!!dZ}%aKq<&9L^HX43p!yn||BG`?1)h@B0a(q1!S${-semw=&y|1|5<7rFN8 z`N!0q)#*nJ_C4eCF+7=sJwW$S+Guj^_(RFs(DS1hGf%$3VP>bJJfey_T?C00nKY#Vfos z`>`Ol)4-Q2tBl^$DIAJ+f_@{FS$_v-GvoIGxP^ODA|fKk40cAQUTL0=)~;Dz+Vn!! zOwE&h?$$JVWkx46Xx&AhIh!x_bcH|*_q7b?<#I7PAk#pZ4OP{#*(pp(UiAHD~C zzZmd?EOk;q*z{Af@&X@R)?M#=hC0P6fsh!YSoW%AUb4QjI|c~;s39781+M;ZQNK}c zPiGtTQJ%xvzS<@^H*M;yQA9BWO@sQE@MYeacAjFR$YWKa@t@jC7^3bS*U7apM7#7a z2w98d`r7Eq242W36Euhd3@N2$28Cfxh@N{X(k8!hBy=r1SIwj6o@8;JXGq=V-L&{~ zE3-nWv^B*WH{zqMk!X%9>97G#%Eqbh`>#@2koy);0EjqeDAW{FF1kGD^^ zr2m+-0#=FAoyFE-#WGGhBewbi_H4zuSC)C$wBsp3Yupf!USgHdnkjCpUSt2COFHu* zDxuTLV71J_-DcO@_^Jakn)332;L)SW{jyV*;2Mr*wO8d}@C_$-{r`Yx!7Q1}&Cs{cI} z7TdnG`Wr!Gyj7)>Yw#SQNnvhzXY&k%9?axpVUH<^O=?H@19kihj7~vELA;cG{cQRV zdl*6W%|b$ZHad!9wT!b!SL0B}gG9TFPx;mGp(RYfTz;a>JL9IQp^Za#*soYgXcV*e zQ2jCsB&~~AE>XDu9vBD@FS5bi?e+w(!Ik3RSeHf`PK%YaAL9W)hCuyOr6%&gN9m^3 zEc*|Gl&0Hsbqe&SLtKhaT4H_q=ja37DSCTZvEzjkW5*5XH@@lB;I_)$DRm3({I)+N$fcPyZ5V3AJtkc` zvh*Ro&b9MHK;0TUY}mm!4t-zg)LT8yEEG~hNPV;D!SYhqSif;NfZdcdg{T;9es|AQ z`w#WU7B3h^krL+$Z}oS9qOEW!=U2`HPD5j_pHdm5w3zpQl-7zhKO66-JN!Ewto{Z2-)OJ}<+V zY1%<@{*s;$696;Qf+FW_bh%}DBz9Whuv(5rLE%N}unYT+N4cMS$D4N*{9q^wbrY95 zlwYY5<2&}&JlgW-_vp#cxLQvOku}-RMM?GjL~VcHpf#x4*kwFRh<4@RgJ|&F#x2`n z*^<%u$eWRR-tpX@a~6py^*<&Z$;T|jAyaARwyY6}!GAVsQ&}~Ke$h5Fw*8yCqq8M0 z3q{6T(?shoEZDF>$RS*MQcOs?lWBEdT5M*ko_{(Q26$e0%L@6}c?wv5kq0Ym54tY$ z^f6Yfd?6IWSySp4I1|F@AxqkcI#{OCL8f&aqjJ+TNR+3S2-$g?$Oq6moA!?fAMJvEbpL!M?nD7Ol(N6 zef}KADZp%bifO|`HLxFaOt?0*@Fczq2JAd#vrH&F3Fk=*2_g!#J==KmH71?O(iW%Z zEHe7S2Rp{gBMa3UPygB%Ih+tVej;coh4y~)Obp%^&23#1 zEAKTZ;ix+9+*n-#N=)Ybs?SwfMjATg>B)S)W*etVhhT8qhRM|B_2k)|c()K~NyH7s z34gmQQP*N$%((18NOOUSYz+w|=^-KhZ}6RW@mDuT@W^FuD}%pM@eChfahe|ku-Hb;>v zg+OHy*&|$V156ftAo8`Bhn!0=An0(pPHF;+BtwTfPGP=ic8n8R)?j=hM=lS7NyG_z z1+F_POC21#SVvp;*!RB;0`Rnwf6g6Ut<4geA0QvGxHQ~UGkny*?iTN)Bw{X~!kR&qz#MYrmoHhAk>Qb|Nzllx*LdjKd4~ z!00g6@6x|AAq+<_WXqW946%wCCW01v?&O?4#iw4``7~HJL9u5Eo#U9*=SX6e<@kfl zG3P#xh4y9kB!GisbvZpxTVBRt=~i5Ixzp+&7>%RyDe0sE;eL<{LDyQV^7P3$zwpLKpir6HYEE7f_{#HowP9TZgCCS&d+QeslW)C8 zLZ-EpG>#jkH!R6=c!KjVyxWtq9{Ixwg}H7glEDDIMun0#Nk#1Mf{GTF)^PWH<+nN3C4cvB|54 zggqnL4~egUETKv!EcB50g+##!@;g*VP zh}h`HbKOZ~&R=2E(|Da21T-lf)2xK=ePlZO(fjdRR73VV%s^!nW74bUf+a*Ig8yHe z6Suk92Uc%4=eV!GY<)V({G0yEILV=KE{{PZG>?^Jc?Ts|0sbNp5}SXu^%S+dR25n6 zBUtG(s5?6sjq5@DD(b$VVQ~Ti!6-BDRH_PYqH5XC}Z0qdRx_g@ISQD zE&d?FxyIu@+&9kkRn(S>R%zw|xjqvU@D7lO*_Wvr3I9%i3fRvz%C*PQ{P24|e8~0g z!P@&jL4V-F_LeZY2gfEvku6rK>nvLF2Fzsz5F4xTcOnbpFRiq3 zj6lcehw_-cg z@vB(e=IWumxP|Is>Fv$#fYMQ*7|Fbw1v4Hxz4|3ZOjdTHcZNWGk;R*{-;wk3>%}Dk z5h3YU@0_y> zgOnYHgI!}x7%>^$QlBphEsS4uF@|2vS5D6o`05B5ec%|!sP}i5*`y52WXFuQI=#wE z9vC-qLF2G2;R~Lj)4_l_NVHF%`yJ~Sf*#xfFB!_Q0VAi%&z}qT1@g8~E1Ou4381^{aaJoQ5*vQ?1Z>o5;L zqZ5y=Z=U5Fx>jG5p4qU3jC*Nf`#CkIXC_v#e7u6c>C;cUFt(fvLp%!GF814^ZTJ8R zbtN#|yq|nz;RfU)svJdAUkf-^^5bQVuD0S_e2%#Ew(<@NVSMC&3Nq>@hkGben!wJ> zS?8s+#j*`Wz67KxvFBcZbuiqE0zgGW+>|@npm%wQmDph5Jrz>dIrjH=C;I|5ZTAa2tuwyavY17NH=~!C#--l79)x2k{ zB|2dG3cjJ_BjDOe_E@4=-O(qK$B3ag;-JS5>evTQkn%|ES?$<`XTVA?vGe)ZRHQdO z*heR8^z7J9>4}pkc6rTw?KSuxOBA;)zCo4m!$PI{ykj^d*gNE;scC*=JXuUA;P=$tWoPkX$GHh>p~qOnip=F9%7TvMP{C<@#C|2Isf$luK$?-f(f}DwA5!KAx1hNY#d!=hR~9W+S-R0a$@i{p`LTa)7mwzs-(Bc8pVb6cl`01oarr4if)v z;m|O;@H@ZRc%!%5buPRj-&YIgQlFi;lMP_=TU*z;S=JC-mAof$RKIa$nm4_s9}e8j zJ4T9hEmhBW_yrPy-hgCFY7~;=l!#fVkeY*=&GBb8VZ4ibz4CaXy%(wgBlDa+I+4*t4@Kd znkg=Uk}H1hw|{j2DbIo@X(au!Ajk8WIX%G2`q_L6%D&avdjy&QyaJoglBN&AFbByY zqZ?@42iz#2$u|9-pnI*|-&%Orbld?LbV=gxt=jl8OORO;XS(lys*?@pigp?cne{u@ z!6XUnk<%e0TWKegnU9iaRE(CgtcJ{mzHWh&TM>6Yu z6P@r)r#=tt4qW~F$Ve12zsNa=eYK0d2vG-L6O;+b4`&WG~U6K=noH>klA*yg?{4;z%s)4vYgEWQP6FOHb){`-%QUaUH-8 zV*-a^LPOysuj|S(^?J} zNNA50Uff;O*iA+mKPf$Dvfay;sV*k~Ci1Js!;Onz6D{pb!9p1VB5i!V~7lqhOn zs0=FPB?0Zu{n4!^=8hK!9)S+NaDY~&JfRqls2;J($I2!8Sk#Wl@_PntPMB844l>H6 zW+ldC(KWpD)L?jzG@#j9)Msj&8;ZIlxoo%DrivK74C=!|jLIm|*7|9+QuV-d-ym7| z6~nxlj1kMM9I8tAb9^vm^bb@i24cR4Bj4}mJhfHOt`4eNg~)IG1v zlwa!lBt(~#UtLiTT}!XJnSXVl^uC8M5Mfo_oP^1oN?c4 za|EQ_c;3=(aXL_5k>x6l)W^#cAk-npcet*=P4V)hH0+`(X7;V;3Qm2w>W%bF0(KWg zaJOt*wzUxegRPndJoN){t`U#8T|Hp@+4Ui$UjKq#GIrN3Q^QjWPfQ@4nyl1M8$zr! zm9G0P-AHQ=7R2W0UL{?7%_FhpvE{6{0f2B$K?3XFPLo7fp6iJc+IYN`z5Sbb$1>+@ zmXqHLU$y~2E~;%1R-9g`$~I`XaAa)u5GI%!{dmCR0uHFj$vK<^!{Y`4y8@^7I_cpQ z-Yp}!PvY~5_Q23Qj%EckimPXgR`~W`z4tH%ThnPEu>GH1;^Mt>j&#bK0mRmXuR}6w z)o%SVp5w~h<<@`ub9oJyC`nQb_mDDFhDGeCTcG=;LqB6OzedB58dO*WM?zbSz#ydN zC+27CoUA1eGGD%8m?tA~s%!b&=zz_6G15+PB0IzaVc7oAw<#$c+st8U^|rz$tcL0H zKUD*fT*WIe-JV8R;XiJQ=gR z#G?tdRZvP6PfvEn14?46j408 z$@*;(P*?3gEbk^fj?+7S3HydC1^J;|W;W7f+Vkmb64$j%7BAxdC59JyOjNQI_h0Cc z*zkB>W;b__Z+ByY4%-7d=K$n*&}GBE)L-UxG>Xy@VjoOBW_ZishW%v9o5;+*=f_QM zgmlPC&968Iws7#f%fdXOyRqjG_#Gj9 zPJ>|CudIW~q5II=DjQ( zl9fx{%T%-6{KB-RX3@bym6qIRkT#|?H7kv-OatG6$Urc}8~~QlUIz$UVKh@r0g$ll zZ=RO8E~>h??5_+gmH;Cef$(Y~@(LHV-g%rO?XVCU^_k;Cq>nbwhgbOj1hjvpBqNKm z9?*(M*J{)aCx>_OTaKnO-z>fw?Us<|GR2YUwC7fTDbc#1*F_J9juLmK& zD#Zuzp3*+aSSGW21jbjO$U+1et~Z(3;~a|kLzcRG(rtJwOkdb#!P);m(a!(X_1$4j zU*G?+w$fG#ergpg0&M{)MTSsB2oPJV7!YVf1x#2L1lck|*uh$*3W6pGG6GtG7$Jle zAYo}$G>ou9m|^cg0$~P1_+FG@f6w!K|0D9~9cQ1{Irm;|-T$HwZ*dm{6L;)Sc=!kH zoh=7u7RnO1Yi>{t3=7+gg?|9^zv%Kn=cOE46ZD1A?WRKUSzokh(A=xRVK~U_E2&19 z=(~40f2O>bkI!0I(CZ6_Z0#M7H&8NC)S$-mBkBe*WPvzOdLV!Eb-33_eswgUd-*n5Z$L z7XT?{&u=F1$LE{gE@nOY7~caPCJxJNIhpU&4SJu9p6*oz{SW2E0H3~<6$`@e2K!jh zqzbWWxRCY_ki4t;QpnAuZzxfTaH$=d3om6oE4^^ru+fK9pA4T$EcxBH-c_s&zj;AZ z1*RB=S6w%;e!_A3do_{3j2$}9aM9%mKvV)}IEh*U%l% zx%Km&N0x^=7L2S@GJuLmX!f7Lk85pZMy;+omvUY~b(gcY}FV6uyos&Xz!z zTenMOx~CYI^T%+oO3{+`ys6?1!@-=gbb8MCnPt9azZ~Zyqt;E?me~Z|4AtqMTs@p5 zjQybL0CMj?iEZd_8m?v`2gN_0ko@aftXZ0+U&{*Ye6UAQy;jkFokPLFd6VzDl~Dh9 z&7S(4e)dw(FU%CJ&A80SBo~>Wt8?-Yet!Q=KheMai6^NUHV-kLHj9=`tQ3_lEvagn z7QWKDC>v)id?eLW+%O^?3G-NLo-H>v64f3ERXXAElioZ?3&|6Q2U_gAFSmMuq-E@~ zoN^>+MA#A)zxX4A+r0n~$aBVE{`T8P;J2!vo4o0SkO`u5_(g|Dbrz=JDvfkd&2zfP z*!Zm#{{$8PBBO}C{XS}k9U2niLj|FJYth9VN(;NC9uz2Ca zG8ZJLHm~kl8~myj5;)%G^gFrq{v-zGY4w{yWzsigu<7qPj=oN9;m9CKh1Wrtpr12n zBb)x^P1uB2{5WVHzkzuxIut<0w9(>TUcPgfX;p+dYYIt7qDi0Chgi6^3`sCU{$oe+ z{|#G{x?F+3R;dG_`XgHUW}l`zX}nmc!V&bwWsr0{tiPS-2j}$#cm(ZNc!72Twg5u4 zdAjNbzX`&t`?Sdp88Uqc4nSNb`Of0VvaE2hakoEw{}b<6O8v(U{VsEX7wh|02@l%P z9))fuCcQ4EQvG9~F;PR+BPDd{HM6}+(Wx{Kb2&&-+xi%ISqCyu*iZ=tj^QKXSJRzP za0!ZOpa*y)tl1uyKd@~vz@MrgT)GK(uTVZ5yQXsDOMQ#Yw)g0UUmVnZ>)PPL6 zE^v_F;wc><-~R`?JMV=Lj(vjsy!U|oJt&^7K#1Pg(ca#AX=**XV#5y}`%j=}ExKCu zCIJ-krJrsdS0G-Zfd`AuWYB`NK`t~KduK9*t8!>lcKpp^W%@uXwGm>>d|3YAya zcRJwE76D?{jH3?s-H$=R=#Y@F%<16lOU@r*YeQ5m2jKmUrZ-zORlqY@dw#?}^NIvK z*#4p?w+^AtZj@p8zXfMVMDnps8TVDXirie^C@aUin4?NxDF1bA&zGM*JSj7M#6arN zHTcBLj~?dNe~#W~`Sp;sjmIO6$6qn8XAxzH&3}Fl&%1B&r^g8D>u)qwezEYr`<1GV z+wp{r(b_jQV5-^>n343SbiRyfTi~FB+GHEcejqP-U{2N&h&E7J+3(+7CwN- z*_)^=-e-RTi6}&HUAg;Yb>yILIz%DdPgj1{qmj{jCGo8c74lZ;FxuLE`#Q7LhBIwt zN9`W=Ew&=2Ts?(1luc3kWH*)e@-N*xzaY%^SebrDTH}%kuNb{(%mHUAvC)os1 zHT%R%XM?Kb65k0d$c=39g*-i!C*u$q>b#PeDO$aVYoJ$wQhlziM(t|@vhnUa zh2Bo39>Lm$RTaS+(>=l}xp;C-fpUjRs4XrA6+<=z`!~G)!e2bvlTk`q8%)FZ-W!Z; zT<=opI?+c6*$~>=yAO;WpUPSmu)o+l@GBPrF`>9F(Ai&Tr%&0j(?x|~@=NWfkLG2q zD=87=P^MdqC;HlH*}N|hM_>0Jcpm>`zRemclS34b{oAT!wIQ;zzvRs+HIw~&IIc59 zIHI4hFvZaey~0gue_R>iN?X2ffl?KZcB&jqLv~1}TBJFhw6QLw@+L6ZW7pYVKq9Uq zRFSIBo1cx|9Zq(H^%?HPjSQ|^hvOsYXbH)3q_wzUp$;QYAJ2J7c6q<154f?95m}KC z>3dw$+=@b26|h7|oCJ!fS5kF}R9mYp^egV#iAd8eCJ~7xQd<8e8s!c0&B=mu-1 z-w+42T!qA%H;)67yK}{Bb`_DU*ZtEu^BJ!oI8t-R`L*e60MAEHdgC0)C@y!JdY_z+zR#zwex;SWX zv?t#vRP>ggoJjHGw3=q%S#odaiej4Ou??YUVRa*Q+Rj(L-LIC{KZ`-cy(D~=z2t_{ zhs-`iaDTZI-u<(SOvd!0_%hDPSNb! zDW|!sM951vGC90l1DPdGldi-S zC%&1YnbzG(Ng5Fv@Iqmp{~&mM z%U zi@=1$##=!iKHl{sTyq8#i8*~{-{6+kX?c~Pw?w?a(D=uyKr5Uv+;?T#&fdb&8b|Ts z1m8JXD&@Q=*AvF652r5osL-CG>!T|kDZ?sy)nR&l1W{G1dW`|l8v^->&5b#YgIIM& z4WN!)T{W=8M)@oT`?KdVp{w`jr?_}g8v9$xGGuW@Imh7T=zUhi)1)vjVh7DDYMl<# z`*fQ@29AiWA1xW1ywV`*U&8sog{5p`tAB6boFq}nN_J%5i8#OYVtry#*|8%Y4!Uuk zf;j}Y2K7UgoMKA#m3*|-{$W(v`V4E8KNL9|_X7huP9*j<)Au@e8qeI}X3$D{p$9tD z|D8hAPv08mmL5G-FnpE!)vcZojNmlRoyv5MQu>x5p`OK2sztmjq zpy!!48?7UR1w_DP* z@69JD$Hi$!cVW1KVr;lS&aytEn}j;d=TK{|?9F}i-nvC;FuK_qMrxVx0BZ|h-a`C( zi%5);K}i^^aJ<;@+4BcgM#;dIGmkh|>3MY|G|qI*o#!5iejGg6&aE}oKWY}>$o*>I z_5&RDR1IbdP)xh>q;E!V_vA<)TYgqq-m)=M_OGpg$L7y%NOd5uySZxYpBBRa3$s#H zAy4^SfHL7*>2 z_eL&}p#z^q_#V*IE7RnKw`8j7FYNf7mzPItX1DSo*&h-v^y?&#)GF&|U`KPcjv9mp z3>6lZ3+l4+FWtU{qx-8cUwW2BW{pf}mF5qSo_gWz9X#{%2~4d7j4BL2l8>yHSIX{N zZ0?+n30&r=qHLocTclAUeb3ePPqz!`sYXxGO$AR0g2%v3Dpy$&zUR5@&*iANyonc+ zU%$F{Qe(za(9QneJ&NI{?#o-xk=hyLS8gpZwKJq$U2EbfN>|uvXYY7_B)u4&-&+4l zBqpUbvF9eGhix6P9!W_iE%Y13Q|ECT7p=wLsbGIA7S*sRPOB3y5-K-Z4yjK#76%(C zY2{~E=dpC|j|kO+eN8AMe9dXXsx(;_a*MN)blWN`(R@=M+Er!P`87uGOz6MYzV6Wx zt|A2SY*_#|>&wb~A+o_~ zC!N-MJ&#JQz7DLlIvP3i^B>O1$2=Q(Lz%zk#nF_p2y1@C&`;$KjsI?`koX6!>@CsF zt<%k<&GbGQXV?6OpMg6PTwhunyOBd*4poydCX0rv9ALCK@O)q;o)y{SX}F_ib@rYP zn%NDia18?-5~^~=!NMUqb&)z!i8F$#Sy@e`vgeE*TWMXea_BYu$hp&J%2I4^5mgAB zm+OPb{W6NxIu#f#s^;ZWcY#Ay4z=M*?PJ;=+14eys@r#7$o)njeZSqhNzL zEy>0vhcS`3d8_eTQBn@~EE%Ll;?A;2CEm7SG0I9aABZ64vX+t3yT5 z(f#~awzj1>>t9Wp>5%BG9Lw?;jRidYib(tgtmIyAC;hL-R4DMIrp?O=7X-vi#lLzM zVe@A`F=n{8CEgVEZ}h1l1T z6+DHWqM3`?EEF!ijV^HtU&ko=Q6Od?g1qz{S(%{f9RVIYy@;1%mAR2B9Kj%Cv?G9o zAdt4r5>iQtJzgYCyJJ<`w!zhYTN$?%axIkQmSzUNC^X#&qa^ap>lWdfB6UCie>&>* zjViI8ez8V26blZcgFWIf*KHsfhpY4h?xy0MwJIdzH?mox(_q7__7RuZHZ9Sukz0=3 z!?&7%R9V9_IP@DAU++v>Vn4DqsbqXEML|BzfIn4aUz(jbP8_>NUYvU+1>1 zuo>9YR43pg(vPSJTZEIOe(X9B~+M+ zuPjANSnNnzNcy(bhTQ57!3^2r1b8wun&>?_5->hw3iEG!!TuKV(z_BGipEKo@E{p? zR%>K(oECaF_wePd`pzUqM=}mm!gC&Fja;{^liv=0Al0m^AZ2?0UG=ye2F_uZS{_xS zR?^V>XA?z_{ZBuN7DM{dmz)C%Sife{62tjD%vN zDxtsO1@mN7wDrZqO|Vkm@jtkd(ckI^3tx@3>PkuM9g?f9!1$paGQ&|Z+TL|D@JI*l z=ay|w@_+TXZ=1}4pdICjexq@LAI1&A6eW+`Vrx8C`<^!U{JOj;${lz&M13jyi{~l7 z_ot5JC{xj&y?k=4?7^$k_BGnu0o*nAPMslIt3ca$aRWrCX++meXoO6P;OtW0JBe#_( z=kNHRk~PvQcdn;WBChr~Vml50x{UC(n&KjDB~^B0Ab0n^$`ze4AgZRdluB_Ax3yJ6 zg;s=?p0#b4)|&2FybdgYGU>`c=#Q=iA5UhY@Unlqyk?D*;$;6uedeV7sVzG%bmQMQ z{ee!~G5}GqMsBBl&pq{n8Lx8E+k^z%DhE)cNxkYq13!~a1L>uHP%TLCg5Vh~^p8(L zJtr&w@aJ1#S@au&1^)GDj^*Tx59h?AB~@B3JB+v;R7STq?ld7A8C=PO&RLn&X&sv^ ziQh97Ba?%P48(QQKL$>tGD46BtrEe3>Bw6h_;-O-MvZq40nC0cy?Y1dZ(OTdt-fj1 zD`K#J+G3!Q!4vY9k%m07V!fVps44N_mKsyp7?mS_@*ls<%b6dOjoE8=$gs+AFp8=@ z>j)B>p^C#xGpnb$2X39E8Ivep4lOa;xgA9E(;Zmy+UH}-ymb1kz(>n*svVO&QpYyd zPBasT`16^|WlYFGah)soBj-;N1@mypSB2ks2B5&7k?2ghzql->B9q@QB<-v;{fKYZ z_6Y#u;3kR?enhwouP#IHmrTjFteaO%?V}OVpF$XI)w~Bz6+r=w#Nn`CWTmo~3H!tS zs;kiZZuku+ap{ECo*uf(p>8KL8g*&Pfe;rl@HmoRRfFEX>A^i_f6=yltI7832=%Q6 z8^;VNV4@g7?*29?wg~+RB;m+Tyz~5X5)FO1pH+`?*FFkD^vnwZaBh6hp$0$O_x)taG@MoH~J7;-Op0MA?wOU08mc(hRJ~)3ly#T`>s@fbEG0- z=t{P&*c#_v>U;eKqQ64Bin|I_C8F;WRQ@{8ak3W}RJ+jZ;OfYzehUo9a|(QV102e% z!@^OR^vi4JYGq5Fe6}NT{`$*ho)K&NBye=Q$4=G@k;J_Y$8ZdR2I&W}gZpf}BF}IY zWDmqxY9@%*+5ZDrqT}R+5?@I7QxYuMwFoV7V`eZ?-(oYsegG`AhSl|Lt$|pYd+aoN z-SDi0`a2-RHOfuioR8M?aw0Z{7MT5BoITHFHls@rnxc&jik@9ROXW zxnZQ*K|76jWdl3BgqcnnlAaqmORQzY8q{sn&?9Xn^>%6ou5jmCHL@z61H%#b5%z1 zUFLiMQr&5X8M06r^#RgjuV-L`OUYs$yHcH~W9>z-U__A7Ic?mAB+D_V(iL&Dv3{cw z?TN4A5xzo&Dhb8(U7vkg)fansxnDF0)|9`Aq?(<}L1B#YlUWJLt+bu62jZT#6B5{c zYgI8spHEH-tGS26Cc2iOrSk&jsn$;AA^iMx@)^hqVi*PPS!96Zq1iT`m=uEun2*7zlY1++c#DV5 zHyimiLM?p6cn)u*G*xsC=U(RfXL}Y)l(i{0ULz~1UeCDF5?v7pMa6J#0}JVHt>ffH zm`v13b4=miU2;3zkskidyR0kxnG`3mZ4iLs8<``(0q^@otx7PaO!1Kaci@>?*#lPb zi37`LZ(K9DkCK5=y~M}Ux5;C9X;(j9PER(4zYYb-)x0h|N|Rwg4u4c7paAD04&r_e zsje*4I9OwCCVat`H!}E;K18?bBtvV@6b+U6Dx^C*F1|s5?mqLv^-TbGtk_3Xlf!Wu5Uw6^Jn-40=p!D@>)2(F)KE?OaA7u0a`nQf)pPaE$A1Hs(dv zB{;g52I=&pz7{V08_BH@Bn~=Esx6)f|W1iYw+MPHDlewZ+^$i^cKue#SJyXM$Kg{OpM%K@< zH6Rh8!vKDaXEA~9?X$3me}Ejb-Vt<4HZu|FX3mJ9uv7G&C>6(4FAYi*hc6?zV^L-P z^QAIq!$m6;M)IB`X;E%`d1m!0_rSikErf=fTiJ!M5FcmwC{ZyzZ|U>A^q%73`wu3z zTzItZZmf`JxEXF>m#VVIlCA5q$zB7~x!96|g$XpxZ@G}I0*SbiM(^pfvF>NlpVTDc zRjM!@tp*RlOTk(a=95RKS$(~Ta|-qqzB7CG#dXVaEu#vQwR|}zPDh1b4x2)gm1OPH zO1;AaH5MD;Y}k_Ss4HS4?^szotB0L$ysU}M+`=WazuzgSJ^ukc_qwM8M(0gfu@d!F z(0OR-^h0`OzNf0i^vw*>hw#yJTm3#lCw>zXZ*ey%2l1*8S!o5~!nr-8GP;Zegc%*Z z&%7AJr%h&n=ro_`;Lj1(n}<5i95)W*JyBX_HcT6}(zhc8=I&jd1$6|hu#|XrK`@rO zDs5Jj4<`SKf5|RvL?W=C=dx*^rfTy$gD+jmUqfLQ(o!pZ{KKZkk(k+EN)zHR34Lj< zfn416-?&)&&N42)gt;XckO>T78{U9Cw+&wDBg7mAsxuPcFrSVSn8V{segD)QsJ$7h z*yVdv>Jc_EyU&$-D~dHa8qfYB!T_3t7oFqYxsIrl_UkpGQPJBypQmd;VRUPf$f5g@ z{HSYDVdG8l`35u;Zts!tKl96SQ*%1JxAoUj>JI>sVDnNhi)HiW{ zoB#*qqZ6mk84^}=fD7IF*7JADDGcU=0P`^}&x_OQE{*`=K%vGDsLSzv!^08Sf6#9RzE|a* z&$p{|A6G>tZ%?_9Yq^u*4J;VxMAr9;7MPjFwB9az&nN@6SaRBc`brRGp}OtV(bHH% z@q__ITMF~Fr>`I3IbPdP;D!b3o{^y_JR?L%%?KmxBr;t^K~1S8KAY zlfy?8p%01$+*>aY9jt6TtZk>s;*ryXUD4?(_LwjAvr>gQTGyyD z&T|!R)vd#YgEuD$WmKs>1EeE85i|SEiSzDc=&FT2BB-U~H=Zc>chg;> zkMdn6HGOd8TlZK)J+QtTtg#l!X_#$M!jC2q{%m)l9#mQqJ0m zmhMI9Gq9<|fN<_U%ikI)rIxbVUg78wcckggph`Q&Q2S#k;LiGh7-k~h3W`0aybyt2 zV9eGFp4IODe3rCH<#?ntHGa>)1=2zC{#69HVc+n&b@9ryX%vh>1R9M)3U2M!%8UT8 z*4FsZQM(ti-(oCiya7r2j9sVxqTs%zkiMx?lA&|IFPf?GW#uRBX$5{$98kMF6{tyH z=yq2g{R9x`H;4RvL#vHEjyW|6+hgc*FVU3~KoS4`!5q6;8^p&UsD0@R)p+^!7l^5T zvpVyku#YU^!qbQ-&&#VhFh7Tno~P)uIZN0FENln;i8QB1+ZYY!ern12gyVH`Nhbii znf~rOYY|Vr6c{l7UJSNyFv#heiCtyuPTjQFuOqGb_MpT)LogJir>+*mc|M%i&&tYj zs@*P!jXUW}Nobb?w1X_S%Hpy2q-VtB_=TR*+bBf8`9_UFA3f+51%lr#Vx5NhzuCUR zXy7x4X3i41iq)Yaysj)$%DddY5=08^5v@%7jq)n2N&y>=PrZY91K~_RLaU!=quk+T z3vjiP1kru^j!*J~QMx{my`(*Y34}wjaMS7(fFSApcN+G=PHc!VIhd%cK>JMr42*R{ zI9)Usd*NP^E3S@NtBfjYxQ5nmR!cTFvvM*g5DjXWNiFvSOo3GO4;e#Y_i<@}`w!>O z)iE-?L7VIQuUX4%$4op**u?KhL5?yEvEC+onG1q>=A{aoL3O=@QWo zbgR)llx()57pEm=>~Ib-BO|L+YH-1a9x;?nwe|JmoN!ifs1sb-#PBrcH#@iJ_&nuTna%iJS_F2K*eTaHk;y=7;)7w*jnYu-O-p(UQG}_rA)}`PFP)c(bY^>hX>re(rf? zyEz4Nl_yeniX5B}w8n<(X=#%BlSU{i1~q8g%v`t$E)iwksF)epH`gN_HL{*i8vl{= z;yaeHkys+y6!wD}OdnP?58}d8#hbP0lZ=E?o~-u%Y|M14aJ@{kbeE=gdpX-TY+U8d zzUg02QMOKi;j%#F>3`{xX8%LnxJsxmA|sPkj|)n@neS^37k|fyF;l}3rtga9l-Byz zok5v&)ryS%2YsgI2Py_wb7rL>A}afM2lkI9p?)0$wHQ59JGk%C_zYa{0LIODre!|B0@v@i zb40tKdj~0nto8%XA+6dLIz5+7@5qxk*VH^xb&8=vs-mc=Ia!-)nh8o$?SDsTnoV^m z8(?of8}|~NhAZSznTd%K=4#Tck+$rlb*1s6{n!Z?ewxGM!;tg11v9^*lK2T!6%;9R zZRz+0ex(mU$}u<@&`+UEK(3+Rg4>tgeFJ$r9TE`9YG9bOj;#qghjYK)>|$b0%zcrq zOTX+v!#JKRA|1z^WVNF3$|?jjb%_ld#GAVtOd5-XiV4T#SYf9ojnY$JR*eRP3|226 zPru%O2$Jrva^*V`Sr@qC2R$hLYrzj#PGmJc=o2^{uel6LAUjcF?tQt)tuP)e>qyOX z_qb~o06yczzgq&6v66E`F?8bz+5A+j3-7Zvh*NVf%4ms3_Z&mD zCmY)l3g4?qCoPPHT^Vt951qW;;y5;bes@wo}}W*E7kF=l=~p{)kTa+ z18iX0#cJD5J5xU-(3$*1dsO2&LViueW<}N$jGa=!ACsspv#dU$w;?`$RQwB$rW~l3 zqQS67j3L5{;VJ5Bfz(8abB0wCuwu7$d*FTj4}ZPIUC7nlI2;0zEJJt^uFAK(;a!z~ zUWWo5J&GsMs#dHKTUdk zJk~>6UZ|!1MWl?yv$u0r$nydJ-(&v2WU5Lu(_?PekHFPooV z>}fgzi(2>>Ya#k-f0vS;6s? zPahybcT01VryAcE^s;V!lE*&WWa5-7_fM1HjiF+xnlkjxu@dcvJ1GM7Y?QyN;%?y?#VO_tpmH2E=y{}^zeFf{g`GENg0%e=$76>Pp z*V)4r&Xbmx!$x0nna~sHStUNU1ikZWpmyhOgaZESsCT!hsIdDIEE$x*P&UnTEWxj4 zekRn0EZ38I^J*y|)Cw|7v7j_8p9|NG9fw`RzH2&i-d>4w$lcQIR0aIb#*&h^#?yfe zU;7Xn`~PEy+rvO?U>_3m7c&5i>PH+=#Wkp;q4U?lcRqx0Kv$Bkk5n=o7?OcJA=4?cqrvVrpGmXG1oP;4EtN_pKW$39Y zyi<83X{(J27@PM0C~xvcitCz(2}X_DkZnC~*0@)1^hK7wE&fJ!kQ5j$DH$pqpTyiN zt)aynt>(O8x^6W<0d8x5coy)CYn1nxlOJ-Wd%q{c3umOtcmfZ7lw)Ft16>h$RHJ)f wX*#y%?xkQ^x6>bnyRIhD*y}r6yTRLl^a{e^XMZ&+-~1)~tmQBHKRf^Vf5^5s*8l(j literal 0 HcmV?d00001 From a1f539ce6ee56880af35d96a4c7908046de6b943 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 26 May 2021 18:20:50 +0800 Subject: [PATCH 045/192] add Aalborg University to readme.md, reduce image size --- README.md | 1 + .../img/companies/aalborg_university.png | Bin 554010 -> 198345 bytes 2 files changed, 1 insertion(+) diff --git a/README.md b/README.md index 5c6686628de..c034ec83e61 100644 --- a/README.md +++ b/README.md @@ -564,6 +564,7 @@ Here is a list of community-contributed IDE plug-ins that integrate with OpenAPI ## [4 - Companies/Projects using OpenAPI Generator](#table-of-contents) Here are some companies/projects (alphabetical order) using OpenAPI Generator in production. To add your company/project to the list, please visit [README.md](README.md) and click on the icon to edit the page. +- [Aalborg University](https://www.aau.dk) - [Adaptant Solutions AG](https://www.adaptant.io/) - [adesso SE](https://www.adesso.de/) - [Agoda](https://www.agoda.com/) diff --git a/website/static/img/companies/aalborg_university.png b/website/static/img/companies/aalborg_university.png index 1fa4fbe5777aa4a441c07bacd8787896ae140c5b..89282d904676005c74069e5d0e8350fe22e91b93 100644 GIT binary patch literal 198345 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¦q^9G&?{M9J7<{{Cw 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�(uRegao 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 z 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 z�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
    &cov(2rvIjM1&CW#TYP0j%-%FM~ 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 OJeq2{sudth`2PWfSs|7H literal 554010 zcmZ^L2{@E%|G$p6yyvJKr=mj68C$YdvTt=FA(TCPcE*x*Fb3rmQ5;KTr!3i*EDdH5 zvhTaW*v4+gK4xtHXUgd5_rKn`uF~ka@B6!czS}+X>Y~ezxmd^Jr7zRa{7IuEe@DwRVR;PtugMkyyVgnA z)79nl&<%R3dHp`$6Xn;_|5_yssRao+-;Nnl(-QMI?HE_qTi^RYs<&jpQaOG+BEyzP zt*4pO-P~S`+06X*f8$L9M}3rD8<__nbN_jI{i3-_rGHnx2XT*FQ{w*W_lR5>YoUU{ zb2obMUVa|;q$M{Fv;PB73%vZt6A|70a~-+%9a#<%nMyL1(e@AG--rwkMZF%-A4uqn?6tbdbxw&p;z5QLMAhs4z;;oF!xd=! zaN~e_9(*%g(NX+nvYhbulfM1Es{0mAcl4g0*0OF$o4MrD>;5PKB{n|Zc#WkH4VOC+ z^y^yzPW0{a5rGlQd?LG;K17x!Hs$mc@y~>e>SZ`9Xg_|1v-KywzfTaYq+1eWAMZJR zN{F}A*FXuGn_;XUSrn0rhmYBMT;)y9v6V~i8I}3Cg%9|o?#E4sPgsOs1aD^bW3yns ze7zge&UlTV2O)*kQ7(!G7^#uex9o^TG)wgW@lWs` zO+WT{Iq85Av(B%|h^o5Q%ok}mO3dI&QC-YbagfzhcAc(Wi^s3Pe+Mn*zje$9r^H6_ zpwrb}KI5@I@`!%iAh){;Ha@yS!`08g#e8IYKXRAon@x}btuFjs{P!aj@f$1wyE@&^B%UXpqmVL`)Fv85mv>)6;B?o@RV`(MPOe~KLt@War?;L3-22`Hw1^j+VCxjR^RW9Gt>uYTDVo|l7Udia)4Ht z{`K_Fv)|wAP2@vgHXcj`wpwhkYb-JaPDZE2Cy5slTM=QP75*=3js^A1d;7Yf?3Pnx zu>e50S<Bj4i2UC`I%_KGPhALL#tYykF@k{*B!rO)AxpT;N+fu?XKfH)D~D#AGEN< z!spuzZCelL;b1-Ra~@j->hf5HYvZQymafM7dvtkMUfif`(P6aEHVSM;On=Z#eP_Yn zIHA;`@uaH=A-5D=L=d3wvX5xyjO6u_6cHAQWXRg#2{&Z)aBcFkXVIuesL1eIN$*a<#pej$P^?ggF=~!O3t*loJFpALTXgE6Ex~R7SYyMh? zHeS=pZZR`X<1lw%uX(hqMGpQQH?#B4n0!Xu%5hb&ZROKkZ|SR&Zob5`=dUk&y@(La zo>ct;yuar$+_c3D3y!;Y1gCBzvbZk(>3zDK5_4W?vasu2KI3v$h9!_0)Vwo&&WqC%=!%v`uvaqG>^ZD^k9a#bRV0Yo*^ zwPV5eI(ja3unU$NCtElG+jezxvS()zj8Gm{glQPo_cP%RXkE?v3>7|}>c4RuCUruy zje zfrG<1aRwdVxSIrCwfg3Vm-C;9SuvK7M9h%ms*nWUMrU0+U#}?xhQrQLuQ_|HIfzD@ z(DWbnJKBNVqw9DlTfCmpSCv5!XuNKqA$MJOQAma~F|NKXL&?XeuZb7Orjk&+(TPQF z$CeI9_7Mp1R##S~b?nW-gZ28maCSWWG<6B^v*y*0FjXk-Fj4|<@68Dvjk5TQEfA{G zvb)qZVa<)-op^?B1g)Y;;6K(tBy1S}HZU`6^xaG;LY;J~{1&eq{OMjaoO}fw4xeTp z}T!M#($~Cy?#X>{y8)s9I-=>CVIW{nc!+J03n0 z8%I{>X{_G35LyR*UPa+J{1ke=b{t*{)nD&G!=h&D-1GP0=NMKHp9unBCNd*woxi`Y z`SsFR)yCV>X2r;g_th6HiwCx?xrt+B79~4BDe#inz~d$Kmw_c;M*7sbBq|Hea3K+e zX0t0M`(Fatm!M!fsPSPrP6P^TjNEXGBYg~M)zeQ)x#i?;pl3}u;j`W&;6u88Jr?ft z<;O(_%oE?c-R&Z^%++xF6tPyPc5?3t*7JDzf@9Y=K~2qd)WkI=I@(*#|J#IU7DEFsE|3U3*BFNg@9tCM@0rL znL&@6rtU<{LBTqMki!uB{yi_nlGY1=zew; zXX36G5A8*JneFK`PJ*7JLEkw(KgExw%>FQm6Fc~19V;v0yA&w33|1unZ^u#IRwaMw zI&tn?UD$r**`HFrkbB2I(Nz$hr|So|+lUQy>FjGW0=C4UL%qSLhbaFz-MW;N)uF*P zC~=lrpirJ%-J^Q3zoq@omz57n<2_2bGx%ouqywSE67XhByj1O)UgG16FXwrTQON1Q zvEw?VtSfDP;zWnaNlmd1cHogs=gff&`@%<1RHrGlISy2_J zv~TUe-%;KlC*?<3bf)gZ9(2IKYB1$>rslNKvEdGiXn|%j3E$U;jVFLTw?<={>g@c& z>3P`RJ62_F`8xq;CBceP38rFNVOw8ROs8MEkNs2)9nWm_PqdXBhnH5>=JHOzG?eQB zI2)o-2|L~=clkZvVVtdNXXXCQ+|7ua<4T#oG#m(~|DD-%8{j0Izie|ifwm)E-*h1G`#(n7Q9N7P_q;bcR7UI}oyQ;cT`oFg*c0|*b z&Sw4Z2W}qHO^qPyHpak2=p9E;f6MfQ8;7qn=1^c+6w3dwYUM;C?4MH6@w?yv_TgyWp1aOjOaX04}WYb0&?K`~czEoU{#tUoRp zF_pxUg!j54J-EEbqfb@#_hZ$INoCj!>?K;0;5 z+1K5r&QM)=@?uM`l8ki{3(Fjl1eSzK40Ru##rJ%=3=9MN5917lH8*ILUTTC9&uqa1 z%hga%)@!S(KfHMQ%c4A8IK7k&cn5wZszR&$Cj~GCS9u51W(1T(uN+<-b?qaUpQD@7 zyKQ$iz0LK*vDtrH|09hNe|g5hciv#GW!XTv1*=xPrIoB1!9L`5#W!A(47`I;~JDK9{b)62kM)>u=c#nyA#bbG$bAYyN>ca>k9 z4Ly2iy2pa}C-O;t027FXnus1M>ZCYXo0P%FnufMb?1Vk}xd>{_(8z?)>8B>TaZq*4 zr-^tisMqI!wz#c$2B(D-u$#*3~P3k&bJv2)|txgSf(y(LG47a0k~CtKGk zU2|Zjo4R@HqK`E*8;A)1^sh(WW%^jE%5IUJ%kqHXasT#+ms8EJA5|A-ZX4!pRaVY} zmeBBvP(|OW@36?=@y9h%H>H$U(|;<>XZ2O;8tVOrpP(~h>d3VUtNPpAwaC%k%^MXG z_vjkeW@Ol9-_3NN)ew@|eV^00@-u5`$E>+-g-P;p4SMuHpXP0zlWMvpd>6O)KR~di zc%Tf2QnFJ-CN7!mef=b9SG$ot#u}ue;o;E>b~imqD)dB`@(>ALh1|*WSIb>&w&$_) zA5V4`%zk2fYaA1jZ#edd9>l+?615~siGso2+G*x5WS{KJ%p-X!W(nWZ&GmCo1ShHf zT(wjQ4?|}|_tYXdj7pT(*FTl5_&75Qc*?5du^Xlljg>b2eeC}yglQcM03NuFz42IM z+pRx7ZzasV|M{G*T(>HBflf9Zf^^*@(0f0-j&HwX_+3M^{EXTEC@HQu$2J zExGQW8S185^PkPB^k@A(bDQ9=mfL!^_7UCto}1_3Lh%};SB7P9OI>PRP7#NHL)#H! z{+!5-j^PM0#t5ez39YcJEqV}&U6187S$MA<;i?#V#S6;(lSmpms4K1C#=+c~a<&vZ z(DuZN4)0aneonuxCo6Lua(;6o9X}^GQB=_Alq?|(bn=kw6_LVL8KG5KADCD*v)t7K zk@TUtd2(Y7ct^N@zLlWaDbRjF_}h1V-vXzKMj^p=#hyf>CIsvgfqA z3A92ZMuuy1xm9<~*-9t8qOgQw9q7K)2XiS8k701v=SQE_GgRLNVVxIM&ckc8HG$O0 zOFXz8ktz8gI<5*j%~jb!DEyU5DDbn;hH56OtdXD8#}Z~9DkAf&9Z}>;!1hhncE-xt z)fNfv31i|?Vnl;x_i~K~F#Nuo^x!k8Oyw24sZLe^v=UI`EfK;ZTHjc#cuVNO zi)aKo)Bgpv73pt&wRvl-bP?M&q@7c-SnJ9*3R`N7*emF$E8SZPFG_S;ssg)Dp+7aq zJv~haRA@y&>sArjJ$bX_1E58Nyu;E!JEcXZP{%PeDo_-3WX*GGLQ%8vQFR=nozv&- zperCA{i^3cO%*+Q*V{4=xBnp?W;k{ioYt7uQd6x7Qd=28smDXBa`ANtEV1_y{XzB` zCL@w;0?#hUR&~70hB+X@7s2q#f02rH(qWX&ctVui;#IK{vyc1nfHL3d6eN<~0(Q}VR${4L{z@)jK@_dzb5#$`z0_aAviVw!wSS8w zonUmPK^&7Vu9Fvw{;Ro{4QDLsy_Vl9WmkJ6&)9WyFv2IR6DVG@^V+Qy%Z&F?2s}t; zH1l;Sgd@zOAD(O^w&#u)uJmvUt-RMgwKAC%z;JMf84zK?VPf^nD^90n_xrpYN=T2b z`LZ+6&XM&Z4!Xun_!w9sUEvwWI~qAGQW)|w$ggtwm~(}-wSGr{Ai$fv3|EZc=8_w; zT75w=02Pm2x0@2VuTWsxdjViKt$_3hS6R$@eo-1R$~0VQxI!BA@VAr=(og zV3?zXOXvJhXu0Hha0<A@AqWUf2=jUogJZX0$=|!?3xoLDRW40t(bBP~ zGQ*((7h|Qds0dXNiE2(}ZV8@7x%Gjfn~@{FysE=7al6VbCzqsM`T>VChP8JC~r+C-ABd(U&`>(XWW$x%^!#Et6J-}&4ZPjrXtLPd zyMEjKyH3Ec=MhL6*G;G~UHp!<@izHP`)06WWbWd7vB9z!=~6!etx?IuPCoQrqikt8 zcL4$3%qt!@Gc7{$)NC2E#dNY=Cav!ym-1uLfoy{SpuLQrea?+c>3AEWxfq=`Y^Yft zW#Jm(N=_R3FdXHRk#_KCWcGvgg97vhWjNSFyb7X4+~}B=UpWjs&~oYMtPi8rNf)uM zfR&5qTQhL_LYfEA?$VXY)XjPy#fv| z*wfUIruGHMG>w#yS&@2qbllrx6%tA-X>>vpxp^3&#GLlVNXb!RwAc272*n7pyq!dZ z21Cp(Md+eMmb+kjtS4Tqug^U_>VlF6RO+g2M{ZV*=FK>Lu{6;SyzX}+w2cn0x3(E7 z<8w>*)QsFWY1PL!CIb)*porriNiDT%nm@0%q=qXF$VAK}sClRFqhHYx51e@f#81>2 zz)<;p9_kTq5l+vTuNy)4Z}YYnsK3UpH#*y&`ypk21+%WBhLXPmuI3p9x>R|+yc8Qe z7AFG4V13V-Zy{C>_5plARi{<)D)kbth=-A^KlBI2l(yfmS-Nlw&t$B8eT_ zGT`27XeKp7H!Zq!1w&%v+R6`gQO`$YBoOC6luP$MVo+;Zjb`)9jN0?AaK`~lQ{1ixr69lNLf)?>_g)J(!zmmDkIXn5vX*;V9O{ik05 z&{|y(VJUmVGyFDf0nU(+BCN5#cxy#HZ}@5RYQ-m$y=H5)$6+^G5tPicG9iABg z%q70x1qcN3?eBN;dq|r&&+0or+X!u8W5dNEZ+fZ#K42TkFuq5ZURLm6{VCR9;yfx> z^}x;3ezzbAF^qRdgn>9T^`d5}6X!)r5is36jipkf(g`ir5!lk4^-?fFdA%E5Uc+mr z+@jv`fSt5FU$#=P_*1XEb?`VEhV=KXo}A8!e@nPu?0o>mEo*-;AU4d*PT=OGTkJ_jy?3HvtQadhrvuwJz zG>ajouQJJ4W@~75AW?3Vc#|nHu8-)ZSDEpNDS;c9()(Dr>=eZe=pQ&oWCGKg%!$`= zqvDcf8$7$^ z>Zeb;z3r7TA6!+D6IpbQBs)3*@s)w;oI1nH0z{zr=j9h9DVfp*DlK;Q&_=oO~{c%e9l|=Is zSO3DuG*Rtm|BPg9;jQ=z4K#(b9@w3;x>-9_a_7Wr{bGq1jQ`O5y8SZp4~tU!#wLN9 zvI>JgB=yD!D8Gvy&rVF=l_U0cVg|KwUtXl`ZbY_zHbm@DAbP*~s8mNd)V*Zm%cd9F z&%?QXV!zK=@G59Bc@yfQmDzcvatU>^<3kv~0o;p6!Cok;a-yxM^1wBfsc&ktuXfrx z6F*XJvC<@!^HEKqUYpU`xEEGyz8Qgo3d#A-4jGx)kiiB{R<|R67sJQ83TvbC_2q^1 z>MIhya*!mlr>{fk4!Ny<+s7eLEb zo}S<+hP3EHta`P>{7(ve+KiON&gxVaqPkPU@)3&); zKR)Rt^IG9aq15*H`L(z|@>tilV_%{C^xmILKjSp&t(`9^rZ8jjD(H+V_S1jc@72Fz zbrw}fAfpe_%#6ZvJDR-@<&Cd|y*594PhNYm>EzU8&}Uz7Gr~az0|?1d{4RdKPm>~K z_>{EWKQ}u&o&Z5{K?Y=pi8_gooyWsDD%CsdZ22M3iVuUj;j;QyVTYUb!PfH2Nql_) zr$!CWIFYC5U4{0QE0ca zIuN;XNjBRke_h2IKSFH&LjbrnA?Ap>mfc|!>VpW~L7p$FT8L-zXJsTRhQc8YC<)wd zHY-sv8_oD>0S$B%027!nZ;X>&4>bDh)tEipYwatUIqnKcpOde5h4jn@0jkC%r3fX$ zuA!c~xa?{DOsDUusc%+glUIu`ThhSqE2OzK`&1h#cpntKS`%s`R&G{Lh8MwR&O7mH zst{t6F8U#2nfR}d3ADb1(+S`Bc^4;U^9zJQFC}% zvFlGeUm;zIU+Y(_<7J;3+XJ#)85Wl74e>$9+rJ5#yC>hjsvXwo7n?M+3sq$YnZWJc zOGhT~_EaS%UnQKVP=8zIgiFW$|bi{yRV1;c{)AZCwy%VmO%XEyUbu7@{y-PCY53H9N0LG!qbCdPD* zyYAIAhKe98&gr<98-C`@UV=-MWkeY>G1jSKHzQ}7s-=aCoM64MBP^o)=yIe=FFh4M zR2wv;HMlF0F4oR^`7oqnJhS?YyJGdl@FWAy=pL2~hBwtY_v!U*6|Gm-h1JzvNtePm zgdyoFkf}@Iy_y=q^e*_kkSM{|L2ow(9|$v&JmpzC85?tgrcnuD>F2SpgLYl&_Y(ot zpZ1v^>I!%Ing~mZul7i;p!)TFDGoCgdAB&(g~oT;E_1_;XZ>baRM|l}ux_1sf`MzRARdbK_*6c}&zyvfol-D$KP$Hp7XW6g8!ODp^)?^yhsekIMED9&KTF9+&!x z3YJYIYvpfcj=@1%xpam8(w=}z0Ep=nqDIbYvNh=?`V3Z-+}cib3SU#qjBSYd>x55IyhLY@^$P72x)gWfBH#mj<} z@4tQH`<1)fO9=^|_iKa14Xim74YlTW`G2AFkYi;$gk>3q4n593S@^H2>M~q?kpdxe zmt`$&-+DVa?SNbR`b|dx&>@OrD&GB+M*aHa8=*_NfNGYudh#{$60%vu?1zfpYcZJq z6<-10Lob}+@w<_}+3`}{3)huVWG&_c%BpDu%)d_x{B>Fw0Zy%A63Wr|Q~N7BW78(D zg9_ee;cCydcG~mx{$lfNf7d$m?3?NviU$Fw3hsA@_+d=hfB2+7)6F9;`O<%(bxuUu z{~5|7py;cfrPEUMNsB&3z>0et#WA^L>$ zxgPB%NeI>WAkS;!H_2tNkDy<@Yju{euO7ZGq$tectgW^{ygUz*b(h95Fhp&1kFaQ8 z9GOyruTCU22kmA3jeO=x+YkM%lt$l@+=XVqu~zp#JP_d%8bjx&f_r%&sYs{~VE=np zur1{LLiBT_*m?UCB`ttSAM!%>D^K;bMxWmF{qRiihZtxCERH3bC8-bNP{=K)teq-c zZwqEnNQ?a&$rmX4MyB#1eTsVq&sRUWxxIs_Nmi%VL*2aNpgvEEJ2i|cYvWZ1#+pt| zz2i{~U6y4Fm($}P3Q26xr&)>AP0II`ftuq?Bl97_0HClElCdN$Y zn;DBgL%oD$ZXCo0eXe|n=dEiTG|~NdvP-$~EMeDBp4|IoSl5`6GyF`+YpP!^+vF8w z?nMQ~Blr_Z5ghCA-v&IGpeIWDvV~i*(Jrj~?+l$C%gRelK@D<$rgc?^Z*-OD1~=;B77L=Ok?~PS05@QNvj^K9jDb^BFM5DDp4eB3Y0!{zOz2rD^?R5Q( zf>6~_UulJ9-u|VwZDU;u1rm*zkW!7KOzyi{CmN|93dI@cBmNY`>FL4(6s~3(1ea=5 z$xc}%pZjI!S1bJZZdTB{tKG_sx~H8+w>SR)&qhWX#c02YqD!APkxVz`LV-qpS+sd%>Phk#93Nhpw8%}Uj(3iZI`>l_PUYqn!R_V<|6^^ZcvT*Idj4K5N` zt=yAcW(=L_)xr1YluKOdH&oofCdp1U$$`GH&&&2H>DeP$%=_yMIj#im# z7hSonf|yH^!3MKVE0`gzk0zntw()1D)(;M_lJPkpUf4O?o9*3}-_uMTZ5jTQ>39_o ze);+G=wG!v#|xh{2H*UN`Fbk&iap-gt?M2u&IRmHXIwiss#i4~FuwtV?NxNpyPWE% zm;^m?V*3_2XR%?SQm?P(Trw+v8Gj}>2U!adiH|`GK@$1?P+3!fDjFY@Km`1mq$s&1 zWSv>LL?hGH@)fuUTrr~pjEV$c0BvVxD0ZBncI9BToMT;)9+#cqT_6DPQF`9iBv#GI z^?$5xm0-)Oe6$6~Kbf^C$B?f&6#(gWm&GyTt8Uui;1lzXPt3`Fms=U`st?#r1Jr6b zScY-!Vd`jxNc`6%3J&P^2I}~VKtcz{n!_vH!S^z3j#a1Mf!u!fSqn!Yy8i64uec)l zc9vm(NFpG>l~TAM1pl!*GMUNwQzr%#s8(rxQYF6WFi&)FsbBVYW{JEURPFod-cf;* zt_7j^Xv>pun!G5EgQDA33nx4Gs{A@ZmNP*|t!etB3-lfz-Zrc!|8j<@XgbhwH;{F0 z>u+S~-K@(Lq2*m$fA&XWptY2`P&dfuQ)H-kY{$Slgt!UtXwZCW>Z8#G(pZC;#5WYv z3RMe#_BneH`B5G;2=L#&PL2M!pk{CSw}8>_t1B@8Xn|; z3|`4L`?w7b_{XvzPzetmFaYAf$FaMx6_lLDvXEx0$|)Cj^H`?aQfv~%yKeHVIWkf3 zBXIi8{mzM_xAU}K#j`an^nzG)#q25hO*7ph9c8f#0QhPL@6yX3arb@EDlL^+Z(hYQ zTIaP@TNBW2%c-fW=Ci9ies6-{zu^Rpdu6sF{ub~bXwH%} zf^)t|RRdA$>rV}n1>fu{CI%?q;Y@KGtRy(IOpJF`NE{;(^Hk=2FkhP?BKChkr zIbDlSVVOd5lL&}g_P1TeKroZW@_@;Z3-XDr2i@UFjBiS zFVvm^es29|=&7`-9Ib1Ldo2yjPErMwlsm_zBIEXKGW{)(sn}dPUN|1XRmxDmVo|NM3RT9e$jw%rkteH5wNm%oyesY#?@=tu`Wv^7Zzw zbb>$Q_f*Z*1-gIH`}ndW$@h+YZnjKRZw&M&gO{Yz!C_lGFy|`zyCTQ8nBy88#@ym= zHP@3vVIhsx+2~o@a29eJ#st2W({;=S3$F``)|vNoeRo2FBkx;f-a|WpgJ0b5KKq*J zOgIoe3BEj7Ld_k?_d-9y{uHFFiXA=&hnQ77bli9d+jRx9d8Vk;*0KY)U{9;D#HeY) z&-|-V$!3wjRnSd!gtbdW4~+V=uK?AthBEurfmT#}FtEqJ2{|Ub=YsbYemXvs>M{4; z_IAgevt1dERL?@5kkeV*a^z(W8LaQu72+MB)%$Ng+FL1j=y8ghcSCGR^=)tfI4+E^ zP2U1G&dzA;%#L#?+c*&!HEo(Y`l3#l8I}8x-t^AJ1oZq{MrY@h)C5@(2?^iq?VsW> zwX{HY=Xe8lq^(VXoG@-(5~@L;QS7bV3I6}^HV~o~W-veJP1IC=^G%209N<32`G6dA zhpYG?-Y@JhIwotu8-VUEi}bNoib9MZ{@I_C{kilf9-^tKBlg|pB`1iaNtenmW+KK%mFRBO54s<5vUx7DS`LPMblEVQIq5nJIyFAJ+y-7@A zc^)VhqKe7Ex(VzOZ>Lvys zPd5XJib=xIuPw zHl?5N@XJG(8(h8$ZMv@hTiK80G&VPm*C%XPjJ*-glw4YJtTFFi+B(QK#cMMgq7m-3 zS8hA#7*`;SRNm#WA_sLy|*zJgUs)UI};sX3iWbKEqMuv ziEv9GO?czs7OjN>z^1~ine`AVKVv2XB1XTR+SIpfzMYg?*_{I<^-QnN14hBW!awlK z$7WOFCc8p#%=rht4&+r=IgLV)d);oOc54cx-3Ei5?$sM6zPZK{WIp-MzyrU}=v?*? z-w+VvR9ONz*!UUavK4LKsXVTD-pq3O(NR9|6{nOjs)bs6bSkJ}^FRFyq`GsvtDdZK zt3~GFz39J@TJ2vc4TRbLxHp)5C5dW2h(?x`nlq+vat)&bzN0nIK$VUhulfMlr)6o$ zhy6m|?M}~1 zr#{MgDFdjUUx&X~v`Gw``!B6C|J7a=wdIf?rwc7cWo4Bs)_@}?m6VPNuxPl+USV7c ze(Ab53^bH!6~N7b&6C)wZ+En$xuHNi!s(;bwh4gzNgavfF;d#@Pd~!vj3~{0F$BwA zVN{O=>I87o^<84;z0hjGxA7qq<65=It#aF~Kq`Kn6lGGwid}!WkNKhs(kuC&@8CJ{ z=!{3XkyszwzI}g)Ur>;ke0}iYq2k8<3kzjH@B2_@%8K2|qP9t5Q0n&>bE7;$-MN1` z2-o_R!<}9Od40M!je7mb7^iB_lwM3SBPheCK`<@91s%z3HbuPAhoY}#LKF^1bY)=b}Y^~5GJF66v$ zsSD^H*7FQMf_;`TynNaueyA)JKhLZwgn&Sji2uP}l0xpa zDGqv+=f-wUPpmECKEnSLJk=p+VgjSRQoyCXH4YRSQ5Y9W_l!WJ_i(^Xu^?=8I2jVR zGuLb1(htofpxi5-iGl=)I4X1b?ZkA$PS?E|3+LFDPn(k^iERjNzTe2w9ur`eC6!OS zdMqiWyL)@o5P#{bS*;hP$;P?>R0p(kr+VJJ(5I2>o@knP(h1+bH&e?^=3PIOcK7VW zigkn1*p%w;8JWMr!mM4PRE0U9qroeeUWO#c&eilM&ihzV1`48`gfHgnHK@*A5Bau% z;g8wZe{X!Ql|H1MAMFthJ+WuAl;l3v0t^E3qk2r_>u;YEOA889S2f(&<{km@wRu#7 z7S7yj1cLncy8!PD;VU&=P4lY2NC=$-LHwy8{V887`1AXi*#pP+uSKnkb~RxzS0M=c zvGrebdK5H}S51^!n+$p<7zOWGO~)i_0|tZDqqyd$%xHux#27nqiP)yIP>S6rf;vz% zo;}~;r3P}tXJOm=4BO+a^!p1&jF0R}RxW8@@DnSsT^@eny}Hl6lOD>tj zte~OM+rCDdW{0ay+svX}R*za0p$HjD@X6J}8R6_m?#?Tvv^eh?vvNx0lDk#B62Q11 z#9^i#klB{bTHrh1h4!;u1*wjPeAHmn`%knEijC3PH-P6fu5Wi|Bs@Whf`AiDEjTHOnmrI*!3x)uwL3?a0yV}PS5x+)XGqJ-?oN#_?FgwIVMA{V4Uo6oC%2WV49@t7Fj>yV5%GzTO)qlv)6 zdTIAf2E!A^CQ6Y6^!9!MMrkVYGmt!1vC~E_bq~Xt3O`dIxloEc5an&s&IsUS2W)@1 zuYL#fbLaoyC{^WcixFtR}rda`1_!-)I(R= zq{44Q&6yoaVy>4Y^+`&(#J|B@6}CxE{gla&cHc>zu{9pe1A*Z7n0wE`{VIRv%IS!! z@OP5ZzVP79;vn(yO`s&z2!#QVcpwhZ=xyvucHvPUNcbqYGf+$qb*zbu(5wJTM{P=< ze%=Wxh#`Lh^02jQJ&GLfF`F{jNDc3~zDejfD zhSRH{CSH{DYO&Nfi>?VOZNXq(h=<3~?>eMoVEDcSkP+OG5_R5POW06U-jdYzcF1Dt zl6$FmuYeVRZdJ7fK8f|vp!>kcao?pLV||u@*x>M^d_xKKwI%$$j}y{$7xu(DzWEUXus+E#;Zs&na-A^4AehH}X{oev9Z-BC-*%ap1*wr+| zqoE8-V-@@QWv^;$n028axSnv(_|xRybnTK2`5U__5}{B{CQ`}VGc1@wI{}FrqWyPGdPB95lTctv16+2 ze^;JyZ#=jKIZ!nsWCm3y#SOvDjRCbv9U5Vq> zz>s>xy0CJk;ylTG>q1W(a0}rff>5{j_-Gg%|2ioBqzmfWY?8D6)HcUS{ms-3u{SdA zWz6Sz%}D3`xY$CQ%5{WrFVc$>pa#m#=_I~*`7*Fv}ZT;#CxWlgAMRrAL771e+geM^|UiKf4OII$TZf0)w zOR~%*D)aFGcGW-ZPrBL1h7y6Gs^s}HJ(t>2QHP4JnD(s!us}L;l=!Iq_!ln5%F*(W*J3|Q6oc1S_ z|Bf#DcI#9x-`d)DL>!4>8L>#`qAolG7#KK*hFp>BI6N(2vOnft{#9|E$zBH|A zXIlYm;Da;-w)CybsjDwz3^NquE{)!*xUrR8pg6-NVs#}rL6)r>!>)Z$xsaJe)?dcT z8JHK8c3?|Zf|17dujU<^!;PaL(PD^RY4KH6jw-7#I~xnk83`Ow z=-(UvvWELP0h2aA;J(#}`9~>_YY?5jE#C`k&&|)l5uNR0C^d#N3H-Red&MQOw zR(>pUw+x7f^Xx!)GGbgKe;Fpo*R%2VFuQ~bxk-{j7{*G82VcZ)IgWkGH}Kl-E1t^; znwx9t3=2vQ3Cg^M7~E@Ne|$3@yIF%OM|@gP0U6;$<58BqCm+Cp@#RhTfy(Csej5~Y zet}K%+_YcUCR<4zVCDFr&n0EILv_{I$9E@3#sj@X``C8F7}w;^ze?ZC><#?tmw7(~ zU3hduMi=tF7YM&=rZYPlX`8qv65pdO^v%SL>iTcja_nVK%Oc#w1zL5}N0G%b8```L z8<45Tj5oSA9YiFeA->jjW(0V=Ecm9h?;qcb_ZstJtKOlFY~xWT#yK&BioB1L+dPZ| zB8K>l9s}fwpBNWjxTBIa_6GV=QGUjNJh21zqaLc-I6wXUbqQ9VWyQx9i+t}BRyYm5R{;}Hy3MqS@8(E8PI4GPNnEi9^dyE@yZjdO*Y zna{Xshkm{ZNgCPodNC8^Nwha!-~ARkRM|n(8=5d6)1=6H;)VfctPIIang*I&6v)n} zTu%_#CL{ws&Xi9{0A`w`>>lh10hx_c{u<&P4A6AJR}R`oTdfNhdIKAs1bW{01DBF~ zxfReH`uh@Xx6XxEGfM13)5gVI)95rh818AyM7j9RgsHjPi+VH6aeeA-HEXYC=uB)x5~D(2?6_$sS8-;p=`opA{=HPy7x1K=Uqw;=E7pBjYr zUSLM_;HMx|GYzQcoB!R0v&LVPyY5LUOICMXdle)Nd}fld$aTJ{rFKCjA9Vvi=9jTx zuJ_KRBhp>%432ea5ze+44nc`29!x`ut`S}X6}NdjU%He_9sUP->{ zd2Z5~J0D_26c6tL-~55h0AEq|Z_GKm$(UmF?cz$|%p|iyT7f8{m7}LM@RSbLqZWtJ z6+`?=uc=0|0dn{Al%B=nLv7L+a7BPK+T3j`!-4s{ZMS|M2gc+br0f<#F`y$PXi||> zceplaE*uZ!iAbbfF9ql_fBKf8k(Q%g#%GxwA$F-acKp6s=+580<39z;!3=Jg?)nx$2w0OnhOGPG3<>+>FC80WhK zgK*%kijFd4rE;mu1)$8bNv>@ztG)%vcOakDzt+f;lVBnaz`RN(aLYlzcMfz^jSuyx zClmv7k@UtuG8sfD0#$F{nj%mpDskw4UYMt75^fu+0n_Kak}0jN)FAOkoYB*9li}Tb zAtg46*X9oM7FcXP>=7k04;{&?<1tsHstB&CCV&qe3c-n2a4;k6t3%R32j@SxZwfPV z{;6{x{i{x&g92RPjoA5{v>Gh%B84Rn489D5-OkvCbr7PkNvH`A%!(!4$j_lx#XvLU zrm#}c$DkY|UE9iQ7n;OQyj6|DwEc7YkDD8a!-GF79gKwhNj`GeSm`Tsr+Ii{tCBi@ zRhms8Byi4{jvdHH(EHnRO7Ixf&Av!#QA#Kw{8XJ%Dd_vfy z!{mc;L-k0!2{ckMvv6U#xW2DQvg%PoGLdFYD2C>*1#oo5& zk;K$HgJ-UNWlc>iB_@+7FhqOB+)Y5 zyb4`Z!_DhxT(z87^Ct|x_Muc%lu4^bb!8!Jn~vGL*Kh2nlP><}2*H0X?TSZ0m3*%$ zRj&vtsqvM{$&^_xia0Q*I#~LB7|eMl9-SAbKQ8gHP-96upv7#bUvdii)<;1EDN}mj zw!jX2utscOcmuXVHpC=?STX%q+U*-aB|LRS#bU2z6{r^vdBkvLM(H2ARaNf40Zx!9 z?Yl=eW%r75hHs0z(xPe4A~C_a7PoXNvZ2sGoS3T4W$A>Gxp+B5X-n6D7<^rgw4SD4r3o2Z)D`bFVCY1S+a-KX?Y^N4I!#aQ zD1CVoM`#~4+})4iLQ)i_p^23qPu%Nl?l)$adF3W)>*kgb4UCMUOVwn^nM!9FuHqZa z4a%J^KV)jHp@ntqb-oyHTVh(ucDlw}{ca||OsYF5P-Q)ncS~gBv7~jX*lr{pahdFi zNe3NndeMvKTefU7`UP#2%*wl^poF)rY;~5C7)Nc5*keRTJQz=X7#NwqZKx!Z)4bbN zf<%Z3M9sWB(ePGdqvC{R(QDQb_&&-NwE&%kcM_uY1^KcF9TP9<*RSFKRsfsmJ4+HBHRiIB3&Nj%jEh@(lNQ#7t+*F*BeJFUGnS>1!zUWH0A(6P_MN~LJxHXO8B@$+ z4s<<$YYV6Jy7Fu_UBq&BR&S2_6?BFKlmsLt<__}2EA~#c|G6_zVzqVf@s9kwboS(JZ7%j=dj$V2x zB;w9~>PeN<7JDSwHK6HQ`rg54(gHiXJQH6hat<%PHK`d^#lL@Gfv~@hw{?I?HcP*o z2`G(<*C6{LpUy3#%jmzU;5#Wb%12jnY#JVSqGn1I*&pvG#Z?tkY%;Pl)M6om4qi#H zt)y>%Hze%^7eJ;I`KzHV4?1EGyN3`L{m+bL(eGv@UwWYbSbV=J?h^rNJvUi9QxqX% zxzs1TyMLe(VV}c`iI6VEDf6}0DUk?V`|;6|xQqZ;k~g&2HERX<&er2sp~le&X2f+e zwEvu9Sk;FNyiKKYMA|^*ZmFTmQ*2vOSMmPKi`r0b7MM2RF%j{bYdf^5 zJj;LrH%C}dMdTm8zwGyCI0hLV{ zS_cLUXsCcp2LiH!Oqs!Q1+4-#Ajn2pMwX0#5R#y%81@J=Ko|)-M8ixV;der?CG>aw zLt^AT?{l8>JfCNtb09lMwcDo$hWfyM#in&m%mcWp?2L2sJTxuDMmg}5YoI5h)vV)I z@p#*cEjXGq-Ykb!Z0XnFFo>!bTVL@RAM*c0h^Ck2b{m}f5th`e$L_Xf?edV&@g$hf zEQv0+gcUFjr)uv@QCvSAN33_9w%H$4hV+;=*xfLdQXDeva-~KQlfU!3%Ga(X>kF%M zLyPafa(rXx-J)aeCTm}|P;lY|YZlGBhoS3e^d-}#t|YCub@Rxx%4w`VG6!SL$!IC* z%19=z;^#diwi;Gm$&;0<8(+LyBUj0FlC0&V@j`~Wse3=6(DREi~Nm3^VCQI5|#1+_Ge6mVW>kD!)gTOTg)6Td3 zWl5B#fj%ks=uLBD9b#OngGqWqax|<3R_gyLnwa|@vaG z>tAH+<-`se*WG+_Kj-Mwx&v70) zcUiX>H=ohHc@%R)K5Y@!o!4DLPEALc!5fmt4E^9}^H@}{daM{u+R_y4zr-8%XK@3aa*nlz-UO1~3jYrNh7iJ|~AoSn_%^^RjQ zkhuS&KF!H_yaPT|jFC*K5#QlQX)$tZz=s@l1=`V5~oe8b@Q4hbzvg* zX4gaX8k}MmlcHBX{?WmG(!QF&IIQ=TeDt1oew>}7R##+Z83aXAl<4=BLB3PHF<%K2 z*|ym_a8xpC$sWagX>J;N$=IOHKe3)Hv8cv+(}_z=@AKa$lacHMJiF+-+7{`_ZlXVQ z6<4`lys}kRjumV=G>r|Rl?**~hr|lSK(Hn;I2VXqrF(D4`%a3=+a60}owivnaA+)2 z%}s+B^kI9%4(CItRdc^LsvbBayc$O~?IMdG8t?{ALlF&F4@+=rwO*M+f^R z+}j=tH)8wU*U7vq@S!NpkSTK}N}H4+{tMEvWc_qRgOCJX+f;k2bWcLy?XcE`*zEBh zN|E<~+Bw}cn-7(?OUfP+Bl$Dr$6WZ3Dz>ZyxIPKiqS_y?u)@{>6U6%VBXELyS`hxJfg>@UqUf!Y6gmAtplGkIH!;(yRFtSTadI93u+r*m zf}8vNlB^q;Wzj71(+WniIg#K$0s|4m*Cl^n_+cnJh+o- zqD+a?BZDwPE+?KUO*z5Nt$6rp+1M2vbE(s<%2x=F>1=zgSFfy#fvdfBqPsVH=W72b z<2&=*FyLv40`1CO~qf%4#W<&ZFc71BcZ zs4n&>w=KMMD`{6}~g@>~GvYh4jpt;OLc8im{;#gB4Fo9v%yw4HNOoREi(s`AG zbjQn3KUCJTTZ=2ppxk3_;55#S_5Q2(9(F`O7G-C=@S?uiT-4FQ^*%{)veBw)5y=5N zC=Wx-m%h(3^0Y>c9MLMbqdSr@X@G;qd?4uqDpQiZM#>!3<=Sez5Jsh)o2V4`_U(l8 zM0Y{x!VfTRBcDt-cd4cQvaG?_?~Sd%xhCZO7_-tVa8k>&?{j!YA1XYlWdFx;q=9$59WYMxH}S4uiIHKg zMMO9$Z|C=w*J^w#wkeqPruEUT0^*;>Oyh*Yc$th}>OFojNn6(~30y6ssCak0UhKXB zn?oK098!!5!+T!6qG2g^R7g{;odj)T+TSv4LGZTbf_Cu0!O+>{GB+hzdm{Zde0ScL zUVu_064wB8L`77#8W$~bpht#EcpstYqk9wz-3|F+$Ds>CQeED-!RY(cMf*VUt$A znI-c=@L>fDF?^CujsfS+ZZH^m$hcPoZ_$=$zQQ+XyQw-30<e zT&`sqPeh3(2uZT?W`^Bsz!vGGtCXmq!_P^`E3MxW1nm~jlUsP_m|z!l>KP8b`qbGj zbdNmr+|DOL-h{_yPUw?(({iq%ty}0V^eXUjAR3F!V>Y>Aaxfsc#vRN&U}g}Fd^2h8b8m`uzeLC<&0mB zynorw53vzin!&P>CJb`Go?r6GHDSVrwQZ+>^&$>$b_6>arsVM6!91vFh!f?8 zje(Tzayv))JHsvJ#HWs!l5hYgskZxP{9v3Nq+jR_pXcrMw}G9@T|v?ZbL7iB z$n<&t=BD39W1^NA)oSt?2QCh9 z>hkD+Z1Y`DZra9`oz09iZd^xkv8nfKkgqt0W>o+!YX#%=4hAe&4yHJkytyAOHWc~H zg2Okn+~j{u^Qr*ThrfPG(JIULojwv*3Y=hwJgNA?MriWU3s;>%Gl@=91+jdfa-q%= z$n}XnzKl@qYr`)LoN^R${eRq~O#9UMTq^fG+&-B$v|$WG=kElt3>7Vdl~?kW`l!7O zV7KCW-cUS4j>+S8e&2KD7dgXYnL@VJB{k|_8-tr>-WytQ=rQHCKvw(bya&u;0+4u3 zN<}o7=g(dJ11D|0{Ua)`t#o-aGM^ha&xi`IBz%+oUcW03=-`mP+4FB9835RBOp8ZT zeK;8tAV%uUof=%QovT>d1Z1LuBo^jZG*^t`Tp1^U`!e8U%>nYhgWS$OpH1*XK3`??9?9 zHH8OGod+Qa1P0U0%}CL5AL7}01l($THZ->yr`J#BBBnp&de(X0UYFLIEmlJ5WWMf7 z%i%5W77k1f9q$*UY6%2>Fj%FVWo9?M&}wS94|B67KFAv83`c)Ptq?R8z2N!?V;yw- zJ;cn8oNm#W=or0YOP`c7h!g2)Q8t`o;bZ(%lr*)5`#7F812b;)`>>i*g9;5;b=$M# zgmkYmk#t3?DzI}SV1z^=S$MKo~Ctqbw+ZBAwll4%&Hlj`$wg5!;LtjdTLez`f*O!oP$%RViSyMvrk#2{T z1~EA!%g_KsptHWQ(>cIysBnoC6=z#VE zVIRUx8EM@M<;qf2PW%jBN4>x@7fVC=612(`V!3JmR>VFiq&Qfu(i0TajFpInmCl^{ zl%}nYeR!@QvFq}2g`KD`Cr59{uF)mEhn?%6TM!GuF`+ZariC`U+h@ zRbTwwG;hw770*XdSl|pOs3?0ZANcQsxutbn?iwX`PBpqnckCIZ7?p`xef22*^PHn9 zDR&>LnrEk!hJpej>=b#LTdCNcAdsGYE~f*g--clm*#bzFxdAto98bM6X}4fb>H?Nf{TAQ-Ma;-*`Vr$;v!cPB zl^`vj5C>$d3l=u@by|vQP7Tx~aCLw%6{~ynINYTonvh#ArjS$m)9?J)>uOb?Xi$k@M6u$q)XNmd}oT6A- z-2~1Yqs+0MdYdRdG#6j;mvzUH9#qUFSsL7Q{M^fp{)Wt%=hql>N>*PrJwm3}{373D z5EFpUQ(zuYUaS^fY6`3Pe0{5Q9D@jKklvmfHY%vI7!%^3@rm+N<%7-#*@!~AVUc~= zcmR`cPxxf`bo;34FxrhQ)&t=x{PIzyiqllbY5d?a){ge|ksE^~Bj7MU9@8M|RR)a1 z;RBI3Z}FKN+#UKOMwRn#Lyi~PusAJf@NJsv%2jVaRNK})A0n9^0+tY7=0nF)3)Kyc{Uvlg4;Xl-Gq*c5Sk`%qg4uAlP zCJnf_RH}bQ+yx8<%E?)uDgn8qqad98?x-lg@Q@InaiIeVFy(VUM$5A|q%Xf;g%$lW zN5N0G^Y@sv z5AvjVT-A9x17G)7qDRGf7XT&gUNV^oy)lUCsj#C-Uh3$h4zpVhMy2~ZMJ#W1UPY`< z3B+IViJwhg%K@q$d&Y#znM$tCVi>I9(VUlI=M2><0#{?PgWn`XfVu$l7kO$N%?r5l z1u7V(bqgxYEe{1!3iS!opb#cx315M>V*VGV|AC(SfHOB#>nIM$q2MsjX zJ0>`O#_ID2Tq0@)NKAbkCm&{t#EHi?(jV4aggO;K*?13$yVtaUhvZebm;;;RqdLNM zNVh$$S^+Fh)4q0xqrf5T`m$B?%iuDC?H;v%_{~*8O{JNp_Gt_2Ht2`_b9MVFo9a0$XDg@5gXL?L5_(Du~bdz$(&$@F+n zg#?3S3+;|w7?G1ztwIdk643z#o*RG79v+~3S_9@=NZ)ydgKFTb7CSb z0#;Em7`1OaP+ktD-#tjkVjMo!G|uc_th!;6CZWKl@NMt5jN@meRY{yJ--i@l;!?p9 zTRd7EWE9UzUEwBK&&0|rc`T3o*TwB`!T~k=LNB@)@VGNPz->Xywr^6+^IC4knme?mwzv zHofyNZ@yz|OxcKy346zER8|wntd?xOe2~VijnJqnBL@X5r9oY%s7Z(=e~yWGfi+Hj zImZmYK2jVooa&R?ZBXtsHSoCQW1l=XZ#gdSN&Ez4(IyUDmihRr5UCvq!|JEJCs9E- zrW@|t-G#dX3evSXA1Q7PZv65Dp&wIh_1eeZfpV6BE@?J5bTH=9BU@xsnaz&?l7FF) z|1;Rma(t@faKE2~STX zOLWnGfN82H>4>bJGfoS++B)k@QTbP$Tm8o~%b%EJS_XCy0z)+3Mf2o+f}IUJ{hz36 zwWo#H!H3$(Tx@K7Cuq40%f_s3B}SxR_XZQgZ%*)e>wNpxR4khH2WW0MwG0V#z}&2e ze;;emO9_27s0%%(=_`)1Atsn~Vv3EM&%$&W{y~UwDCws7k`oW)1dqLIcsEXRb0q=& z_a2Dgb`WRzoi|9_M?-Z&;Hn9tK@=#IQ9~|2Q|>yw(f$1wF-IacJie<}4$hd`ArRCg z+9N=P4Cs0y1-mKs$kzCb?~4uX@#=rY{v)qvq4;GE!GM%dv8s0}3Vi`|W_f~g&hD}j zkflhBM`euM@mRUYARm#KOT}Xthu0gccc~DsI$}`4=F3o0z`?Su&9x%KGY2E1MEDph zlPFj`yaMSw#f}hDMXte(OFn*2gl+&O$fUtj+ zzZCA*8);_bWU6t;EdW?q7&hpLQR}I+gTVf7QYi^fW*$t4{o${PgAd^&f;~eA!X`Xy z)CjJF%-nA97=7k7wwtq>Cp}klW1Tl;)UV=mc%xYhr0cYD$0g8ug$#q(I`E#b9Tz@f z;UIqGVttEDre6XuxN<>h-5nIrKHF*L+-ppP?=%X^ZF4qZ7wCYY0(MgObD3n&bEC* z+vQ=&nVx=$X4P*P&cUxE`vwR}cH9osEwm^|5obf_hVYF9(Rt;YDDz4aP{gg?dd7uF zZG#~0I$+FCCF|zY7?KWp1h7wtL+FXqS&IjOE)Dro2XTa6|7UOdtJJ9}VXIR{ruZM_ z*UiwUJ+wH#oHL%L^aNBAOZk|*XRdGYGq`0pPF?elr88u*RxC1!6Aj6EzdxF5P2O%z zLhJW6&41f@d$Bs zf2j0k;_-_Bej#DxHmKqQlMj-9&izF!@rAgxHWTssm$T zF81XvVZrM^`3a)U$hSHZ7Ye1Jcb0b`V_%TJvU1e&Wib=b)45G8}b1 zY_@hD^vt03`u#Ih)huRh(Vl`WX*ERCXBpZWb+w#N;sJ$nv#z0y<0+A+W-LMAI-=&(>LY%H@Qt5_qCM z(N`Dsl-38xt8W-;zZ^^W#A_Y8lgXF+O$C=C7|5&g{l#qBJ`=fomC(th8QBA8238Up z?c@8|Ugpa)S$=i=5?pe%P<&U*>bZsE^Tf-W!biB+qXt2Ze?F>HmS=aFn?je|$Gpsj z_`QIstsV0w&8YJT%G~_&^!WStmr*6pf~PnYDYeIN%!;(A@x~5E|fOb`_nwtNAd8`T6U&lmjz2Uk$;!0&h6 zd-kic@Q%yg!{yKKH=Oz;QhoJ}6YSI=RO-e@4x>2 zy^D`xp$AN-JSn*2bh6Vpk0JVA#Z_F#m$!~m2*elVizhd6gHaju>baTZtxW$^E0}kh zRmn6)eC7$K1R_4O5+4e)SFwBT?dZCkGK1g0{OUCj~m+txv1* z6PHdHQ8aJRNs~da`l?1gt?uL&rg+oGp-?>ifF|CJRXx?jvqCTXhc*rx+gFDyRy)jc zc3X)|XBx6glY?&cL_uK2`ejQ&DBShygEx}Jx(1{1wo!Rni^2$BFR1>U%r{McO)Iau z#OQf5a*)3Om!aX0dN49gz(xcO_bJkf}mgK)eske3Lm=52rcurKjw%yWv90BMZG$Xffqd4HtZ;OqUrpF*+luuv!X z+$8uf6XQaZhC#`a^Tg^1x}*1`t+M_$Ds~fZ6J!dobLqvE zbBq3)MWlbch}`?G-!iv*!asif*YU_$nc3bYObkcr-HsiF zBX{*#FKB8g!#`THLKg>sH<8JfF=hq9Mx|4yP|U%6xoEL>PiW|w3~_|E9=OyenJ6>0OUl&2I-5eYe+11$OXWprpdS~LSJlm?L zGNeBFS`aFLROgs{)V(N#9kjo zmx-^&k>(UsjM0eAb8Nr7DSTDnML*SQY_(Z^9bfa3KC5L?7@I-}nr2$hb!76@TYj-e z*WiYF-D9F2BQ@`U_wRML0oaOib6Sn3W&J{p(ebq4DC}}TqeYQTsCGs^mLKBAb*2Of z$8h&rH!?}bR1=CrI;_$fGvp86Iu1P_lz4%e%JF^(w>~kL!D-GWU_0fE_2+9{m=RT< z-kwbx`f69pc-1M?^aPqUUZe^`$9tPj(apyu3WI6S!m<|cZ7{hE{O!$;5|nPX~Uj_jr@#WO2At?u*9!ylXG0oL;I zm}P+#cFAZDeIgh;)Z449vCSmCb`Y2(QIC+W>WTPdXYA7&{hOY3O+_9VZY3~9O))dV zjVT{sqEw1sVAeg{7b725*L=1AWfG5^V%(rAf6yOj`{!#)vNoC}OQR9otBkHexb&re ztdKzP?p*xP;(+or9%{et?NE4=d$qp84BMN1T5I4{phIzsz8rR-cLZ#$Enw;dc6F}X zMQPRkt}&Pq;;ck>Mtf(@*q~F%CVeL~OZ>-na4!}w9g@6%gfz9?9BgXVor?|bL+P}5 zuqi*D^?OoU9I6u$oAoZ8N7o|n?oq75mw_en$p&|V!=`3;TGi$TT;QEm3Ot7n<-_%D zSRl3c9YrDz%3)%Y?+n{9OOQav+n}I_ETQc{&(|2o@P(HmT%CR=9CYLnjxq>t=fNS zPMYyN3KzeH5dcQOjFlEE6U+)wV|bp^>e3FFr{^zvQqBKFB|$fa_TkE-c&=q!Dg`k& zuQ+6%o|0Wb9{X9dGh+>l=J58IS)q4RQPXTm)2UB8t=gP`$0R%Tq+YR#0M-cf`g*%x z=R)J)>r2r2LAXY+-#@THa5k$~Z$hDMWi^@gho-d#`@`gUBzJBwuClWI#;F$%&GbH% zDY36dXnIC@9RL7$Cn5|d4&O#}0TMsuE*JZQyhN!Y)hbXYIY)c(%WM8Ksl z&>-TKA^0My@Da@emQeoZOFY8iPUmHtLz0u%u5rdC4E-ryy}?chr)u2unyc*TMZ-Qj z+5Ln!8WbMA)|UAh#>4QZ1ZkC#O87k=5l}e!J_Y@z| zFuNshF~0=%6Pp*7TX`+b4S;Qe^JsFB=L;;sXKlm`nwM`NwaXLd)TpHf<;a?|*7-I% zn~beY_o_FtxL{j)6x##b54g_%l7*-&vb6)n^ko>G#x+s($b0{*Mz2ob6%4y@kJ*9N z*;xlV-`%*g z)A}ka+C~nr7;crJS(ejkaRYtr-)7a34GkH;M=J)9qi%d0uL8oWVZ}Fi2rHoHMuhbYA)-Da`p*g!@h}|RK8fs{k@amznb;q5Zdb)`+OMI6V_;n#l z^4l$z;NFy4F7E2ssCDCfviOsL!Rq{tS~4>mif{FvA%k1Lht>`zNRd^ zC6Zfj-w-R`2Y_(?S$FEtqEP%GA{8nCiDkF77-%}0Mpls2sJh{sU6VuFS)UKD>#JVL zb7Muv?9uk~FJDfFfz7(&2nL^;SOGcT@ z*_y|pKxiX(`Q^4~ZBB3;pI1gufJ%@n`n{O5flene#JNuF;7hBz?R8qP6}IVGgkuSJP>_#!&ch?ziY=O~!D zYO95I5cV06y>`r11WY7^8Qb??CX#DB-@h}L1-;BMxA-sfPyaLq<7Lm7@9CT*<@4C& zqS(Jk4iLddvjF==g-p`Qrk-zuSGXv&02hX$I3}iVvAyMFVu;>Hsb?0`C58L zwtu^-MzPKD&txNCFxdMGsA+i4I1vK;u*Nr_*Lu&^nT7`oEYd(-FMFmHURp{zSGbr} zHTp-Ng5;-@PW~R;8Ib1AT0>Vgaj%u$&IV#FksII%HuZ*jqO&;El>RS=2!9!MP7rB( ziQlX+D4IG~>}b;|rv3EIKwOrzK38;<$L>y(B((edq!5qVl?hk`8`G$jcYeu3n*=^CiX8IRk(D7DBe&F$9GgN+JakXUFl^>1>IY9x5vk&%^jL2CvU_p0NucC_Ktm7g<%G;0oj-0iP7&4BT8Q-av-^nDq@mw@8(1{S(v zhpdHBT0@Me><;rhaMbg=@q^alj zaau8HMBac(zn5MzNSFk*qjMzk#`j5Ql&W&$oS}qm{JXyaT*IF7SGwGv@l48?brEX( zBpI25j$tV#UgJh=pmG2qls;}Fs(92cg|@?P@S=%9l6(5h%dN>jK-^|GK%$1*xwzC$ z$LD0uq5?RY=~!>oVk?66%yd-4ObR&bfobI~<6)O*=>cf@sK* zB3Y;!X;eWHYw7923Vo_7>J$vR%Y76-CsTC;N70@9g>{=B$RsX)0}FL~*lvxsG-LKx z7rs{zT8&+TQ_6pYoq(PQa2k7j4Nv&Ivnhg7)W>QDcSY(p7&@xU5eF|x#yI=6WdsEp zhvBC#!q^wkiWinE3D2g4wk?S4irwHG80|#U6kKciJYmQeoC5?>o5b^_IazD1j|y#< z-^KKM*-Fm#ayV$tD5P#@`uZx`9i$-)oZ6^CXLktaY`k_0n(`sANDXIonWVyq50b}X z&q+wHyoYp3XPZpXm%Uq(_vyOS-9`cs2+oPmfHmA@2bS=P(e4KpDtVK>s2NAJt|4>l z4lr;jTv>pu#;iTz z5T}os9a_kfSxvjPaqP@rywv_#0Ht=urnhvD<6IV6z=+hH(7d5IvUtFMR2QEdQAp?9 zH|;+OB0qS}?saoCK5Fqzve^PcMs3ne-=FV^c#dy9B3eWwMzH-Q90EI-@B!>#GDf00 z#a!M_e*E|_?n1zy_IgKsn5GC_mmRR3(2CHP-JJhIsJb6xyCI2P*0LHvz@F=KNhp_% zMuNX66^S_|2*YvlsRO>(%l9zdtG|N3o_eW_b8A4&@S$eINq|Y7M>ox;_S+jZh%3@f zmOuB@p-Zcp7755UDrX@n&75LmxOF4FNcaswdUjYP=aG6^Z-Dc7vgb*2Cr%v779H!? zt|E`rof;6!3uxatcfzNOrV&vxC;^gwT{Kp9n4S_+X6nhV+|@WkgV5##RsT?7(5R1W zFWS(nnEz-*i@%FjNrqykcB;Q{vI zVcF;HxDhZPfV+vYi9%q0gs4FvH%lRutNiPo;%(Ia@aX!7YEKVVb1+Hc%-gI z88($E?C7415Eu>^x?@Je;JY44r_10e%K6A*W7c8?PCl?{_ncIKD#G-)n z_O#99$$Te{d5U@CZ=zFWdz!=?22V-+#c}?J@JNBdLqq&tuW&4M@gs7S$&)ktqu0FA zl>U|k+Ra7_kEbr%$yED7<{NCH7;raz^SVdGH3!30b`$*juvnUgbavvS_>mdt)=Q+o z>)J#FKoNlH(Xu~({JZ+&Zv6GqAQ@H;7LsCP;RWk=D>iC$e^c3HxcQ8dC3r@r%Xf#a z4}Zx{tlfjuB{b$Fav~E_{{D6TC-vG*n~3OKIcbaT{2u+cc<87|M090 zN{f_8nM=6FZZ5c@2KGk_%`coSD5tMbL7-?hooM|tS2iz|II^~1w=L~R(bGaar?jFB zOI!OaX&Pku4{8OC2*Wb2K^Y!dY9|ULD%
    G~4PgK7iQtt0uy$K)AQGZ4vaW1Zorf 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¬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

    +p>F2&trrks*c z^S?O3lvHA2_(|Wirg?sMV9`?JQ#-46w?c!)TOXF_dAZo->0JIu179)$jSt2kE22mi zgdA_ySoq4+uNwPNw}o&62`^|#LTs9Fo?k731uBq5(EQI~^BjXN*BVGpEnMDMq&({5 zdKGAAT@ni}>%O|t$g`D({kCk*cK2al`)|-D=(_*eo6qm-j^c)4R?6sO_<0EXOOU&$ zy9YTtwe;4?DLBU3@Qi`)Wh&d8`kptB*HD`Q96POsX7-{YPk)FgD+PIj06mjXru91H zuHY4mbp4h==w_RN53)yAJ9IC{(blFStb{}UFH5F~b+`T@PhscBKNLR8(>K#yxTam= zkX!d4KRcqoQ(G~zc|DErsX}^Sz1WQ5FK*!b)qdm;xblZez05Jix$1an28otV;Gw&> zruag`4*i-}f%IIn^~3C|NZXW7Y8gr`T`kRuGwq17QR;#nbVs?)Uu3LrL{^8V{J#gH ziRt`IT*)e=-(|(`irvN5proG63qN(@I;*eebuCS(`j3X!p7deb0eF`SM(G2$!H zb5G15JZvC_RU5=Ytb`uqrWYEo}yEMEb<5zxsaoo);3eg$jMZbiRxB{$jfTzS5puAD$)p zA6Xjv*)el?9`Z#UGgUeO?cSQ>l;wp_qop_1suH)>_(DtaPtK9z(T;0>XMZ-ezr9w; zdj_Vjio>mzpKZyBX|B}ufI50}CA5I4%zT`-P+jRAQTGDEI3##U-?iR^Jbgb>cUnO% z)~{cajdLGNGnQPX08USQ$#%aa? zExPCUMC95HYKuU|n3#ZMso1VkjsM7g$PRxJ>bXOCr(LnOghgsT zC8E0@=7wIAnELSW`jyeMHh1L$j&MEked}~7(&X+blk*56fAjCy1uy^Q2m9ZiX!{+X zV4W~iY-ODC{b0OW{od_~O@oRFl6+^X9Yh*wfo46~*Xu0fXwLg(2iqKkgXE9x#4L-F zos(i02ErDM3p+fnRW))R$(w0*^LiIPlFz5rT=T6URCxbDn?k2)$v|6a@Pu?XSQ`CZ zL>k_-e??B$1Hq^NF;&&L4cQhdGHsy?(md{;4-%4U$5-zLbKao&`VVb_x4=ItI4H8F zH^jT)L^mFte&8M-D12CiQRY-**t1)VnYmf~%h}q963@#WcVF3ivXkzUeW7FvxU<=!`9)@ny9Yk(-(+fSbi@piP#MOv}q(JqDfoEp?WY;d~44n>D$B#04 zBP_1#=EEc!g!ZXsIZV(eTT=rC4s>s7xHtZ6U)hw+(3Sv+o7BEr?WISMV}I#S-Ggo6 z=`Q3?uoRO0gX=rtW?rWERZZUl{EshG-ToFY7}B}g-{*6yE8BB!w5mlucZ^5m{RN$y zdeuXJ2MSb&JP=7a9y0w{2$lqmM(vBGYDRjhaElk|`>? zFgu!-J-YcZOGSJM@e}c1YjwF^%&luy6vcm?{gey54%#Q_a0k*CulqbFZjF^RB-fXgs0)WyVGkp zB(U6tHT6lAEa{M;x6U%c*) ztTP}C{f2z&4CQo@>Vi|t*(1hwr7qjH(jd5!+7uHz{V(IR`>t^h zLgFn7+7{U}5zjAAt5izKbUu^YNU4j=14#X~y z&&_!KR@YS(=zI9gaj+A`K~=@+wqA10ysApxOt#%x1Wst1ip5>I_W7XL86upTqLY72 z`_YQWpkQVXVR3R><%ZdJ4~M#FnF|s$jliF2XMzfRSZgE6Iv&U|ZT+ROo~g|N*UyDa z9E2W-ZLSqd;L6{h&@xL8iu|-3#O@aB4lWdPWH;t&z5Drfn#|qo1NYOyTALNEFOcmI zXj$!0ls%~`!Y>yTXp$0>aQ8vqnniq6rep%+PC;6okJ~`s??NYbhb$x+J#8tBesR!LQpHH0qonWL+8O4ZuejAd+v zE<6qX@gGayz&-VHu3TF_XV362`wiI^f~BS4IW-i{g;+)5{^DxbA~mR>Rk3dMBltnS z>lp-n9P@{x-%gC1sWil23e~4F&W2lCYFRxK$#~jS?&6T(Tby|HEz`kQEx{MwBq=e{ z$IX>CFlN@qQebtWnng7p!RdDp{>r)5VKG@R5@0U|JXrQu8X!>S-fX#pP_fr zTEO_V?!}A@x6;FBUOx`x5xp{?va{!yLH%CLjLLTY1?IHoR%gHcBC_#}nORCzV6h~5 zcy^0rk}4s*GI_z;pIAX93>D~G9Kp}s$LFxjG%d041QOUf=V%qrRR$Zn8+=@omPl*S-V=5TTa)PhQOXKoqre|kyQEso(MKkrJGM^fioD|8_BfPGaYCTh-Xy-Lt zK1YgH_g5QJ|G0v_`XuO$+?f;G7e@8Zz>)cFp(1hn{;p|>H>&ONxwi7*W&Mgwky3m9 z{;j;XN|a28)*pXdC0pzfuN=I7^>ZfhW?}|^ zrz$WCjxto7Hq$)+=0%6wHQ%A0z&N#kt&U>XCnK137@|N(dgBp25|-6)ZT+itaCecN z4x6`%f}RjZ_i~n7z|o;;jWP(2Rhqi75=WwT$Jo4u2=*YPl<;TcrulUh5PS%K1i#O1?^nyKJ++5@C#r8zb_$Jss zKPQiY7vR7mvt8AdDrua%pjNp5V|&4krp7y^JBhnOh|lpl<)6;hl^s{~Uloo-J3|vO zuKF%^)h-0!rF)b|!>Etel6tT-IK?A248DI%-(8JK&$!8XtlI1DX@g>KR}m+cbi=84|EpZE!=GgeW+4g4|dmCD}}4b2BFg%ssv<6u5I8%9i)h8d++M#S=m3mbAA(~G;} zqgkAZhY%GV8lj(-HM&HZi~Z_bw>rl?3cRzV#&A2f8?ytG4RriC@S%y3PtX&&?!DQ$ zxPlB97Q@-gKz~kH>py&5c&vU=TGVQx=&~i8WPxZ5%BU{%<0OOS;-B)ay#6iGhx|;J zA33H&$$WSYW)YyT-NLUc2}o;6p6RMY61}h$;?nmiJ+~cu?}KA)ObCg2AumkRbJ_1| z*%RWX>PA1W>3?{->HZh8$B9;gpxelG?JgLHuSp{H*GE6EGKlH;%^HSV zTQd~C9W;p;M-ZhHTuKq@Wl!Ce>3-sud?)MK|9%bOAdDj|lx zq62LShCQYOZOTP>_leKh2K&4|I7df4lb2uMx}U#(uHqBnhxCxg`qj?f*;|T54H?dV z#8&XTR%C{cBW6*JwPYS-4>`Q&cg09ZODIXy3T6cRW#Ip%k^c&-B=>-E9;pqpF1k{l z*HSqjtcIoiC`BgzTL~(8qf@i_mG!AaNi6OAq0+I>fo=R4AGb$-QYn68wAH6q@A7r? z7kSiw(mf#5QszHWf3}&p4^snDLg!JZ-N+edAIFuK>t;&m+QgHVS!%+$xny}{S5jDS z6VO*oU&ld4QT`b=2!^c zN)y428nl;mVG(IMadmDj!WwSmz*`$<{=uXYMPZrvF;m~yK9^vo9^KhyVI418mME8Y zI+$|O_ptj!{E!jnK*pY);+!C#H6?v(L5)E+{1I+5HsCM7F4V15l{_1Ss#xtH-+IyI zv%#=+Hy*iHoKS|lAChW}MC~R#tnTqgSe^r7T0Mdw!7CP@O8%0Hv$UXX6{=DOV`XdU zLTZvc71eW{4@O>PJ`Q{e!1C=JWx8H}f;pGU78aAMMyWJaEqE>LBwmV`jNhaYDyE>g zDd2-P#v0WbdanI5TOBx$bxem}yrr}UVog-hqN9XzP)I|5me08;M`y14vLK~tK0j^N zyze&r4S$ceTG$9@An7an<-s)#fmAK{L#$0eOMQPe|H3w9Ttdn&Osa=s z0O>b|9(*&yi&5rZ3DB>e(rW6<>{3#kN*!Xu?(JQ!nq3zm3-R@w$38U`?_zM4t4VDp?7PT? z^CI8XmWmtyh5WJb_Zqk9%C(^%v0Z?b9XthF8NB^obX=sz7zC02*&yp!CC^povz8W- zK>#@cx#6NrD@Z9p7rhJ)Y4`)xZC*j1erQP3l!FF4IWKo&q;*Y^3syVlP&nHd-w9m3 zQEsc{o&NYd95Y&U-E1i0zM`e+RHz|$=6WXEN4^x=4=h?jpma|ZDh%KMF-(bvG(bcc zia&?oHz)T>%SH=rVZ?3Pj!`84uhog>Aw(IX5rLc3^ccqFGF*NM8*ZWQk6)kjU{iI# zVBg0^TR1{~3XGLJ5Ga{^J-FK#rAaK#Sq6-!K^!x83 z!FNX#b6y@lSvflj32r(-HRG1iCTI4+p$ zOf40xM@XV^M>*9v=}jU2Ur2)sH=6Xofek!MqQMzT0Yogh_$7X$Y=LOV$#1Wm$#d;9 zPUpHG%#0E(%Y-QHja&bMfpFKH8>%TUDxp2g-_8fshwCE;WLk!DQBb@Dw2tseM4D#!d+M!E1qcfNz7O?h-mBEK_?gk*Elh1|ZMS!{dc5cXlyaS=> z*P*lKHLg|$huavl2RU6-_*03VHOsC$Ut(kzhm-zrF;ok;CR|&&>cf_dbYCw|$HA+Z zsTOpTlL9-hqMBC-(aW-5t;eu{A2xacEM%X2l#>P)#amV9T1x?L_*u$rp?g$ImB^g9 zHH`j+JsKWwt#EOd?RbN?@$4k(g{W=!U&R}t85RfOPIipO-tPvEd{CbU$of;!01JAb zDZ}Z2ddL|;#iRax&mnBUrRboK@hL(v8fxtfQVe7I1)xzq8puiba zlA6B6mATsc&bG24x8bJYg0;d<%mN6A@5L*HfpJ_%Ig}FDo2wXF6^~#~G&rP|3wO}n zE=XoRM?BB|ucgU6vb{35^G&L=&1&nqG>UiG1$h0?q;txVLI#=9w2Ax9zMka*$LFih%#XcTNzba2rgu*At|K;RH`-@OYP2A28>*(GrPX8n!#_iv?h^JWxC zVOP>Y5rrBi@#zNzuZ?~!e_5$p3G1$LsU?GbZLM3-rE}U<3=~qs`LUgnkz-Q822Y0r z*Wi+e%$%)ruXpCaHgAj)Ncu9b+LX7NzUi3b7oFaTvRL-Vsl2MG&kI_bZ2gCjTXgmP zWJQKyA%tcZKZo=Afmvwmm<@I;I(Y`dQQ)0o!R+;h=W!@<;L#>{m1p6Sbx-rdf_~iR zJ9Hr~@}i(BFu#_)#ve>{oxAir4d%-T84L()P`2c(=5Y9Cvv zdfjF)bW`AC^uI&m)Z)_OJ`E#w`#04;UjKDOL~ z%kTO6LQhw8Kw8HRL2UcCC`@vCj(7R)3YbW7PR^VQ`tJt3)37Yhuq^ZQ%``#C$QSmR^pS4N9%isjOH4nEks|S0X~OhqhvwwUVAB=Mv+GIWcmEFnm8y6@2iz{ zqK+Q`zuH{bU77||ctJl1aPNy^OvZ>C0A9oK)>-G1{%3x%F?x?bO}05NPqnxE8U(Fe zC0oRZX{m&WtOtkoy_^UxXyt|jsgN&=&SI^N+r3!s5oDKI|E@W3qpUrW;H(w(avXZ>lOWrlrmYi7VnlN zub{v`BazanBMCGgWRm222J*RyiGo+z{-tx%3vNWK?zGBsd9eN?JAtV1arJt41hsyd z%;W2iRTqSJVo`2JDetOn&5VsN_!_@~qdeF+b&!NM`}`<)L}SNmbK(l52C~4FE_}+a zdia?eswnt$THPSfXJUG+vfK2-{D@x|0cRn3H&;J3&Ddi`?A@U_y$k_P!-JIT!ajZM zV0Ggj(h>1DfDcjtYChfV8XqYtLBXgQjxj>9R8s3n+!`lRe+DJ7le$vtSHQ%6?DO^g z6z&XxcC|+DE1!izdi4P7lH)|ni1sTi>%e7auNQ1zn@K4MJ6f%U6Fy`wwOf~6M2p+`80%DpBOrkbVF4?&b@u{&_&$lcQxnNHLhoZ|a) z;BL{MQaeI9w;kq)L({sID)s$$|Xa z&f~JEzmQbns6^`kc!8DA^kT1tXzv*8fMlhxUa(xZ5@DTSNJjh05-|`s>R|FC>yW6^ zOeNRJt9)Q0H~to!N=D)OVr9y>PdLLGsXtxkbrZEzL;We~Uray?xl57 zYNxqjSG3vJe^g-qr8nIgt)#I>Vy8gh2zGTOzgW_ADmw6F8LCDphN~<{a;@nOp=~BN zl9Y%vz&cB9LMcdPAWQ1ZURWx`b|AJ4_$#q<08(IdHFjdNv6k7lHD!XBU|-5jjW zGN@2|QCL$W3e&l>o)cOA$)1ALNPNg zR=_Wj&1APexi{FzMiSh%Gq+bK4{X>-nnS^r)9 z!`t(-$alVGFp@tCKMb@bU)^)P_)%-H!P8*>*X)I#j0@7YB<>d(2hBa{+nfr4eFLUt zC&;dV-cql{$?sD@%BnWnkaee7rBgb}%%Hc4JrXSh0xc3zjyVE_(h1RC4^ffu@tYC8 zZofi;Nc4mChsb!e{x1z#1#h9h;BCxabWMW zxXtaLNSVhpeU50Qgre+8&Xnntt1k9h|0$~B#7PdWEP)B?{Ud6P2|;zxJ#yGQn!o>- z;(OFKXYVVSm+iwO{K^n!H5ijQ7wu5TN_m9$(-e3x@>)xzG2F1P=t((Pmquh1B%!Zq zj)DxDv^0XCPD8RktmguX`+U z5dfzRFRH9R#WkmyPeA;=vH0l4r5)!!&L8LeOq0Q~$c-|3p(10J?kXkMhfDXCZY=&u zA1PBb%_$Xk1D04>5ml5As`ecW2H z^NqddNV=Wfj4EadiVQ!(0PA@Q+box0q}vD1VzAO&qs z2?V1FU5*CPU65NzOnLqBv$x$ZfpYJYhUK4k%PokdL5uh#-&3eYJcRXM?qB@Aj6+Zj zigQ{Rj}C;$g^PZvYKe#KTP?7_piVb?72`QH_->-t&F>FnJ}GD&{Lxi}#NSgeQg+gE zxb4}=?OFlv3xqtxo^Njjhvp2q-B!fM0E^d@9LE`{{POmh!HaToPtp^vYYv?9(f+kGyJPp8TbNR*@LL%U?T$EyuJG2pD<`z4vn07nr&Cxxf3| z?;od_uk5|*yWX{SOZ|dW7J{~dJ78XwzYo2N^LE{-&r)0+p06gJKs!m%X^M~n{NnVY zSN4Gw;~4xs>m6#Bx-7nL>i*gdo_CcU-Yc1~%t~1oebgaH0TXfP;|J2cNzj6_MCBX# z-$RcFc;^Y@C*#obLjRIf#D7zkQQ+9X7g+c%;L0V1EiH?wfthA`w;2jTf<5adjH9Ei zccLUr&wKAwXQVCDViz>)ywz|I?&3<%2$u_pZg)ZAvwIBv-dPl0N#Gn3c>q#56Repf zK|e6(r>LmpKlB07#4Igi+{y}a1}Az57W_dqP2Hn!>WPFS@P5c^jij}TPx%#l-;dg@ zQvJ@)cf7Y)wAl0kC_TcT({-tiK;H}{!EN;Pa&th1U zV|y#0m~SP}vpVm$XaZ+@RUV*B`rguF^hM2}ye^5Rlz>bu6*CJrq!-$V3qPb*=VAq} z%<|f*1S6!Y3*eijBCh2MGE%$QyYwy`mE}R|{ay=I3Bx2S?6ZNhqwNo|w2N&+udU7s zd|Z`vZoSC5{K^1hm}eR7CU_a^K)P;q>@m&xdbZpczbGX48|8W)$)*{eJ6)u;ZLIet zxHESi<6%j;3^-aClwIL|s8TxBtsIgh)hx5?jpgUZun(dD$M!cwd>ww`MRC@G{hL&9JkNFB$0Y)YW5Xi3`sDYffBJZ?=Xfh4j^YrW+(vjtw1xVs?bX7x z6&?sOmx^N-`4H6b5dN3*h{G`+F1J%J0j&!Cdy*)CRx$o3t+4*}+|gCV!==L$LS%U> z9<&rln5vNFd=<9Bb-bmCld2YN=RB^n?O}Ss_rcoqT{UO4RGdR+y?)YqpT7dDXpJT_ zhLRVdE(OKrA_4{FZ79tne#okLaLMr;N_F^Dm~kHxb%=52yIBF^8=#>nx_xDLZj>m? z)CmMIMlR|Jk`EawnA=^o^JD021hfOhm#BcGI0nEGu||BM^n1U%c?p*eMBO}tH!nSR zy1%?4_NJe?XV)txu7MyXi%yrSbu##;Np=yAENha4NC5pk((wgZFC022_oRsIH9j}c zIs``gfx2UgQQl!!))sUISH><@*#GrEbT8Gr2M3!hd5`yQl%VGoT7P7{p)_iz#TZLr zHwQ@k@AwO)-e1zj`5f_ncdMWRDl7^2A4?v8BwA$KLFmoCI4KlL_hA~CbGzheA-~(; zt$+m(25;q6%+ElKRGFhq!A?+n*(_KoH*xhVfMAZF^1c@LO45Qw^ymBglB%|mucLHe8!PLgvE$sXwyOguIEQAtRsS2FR!NKv9-EJZUag;$Fu( z9RInh^%!|FT;aD*&K%yym3B;U#d%1aubH5kn?X=~fTUVx+@(;wHB#?$R+!Mn+&rWH z!2Sov+XWUroMp_SSP@qC^lw)d01Z#g`32&k*#9H z8Xb5F-MkQf(uexNFXyu}%LSfGW z?G*9fwkHb?8~Js7mhXr%O69GiB=G)O@`h|q)ueLrJmI>V#Kbq^5Hbc2+ao5KD(Aq`NU@7g#T)8eagF7#V?xo8+yu~B{i)HyUX$b;k3I-p{ zg>_}n{(`1s*p}B*_s2>{lEY~VT2U~M{7HX!QuX??pi~`OB@~@{*$e&vfrT&&$-d*aN_MoTBt{w zURb4i?{Re0XBgh8o^%!;3vZQDG5FR3(k}o`o6_{VBQWr+L%-KSOkAm`eXZiF&lyxD z;SFS45SRCRmw3&6aO+b(F;Dr|Kb$&F@;SJ#YC@r0S>PX3t#q-O*a!WO*t8xuq=qVR zuQu~rnRVQ~C9uA9)I3vGBPmL~s*Zmh=t;vgYMEWf!a$>x*Zr-}kD02|a$@?Fw5*W` zPvfHmKbAwP=@AtO_i>fl86gQ)Ieeu(B#bCFBNoTfqDH$c!ap2ef|eyQ;TX%+;=AL zEuiT##d8ESTlJdg;0)8mj0}vZ@S^LPmQOR74FEbYHXRUqFrE*vrVJ(GM>jvSMP7d*s^f z?NH)1UX`PTNWCvjM0d-93`Ez+(aUVdCDMkBQeG%*OsS{`x{?fugRsPW~^E%{6s8KWBtk7`coD0xu ze37`P`Ld-K%T*(b>WWZOBlv>7OFp#~nyfVn!t&zZs6-k(fgOo=@44SlzMVbKCp1&l z_5UF#=i@F_we2X?QXDFmPw$ce(vi7Jc2^7Dg03r7w?r!JUF}_Qw5q_Oc9qhRLO0z# zx*DYE_>F{Q_9r`IV~b2{`}x)JU@kS$c>X^_6vI<)-3m6@Xm`Q7;x4e_ak!;8!o=DJ z9s?#Gj7LBdcC{*}S+QWLYMx|b1X~mzo+btO?YKwA*|JPnn|G*uh$o=*r!MMr1DiL! z@S5{=@5BAnnD^y1Ru?8^vf&FSk`;)7oq;M3nK9pL)-*m2>bC)PMoHmE`u?szWHzax z@7_xC{m{nINWpwO%HL;IlBvNY`Ki7}(4(r#4Tpr#@WOCMmgp4S^>{>Uq{<51Sy1ne z#=&}>tI?lGcgxeZMX6pl+##T|%l-u)MPvZ~CEo6-mQK-yLmj0cJ-Nc*NQwW0-*Mz~ zy3ul+xr{#E|8B6o8d>qFYpINomKxf-)u3jiR!_2Wg#A*RwtlcS5~`tEyhS@okP4gX zSO;Qow|p!hW4HeBB06@h-5mFXVb2UYyi}l{l zi_K$1huKf*4)T7(8Z0;@{H5V+1!FRsG4t(9ij@bx+$~s4g?!1O z;1%IhH9ETh*1W}5U(rOKB{4KDP=*uXi_2xCO%Q)U%R<7icRhE?P@%avdo8YNq|N+1 z%tO4!XfPL+=mwm)nIKwQ7CW}9~bNadClCW1kP(@tEI9>b>RU9-J>(Exy^a-7z+vW$N~ z!%E+KBdXu)#PCuR@$xRl@ZR8GoZectmJAHSf*>oUn}h)IAy9Qb)F_ zX$k?-1`PqqcfS~psX~T#iPvj^1O{NEwU4iO@N?9^1)b+o4kt+3^xj$r(P|-t>2WJy z=QV$|a(la4#C2>dw(p;i?O*h4A86KmRDwyotjdzkh&RwYriUBW1H6tqFjmC^#GCGz?)pDIWtM;xx2cvYkz}Z+LJkm$kBt=SfFHr^U(i>%Z>xYY&KBIkD)-LMr0Qv>7|0T*l*XwytSi(P(k?r(m{P&^tPGILmUL)`TX?N0V$2)3Q*WQ<2sk!AsVy2F z6ruQpT0{z(iD6XZ! z0ToRhiy?hdOphgAx*4K2&fKa1w@Z1W#UBi6qQ3t^v0Qa0Dvf+=r&laQaTgyl@#TdI ztANRRQ|-JCRUyEpUev-6+2H`!gAji&rfMZf#-UnlqR1R|(t7!1^n0gfl z{Pk$5F(@&E%A%brjh~z>#bAP_B*DI&)8^spI^v6yc(Tu=} zX3RpTQs-C_X~Zy7*}b(Ri@4)kz!G8%4|+w8iqJ)w-mjw|MBp{0AM*p$pNnjC|akwt3`&Obn9Q%XF;s}5Aw>cHJ|M5Kvd>_%K1VL1{BvOn+ zDZZxG8!4K?%F%%yh>9M3B`>dH`j4VLiZCWy%KV+YdoQ?X7K~BdR`0 zT>Hk(L{|ueE>HVsM2GJ7e_=Qw1QoCx#*9PYYfQ7);eW_{2|i`GZLn|n19tL}6*QOF zHNo9~p39@d=<|FmTVc~=$zig@d;TbosIrwji(P~mln=n}eSJ9-sE4b%&0tSdl4q4p zK)9^rOFPhMV@FtY$P;1R>$s`2{DIyKb5j#D8 z3+wk15|l}*Zw|QS*cYWq22?^sCi5|<4c!S{rCk+`q|U~+$t>N}MUiG7#xhSs+azm< zCP-Ua7a0IANegrtUt|Osc~}u*Rl9#pDMGrEdZ_$a0D7aAvSRI#MMMr)JreH7Ywk1T zOaHzHaLcq@by@-#T3~VGG#1WJsG_anaM7KsET&noCyy5f%J!^kXw!s=JhNyPkP|7X zFsp|d#KF3)>kI5H+ru)xN0`BFIx5VM97r0$>mpv!u8n7~{G_+8z^iiQ(Zn!o;DZmYZAcQ`{p;70B058c!g zkY!TzyCLMU3kz>E1m%MOpHK z&{}%v=TmRrVsDtu_9 zB6QE;yWCNVr6oYF<4(DT+ttX^j5|7l;7?~=*9Z4jgLRl4A@HIo@kH=GX$IN_8p8u0 zPZ=i%zF5WIXK>A+c$3ewx_D&5io2c0Gs!^^h5b6R<_xm_-nGgWi6(ClcGG|}zKA6H z+YXl}6pcU*rd`tja6|>TQG_GM&H}9mQ9kft&cz%VYY`+b2L_o$;&<7;Iy<}zJu`NZ z@LfmTL3pesJ){snu_xN4X`FDNHINnT-dtxA#AB$}iAbF&aW?LOZ}T)BiBT-b6L#>Q znejR6@l4ZYw2#Su!4J$;bBVIgv~&b9CGWhQ>@ZV zHVi7URAj}GD5t(*g*e2CVenDbf+PHUg3*hVO}HPPt!Xi>8nsOGE z!CEGcSl$2xY}^L|TkhYR@X!)dX|9RR;^po2y|*8^So@oo`qu{+rzsyrU_){$Y0tZfdm>DYTOOU{(i5;3WW}1+!1rKbO>?%VKaRd%Qyx%bNj3v8)N0?g$$~S zX#!T&AqQyeD9q06dmpO>Htbki*ca$zy_V7?SGt59B2J-Q@L<)?-h?W-Y3K}|f7i}4T(U)6s&sX0;-WtST}*gZUT2GyVb z2BQLX66^EF-?U|Svs9q+>h&_sa~Xd4(=*?g4QB9jIRZUDCNtG-tK_r;C$+XuMXq$6 zs5jj+-vh9B8R)Iitkrrj|MI=bH|1FM-m5iJ)o7OobJMB!PLIxYcBa+N(@0A+O*F+V zsrJ0mRrNyIg(`zpalg|e8(FS#yEhjW30uqG%P#8B-UJq1A5j|kLCd;nxPAx%;Gw`c z5$z~=hpUzr9YUHOP-16Kyrygb)w+@La)>rtcJ-5LK*q!mE>BIhj$a1`hqa^x-RoLdknIIyfPxCBlI^`)jr9R1-c2F2~mzW?lZ%QriN#->Pay- ziTB@PvVt`!bwY`RKXCp!xYE-pT&X}&0Mxh z%kWVNZ!jMXH7d==-wK*web3$8qq&UeOw-S|PKWx+Bc;_J?MQ*(Jp?f?gV-kNO z$8RAp>`J8WZGRbiJBQt!3=!eMmjKoIG$ila@*RpW5iq)zd!QE8uc*r^3GP9aHT);I-zK2kM;M4jNA zm`Ac!?z(v0+}zd+Rc28v;ZG1n@)vA%Jz@nL|DJ%lB8-ioAZFa!GHHubEUUQnVl{K! zTF$Xbw^f`#M@7s$S6CPFfB-VzU3~};7WX%W>zgHIoIVD@DrDf`KI7K4JVtQ@aA$Hw zcgus|HEjF%>yz>~?!VY(xxf$s04*wGFM|GV(MvS{_%Jk0k% zyvhK-1cU*Lw;7f9w};2Q$k`uiR00Ba=f zj+}*_Emla6W3vzfx{R9bW%=u1da`TLj}bxg{etc!bUN;o{Np>bX8sg&^tEhShpPB< z5yQ;Evh+tzQxWWUpCT#ySJ0@l>Km#!K}mX>Z5ru#YTA~uS{X%UdPM_P?r5{c(7{3Z zjw!%2Rbz%fFcUSVh;GzSlnQ5qNZBCuR_Rd^WtGi81$gIDInh$07Az>4j}1sR4T*|% z_8VaxB!cjcXv4)g@Teq2YKxg_2JgA)%>Ie?P{_@?sDf0se}`0h03{BIj&vXqBh-!a)Tgh|8Ap z{lGacV=q=J-k>YImlSS7c&suXUy^EJkGR8N=K=~gqo378{R^ATH9Y$2*c*#+l%SvQ z)2}Kvm)LAZ7hZG}vJXsp**ng0h2#3FdQ}Wi?4oE1R5D;oX+kjA+_{b8Y! zxw=-5fA?#NX$P7R7K4c#BiV8G+3XpMRwv1F-!|&Qd-#H}T99u#P3cIaKG{jnquA+< z?8YIN_0J>Jhih6o{GdoxbvNA<-T#BuxFjT$D1kAqP$QIJ5mk|l-hHBPf z(#QTwO@()Phl*_ax||h-&$Ub~%XVtC6FqEPCbI!r<-eh27LM7n(lw);3EOSh;N{Q+DT?RlaulY;Bq2)!1eN zupVc0IX+C+F&pSPJ2D>*)f4dd<0QVr@~M6rsh!oMaBoJjRYvs)+%ii*FcBkcqa}hv z+rjZas6%H{WPYJQv7_?$2a90hIrxi-JuCYq-ghQP%Iy}f)~%0e5tjbq>hxH(nuGZg zLK1N~M-TeE?lZt|8R0DTi|?Ggj*prvO4+&Sslg`<;Q$Lsci%QGxdhRtlw@o0BK;L>7gXt8}Qb3p+#*O6sI zt!cRo35qcVuRbG@?tj`9 zd;@-0bNA*uS@}yB%clw2Q4O!#r$b9I!WF>zK%>{qlG)Nqj8`@KyqtY|tRgdS+y`YK znD%l~4p;rR1ZIH*k-kM>!qls9B54+ER$jODroLkhilBHApg!JGRlvsPgCRx;TN)Ps zIL={s{T95Zsl>=V=od#d-vGb(?r+z$6k%f|ID1*6cvs%`AN7PVcQ z`mBmy?+*8wc#PDJvCq_HWP-l;|MEYax$gyci^HRv==o8Ny;t--k_#7tP2P32?SH3N^AI(?3dP>W}yNV-3V{`^Is`{IJ%ymQZMdpp->W}mIF7aBriO{>$aV1pV*Fi zm4hyCtZk?ODLvg@ug>33)dj0`j8db&+P=jO0z{@^A6xK)R#L#=kcS*H< z`o%w>-C zdeoIN>!FxiW4b)g8eV^9ukx74D_Jq%=hlo4t{oDM=M4-|v>KJeY-i?n~=oYX%*IVb^bVgOaNM(Tu4~Gk8_8nQq`Y4s(Oqw zyOv&JI0;igW@Nsl!=<&BA9v-bMaAxT3;=WwjU9KEQ_B=iYo)|SfVe7qPYi#(&7bK4 zPHuJv80zm`hWccW$r5=LjuN2gwo359;4wGV8QgZEv4TOhw^AS2|3`8poAms7cggl5 znzFm{DTTWnX?qBMPJWTW+Pa=^H#c^-lE2o)iSa{#k#@&LO2r@yv<i{#?U`@f|J?!!!D|fseHi4?T5Z~W=v!N3&`#Oj|Mch- z9i$)_awXk?w`JKS#Ol;9-xlJ~X13ZjdDosf*)^hFh`7>H_y5Q=q>`W?aBnP=1&n1{ zIFw9K+2{%r5EDS4mF@BIwYV^k$9PYT;7M4$k>R$4RF-pAuI13G5Ay)t$HSNg7Hjka zgh%qO$ZxWLu6FgxbkB~$KE*3BR5vyO>Q9zei(g-M4ZcX_Yx?fc(b7(z{es3&wdHJg z-<7NkHwhVmpTei)uwzk{}|A|L~GjDn_+O%;+z7jV(s9Q_DJ)oi~2#l#(?( ziL7MwZz)SVTu{&yzZv(u4C%JG2a&amZXE35K~&3`^_HrZRscvtT87ZjeDfdF8BwZN zr@Aq{XlP!kPzXk+F;~(d$CWO@Gx~x7z+kJ4C=EdSrt2UtQX?ct@z3F1cM$Ism^wf0 zBo;@z6e>v4#zNu}@G<@g$YdJq@f$a#Ya{lZmEQHct6-@U287224)G$b_zn~sd7&qP zFM#uW2a1xvBc+^kdI$C5d@tj~C6FMnE}N8r^mcH+dY`uo5~UD16Ogq5zyK<_TW`;UV7%jxAxw9LcmX#WNvQA2c$kcwW2ZegcJkg8%`yq zJ{%$_n?uV(hJKxt8{a9Evxcj@zC4TdH7!PvGyOD_>L1XpotA|3LY+40%#KBHX$N_% z${92UX%^N`kzt&&;!u&|UhUQ~?NELmzh%#0AH_G#^QqmFRdFBR5m3-7%u|2OHt4Eb zB2c6r0-?wz=B9D5`-A^T8kgu_T7*(b1Pwm!&X+r8I#fZkxl0!nSV1 zc^F=flIA7r6J4>roDe@rG{opOF~W>j9XB3591@}%$|oP;Rf2INThDy-1gxSFKOHFT zd`9@R@J(YfGUqPtji&&=Rk^~=$@>Ecm$v`Ll}7%auL346a>7PP2w()0+8~s>q>Y}; za6W*t6{gA|N^)L{l29wz^+P~Kwy^qGA!e}Hxdjnp6e>0!DV%V5>;S)}@##*_a0A8c z)>sp?gf>_Ahg{-l9Ci08l5#q4LRp+jcsoO%t3%dEQlQNpgwbayS4aU8Cq;g=lsNr> zm81@S_^~kY%TaTY(>BQp2?{IgJwg%|h&IPk**xQ69u4uBsGl)|%leOzTHOqm=XmTO zlC1=Mb{ROX%Hok0ui3S81mzpl$qrK1|I)7qI-vIEO2~9n-rt#z1v^LntU3QB@GPBc zNCArW-j0sxH@oPwq5NgEQ{qoz2h-&IT4;q)j(3YSIAHP>j!cK3<66T@lGKU7kmn?R zPJ_EEy~isSuQONBT5vdRu{?Zo7C3?8Z)4m1kdVmUuF>Nmb}$FY{XY%MF{Q9>JqY%` z#mP0;$~@m@IP(){4+!0!8tddP)U}4V#wnmO^8VohKtC@2;gd$s$nWRgZ+;4W?{EK( zu-Z)JkI^E$d*@n}fuxoSGUeN{K)AfI2-Bmcf=H8Ewk`J3=y~g5sS|%rR#iQ1YWOy^ zN?+DwAo!v6A3F5ispb>%Rj8IH82DfvpOkmskE{t1dO-4JJf!5}8lunv zcm&n*xJl1&Ym6k($Di#{z-&r=bX>b*;4A!wG=&$4rx}fgEo%l@qn1I5wXsydx{N)f8pNlEWcqI}+9s#( z@}nhXOp?Gk$uG=Se-6ze$0^uqt;$>*0_{#)Nvfqv+dch1yy2}uhM;nOr8hi8bvJ#| z%gPWE2osrwng0mkSR10avdf_a*`kQ;WFmkXai>`I8XCSrl$j_+<%iuWU2js`^!&az zhy|R$NscQ-tKhsGcRVY<)-@}j8jh9Ier={ZbTll1M3S_%qON`yE8)mm`|^d9ASOV= zg$j|mgr}EEt(*%HP-m9Dkp(lsV_xblUQJuE6z#=uy9zm!(k(txD z&YVoa|1)b-j5%x5z^4#$;e|f`wf2uZi2O@L7;L%VVB`qfxn2EXgr3takwJ{kf+6Mc zhDdV8b>4q0bv%?m=szMwtd(s(-m7y|73_)m+bW${D*r%}VY%Vy|#iGk5TX&Sty+_u!#4$12V^piCH|3?zyx*nOm zX4H*o=yNMXEsBk~Bb^TgyuPiYFE!Vh6HZ3Ih`zV^A@TWAH3|GbD*m#rlMukxO{qZ& zGm>$8TJ9${CL|iyvb!)V$lJGLMipzS-H^~80^ZzFw6=Cii><4#L80tM*y)@9xqmYA2)p{Qg{a{zk4%v?&60_;VLH=gD}kh*iHhz1)B}OAhA86DTzOAT z$vylG87a=Nj2frFe01yb>#Q9cQ>b&Oe(_;>GIZyelrFqRp9epQ+W4lLmbS|k8(&ld5-dh zc1oue_}~2AdbqQ3AKU=lgj~{Me@^3s_~is|q#_l+BdWli18pTJ!24GxS}BD6?+Wntzkwgj!3pq*>%Fz|>2qh3=JVUdpG zwxTuh59A#~5uGiJ4Klo^k)=b~y~AMN=w7^OJ(_|U%z%E0S8(Q}sG*OmXa2PWEEk19 zy&fkR81jF{66bhq78-<(R8>kL3=6Y>bqXe|2FYAz;N|vp`pSFq5C|rB`t>oX(c!CB z@OG{{wqS$9gn0X4+`%5!yc7avZ`otGGh$}^)?*u2zaa|StlV|^;V1XMy-SL&tKgLA z%DuTWOcFY7D!p;<@#z93n9=l;>AcW&i%y@XA)!BOwxQQyz+%MSfW^$~jlL`WYjKYg zcCZTEd5FigRu&MbSj={G8ipwhqVxj|P`*Wcj;TbAHo_-v3{Q7|3yICm2m^%c02s#z zsjqB&qO)RZesktQ(!LR2dMLkOrX{&c5q25DNa)gGgd<9R-;8e58kw zb%s#MwYD5t2Fnv*lQtoT%xlVqvUoHm3XD#2k(cL#FSGb6KH)76F65^H)zgE^W=2;M zdoH?17$ZvUG<9VR7WV^kN%T!7hB(oL<5(W+xNfjTwLYcY*}sRW`G4 z0TnF}acq&JTF5fiT3z^|GbrccZsV2r(O5(fv(pR|qs`Mf05c#LmG|&%Q@+eQ>}KvqXyHr4Uxs#1Qe{kv zUrSNfq#l2kEtS4$#&{|%tF)*<8T^xWLPkpj?+0p=>aJOFuUgd{hfDe<(53p_4T;J0 zlY)S2f7F~Dl-l+B)_i5tGwKks2)tuZV|p#S@PV`zPZO>Do{r3J^kuZ~IT!QXj!L9p z9by}rx`pHcB^y#`#>L&_~-VcoDwkDE6y+uH0)4uS@# zP9|+AQN%!lmAx4`BM3^H2P0b&;7?R&hqvqJ|B_IDH8c$46<}fsN=~ibwVmkIb?0@K zoU?V$Jaf_pl)PJvRyE4A$!i-l0lzm*l-{ki_#TdMcB}!DSw&9fgwBG8pVKDf{ek_b zFQ1fVuEWp@fIV##FHh_Q-d@~O#C*L|Jw017)C?#`5Xr=# z_{Zl49LkppmhFJETafnJGT~z)3gzq>IV=aPF6(Swl88`ab}8grGP*$e`R2WDEIhcm zKMSt%_jEtyojlj7lH|{YesA4tpx8MztfyWTqD^Qq$5LmDL8o>b_M)pu{|;y#kni+K zE9g~y+J-@UiyP`4`9MWNZUY~Jud;CY&0n1C2M!@97|_}XDZpf^Jt*z33kZ*mfBrK~ zVEZ(FtGfMA*pB;?C`qgv-9y$&P+D5W2-eW-l2X}Hf_hcOSpiy>DV)P_M7)brTAC`| zRQ><*c|VGzZL;%!^DJeeKB(r*rgbGlARV;`i{2!FyNlfHhI+HAo5eYUI9HOeDpqtb z1U>%>LfjUdD6Ir=+MSMfyDRh{3bIu&jmcySL8){ z9%894%|}#7-xeI0kOJHX*s8wTqJFlFNB+-TcLLQCDu%M4rWtBzOfJ39xgH7zCp3i3 zZEQ4^v>L_Ez-Pdi%c2aj%mqQLrD^eR!n*3ie#}(57CQ?_Z=|FOv3ZXGh7@P4{jY;L z#31JI&14>u=$m=m9A)M#8ZqZzp{|;crGUT|@M!bvhu(Ri7~U`|gh!5Ci+4MsDf#Gm zc!Q0G>BlS6YeO`&ZF(I{2B2sWS_D&riM$5~%VB4QJzv|iJZdTRHQa3myqO%@`JNI$lS=)`g+AYM%$QelTf zESlz>7kcDTaw4L%<|7vG*NKANB}2^+`5;%N@8!6yIEvq=tyA$P7YvA23{q|f)P}jR zL<0u9>FJt##u+DW_#ib$s=CQ!({0DS4Aegp^3b6Xh| z`#P{#SEy)hK}U)>6{rAn43P>SjH2sxFsvg~ymwbuxh%SU^;QMXw<4F5v(2;a`KZN{ z)U$xz_ZrD3_2u0=nW;Sg_?iR}k281WZUzoXi5s~rHJI+vRFWQe%I7q}YSFsNVVOS) z*^w3_kBx_#AVe~Ky`*;*Kb+HZO@fwU$cRi3rPZn*aQ+eXoK`aa!2&dhu(kBvJ`Gyg&*p6b8Qt9_))3j@RWeB zFSepFJ#4F4Yrh8<0bAI41>OZZh_!>$k>Ehb2nZr)-qx+F#>M``j&d8$r{~x7UGgSw z-DfuH1AwY6Izr?cC>cqKeRFFC=J~|tAK{Cvy1vl~2~qyVbg1hN&Q%rYMY1zQGI&WL zB)L37O#)K9j_89yV8rbS=)xv{}6pn&nlQYRdflbO_b-ofd`ElZe;kf0XmV z!VC|n_3q`#OuC#K6_9Y$&-GYA&m$_RhL^F9d_d5%(xnqOYqV34o1iLV<&@5N8Ze%e zQx+6bW-8pQ7*BF9%6T&g_+T;62*)_x?PQoeym|`g^*m^o+pCX({6c^@4lZjKEv&y( z3NS%+B7u1Xq}q#oV-`2mCF4M>OfsQOK=lu4?I?lqhAT*Law%0mv(E=e=;d2Xzzvy{ z3)h(a_#Cx!j06+~zninSGy4qX2j3#dU7Y-U0qsPdRTD!8JwJqYlw0F7WH5hX7lY({ zd}tsDvc#6jH!^{KqqwtH$Uq~zqSyo|*}eOw9 zM%bGU2s^CHH3=CEg~L^05U}pAa*w%zLylsgRLC`UdpnX!Sq!C0Z~Qm7XtHIyryy!Z z?jD~k`!K)C4f%)FuhXC?DZ9i8+XmM;j)@Uz;&F7SQrC~%?`zn@=pHa>MHNOPv7(v` z>&_!{LrI!0i2$_bU8`d_(0grU8<|gPF;UYKBwFAOLx{{OO<4?!Aj|QnZ5n^)MOvOe z3{t>UZXN?kfXiA?@uFmYhC7?{rG;K7t2#sq?=M=o4T$qmimM_rV9)fddeUw?5+Cm8 zgZ=l1<$FzvUqb&}g`Zs?*$2#d2!HE%phC2Wda3J3v6-Yey;TY++k#LjUKZW;XB_Om zpQHqFYPZC)7FZ)4W6+dwR;0zVQqeTd#%5RUtJ4kB{XC?p_R$e-VQP$)?NZ<^ZQF(B zNcf0{_ndq!aOMWZ57ko^nQcIxean7hDt&GmIkzorG-@w>J9xX1GS&Zs<_|BAYF@v2 zZlU2n<3>7y^hY$AUt^~4^wePZx@T-!lP^yu*FTau>RhDec0=s^=bVhAr1QfESQLKy z;Sce!+ke!{-gnOxH={MomJn6-Z;G20*eqek2=UFttuPONsV~vl?oF$!JE5_1JJC}l z|NYiN?%KdZg6lZk_ZT{hqSC24fi7S_=1;w91pc{+CmZVAH+wGF-0ei8St4uYfwXH@ zmprFhcVhwQMJ~OXZy#(cE(m|lRmkZeSrMIQLsxAHv1I+Rozj|?QLRlgS^+YeUg zFW1G!TEX5nj21C_{qDNK1=Eo+*Yl&nymmXkNrq3!UZB+*s|O`C%mnZ*|I&428;+bp{-XH1ZD|E|yl793 zLO_ZUW~SB=WtV;Inok!Rr78x|#yHQ#@_67Vd`i;TUT+Ob6{=@iXH-CqSw~Oa1^d#o zB^X1|S(OX9Lm#G|w6!W-TByKPEljbWK}$XPCcm_4r?$ISTd@6Iv~e?+FTmiMr!5a~ z!q&POW6(e{1zqBE5v2E12T|o2RTf=8q0Zgb5}p6h+PlPYdw*{T_7k<~n42!1_*e3> zva3z-J-PV?uS-vr94L3_s>?6DavOge8i|k(vaJlXklk_#Es`i<^>RHmam5otxQm#^ z4R}D}DSL+;I2Sz<;xN?74>bLlKC5j12Oj&IvX!A*DzETs*D}ZKdlzHRD#mfE)oO4L zTT|?7d{j=UI>%ZYq~!xbukd3+4Z5g!^Prg-*ph+?nQX}t@D7hpYc)Ee`px8#)8doP z+|l`G*Z1%S91fSErgYReW-Wi}QJdkt^%qkI*L118q<`MM7P{CmXiy3^XZ_`=8t%Rq zNHBE~v3!fj>A>TB&|8B#sS{MM;S;u_@3|L0iI>Z83!n5p#S(C0~_L5;bOSA9FHyAze|5Lb$Pq%Naf|} zCU$71K+Y70*FG`+DIDcM6JYo&!4iRRpX!w@UkRSA-z(o+lR7q5b2*O*B!rF@=3sQ2 zBOP(xZk|6X243vj*v6LbTm2L6*3H^GFzl;t1{MD|M3sN#xD09HZagz*LFM6sz?mlM zDY|cZz+~k>5UJy?_4hOm(qg5^ z^&=`LBF82vcFknzQe4CyYFO!f!b)Mglq64~QW-sZ?KVLv`EWM!c ztB%B~K)1(AO0KkS4WdI4yivA<%FB(_-BbU&^3OIatmWTZ)d-CNt*%LJoSFIo3}HS1 zjHu@-)b^<#P~~c&3b~x9fQn_#p|UT;ggt{^Irj!llq&gEkItR#AXzf#E<+!cK({u| z1UzGe1M3u7$o_`2*ZLCZD8;6rZ_ki;#L=Z5bL& z$|{^9Yq%SIC3T=Z{6g0PkGZ(u+;a@rt_68{da9k?b1#4YF;*~ihdzwAmr#j{I{=$A zGldE;O3yy6<@p1ug_nAGAV@!8$MDru>L;&nLa2=%T9f&E&yK1|s{-O`&1@5y>6a7Z z$ngSFp@Y%PG9+F~>~#jJDpgR6_1(u&s~~LpOrgiKGwn zW$4l^-+s&_+Mm6HEHdmO6TW?Loc=YZr%5qW}kt3QFl_1AER1yPYsTA9l2}oX5smfVba^Vd0NHo_G(S} z{1vO=mIgAN%{Fs4D&L@@5a)YSnbm9}7E;IG6of-K){z^YycX(e=*fB%Er94S6|3xe z4UyFg`SOcDwAgA@#e-Am|4nO~?RA;i?yY@u>TumM*5dD%UpLrXCNo5G6m<2#9(@Q{ z51}}Y-FfWkRB^Z5a;_zlZ-xK)`yG#KgCdy0Z@y)Yhdd(tl*-S-vp+pWp8fZD%MI8n626KSa9IVx`jq}@jEL6N*?87ry&C%mf(+3e`0Q{L!g2xrR8Zul9qlK>HIdY*QLPYwHsUjJt8yBWcYm3iD<+RTi9nb zDY7iZ(B4Z!DC4DN+o8L?mitxD>gitOr^@GUh3r9l(RNHpW`#(}(1{ZF`oS~vVY$)= z)wbF5$*?e8}?=qn=H)C@>_w|?>|AZBZ`snoi40(R*K8i4vPH>-y=kV-vfa zM1Cn&;SW^1ex06T>DXtB6Fe$1x!V(@HM`IGo6q-5@X6+vhr-PHAnqenUOkIw+MiwB zL2sHHGeOOgjcnsl8x1=z1XkNgHHf=1Fs#V(j5OzjK808dL^4p7s%NhaJ)I&QjytWK zK%cu3hgchYRq_;>WsZ++=9|Btjp|*&O=I-Ds*Re;U3>9H$A4CJ>0yjhdQ96yX~a8lLt}9#j^x`rp67?*K*X5hr)kIe-I-{B0)%E zYZ_X#TNyu1xI<7hs41ZnkD)PL0^1o=mhN9^#3&0F>*f^p2;PctdaLZCwU;?+o191_ z5>VbI0Raej%}2T(LuV_0zbh{yS%;`o3j6#YQUU%(uV#>cjZfC^RlIb5n`mpxeDXPy z(de1#t|KS3s(5nvbn&9g2{y7z@4HhQV+6mypVsu$#8m~J(k4nPzLgRdmZ!2$zk9i- z#4RH1^z!W{-Vu&m1#2k1A|L$KUj80LkpU}=@NvihAVLUI$l(il@)HCaduIdyvnsLO z>iDeAb_jBS5L^fGDV$NaWs}Yvke6Dm(N7J10^{;z*z!K%5 zv{ae0Jsr}`PcYkqnUws3nl|jb4e7PRb$retID~*2jwFYb(qBXMi9Uu-6C?Yf$x;O` z6@r_W(w!$7nyWkSo9n;Y^77QM5}PL~A-Z4RDsrsu7W=xNskO{bEao0MCR48) z>w)*Il0M&Uv9m!kiJ-UE%=}+eeFs!j+0u0@Gcs>f5K*Ft5>=uiL0ZC$2$BU9B&+0{ z8X6=zjsy`p9T$J@=fdUAuPGIrnC% z>tuNWyGq8Fc{A=;b%&1@O>43y%03Ki_QZ3YIpFQ)MLIpk-0<39jhF{-;fQ~%J85ki zUZvw#0PfP6kMEltC?#i?e#k&kZPg03%lXWw`%CNwi{%Q~<6f%+9<~iO^gRYrKsd|Y zdAUIJb~r78C0Zeg&vA_{kD~UT%oJS7`u{} zd+se^L6<8lcilWi_3E^FX_g_;3@h&vWv0aw_H0*Ew^SlY_-Y#d~z;VeJE zbjkMGUkU$Xv<#BVXO7EREGntsPgH?v%v5ji4*1?{jD7neRoC~)g`5DfNa8Cbd4p>u z{dGahp1I7qmN_4h>A0fNX_&X{`)IQByJV=*gRZbpE1oigK+ZTZ_6t|)!0Q7dEnR(S z!j#_l66ZK_zutiOW?PaGmQ}A}v;?fP`%_80FzqLaP?07nEOMs=R*6!lzSjWqE|i7e zMXPq<&EtPwawZ2W6;8-|DNw4`bFNPA@Q)8Dg`Mfefv)P-7UWM+7Yrv)Oi1f>ePr@y zhSumr|5CQ{q>xH>7h7~3i^EiL^X=?)6D{NPt5~t}i-89Lgk(fiA3RGVTu#yZUZzZ_ z{76E#WmdfkM2|+0RpZ4G$_?APkkot+pyj;2=&sNql^@M0qJrBoX5ms>tak|?_?)kW z)Xsbbh8~xr)6fQsNO=7W(ku@egat^mZjZBw_S4bCLk=NgsQ@X$hgV?sa5@i?&6;sm zMS`}#>#uIP8?+cu&)RyB6JAga5`#3P-rNQBXpkB5BR3{zg1zo1d5jJXSW(*AXLVgX z?>`+*0XO>TYMH_VI3g!daBG6<-4tYG_m;s4t%x<@0N2ddl+a z#Uc%@LuuhvlFZvM;wxib^w7QLh`H8U)N0(LBId=M8Gp0H@U7+<-|J%=?`HnyJxHt) zT3MLN=VSa!MZwI|!Xap*Y*w>YLnP5iG7NXaMX;c1>bnvBC!u>Pu{U6l*-&aTV+J{G z6@^kiF}Cm^=mCysuka+c<%;m0vWx8C6^G8f=vj1uP+S0$!%cYVeu&-FW^%??4+M?f zxo>dHNqA06`?b$t-sRse1U4FI(Ac8)1rvNNI1{?GG#; zq8@(6SK}%Z`#uL-ODp2W-;Pwt1n$yOCEGbx0~0^B;XmJe|jZX0M+*8&$EW4d`U~ z$@ezrls5!5qrsbJnw<$Wt@i?25MO5+{A&9ZIsF5!V>Pegks~ivM-h+MbZC350eGQo z?z8cO8ine$>CR*S^rY=f!aU3Og55cPu~5hzcq>jX&Zt<}G9fm92wQXm4RxBi@U>ky z-0r}PFSn2vi6C{B#;O3lrL}vfX+|tke^E(T%?glBrvZ%TFmtK#d0*rv=R#5VRg|^A ztXVk&bv*fcH-Ny0gy3dAofwD^^4w| z=QgN_r3*7hbzR!Oh)#-kPF&stnMaK+(oEF&eab-WzuEr@|6ApDrNV4gkOlF9(u9(Z z?M5_opI?hEnF38fEf_c0AncTJwc-tKcXTRHG(P^2EB-Tyq33I~z0+MAV$A)viIh0D zFV4o_1gk1M?6hrGJl`}YrhIF2RV&8zLixpmZTu*P3!GEAW}?!H{WvIDIFfJGt>2}O zJX(DOas;fP$CCo5<}@wu*0I+5LuKYsSDAPy@l|@H>)1wbqig~Cyxr>O*j54Iz1ErF zD$S8+g#V>w%4o+y;1757{x?+?l%{&?yw)xJ`2Aql-)@e`<2AZ%A+tF?)gKC$s*>{! zDSr5NZqahn5epGb+vFh93hrBqLShoFP#fBNW7@l6&b5M2Hr@coJwkL3c9}BLGLw5- zg}+vQ;Z}CD=YI=$flxN<8n6{hU=$=-29!h0)0w*gZ}5;VceXUM0Mz6b)tab+r$vok zqKV>Vve>i#%xUML>2e@VE@xUy-Ep~9wUj#Z*ZlS3xfifw-#e7pJ|XFX5K$935OI8$ zUwZK&X(U`VLk!y2x8wZ9;)q9{Wp#Fy1GYerbqgDz$>S}jK$(}MeuFd?^|t?0D;m$u z7Hk4AFK=1#0qs7l!6Q)Vao^=Y5L`A(rX|k!O2TFlE-u5@EHpF@dz+nRas6lP|lD!=wAG@e~1LM-9pM zdn{Ya^uNX(K_x$NxKT{-)J> zuB3v->ipxmZlo+!8|3~Pw>PtWKY!#+@7I=G~q>>fyzR)AUGWpY1`= zVx|0a9>f&X*ZXXH12cNdloNV*6Su>uPRp&;gJ4M8$>SatWp*qprgYd@ZMyoaHN!7O zT_Lj8Hjr=kd{PX4iv(}>j}li4Mjp7x9Evc4K5O$;KUx!O>4A+4M$m4XMGi*kgF@<* z0xzmTJ+Q~=kiF-O<>oZPk_9S;YZv9PZ`c3n;XjlchgOSf&E?|o{jDc{PLe$4o9UcL5O|5Z|dwEnARdgS0|)QJqPfoL4+S^5AoqK!e{ zx`IVZD}qnC>8~A2Py1+SDI(c4h|9S*T`=u+kDFzU29du+QDhlim_zHYd?l<_(x|nJ z-X=>ipJ!&EmnuWZjrjE5uqsH-d%-g=H}598{o!)!Mej_#%1^QRSl36$O++or1j;Fn zsct@TIU*e!K{^NkhL>SxfgR+ypb@8@ziS{Qo_jT{ehk-TH8|6N}R zDo90XzyB{o^N}yF7mehkblCX~7p#gtwc9q?HU_^DC`!L|Ln3N9tR9nq^D39zM+A^g}3(Yvr-qqRmM1EpKT%{+&hrt1@xaGG^N z&k}Wo-P{pcjeSlL+jH9f$Fr(jmtVAd@)Y-6+Bd&wP>pL4-Zpb7oOtKLY48g7>Ro`N zuFEZv10NTxL1f|&GCMAiHiW9AV?moOd`qS--R~R0&0H;U>U-i~=cHSl2Eu635~KTe zoeeYO#yFG;@iiwqWdZZneZIwIBdkER#Y`ekoK$>nx#MgX9x$zdb832g*|{%AWc3!| zW|FDLkmwU;PVT*2e|fTDUYR?t_u5GE_X ze`|5ITQWoAHq>P*Tn)B->w2hX-Rjc{*vFf#cR$Yj&0$!*J}`T0e;4+TA%=9Kl%m{j zLm|BMGT5PPIv4=mSJJQvoQ{F$d%n`y@RMWGP*^;NTHt6<6tAQ6bOe-L8KOb{+UKLg z1$06yA7qX{zPEqIhUCWX)M$vqJ5Y_~PWUY9G`2>N_WB># zZRJ{ZO)GY_)_qMBVBP60f`cHcC0r`Oye3+kg_$k8s##a_SVMH;!oEw8ENREs2{g+y zlm!&m!d0BWe58=GtKj0Z2dz@{0X8b8&&?N zucDcaD%1V_DWHH#Gg9EByso=%5OB%MLABG2YQD;r3;lQi8d)zm zH$z2oT8FhO)V}QS2OyRpFWC2qm*g5zTC$AZHPOEQm8?~b0V}eEPtr9pbUE_2_L*Np ze-TV@#$*K-`eOY|Ly{s+^nV8)+Qzg#P`+!PzKDFe74Ws1Kd-dEjfWtAA`q%r52d?$ zHyx2%iCG2&PQ;X2fPX$G9PBypD4D7{v2`!V)evEY#H+aq6(Z=1w*zwL`buWoXI^?e zJYc51$&pyuT5FeMD*~z+M<3iNiiCOv3Uv$V@$|XW+;51?8HJfAEwS}wPP|_1VQd}j z4*259xRRt}H9-NRw>Y2%7t7giYwWY3-x(fcvOaV-KA3Imb54Oi(3Y!^zK&$G+5uvs z04fYjW_4eJz_w5~izr&rPjrJ^5oW<4W|ef=TimOCoZj?+GA*#+9aLS8-ZTi>c=oA0 zH@1H6jaFb|h^&k#njIP&QfB`4I_xOWG0mCWk%Gjz`UUs>BfJSZ!xc!{U>@Es(Wq%G zhqC|Ow#uzoW>*1pa6wmv+5)SRGB>iwb2w*;7BR52LyHQKj4+Su27C`EzDf!I@?RrC z0=U_RXCC+3T>$rcEqe15347>u@_M^Pm0n7AB434Ztz>#rJ| z)3*~dbFepwZLM{t6xfn6wg&qhyYP>n-PhnZT8Ls&J3jN0L%9Tl6WT0(4Rx1Ci(o4B zO(G^5>3NqGc0a0*yw(}UQpFXmNY%C2)D_i(2pg92Fk6CWU^Z3zTUO$Uu>K0k$8L1pTZj+#4Pt^UVm*V^>VC2?O7+~iuW=> z8*AAPtGfIB;?SURl9Jtk^~W!WLcKgO)U-A&>#k7};Sa-mD(SfMbuL8W4N~%Ty6R}V zs3{6>0O>|{@A_OS+HBOZenEjs8_Rk>HkIeBA?3LcJT3L+0LKKI6l!xUF9h!i_RZFA z=d+LNn(^;FV(BoVE2@n*5nTyWL2?XUq#SBQt6|3k%H-VlsizJFtGiCd;nA0_F>BYzo%<<2lp79^M%0qJ_m{3wZLonBp64N!$=BR2sjv zG^}b!iG7Rh6)(1(I?g^;>!~*UNq89EQMYr?FeP%S^Ed-=n3`AO_QPNO*oL97OJc_5 z3!tF^*Yf%V8Lm=+8!((Amn1F=&wYhJr1MTD+>m8n*)aNWI9ZmpTKO=X#K~v-#)E%+LlU?J>&L>eT5*0@Su=Ehc8W?>tNIIg{$Yy)({228CR+m>$7 zu+Vr;53v2A*KFlxp1-RqphBQ}l8NdsM@a%j8c4i0d$4!|U31~`ViYI?((YaF?O1e0 zcL$-CQgUET@#6yd$1kw$O+o!=?-Kg)UblCQ{wvbLQwgb3A#`Fq0E5`CnNK>Sg4ehP z#YL{J*0qK@66T~$OVQ)Aaw?w2PT$N`;l`N%unU>)na;Z5jQ- zQ$4&zgu+v~5Fl#o(TL=!-XK?iPEduXc_3Xx2L@9UeIK+ZpCh0fUITP9PZ158)ve+K z6{O)H*<@f7_Bf`Ls6AP~CWC=VCiIOH`Ri`-g&^!BM!O3hG`WnQAS31H;Eq zE$@-Y;B(!1F-jcTEMV)diXB79oHH>{bpMl|ZS~xb8Kf~25azDJZlF$MW&xT(9oLfk zrCGGq)U2soeUBi>TA!;1r>_Mw|M~PCIYkQ2iLbD>emvC!lkBdj;UX7=l?i}j<`)^M zudLoMs%#dJ9O;1;=!Dht15P73{-u)T6#34UW!&Xp$O>H`Edw}qU=TU@h$B+mq@fu| zf`i&*f?Q`If0{I*w^=g~Mut_x*d{XpCVL{=4zTX~HgL7R7e!iGAxu)?#MfzWA9#EV zm1@i(iLyiTYt}*9sxP`q9~GgV${H*uz@w~vnzMY$`%)3S*Ub?6C}2d-6_(fDrem$yG!U$TW9u-}ImfnUm%1*e`q@>_tsPF1NNi?7JWGIW z5Gk#j%J-IM4~600C%Jr{aorNkUJt`uZdxl@*qrhA>a2(S?5>pvKcl{s8^P6Xt08Y- zw521Qm=d1J_BaD-#4YX>Ix)&%ub^vneni{uSch*scA@0Rpfn31Mgb^3=45Lj^Sc&T z7ie(PNH0M&{A{cmHfOWoK5ba;*8@{BFJKo!pUrl@eAE6JJ zD2?uBstzTh0;*_)(7`6qHPcO6<^rs8KtNDWp*91eX9J557 z6`NY-E~n_-PqGbws+qH@26nV|u?IpmQo;8#jr8JW1IY8?ST_Y?Mfe)p;s(=Kb9V_P z;&a3)v9FSoOe7jD`B+(TZ#)za+MJ-FJ(0nr}{?LGj6}P+`3x*4EHq*wbD7?f>OWIdw znCxt^nNDPIzGcDtICEJQMKStAzmN5W&blcQcawA#+*%*lSy~+qhq>7W9sdFvz`%k6 z9Gia-dzy`5wHBQX`_CYPM5rg1ZRM(ri;R?`^l64ux_DSFX7DuKx+fYXFT-iq@IHiZr9^Wf$uadSGUhUJks5Z$f?GpV9EJF8?+Fr%`2rp z6bF_bahk@Cd0M$r3R1-SU~<}O9_EL&@xGMkC0YLL-Ce7+Jx72~Ev8Lp9t?$M+%2gX@2yP`698lUp`9#JL9J0c< zrU{JpUl?V7d2ko!Pj>o?MWxyiI8;riMiPWE)U}<_?^PzS(+6aiLv~jvAK-Y)g<@8V zEl09+daJr&?v0&M($sZm21I!O?ES|OFvjk>P`;Hd@`521i zf>{mItlCT8)3mbU4RHG8vT+-evXiIF(QHwz#O*)=&GE!8!>=lLv>H7@cJvlTCmBLN zsd{$B%F=xp2j9qaYA(|>(Gh!jED}P6|I)3i{ewv&CJ;g4Xd1}7&+(_Y*&zcd>e@yG zw5)F+`UCS-VK${Aof3}+NLFQAr_ zQ&a_r(rP=+E}-qwZYqjs7C>}T;8>er=%|YBNJp~kqgT{gKum-AnZ-b5AGNS@uHSw3 zqkkzoLdQ+Vel4n<(8|Gi9m*}z%w7J2&9(_erV}ya^abp6|LD~U7>lkvQy1@nnzIn{ z;vn?=^IUzAf!LVyhN7O`5A3FLxTdre!g-QvO=z6eTnyu5-u6KD-d2TL3hG?XhCc1)#1rrj%dpXXMYDW=Q?_)JsBJFjAtI7tz3&C1jZLI` zg+K9hp`5*&SY?CMpb0F?Hal@+Quo=axXY6S!nX*wutfU{=pzpR&(H;sd~zWFcxHB!6fodV5=^zpiKHh5>-?`Uehjj!$qFKSQ}FuZTIQwN1ZwU|9h$T1dqZNZ0zcr$v~qWT(2Q61^=EVwsYd575ahokFwO8m=9 z<-i{?V}`W|eFXDb`kn|U?sgMcJQE{HUN_N?kug2qtYvOxiGA~=6KK&?-aryHbVH3W zt!C5YU4$yY;47X2WjB4GVF2G+NjnNI6ujX&BYR|8tE?Y^=pDIC&@KtD*;eZ8YDIcT zp}qWpy24Hi*#pVCP0i5vUYYCjO*s$kBmDR0A@giSqHKGSRz-5StD=kC;HAa1ZLIgs z+|0{AK>YCSh@1n9_XYp^2LI!O=>jwxVupD z{;iU}4nHl_;r@a&m;SiV7Wvj`GI9*`;hUa*>v~eOG}K5b~dInZRC(uCXRl5m%;zpx87bx+?#%AEnxRm)!Gp;m_ezOns+s0sC|`a`|Y6ONKYDKiS`pWw|=2X;`tjqdpx0_LUOJOht75 z^b}STrdefMMsmoRk1SWbToQgsOE#SKcf)y#>@Lu9;CpLMm9BoHRh!;# z9jKJ8caFkV!K5o_Ddt#i{za4jx|@>_EN^=3M!le3@KG1(Da#`iv&Mf2(uRKh!ExlD zzrXwaoyXvKY}-djgyWYRKTurKuikvuyr0gl>*K+G{*^U9U2#`;zTiJv>E#Nc&eJ)& zO~=E2c`1Ou*P{_NZ=@v3Ca3$bo`-&ZuI!?B;kQgl3vOB(I)3#r179rf} zxziwrEsWsUeT?~&`;p-9B>OT>iom77!1?BNdOO8nCGRF5#bOrl_?n+iBo!^DmLxpK2U~5Gd`Zz(iTic{ykfJ}pL-hR0~+2-@HN z`F=Z8VS(&p)`+b0#HVW$`NBrsOHy*!>$-;THeBRClY&Kr43-N|v$V?t5{NhLY(6V+ zQar}rvQD4dO8}VV+VQyzhm| z!Pasur+9iGwWuetNNkq&V;U?==ihwR&H_KHyKI!7>GXV=Ir7AIDi!M{os!C z(cU-l6gGAx%BGSGEbZ1#TZ0~{iaocnh0IQdnNtg|Nx>>mVr)C&sCbNSY>QHJ?D*%7 zj|556bRt)$I|q)1==&|tI{zjt6*d^d_~4Mto0Z~SA!^Urm(O`xUf7cV8t~oa`b1ln73Z!PjH$8N=Dtl&v;O*d-EUlb znjMqvEH-sv)gdaR>+py+<{$rhrw!{!zkc>u?%cG1q$}+AVULk3SUr1efX~7NBgfo(172u~#mJv4*9#%7n^ z;it#-))q;@E~87#9BvpnWI+D;*4o8(?L)|Tv?h*!=8NooAD!*6`6~HFyPLUU+GxI$ zAuS7emPjYJSt~4ZjlJn%>m#oy*aR#cPH{OA_=vQf&}0_r7^)_KIdfpiC%KYrRNSAE zqeH!`as^$B3S+Qv0u1>YGR#)t+@_EZBAqS_@-@K_;%2AU<@~PSf3*41w=asLIatNw zmK>AhZb3T@&OcT~`ZzAn{?r zSjg>5MN!FNQQV)5Rb@p{(xSQ_9-4pa6sUwJ_{9;az>3EzZkZwngG$rBY0Uk~H=sVH zi*evT+-wX5+uM~ocrDZT7jx2m8-a@~5$GiL7(P2fi2T-iJIm}>;{IX{Nm*3}i(!Ma z9xn@r*RN9ZHq*bzTz)UmnfKDp+GXCx~K|TCkn2VXbrYH`R zmIoVMjDTo9v{A0(Ik3JcA1?Rkl(kv6U7mqc2MQ`OvWFfMsd&yk-Ovsa-QSE_F;%y8 zdi<#@Qp+Z?Z?-mnlff49M4f*hWL+wRPtt%?`)%Pnr5x{v76=kn3EFFY<2o-y(2<{i z6&{jvYhAwU!M{stlvJ{Frz5DHr6xcj9NB)OaXG1qgs>g?m^Y~fi0yIP_Hz}NVgL>R z-|NRyBCSb0Ck*(q$9EB6LoNwB54kawdPy4M(^Kiu`kL;IB<%TBF+~ zIjsU7w3KZyVB{jXIZ?IlB#cV=&q+7#t}nh;zagGjZ$13=U26>H56m5A^!tFOAaDi< zD?<#;@NjQv)?uOB|7=- zB;B@aDLSi(Au@8;b*ltF=yd2Np?hP!%ZjJRbuhQN!L?ke%=E;rr{&%~H=}#Al*{na zo>;`7U4Ets{(-s(p1QIzIoeM}-kT3uC%`CObyZ0=i)(laF%|b@=OEH=D3T=t|0r|n z@pB85C>;OQax_2;>fwvCH|6)RRo+9me-ZAK#e8tbGgB8g45iLvKdyo(`OHqzE7PfI z)(z!)$uq?EalHV~YvPHWuuwbU{h?29Z+`x~KE54TqI~Yg&GC*WSVK+=FAVcSXTOab z;&Na*B{R(WhR*BGU~7wc+=<6g3De|d?)@8y2rL2;p#yyBndg6lm3O5pFkUOG`uxnQ z5HndwB8$TC75>*G)wl9rF23g%{q~iE$Ew^m=eFN;%my#afUC_tKR}Yrpyd|#Rd{I& zDm7-a;=lv070}B8%~ny_{n1dGOqmGz7)s|OQESXfV6T_)xR#(R75NL`CG*`Xo}<+Y zcnLg(#_;>(l9|COFL%rxp|KX`n>~6a@&!q{z515*MeQevK2OC~-Xb$rw)gb@=AU^O z`{EF7%aZz)^YUhLB}eLh^mo!x>zz7`34HEySE%o7)sd)%9+XWl0z{Bp_*ZWu#srvM!=I(x+N+Po@@k#dP<4^+B`PreJ?Xo z6ev(<|MH+m3{%w~0+F=%sd~@gXA$6M0P zhYD{DoVMI}CS=XXkNqU1T#`*?L7MW82|0T92#rj1!Laq4CUr4aM~YBwKfcJ?ZN5(S zBb(ae4Lg>%v)J+98@H1b59bZ~TDv>-kD82QCIMkU$ApS8INK3ynw+sEe5^VK?$>5Zm+b)+*gIy@h8n+Plko<;Q<=p zlAccw(JWTT06rwZ@mdOr5c;j;i8W`AY|=Re|80J>0G$Z$Sw$VK><=#!?J?X5A{`Wu z;de!OmYeZ>MQ4Fgl?-jXvDVKPpVse~x{gnA)8yX#>?dW^(FcR`>!uanwFT5^8rBE*ZHBQ(72OUPOw<=ct{L<&Xe~~n=_xBjokTYE#Glh=~hxl;ev zvXA{-)t@`s$jDH?yw_4(SGWR>;DYv@9^Wn+v2tu|m=5C5(K=8oTuS6nVO z7?~0vl{TiA!lqdt#2`^h;6#7K{c(q|?1&XA`Aw2|!bv_78apN+D~F5^_2j-|1V=~? zDz0(HGl=Y>nPAMq7N&5J6RM_q@z?fWQ9fZ>g9cCTbbKO{N}I>&DK3UNcRj5B%b_}| za4B|a=?0fA%rM8}aM8rO%-UQ07W(Y4xW3nb1PO6@V=?k+4wJcS^Ot4==13wZYA^O9 z5TlbLDA-lvYOkDQZ(b5@bCu8?TB#m-d;N%wzz7f7n1G6>YwCN)k4^)SOxQ2HmQ$dF zAe#_7<`Q>JlW=luEMsm$5aVhTkD4J!=(|Ai)$6x_UKbImg)IlG;2 zgOT52b>q&YqlGgQOXqdPD3wM&$(8j`FSK|H#jGlAxrlfo^VL&+rUi=CJl7sJ7WqYw{@p<~+7YhZg34QMMrn z+cXz~oNP&snizq$Tj>8cbeTtRV{KfmTYhNgMy@<3(cKAE{!Y9@uNjCL5#4yyIi65E3SU=-gv{Ahby^{2xJyTzdxk9Vc${~Pp4)_d_w#|MGd zA&ZS#N$vgWJAVhy3BE$-4pq#AKJCz^0AyUQzQ4k-ea08M$eEX`NRDB#uXnkfn#1kG z^Y|duYM3KVQ*~#IH5#uO)N>`eKY74+U;F{{Wp5GjDaR9qtou1D8TqcKuj!>JPcB_is>BDfQKfZTS-U36p z(5W=s#fW&p|=EiHVErD9+>l7^Qgt}=4}Xug{<+fFpb*WusJ><(DyoVwTRxY~ zf{axV7E>eiHs^VxDdJl(pNR8hjl$drS@6}(SQRO|v7P_3;7D#G9KFkl-FL(&wh9u% zn~nEIRH@vjnKu7v*iTSeQV!$yx1D^r-D$lhki?FMx6FxM{+YfmJ%2noWX)R8Wg9jr z5!w=LOYtN?u@TrYC9=*5SkBaaE=2R#dwv4~tzdVPwe7(GAJ~5Br z=MsfUT&URJW5%WWCFGej!w4N4w%4Nr5hFtPn!SVJqlGEGcN;z_B9^9B9A`P3{pTp2 zM97ADoM1G%vcw~o1$d(^fb5H1i_o)m|{sjmx?UWo~6O7m>>6BS& zr1e+&7d=z|yqj#liaaV@ZC6IvQv{S_l>}aa>qOd)bWo@-z34R`>rLCww|W3c&U1Og z*BAwilAk+UUVVt190vMv7yfdbI2jiUIN1%6&;8-}J8s^hK0UAJ@)JO_Hbf)MZ~r8w zocZ05Sy4%cDj@_}>8ge}HyL&&ToD(?1nl^b(Y;rCj9P|$(9&Z`a33T^<{o$eA)MV2I*Nkl@RjIJt(ztAMzZR5|x;Gt&sbE z>$kBOv{%yb1c36a?)8m~s(*&MH~(}96!u6X%LE(-D@S_6%lXLIf=D=dmKL$~)l9@A zcS4bV*f*BxgnlxmF;kF`K!)9R&oG1vW{o5$(8^JdMHIFms()8KLrbyb8yEFXV*MVg zd=V**%GsOE-NYt&B@R(pUIbfYm^9|o%2A(e+>w%l_d!OTKWDhmH7JW+IeKjPg1q=x ze}q88I=#R&&xxGo`M81}+Um|RtvfnQ#A8F>->mRBMV*NIx$rh&>E3rbj4_n2@Dhv= z0f{Z@BM&dadisV&$h_(;ab;X?NrRT%={u>mY|1JBqauL?^xsf?4W=bou zn|1o)=WtyYsbc!#dmKZmJhF7~+~THJR%YXtnH?*y;FEOU%qZ9lG@<|ItC7}g1wyn% z899FZGcuixg-ToR{}m2UZ(k{ito9&I0@stiJsh*k*O|a}79W$2O5hW1t4dBu2+fJB z*P9@R9qw3V5i;k-d?@L~l;`GpkMaDcc}A?+^ofZ`s&7hv5mMCKyDaaQ7~6aA%6hBG zX+B0)zTIjv9W&1;UFjwH&OO3*Wu)jP@;v#K!a>4V<(l#vbx&6x8!M@RT4SyBWH zUVWC>uE;BnY8GDK5si;jI`3)oxc+ncwn7*vnn&Ao0%pzv{78_Q4dg2>TfgRdFOJq0 zW+W5Z`AG7r-5DmbfsiMR(b4ma>(C&OwV>qHHPOwQ^AcDcDu%tpb%AeuubTuu<-?y> zmy8Y4YE1c;_WFkdz+55B$4uIUssznNEAX?3Sm1bf8x5GAZ(AIvJJBpII5I?STr7xB zdB$>2#Qo9i$5`xbzm-r9aTK?m!J~zL^d1epK*DAdbkcL_PS0gB_)$F3$iN(iBb593 z?;G#yB^ilNY3>l*XUU3>Skst_njzb6$ zh07=IK5Mphc1Yx)e(cQ!w)z2%$-vOH+gRbKApE3iXKhQ){l=)(DY3U4vjdfLciDi= z$;k8p_QJ7EYciBsKIICFA2DfNS&gk#`d%1Ta40IUCx~u zRgw3EiM^p~)xC5Z(duWxuPa0MZXtoIrgd5LTSmkx{DseWJ^c$^4n7EB0998~=e4Ko zSXs0CS#dw*IGcALJY?gqRmb5q-w-%M*X6ib1ftFh6*vcMN7ZGFxySA4ZqRRjeik3L zjZQ*~-z`f0(s++W@-$0_Ret*sF_BHq&)#O~eAxA~a#T}iL-QT0_K&)X6k}BOV_RXcfF()`ghQaPw2qKJdAYTO6Z}(XwuklB$toR{HeSMhXX;s7Ne62g;Xpsf&vgG+_ ztE5=p>27VT!ZcI6+Uyma*UGMoaqqOUI1fH0>`kBh^#(D$Uycp;c1=!XzeV4OHn2_| zR^1d+HM50>>z6YEU#JIo6wV6oX z_8UlUG;aCEoA0&f1u`-mZx$qUZ~hY*5qF{j(XWKW4-UivS@yH4mnnXnn^ke*<*z$v$6dRyxq7A8jjcFJ5y{?O-x3z$8 z`3+u^)G__U1v}boMhibv&|g>2zWcb5n|U(RBxbH%4J97hXa=e=a$S&DwbjL5FuY{I zKG_R{r$UZaO1M2PgYcW1JgNpvII!y+?E>yOaYy?tHTljYUHA>Y%R9fTcv%bbGt4eanmpL8V3XOiEJykEjR&WQzql0q+IC7jcR9mlh-U#IjUtz<2 zuj))r=H`&F%*Umtpih@jc3dYKs8SE)LSZLaWAdlS}9hqq2;gu3@Zh4bdU)b7-iOaVQH4ZWk))iM)m>Qq_ zTXFkZpg?sKTYtAE`M-j(`cIwEU-KObcBRR86;r+T zLqN}=lZADQX-(F}A;#yU>1t)_INS~5u9uldvig4*uOgz!GQe#SpRE7!^2TM=x!#2b zpgZnf+t$Mn?AQcjn&xFG`BR$ok9u*1`eXsZ`!sHVCD!vjG5Usg_6y>!W z{%=%7#bk@Zu#u>(!ZS zF942bX+spJVL^`71xO>{o&QPhZf7K&Oy@L0*u!jU8m&+g0=#jpqd%SYQU(+-P_?wyXPU-N-RTxC`wW@-Z5A``O=gftqnoL8fW#xt} zU<40Bdo|#>#9RFJddg>3i|Q%TdNRf$M%c$xdm!q6A_nvUVdgGPaDN)R>(Vi zY@^y&7~$_=4_uvcAfkvgo6VJw-GAkMRx%XC{N^Q{)f^lS4_POVz(9Y?qJGYQ&YV7d zXGx;3XFg=Erjx;&;2&G_MWwyGEr!u0QQgOT@*)2m->!k z%Xbv8)$cX=;?eM$rV4}XEM`Q@3MP-?;gxReJrVh>Cm2fnH%Sm}#E+uz`nSmYcoK*> zW|)FEOp!0bGQc)^pHANoNEvJv;IGmOy*&Z5K)&p+O$ppshzhj}nETCWa=r&4M`lB2 z@cQ)&YS%#Ax=>5YrOVv|>8?bjW_Cq}LAIU-@C}$>@{V0pp?XYj#PGh~RpC;aBPhOC zrHC+w>Ls!*I*Ow(Dc461>|)5UIdU5B@#vw^VB$xoM5CX#7kd;ds;Vdq zshq8&%}RV44_@k%H`QS$|AY-sQ4?-;r`IyyinmA$%(LK2W{RR!(ik(jNKgllhSXaI zTRKWOBNEYV5nmEP9HDnT=wnzjjdz@DAQy(4wNyLNoDyddBIpxu8s$1X*t$xcb^6)t z;b45IgsYrBt&h1VW8?zw7YLc{%VU0tgKZfXHPb>J{^D%It-Z0vl^aUhT+_ds87aU7 z3CuY}e+-p77)6^(({3wA3N%Pu%UJ{yApM&9H#uUjnHujPsa(yO_f)J71YA2K+;Zba zS_~luikkPhSW4)xv1b$&lMolhw>qDlpWH0zqcUo%6;06P zjHe_1#s3J|o~~09-UJL75h<4)5s9NMg-L!%HCmPlhpfy*WYo5q)ANsmU(J`+zhrzW zPkMH^J}5CwBrS*#IFlO%%6R1E5qyE9`1VLUqpO!ZMmo2*#Af7;VixyNoKc!y{6eij z`q+7#R%RsSbW#Mfm+3k1O}NgLc%mEGx%TzIXXK_N>3~;N)}$Q3nZQ>>700BLRe^hC z0$Z~zw8^Y)GLM+bzsfFZ$hAq*oK<~YGWM=e$zbR=;lx`DJFq;)=ydJtC(US*!bf!F?-bCO(b z5u=L}Di8)4HnLN|bvH1{>fgDb3%RK-erX+1&r|C4a zLTG@mFwJjWu+@vt5TrFjDUm0QA&H;JUqLc8>i$6--+~+-|99U50M3=8QKm>rjH);# z%7=(HN;sLzek(xQF_95rw4JP9VG2Tx|4rgi6|W$>WHwzZX=iCR&I#$3Z4|wY9r`YK zivGQ%PMKB*dpnCXHJYP`E6Olhe&#QoqJAlWFpmly{&aB<4)Uvxpnxt3M_Y)j4=rB`Q`tsh1Q9Gn)qQd@E#?BL&vVX=r!_E# zZ1V8)q33T@y`(!r645cEYl{WcJKC6Eg28|D^g6zfeoLskX>2N5y3+yV8mEm+Nv>uN zp*(5jA?Bb8S(ybD*_eJQCgM~6S4eEh9-1Q;xq<}=cP}D7a~tRq@8mSueZ`KXYMC)j zdP0hS7HL8N)FWR$6W4$UnWcM4;gkM%zST6e#A128o^iVK_ojuatsR{oL%A} z?k4IKRhYy37u_m#wAaaAK0^MEn(FlCx4ZK4ko~j~c;&xHvCzACe&!^8so()m0UQ^C2;gd<&0i4Bg9L&e7 zJAnxG(YSQ~hB)$J?%Bauf&@}0E3#)?XFZq*INj=Uvx<92+(6-^j8>PdNIwnB(-8pn z4|!7ylJ(V$FoIIwhM(@M-%m4@RJ(mdU@HnCuR-P&Pw4f}|0@ zHsRF2v5Q7`?OSKXbIpnfkMI}-`TNJBaG0AWC#-v^-$X(?-uXj)ytou0;3!MPR`xiQu+ga)! zO=mq@F@5#A{ZPvKB27-DdMkZ%(Y$VU$g9Tf5K0 zJl1=L_%!$)y(ll7xT{3oJx)5MiIh#0vac(PC4=ymQ2wSoH^w@ddVHI5@XUWSL$%SA zdr!K<6;pTBl_QK4gn$PF%U`r+?MGa7AQO6*>;$D%k%As$Lsbdlb(<|?i&hF|)*z~b zoIU%sq52M1!8uoK^k|)#S+>qxNHF;BD}giB7cI!jbxq!f6?-peW&th&q6@FSIG>^S z;(4g|rNJybRPe}q{e7EULHem!qNGC|0p_o64&KJz453h1$>02NWyKs7(|Rj*=Kba z(-{q;+M0`Pae{;|BxIYnQgn%#`u-nPf*Vxw|CJo1D|NQ^mGQ#(ksHaOyL2P=#EZ-< zK51?lkD@hiV^K%qLRU^=1x$oA0VtM6NEhIXfM%cPjolSeR;jw(@sdP`IYG{E$&HI` zf1Fm0x`P)5m=bi>yCTo@Vh%oE6Mo~?67w=VZ1aPyZKUikL-`Z4p2WC|xR-HpR|{CE zV47O(_d8+fBS|N&%bkXCG>eUWwFwP|!YyCEMvkiMa8#FRQ_Rnpwl;T3i0S}$_UMo?BRD+^W@Q(mGq|qT&Q+&kyHloc=&zf}dmg zJ6*zcnLm2(CVqr*4=yCSgBxer}$|h%ST41zo=Arz2%<@7WGa7` zgi8Ntfzy2J*<;=kcyd)3`FXh|JH4lRYI!1>qdrBTJA=NG8&A;;?+!v=Jqck#xv;az zR?xykImoT3eTlQ^_0sAHT9I1r5W8CP5SPbKddpxFjJl9&nbwUTXs9{Lq&3F(XuQV>Fbn)d%2sO?Q z3!)+q!zGR*FbB+%FN#R6A^UuD+PwRXt9XK*evl`7T;gXdk+kA0(s44pMz7X`os2hY zigPU}&PFqJ`=oyg3K7Z2%1!=ZfVnN_FlcfR-J(aEz=T4d6gf5zyl$Xqw;+!sA<$YE z+jVnynREhk6zS&E;ihGQ-`JlUk1I|VlY-0vRwgJXH^$1HY$Sh zc0L%+Z`hnzJLuEPYBs*+4d()E$t6BJoD~!?JLikvvckY6f`HNwld3Q-mwHh2=A!?x zN>Ju#KeC}+j?G1ncFY1w+;CSaR>{F`sYxYi@)<(wkXDZzkM8F~Y&B<(+lW^XKMlRr z#tMiE^R52>QTE{cdS@_38B`!B zMd^x&^g04VRS=Y32Pp$c9lG=mXYB{`e&6q0=bY<0{E;ZmJkKtx-0R+JuZ8h<9L%Dz z+^|-+AGq$n$o>kESIzQ9ZsWIjX`yf|kp{%>e`$w=$JYWv{!sH%(KdgSdDnqgW_oZ- zM(s)E(tkjO{wZQskw}_)gak5d4hW1kXF zLdtS2s^yj7is2wmEHh~Fm&iygh-r4y2z9w;@?tjDfYrnIzrH`gJLsDF$|u{CeZ-!q z#^;5%cJ50|$NrTSByIt#;aRk>w~734_Q{N5=TXtFPHjzz%XOBu-tV%Ae|)D;2MEKB zN9lRv;yjS7b|gQN5R_MgViG7q%QC$00=UCs4Sj$>_wm_p|c) z>(@uIO}njm!qi4>M{s2~K7+65d__5wmpJ5CeP0OMR(FbyQ!kzHoJ1MD5<`wcEl z!e!~MAd!`(j`@&`n-Xs&jss9|vo8Y}%sDOqa$GK}H8f>FcKYf;cCqkPu{hK}yerZY zDGkq;u0K_V*haTCXCjM>1W1AF>8{l?8Qp)t=0|_7uWzDvw{6){opLg(er02wF;eBf zc!{F!o4@FKFy(nM_g@LvW|aV2~48@KxU+|QedDwqBAGYm{6#uxnn3#Mj@+AMJNGguituU8e9F^dl94lUY zuD{Ms4&Cp5$$~{%382DQHbU#=T(S4w!fFB~QPlFyK) z!h%z5`XVQIC>H+VE{_rAG_tyXzA^VJL?(7Mu}L+%&>xHZc|@XUpD^Mu=0DGlVAg{X&I(SnMIXl)0-Ut=`$N|tV?uzq9ew0~2vzBx zzcqJwFM7w1>GURrP>)OzY3P*T&NY^9ZWxcyvlHyE*qfzK$(Rw{Cd zdP@=9gaS-d;Q~qEIp?I;zAc=jkxeeRPW(dh`DZKyj!Br3wb+N!x2bRC^1lW=ox#We zMHNA7r+G#=b|xP=6@B!-@S1*!QQ5)kL&K@aF!?%>kQZxar3Tvx;tp}PuI%0HFd$po z#R%?;6rcii-u!+i?KN}p#)TzoPrnR0488GYhQ+O+T;r@^X;p?6mS$ZR?v{;X+YD_~?tz)J zqO;DUvRuT*xP>kGESoGF%S_S!*-7t7mc%N!X{Sof*avkt?%!O~gZezU=7I=bH%kdz zwws!8!7Tun%_|y@N$%nS1-%l|@@GPKmqn3i;Bj|?L2JmH_vUDtskDL3R>n)^60@22 zz8hzI=*E>@dt^(shu#?s!aZZXGo~lCW>U!-HS^yx7MOkS%FCeRD>J$0rm~9;(MriX zs$scu#Sb`wl!tQQg5LR@k{lUX4sj^Wwte*#)TlG_4{I$dTt+R2-i??dhTd*xcaVg-wq~cJt95j zguD#+NmtlA=tVPj7rsyx+jZ1OaH;KhZLxJ?nb&r&(inQ#jT>(L-sOwUcEng?3JsEM6R9WJZ7~#9TWY+tL6j4#?0o#TZ}&V`H1Bk zc`kf;DDC`TP^>N%cbb3V3TGo2ZjZeWRf;WC;1;6ISPSEu9U*I9ez-C2@0wmMsMhWs zm9cy|Io|zaUY;{HP5-6$4eY*VmD;6tj!?9Mze||Gp4k38Q_0o(M&%oYN18MrAxzf% z9nQ6rh-JM&<=psWtAcDdHZoVOJ&yG-&HgCcJnKnZLWrySkPOeD2;At^6BSb%V!$u) zi@Oeufjyw1au04RgWzKY z*HLZK@N+$ITNcOkq>Xnlwt;p1aVWLw*7s^=&E*gC7$oJ%?LBJ3BDFKDxD9mycjb&W z=bX*2&zJH~z&rf?^2hIbu6(_`6u>*!lWVBQP8L640h$cW5!rH}b$~y4=~I1sytv_X z(}k)6R6FhT>1y?`(uTR^*+_fejozuUjoe+->A&3ylDm42qEuidk*=fisybF|LIx^a zzgl}So>Rn_oEaDWBJR=A-PvtT47^XN6sy&=aL;zL4ypkO-TN^|+Zx>?7u6nG12dCe z#HK~$gS(?}!+dDAqjhza?qSsw!5N#E`+ZBdZyd|itZ#^$=fls1PX)UUil__BW@zHudN<@3WRtp)Q4*NLPBq!;*^r5~ix_mJunsyFZjO<{sSDOTa5KMO6dRiXJE1u?8J30fl z6DO+_lvu;n4}FL#y1i~$u50oPew{i1C40N6ZylBLT!-UES4a9|zq^=4D4yv1I;?uS zYrpR>v>Tlin_y?l@fqE$FS{;OKjq!|VXDkKuM%E~(~}9QzvP>$>ap2*Ktn~7unHAp$g z9v%<3ZLLu?Fn>0(w{rm$GXd*dah+V}wB?SKYVAhZl!-+&uur^yje!g4aaAh z-?8?LZ3&9r$qlL>uQeu9$0>TrN4WYVA~EBo=)h)2?uU{`<}k(4Pn-4JC(}W9c5?xs z!s>tg&!2HRKUR`!w1QqJtK{C$bcv{mOh)E8Or#f3LCb+jA81CB#bPP3WnI-!*L4Oh zA5O7M8HVsixm2$BcP$B?8DXuyYm|}j1<}YDQ3=tdhihHq(N91bAxXz&)KX(Z6F(O? zbwIb_C6rG)uU&fu)wIytBl770?%0JOwt`zKFk^|iUhUdA%gIkfhj-n@x#rl5{C)Ng zu3suJw6C+*GdC5`vPbr?){3;=9p1_;qDN>}RQ*P2Z&ut=r3d~{ipX8ejW z=OA~|5t?q8{S$T;RhQOdq126_!lCJVmHWy^o_o*JkP16rrPg( z3N`LtVVSeB1dn`}an1*>5Yo88WJi#mUmr+tth1=jte%Hif2`wd>EqqmrgI;sC>+)F z$Llb3qGx7IkI1|S1q-gK&z%OJzJ8u|#fBzlbi^t;W7##ww=<>d0=Bvp zP?x4NKrI6qCI2n0Ar{QFg|)qFY`Wx*%`)^w4>UqU8=39ryR?w(Zsnexs}=@TL*Zpi z!tTft=>8cvzX|u*om`5c8X|Z>$vx4?;(l#lK3CIy{Q}|hcY;*6|1L;PW-%-GNp^FA z^~s&tyX~t(x2s(APZiWp$9qZc`k43mYk_Tk+s!E|(6`dZ+ijmtp5&z z>2dPIB>*!;;rf~4f-Y-?U-2^NX8OR7vLb4|Uu;3>DIa;b}Jw`}#)6-VxqGzrty>s#_=e<#$h2!MV9doN1u3Xq7nI7^6880Q|v z;Fm8~;j9W}vUevL%C~XYlqUl~v;6MRvU5RfQw%2Ty7uGoT9ZmiVJpFTX&|>cAJXHyp#D6Ih*bZ zs%&ADD~95A!?M4@v}}i3bI=Qk+`wyDY46EPL8~iWoU+cxYeNxE)n-%LeYYW0mSM_1 zID$$8;j;gH7s1~d!XY;w*rHqf?7PvGg+!_K>p`TRPP);KDPhwqX#HWU?_mAf3*Rig z=UpqA54wC;GF#Tr!kS%+@hjXkYF~$nLrs@593_kQm?ebqq2rm!K+uo#)S&(+d|5R= z0x)_>Fw*0-=e$GS0s6m6FwYx}7OsX^9m|Xlrx-v_d%U9qVe?YP(o@()=TWOSSq9I$ z+!uPcWmt5_W6+1QM-OntNE@lIK`W)W7s})Eap1~S)y%&HE#NBFwFVt77>%)=^xq=} zChIHPTrw1ic=Ke$jPb-p0&+O&C4Ql+*C}i|uK)k(FE-Nl$Y1S8Q3uIVO=8O-~SQ zWZhU@1MfWy{qInXQe4`bsw8sQ4l+T`)C*a@8gAfL;pgrqh*6G6KXK9=3bkm=Pt!=N zvv^120z;Ft3eKPN#=zvBR*>;+`%t+ts(Ts^*MN#MnWjSJsg|h&8X8dS8AsLjwEa@~ z02VbVY=i|6(?3=o9qm}5K1mPwv5G3fnf=A6EjXJ{B18~R;MeQaQBjqZf4#8%XC zryTF&*2*+^G=i4eR9ZoFOEhFAemxINecBOp#SSMo)3VjZ9KkmGd1hc3UB^#PY5jtZ z{q(HZMCwoBjx|LpEW9j##72CMgxF?ak$+C4_)I?WwHU;j{jS#E-RZY>m~s(dus&{l zf&52>PSWZE+em*{x5vlL`a4Y!psjC=S-tVwYObF)HK@FV-c9#R<`jT}BJp)I163W! z){?KX1z>`8$yW>Ni+*MskpMl$neC6&e`VCq(dV=C=}XlN>GR8}W9R|60rsP$NusOY za8_A?vabrkr=-0QN@5o)d$xVMGKAb4i*Ws=t;a=Oh6+a<7o6OL(6<&-?=vPJ=w$1( zbiX@D2|^{9_J>#R1qQZ)qRnFxL&GU%epOym{F_k=(CFQ=jIi9~E@@DpISrZb#%a~y zxD0v}E+G=!e18b(x`q4QO|^oJzlydBwl26aRwPJH{w4TMNZ6gbVFujvMfM0v(^{)i z!Imr3n)6hy?kT@!?PCgm#=TB)v=Scae()kC#3~tkC=MS4HFDs`-z2wpx=e~E7)H8D zsT`R@5}7-fLxC}Z)JHsgXaYq)6f>2>pcMmr{Oa*j!dkOO?Od0G^G~tYHDX%ee;!K~ zg4H4}eA({ddW+wIs%S$6b9zwo6m;vrjK`E7f^3fjjbRNK>}Q_b=YB*ILGi6(u6CkE z1natsbGmQkDAmHsYS(C0Bw(rIfJ|K9$vSp7DWmeh!AoyO`=^Gg(*ns(6q zAeh^yH1FA)gw0Nn7%HacORRqSu;kr0wpBPc%awkwN|kM z2<57*(+nPlW#fQ~WSL#)@N$IOW@~I(e!LJ6;=Jm|#U{vSO3wAzlCxyclHdAwg#1uI z5&e{=c15k45upAKqvqrn(0KvS;rnm8tYMOEs63KxtG1BBBofTp8Qih!c^zd6JZ`tp z>_gVIgVtw{L~s$IGiB$Y@3<{HPHeXVGhB>IJWwvibHKv=TmAtnMjX>ybM#Wd415ra zl?1N&kRR$)i}U)@b-Z>7x$-AZE>8s;7eD-W%BBA<<6*8BTePOmg9_2K_igaYf6TGz zChhO2J`Q$#I4x&$604(zOQ?~{3d^+`t{5%H!tBCEIcsd5*&lpXG5hoF+>tnMdcR5) zU#^UY8rTvi4ghgDy*p$r5r}J#^?#_J&J!EdL~~Ez4kPVLtO{zN%B?(!>o1cn28o0p z>i4$OIL)!l;s`Z_2HU3&m!;I?G2r&L--POo6_3&!FTz%ozQixRK`xapDv}!XMWWSu zryw+^G3`6{G?PPl`|$Hk7|;ntM$J*lj5!q_0GMa5R*It#Y@*q3va?guk@3&KK{M02 zwi=*6NGvSl)*HfRtoFpLL`}DQjHBO}gVhRp5Kd76%ltwoN)Z7MiD!ArVrcI>Q5Q9+ zUwHEjdZL(+7~Ae#k!w+F$NKWo4UeC)J2yde2qw?o4mREXFtvNSOILw4LO;Qk=JBN? zf@CT&6ds7mqd(nUx&5whF|!atk6?$gNVtUA@WOM}Lwzl}RXK~AR zaBxZ)YTclGF<6B|=S(ArnaVyVitm%UQ8D_1?ffWk$LZG14?a|fKhgJx)Njrt^G?WN zj$cCz=BUgoFVj6SC1*bMNOyONYHS8GWgnC>d1zv5c3XH^ArfnrRQQi4}5(p4U;?fPt)z~XJp%N2<=w`9rFvoUH;9jDc zJ|g2Xc|NaWtr$O-JLEC0{wmDW=759zX=(YnnNX^Qc^Yl6;?8&Bzk3iIu>3)-{z%#x zx;2t4Cm~A^mGmfW)2LXuHmxV`ItLBTpbRkllIW^LD4BD3IM~Ys5DvGPcW^G^kWbwU zas*NLCjA~lIf#Xs>J}?G>4;n04|{`t_)@%UTQyZsYmL47j^-y69~n#ng^Ba;X!E#O z<(irH14td$R(k+fAZZ*i0IVFE2R??gZeIeEcjs0Ov|GX=8ot5w$0i#wY>p!r%S!Rc zr7Vjx+iv&XPIKO(QZ2?ZZy&??Rz7&L`_l0iO<#JbcCEta8P;25sLl21ikg1CJ=hyL z*Wr53m6=bOaMdtO+fNwT>%C3a0|qH0Z4J5`J6+Ptlrakyw2&MjNgwwYm#=qKi;^>x zOW(08<$-sAUR;MFl?nRyhJI+q04ID>mcf}>V@sEC$-n>7TjM9fbHEa8c!j_8aUQ={h7neXud|Bj=W4u2Hopb2czzs8v<+e;CQd#W_25 zRBrYWOFFd(_vv3ZeKe{^Vd*ZRM6}raS1~B`%Ak71S`HW;Ty~UNSR{baW^=ZsNZwbL zRI|Frxpt`G8!B0gLZh?mh^;NiN4z+4jV>pVBc`V&pE8$1#jLV7{wT$RkarAFa9>r z&X_BM+uJ~2ttz$=-a)18&6dJGHfY93I}KDcsN||cai0cVXnwr}L_R2UmKN_#(`h%N z<&7P?m0e!o{vDJqu`hZ<(jt)hZpTl;7^-|D5hrklYLK4ZU^KEDK6>}o`!0j~J#hE<= zM`6z^F5U@t?>j;U3nISlVA^M-M)R(2?6hx~K;yXNO!S=OQ_qmN<<9ifejI{37zfs2 zx`NUvykFuF!#6Q;Zn^1EM6Say;{FU&XD83`HBhT)yymgjEym!NxclZk?;79mJ6?0E zxi0pqDoJdR3KptD)n>3;n5AsHeu^K07qCzodd?+VB8k+MDhboa@_8KW+sQUG6s(jE z=JSqFNN1yIXZYFFkqP)&Ei4g*d}$dG>!?SQSKU1Z3GNgzh*dx?eFR5FlG^(n-kq4? zvLnlMiNP}})>l^V(1?feiCvuigfv2t-|ahd`;g*gm>&|UJMhE6DjdiU5W-q=mYY<9 z;(fbWI-Hh@#x&yI=>jyyHLIgotv6`K5W3o4kcfc5^N+X34*>GPrN7f2N`lcWCUkFg zKqDW>V-1h&BpF6$1Qx5*@ST8q>X_nB>IjTXOg(h?8ph_DYgk(YN-D=|eyF&>Zql|k z_=kaUGysoqFnLg#I5~KTY{eK$o`%ePZLlyym z{V@d?DHIGPV}z#4r{f?VK_(9-6WM9-COV^$FUov6?Ph1@*C`%&l-br7Y4N#Sl82*P z&Ci8}VYy@9-bhNKz;1N43MrKjx?3c9;F(gxTq7~~po7fzN?1Xr3A!w>ST>^U=}qtv zD2DbYnIpH|7%Glghe3}s(AXmn>ss9*dTYL~w$=pX5?ly)+Y|x^7R_-->Jm$%tOomMRzDy6$uTF?Vgq;RzuMe8^-;V{%6%;)}0wfRnx@~SNm zs_UK5lIo#SGMDGuE^E_HFnOYwcF;8q-CP<|waO)+VXrkIP#sb64ABY_-4jOTWY?~u zE-f4Ygn>J@J=CsqUW=cuhOMt?PT&+ws8yTksCMLDnAXj);cAFRyfgz>M-X^5`}jmTWykuhA@h@9_hnm7 zZ`wjG3QPR`?iwd5(_)Qt)WoT8pCuX2umWhJ0a@>iarrO~lpWb`w(w;#{4GdBhl&6H3I3d0Ree4OWkSaF$m9QSFzVop%67uNMOA0X^ug zf;Ei}tE;=KwC9A&y9KTvU*FrCxRJaqWW9OQtwuWUIVbM)+X!qS?k6gjKs8(c zzQr$A4r^)zIKcp5mVKnQ&Za5@oZKN~qY_=a1a?;=uG(oWC%fkmer}3wshib$3WXS_ zvzfDVeUyGWrd)mE)TyLR6G9Bx%SxaaA;Da)8hD<6Ujf<|I2=2KZ>hD{=PQ#1TFTAs z$BJX?6HWOw$c<9fcq8IhKGjbn?@O11ch4$Aw>q>am z9~wl)wmx~;r1JO1(Xyf!Y)jWEmF&ckG-lcl1AplA{KR@UQRak+zS`P-y$<9A*Qp(H zD1~sb46!1S-K#H2bjyPDePjgonGjVHOdwz!hG5;9&0OSI+MY2tq{lZR^`+_tO7ija z9j#PnhA?fmtD7>_J9Ps7!OZTQ&CtdN$=YqQ`8i3K(;D^s31TABa9-iek$d*m-?kZS z5F30$`m}o7b1|?+V!QJ11z2FkrWf(Fl>l;e+*I(k?h&XBzE?lR@ej<&+R3_f4-sW# ze(>+R#ztEKXbOztn1$A$dsK$^3^yE|%}=qEj4ooa?7*;Cfoazh(rn#~9v_?5VCz8( zhlPsKrl5Dyo$*D9TfI~K{w9zwYUU44FEc}HyI*y4+f>cykfuBy8Lqv3DaqU$R`?u+ z;zWmVNpw>G$vUtSK^~hFmjII&z=X|4d7JgCBv$cZ2sExe6~8k_{~E*?Z9cv7zl{2` z(SG;>~DG67T#CT5goKTcJ8fXB^cY6ExKdtd8Z0*8e-b|?RAEEmbVGvj+OhbEGmKQ zDo5fLzCo<(yHHYBE+_LJGcqi)Ucfs*q-=6tw@&hGpLeU%NjdJf*d^l8FpgFl*DQEs zS#!sa;A`rpVtNO)gbPG)6vq^&{Q*perp=AfOG zO;||kf4-nsk0Q@>>xF!4zX3HVfQe!it#M)<*<* z63W9#I=q9I$t|n5^28ihRBdjaz1bQ>ho@vy;ebwvTp}QI9}L~`QyKUIFs>Ua28TNB zi@q&cS%QE61Ex6n>8OlpFn_35)2(ifKdD4m=nNR5ik(I9SRqv9E!3S@cq>5} zT7Uv778HXS;24q#F`}&$TL>Zj`@~lU%6hQIP++G@`9(y4Y%o;eV*MV7ix#7K?fpp4 z;oCk>kcAW^hdU*NqOzQP53^l=GH3w?Ul499S4cZzhcH9*harS2^;|=ZibfzJSJ1gQ zT=vpO$G%#VL0z0%FHc#r;Fxj^C?P0Rxy5g>8jeDh5;k&~1Z0CiB2yzYmk9Zq6o47+ z{|52Y;_eKGM*D$PSUTVg=Fa~PE^s#&z+Qmc2E-TfyM6C6@&trKn}*|AT-0mn>~2UHkFJjrdy20b@)_m8AIH06aKWKL;(<@8dM!CZ@llUVM8Ght1s=oD7&5{hfVJ^wN;<-_{lhom29!5; za1Ls^!@g3eq=S)E6vi#@upW*6;=AjJK)Wiua*QJT*_69F?_2(#;fpznvH1OmfH_GB z3CfoiG07Z(n(Vz(5mpH;Z|6pLC0ERud8UU2F99Xl3lWKaKV8`q$Q;};C1J<+T|FWS zd>}3IS0+Vn@xizmh8)7dtx7L_QUb%hgbu)>v9MulDt%w(7bu)x3CF-!dDV;zUQO9? zec3FsO!K9U=5#6u%KS1g4(^w(gTWx4?PEN^fq1^L7IyGj-e=$cTYxFcHlGh~h}4IT;c-Kilj7-e9gGUUmja zAIGnf|*SQAvx(b z&DMw@vcI2}x=}2xBI?Wkv$xqq)Pe6Cz|}lzG#32iL}abOq#^Gs4BjYaz3{$k4F&Ld zixc_8D34Kggsl>S=M}iL{%6KGMWUWZ-%IEY$$}x$dv1N-j(W3)*l7_o}k>&bcz51?!-`dXxdLh;W~i&2sLs2!Pj?3GUfiu!WrYu%s3 z^!r_NLnRUxUqLj`*-k2lr4UPsNP_70o-VQ__tTABmY3_AK4;<*n0sA2wF#R}&=U-& zNU%kTqQUm7z344e>SP%&7DIVy1+I@y?bXHtm!N7skYu@roaJkdb067r6aC*q#z}(a zli&hkx-v8`s_YU@OFB1UmCfHJw|F2k}`(wA6Tiw)&?1pIcdz5rT4Fl{vt*@$30 z{I|1jq!fQ|7>)Dk7)61cP(KE_x~<)T_fP?CQ52E%-WVBczg+@HadD2YYL2(QN->83 z6q0Bv-t5V{@Bbcx<^*O83W@m%P`6g5TaN<5^!vUZMK8uv3?>~wU7ogLOu6scwjuKc z*2y1nd$03OtRP;JyA0)28ry6sA}Out6adhLJh7N#|0j>J2@G!n;DF)0`S|rE4ezSt z##ov}h|x(j0q$*U@5()Leq+ExU?xDSGJ&!zHV-Z3})7aR9 zc_2X-*rSX2)jMpx4*d$PQH5@G53&?QWq#2shfQA0Y_)aW21;C1=9XOtx0LtT@F);{ z;O;J<1l}_7i4cfT?8kpfVy^>DZGQl9fj>d!-MdpV*oK^z@Sd#U8SF#O*WckQ0%dvz zQFaibu>unYeNz(QS!TjdFoO02`4~sm9N@m{*1>z2I_CsNS}^XJ3;|0TcTTDul553Y zmB|(Vao%~H{#C*fri)X|GQhk`EfKo7{~V-OtARVl)c~*ibTu(YP->6AymsQIHcFSO za73gE1d)m6(@p1UdO8u00s#p;BrS#D3n^7w;2jMTHQdzK^kCJkZrR=}XwvczN7B$a z6$7a`oSsC&=Fn7_5RKnqzvgqKPY^>SNufVExBv0pTxUvv1K1>ugblLqh z9rp5WFP0jVGFOJ}#xuy`tm?V>_Dq{C*@268X08^4hI#^sqlF%2?tX;AKJV)w$x~L~R>uut;?9|~;yK9&5C7Iwh zN)Azncl(cGUUdP0wYeSq@Lya+q&uihvjW$PqAkS?T0a(2>-{bwwCl-V!uEiHjCBAi z7S{IA((0WhMxLAJitoER7!pdH3x)jr{^i7`jwP%B;81l#*6|@ou!XuJWm%veqSOkC$L=57{e$ajv=R4MK0cHZ1o^2WCVQAOB1va~O ze6@tO9A%sn=D%!8!$DI>w5x*MX9o-1ZG8`F#S0=0Gz#Bh#d;am%8eRC?J?`mH@ zu!TpvQ1PGUx+9kM@xod}Y3QCCI0E1TS#AO1kd*vN z@8>p5I|ov1Iio%F2_=%n_upUrzfoVCb#@^*Q^=54d@Abha_UJ^Qpons6wNm#*4=n) zr)j1BkJ6XpF#@?}ckZ3wvm+0ldXrAtMWLNq_0)-65lgge=dS5rcL-s+lcz-vzUvm5&4TJUN}EJC(#hIKvU2&B6M4x5M7WP zt6x|%wQQ8?ObZ!xJP{(=xm3pUN|%xpkn!mZKncuRPQHnLR?Z@IIbuf7R)C$vz%PPg zH}lKn`!A@6|+iT|C*1A{%m>ORr+NJB~rMn!y5(h@=2W9J_{$n7|K3Jsm`^8E*JF67_gVW@oMb0iahW` zEnu7MPZ|mZ+YUOz0Pyc58Ln4Ngm$kUPr`(;Q*M65kekHeAVkY~OKA~^#VK}zkx(QM zZh<(}w?4EV-kfPg;`8{nCt)){O=7#uAdOf?N!{))q`&&wss;ZfWL!yG{e0NbY5c&d zu6C8E({S3&x4C(gRKK3v8S>j?5e9XXqITh`vDotcaQjUQLW~wADgN~*hf_58I&LdL zOw7@ou&y^A{IN9!z4*ZhrV;p1Cv*^$PS#mT#LtTrQuyx%Uj>5O;OgfaX>xr6PA1P4NSuokubWrHPkO@gs|6yxvM z%d_FjuS9FJ(cBt% zZb1~?H}jqh9USDyx#MzetFEJCsUXgkO3_h6=;pM)Q*KeEqAFg5beKEiK)hQ&J#}41 zrIFK6pYro_1wTFLq#fG*<(gE@?8B9wwQQcTmz@#2i_!9ECX4WT$CzUNdy;*W01cPj z9_vI8^GyOg=yf63MGMoc#rPL5Ym0ea8KRmY36aBx$1Vh~aQv&knsNo(^{tm-Moht1 zKkwwZFx2Nc)Cp{tw_lb~wq7z+z8=!aEB;0Lp8VL~1plATYO@!gyg+&5Qsdv%Vr}B# zSGAW<33j%^@h$Zf(S)!v%X8CnJmNufM%Btpzx-SmY=XKmSy$mOJ~<4Omi|+?YCk!v zt1t~NS8pX7q)G6+GQkEGAQ!%AE3KHcwF*B==SOOvp3&BmPjk*WhfZO^_FV>E$l znKDO2x#hp~Zr&Z|Fk4QS{h_}6YDQ3bk7Vy(dcM`EO(q6#e;ZB_E~FKW?-Q8sQFj*# zYriZC3qm51e3M`Sye>4ZF{%UnEazO|x%@!IrsII-B>6@juMmKw#_BT$SK=O8B)g^+={v zjimWe%v3gOzKL!sKf&Xh3NoS^-U~aVNO=9l5N`h`Tpv~iAN%~7uJcWGg3mj2)m)LN z+8@tDyOP1#ClAYHb*+8Nv(zIIuDk#Ulvgd6<2<3o|I^|C+0AI=Vf$j z|C9C!)6C4w@})a0=`tBEhrbP@K}GJP3TIId?A#%gl)2O%QQ`@Q&FopMBItY4+oLaXdUVWvzg;%ZVJK2#~X zqI@LBw{+#g@Rd@<7$wky-E_V#hLQad-tgV!QX zqMTu`^BM?@Y{!c#TO00N9{&$+y=_sHx%XH6N(7n;T}hDVqv1_U%Ty31wpSjy8b&9hcYU~vAEqc>r=)i@ic(IizaaQ&odI&~sGD>JoRoSLq$EB(vr z7_3@MLb7r8Ouka`sPd!D)>dJ4jpGICRxpOe95q6_j)bv3s%Gi$SCAu0i@BZu=ESLSm*TNx z)lTKVqfd&yMTR>#zkI6?xzi43s(i7_uiwOA&Keb;@~V}sg1L(1c(#4VBaT~M(BLb5 zw`-T9U(ieBoxBoUYJ4u%8grC%^A%T3X-hzu zIDb!PvoYbG(Sxs}~4?P)OapA8!sbJiQNDxkdp$S)RS-P)U97P&q?FldFz6uzKH` zO273q7W-VlwybP)bPK;$nFL2exb>?NJSN3EnTA^jfKl>aEAXxhrM6db=SLlCs*^H( zu1%5WIS|?S*H2dh53`JsE_WFC_NdxTrT#W%I@jK+m3{aqb{v3^b#2! z&RzQ)(AQ$EVT*mcV!%f8vVCk{OQF*V5pRuPA6LTEN!pM5Zn-{kxok1|<+`%XkVH(5 z_0)r;`(^?FBu=Yq%DHcDvZne-^H?VtMo{c)|MlQ+#hiAsUaJyKDMNpAVuT8Vb|WYV z$VL>0;~h}C^-frstl=;Pz$##k%7@GE#JWOOUM8%Q*&QiK*CD0p(P47N=mWCR=g8Np z?7XjZDEmeYA4y87m~>tqcSt3#kE!Sem5$eo)@TaTe!35*K@~z*Z6X!2+8Utmah_Vi zuc169>+Q}pO(Mt_;e4$osphdUCY*Riwd5Gm;oo4BOOG9g|KfI9)zuhr&100c0yRGP z=we8F@K=khU|~Z`wMh7T_EkIjy8_KVd75o{Q;U?y1&TNimw@q4`)*xU8>fKQ$aP#> zS_zJkd6(<*E7M7MWX_y^jm8DMOd6GIMzULoIPpy-_^&!k7bP)_xR!hvwThgL(B|@hxB{qU^;p?Jta_b9nj= z7nZsl68gvbwTJq|8%`KRkFvG-{jwG4rvakP-F>dbv z(QB0q&LGH>RyavJb6tQF#gPmT9|kOk+oLc(JmwS(OOaR?>X(Qa!=}2mm1OsG+l8oj z8*X!7LxW0B!{?xklt6W-*J1)mle~j1t@_zG-w|Ucatg>BV>08Ol%h6KMs`7Ay6g+LJjb!c;Og*jddv&wva>uhNOp%`;OE|b zb(tyy8?&ExEZEpc`akRXCpjVd0SCWxyAdLzl604Snvic{;$c$t(0&{lQMyWU76;KU z=^(MqJ^mgOb9@_R;|(oI6i0eXonYi06hP|iRliOB#L$1luz*XD^9RKpHe-F$Xu&i3 z*w`2wuJV-LHqD!JPf~&hnw?U<9=uchw#v|{s&0M8>%j8|9FFd4bKZ3k@$+8;X1hJI zU6>c2sf|N&xtIa_#(2y^&88AXq+R*C-*(b2Hiy;`U8_cqW*)Y3=D98A7)kH(C+23k zfHPv2_H|jWpB08oU1D^fl%qPqc2{_8v|pQwp$b8Y3eo?6{1u%A%y8L*(2gb3#?U_Q zKE4fQF11NO57?9J<#!;qh)j~P5#d@IG8h&Fde^(NV83Y7aK7gP0+NC)2pT1?5i4%v~I!;YTAg>pPbBJYn$%Z+WmF-q~t`8Sl%%d^xU=cijd z48fIs{xp%Z^VG?R9iQT|FYlj)?r%HDC23SVoVoI-^FkGGl6vrUwcpCW{YdBB042sP zzCIiYCNE)!9Bs2LH1b6k+YpsY$@V2DZki`!txxK+f?~%<35gJBTuknfQviLANvs<% zI3yr1-MYQ(tzt9O`6QErs5^d)egW2EJN~M%+;&-5+m5O9-%_3iOHv~2-%YOV>~f%7 z3VYULzoNFQUg-+bdm{Go#Y1YB4NIJE@zfn;a^2Y}QX}rzGSGjLYSp|vYuk&#QrwZ& zd$9$!@kpT?ID9OJJ&XyPO5-Q={v$AWRBHZO(Np(p|Kpa9!Kqcn4%z-K#d?Z2bRk+j z^0bwTVbdK>pjGw#L%2~sE?IE)Mq_BlPv=wrxXTt)(mjZ||wHZz$vf@_| zD#h^&jQAKAcNMr39ygv=>cZ=3LP)tijsb0%dFzG z*moL%gJAN9ZFzlo7UE6tM09PV4r}}MKX-wdFgs;>`dNXd1pB13OQU*dW)LYr{rdYK z^q*-{W|~txHC?Z5m4e~R5aRstF&xKb{}Ci>W1D|SsX%#{CDQ)u-&5+e#i!%b&)mZf zz|;NDpDQ&VT+yzoQFoV(t5o811*QMy8eWFK67IB;1OA?&H%A%pEhmwG%D(Ls zWjp=+bOZ{zH4|vPvSKt_Bif_JE~)u-K%OAV$2wH!A|R?tO`AXwIQ8QNmi>{ze?0(s z&~u7gjv+Ux@+Aoi4E}^Rtyo$qoJC{S)`zmYK)JG_n>tt+?jXSVIq48?HA-z5Xa`X9 z+_2Up@C~d?8&T0KV`2TKNYBkedpq^THz}mM!D!<+LSW|sM^ppMIxf{3g#>!;_PCH9 z4zU7{T$GjslczJO6YLsk#>@GwTBrL#qSe)wU{LbnMr&7xS7%yE7Wc1VpAE!d?wU_sGBq(2y=Q{Fvarv_hPx1~} zJ^w!P=Ib^tA%xTGw5vWdYRJ#O0vN&ckiosbP{PTl5F68m_-1%o>k;Y z^tPT~hq$XKCE6s6$L@)0jhg%WAN1mQv(#xWJ*pYoNfQ(6hVgFiDQ#*h?@@Zb(9c%w z)gr7>pNYTWt&m{(+*(h+ZysXX{3bO$C{C#+iGjvF< zCYY;Fl;X8XX$iN9H>CVL$`cNE&%T{7O4wzFfg->__B^>TZ4O zqP4FDAYi0UsJi5`-SK{OG(g=Q_f4$hnt3r#(imD2`VDt-)S>=s(m(jW*UAWj%+^xO zTvo_>-|f1z(l1-G5s?*vY0vut``h_$9(Ij$5vp@aHy)GTzY}vR$-3q{pm`IpXOj7V zhlkGIy#{36a(*813ssLk2-MRq1uwRN6ewXp!Jiaru=Sh3P4n?!63INaR+NiI9)Ay; z=FSk9ygA6+SF zq#&dBndXR9ZD^M1ZU|JU3sty+gz6cu!c}C#J6#21AA@-~E!o}Bpd)QVs@Jtq^Aa*Mom};zD^%!v#IBgK2u#V&J=JWBRZUGK^SN z6Vqyl=f+kS5OsKDls}n~=cGuVglnB?m}7R2L0t?NVB(379*T{+oj~hpqv4%=u z%OrW8nVI>TpU}U6G zdRYziwf+vnsTi`6kkA~Vm*w0hte}(-xj!z9yhJd-cOXAhZ3IPutml**LP$mwL{0`f zJ@TmJ?GdM$Vw$l^H7ItlCc9lKDd;H4ju2dXdiahxfz``u;5F$P@1Pi-CX@Dm#$F#= zEfjxdW#uL3r12!JT=;w6{f$mO15rj1o9VKYYuH0QoRAgf7pop3{b zjw7J`;u4IFDMHt|jfH1$6pM45LwQP_DN-#!fWd?~LiW>^mp`NEeW~ba)8+p!FIUxy zMCr#A0MWAotzt<^l6$23I;~9#<=q^lw53t3An7;#eC+|LFs~}dxd1+$5HL(a)EI8@ z!QmlrF|4uzW2QmSzv}>Ot^WGd;zhn41HcHdRLk8xeC`?&?AHrkIlBb|5z%V`9D=Ht zcFA$qwqRgU?O+jH9a}C`CMD{z8Obs(76C=p{c@70m0biB5YhI#-z4d?8< zo?2%U-cDn~CyR_a3hwH3nZucopDTuB62<+_OUx@EvWLzX&Pp*eT^JPs;W5j;YO|#9 zn8YoB7Uyn^!5P`j5-Lq%`V=SP0P915&R@BzZS=x$`rMj0m9~*vfG%EOR@jvVLY)*ZY?>?W{*t9gL=iMtfZk9rovPNOte&TH-%CoHEuL6C)ra9;R(C;S<(?~;=`~7 z*To;Hgi~E{n0dC#l9`a`Npp*jjXSfI%a(8~Na) z5tS(_CpO1f^i(7;W?MGKs@_amfX8o{{?bBz^5*$Mj{|fW&7B$bcMDDrfUMd2b9)XQWhzFkKsz!mo8Aq^a_LQ$6zP^(s62WM9!o_)-aTDst&E{Z+)gkS+uS^Wf-V%=^$S(^E=ZZoARv22VDLSr z+&6C*_W0fbLEYO_W;v93I41}5q(jde!xw9B+shkZny6>wU7$I22iAp}+P5YqxPBNiC^l6?KWz90XDui)P&83Dg@+K#lZhX*n5XX zb+zxpqeMxfVkTk*B$j!+6J}n+fYqxX+6s{9RC@&Q*)~F9>t*y z#_E3-$jfnyUCYDV&;@(Xm5dPfF3BTpu#Bzaquw`^$JZ$021UEf`p>fG*>-A6{Ph-$ z)0icOt0tVc%;jUzUOf6p%7D!i#qc`rKu2qO6@URP{A~4~JcK}CSd7AvU9DA9UPMmu z#ik^mt9+6yMhN_Z-^(E^xnzpxl4PAmZyRt;65mz!Fu$)1!8OwEFTQYs%$1@$sOo0y zItHS|=8Tmp9?|q;!UOn|KXqyD;}yh=O+=Rc#K=1N*p`L7VC_$3pHP|pLQKR-mc0-j z4^%k_+^xU^|Av8s_;@QDAxtqMT6$$Xywp}7-*ulHCP5;1>~sn?iOlR+rXEKB zXW&dkCKEcp1V=DmBE5L+Jj}V3k~Mtm21zGr6dW!-0h9d_$%`h zo;Mh@E@FzckovKStSm|iiJ%RtAv71QK|PrB_(|E7B9t~9+cU}2u$4>k?kXvFU}b#?E7{!$$M2**hhjTfpEF1cXFSXUfumY>0_~R#LQ6c{AjzI zAHTln@BgZzBvJsHA${Aqr9F+D(R~QgN_IEYWSS2fF$Vw}L+%*;MCmO#x8uToz}!A+ z(5dri2h9jQtlY!$ZgGeZer4pEX(fFxLRltQ8Vi;Y-|M8R1yeHvY`kMQq zhb~$}!ds~#k(RCd@VK5EBd6H;hk#F@8D|xNcjZrBP-3B>p?&F(0%V>0rnr_d7>x65 zc$>n-n=1e6!NsbPX)R1OYRj@Y{LZtS##-$I?O4ALnkq^-5xPWAzEXuLaBDb!+V4u- zA4yx)%woG9og(C_4|)He;-e_4-O%0$JCoN)Fy2Ahuz?ogD_kPHn9MzGeO}mrw>Y1h z9}|m(44=CD<#qg9qpO~!-IFVVKRs;&dSV}(Y(1RTS-JOdk5tey3iOKY3i$|IH;~ge zxnDgSwe)4E6=NmnO>h1$5z*=DrZ3Eqd3yoFwH^S(h z{>#Xa1$Du+S#w{xCT8=;1W439eoEpjtXH*g0GbjnnbEfpen+eDh8n>$X$N zNfEx~NH;`2GiUh&o48lzQ3QPsX2f`i_4b{n#Nrl)DaH!p{0#k z`@KO)6`q@K;j<1f9-sfDXdTEDC-}Z`{@LkG+SzL!{R{P#$t)Gww4Pq7>nN8BZ12O>yJ&#E% zwbipll$F4y%L@tJlT1h_M#0Du`ar6ot48kTq}b5KuPVtR>?}tvQ=WtT#)zDC)lh;` zMe*p`hQY`8^D%66sgH$ZKj2RNeZO2jZ3OwWw_@QETgM1XSTM8ml4pan(?F=Q4myt7 znyFJtdYb$EK3l0t3IEq|NId9`CT#k6jh;#n?s?k;tpd8|{x@J_6tptrK%0{bo$6dL z8Amt0m^kD-PTnBPm)Qz6)b*S@$B@Rw7Ch_j&_u_=OQX!I8(%jDw%z}&>+8bRe(^h8 z$bWh#a?j?chpUyPV!=86zQy;%(HXOQ4Z)lMm5Pp zpZ|~Ur#`!xY+3rf4=d=Yu$`lowEZt@l7LOt(Z)eUj$Spn4R z&r5a*?ah$svrrgCkPk~6eQ++8b2J?PF$&sP>3(Q zfaRrWiPGl*D0+_-B>Xcs^R5Nw@Ym53$Z#d!yLWSC4m4MAo13k-phig|0=%E2nHEK) zStbT`a1T-;IxZ#^W+AqnnsXdxz!9kt^*8auIfbR^{fah%kT9eFC5{4~i5DMn;aiA97 zstwcAX8(dzlKD8AZ)kGg3Sjd`xl9TrF#g-KLNtHe^O~|FrmAI;b05sV2uYU07puIj zR2y1IP(cdnV``i+6wUY_vqgYByX#ub+C-z)U^MOaECVHw!gbF{CMUOc>q-1YGcRz) ziRh;0&hk>KLnyjei|$@uS2cHE9sVDp(8RJ!%w^sOXsOJg2${p`3nW*_HGfVcvkaHd zx1`v6P)(~2Vk5Gmry24DvVP`-fx9$)@T>8ymr12Xxjr||S$1?su36oiFt!G9NrJW_ zpSHHf?c4INYQuC!Tn+v?=}4w><5L_?Jm4Q)D8_R^l&9+nYBO)}7gQPkuxpo51Kgku(m?&h=yiJZzrsA1Mzr z>w6YbFrArJ#&3Cere+ng%t(p*8+-v!3O>8r-;?QltqBQXKmkn2TMOndl`x`aKTWz#jr2F2Wx)0~C`PQG#X}^r)PTfJrE|raFsDR#vmC*E=oFL&%orm$=0p$D`I%FvWEZo>}ujaom_gkxLfTkVEWb8xOF#C866N!fO{h5h}a=loTo{~9)vmEN+4Pg3tx!DM z2tmtwu>5eCUzYQa*?HD4AGS{Q$T+&O7Sj>a+ZY20+Gz?U-)GZ0l3Q*^IL@5_VDP@4 zj|A|Z00}==r9uIY!58YvE%>9TdrNth8NinWY7Qj`p)-t#ByK7ecdTS%G!z~8sQJg( zpTvV6%Pck)Jku)r>liegh^TzM2LQuQOv%@D{8uvpKc=qv%U&xx&)3eVUYl-^^Y|ds z)1{?#7jZa?LW#xjuU_ZAFcg=?QerbvF{9w~+njtK3@_|e37c-fH(@-sqEZd~f7CrJ5F_TUt!q?d zVrvL0NDgmG^FE5@)P;x+f_nUt&u*{!HCofAx7_Kb(l`ge0jU&39jTK%Uy@CS3X;G@JtPja z=|ixDc_`dS^FqBob9pQ^E8&}V6BK{oW_}=d?&FtT9R%I~v+!Xi1yv9XSfVw)De|?g zakNDc$fR*7qKQjS@`xKNb~$h#FYay-Sq;zy2Nuhp@2XGzr&J}5y6%UBvP^jGnQ*5K z)&F`%+<|usUxpH>8QfxEj^C4q)?>HBO)7iIzEB>kA+O8WVbb_Y+`Gn}7YYyc2?G#A zgRQz74fLj`(x5sEQO?)?$X)wEx>-_f^Fb5-mwukZ?%UN#qjSl^Tob)V@LR|slSPJe zd@);zh)5hxrR}2aMib|1D-zUz-<0&4?L?;pf%a(9Ff`nP00s~S$l^O?ltxiM{Gh#^ zAG1-lZ})}JKZpg>w^bcWE=YxJUmQ*Hw|89PGvZL9AS<9#1oI9H!Mfg!JzC8_kY(UqqL@wh5Pwx(_hH{i zM>IWZ%u)T^_BQ4{d;w?J;MdXV7k_4bZlk&ueS$#a2XDAiw$Jzw$$lfY`y)hwHQ<32 znHtW;)?E;dC1cuz!v#xuHkGog%f!C#I0oaCgodM)Dl(($aV9AppF>`5L2r>3a@HpQ z`KE3;Hrx!{btDI}-|v3pUbq*^8(TE{tO-Bk(mQ;|ZzQ;Lub;V?1biYKgt#whz`i)r zdG*d@h!Q4-uwiXl){B9tFdD++oo}zyFbdtOhN6Ksdc6R&tD^iDj6s@DeWFq3?O8R1 ztO$IwM!dxjLS;98;5hO8Ns(}S`CwEz)EpU)25z5GXCaKZI{d6HY-^--r|+YxNZiPO^7TDHaN6MP1f}Di)d=r#nNuOm0V@ehllr(Co%{s5%E9D6 zQjI?vtaB;$X~V7j1 z-wD_j;g{^Z&HF5nguxlFGV4f8L4q28&pXFYqz_t?BNg_Fs+bi45w8lHb~&>PM=!a4 zmfX8S`c44qdP+p*+<3{ANv$Sgny`;Nni4orqYYFU2n)Mnp9#NZoaf8AWErut#FpZ!CHQu2M{sl=5!) zT$_ccj({YxjoIoj%tS@L@x{`Yiajlz?N5kJ%h5<4s5-uG#U$+d0e|MQJkep&{?Hv2 zJZWyrN8=>tu7wB6h?ViL0@gAr>RgfMw>VNV6mz_@8R|M&xE@q0DLO4|h;R}Pm+gqy zA}D}|86^Bj5Oylm%+`Q`zCbGcHPU!Ok*Qkn7y=1TV``Vax$N4fMi$>#_3=mU*9B8? zcJXAD@gLo#eBZro3QJ9^VsMel0aZbH&~$#Pv5zL^l#oclseC}`YRD5~8hz2t{Uv$n zd$P-)W}PFtG|O%210f}Iub10V!{zIYb>{lUA60VSEIx5uk`no&Gw<26J1TwL5~F|q zxaZ-SE2<~to^AW}M_NRb=t4%klblz5(PuAZ_MaoNob_x??ZOo`G#=(u@mQ)m@>|;8 z^iUDKAO6cjUH!a$`gu7C>+EnZ`O#bYO^N-BYo=SbFWILbOD`>5T=zMO6VEW*r?sZO z&c1&16c5@a#;`llVKxHJ)G~^&IdCy?8p=rfbftcO_t)!`^gQP0QNn0`l+cYPGPGAZ zS@gZYvVV{g@@x_#yg`)+DVibqb1>d4AB6a|LvCm4-WT_w#y}8*I@~SHlN$ET*lg(R ziW<-9Px@gDo-p6v6z81=Kh{0r3?urD8q;q2(EmE;`bWNBnez|a>QFl#W48F|U|TD1 zw+*+Q+TjLLhP~*T{Yh-aI9zg?vZFB~GCcT3t)Z0i_3MzSv98EBSsHMuDNPT*TIa>( z(}n5O1q1RWFQwA;!Sw2_U+}W{u;PJ_j^h4r%G^!HqJR?h9|WbGZ!bJ(=xTNw^}RmEldC$?nNabwOJCn>Q2;-Sh%H>-Vc)Wj zLj~zrC6K(l^EcAGm}U|e0XVvC?x`msLBQ1~zq{hCl$KYoR&EwweZg5mX{z(C@Q7wP zQd4N~?!}&~SOg09=6%LW=|`SLgsPTgpci!|O4@ZLkT>!%XY01wW0ts;h?VR82CYWZ z%tzBOD!x{9t0=#5Yq$yTK-f88a#XL^Ws%e)|LRWk(@p|i15^^^r;a7^5nsSC4B zdqfVyYvM`kJ2H)W;;9>2@+AfEJzxZ-u4>6Pb-NUE4PmMg<5wv#?Z<{weX!7!Ei`uB zxM;io4!ciLvz)UJFhcfFyoE|;i0zZT(a58MU$MHnW+LwlDM|65k%zZU{R||wABPsN zS|SgZR|Bssxsst+0WoJxQY_Qv!!ufDw`}{e1p@i-#BdPbs~n|JX3<{FU)5L6L~IH% zgb7FMhE7VCzN8ff7lk3c&Hhm2@+4}66A>5=&f~lGGMq*SX#yr^&`D)k`7G~hl4o{N zy0wb#UaFbZuY2}DY_cPJ)#TrI$vojBKw1p^+x%5E$IBp*oDVGiTMGb95!W{VlvjaJgyXBn?Flyl zJ03qa$|)uqxW+i>sG0Wt#xd1mZk9C44o@3ipDuk3#i{4G@_o(^Z=jA4-0ROt7Nz#i z1zW-xjG$}Ms;5u(;2fM+r#3;7t`==S4iQ(aWA0++YJWtNu|h=$>}Et(>|m9W+tQX5 zhBja;PxDU+AfY$TC4*t#1}zN7qk^}L5p|3P9MPmMqKo;BaS8R%Kv9s9gitBxe7T z?Rryh^{O1Qqb9#!#2Z`5tkc;s1WRwuC6pIK-`eSJhW8Q^cpnFJP~2K+%SMkh%Z?GE zqU>(`O788^rcLu6=3eRg4nsr+Qx6HD?+CRWd%0Ye1S%yje=ab}hd?O9$~H%`xn~!p zdYSjy-`p;7h8i@SR7=pPap_4V=thWV2UP^Fht>c9KwWZb0iBE62fDJQiN6{3y)9gK;j&i{H~g_c27!n z+Nh3Z5@`AjvPM$qxxk&iXCPIpfgn9RW_MzVuF+Hwy#_r}22^h1)H}NhOx2S%usB1+ zc!;uP4kiqfa-4%;VUQbC3W(p!r0(unT86E=24Jp3xTVO`mzcb=+Vs0>jeGs-T9_h( z{a@^3^N@T5H2{i~)7q45tOS6BQMVdt%~Y(Y$98R$R&YCKw#oQp9M~dUm4@UNTrx!Y zgqc07yUVRH*&uSS^1w5eExQpvs7DLk(BMeYHXuoyn;HM^8b#KJo_!lJyreC=M@qM0O1qE8bhT7dG6M z3{&oEwGY}!B(}PYja09u(=^4ixM%CQ$CXMDeFIj-^d*{_2AcT-x zd(>(?mY);T1&)@D)>o+{!@sAWZV@()C1jk6+cu+WX(6R&e-d7UOzWScM$R3N;!N4s z3BzqscKsFPineC?ufvHUWqz!X4y>hC&>?K=7&Okz2P#6A5Paa&TjKR(xxyfE3Ckgw z8AHgXyVO!xK6?fG(h~fn5D^*uMn&;kfr;-PP?>o&v*PA`+oX&P>PQN8&IMh0Nm ztH&F(gHL(P$4fui8>NO$9p~RMl|>ANo;6|nyK=9cT! zq!Ngj0r`t8_q8u2-LLKev1%EF|3Cyc-ix3?RItk->{UoT!hihU0bw4- z>Ws7-#1_B2(10ER?=Bc6v^X(Kd@vPEIfz-X4Q;0}+H`0ER5h{mVkAhfbd*Wa)qw?= z#9ND+4wP7QpVo%xBtA8-Y?O~!HHs`fU2ypsKm!&VEpj++F$37kz-Zg=cpqOwD!B7hGPc;5+&FDaxumQKJk36 z=d`iX5HCsxh%jgr0mUPmJ|JU#mKx@8kqc?g536CxzN$9M2Y<*o1esoBMq@9I?ud3B zviit|cQhM6V4@}g`#}}mo`2J(V@cXe6!QB&X8*@)9H%>`oj&dRwnDxPh$9fczbiHB z?X5+3GL!yY!ex&Wh+D*|W^+4UmWN2vB=2K-x2L-DxSxW&7P?o`EP6pK(PP7w6*`az z`KLVeZw)%o9YYi<*wm@?;p#4@nl8dkcV~wVF@mT%_hf*gc^=;EJe%W{D@r=cANG+p z6|m}ueMjzpDY8m(Txa}?{|ZkIpNk0h(u23qBQaHBK?OPRdy0WO^I9jQ%MapZuOmBV z_5i$zcz4mssbW)T`haav)uXyWuYlRzFv=mduzS$%8ma%j@xXihX(@@7H$8Z<+?tWM z-Oxey^LY2?O}WCzHR8Z4P>2il#a*4LpLn@SHhcf|WyxBnxtIFkE$`;utH(NO$!}Z* zckNy@TQU|fIbPj@zbb&D#B4f|q@(k#csef((?pT$JO>v_&Jcuvys3>D45shd&Aa}7 zr`d_UBf{|g7tD30hYKUO$|<^fMR)gIbX3=mG@1vu#`fI_m}ES;=2fr2P6-9T7jA^+>!o-xW^6-P%6~>fS?uq90XNE4L-7UN9$wUvQ{>$` z9$a#rOynCY9!yugWS_JU|BS!td#jC>^=7bqb^F`fkOR&IX+y z+~?sYZ*;9_hxjFuG-p^o?SIjN!zxje?zg%|*l6?q=2pTyxLudbOV{g2bJO=2r5(bf z!so0RB|^wW{i})(HkW(nbklpAgDHAI?fLI``q<*bdHif6eDut2{k-6O(FFtJ+<{N{ ztC96^H}>J^ru8QwGFaJLEopGyzBZ*l1|38MXhi%fv-8HGD3|IcyHClb5|cDGli$Z)x-nvieo(m0cP`$^SKaC5Rx^wL#F-rBLKE_EXNNz;jT$>P zR%dig@k3OmbT(_HnmsK`K}WHIghFi-#i4Vbx%KAmVATx{Cnc6%x!cN%a&Y@ zH#x}fMy9CqCRigScH=zBffw2xQYJ6Jfm>>)x%r(SYyv+O`}xk7AnV8P+43>t3YK|Q zP~k{T7-|3&Z0ua?^_^)ceB?pp&;u{qiK( zm=a!t`vs^&_stdL1(j_BkM=lr1<;;ghoL++Hc=)-V`Z9lRR`2nHjT>LxDK8MXPMgK zl`juA6TQBfZx7F-i?TB-8C^$(4AG$^-)vc%I;c97bIPWL{&6J(Ul2RL#O=n|i~*JRMy% z?FblaxI^vFH!n;#+XWQeDp3tx-y!n;mSX+JwKhu0OB8mf1}O3A?aTD=Zkxoo!I)W}qT6uY2+w9X0U7WWuaj*3hD9-S9 z6}a4u`Mx`=o8aKm0mb&YOMETmtq-#Yg9g_ef4hHjps6&3Da>-hnv1V?iJg)?<7%NU zKLu&Cv%)<0tCy9i{mG&9^h5f2J`M48>?#Mh&qo9P{nNU2K}fPdknxZx1WlAbB^BIW zeM_^S`_sDrdcIwA)8?mmUBeI^YdtM%7iG)KHI^>alH=r8)QC3uYu4s7vdMdOPG{Xf zi23ZoB1FO0-g^A>@yshi!n zJj$|I&dwRr9y;~2ADehYLMmZ49-mSld1#U}Y>S*l!8b1a6Fz13?YlI=X~qa!H58{V z$*-?mkoWc*KcM!&k+U` z&1P;pgk-CdTg2}xIHcp>GJSr-hbJuI7DqqPrh-h zW1nRYTGCY(acgqixwUxfoRTM^-u&tBs}b0XqHN=tiIzdr@1U)} z00S%>dp0hO|59fA=Dj`pfQgb7ty+u9Io@S%p}<_?yQD5N^cUk}#F)4D^^(&B8U26P zIAkzMIXBAa+JTGFBv;VVL>FH9*u37l19ZHDl$M>Jy})Jg+);=f_16s3SX;RG9;4Id zYoC6VKq5KSJ`h=SM=ZuApoyB|7(g%%f-Q^ za(2}yLnk={E`tW(^I!k`5hRNLoTlP^y~V+yXeAcBQR*c982u2|SM%!w&hJU{^i z{TA)wmUHEsEU}8HQ-er6aV94PYbM)tbkx^D6%x#95u8b2M1S+F!8QJFZZ=3Go zvhPG572m!yDo8%{!I~9-*Vu@5^yec!<7-LuK-5UR@2&~7Vf2zV zkGC|QLcJzrlV1NqyFZ~oEVe6#aV!`TE|rZ*+Ysyb1m87suhL!Bdy5qff&KDN$x2CY zU6dzkcp8oWI`S%u;@+1+bkItgOh0MQ#bdA(LaEzFW7}pXc~F&pX#zuuT8j!G^{2R% zsKsgLW=*}g+`b9KX$1A>lPn4Ow8ccpHCI-O3KwGs<_K;W=|&OmuFEyETh!f)TYrM+ z#{>hIfB`hNm>S$+Pb}SJf4tmVRE)uH)kuJMH56~_aSpTm|CY-`=dy5ZZwB~ zVNzn+@_xXPQUqaP*tMaJyJnM5+CH?VD=8i!UY&9FjfBc2?&{5%ufre_cv#DbB18W1dqG zgltk4?IQ1C%Z1IG-19qzzMV%W3NnI(|_trE6UfKA=|2+{N%}riQhW{59~>r(r1R66KIG zK14g|8O0*!gS#nm7k9fr$&iyj2zakIf>`#?Mt!Z>J`!#DoZAwNHK}gC?7A}f|JtzC zk8#BdynAc?a^=_$mXio(Jq>5jj?u5xkR~r$*2gVFURXG(+fzlp!11s@=?1VRt8m73 zc*jd95$zttjkm`dDd^tUXd4+K9Qm)W&8Ci+Y_$P1G1K#E&)c8CW-{W4o38G&5>KS# zHOkCxjne6=zKtI_%AuL;(YKp2)m=|Q?i^J7Tat)Cguh3c_H-HeF%OU;{~Z&v3J;>= zm#g#YP}Lp%mb0r%xkz%(c_@uQ9*;5W1bVE56@AjL=_3crrosVN$3dlt$XSgfzay3l zr6sV{4PU^}nq^ZxmqSQR&@bm;LmGGz=A@o|`n5}{%;+D1jCd#TVCw(%U>ig6Iv`8p zJI1{vgvLBRj5%x>M+sptCq`(Wt*vC|aXrLU9!ULPeVA%x^=Eo{Tal;iul!rlCFpr+d4Yj6bs`a0TjLBoE2u?vWO@;#l%a2hn3dfd;o6#J=xIb0IWI@eD;Pdq1uD zUVS(95nkcxqP18Bk8e<@`<1+ZRB^~9Y_R)cmguOsu)?bl$~;HK+q1jNuj-}Fc@d#> z0v(@-{iHFI?qKU&7l!Z_WHjG>H)?W^EjP;BowubGPMkKi&q5jGa(h3yrX>y($s_`d#aQLK%pKqAlPurRm{ zFxk%%d)FUwdVn1u=`CDwiP>6 zLl>;;fWTAMK^uirjn*qo7AAON3%Eu~PT=L4Sm#At#4YD9Ub10`A!Y|Fr$Swsdw4t0 zcoE}TFn;lcN_yJ58voZ_9zB- zW&g;bL5EuN)k!Sg$I{cl1gUpkEkew+ik55KZk&^vez2biVG1!}^gkamPjQTXw@2nY z4dYY65k|(45TyliM!&cy);7V;E(uhtP^K~S70fW(1@p;P@~(B|kDLt~oPaGT=0k(lI`}Ojws#FWP>kYXf8p;j`(3@=T*`nOab6>An06E)5CxaL7}PKGL061JFuP2@fUpVqO>dzsT|V3^yXm-Ofk8} ziY-kflCDhxR|^RQS~akMaC_(ZGu?h(LEcX2Z6l@jxq7Q}|3mMI)M+TM#?go|`wom& zKhY5A0VdvN5+b6h?gv7W+0LAF@7up|5D4V54Cn3iM%whauHW578}xA|MpnkoFpdI1 z{&?NjR$Dzi2vyZu-L*>j2uD#75#2jdk(g^#YG2^Ts*;Sc6DT&CpP;l~DGDHs9^>k$J(QpK*eJ zA+#SsO0EE|r!GfO(Ti{~M=h1cVdUu!;ST~l20Q5nkzHMxQ2ma8Y|KIOP^+X8 zB9k!%JWJF1u!wKeE(-8CKHLI^EB#y+Snlz!?Vo)tA%k!o=fv7TaQNH(2h%cqTJJuI ziq2rYh|E8ADh?=?Bu-mslHZ0)e(o`yUhJgCiwa@s-v9XJkO90@dP~5#Lj`RJ+Cc+oOacXsuvJr_;Os%EZc`ml{tJr>%dskps1 zvAGx~6I*#e`bygJhOh0WwGj+sG0B6WGk84AP`OWOh^ohl$8*n?QJzS-VKL@>jl5TG zDH26IJ}V>9cPtXcmtSn+FYdFo551^_G)rW8s5${C6=+IEe`BUspU$N$_If6XatuEk zRo$Xvy%?YA?CfHU#VWL7oEedLc7|urqmhqr6N)70j<1Y67R!YMzUy}6Qf99hCsUCP z3P7)gWun16$yT@8Y~eLfhzbVGNu_=@REbO2%O0s7F2)kkEm!5&VC;sV`@!T085fg} zZ+qevd-uB8e3LGB{)KJ>V7hFO{`nLGF7QNI#rXTFbAbRhK^}cO-rSbb_;w<08_Y76B#kb$%(Bk zPC81ZUYZpz^1yu2kj<_pZF!FG^dG!L5;D%34FX??-iLdkVK;1xv=7wrY$v%S3mAsj zHgIj&EB|IvbmoX#a3pfl{*PRjDh0HMA`E!xHrEt_R5X*GSTD*+ zqU4msw_kLtA@8CY%(2Jjau_oOZD>;7Y}9#I^fnWtOIn@K&w%rvuAZerHqk-iaY$LY z8o$pAw3XSNZFBu&J~MC2_*f+YKMfA<1LA8x)H$q>b%GZ9^R#=L|7#^5;LIN15qH10 zkp(#%Xt3my6fVfY3eEv$MOc2wL+MH>em{G}8H2p{<*0IR+@-ibMbS@oQ{MfPh7z6( zI;&*)#Br@@!8jb>4M%DTKT8dCtQM!N+g^$uN*A(5uxG5 z)M|K8&49pFt?>hX+(}*VlNY=%G^3#JJeM;2HdQ`0#~EjqB0yeRJR_FD^wOs7edwt9SZ%j}w+tLzoFCO1GEFJ{pba?-980VMfW;7GY3nPTk`$UcbHVEaE zL@BYEq;AKVT9~A=0~ed|MPh+TDZqM!K1er3&E5WQEaTtAF}l=Gv51`V=YL3ON+Wzo zXqjMlYinKJXv&UXK0>6>OCYsG9l+G!B5K6sR!>ugaR%sxI1w#!#S&`4*{~VwuRw!0R1?dgI^kLqVy7rN9yRqekj%t7NZ&fI8KL}li$;JeR?$#O8glFjmjXS$V*@QqIT=71bocpsL)fzziX_OI#hGaYZyfkGwxUGTP?=>O}|?1 zef`FF^*SvLr*`*_xcI%sXLr&`1H9;Sl^$CR|JOSl@$drgfGbl`F5E<{naRm(jcXlf zss-r9*$ET*gW{L49d(Dx+sD-4SjdwZ@>M2YDx(0O#sfU%y^ zc`yE8B*%8~!zs?VS~Kvzj2I_oBADbV$KP@}(zyI0-r}hJ!53}!@^%)_^L|hH z#!}xiianh_mYuZ=rYxaT-U!UD*Yz0Utz4SoMkPhb);6~s+M2Yu+T<%fAdnrSy^qxN zcxuIy&00DK?BE-0z29J`TPrN4#lyv1 z-LI8aB&6hPD}U(o&7&%EB)tSnt(H-Qs`QF>(!+&f>HT3|yv9Z3_mvdDOa}m$;mvtF zC0DS{P}l~wD%f|UU(l#ZfDvw%X&Q_4XQcsK*MJ>+@vgnPFXKZT7f{{wZff&lFhC)+~-DT@*(7MLPew4ID!+*7x-KpO8r&@3GIlZ<)6RihYYCo2Me0 zR`HH%<3cezRR}Pd*YW+s$gjq^?!)&sO%JB?1osr{)86~9e!A}_aviQEeJNVxsU!dD zRNQt4Rg&LRz>(HiO%X_kmaR`i8=*=8owxhF%}LvqP9?YQymAmi)kxUdZ?#ZMx6(#= ziP+J;B%d;fjU|b8WHurArrI-c2N#$o*JdFvmWtx)y{b=Qk1F%~$_`HqdId5!m`x=5 z2GUWIDbmsLW_T@CfVQj%g&_cy;BiR(?lHJqf{26ZVgS4SQx;H68Bbo!qllaYx+QvO zV+Te;iFk$VUf%4163WHN2OP3uN^k)P#|}Cwo?x1DDFiOjUHKe#gjC z0vfTrJ9A?EI-xo{qFG&VvU}#31Qd!Q!_x9jt zpCkJbF>oDhAk!CX9zkn!Zkd-P3}CoVJoUW!7tvlB(K9P1kduy47Kpal_)2^*u!zrs zQb(w!S^O|kRK++{Y!5Lm3Y21lCs#pi-pUaJ{9eD*-WtriCXL54_Tg1jqTfcSIJyQo zTUx1z2^!|kdZ^U*I&3|w+Q};vx1;v*0j>T&T)uc2KP1>gwCEsZ`P`G0iv%lzj_r-M ztKsT5?Z+%nSM^Y~&1N?ccsp>ax%GQ`WFzz~RS+`=dY39J+Qzdoiho17X#p`GYMGKvocxu3^gOTKSOc-N@ zK>KL57(jGfU-2+SQqgo^0+n-MBt?uTk73V29W58b`c>$X%mJBA4Ae{#9$Ly{SoV5- zooYHw|2F!!r1%akWte^q83Gb5|CKwl#V#I8n2)6TK^7Y-eNLqxpov9-xQ>f7&Gz}- zuQujK7IrI&P<9I?XK*9=2sIET*E2$4pnuqaIpHQ6PH}v6q*|1CqHp`}S7!%C9&kEOD%^)bY7v&O8A3a%qQlXO@zYiwb9k~`Z(8M`DqPO{( zinu=k(S>+JiJxP91TVfzaUXlu`cUg@v{Dkx(*BvAl|EWF7Viz&-HUqtUv$1Ll{|X=4S5izuuLE&%<#$QJsF3j zvNq?G$G5Dw_aNwYM&3(nvaiT4Fi1-gx;Z|X9C@W0CX`Mtu^+DqIe1FOYqPrDR5B0( z+H5(fS{_NA?Ou!H?hjR^+bnhKwf#rz3PuPxso8yKL-XVuybFWSh)cS&rKk|IjeZedlSz^vQ8_NFZx(KRC|^+dbUck7jYzUBCxW9-XH^7?3}sFpTT z$K!pTI#v-Ot!E+}7~@~Axq7E~*nldmPaHb(7Q!oUa4ESc&#t&+;wHX6&| z#DnpuYO+wCP3G4rFU+4E?NVvOoo(2&-{HuC%x-t%pOb%Q%kErNk&O5I^lXIsZwrcQ zYne}1RkW*}yJ?bmF=i3I#FM-7D;0NcJwp~fFd%f#lyQ;OAY9pt^;_>!psrNq#jG?| zxpH6@4J~}SPY#Y|Nm##Qu`4~+H94X_6qT60J*WFC{varp;CS~;zyqCh*>kRqop0Mq zi?t+n$3U@i-??D$Qx+d<_CzaGWFup%l1g3&V~R?d(4$t_r1cdl4-8SQg}maP5+xOibZ?nR4k+3$oUh~aQCqh*ixj_Oc*#Y8l) zoMOxqs32t8B{eRuEhz*hJR!0u${(66JpTjb93LS z$`1)`Y%|NJwXF2Jedm|N`O$q9xEMAK0YfxJ;YIV94;!&?KZMUH1T~3Yn~-0B&QfZ? zYZ%XlFcLuh26eoSJhk{e!y_i4zB){drd^Z<<)2>>3nUre+;bh2TCbJ&#?N0MdeazM zLA*|tqp?%Zos9n)W0XFCTx_htusy;_eScSWb)}BVtZikxZS_aCEygV~670|XvF+X; zXI}~swtuXBx)Shn?qr^J>R)#+T`_p;x~Y|QrbXLe()CkrmzRoHzE1Q~nVYq>j*4|! zp0#1J;i*d(PNq|W4jl4(8lXx(^V`Y9?Iga#zww=Qsvl*tO$BM0`2Ml_2VZEF%kX1^ z@S$}d-%RT>;nww}%;}7@X;k^5VrgPAw3qmy3qeTd7~#C4wz%wNYG^NO&e@p3S9NJW zC$|=tOVo`K#9p#TeeR8DVpQB&;9Hc;bj`LK!$BcEo?FtpH@xWi*D20M{h}RxSwj&< z=OxcCxqX*Sj#m0iwW@qUI1i5gb2ND^WNo2+8eE9~vGd+W4HujlzlJ4fO6&SGt9s!$!NT!^ryyiEUfO)Y4F+1<0)Tgk&)3U&3(DcIS8ZhI*y&?MXym(nut?keEg^};LRaf^Y zB?Tym*Ab7;7MJzp-*6Hj7@<01ll@&`%fn71R&A}U0MNSaPai9FCo^)%a)J5gCFk67 z9=tx`=4O%3irS%IA?T zGwvG7fHly5;2d6)sa=>kcOa|Tz50><_)2D+%WZjYq_OmqE}Hw(4>t5lW0i(~{AAV>`G9zGObp6KWPH8YbT<>@_sqHh+=`R7Y( zfr>_P8fbndeNb2YpSHLK`hrsV_p*V$``q~+Lp!u2nOI*tJB=rODJ4WQbJY`|m#)>O zzM}f2^bHzCJOgEuCc=#;x<8JpZ_RkfX*rjZl*;}f#9u>F`Dc)`%g{o` z+CobLjFQ=Snt>K^Al~g=MsH!F&`;_s+q5&LGQL=ygG-EAZQQuN`%)>>9%t8!_8J_; zYaz!Hexn)%k8SJfwHelQOO_BO`P;F4YN>Qxg)?%#{13td+!9zf(=` zjeS&7R(NA9)RWK?MLrVDnH&Y%^O*;qtW*=dVAn3ydA5LGbSZ8rx73SoIhup*XcUr~ z!`w$Ug-OE)cc~-( zxqk=`i78a{AZ6Bm#hn0kaIi$@zdAbGLC#IPQZ3^Caq2yQH$K(#g9>qZG*;MF>1!IB z95G>xx7YJ(tdFbP_(|O~OjSC>G`(KhJ2X2aIV(ayU8SKgG*UanKyVTscS0$b7~G$A z5K+2)eMwN0_9&$sarB>V+;C0pD0W=gg&$w+uLMcnQZ8~dv}b5z!OI1{M+qsX1ivJ^ zo-;qrXcl`t%&V#VmDn`$x?gVeQrN&3&hh6U2fkVM@1yv5OK*%(S08m6jEm^1Na43d zT~KS`g;IQXDbh_9=t_XcKOl_kU5HrqKtkz4!LwcWRCI83vZbn_lj+b(DY7I2D)4^w zOss|XX=008sLu-{uHpi(o-*^HYUsZegS#$%CH=0%Ty%B5yq6=?H_30lHCho}F=Gu= z-gUQU=Vl4Z2Q`3ea2F(fkp7p7@T=ipUVAG<0L75eM!yU4AW3tqBuWo?N(pr@v8n?{53j zKL(y>G+q7tQSkJ;U&ncmmWnGd8E~M!l)D!vowzjHx^*${i|aGly*t#Kj}VWMI03H4 zL_I#m$eAveGe;<1@)4k7iv7X1}(#n7KoG_Ikm=OlL@Q&t5 zD|$&Q%sg3Q|J?M;ug|ec_n`+?8cg~MRz~7(~_P9}P@tQ*Eg!1D0ff2KT3@)jc9B9qX!OZ?f#^tarEcwXs@!*l%*|ShK zKqqq@I_hC8Z=eC*z~oVg7%VkxGz)#FRNmWXyL{iob=qIXZwWz?c$rRE(}jsIH^zS) zlLsI7Q#!J+E%l6x_)?m_KW&-qy&b7eDQM*Vw4Z(Zsr-5Gpf9TY6QM_4yJQ)U6H2|F z8?8y8#o)9bGcPA@2@P-LBOMk$r1Fv>gaTu-)xma#JAy?#4+!e=ehB=RcpwvsiV=)mqA%)&6lne=Dj{Q$t`H)#cNl zeZ=!VhU?G+uF}H40i{`ka26b#vZ|R?_ zL&9LxjHC(8{rQdjh$e4pcQEIo(%#}+O|LQmt-4f!mT9kvZnvJ>P_7De_T-^MM^@#N z+$~W8jpLEz4{WcsX?Oa=%0nrrRvY)=)bL8c+QNz-HpvI~+3{Y(*YVJazapAx@nWB> z{vl?>rH3Q{Qz{V&wr1z%dwsYZNCt$CdW~xFg0fnjayVsk=4lu4y&XSowcGdBm&vQ| z?Iuq)=&+}nr9L-up{@B;`F`zf&ocEJx5j7*6BqDUg=dmy{v_i3TaG77hxGP_n~pA_ zRx6W29t;6GK|%d+GHQ+2736PyUI`83Wha((7~iYdtU-f)7@%eG43 z^e!ZW{Cw*FmR-zV=J9Qc;_f-l*_weV9$6bzL<`k@T5wQJV3Yg!74U6I*A# zwRZaXeaSF9;RD7Po>!MQ<%pST{4$u~l8e^xyzFE34YlGu{hN9DU~D*feGsbJVQJzw z`M26Czf^1)N+7*6In^QJ-RqccuxX$?{)Qr6>bzH~rUy(`3d>~uKWu#mRFv1&_860p zdo5%lg32Jt5G6>HpukW~1V=$Y>C%NLQlyUbX1vOX0wM?~Rbl8wq)A6XP>~`?5gdj- z3`p;7`1g6o8}GN)|E`s_lIYBw_ndw9e)hAQE`$m%{VrFrsKPv5ZBlllgUNM^?)oT< zrzwb`LcLgWv-IKfiCdRh6WB5WgjL`hjXx`F)%hT{c?esN3-6lysG)rzR~PL~sHufZ2m*=EnE8$ZQ7H z(+0b5jW5{-i#t7beQznwzwdyTU&_(kZ*bYX>#pis{_b|4r#aAmrmi#5n>{*}IdPw` z+Jw)4OyQ0fFKXX0QQn{oja}uTb%)XA?X}5?!LLEtQLg^cU$vT^#SJ|HpV=_vsT|`F!MH57oN;G`F$S z3j9U0HqoJhMUej?R+=Z1Im`Fbku4t7ei_m1xHjdrS9=jE6rtIGLWt zv*`YSnYCSCTK{}rna*aFb@er;&)xae3q_noiZbdoO%gx8Wi6q#5Q=>cZ2D*|nc{Js z&oCRqd(ha!P1V}~kal3h%(>jTMjK(_TuypNO*l)i$NRFre)MRZ1s@2w&)80pS0>}S zL(|~C*uTgWO#i#%ish9Fi&N^==f*d}c9u7(rBvce@puS0Ex+#VBS`Uu+X(509I=vk zq7*GO9YQUQYcoBTtn9P=-VNR4Tuh7MjPB&7e}BvAs%qUD%3mQQ5Lg`m#lpba2i}+2 z8I}Os;igJ3Lz1^n`xx2YiTM;}h>NNjB)N~h6!xI`Ih_qJR;v@C`51L98N8QwNp+tz zW&LQhV`tqT|Egs!?i?Pk3~%EfyjR8D&Za8zadVd)9}NGagc{QrKAK4_buXOI*YgoP zc~xIcSlAEPc-Jb!q7ed`@Zt78+w>n>ISzQORcvsLdVX( zuh098s<#D#gyd35=0-t5`yK_3U_RB$O<$8`%t4DqvqwVJzZ1*U`SQmr%Fpu$n6Q2@ z5`{(n!GDXa?ZjNVK<+8nPG!!$lrD zdTcKDw95r-Ar{T6Vv;gkfz<1o$2G?LzF2F*O(lzQt|jm z86!@pT7(!XNv|Eh=jyNJ=RKGOhA;ECCq(t z3%lTXh2Df`q4;Rv@yTXFj@xC-w4&oo3LKdCUP~_fd4yt%j3vRKkRLvs2su9XXMmOB zJpGn5ssO^*a#nfR0Y-=70^6$GdQ}v=$H%=dseVRPH`x~y%F8nof5*I=r?)zC&0=yi z9h}aFB}NFvKh!BZLOduI|LSdoP$l$h%0^SzuqRMIS=n!)i#Ujd*$CkY*H|@&P_+6` zclpG)nF#GFn4rMptWksIGCq3A#P}Ct;OX!0I_s;>B_8OF>S;^8H=2-mfO?)=)sZAO>BzR4lA&nSbg z2Crb-Z_;3TPW~I5L2&(bY59Af|CKe`5M;~#m!Lht({iFxp+x12Vt$ZUUr8p|V!=7vj5<>@3?rQhid!YwLO|VPXt|o(W zKNmQQ_-}BOLT(u?-~K0{#7PxLj@W}G20ui|G%+BC(=dOm-c--0}& zY<t5Bv`V4DI&K@}ajc_szav2WANNYwly^c6x)q1gB|Rwl@hHOG+JQ=W=L( z>|L8DODl?CVdA=^~cGA9!afx;d_W?Wknx*A42ejV)XPGSPv zaH4PF;`dHImm`j`%FbSiUNw~2eMMf-cKTk)orR-nb${W&LLp2aI%If@cm~!6Q`{f;3v^BpCUT1~* zdlbvKT(Vvx2f03IITKz?R?VXD1rYS32p|CFFNcx4?EQap(5$<7k)1&1+U?+b;FY=?yN%Q9cb{@d2 z`Lx`6yrr+!<*ORUizi1*49$+X_Z6Q@EQ8XA>`PzIV_@IDgQW_@1T>QrOe_lH#R>}$Z)ah||hiW~ZO-ZQ~`2TNERf}+^B!)YX!ufIe|MeyZ=^pAEW0X#m+BW*NTjxhBD5^j)8m4#cJt&i%)doN$JmplhmFdVKNCC-BSt_<(_I=G zrqo5C#Rulai0ZGY8}60-RKEV`4VKo4bN=nJy|qQUcF0wY$wH0CyXkN;JS&uPN)aNXL$vBE8+sSVG$t^ zo)2XSRVG4D^s%#O7ciSFLD9konNohEdr6Ruf{5n(gUKP=eOmIStNOYzu@OlAAN`aV zDFhuq7{AdAZw(tjS2uxeieg`{w(0g-A&c8o8-%wk-@l`|&;Kgvz!fN%yOol2gOy$= zgqnJNgX3AAIyISHLN<@UbFRX2j5ppI7jHLiu(^$?U6EHDugs@4i|Ozg=O&QBkQ&RSjMYdb7c{3!;L~rXttd5 z=lW7nS)ZZ&H!J>MFLn67?qhST*R#6FO*JyrZ&o2mD`7;N(VOqJ1(ZY#y~wHr3jl*g zzb~g4Tr=Nn&T>MPWbkCw?$zHKH8D3W%F=KfHaw+j$a?ZX;vZL}W;yGtnhht&Mr(m6 z%@*l;+W^OC#2PPem};I}DFreed{SPE&=q65v_#HeAY9O3@Y3huxod^mDJHG*5j5%y{Wh3A;{i*aF;317Rz_GabIP{@ zL(i4FUo4i%uar{q*J@tPj%uQG8_@Dc#vZx~z4Hl#vMAb>zGRiEF)yw*0C^zi5PWiQqs)|r< zkCPLFVOUw`V^`ELh8db0{{OI)Rn8{k6BkqxzlCA}&K?iZ z2y@t-WB4^0LKFsJC&IJsB&LPkhk9rUf{Bv-dB5duoAILjJLO%IDk5KylPxJFZmW>8 zeWn|@^Dier$mn~aX$HOp68)#YhECWEba%u(+)zhmZx`rV3l{z9>KXj(-{`>qc-WZX zz3On)*N5ZS8%-Q6b6UH8^I=Ad3~-?;EZfN~^|!W1b>e=4*^#|Jt>{^M4=%%*hvj@d z^AzvUj{)EkVM%Unukq7jpk1=gBnPxW@(c>N)$Dm~tF3x%>GOwurKlk1o5 z_w@3&4>1eNGHp^%!v(3NbXvV7^+7u(Pv7|GXJL=fll=!M+Y*$afbQV$D(&eZ3=DeS zSxhr~ozAq1`D z*Fuf&U52Z5(Bz+Ew>+Oh(Z!Dag92=5jomX8>J-e_d`tC2bxSkb*&;=;Dz;dL3C{9Hx&}^@HXpjk8Lj?fUIl(p^MzVr=s9Xf8A{D*!363I z(zzp4SyfdD`Zu_ZJKQqfYt32HRsO{sedz3YIZfF8Lt1^Y!0QRE=5WcdxalKw$`8ix z9V?+n+f3cpQy05cbzR&od{BV1MHvG6MMtGcs8HA-;wDhx>)*=??h%1z{yT8lUK~8D z;W9nRNrlJNg!dX&552%neIjplC}F62@!=6eKfH@E>Z@wB z+Q0AMDzwMM@(B*jpUYBj=~f`QBZ|n#3^|x|`6$;o3m`~4(+$*TMHe$>m!o!Lcq7W- zp8y@?^?~|iS~O_M80!s12%Y&n5|x;vof zM8j)*A|x2$YTDk4Snvub($OqYgV>Md!sBN8Wj_;}fTIj7B9eU-m>W;lKGdnA@E_>s zhyUyLxhad%DEg|3Mlwe>Td1Nvm-qv3{BzC6_Dvq4qp>A{hn9!0Uz-R(-R`naEo+BD z6}S`i2gx<~lV~UHoTac9E$z?0nPK-L^0(yY z6*U+CagZo?OBa2r_TjlvI=f}Yh=;1`5wPP~=aXfYmhrQ_AO}gc^beVte8(~0=OkKv z;Dh9<^|g;+{j$Ibwn=mMz8GAnMBFXb@^LnIOI1@)DS>7 z!qMyb+N6;dlgaTu9>`ByknC7>Rd51pPcP7G;NrFTdJCmSsIe&i{B*(fZ8fTVFvza} z$MqV1wgWVM>mRPcl#$O1VO27AT@sO@m_Qi>ef9nlss;$FgP8ZHrrgw2P@Y$MEj;XB zV)@VtgY#HQ?b;o7ca)li{EVjynQ;NGm%U$}IEo{rUT-&daV5w(YjBLZLFvucF1FU* z8#g#eJ+Q-RGipaMrDTrZZCFFdYKF=k)5g!QYdx(pID~7={6{H1joD4fD;MG2%Jl*T zc49KpKL@UV_T>--Wp~5exfXIAs(^nQ+@zWkjU|nNZEXB6&YGUeObEv!rpkZUc7*vK zReol4wPxf8iaqz5DHEF>?iaNb}1_j6_SYxB|aOmoQ67q%_Zj&d)nh35~jyh zCR@sNj}c!vt1hUp4QU^za>uW6)2r>LpQ(Ox=YRIA+cl*H&CIqeP3hX5An&aM3BX2^ z2e=Ndyduo5!h1ed-%uNRuEcCY9JT;GSGi$>&HX$v5Pmd(HG&9!#_&=(YoY})l zMRg})$pj~bf&aWuh6Xk#gs+?p3pl2>aSCv!5nkt0lPtgvM z262=CZe)}K5)lyiXW}n_Q78x`=&_3i8*4+mM#Av_5u0Ia% zQX5Vr-Ier%Ab1TRVIveDBQNz`G>@4yKFd>f!)*(;iw_|3?Z!9YiK{vAKVPn-L=KQ4?gsOZv-BE?3_vA|lt&L)_R0xv zWvF6a>?V(k8DY%-#b$)HM$?1g4xOrEwM8YE4*4OOTqoJN3|MEs6)pPBqcuTj?Tv_y$j5x2p9DE7$kUTf8^?D|n zr;0rqN7DE;gki%rdPFvj!KoWlUA*p8El%`%hTiAzo2OmQ_}Mv_d~&Y6-X;YfshQ*7 zS2hAt_ML`L)F(j_+u72S-HAdlRfWuNaPm-6&H3h}cE2+8ZfX_2wKHQZBtk7F65Y6zO+gz%$YFZx+SC|iDV9`<7Qh2Y*N9m-ii80umDVw2*g za+d|E?zdm^8uk5sz>tjTxfR`>a7`&eL7W@+bW=q6iwexI zVmQ9@dAp?i5wgEFk6_Rp>T4Bx=n53ry)I9ntf@6b9tg|-6n6EDJ*xq0x6_s zKb~6KX0*+-F)u#uD{SntRU6&C3T-T-R0gIaZr})$%N=;Z89?oee3Cepifk7 zO>3vDs`@lawm2chxUw+4KUhEkC2|L96|+Cg%X&bK7SZY?0QSz5?Rb{TaXV|MIz|lB zQ`b1>mt*g_7mGYjsS8ItlFkn47xw+GTfP(vsxWW_ie)%!#~JM|Er)#v)vKoD=e(4` zhay5+B_7MiBQoCRQK>gUJhMs5Oucxl7Zh%#Yjl0iDR0xTv9gaY`8|#yh&h+(FFj?N1e};>z1@7L?ad zaoV+XwIx+Z)ntE% z0+_17TR?>eHb?9Fu8ak>RdcdfH-5|zm~9X^wwn*{a!O%N6F`ZeX+Y0SevJn3R$+)I zXGfl19!8@NaoH{+gR%$NKzG@NWXv+&kov%J3JmRlY_i1o16!*;Q~Q0emTI`Cb31ol z_489@KWr1w_*t!PqHOo)#Lp1Kwe{Rdz{%ea=m*SY3rP(Tt{w*!mmXKWaq@Rt_hlVK zKWKTa`?>9evb_g-SwWqdjrKGvy3uPsS3jhlW=3jlOG^Hfn6=?n5V5C= z1#2ogl%7DZw34p{$b?=}{nfJqs!d7N9myIwcJXG&_KQ)ObA*tSj_{6O|g7bco_ zmb>VdlccX%KUTzEelM%{DT^%B#zH#yw{crYZ}WA$c-a;4q}kuiOBda=4rM4pTU-LZ z;lb24%f+{(ttP4Y4$-M{`_FwKnqW%ab_9&C+NhzH6FRJ@OCR=%_-E7QXKwYqXj(o# z5n&-A@GXw;5MjicJ^LY6{Nm+FGW}pUnlBkJCOkrUuw?;i3vS(SA0I%Pia z<}$we$Fk0irSE&L9_rKoJY`-q*)es=?$x_*RnuGT^7md9_4xDh-wq+^JN|0^_TA*W z)hR(okICRivC{LK@ei5v)qgc__~)t2#l%Lq^)W`%qL0bM=|MMDId`|kp#8X{9oa_Z zwwEg3ZwyfvSX8;i2E_`4#@Qg3snYq&PXN#Y=rNDboy7c-qzax{>Bah1Xu|;GiGG)o z+2GC)fH8d$@cv^*!bXk#-`91A+H(Tz9fpG4%eSa2Fr#bl(+pW}N2QU-raS1*8dB5H zmUH*$Oz_JMM7xD*lk2`C&)(KH_H?$Ls7Z*oh|9%#9wn^{91!%Q49p#e;YKj33j{%| zL4>Q`gN-_+#AxikJ54Yv^j#Ff+dc*5VKyLWmAScb+e~)D8l&=()(jLUpG3g)D(zEs zP|&e=c25vfb4vNC4Ko_0j+65Yz#Z;i@8FMZ&XBFzcoo@p&Bei~+1G;6^SE7sj+yIs z@+DEA5|h5ssYnX2Y%fr^fp?cyE*|10HaLMTP3m!N4yf|9@Yb4`kcAHZNb*j2$oZx( zFB4rYSfNMWOl~+K%-B#5isanCw7u7E3NOgs$_>53z~lJ{4K&^cJ+^ZiL^{AwUO0kA zYWDlM4gf7Ix4S zjtJ8lkc4u6$TT3CL~&+pbk5vL@}Jhi*PUH z^mv-1J-y*N5jo9P*K#=tJ9uPdfa*E$^+?T9@-O}&{wherM(=#^iUXjz{%#b%3?{i~ z&WkKwf2=)9oy5;Z#8-N+Id5h1EnHiAgnp~WL5f{7qe4zGLzg-IR-|{|c|Z`ODZP%d zrey)|8;OHUfcf=a8a^pm{=2jL^;HfkpK43=VI=5gi__2lVId%>;6w(ejq{V2`_>jK z7dx67(|TMiQa0|}mXhBJGkczhx4T}&UeDlkxQZcyDZ!^#Uu{AOB`|lm(I@oslF7tO zTA~JN3gRzdA!uPmykg#$C#og{Q4kceQlr;c{E3fr-GA%mep?jB_%WY`a^dA;GsYS5wmbs6f2dqpKxkHrn7~t2y{nEzvC6ZS{CRZfCY`30;(#m}*q`Rjl zDMd()+&hLFb471$+r_xDTWxxn9zOVt8pFyjcALmruC~23jgixo>kS@$jj?=O)=UvmedJfB zg{jQbjPvM#pLOO6l%z(Q3t%4o**h83=b6W4TwNw!Oqf7R0k~mPMFHpgeiDf{C`X?-K)RqZEXyp9Si#97PfAT_7rK>=HC?s(t9tu@^OFiu2ZO||N-2-#7;GOlX_IpRTTSb}w zT0N9afL3s{q6~Ww+t9I&-Q%$so6JzMwqk~wpi~4L&P=jMNO@m4^TF^8@<% zfj&ucLx8CvCr|1*sY!d89NhS%N5vw}d!_%nI0!X7fp%v^fEI=q?zr#99@%Rzn}di4 z2iq`7qm?`1Ls1ZECqy*3r6dZXO9BJ0YQLOgm&dqez_70-5*`r?8Fr2M9@vk-=8U<( z9k_EYjo-^09}jual6pFkN{vuoCOq`@s?2A_ps6!P+EmU zyEV24e#}|yU(D%CSa?ER@dnr)dLmexw)DbAxy%iw%L46;tNEPo(9ya|qCsZS`9HXX zee9wkoR5=l0juJyHy-ksxuhAl(ZRzSry89rW5x{2RafV48G^Y&PshxRQt!dA*B*#m zNOIL0J5z+hmN>@z>&;$4J7&*K{A@g2(v5RLL|UUsvXJEdfc~i49GBeTS!tRxDh$yMjmtYiKd+V{5Z!R2 zL;wZz&T=DN#9c(`s6W1VYCh`p>?~>{nbz()+_V`odJd^sc(;n%84ZqM)J;qUKJi@* zE{ctc%EjT>B}&${0nxgXukbE#Q)&pZ`|*ZF_08p;(@L^1v>RRYcUnQC9eslM#Wn%` z2x5TM#`SP4a@meNkD2XSq)YQpypv05X$Iw@Lr=ajP#L>Phei7sNz+;=$G4{^zHL@d^o!$X{S*L_bAt{5SBZsYiXEh(n^aP4w)^x9+gc%&HifAeB1W1zP zZJy~c>IlvH-)lPdpDPk?cei~>RN;vj-+q#DH&Pq@_lZMAR?n6fI&XBLvPcN{_wC!* zq%NSri3Q!VcBHLxrE>RAoPlyNo8xItzIF>Arf!2?FVQ<&9yRZ#NZyWfI|(gqaObrA zH0M88otj?)X^QC`at0i@kjI{zfXr_6sEwRnjY6F_^bC}|)3BCeius-0p(Sd~0nnbz zGU|Y%q};|%Cq-mqE}zw&Jb95Y#g#(c`b;{2i&20(QbQyKKBQ z{({j&s;s1t7l*5_hD>^D$>I2Lqmjlez|Lh?GZuI4ta5bC^t0F(q(Cec_`mn@l=|u@ zVxaYUp7mV!azgE}Hk^mJKm9JXUzd+YSdMnwHuif2-bEke?GDFzmcHs`eZ{O9w6cd@ z>t7$*_)!b!cO(D`mb_WAGV!_=naZJG~>ae)E&K6_UYLu(07f8*lmnYR0?`&o`fkgR-EH~wNJT==D-VEw?!Jdt=z z>%FV^k_(z%v1jzvKnZYSIRA>-Jg4dcvpdj3#R%T^-=)GMzJJ(L{<6osP)o-N(y^@) zp_c=uTR}W7?R8@_!srf;ptp4_@%MA`yEZ?U;r@va&>yAQA%bWzREOQs7$2Qrn4t;g zWevI{$2qU13L~P@zoJrsT&35zs)nDXgU!A<64}-eMKGeUS8@eBzTBGPOIf#?TS(Q# zU_S-o97-f1c@Gzf)NGj%qo%)fk*>j(a5d$}Yp5^3(`oc+AD%{V0-nnT_RQDu;q4_z z<(~5rem7wYEdYPO^}qi7v1n*1&Q3BEMn#$6{_XXv+QuhP_q1{kr(O#T@WxEYEPt?D zEqm%WcSDEW)Nt_mMH>VI#Z-RXc7iW6(cPs|x%JZ{9jK0sGbyuKYOL-qxjge7)>IO_ zs|P}_EYK?8ee3wKqX6^T|N87*$7+)6ng?DAV_J^ImsuMze~=ia^57(n zYv6aJrE;o{$hk%KD{F+=9e61Sf>?fk_EepIPX0|vUkdZJEMf$4FkLK;(o-)?)-rrB zmHs5M{nBjzRcwUW$o>c00wvyebsueIT=73lb_n}HIIN}ORHY3I)0Oa9X`4R1^#T|d zhIZGF^ooZ0G@us=rML6LtErLZ{0Upoq+u({^{OBAEz_uzNsfWfow#&%sWUg^wI9Ns zX)Ad{<+q#=Qr5cxf}39E))H@ML9b9$YcX`IQ=_?!7Dnb7^{td*pa4D|v!7eVv$jO2 zjgBe9DxUnO0!oGm4TfsjQ&z%=Owc^Ivk}^(Cs*TU&3d;u2{<*&6DHCte-pkyggzc< zH448OgnsiW`}mEP4DGm$u<)TCsvMN|NL9zDDI?>K`AbKwp#?r@iQL&Tt+K)>K>-e<`^ z61+>5g-a{Z{=gQtm@9FjS3$9|wQ#l=fsF)yTArX4O+fwVB?}ziI_qBgxnf z*#5xj3&^h(ywVp(^dsJ_)u+$(nXbnpWB~raLT{x{FPq?Ef*@#F{l*8~b#8=*tlJOp zmx`%D(cJF9Ovau2cf5fwKY51 z%4XjWgk$~+PDPzD{y6&7TNo>MWbFMLp54E|aIJeFIKKgO@^)mr*tF0L&kd!1NAr<8 zBGNI)Jy^K71JQEuw2LlxR^;!-1t#BP(%k31@yCrB_of~|!d%Yk{e6_rH zq%AL4fba~>U7^`AB-BA1z#&vI{(6{u(nlNFjL^4dW^aO!2|j2Zs}L`$>S(galYPWE zGvA)DHbo0t$UC?}XX{IjiJETLl!(bKeE?T+IGrJWnv27*sux^UIu^+>GsgLW_DUOmN+-B?Z zx4bQN_hN;Pp9#`cs8$A6=)Ts3;PW9Nkp`G(w1=@C`zhMZ+ehn8RcE#L7+-MxwiD4P zdL^9_&{1Ci=!uW`szJy~jdf7|@(VqMfMa(zIV*}1azq)9C!*i1@yH{}TD^j7@! zeH$*x9=dnnj>azL**U%|S~-VJ$F^M_(-V)M?QR|*bNFvudvf0ua0#)JC(472gvb_e z3ZZc7o7zNb;$}||FEr+u)qV-z$Qff!HOK>`A425f?U_|t&U=A? z3-ZbBuv$jgX(y$(+P(2YeezN=bA0VTeTOs4MO60X!KF0gh>CHAYkXhNxfyahNM&J<`k{z!`Cf{PelkxWODC3aBo}Sg~7)`x0c2G_?oCNdU(fC(c#y#*E|2d z$>ikAm6=uMPd9-+zkRoOw+dTOgG}jpc8yP5J3Jt(Hrgzn$k1~-78ETj6W2Cizx{+E zy4nqo0blo&$T4DtEb!1I!6*Gz++2ASc89q*yHXkt$O2t%_1P-mJ5Mkb7g}ek`Vx9l z3A3--#7`Ld{M<3;W>S7iBFv{)fD`I+R@9QeIus#f2lWPe=W|D7>o5Z4y=~Er%IZCM zVa@iD*vYZV@~Sc~FJP-}%eZiQ(1jTcqiCn2@khqKHC2q}6{nvZ5gU7G7l2w%akVs0?^D0qC*0eusdV{86nxVciL#~VL@FW%N$(b2MxRHQ4HzX=?dGKTCC z>&>;kHQDG2DOZ@Y9u?L6xJL&{n|&!OEnm2Zczvg1DtobkxVR*KTDh?`Q(4GLqa0$a zt)xZZ>B-Z>ns}E#SiDK1pB>5mlYRLDvYeFvvB;{9So0Xy^#U-CSDduP*-goS=`YBq zBzNXb=S-Wsl2sM0zn^|2G^m|s$1)V`C2hRk*~fZM9xN z-f+J2>|?%Dbywl&)V<|&{8=mAGmXoAZtV#igcPr*;@ST;4yGi7Np-QA5DD{xmN;oS zo;_;9FGlHn0mJO+$~kEw9U9W6hsF)w>hlU}aSWMS zX~bfCxcE+h_xFUVlfknpvM2c;axB04jB+|nQy`)GIC1&G6qV4@T-2lT0ira9+4RCf z%5L0QE^tO>zFq6w9p6_{Rw@LJ0X0#Ke$p^&_6YZ@);Xn9H;=iV)=ixkHpg9n-+ zuz9^XK5=tu(C__So&a!2eiPRmj+2bvC$Qgl*k0Bzivm0Y^sYM%VTxcQDCW0w4Go*b zU}UJ)g#Avl7$M-|X8pW{UR{DX?m8GULr78y)PjcjIEE9F@$u0S+arvJt`1`Hwb}W( z0ahcuNHfC|AEAq)2K}DdzP5a3Y2wZTV^rPUj7C(>Xb zBJSMY&F!%X4|La)u|cAjX`7`{EpgqYLtk1po!~+sj!`*00G(j9wt)>+(z%myUCCN@ z3gNG_5%sseTO3=x1JNt3ZI|Cwot|w51ja=qa@>j-38Z=ZKzaL5uxy;!ZlmIt_c7Dq@u0EcWb5mcsqJn zLSKN#?$XKPH_*)zO+lm-?VTKh@h8Bc9tZ&|Q)Kxb@}qrNJeF%CRLSDr*}KT~;FK@D za|P?-gN&;>fW=$^n1K#TX_tfDFjZ9DgYbBjG`DxLkLIz=z4PjCKod9A0#I}_wy<_~ zThQv`6Oq`#;CpzPH29>dz7=_H*l~pm-NL+|#l9+x6akMb=G3x-!UyB0SKL(D6j+J( zFm*d=?!g}GI|&8L*TdhpDWOlc=LA^JyrVwP2AS4Oebd8l&3o|RJ-f*q5vz-=(Bud% z*SE4C_?rgU`X|$(a<>IqU;Ke9kd%>^e=!LK=z>+;ds5%n%hV66zzL&wS?%+mSyE6FhGghm=pAZoB#?@nUEzFrs2y5fvBth<-= z&m)n_JXjFxQRL8aLv__A%x{Lfx6j+_ZGJwb!R5-RF&jHPP+XF*Lu71+8cUhYAok|? z_ii4c&(kTp-L!)}U8j^FFPmd#hf0`;5Si4NrKa_VN&n#TW6e}s2dO-BJAQTn z`Wxp%!CDos5`RO(t*ze=`aU%S(+Yk}s+ft#`?+HsZhoq9=gMfVuHGF9>nhi5Sa-Ez z8I0%h#HNI<)2T-AOV6BFA6@TbUkmWLvQaf1rS(mqAPu3(R1-$Vjm^!hpxnmEg)Tgc z5jl08nqDMi#)oNf%w2N!bxoPTWNuSOJr8qN!EcKB7jo9_Ks=BQa|@g)985Qxf3u}W zdWq$uv5aKyU184)FX+E^1`!(MwX^nJGub}k7q@EqAL5H-A56u3FG7@HX$DQ_^!Nyjf~HTakc9a>_W`A$b4PpA4CSlEw@e8HJR1s+{X`CnW($7p7U zj*kXpKw73c#M*_3`@%@wXz)+)<&`B-%@6-8btw51Cw=u}=Hq#x!Ds+6Fo&rK;wV-J zQsUaK;l0dR_iXjT2wk20>(zx0n)82yILxSK$9!{CRNSP)wDQX8qpbrX(Be%Pwn_ND zj-t1HJ+y|IG#HPgXENSuCI=txLx0I3f<+!Gx04)dOP%z8&lS;zjEo)Y&mWg-$9qqH>c@lJ~T03xZ zM+(R6L9(D8dM9pU2N=h92T)?sx_9)3wQ2?Q-G@yS3Ma}ey++-mGYoNw-Y=d_>YUxge9cm_et{o%PNv^Pm` zx|`3>9R-_|@a80l-)))#q=*d1%_nvka&Mlmhw96`G^j%@Qs8$_U zi#uP&6>4DDz%`L(W{MIo(FOr0fM-F~J@9J+J>jE0XFkLDm9uvzpC2CabVCy-jz-g{ zu{sLz9R~zH9st%IyPHXc85tSN)SHgbKRxIY{!Z^SuYg z4-66i0-HlAKm>u6x%PSj_4%&=jDMCpERsl=Pwg{-kRLp9?j$SDNvW}`*9@GzFCuv# z4VgZ$dQOYAh`$*5@5`o-UXv{3m1Uk?+_*jvAYq0+cJjXe`&bG_Hm~ih~NLOB5u@ zC`qk8q{^WgI)NX58OdP$Te1ucg{>83r7W`T5JupR1_P!tKAS+w2LlWS8guZ{|I^+n zc{W@{Pd@p+>$(}nRU+f;x7;R64uvw+^x!xv7l5?T5#@v-38j(&I}v4?Ca_}TWA(2OzftZ`z3j~z@{YK1%^uH&TGjKL}FV;@wdRH zNXh^H+~#vV9gA||GE@4>hl8m`Kui41eq3ZfO9lkfgCg3uUmF798yQ!HNMrDLTaT|9 z9+y?FvSd`^XA`I~7O)VBhW3f_Xb6p>;2h5RuItWdEl|fxr}5R3_oQ$!;3g;(r$w4a z3GI$_y#5g)Ds_J)c+}VB3P87SmGn>kWSBiH6c{2`CvDz&|RTY1^key z^iaxkdUJu}4?hM@K}CDuTa($sJ6gE_sp9POg>>X|prd%+20!MSbK1K)?;LGHaPLIJ zFpvENLvDb9{DilVb#(AdxH%6#?1AI;3qom5Ba!AZkl4l)WGrTEnRBjluw8hbCVmG* zr8Gk+^uBl@3nZzS)C@O)=KghLgI&pe_ihw?Bglweca$-N7bXsKx0Fi~B}B}&OaJAP z@My!CLqYV96-|}1Ur;I7bhFFhk-5R`ojya~;oe=$$see8ENPz?veIVpj=7Q`$He%N zqBTfP#Ft~qL|G(XaAl#74?|!6$^MLn3h{xH(jA)9-r8R~rokDNEDs02D%;w%lk>?)c6k&Oz4J?UAmnGqnh?GPFa zZxe5&oe~EjM z6IJ>ihvwKPSsCOKj6X5_`gw>oo9KYpT)JxwIhr=;S&tlam$b#5(xfXJO&A)Z8yYeL{R? zGT*0gp(<4G6L^7E&8$(Be9MKiYU!R)df&UAjdIh!>4@Gc=2cSZI6$ARLK!n{$I(mZ zcLl7arjhF|fm8?!8XKnN~`zBof=~ksE&0 z2k>l>yRiaFFoduw?ybVWf~NMPu6FiWRmEiZxb`DzB%}R+()10yNe|5)eM6aQrtJ4B zg5i)82v#%2zP{mBo){+8FPcQ!po5K``hOXndJ2}MW!fmKTGzHUbh0<~ z=N*B9kHLrrk{rG`QOLb|DMwHYPvDuHAj&NNcfD_60w};83D|_G+so*pWDb;DFxc@i zpZ&~JR{mu1rpJVXLi`9e!Vas)=zrb8eyLE=Tt4M$I`|brmjB2 z&t(!;qJQ|ANNn?3yzb}pn;FN7l^){aWf1TTaj38S<>aJ|{HJz1kT+w6+&jsPeRjp| zAG+2K+%QyiDBiX092E$)R5O&kyndjG9|oIHpZ>I~VU)I5-=E51WNPqsg8Ob$PonC( z7(X3_O~*Rkyv^;nDhtPuUDe0QP%H7n*=mZMT3PB|U7I5J$>&8F!EmBWe(8Ps1xd9E zr$P2W-hVMBaS$33963buP{J~Kq*HYfWkej@->||GPC0GZ1z`DE#rutiTJGDN{}Q8o zbJP#O*ES`*^tX*v1f ziGCF3j339)mC=LK%qXs^-X18mkyNQ%@2CjGPP-i!bJI~Z`#1XeUnY%*HHM0N4{HRS zO?y*2ul!^9x;&+n2Oqs~s>Kf_unHA-i+vNbt*ZN**7J*BQik2^wlr1a04!aOjcYd< z57C5xIVP+A6>r>I(uAxG;)(x;ICGr2wo6b&aSJ92+^985Z+HafHCW@K?knKDsNu?sJbU$)laEil5u|9O|D?3Uw zm)R9KlSVg7#JzNJ6kBE9aq^Cl%lQL0R0N?oUw3_^tG~<*mh^Dg3Ig#FiGoS@u z@~oypH9}!YN!n5&d5Xb4$GR7444ARX=M7ZK+-(!tJNG|PoU^e&Ds7fBvq-OcY^&P; z8eTaqu32dh)S*w>syWV02jz0nojzucj>Edd!E%817q}<1TQvpJc9+;zeu}Pf42GPu zEkv-DGMyZH^9S7y-d7u0Y0Xdb*cw4^z|WQ?g*_yz2udS)QbDzFzoxP#K(9_lV-wZI*MMDs!pDp*DTfivF_YoOp~q_piG9 zr8B_cZ(?`{`w|U5IScyqJSBZSVxMnxsi561_?P5zN)B~47XZdG-o&Mt(a%3o;q~#) z#B^Gl1YLP96(6mU+Lye1k2C@<*h;ANsn3-ExydqDl%A6ZLPGMjtp9kWk0yMz1X49Q ztPQo%TPje$*uZ)bBZ$>>VDT) z=z_OrRu5M(?;QG%c28HuSwaITMau&h{Ij5F)Nj3jk2rbkQM?d~qLZ}_S33n8U;r2x z=AAY(M}6*X{x}oo(HOiW*ISd}4VRIzrl-0uY9gWg&=gwQI8OVFQP{$qx~l8Wt{zY< z^0m(tU*8OZ92jh;qc%f$&^r(bo`wl5x2KzkvW*e*3a`OeIGi|^73D6lMR13(CYmG} zJCH+4u=H*_rIau2?I!j1rUWAlOC%<2NgCcankV_?nx$Y=EI z1b@bslAD^xm76Iom8W4gNhJVQ4E)WYu^TU#(XBetB5?*evoLo<%A0sF7bES98LLv; z2##2ba-H3OGWbym`ufe;Qx$8a6nqGtarAyW`%=Evh0XxFo#gzTi^Vv945*q&zQq5I zORLFbtB)#IwP$gR<;BYqmtll1BARm71JxlqYu4(=L<|f4b}HLWNdPOp8xf$RV`Hq^ z*s{8(E}W;${>0oxb#%FtPH6ZsijAc$ET-7azpW#iw$6s~`wak#Wb>c{ zP%QtTR)oFKBNEm1JQ+cpYQ?K}R<`=icj3nxO%J~G9yVa=38$HEzdk=L?6(kq4A;^; zYK%Q66x{qW%y8ZkbCt3#m|MXoHjiw9-Xl8a*r!mG_#7=#!gX^inuE~60ln(V(j%go zV1&cUa#U*7_nTJt#n+DfZ`m2?D=;@mJM5bW217~ zlg|wr8_vQetJIQ488vqJX-`UD%MdkKNEUqERmEg}y_^5b-)>- z7O&xPtX6lDovQ=g)XOyc#ECP8>m$8!V9D3A^=9!TIZFEvH1J(jUQR1l^*R z*46$t{Kt4E^$|Yg&wqLSrwADO!7{P+J5IH;ae1nV0S*l4Bu=eb*-x%Lji@|xAjCJ= zLFp`C1g$}(qtu{FNvesMbrh0rsZmhK4}Nv@Hc#{laV1DxQ?S}BZV#QQ^?2u7JKJbj z&B77p*ZN^@j-w5m)m%qk$%nDi3D;fvaPNFBV94cGF8|mS3fq3#Mx$SmEI2po`uK73 zN~L|wHWovsNMSIV@16?|nPI(|&*svEW{WHG%U3f?A;sykts_eiZUrB0nJb)~#o@U| z%_C?sXP9+1KPOoV0$>0a&mv@1Y|wsRUN*{k-0OVQPP#xuz(v;w1saN4hGi zKO)5@drS|A;eC-}k7}O@R@#ho_!AMo?bA;IA?p|MV3rv=FLjOe!i;$+Fv2KfY(_X22rz{3Q^e^wg!k?cLo@WDQjSv}M z$7P)jZT^h0flh0>_ZFVWnzP^AKIIwi_UN!uq#H~>ZbJKhrg$Y-riILa00v6gW%?PT zbA?3;uw=21GAv(v9NBcfrWAudEz*TcywUT_-|pc3N=%&qhMW+A!Gbf7K14_+_~eBs zK8zvtM9_^HyLVrU{&B2LR)%v6Si(qQu@$hbMSVXXhNtVh*C;EUk=aKAA=&zQjCu$vXO@d z^QrFKPq#ZNC|D6VW;=QO=p&Ws7s}u+bVg-9zYHR8{tB;D@nLUa7U2(ZtTp!K$V?i~ z?9OVV+`&(>@R0LN;3oJlTccI_WH2lbX3{SD+mZgmhp4D_eDeF0>H;|kNtBT6&x%HL zO6<8d{}xrR0;H1vAK~huk>4>$P6i*%@DgBqGEG4pE2GXA+pjNK1gamYqVMa_f8*bP)0*wv&*DnZHfmNV2U2X*6*wSaL%7VLkAPw zfbvMfZJF3W0kKW@Zdrw$!2Tvv?e+vlAoE`?Pa~$+&HDadw>!gYkmQ;Km>h>Kuw{zQ zJO430gg3pb@?w7ABJ*c{v`-0A`L&&+^Fbg|;bCXO=&X@P!jhx1eYVT$8;@*v3-+o> zP5fn8AoK)S^4I$i8rjh4?i{Z!jgND{zCvq$==TR`<)%D7dP35{(x|HV!Wju|Eis3M z+>2dmLbReLHVKf~0oUYk{I)zE0^zq_x1|(K{)Yz{8O@YpKE*f1ICnUDOyYFdUcKPo zq1XRT7iuja;XWYAFcc=&6en51`zP|%&vTxac=obBBT=Dx?m7la*?XvPV|y$;uX@tY zSh%c1!UMGp+52d@K6(tx;Ecw$;J%U6uuCVTFM31ZiF+@^$bke7Y~C;b;gT#ZhSsU{P?j@ z9o&)}mXGQkOV?U3;2?r}!zr}#?>KiKAw){k!-*~7=lAu{*?zjGQpK6-r& zxsvSHv^5D%7P{~C0(7*9S9#peaCG81)k+-R((ai~HLNIE&;1BT!pq28omMnoW)t5T z*fO`X0sQY%{6Db5h9x1`t>+#?hq~NaIle3L)pvroUdd$tpn0?DDEOqmHfqKx{DR9| z5Z6&}@zpQfuk(FgUH*g2?E(;LF_?W*yrM$_@=P>WFJ&KElMi9^O)-izmBtDm%|-lk z+Tp(O(Cy}z`hLEbL&>NfxbMJEBUqQ`sm(wQW@{y@$G=Z;@B;|Or$F3aHJ1sjy61*E?o;p9ng6Z3 zqS|?#5uWaNjoL+)?m|uRZ*>BmhkUIMHTIz3eHZW{nHznMZ_W^X9k36q-_AD9aJ2}3 z)0jymwOSB;ZGja^Xd^gAZM)%V&vywqS&*E7@i#%Xe)$X7vm3@x-Kj*R^3L{Z?Bb9I zA&9FPIAE$8UqUpKccRbaZURPJBbsfQln8+4Y9Kq0-{97-0#WosUo?8aMvUx^>?hIXKnQdwfd{kwaBtx3II#YlP;TlB2?ds z=6Dx>%M`2m%w^#=;mTn)r)9#qs|Xdf&S(QAox$y@yw5?XW{D=fxSHcUFq_>kqtmeU z3itCj4QeJZP0RF7!%9D?!IE#P?VPn^Xe#8@wOZMd8=rjbQyrK8YF|)!H{fKX;Cj2N zs2ia~**%y??8BVzvxZ4XNQ4-_^Ubt*t5<}8pUWI=xsN=w`NewMkA9+0&zMC=R2NsJ z*}FZyfhzgm!kfUFUKpl?Dz3malx&RqB))`CGw~z|6*T2ZvNz+*M~B9X2PINsr_~|^ zBYljH^nE|aZ)a;Q%Gv{NZ|3S#001&SRJp`WcLw-g`}-)Alf^pW6?&5ENEbdgzVfQw z&zfbc;sW(4dHV#caUWAIf_*VC%G#)&aaf{o9DrK#)sR%Gw!#=OCYcAN)O)VP6RSf` zWlR)qwSB#bzW|KTsGGf!sD$(W@r2{(?Z>ik7jU*0$J>rH=hiy~84EB^OW%G(rup1P zrKh&Q>l36Kc@iY;xM)Z0Io7L+Gx({M|CFKI((?FWST zFgJx1Gk->ZOKj+mG!&OoLLM6+|JlcXyEZ9YrcVWH@PJ&Jjh@+eCduixMBDg7Y`EkI z5UIy{eRHQH>6i?Xj$@D=#t7gL(Chc%pOGqmAe-a3O~{LbzIn3yQ66K23km}YQD9cr z7~HuhHYqMa)aPoPF@MG$+@V9_jL?W8Pi@YP4>Gr9E0=YDLpl#%vln&K5Ck2WBHMZP zVVA+WfTUY(=%lgYtiGW7PJb_%wbJCH`PVRiJFg<(mU3;4Gwn~cuQ_+2uxO4if(avKrsZS|2W_0} zv$N59qTr|G&!ztPK2^{kGKKtKY>Oti7etf}qfZO976O&vy~G^fonFt;hM=N2!bt*7 zc_(o`Eh1OaCe(3PosDH!I@AFZZW`OMmVq%9@$d{BK6irUg{u}J|%$Pfa4a6t1asRnY-N%2b=Ni97I0xs& zhg{p}GO8p@aY^P%X7g?rX~0J&&>UW4EQB50Ma)Im4OYmq8r-y0cVQoN$)d)}s~>k_ z#5389y}o=%*jfYO_^oX{zj5)sZg49iqT_=^2gvr5uW(3&_S$m+ISlUPbGUuHO^X=<-)=6Arc!0dg6yDU>EiJ z7s?G>2T39kBH9aX$wY_qAJi3Z#L-!nYjWA|V}Q z>>BgP-V-2)`^SGvW0HiJD`%bvksg90c;g;dvuAm!ScxsdWWqfINlUqH<4@n-69VAx z6(8!wrM3gp$+mpI%dZ64AzXE(<~ux$xj^_ot+P#Z`bs)O(^vj}$;2t5AFU7^O+3WB zI2Hjx6~&$XX)8NB+vSnHz|FQV$;n~{;GBp^*jQPs#23c9k=ZQz$0O``^J-(JY z17Oo)5#}w2uAUN*{&&Fs0EU61%=Cd~h(PogJZr*ue06y~Q<-{JYM9~e z3C!>u*WMX?RO_?Vz^HE>CLy!Jp?Vp=?uEv_KfO?-R|L^j+b01(CM&PwNdS;QBtpk!fi&q5vn@NYojFWl%ddN12ouV2`qhY!~?)n%+f!Z|yr;Z48u{{{RYu!?<^HZ~!HY-P< zcX)=Qe#!JzJT2_9#tS5{js?ind9L$WiKFpjbey%{&{Q-t7HQ4|XMCVdD_iB(b@(2T z&krtLerk}=g7uQG;4aUKZ{#?irWIcdeFYhQFX{RgI{F*#8$f|3W6$-f^)i1uwEMOG z`u`zRp>Ys#sUy{O_1tfLfUB>TK$O+WeL;`1dvX*_335@2q(;8Doy%|FuA`lMYgZiJ z4-Ur4S|)C_Bm_o*c?!({C9`CmW>75(sBsNP(lUlg)&mFk5qYmU&rtuYkw-db1oAi# zA0n!8kont~_AG9`Rg(?-NFg1Y;NMhINE9!Icx*~QsdbvSwBlItQD=&Jz5SkE9d)w< zzh?RE3^L>Ote3CfWVDzH?5UER$x4jl$(UaeHs(>IglR2!pRxw{M0bIPP{nFy`nUJv z=Q(Rz&>Sz_2%m_BU=4bZFJr$lE<*aY-=n(b;+%xk%0bdGKI-7Dxnpplgf^>`><9Y% z^xPG~-AVtIRl7%#0TI~ro}T|}gaTh~rFVRqus4ES@Mx4sh5hySD`LH>Bzvq@i<>gq z$GIrao2(S@VToU6EHXk_P|CQ^J5Q4FQ-rHmgc*L?NSZ-8D5qwy_!qB|!h zWCoZ5Fd2SN0e*xr%7ciGr3=Rt&TUXJaH}BcOqbE8_FZYa1PZ!KAMiyB4T@RmyfTISkHL7c%=9GLhMmg3F zd+w(3c>U)aKS|V3aCS})RIQ{~14wmoZHe#}kS*V*{!!Du+niq>lKIBx_7O`P=^Fs? zHDl4~u6vtizwD~%oQ9|%maMAJzt5gD;uVUdhq@z|&x)8z$DvJ#4<-1xDsi)G{-?2|^D7 zmkzpt-KAW?9qp)Yih;3Jm-6h!k^R=Q3umGxbZN(W!;gp1X>Shi7_SNbof<0egt%Wv zIjCFD`}DS=xylgkrgZTW8X!Q-@bZ%ZdV~oQ*I}<(_kgeEY3ds}_4&=7A^O>aXly0x zG*3IB0l`nlxg`@g-x+?){0Vmp^z^58fbE zzs=Pia{2d#tU~cN2;hH7`5>U-pqxOisRgRe;iev7$j6)=}%#*wV zSc9Bk+;Lv25(P0Aj@;F)8xM}>jJ9=;Hd$u=z4VMr+%J*Skwr^Qut!AQ27pZF zh5XSd_=J7J3D|?LfIiV_Jtpp{zt8ZxMAY*Lg(%Py*T3V}&Sg!N0OI4xSySs(=?T$vuc$I)SC=Q+gBu~_xRNe5aDWGB>o`m zmAkps`>1#?ts42iU}4Gfgs+X|smI!}FkEGdGyD3*2r(3F5TK)KX=7Zio2#L&os0Ow z?X=o)I2pQDwhDWGEo;H#<4L)}Uzyo?KCT1@>`9%t2+|#yQ4%c(6#{v@ec3^B$z7o* z!grvX)hk!l@mH1?b}JU(?K|)QN~SNYO8e|^9Rfruj0eG^(%CKUTX70 zC$HOrK&B{!qCwAVf!o>DED{Odt#G(A7_8#es!Ao9H7LQYQd4RLc<|34h147&J=BWx z0kVJK35>!kfNm7jOo7oWvwqeSX1M+pm|=sPv;k+PekV|Mzybnh%l? z=z6X=J6msyg?@UocbcWx>Lmo$tn3J1kJp+{x|c>{3@UV5)xq3E>YywjJT{bJVt{UE z_#BD?u1DnEU*REU%&P_BxLq%{09EGFbtmxza}ZLb++65}0OK_?U<`M)q{`M?J(k9+ z6I?`TD#yGG$Ar2eaTcJl4P6qL-qA2!Xp z0@*UPO1(hcRS}Yz-+bpXbwTvN6Qgq?$44;grQPir3m$RPym ze3u%V!&bDurH=gL#&3MJ-$-IIh=0(NUY#-hcKPTUuFzmI6iMFjaHH4HLz z2IdFn%CoYlxb|4#T@pNIyY~Oa)VOepuJiq-29m={xzOA{syr!f(#rmhxE=4juxvS$ zss4}}Hr7xulJ1rlKIQ|@!$^D2?r2w;J^-AP9R@sg#TtnRbP!D6UwWU^Mf(M;pgjwvK$;efPIq-c9IYcGjz&?P3X_SHwRM5xLR0F!sgK!Cd=F0VWSHmy(ageLmk*~@kn1|m6fmn}%|1sbHzy`L#QAnfY124^W)~Ktpf;t>tMY3PbT$w3!-PIZ&TW2umaue5!AeI1zYmZ6^km-tCu# zR7$fq@osfFBXsWV;=0$sPCn&p0PIURpO4g|b~G3-;X_si5hP;~L8oa#l++KWQK%=%2$ zv$yGIC;Tjm5!`ssRAv3d%mE;``wcx&e4LYTE^{Le4Uk+&5=} zS^l@Qls|n4ew;LvjH%Z8y|noF_aJ3507sP4X*o0DZ%r8$hYVW&a*3hPMHQ z&q*^i$1=TTrZ1367x!-r=o?=*2v7*wA`+5!`pFs!zFID&)k4=U!kv%o_+f24k{1lE zjKGc+N&<>7EjBhJvebrIeeYvx5I4hUI-LcvVBk&Um@Ne}KCcb`DMnx+tL|~*i_v;J zpt=cd6*V26s74Td));z_;|bamzn5nJs=e454GIpxabl4~R^L8O$OM+lNKdAA19vho zoRF0`^ZzXLR01iV%pqL?0lNv{`YY=piECKB0M+Vf5noql zoEvxj1x$njqh(C7u*;h-_7(tp6OL3C@xMc0ghv2R&{7o#IrqXYuxk+dSWatvU7o{P zKLVEaLHB}tna>#Dh|UVwCvEgGLOAPg71J$C^%CSSwA}OO8x_gEa3)Ifl2c94KT%W{ zxR2gQqnlcn@0(1fy2D5GKc}oZIqPN*eB^)9ALKH8arC;YAtY!3Smkp7YbJTjRQ2`P z1fi>=4PeAc&jcIbJgT&QZr=m|CzA`*3O9^KuJm}hu6ra)Y={wkq_KE9MH7qsX-9K>O~(g z%v)fqS|=U@{D#)g!cxsFnO`4J(}_9pJS=Z6{V#^!IDc#0$QD?r@v6|Z%QbVnfW)D! zj`{<{+RfHKhEyPe8cWkRjV2C%xlwpX>q!#8hbTL*YLjhR7v-~Ij4#;!BIz5G1g+zc z)ZllFi9v*)BH{7SzBVMRkuK-OaVP^mIYK6e%zt~ff$Ff&FU)Qx5t?5g(V}}J z&F{6b@MaC7p*7Rs8!!rc2WB!Z^^|2VkJNa%az+!9q7;U>7slE~W`r*|bcpY<70Eev z(xj5ShoZi+%v>TD(gLudC1pmMD0PT)`jEH@xr9;c?@3WbU$1%GCz1JB|uFY{&*TcXnYcj*}~KW2&d^s3*tO=IW^5);gxc zEl3f(3S757&@eTc3A(5vEce!CkDfUTIwbs|qYoF9O8dm*(I}A`%kAcdGSP}gD$RPJ zEUa!EsR6n;^ByGVL7E*Ftab?_sF$h#f*e1(#~VBOLoMSHMhGDu-YuooVG&jC>gFzq zyMeF#(>mz1Z#{s<9QY3^eDhSSRx9zIUs7KIAls5~!!t==bY%qXFo6D*9kaTSg22d_ zUsG3t+Z3%r&Qv~z`MMKFRYx}&i6@4F`%4FVuxTRrH=T>0mzfx$^fZ!_g(s^G{a0pq4)ySHTpmX@Z|@*co$QuuYPMhViPqNY z=^+40d2TQZK^II}_ae^u1*;RF-l(&`;a)W0a}94F#aa4ZgZ#vJSzg!{Q9t!wr2AL6 z{Hb6YwhPLH@^5a1uXA??di^#=MmIO@KW_DMJFhekeeD z&S=lKhwzhyoZ+{ntR4oB{mPf8*3Zqlv132_C^{E$9oIeNT~axo)QS7_m$r6A@a!4Z3aG*Wx)^&GF&+74 zf+fYCBOL`THCy2!;RAM1r|;)z2I_e4dpDz}o;m<3NdD0Q5Un*Q2kcWk^jJH%CWREY zP9cH_9Tf

    PM1Q=eg9%9Zp{VDoLtqoV2em0bFQQR*5Xn&DBaK65{eQ3F2c1p#C+< zC!xx@xF~1biuyqqtZG)#AY=Zumc9C=<_%>a%t&g`AP*)>|Q&_Pib zGj`;VlkXMV-xdb^b^s0V<`QQ2RlOjC`p5p>@RNA%N&hX`e}C+P!WVKuW=i~F@U#Ic zy;pD2>rKVeay?)S1ZIR7V41H2qTfp}ByzPOGA8eBIz-d}ieeehn`?xgBKYbrnlE@{ z=`|OR%xo8R4IpUCyD}@6-_i59msgIvF9hy?hcAExE#>+EWnrPz7jKpnw#|sw`X?F! zP&+xxFNJKnnBTnpbyDC&&R(0DFoY@6=Vy86&#>C7xvE9G6qGuAr9LOI;BZ#QOV!tjfb}Lea}bbK zPX4cwq)gei$BsI+c+;7F~QnpQK29Gd*zBQ z!$!@9^BEC)F*}`_v6E>W@xXRMvU4zR<0i; zSEYbeG?b{RCmw`9)jcSTCVi;XheDyqhu5;kYB{RS{)aKZFEt%^V`NBa=4xLbhL3ZV z-~9&#g&U6{BoD$3KVOVbLTVO9;K58hzLRb{4FLUQ)^CulNqi4ke~B{hpwtSzib>C5 z+?=fV$AtaFusl`Ky2TVwGU^bAIZCea4)u6EXFX;cdoJK`!OC|<9UrbT?KP1y3}}lr zzWM*~zqtz7VOj6tNCLFmo&8V8FMH6adZmH;gKfIsGw`%3d6OwmQ&R;bdZ0n?M^~dO_i@EX%BG8K))i)zt%I z+fma|Wv4-$naKd9w+617&^DFS>Xg!cb&wWZn0N##5nWzY9Dioy`4jP7h8>q>!(9C) zq4#FW0u6@#VZ+YxnDOn~|538+&;p)Iw*zR-1Wdv3Sl{khkak?VtuG2xF**ITpwrkN zzhWuyN}c}fhvpzHFY@9?3D;4N1eHhZih3Fyz;1(}Fk5E6;CwxU-=#IIg@2i|nHvQ>6pz3AmFWXemDLl(lfaM)_Ayps4+jD*GC`SI(QO@^`c){_( zt@EC>kD0smsRe}q_RizD9)d^F9oG6Uf76Al{=odAoMF3-SA)2}1vU8zEv(4KXa24Q zkl`hylB0c_uJ2KAQ%WfHPglve3H?uw4@-zGg z8{GZ6Ig8JH1yQ$#(OhOVsY49KxJXbHuIYFZ4{jPUe33(amH!AAp#Sq)E3WbG?xOj3 zPw+T_j~-^&_dfbG9@reBmn;#dq}ycYGb zNF72oYT`~$hF*sn{5I@hp~2Ike#@gEG-8NuT6cm{GgLG!s;f1Wgh^z<#TlpStt5~z zkwc0>D|3fxAH&rvR;_NSJG5C1qpTJ<+7nBc0|76qitZ@B3hEmC?IsKdr#=C@<}z}L z+I5|r_WE6VAv7?Z%z^A4<#ex#SXv8~18dNvX|l1As4R5Do%v0}fZry6g({6*#Zl^g zs=4Nxq?-P{H)r}trVtg7KhC;_N&@xRb1K)nN5YJXhM^;W0I_^K`C|iz-QndRiAyVb z`A5BY(u!oK7udS9*Zsb$+5#@WIq9;7pjZ?73nM@r+TP*=6lMZ^CCvDJ^Aw2q+cb9< zT03tqbwRK4=;>-KR3xd}@KQjxmP;p0@Npo{`+`Of4;&bUykNxoRXs+$ChFf!BgrsVC zh5FkI3w1ZdMI71i?^TFfJHBs`N(!~oVN1BO5NLVeS~nA*4Jby*UVGB7gzl+T)EXgY zA$#ZM)Ppj-Ol$!h`+eQ|^10<;OMbY{rLhMP-Pb{VOp)A8{A-&L@dqS!+!abWV89vD zDjtf5y5oUWy7ec6#?JBm%>t0|)mROY`#MadKu$;eUL`Ep_5ptw zv&^XEQCw;zl4hw3HP=vU?Vauzgj7ybTUkwbNPBb?&aGFWa9>|g3JpR>8OVrQLPqq~ zpKRB}H2N};$_c~#YZKb7yPd(CV)2}jI(5o@pfoDbQ$uP{cu3;QS)UHi{5`BU;b-f* z(r@|zri0NeUvr0wwtJ{bW|4W(?=Wg$U4b8U-CQqDII{eoy)5UNgB}$ypEHe0byVHN z+{@%EcpteV2lBOVz&ayqN$)NPjMD5`01`O)z+=x1cA2NC3K@q;cPo>q0tF6B&!e|H zowc`kN6$nZeV3RgT<)}RFLUi0TT1oE2+&X0Y-fjc%??GjV+N~V(=D7SFXcufz^wFR zJ1PbjB_Fs!Cv^a2&*T#RZ7XQMxD~^uq0&(|+)m{zaewRrz%($py4S<@+5CdgziDo8 z|1PtE!7elM<&NriSU6ZG#2)z1hJT)_PVS@yzevTs2HcR_F=#pt5tny!?3vG|KeCE6rc$^ zqY_a?=NO{Fd2B&+KOcy-8sYs07nuM^AlYKIteZoQ{Q4R1djvp;gkCtS%zT@vxv}BH zZ_4EP(&es#(MKJYzGIjC2*~l~v+AqLpf&{Z!lpJ~%wqowXVP={?Xtly<*ozRD8PDa zE*;a$i{MJQGXD34NMS7BzNzgOZ-bWhbdvKz#4B^m9U%pBD#Ix!l@}urHnVfwc)(Ur z45%H&f1qqN$8hDdwnF!>pnyfh=4Ts8^|Qrv7~wuiD9_yZ3R~q*{cy!R`7htvO%6yu ztB3Y03l17c6T%#baB~C$lU|?PdDW$s z<18_;R+l=OZb#(J57^<7mCQ_^5V?5M+!YnlTvemR>ooIL#eALCpfQbn{!H|8C$^{~ zlR^Ta;cpE?+Fe5NSsKRDhyIrTyJuvNENw;mI<7@9*hUl)v*MzYxVfx-{ z*xrlI<4JrgY`?mWUvP%@xIbde7UM3sy18cZ{19p8ym#=Qy5j1t7j5OitRYONh{ zXP-xMMuNl0I-^)#KOLu?;%PIwJL0L-k(AGu` za#yvQCI1(-X=HPhzR?+};)_u5dW5?am0*xRi+^fc?a0Tnsrg2+g5(jhz1zov3X!~;J6Rj=;wav zNT(&$yzc{SyR@N)Ngw&>c?AOlAEp7*v6v~WC6drc^k41V(RTU(!( z)J_E*Fh=^+_?eir)P+{q#+`kUrg)PCt5sC8YY)kBrFDxH0bik0Q~<*35TWI3Z99=P z@eqB=H0{|*Nx7Rt71~_|@0EE}qFu9iqG%UO3I0DclwS82l47<~EIf8k#SSYh8u5F)-d&m|ZLDjUe*Y zrIBuHk&LIH^K`C4B#oI*=>R!*~=z|1^VkGE!>vE!Ej@ZkE@GH@-R2>6Mw=V zu!b+*OOvg;(Z4!Hz+kK~Pmj{OyD?y_@vMiw0yF4tT)c^mG$hOdwIyQgQR8p=>ki88 zrNuLt8l5Vs+6fFk4$R5SqTJ5~3w>RQ4~d=_Q^KHSvBn z3#2ZUZCexx22Ri5Z%&k?RgvU7DbLaaMuDTk0l#&7o4@gvQ8ttMHr-?x;0CMm~hCL z;0L{1EK3i7HLejqxFkM3EFZ_?n+cAnLrBM0g8iwAd;AwF=h-0<{82P(w%W1UubY^w zB;_OMZs8+__H_6(-d`wq8z>a%0F3^H*~9a%;tFajDGgCTkEzXAZBf!gm&pcql#9?% zSf4aM4*|Cl*i9GmzJBiJ!kXb|(ZlP63ij#u>PCKl5luP|@EW_Ld&~VdDV$u8Um+5&4v|_`V?33fGu+?;(fdgsS1JN4O8o zu3xJ5UW|Y46y{BP+b0m(_k>Hgz+Qa~Ek4~v8Gi=TiwR*J^R5}pM4^#g=!zXS6F+wa zDKL*D1v(0zymP$LS%aBJ4wOc}z;}f-Od-N?=mSy|gmqP-@Ea}lvk<7Tck{u(^bo7KAzzzUJEgiU}VSOzW zBp!g}NFbzX3iz2ld&Yzo5EyiqbnxysKb$4KdJfUH3b)O9+fOpIn z5#HH3rimL;O3jFJz)A2X_EkIvbCquH4EFIRIG2heQ~f-al@$yT!1bmo6L|AnFtw7j z%vRAM`uAHH%ZOe9EeG1)E~X(^zpscdEOe=_`L6X6SEY<87HBd|Y$RTy&t_m3vil>z z?mu`N7U*G!1Kb}gW<+`A7_#!enydqbp6~fAxqt{BNgRA-?xzDU;$l}+5iPRIeHUnt zdf<6yZ9S^iC3s}J&Da#1ZrgI5w^oSV>yoS^91)ngY$Y=8nG8C{O=yA^oei&cWHmkI z6~;i5aq1m~{2Jlu0}B)>Hp}E7gn1*YkHu*I@bj>+U%IOTPp<7wJuiF0HXEz@tEZ_R zY9+q7y$)#mDLAqrMXTN-9}DivyFG@b!D$qW->XA9x%v#PFN#R6R`)MO464*Dnc8oT|C00|ds91Nx=QutJ7&T~`kOi+;q%<@YI94Rc7#SK zm}&?GhTzhZl8?)0Zp~T?4x2^;D7pGr99|N($rP)7B&sl0x$YFo%!oanX2u<5sW;q5XW)_m1f{!2YvaXpK2I70iwW6prS7jcW5cNYv^2lT? z=e;or?W7tsxSzk@+mVhw_EEP#O2xUA7D(z$VAYzI$cvGfhHRX74RSj`>m5+hEl5AX z?#xDa47ihwp$34^Wx7EVvbvwoyi$=7xF&#YEZ(Y!3{0{b;E~Bd4!y4Lb!n)1B`}mO*p9TavtS}}C{$nd zk9576*x0MIz|hOIR6Pk~d%hboE{jTawA$)b#>MstV7c!}W%)JDcb7A2Yo{S3=GLc1 z-X4DzC{y0}0?a*E^Bl@nwBFspE&HK_#Z59$^=tZRr|>=r6L zfggeH0%r7BBT-VUtN>Wb6GBfA{KS4&#r6 z#lH+Xw0s-8p9jqZa<6)geZNJ^Bc0k z%-ww0UNz@b_YREvkpeEH*&Su!v@Ps+F)Y!I@lsryc)f$0*IqS8-G()Vwyb+R6UBm8 z?+~iF@vsjWHq!|8L*^Us(V6ahYQIVSKa9}D$jmZvDGdDA#fNR&4CkneWe-vKW`&Cq z+zIMDm<84v=3#Z_+X?;?@(atAH*~iwIX1JQ-B&u?v_oxz0ltf=!3)Ma`-Jm3Ywuc5 z0aT`39lmuj7>7;bXDR;qMzLI$H{-{G#6B^RV|s7ie9AIpz_F@8o{~-FXFA0(Dg+v{ zORyg$lLkR(`;=E^JU-UPOKkraHxpH_DyT2wvA7{iFFt;O9{uo;~mw-u0dfw)(y z5)E7LAhf9BXb0d zIOlW-i5PMG_<1VYQq>mzbO@Sx2ee?o+a#R`S%z)0Vv=RV&K9Pf6qZVIQAb0uu&6LH z8F+ms>_M-)kk0h+1#5nG=B1M`CoicYzosYy5Rq5^29t6DEMh&7h{%}F{3JSuv?zf2 zMG>ars=W23WozAQU`~8Pg)U^DIZEcO=IRx@h``o;P8?8Qdtd3RKhYnn9ew=h-8N|D zhUGH3;k39>z-!d|7vA8=@qHjF2wBVA`!3ML?t3Gc0FSK@z<{R}!SyJdxI1w;2m&Az zdkj%DEf7pND-Udig1o3|w=PH45!bX6wa_a;dD30xT($AhT#dS0X}9R<_du_=xoh{( z&z{=st%9jSQZ*2uWsPYHu;n=jD8GO29Ro1AcP)2lQFG%}F(V5=Ji8LdBufcfylHII zr;JHSU{L0Ga2&~Lb#mZ7ATeAQdlI&C0z}u;!i;PFj2`XRhMyPKj$jK^L_Ma@ry{SR z5gUUDHpmmv_9kV2?Ul_;|Ir&LCd+=H8hrxBuf%I+pPD$Br?|pFX)p|oO@GE<=HTu8 zszsv~Z_qW1(hC2N_HR=*T-+fnxh!C)VMCKDK!9T6!0&@OMGK%Qu8eiL<=}?PT0I_f zDos_w+Ud!mpW-`RAidn;eMy}dcO&2&&%aS@A>B}_nS3B~WE(cK0EIY+fotTwVtw-e zqfqTVJ_ebF|G9LlnehLPo8x`)qQQ>&kEY)+Z!Gr-6mF*_IRK@73VO62BcV7fK0eWA z4jp(4fleXLz5r_DTkCo+V`p2(m<@80y=q#sIaG=*evrup?I}#o(+l$uN}1``OcwQ# zbyH5{2Ni0i3q%L2&g zA+MRzey<I}o?{%)J4f^Q8V8B(EriYL9i5X?*ORvMv;~Fzh<~JZP)>K8{M0mzZ1p zTH8XrZFd|Hxcw4n&OGi2-%U(-w6#hG%M@I+^*ONgh+g_?GXo!ecT$$dF=m6fCWD!h zqHNw>pcny<%$H6LzQ|k4)*0E$$c#S^Cf7hx`J#j2V8k9f~;*a(3us zHfrgmZP}aC=pTSMUsXAO_VCc$-DjH(fTZIWEa@)nC#C9 zO;qLvnA3!W_=(lsoJ#a_mM@VZu&F5V*Wvk2r6e7BysKP(%(^Y7z7bS1@oZMqygQN5 zA4QH58#tU$7N%PZi80Q^i}W~gde4VAcGz>SWj^V_9~k1^IB0J7i{R13OwQX1byaPG zF_g8StJ_--4e&La(55;=n<~ZVJ`aM3ij0rG{P#sj(Qg(WB?MM|A29hyi%UKJDv+BeKpk z)IZfov|Yvy0lp@e)()kc)>kKcZ!SLYvLG0}RQN}p?ZTp?hz*$U{tFlXfC5K}q0HI} zM=Lv%)Jk@C%twcpf*2^iV4=hplVOm`cx<0h`aW@v*Eic$i9y2n?UK955?fsf8NGy% zTor1nT$Q2;qx1SoiOk-+9nm0e1%Rpc%Jo6_g;tHXfvxoJX&*_pE;f5fQ4VBBIhmUF zqG+W%x0J7-H7w~o?duaTv45%QBY8yeqNx8Jcn=FE$#2kUXMf40OT1pHL+b@qTiEgc zN7s9RHGO^mElM-r&$zd7p>$%IL4FF*8{V1lpQoMk3LduSq^Lgn*UOH*o!~)G4yk z=*RmzjlKYPzIOE3V7P&2F46FPERuLeWFzGkyR%uk$SYBB-!S9ocLz$|3wY8v+n<=` zNPtu0fB6v1&UvU{`SS)^_>wZU(;#}nHMnzzX15l%vlkJuf9(HQi74+Zs*yGfH#=8w zLISksXhktHp6AVh_Tsyk?nSfvAVoEBZeUuvAw~Lz9aH?cyFO~Gu{AG+*T7DpJwh|W z$-&!i`<-wpXxJg*+A?`%QZk7%+-nSBhA-;^!guVL(VjRN&!j^0YfzgoXh=R)ZR=ln zlRovQQ0}W5UFn!Okmmda6&d_G-gk~3(q;LV`$2Vn*S8*^R56w)GYT4zzIeg?Twu;I z0p*S*(~!U{nAy4J0@!E>K09+H-EUL_)RMM#C31|<_04Q6qu#6ClNke`Wk&#GKJu*% zEfaQ(l8R_Epp3*9wzOVe0RZtub3umvZC=-L-V|TxNc`I0UD5b3?!NUuJNsL(Ev zI-t?}ip@-Zt3dlBE7%-)Qv6xE6$y0XGq&vmXK!J=MrAkWO;fG#d|~CCR)aZhnkqs{ zIMLvoIa6L!!sn5chZ(nj5=0B;zd&8HlyDw{!TZTItE$3x?l9v{Ty|@dsyYs_y5O|m zZ5^vdN4o**9xKko^=}rn$Fq3f8u8(@?q=$ePlbK54EF-W&IrNITt~NV$cUU+3;T)p z8{mN3Aj%vok_R*xQTad!6#y!3=~iH;@+sYc?1>UiFJxjcKF|qtL(cWfEPb1<8eZpj zE*J0GjuF070Wf@C_Uaha%K(h}8*bf*&`Fc9-s$98w)q8N9aJ{p1nU5AaptF#10fW) z?M_8&;CF9HB-iEX13yI@V&+vq&04{vlwu2@8~y{!ErNXJ52^tr{$BL?K1Z2R(3#XP zW4YGZeQ5En;{ms|#1qUefA7A%T!1(VJ3u2u<4J376yPtJ-)mWpicAQaweFpZ=r?n1 z_bsw40L0cP3TvUzuYQ`{LS>iB+<4=D6jtxD)_o(7|6wK`e<4dG z53DEv;Hrs%$}T^43tUcKnSDk3LD(7i^}mHAuQWQJJ9k2&^JJoJnXC6|%b?8S*FbC3 zb6qJ4*ovJhr?6B{2$|+x{<-**7Wd-00%a;6fO!mr7YJ2U@6;a$2&&?sXWi;(s-l;< za3ZKSZg9~H?E8XgW}->gP5 zEY+uCGk&()iCR-{zMGhxtQ=%U`aTjdcpt#iAyKJ<*`YH-Nnym+guSH1gmlQCvvny9 zKAXMX81)L^%h+eq+y#@cHK=B6Nnp*5DpWp&5pO&$oCNmxaXuu$ZMR#yZvnAX&gO~bZz5|unq)S; z^QW}Vz~HX9@I~Q7VFJoC*$97CO&2yCDvNc3fu6-v|@i&mQ04rUT?Uq z?lecMPKpeWzZX`4Q@;{YX50A=D<;05C1xDA`>KBQHHc)sxVJjzRZP=d-H01&`14{1 z*5#}{ehmsf-UhRn3K5SJ*g;D(*n4gSNIVn# z)28;$2GsQhtn5UTl?_P%B1g-yw>fnblh(T3w20xjP+zZ}10e?*^shY(L}vF{k-n)j z0B+@)RP|UE_oDWHB0e}-bqx}8I#ncg;4-}iaWcy_rH>}-@38f1qI%Zk6Y7_GTSXbjoy)d_z1 zZjaw22rrPLKx-R5_$XC%r4f{%hrLie7{zC`?}1_QReJQ49n{__;l%RiTVab^p!tI! z^Z8Ohkz}gQ=0=p?HD(;z`?Pd;t(Nz2;^^w2IcQV`O(Y`z*6pr%KCKl!1?g+w!_!4q z#b7XFfJ-CG(XlE@ds!+w7W*P& z`%k&>GXk)ZuNW6Bfhz=>k?~+AP;c7@pGKQAqKF3XLA&>o@5iM;pq5Mo+AppAaO8W~ z{BeP36O;2zpy!ZZ<_{-DL%jXALZmxm;#r#C*gq6U&{NYx?RSNKI8z|TER`Nzqbgmi zxdS``|8E7zGe1wBcQc>(fJ)S8IX7UEMWKz)8tCP^TXD zvgZ|*LcBBcPOHHH4nngjR;v?Pxb#85Ft~!R)K&zc=HcaI$0WEL;tOdETa2Fh3Qhl zZb$_XHKZ7(tTfI&1}J;ay3lx79Z#4Ncs8ma^AbghbQ*8Y58i68or@NW0c-YR2|5~g zDPDD}a1iag8K}DPBRrR@ty((`8W8z)ZkmpzpyleGOK&2HpUCYr~;SJ!IDhX-frJjS! z8494~m8KpvgG}Jh)8l2XT?4##tMX+<5eZsI7hr_bPHSp&9z?yV^ZreX$KE1 z64G6rKtl;Km;z-ew3>~Ea8GT*%Dfm%lGgEM9dtOD15-E;$BO{dvdIR00ZzZ!7|1m& znt9l@6+G-)MGYUHsY^kG9P8cL;Do4=XOp^_c2@(#8Q`$$sm%bY?udQ$_jiJ_^f&VM z=&kxD)n866JV7#ulZS19a`ru{D;;@dB@VdV3XcaWd&-WWN6YSNJzZM;6m2iyqpqW6CW3D)c! zMi^2Iin<8{*rE{UnOV&^jMW6u;6DK^7k54OG)x#o2J|!omY0N?HJxy~FVO%<&OI9R zLR`|$z6be#9-!{K0f`pM2;6#I$Km?WB{U?jX1ncJK;2LCpM29hij;H_J~Yv1>Bm-o z1!2pda^D2`yZVIeIiV2^cIz{$(NeQvVbR+leFqH|+xw06Lti0^{2b^`ct%wHJl}W1 z!cgA9r`hGt-d=%!9A-{BPgRHG0e4k6=r?OcKyBPOx12tT*H7{ZA8%P^k?o&=co(#n zhOXYzzU|Q)_a_b7+8-Y_e;VZqGO=E4jmL#M_`CLI02{kAqN0w9i;<5L$0XpRWu3~0 z6Gqiq^BRe9ZLk;OXCq+i*!_kLSOw{D;OdBICpeD$-oL5b1+X)bvc=qY0Li2taMy9L+fhc`+PyLg0mMycu%i~Yc91sRBNCxoF}5vgcnkytn9(n zkuN8-8ob)g%sGL7?S~hE_lm+RUQvfZi{ciQfmvn99BdV zbMK#ihTg6|yx;{Xf4j`I0Vcg|W^iR;@7Tk*ogFz3n|;4u?FzD(4?N(Z~r2sm5%1DU>Ydfor&bo zvC^(1yC?9KzeS`v;lyL)lgUrO1Z6>n&<7P=tLifH@)iA*<=&;c;a~r)fhBysGjWxY zMYAL_pypK{Zvzl-Ap~CkkYPRk6!Y|g5C`!MtfU6t z*C*0*2vF2nduj?Md6UcW2R~mPXmDrKXH%tk_V^_qip1*ZE;3I5lB)xC2ldMZyP|RK z{R&W#7puQ#y6nKzPNV6M^6D0Y8`yL2`K51Q&H?J(-qXyK<9Uwp^3IM(N>pB7TJ@du zow*=5-Bshyt%YVye(Y6qQy5~M2=Jg+~?UJnE&hB>md z4GWD0;-Xve*)2HIXN6zuLjuqv3LivLriE;e5$WMC{g4f5WZ#vJ(j?A5y}IMqsgy~N zS1nS2KR+$}%>NwYF6eM{=D_&6m2dDO{eb}B(x7pMs1ssCcW58z9gphGiK^?=O2uuw zdXH}%V2A)=?SL%w@Zhnb(Ah2-%hmsGeYnRsjL-l&ZW>4uZ)m3dB@Bjb?U=srVM^v& z4T`sbp98gV;*H^FM~~Ltl6^V(;P3_r>*#938;aXa%sIB;(2ySAMZk0m_N)!09g-C{ ze(xV(0a|EKi9Z(JzX>+z!jf_)RoYyAp-3$)d3zfftz z8fEG9i=_Lpi!l)3son!T)t4c0qgv>#ZpU01n3Z}Mr3&bfq$|%9Z6-iA7kU>sM4W;s z50KwwPQ2whXHU4(tb=OHFnwk%e8=qEasrDFCP}DEUAhW{iEnR;Fv&bXi->7X&jb+6 zmoEdN1%g};4SyV$@)%-gsz7RRiziIvx1VPb$DV~lVcRBQ9p~v-b-tZtnm2EwQ8Y?6 zpEP&W|ZN+b%W2*fbK*a6X$2~Q8vy~u^>tU zH!_1v{9K$8WY ztE+fTn|z5MA=f)?=Na{#%WwEI z!p`RtrphY*keB}8D>M2KWWGd{?D3OU`hTmzr^2Omer?Ej#f_^_KoC%jFRGzUGZKYD zyuw&v)=xqSOYQ2p0p#5#evpS--?wTC&wY5iArJ}+1RHDYt4GG8YyACP7ki<;KD?py zfJY~gJ2>%Cfkw=Pc=^fg1La-S*jE6IQ`^0zU}giuU*2!YEIx+3o~)|m^wZS=y?T2x zY;{fDv%l0cye`b?b#}gQTl*u>Umm>aTi??Sf8K|(I{)&yl@jhgd+2} zUF7R{&AHt~4nG9nC`{93S2-3%0a^e*$cVDJ1(M02_G8d+2ogIwSO-5c+Jt;I~_nh zgP5lJPwUO-M*+ZqBDK$;9tM|#d<)J^M?d?cTSCL?!1H`LjS7(w`(!Sb#j|B+Bb00_bS!icZgOtm0 z$H_L3s9x!}dy`JFJ;~XuAjrXED=*%Eyh(hcDQcZnV)!4}k>R+?)U*a=&IG53Cd z0@!~p`pr+$fYf#pb+ME_;RTXGKt^cj9d?y)#N^$L`U6JV99E?Y9dHtMs>X2~EW8k8S?Q{6X2K}&U3>>}4zuyi* zefa|5AXbZ*T{b`W9{nyf8J*x;Qx1}b27zX`vQ8BgsE3OlOpDBMbWXJNtm=%4 z-5U+`6FhOblk$#Ww+1YrgUd;9%+NlRt2$dT%LL8|z&Zf_*Zy`ohSAA`Zo8p8-E4@w z=PW#VEd3!Ko~tPHp-cKD+3yIU8&Mm3~IPvRXD zQd6;SfR~R=Y=b#4^8jV$;GzR17}7?R19GDhp_g)V<~m*{fe2{vo}|~G9UznSKth2- z(aDvEAoYt~$lt!*L+ihyVelvnp8E;jW+JSISKaqwI{UOH_N8@_TQ`Ti7nuUx+LQCb zG6QBO*0PaPF^A2gLGp=<(S?NtpwQhww4>y7RsUBd$3fmZHyp{l5BXqxpSzZ_C#X^b z_IrM;83iJ^unw4MoIjpj5!V&}Z1fStbA1i7yP^MbQ4h-0QQ3=Zdy@{jlU6$~8_h*s zNCXJiXUQegr?Ev(Bdio4E@KEzC_UoEm#*}z+CfQH`04C*2Y@#=ptfw#7`~hqH1R(9 z0Hrb`d4Re2X`$l6!ZO6+@WUP%EhJ4`<~j*$oQT^akTpI2rQXamkXqp$w}KZ5kSLJ= zgmCzL&_fb?rEMV^qQ3Nq;E<01`jj_Hp7YdBX6^iPR9}Lx`{N7rAB21Uyb64Je4r`h zYVXYpW=7mgVhLB1zJ>yv()QSE8fS@BJ@!!ssIi@Q3ESC=inC`LM!97Hb9emdU#D^D z8NRo0@}{SpJL4){@;q+gDgXeoInH_VDo$N>pG7%In&$n3fdSR-DiyV9@tfDpxkL(zhQc*l6P3OpfNQ3o-U?L$;SB=aRO@SwN%n8WS!-kC zy5CZijXMCGGTWZsD_T@?dv!+i=;q_{jBDECU*i+CS)El+MPKk5bkS=pm|Gc%bi_@Rh&K@+J<0x5Ya7ytCaafnfD* z<;)Oqg)uaA1)m_2&3G-_Zqn%jjzR7SE!H>9PKeWgm;BeQs*ZvAFMWZgv^d5nMfowl zdr>MUT73H%xF1+>5L{!l`Yy$=DC`c|&(nokD%-P3?J^XsEye8bpnUY`WgS)O_b;1h z+nTG{h^FZ6$mwPGp_6s^!S*Xgb(&23t7!j3MgiD8@1K!VTe+NP2>Lk3_(n+cw{lZWV zAPDX|LjTx&&EG6wm7#;1*{a4~ZO-gJ7`nt~=((NZ@3b?ObF=-bB^yOgbtYZ8uTf3> zIFb(BvZC#)2*WE=mS$4=%WmL$`OZjqG-AA_SLi=U!^PzTNs1e2Pi!C3TA+j4OeH>` zT(`s9)R0EPWQO>cZ5Q0N=>)kid|k1J?0dAova(I7eCjdh=X1Pq6&q?}%Bev7vi@NW zyZA9gEPIC&Eh`&e%vX7?qqRPhJY&{+1zz_yY6k zlUivxL>gm=a&jq8zPH`PtfmHtqT*w4C+|o%*s*-K#T<%+F*>YqnUTp?s2K5~G{|oz zh|S2+rSMzGk#+1Q>vUs@sa7?ocu%$32SmLuwD)70F9CZ6KK`{4H7!oj+Ie5e>srTP zpV9cg?z$!=qQ`ac)mR7!4m^jCRJ zyJJ~R-EB*;oOm^-wY(Y&A=pwjrL!t{V*W1OeeZmi92R&wL$%W$FU$)vn@&)@IC?#03$lDbGujBwXdf6f4^{A-hXk zAmWFY6O%bHCN(*GRbJ{*l{_KR(^@}dbnP=~{F^TUs3L9cpm|3~J0t-WRC2u1Q^KCx zvAK!G*$$AL8sQu7mq#$|<=+Y_HgtRliEK_@bTe8_ed{D?R;ZG$@AE}wDQ+jomioK0 z&YDN6&ee=-)tCTRe{A?^)?#3W04x^-O~;LMSi0-g;59oVfkgX6Qz^vPRLLe1J%e=B z#tT(r50JAU2~E@}`l{si1H+HSd3f3o$r1iDyf{5scRhh3QJ*9>P#R#fIeyXTL`q~c zb#QJnXpO3MCs49zcM>@x9`^ci1tG5FF7oT_niulzCmJ`vbxD$)4n?5K@}$ zojHj^Sa5$_Gc3ihp?D@2=su&RfF7Tl>gDYr4vPuxt#mcs{zRw}f*5k?0vTkCz`#Naug)2=-GLfEt zm6Rz-Js1=Hw3lIObi$L0V?1kTOD3)3WC@_Gg<=XMxOQG!>jAlx3=eAQ;ds=?TtTVS z+thu!Cu?UNi;Y^_WtmFdq69{*YNSG)`ZXn_$zy8Gre_sgncz<#16}DATKyfe>Z%1reF1!Wf3u&74jP4_+`^QZTF2`A=v}S> zEM=pr*B>_I#uakpg*eqmocT&Nfj)Wh(6DY{ik@)u1*RD_mhzjGBxFk$7`EInxvE>j zF@c3s{TRXsvfp`!7ZGrWwCa#8HUP2m2v??Sp(;c zK<{~OHjsIu(yvk(pat*}ZhEuuYy|dpS9Iy5|EAU-jG70cYpYv9w6Fj(aZivV1C5Fb zH*RvPLbTUhFR41t$H0^t&v+y|Xq~&y`&(BwizyRH>(kzuH_V|*>{x$wwO^ABdMWk3 zc9uM`#l+0E`eN^a2oauZAPs_+XatDcTog6&4##!oKR5YRx zJ@XnBmb}9_EzW|b1kWAinh^a|=OfW?VzC0pDN6P+fLAHS9Bk0b11rL<=My~|IJK;R zSZ9J79K7+Eh0}9hY1&*uHs*xG-Ei5mDXtn+StG=|v`#GxH&$^Yo4K63m8Pb;7I1*o zKC7WSR3TxN49w~m_V@$K+=<9o_vFcZseEdg+XVUm*FC+M9~RRHZRpDR22Yd4PGGM) zKATOP(9;fT4g+hLO$?h+%iBnjO#?c@a$}a+QgW}lV2RC;>q`XV^WJC0v{=s;k9a~m@?H7r)&h6xS(u^-VBf*Z<7tknP@{br%~VfOzLH5d#`Ql@;hh^_-youw4{q~Ka?$g zUhI~@IFKu^5bj=AbO4sy1bu~vWKd)5mJ`by=YE@7*4>@#m8NxSp^_p|LYkdhJs-n% z$5|3jZ2a!Z_5vU=487a-!y##afNh;P)Ie;(>>Sn@`9`pLBU30*0@4}d`Xig5BxHMRy;1G&0bu{(-8{Kxh~Xk z#>>y$+!TWU?enMr6K9qSK#%Wh{=2XK5NL1^A(yE^S_{D~Zi2NpE!@~hk~u`Dk@zg~ zeFJ9c-izxCYdPJug*KALM(j0oY-D)FF5WNs9jKg=1=VRH#(3=!%IB(SZH>GRvP`d0 zt8fWs@kid>x3Sf%jV^nx`)&b~2=v7VM7yoHf!Ug0)a(-&#yEFZiIq358}3N%m|R*6 zMtftpHb8v)=CrJX@C;3_uX^tHxeKi^vRYeyCoZ{dlqJa=KB|kR*`OKBcn6T%qofad< ztn|Dp?W!=oVW=P!UV!<(0`*!6M{{$;A)^znRG-(bJ~cMei4uA~U)Df3UEav=h193& za}TbAZqaIhTw1Oy<`qV&9(5&_tr~j>D!$44-H%4w4?y~^U2lZkjmeSek44W*3V?t&rvxHkA z3YhE!9~ajXre%1H)EP&tp2jb4ra9)cK(AdXaKLEu{(`wmeoYC*Ad8T|^Q!1@Eo@KM z^7#VJO8ux-Krcr?!CahtBCpu!)cox=#XR~+wV*GBk1hAZxN*QJC&WP(ekykh^bU5X zc6LbQtz3alR5ou#d4?Hl)agO>A-OI#>e^-?mXgk*_Y}KXzg$S$F>BvditOO2M31yi zNDfS?2{%J&C}&8PI7E7qbC0HCkUGWZP!*}n|M;7 z&9or6kHy2+Xj*byK8IO2ZU>MpS>MQR`4`xF2qdVCgC0`cCe(CsCCe&w{H9U(E!S1f z^di$HhFEmB#|cX$ve&24(*cANNmAp)+}`w+AF9|7BKNxawnRc^$oZE+RGD(n%`-(5 zl3L@}0Me8ddHhr#nx~SKuIu*#Dsc@>wk$1-S+}(Rz$W)+wPK{t_389mu65TpKfTwn zafY?V(LVJlq87bkb>$kJU6s93wR|Ykv0@X}4f~)9{t4N%FMXy)s|1#n?l`d;&wU*t zB(>Q^kt-QUt#;!+h*gNT%eYyCY1ZAs1IhC8+${!EGQS!SlBgeei9|KV+1hqueaHz4 ziMYqOMFXSS|IMA5%0WXAjhk5Bt+u?MXwOkNyYdr<{(_4 zTqye}-jqf>#zcC}YV{f)P?Y&+ZWpc`xD_oPY=axn-fxitA@a1eX(^M%0`Pw`v$yNJ z8E>V$c2lW3hW0kP&E44z0OlVXE6teh`2pI=euW3{`r5B+H5I%RVU;1$xIUPD1Z zYvUao&)CB05;3jc`)n;U-lL%cQT17%(?mT^?er;*7cvjgLvp;^EjyPy9XD6ajlQ>5 z5q-DkcHkhvyfCdTQ`X#*S{C67AD_+3TqTh|~T*AuMVYnO5S zvBAHhD&@5hKzHigy>h*huF_7P11t`36?yxrwr7CktzI0xQ#Jfq}!S(U-cuw-89b}+3AtSucW1bYW^G-9Dr+= zPx=`i(2GLYxYbs7&4pGXI>;fnrtf7m782Vkqj$tHq1f=j$f6_g9H$fTukCdP=X87= z%AkebnX?O^1rWJic~Y%Sfn(dHvIwoTDye3MvVwI(y{p>kvNbRVFSAn}Bqw2NS8>{8 zQ0Xz=ayUGj86e+UdUzl`?x1bAd7EP6eKqzH&h~knubYpjQKc+c$&Vii^+`dRjgz<` zG+N&V7lPZ=FyfTSV(q|$(fc{Utdaiqw$O==%VQQh54|r&Q|J6XkjK?(Osw#{+JtP9 zGBK5`*_rPVXpMu;W`)pgQFU3Eh9tOD(sY6snTtN4-$VM3MKPN?@_7t_Lfa3LvhOEv zyCg{ja+Y%un$+DGb_CgZIhkNXx;MEzIpsa;{D#i7zliKlP9Et#n20*@is@x~Ds@2A zEN`-5tIi?QRBoj_X8T$W5-hScA_bSXta_z-h2=?J>Ng{rP?z$Y*;jn*$e3Svb1xz7 zI{86oaU#IPNKUPpnM($rod(W)pc3u)|JCD&LCeXeY(K7S8S8!puOaT5oB&~=}C-}^#x>FN7 z5xJCuxpA#|qGpW~vhR%4dvCsB%yEKD2fc4+w#csBMzY{)hFb(lWxTj41gs2W+iLO4 zF$vbu=`;S(l&V-mspmE0zJQ83`!c((7}Id*Vr-3@r^9^69GCHQtrDC(_vUd+`(HwQhR>kVsU)X|feql;D%yZ! z3yqRDZBzpG-Oxg0a&lU-?VWL_(Awj-nQJi#o|9i5a%O6UOguG{hkohZ{ATA( zN^v8fOBa%Bv>Ib=h)SwF5LyQDsq=x5HE;*Mi=e!y8+G9glJf?=^g1i{kd#N-SNYWW zPqf@_lsqo<5;!f{2{rx`^Y6_o_X1rTU+fk;ujSfkB(%*uh{d}r<)w70)S{XmEN_V! z!^Lo?x{EQd;@nN99%Q?loQk`N#;s&+9?H9juUTta_6eb2inFoS?uijAs9hY_~xOzS{@I3>|cuR5Vjp4~a!t=(a+9)HtA z`KrBZ|3##z$?TeI;~67oG_Kn^GFCP%u6tP@yJ03Nnq!RfloWksjJqoMwcGyvlN?rLPfvfRGTt+I`G7*2CuJ>`5EFDB z@s2xu67O4JzZrvgp>C6lMzVj?5b)CxYRlnzBDBJvCp;Ho(9D__ZS~yZ`2XO4s8%8<55>Hf|D9xZ0)dT&0Mw37wjMI}H&* z^?AUHt}iQhY3TFSVTYbJ%DsM`9JjcNa^}u{ZnR;!_3hg(G+s?rJN;%P5!u>XVRrS} zRK`vJ`PWQytTzd>d*F6o7ISn!E8KCEjQbdXT1`2!@Q2@ecc zIibqqgCJ`cv6U7&7#3g>TJw3M9#M9uVLic<%zc|}+e30nB4L7ON%_880z$;SeXTpH;s!5H(h8mD;}6{LeGD+hb#TJ=Z$RLQ1wXRmNZ8H!O#8psw4FDUSVIKO zvu=9;QZdcnu0#X0XjvHz@@f=bc4@<4ZJ!+0bYgYiz%0{ETib!CCV~}`%LRW_WZbIr zn4H|EUnDc~t$OE7st4Owut)>efBA zal?rP9QN`S+bgANX#$bj;P%zhbzpqYGV8Kr?FY4;svilyZ zhdZ$$Tdt+?Vhu%EafohWzg&O6YK77dsjB&Ne!N#DlfJwKXpG#pjdYTiqpRvwv8q0f zI57Kp977Mw>sX{spqv(h>f<|yOI)?yb?0{9QgHg6%vMoyS|RqfxTkR3qW%~N?kO2U zBFgcs#Z)dg2gv6+d&fUCyOnV&EO68rp!5kvf#*^w=U1QlJDYRDk#%n{%~O|(j`Nkz zwSr?-xR>a#^9GAYna@hGSB%*gkhOrRbM0WR(FdUpZDx@`DOvm%umc=V95?uwP;EJS zs}}_Qo=BzDj2CUNzG@qq|5TT+jpu%r)v+cPsH;_x0($!q^gV`f=LHUOM~_jr22hKS zjU?QuWysKpFVD_Oc|a~f?mOW0DxSyAHulPIq@b$ECNiihLk=_ehiTz_ZYz)vPj){i28Eq_3KmTryK5cfrR8W6UIL!k(2yC=>xXx|Ya5eC#bS{uQBSuNHQ5^y8kD*?oR< z(-$?j5N4fXqb0%Ysz;OUBomGGACBRvCFU=c`|2NciAiwdv%{$(ZC$8gX(N(!9w7FE)~GaiGJqOP{VXkok` z2cb}K!wUmRP-sfs7mn9!Jm&&#D>hrc!FaKuf^-J|?v1qbh_{hft?VI`4 zEYgV8wD@qTz|(80oq5!=gqzOOMM2C#?;^_XbA;*6m<5Q9_JtxI0aOnS_cYKQRuzm62Lt^Z_rzdJcR zTXvG@d6j_FKM7>I3JNU_n?T121_10+78Q{gs`+sw;VEu&bfj9n2EXf)?XGJ*s_f2W zU7D}&M#-HwA6w*vYs!zP*<(g1wYfqptwSKH@9vTuN=CWwD@6}o|^>*0ash2?h? zvE70dqHC2Kdx>TvPnOZmAULYE{`Ox|RhU}txLwvC&c5*Q&KtR5Zc2J;UzhgF_>tK$ zdmA@)o~%u*tX#%%U$&(gHE43xGF$I@K~W}{YCOlqx-z#%frDOei_JKk4;?9q;xEDAi0 z4!eR_d3REfh?|`XXbUz6^zxpYyt~mQf2cpX=Ifce>=g~R0gv_#n||=260+|DOxkm_ zXrwU?RaXjPj)v+_YFZ}s_Q4V~fqMs2dPQ3;?TurE8BqwH*RRJjl1Iox>k}Z*|Ifki z1jXd3enPVSG}3+SaOPdYw5O{?>8lg{z81OmLb4dfH~NbkeB%s5jhH&dqpz7?!5prE z$O+8hIuxZjeQK4`UGq~N%T~>`kUlV|&!IwE;U8my&S9OM-s(+cfSTLeXXP-XJ18dF z;BqjZ7~KLlnKm&-Tv1&s9hnVTYjXqnFH0XUf>X5Q+1wT;7Reg$ei2vm8pAKpy}3#I zvTkhc{Ew%@U@cjlVtT8OjTZXz( zodhLPG{b;Ng*_LkeO8)?+1$8*Te2pW+;pE!tV)6W!L$FGe%HwwkC_47CWRuQOS0Am z0j83p5F8-H`2c^4-}kqTM+aNNL&qxJ0+d=-_Q3+B0Z@i{f8@o{arUjh*S`96YPBWO zTs#C@M&>yIf3ME)Lojcw#VmtuwBMRI|B7>K;?FJpPVF0+X%M^CU&YCk6*)0~X|Ou2 zZBAgWZ|ehps2~g$16fm;vjdi>p}m>|Nlqo>QXC_h_NkQH`M)-K__9aMjMHRXx4o&4 zKcwBae5VV`3uTT_Fln(0lEIcZXQj@&Hm>At3lP-QIME3@S%&W8DNrTzN!9@QdTY*@ z)P=@o8)C`9INKn~{AyN1t{}GNA2t5L_tZNM()FqXMtgC()tGN$3enSRk}2BTB856f zI_Fo*v8UklnokY>u{FyDBN8bw=3%p5vP6o3z7))%N0GPB;lLpHkJus(#Ojt~_?w$- zQQQq)md4q?mka!tq^XzRT)XUeh)ux!8%`*Q<#oy``q#Jv_!=*_GHWV>^t9zVY>=ww z^w%$T0Zn%$2ZEOo<9MRu4AYk#s`POraFk>e6yUW*X#ba%n7@C}ONwhf=G}bOD9FoV zUUO(Zy4KznMIR!`sHue94r8+c$!yyV?$|o0K^=q`;!#?-3x&ynH( zT=EyCY^u+V*6LVyH@iRc;P`8F()C}VSWGb$=(`^6@k{Qn2;ts=eltD1himg5{+c&i zF+G1rS9TFaxj+{`F+lrr77(ORY$A&<0zm&CVMgbEz5Lg^tf&t_JS-PjdWu9Usj6zT zjv~N+eZ8*G3)z@RWCe;-lWX!cv^iak7=L4MA?*UsN_JK_P1Y5b`?C3r{E42|ofOsR zYM7g&rvIxzBYJYdU&@NQ{p5&I4gv#05A5UF8nuc=*>tUDUpup z6=<-|1^D4~-LLy#!x=|u{8V7YqwpND(Wbc0(B{ue$(#1|98w#AHrC(RoEW-Bc#mN?X- zeWQ+-j+Vi>n=MH2)H)vsZhje}ZqD?+jaSui)-qgz$EpjtW8n z!$`Y^n!z@K?=FJNRi;b=>e|_2P>fixynk;Jk?oo zQnzdk&JJID2eJ+@{Gt2W?TJARdJQqOg@^wO5bK*tTn5*Dk&P+}%nHwuhl+46bN#ap z=MCVKj~x@;nnEq+$l@{0U;S*fT12g3uRqL+#1>-?!s>mXZFczK*g)N!B5pBLc9P(E zx50abstimU>-$$TI_miFf%%h)k$OIUMhR;+?GG4)~Qv)XE7 zxRgm*4yO6Wakzb*=TaL6ny(EMBTEp=rvS{`0`kfgjSC|oy6$U9Ln0-ZJ&)f?|BIj6 zSvD)$1I~@HHQAtB(}HH^3RO&ye7HtnX&!nv_)*0S2qefnxN4%dLI4(6Ll(|^{vk+d zlsohf9fs{P#yS(xL)A#g`e!F0~!@pVhcenD*=GUC>^V%)3G&0m~T@b@K0`5F?mAv zuPs?bPu`-ZzMqUu$WPAD31)Q65!*DwdNF3{n*L$9T;d6r8Jh>^B{$cz2mQF@ zjAZRo3n16?Z>a@8!xslM8i!yUR?Url!lx6iFjR0u7Ot!>xspcAP?D-8=e24dd5y*y z(t~3E+}df7oA?-U@-jt8Fg{X>_WV>y-cA28Tew&?ftG>7a-mIB3z1)P*tN7EFD%tM z++(wG4U2*334jOcQIHepaR1nV`l=H?*50(!jr!G6UUp5e>*BBtuaWWJQ#2j~k493)kaiDZa$jc)9veo1x$&U`~__ zAQ)%y0^oBmq%wKf;H<@~{^YU%kX`Im@xKmULQZSenB^)Os{%4Jo4@r7fUj(}_+y=> z+6A}oOh3op?y4-EO*7L^xakXM_QD#s;Kc&3)8B)N$L6At;9Ny|`ORRAuJvmF=SUyh zsc7jd>~6pB-OmaA3Amc%*kq9kmenO>xJF)ahJFo4{@%41&o863@6z5bezq zFz$+N=Oi#l;Q(bu;GsmFdgMtEYRmMaU&0jwVSUVKH*dpm`tJeiq4-~l&e#wnOadF` zFdZGA#koc9mLlmA*Mzyw^NhJZw9ux~UHpqosW9M64pXxrdW*X@lf(<_twz$r7 zv@u5AG-(c7r&_I5VdSswpdWV zTPgjMOYJvTx5DK587FmuT0(@V)eH&Y!B7tfbNn^l4|^zHa~Eg*mzp9&eoeT=&3gJy zqV~Kmqxb2%w1~rrLIq+Qg-{LKE0t>&!WE2F{ zxy<_RqQ=gXFqj-vunHz#-hDf|MqWBxMK|N#T(tjd&Vm%{-z#dJ)`lLRW)=m8XR~4?eAdqqbdh zvw}P7s)A=PZF!QWa{ju%&U<^kuA8Uzz^5<`!zLl+v`#twKI?Ms)l$a>cjh0Sep3&W zom<)nEc_H&@=eo_Wd91Opp5zDf_c{5a_w*7+6QiXPFVU8CepM zkE3qS>T`Rg7vs~OOkGl(o?YE)*K}OY{@2^Lk6j2OJBYK6kDva0?9EvJ$C2oE7cpYd z^E5YmiH{>l>vU-^d&0tK4N?y*+cpRk?ko`JwTyqU{KN#FCdAGOmOD=ADN#GE> z*mz8I)XqJLl2Wnzt)Nh1ikkvzSi<--uR(BQPSgrfqwdN)1RuQwy;WkvyY5T6O;O!! zpgsu3lf&1ud(Ixxa&3PSb!BOYGTmlZ8B8TY`>paXg>^`yLwq1v`kFNBZ_gmKgkF4(wYw~*kruA28YlTJ;s;o9CYCu+*VX6dzpddp~rizLTnSro_S|x%6 zBU83O3>%RhB%mOm$O?Oey~32e;XO}mzXjj(m)E7{Jm;Kye(nXDhF-$k-JC=>bSZk) zXTb`Z37x9CHbI(Ri^wU=_CGysz8>CR0MuSuP+uOJ)H__;9xggxw_8ZZ zUzqW@gZ^A!;~7-@(RF4kyR+Es!oLN^U-unYI~<=k+6(n~CkED`77kI|b$zlxTLjz8 zo~?fUk)p8K0hKtj1iSK{%^$w=x3~lBr^Li+Dyhz(VJ-v`-V+2h*jgLoW zS>R33N>l^fQVLgyxz{AMQGn{*5&yqZMAp_7xu|=??Z;+HUX%wB$YfJtks7xw#(25> zO^jF^J=o~pTMxH;g?_$hrA+K0PWT5a@Uy!gA9~~Z^dUTj)&^;eGqS;X3Eg*nyg$ew zAI)8+m%119%ty74bgH^f0DUZ+^&SkjS66y^Ot(Mtg`7wVjv&A6f!JR3k8dd*orA z-%h(}k>J&dQr&B+E@NhjK(ktlEiueRYg$Z8YoMz1|26~}7EZygvZ_jx1u>OI@3%dT z?Oe9TK?_d6OCueKA<&J~Y1*agT`$pfu1kuR0m)6DG|--k?dmTl)DXHE1;ZOat(LmH z^|W=Fej!vn2#2%2ykY%0Va?&mW~s4PU3xH2j+psA)xr0O*1h;%zIR)*#dlk({2DdM z^e{)TLm)v_jPY*%0<6xqU@HRjs9{@#lDN+X$g~HW2_RK|g`I+!hyz1RaGVh+SAx5I ze8yxPl|z4O3?aCGBxXNfP_qk&+_L$%xcci!2i}eHHHtDWUqO9v>}RnpqdE9sW0#AA z&blv5Pn_}oiKeaq-w8h>&|KMn{pN9AwnPK5x33+)^qktgro$wY4JM+>V9qvnE#3B6F6jQf_c?ou+()v=yy?QDOSZrU8k{~9$v>Ond-`eRGBHe0 zp(TEE2C_*PArquRN%8h}?F*>@4xhjD1;iNVtw#urjbl4CePwn-ykyha#-)mxNX$qG zFmB+S<*O-$JidE3OQgo@DI`AE_wlk_?UW%)Q7_vrWvxwd&3DrO_?#E(m+agy7659Q z+2r*g?ikav+O7?0EEryd&4)rdfHPC6ckyTuzIhzRv;^%(LzdFR zc?<1N?LfeQStm%NBd$}npa;vIfdeh#u zd!;NwHqs&W)lyCi(2*9@q@G_m4y%g5{c^DEabXFHO?3kDJF9>(_qcVlHEtir#PiC@p}7X(`(|tR52pC z@F!p;SPi-3S4-EoV(I;8v@qj5hRo$@3bFsu!JkCfDt_uRam-X)Q-zNkhl#zkS|P{A zqYAvIqv?N~x|xVtc*-?TlQ`ll?cngCm$PO>=D*T<*7+)K;vhF;y{SxlmdFycWAVq> zBUMKr;Q`c|sLp@V12lZOk#9F|usY4RdlNK7@gKgy2L|oP#}ztH1!^o-1O!(u=f~LT z;V%}2RH~yd>Jst4k1lzGTJb7Wu$i~#e%(3djp_}{7r{Vq2M{>6b?(qX*5J!(eG zsFd$bdfuIzg*^bgrN4k}?!*WFYV_#~HFkGslmNHFSdf%!LCtL3+l48z+E^XnJk^WH zGBD4{Sd&?v<5Sh5^UpxIf1fbOoVfKj{qU7AyJcLY!-Rn8RG#Y$4nuU+j(q)Ezv|VM zDU1Nr17^Sj!gk~}9@@$6c21jZy26|-z^v`Iy>!B|ggdXFWLLr^0) z=}9T6a?|~pHkv#UVyTI~Eg23ydJ0LV($VZY@?hEu?y^Q%96p(KE(qgs`sHB9Va{=r znLL;?nCYf~81+!ITlF+`Ecc!6ql@x8S00vHzuXt?(rc(dUeMoKIP2PSdA~@znt8Cp zLi$%2=t-ZNI5qs3_YM%+4>erZ9>L~8$1e!ii+EE1E-}bEQ&FSLhzr!cVQo^Uk zr?gICAKri2d`hErCke~`q0JzB*A^m6D+sq4ct_T7y=AI3Ur3k`;a9^<>mn`xl0mJs z)BiYhd*fAZjDe#030Qzukzwzmu|wyZm;bcM{b#o`8Z&$$Kvb*Gcx{|#K2A3+abMg3 znOlTjOX{PaHRs>6oG3`9a6>Xhpn^HBGCBgzT?v~9!#uE`?~%HBF3v+{?$P}2r_4cHTxMNy-m9m2myo2?w^u2+>+Y}o~!KmDM+ z0?DWNcbH|N9la(BDfz&%nu606fh4?Irqbc(wx7waUNkyLyjMOI8dsotwkefjC2 z38$|s+V4D*L-=$}Nk&X^2*fN-`H-2)cjG!E0;Fke8+@h6KWk!u*0S7)%kf((B^wCC ziw-*AZ=|eYna?J*8U@T0C;Rs!J-;Ih@JU#;W20fSr-7mkemU5$iS$duvbVJnx1Q5M z@(895QaP)~?-FUJN0ne;C`nNh%oSN9Vp3Wo9@5z^#&3X>>y>CxZRtA!D+MkBJ5uh)eq@fd`(N%@r z15LGplv+GLX;ZtS2{yyG-epi)vzv+4yu$FTYumM`TYm%f{3QpvXq6XJOKh(E+am4j zZdZTN|MP(J>K_!J*I2c-Ob4RFXVT6efDKGjsY((}nfTdmOkTU*KTj#ch`@( z4UCKkhnJxXHK5p|Ffu!pT2^{W1q?OHz+z-Z@4IK0rF?UygQ)I2j z<H4aSHfJqY?xo$x&3pViQ6SAICtjbpA`$RXOBroBXTal z8j*~1I4#iN4P2AJQ|OwSZ8CX1&!v;?;O}uCulneuwGAOeqGNPGKkCDv8XllXioh&u z8hcleY#mPAdsY7N;ZvOAahI>5R8z3$Z62ysf(AqVB8+p!J$w-O0_4DbNDgp^0(iwf zh|e*kcAIQ<`p!MeY`g@(s3JI+2MaX8G=?rZ|1pEcf~^Pp&HJVdePSMPs*C~!#o{j0 z2fCZ{T(t1VK+mW{<}d3y$K6xIN>LrgFPX?kBz z;MMmDqcjty;rjvOS|z1jbQ#&`2=K}{I*gH6j$h#fCO-_7 ze41W5#oN&bBkdGoF>U!Ry`Xv1o?m7=D-OD{q=Mfj*XjZ(qSI$g^^c#AlCdik69*sR zgoiFhIis1c1B?0sfGEL2FC9X}i)st!>IMS#liaV#_^uVsRGu{ro(k z%*?0%5FWujch*d+U^Uz!(fSOdXen_u@_V*$NO?_M2!2T#$5a)t#D7}^JfZ-R{adGm z7qAb7W4fhQvIt6g)a08wys=&rq5Dn6vvVIsw0I0ny*_^&w?~0dEI&aw5--eAoN>-E zRUM)mVMqiv+36>v-iYdNnWN7j`PDksUPjd&Jz#wpw4+aZGorpI_{`4vTe?4YDv~3$ zc;mT=w;hvk-Uaw*A5aS!@Fa7E$FmUzn|cuO&q6uji8yIF(RA2N9L%4Om4rqoAb5kpDUOKQ7GSdH5= zosuz0zE_w}g)hK3uNBM&S+MQpWdHTszt5gaA=Cg=R}f6^OG#rKovTmty+K@CrHdXy z)T2ju3Qjhvir(22cn;r5$Lev)4~H!ytRn!w7K;PT@1HH#)GKYM+PT|BSbISiT{?#E zSpGK`;BOudK+N@Y*p+aDnP{LV4D33<%)31YWjj09X>`c+M+~?g6Xs+3Y?s?I&xWnD zA9~9b%y_CpS~N$;dU#hAg8Cv66NAv<@+d^PFx&-HS+>V(k3(9zSe$nHdp2q};Nlue zD*g{jC+O$bM{?QHv${J1#t^2b;+bzkFjWAT41W&Q+3#7G&(bnk&QbPhFmfGaT#1|S zNWmn*v?&AqPrLm~*}3IPEd61TfY`o?{(P)<@+Z`&pcn&y;g%2+nA;_y-pX_=U=TxL z;P9~~DIOi^ZZY_DtY%xU=kUrlX-EW^A!9YhzbMZHXzllDf*PKuc32pLIqkD=oi}%Y zAt3~t@1~0`iek(_2hJ2@Mt`HOE^*rp?dOH&yIPTHaTD-HDo}-NXN_$$c}tYky&TbJ z#2M!sP2yc<0$GBTBP}+z+(hB!P5m-i?{Cng>v|g{8m@J^5yVtNZ!{km5@yK-3(&6l z9LhT-xtd9saphb}Y#*t*f@%|cLQp%@+NSN70wyk0_(I|Y8yRdG355L|fzR=m#@iFG zx#pjl)fsbUm)%XoYLiotkW?Ynv?va$Lh^=GywnS%`{1nl_~ z*1(KKV1{vr2hVK0!C~yPBEc_mjVY!FkeNdLzE>eT9svRL!j5jPOOk1E zDv@vjJ?bO%nNeWV8HW*5A9Th3Qnj53imey-)74q=TG*zx9QI`!i1L^MW4a#lD@-zG zJHuRd>gb|118xSTr~16%?D_7xTNfJEl^2h-PTBf0Gg;;#L%{M2eG{kgC{h{y(u?Tw4ni+ zqkcZ~0E@Hy73QhJvDsj(y1{VQ(G8j0@ybAu4YW>yxEV{3D)U%$0zlgrOqd1%fb+|l z1hbf{jNbfLSWV|s&;yBY)Ino5f34$Y-pyx+dqlD? zknkngLrVTq-FoFiORfnnF3e{~TomH~)Sc9@lJK?L^go~AG~}ZAOI2Ld9pc93Fo1lu z0>I|8Pjc#)#Zjto-#6GgJhh0S6WIshY!g+32BnR7JK~zzsfO9(GmtZy$_L4j+nEjy zCZTq9?&!cEt)dD&`MD-sBu)ILT^Y9ae8%Wo8dgo6Tw-Qwyx)bQnx~KU02(XhbDkf_ z66pg$fbsy;a zilM;WOb`Z4wEI?(c&pc_jW_gThtj!2MB^@BDS>eNJxk|mmhv@)m&PfYyNv@)U-E#} zdd;q5Eykrv3Nh6818u{Rf(tIc@ltGRE@Rv8%vMgWNQ!11G@$3}euh?z+ELQb0hqHs zIHLt>A?9HFJx>=V@sWg6`GC9l1+?-@B}gV_@4r>wIyZg$4%_LR17&QY>9@9HMP` z=`9}8aPT1NCq|C==v!Y17-c>qnjYa%M}w$>8#y3SY|r*Uu@`~p8JY&ruesW7*t%~< zfb6b4^SN+LpX+j@t>mf!Y+gLB3^@~@@qz3-yiyrgHqKtq!)!#r#h1#iM8YFjF7$Ir zZno?1SO8UZk+B8I0QeHzQL3JaaXrJQ67oiu=t6N}V6r_{tza}DZ2uPs%;%5~czve3 zr~BT$es}2!SuNcjsEHymW#*S3NJEwU)S>vW9$iL}>vT3p+-^nW+;Pwkup_d#^iww} zcnpvi=zPF-^)khw)1~_J%L55d!veI6D&A@{r*}4b*N$61jR&~SQ6o9ItS5v^z)}!h zUOM~x-b*+W6;`gV@RD5=fG4P8_oaF83Db&}+Y>m`(gx5kd1=E_#jB8i{SC02EMvx9 zLoPJT_dQ=V)(ccJhHQM6?)U*@g!}YO+wTA(zs2O9h{f*Q5ADYD0<-X=PfQTal1T7k z5^d`auv89puN}xnwaE4@z@85=A=#~W-*+>OH&aOIE-av&tg#4p@pC82%L|@*MKJD@ zLOBD;>IR>*nT-Z5Q5DmL>Lb8qvc&53a{vrA)z{kn4XK)sJ%lwOV!MEN=hVV|rm);x zmYc`8z8m$yf#ry_ zkMl*JF)dHJSz$Y8D-arcAp#->Uumy~6)_;GaKTOiUVHQ$UcTX-uvs?fRJIcR1-F)( z^5Vs@Z!}3yfdg%$A3jtFV&=l?XX;8;2B8==UG$1vf$NY#Nd#UPj^AF>sTH)#>e~IZ zo~3XOg-^qt|KL*u*(xl-!k=HzcU5j-Is}ixhHDm_QA073J@{+W zosvB-^M^x$d3QAZPt5dx+=hvT(AesxcOnP?2!jL@TjU4DgYBG_h6*DdaelJ~Iu4k( zh^I;d1+Cewz5iQS5-D7?=lU+{>e9GyBE zXmqNSh#_`&Xv-O15VeNn_$cJpj4?o{v>_IS9S9{YI5D|X{mEdYvsoJ-tr%N7FAv}{ z*6cZ=gT8jxerfahVQ)i%7~{2OtIJ4{^kWT6fB`JHPeG9S)yjR&$&16b<)+T zZzQERTIqk(+ysog8>lG`CYj&sMv8uGEME6&{J47rhKroNDy_f6csEwt121gXrU0rN zSu=G>86-&i3aT=6VB+>O)Q!+X0`6fOlTy2S)R$V_$W7eAuUf6*?KQ^R5e!JJ2myn# zOeda&?TiOLtP^aH=Cd0Mi-*D3wNAN_$fSjp>ZUJ^ksPQK2c|T{FCoimpwqV2OceB( zdsf+vO*5VOT>7z~3q+3#$({rMa4LE76)@ivI^w;tXrG}?zcss=+8Dr^{a4bbQu8Bc z0fHffq$vJR@klt1C2gOAHJ@gjV?n?4Zkd&gqCV>OStz2E%c(&e*Fcv#naVMP!gd^- z?v52tj1iAYB=P=XSGo37$ z7=cd$$aE#@LxvXGEiZPc=!BY_Spf^1i$KT#R!VU3vjmf6BLmtarfaxmU ze!Wi4K+xwN<-l~V60y49ypRx*zCu47)ERxZhQc0$NG7XAsTO!`za;Ytr?@o+cg#YL zgVUeGoNN_uFX;7f1Mqhl;Vhj44e{_+|jC%F9XMyRo*U3jfY#b$zuoX z9!_asxHlH6se_abYirtbgqX!dsdu~m#c-WH1kC1dpGI=Z zGQYDIfbqJ_L2AeVjU__r`#y@4$Lo7Jdyooxwy)W(zR_lRr&jBUY04d!#=Y+S3ExRp zGcR*6Z}7B#janexe>u3Q;M-O4xY_kY{h$b(!l_a9B97)L`B8hrm$I*VC<^0^vs|Cy zn_s8%2bozCw<17zTNhr~l|JEu>J9-|(=p^5$P;+31nzLGtu;Frhe^2yV(wzDu=Nf= z#5sgc6`T_L#eQjbS5dkUYG}ZxMwA;h1l;dPAh5G}?-Esn;B=q(a+jI0W#B56UvhOe zKvQq2G@gXRyEkcF9m4zFw6a$bLvz}4VD3pd1RFoJj+OKRql<`^f!!ey4yl3ettTO^ z*c<7|AH&ABrke((389s8us>pEN@2_r$l4qq25D3iw~-6pm5cR9BNs(coQLua@@df`znK<15mTlNkBD^m1FpYi zuzS(FF0ROIdyZ@%?;bohVT@P+k>Jz^VRYA5?!jdg(6SvUJ$E*?xaQvce3-9baP4ju z_GeBwMbRZ6L&53xN+i^9$Oc%(A+`s7;!7q*v6z&t7n<`-_lEvy-TAChb{*;{6mDGG z6?B1|)wzsuDFfRCFe`-OA}SE+8k+zdvWu2V3y~(FM?-|o_v4UvL69?>Yd)6FzvWn@ zZX1&CZoWNA|AVhAJjA0L3E;jz)0B1Juc3teExciWOY7&>tX6s1j?SCgpe5LI~p2L~^p8Dw@+(4$0 zpN#^>Oja4S(o7fPi@WcZ9Qi6%^)fa2X8@rxWj2kgLDmN}a+-Lno`-EB%G=?syJPm~ zC781{lY3T;IHkWiFsvxU!2^>lm|Tg(1cu-yeNtm%9g%T+8HugT)~j*t6nvpW8~0^< z;cTFiq=fXsb7)JG((MrdagpFO2QUIERT$FBm`ii9ok!EQpAzH^sgHIMLdN)jNDp&EtD!n21UE~Qaqk!GdQ` zWS+ucjUxPSeq;dBOf&GVRx$qz7!)HfkRQC?FJAU)DF?ZWjbh*Mx5Ma0v%%Dik1G^( zeZNgD;a(<{g&Kn?-9PrbLV*|S@oq2>4`lcrYqq^a%ptNyqYcnlIj=!l4x;8eLje0e|@o%uH>9s!CPE<+* zyGhCQ?5s<0tZu7-q(G1Y2)c8#oyp`a5{#dk>Nx=`)uNm^l0fL9Vfyo|-~LtJ58$c} zjVjf!S%1&Sp#%u5_-|F*Y*y{@Q$zEeX1qIKn_}W~i{-@rVV|L1Ri|xis1*p}!ywf2 zE1<)Q2R*Cxoc(cD4hHC6kn~F#-NI#&>*NX?N|LT9jQ&_sfL#wl+{7?{jk284g&c?f zmj8#L2Gi`F)!KPrk1M6p_|`=a)HfGZKjK*lCtk}u_?VV213|9IT6D9`qmUjIfZBQ` z5||(D+$knBX@FKcFwddj7Cqg{^AC!hHwWpGtIX<|fboru1Q>Ma3MEu)bjfPaH?eNX z7a0^)DDhU&!wI<{E=MaHI?9S4G2Z-0HViV3B&J5qU7RV|u!H{N*IlF1;*KV0p?1&v zI5s_9cRsDIlmmz|3tRiJ3%UViyllNFUd8J0UAdO zDK-(bVGYtRHVAZN(8r3V+S{bzUOIoN#P4m;4prj$a}zl3~up*h8^VTTdWE`M>r0w@dZ2-d1Rz3@kh59>Yu#@9e~w&;(Ql z>zu_HF6SZj0hGR!%y0$y%@lXbkOSVhU1Tm~2)QKsUjP z+a><&V&~qk4Ij!Qt5I96t*usa|4F#5$q<+khm45tYM3j`kGXg#O15VOwE-i&6j1}j zvHZzp;Ceyk`_18YA+nX1-f(O^XCrB64%}a;s!YK+l?iqA=d6Zcu){^u^70)WPL+SzG@?dZOCcih}>HpkC(YBlq#=gVjy((}L zcddVS*SFDL^Za>tS^u98-k(0%c{A(SR??O72kg&oMLv}2G_f<~JpFTFTVZ#9qi}zB zcX|PPL45kqdQ<9kcR5&wPm5P-(ptvppS!w#{r$n&+J>>%>4x5N)#(f8KHk91yMj@K>wwMeg-7$RDzw%1` zCC7t%-NUmt6g4{93`SJN8Sie?&Zl^`wI9|t%2dd}ezMn_;$6$)T7N-S?7o~4J=6km z1P2tXPR!~pviUNmnH2=TiDyR0y8rI7rIW0(wE>ib711#J^DcuR{|d{__sY94A%FZE z9`q;V&I*;a>LNMqS{ugwHYg_IW2nX)e_ge@G{ur+e7M|!Ce3bC?7mCQ}< zClFJ+GWr1NA&k#weNf}tcEhK9 zcA~-$)BtHET|nct;DzamGMeM*Xps-rTE+m&I|FI-o)bBoG+A|@bSx%jt^1a=Ain?A zyBO_&i)14qF>wYPWy&V=E92HUZCOWVogvG@dU) zcI7@4VF`E-y<1So3+8z#JRtdltiI^gMr(%F-8qx zf^V00fGJdL@>~Z|Z2pBst}O$FwnB%|Raco2$E9EBo3;POzfndIF(q5Q>UO4>J6%j! z0@G#&oXDDUWt-LF(?AIAIWgOo{cxRonHW49@CK<4CZ6pkx?{5XsjW`CC_fxfP=|eC zyGB*A79~GVi^y419UKaok{pj94neRuq&H9oW|M@iThbmbdEO|iEOlcjgW42RC8ceff z8@LRGkQB76ZcU`~%^Q;yUwvFYTL0`rk<_U(Z0|KEL%_ zm8IPgLP+Fnls+hW?0%mR!YPo#2Un>9-~O^KYCqT~wYW2*Q@> ze_TwXOP;hL!JkkaHdrZJ@$9a{9yCGQ+mj79=;hX{RwhAYRd` z>3HvH?E19g93P1M+@iYWn3XBPjUZu~uS%tYB)Pq+gUxB8+EGwIyZ%#-detml^dh-8 z4vv3Qcyr*M^QW#uS{)aQO!_DLL-_Ef)MSGcKF6TqH(<~@+kg{f{3_7fv+Pz2g>8OU z*lbaVMh-1#_C_3p*6t%a{DXY256VOx%o?n zf>3lv4K&3!y)rwD9-X_p~6Fkl{xnK2GnxHK5uQLNbZubZ-E)(X)>E{frE)`g-&y~U#<|4(I zr;)pDWkrX5)3BhU&0u;M2jJZ!tHHnQ{tg!-5)P0}Io`#g=mymq2SI-8=ajOb1t5C$ ztrQmi%>}RlVwev_-&HJJ4;tR@$N3{VQpLB1x#l0y`7f4n<^Ha|kueJ>P36vddN|pe z*eV(FcCFK-KmIU~)7nMYC`P@Zr!gx+3MthIkKm1_YCh&DS&@TYRGJ=M6WqaGZmw|a zF*!EbU?+Hh!jQ1Abb=E0_pIybnfG+ii=HrNZ|0F#m_U#7V6>?_kXm*4t)2!0)7(kP zwkHSr12r2@Gw7al)!AO@;w&i5j0B~beg1iP`Q0j+&rysqznDU>6KPhm?h%~=HEMsg zP`%k3o)9n)*-5-Wn4ickytcnwEJ~qtl6UqJ3V0eC;PUH}_~wZwj=SYcXDpYs$yOZa zCYh$b*G4`WLlMdvY@+hw$rwinwQx#-_$#lvbE3)4r6J)oWB#nZ)*QcSVFupYw~|N~ z6-o)qIn7`T5Tcax<#76yg2&pkB$lf+0?K*P+-?v%jj4}p!iGMUfHP+m?aoE6#FeLD z8ya1=kQo9-Q&X0ah%zZSQH;^@ME}#=TU^}+m^libTt5wh*bPkz?d#vi9a^yfL1|0s zsH!xAY%HsBupf*&3+qnH&>`C1mWHR3O$RQg@D)9k!6~0Cv|p;+=O#sc018R$0!bAH z=AMdPELB9%?M^I9sc<{r&cJ@gqc*3ryZM8}01|ozZcBDm=*<3jSFHa^zmp><5%EWi ze)x$^BEz0Rb)VA<%?d(*Xn`m!S5e(eDY6FCKIoGd-bip@YAzhDw^izw-xpc?><8Ws zA6T0M#OPCbNjSc^eKl*Yb>pDeQ-YyFYJ2HMY&R!Q|F6h0(WjOCB))lf(7LU{UT^D( zFk1!oYBz3ByfA6K?ewz7RUO>u-NR2qIQqfNb=h3|uINXl+|y+UI8l`GeE^)|vAkB> z6a!`4?O9TkcDXMdkB7!$rwl&fWn~wN55tTLL7nq#-+jufuw7|*L;Ocq>)d;iT?I+G zqtP1BdDB26cebbkaAggb01lsI_c&z7!j{}-6~peBFzDK&gX^yd(jUQ}VSE>G*D9Iz zg$c8Z`KDm&csSMD7=MPm#0vmO=NSE}9_pC*R#TZ=7DL87Al753qS>2!bUY>2;yEHg z#(ezq1*BiOpe5cH$zrqqT zVq9OLH)n_KUw#8X(kI8|GiKV1GB^53BD+8Za#(U>qr)61D zKPv}+53N)RbZutX(3@P+OAzJQ_etFqNNe#4rpZ+ z2$7@+2+KrPZd*H91*@~Q=4Z*~e+|-t5~t3X7Ty_b_`y3z8y1rAX=;q%8y<_t*<;s2 z4Llh-xam(j0dl6yb^?Gc5AmgBoLGLz6Gq&>dCi;KcHFZj#W)EUr7Y~BFaFVbPoz%7 zJf=azPOqn5fk2qge`lF?%*M$%4qbyeZ*p0z%$hx+{1#AJ{?W+mg|oZ@W}`fK{g9=} z{vhUEanqt~hWFAe_8i&_O#Jm=L-pMN7+F*nB+gu`3kA)*jfK+3F=(rw#c&2#H)X$? zS1+e1115Re{p*VcBRt^^{trWGyrFH@A1>K(hKcR7{kj|Da2&HJFWnOaLNM9XKfy^? zx-|O?ke3qXtPMV`Y>dxhph^Z(?3T$MG=vUb>fSAYu#HOG5acR$2C_EjS#uyt4P-Ng=> zDj<6pm^LkGV5}os;@`eK7+L|)%Cm%}zaRQ&5(%nytpS$Dag4U;hC-e87VmdQ5u+Uu zv;OSPj%-<1l7nM#(Qd1Dl|ElJN5k( zdKAOpCXIunpM=4_R$JwJ_KO>H5&N%8!6JP*%g+wI@sR$9gz*R=Cq%qwd8D)0`3+PI zhs}UYlG8SjyTU2m@(9NCd#HyRVn;<=9}iHJ4?Suw4mytU_Lw}u5}oDuyaL!Qe->)Ay2`>t=_EJENSl338}-I5AMOh*CSJ?4>*U zLyrS5je@nr$otmoEyjcjUV;T_Qz~@pU~uH z!*Y|chd%$cdQmz<90GJCS|FxzLIY)yKtdz{lXoW|7G9R7r@GiNOPfDbs$KKn&wxL< zR<4b`6ek-^U4Z2lfL}U-A}_sX6lH^HHh{V=LKtTS>;iK89P{9spu2`n;|btXoE-XO z#QbgV?_75{-t%^+w7G40gwNR(q)A{=3#BY`5>QeYr2hOX3yW8W0?<`?K*!)a4KJ-{ zR!o!x1xogbx(Hocp~)T?f^LCzPe&p^eEsdPS%3+T_{jPGFc zx!Ja(pEorg;~}-OXIZ6vD2 zIaj~!Ui+y?qpDJyA`wZR=gO+9nXD8P{bzj5KfmaNw@U}E6J8J|E^hvP9HRWSp5V?| z$kBhE4%I_XTvW!Wt~}Rd;fma<;BSC&Pcej zD5&a(-?c{3ORJ~UKrteyb3PB>3nc^(P#Shu3TG_hTrUvsqRbxD&KGkY2!nUH|6b(|^hG;gpX_(* z1V+L2nynBt8pjOdXxD-PnH0|jQoN#M^Ht$}=2=zIGYB=oe%F3cMeY4PgDwV%nwo4D zI-02Nc7}WFSGB<5;W`hFyKfKq9>U+NAq#Nt)W{qKsVl<9=qgwEO~0-;Ln|Y-f|(jq;zb>D_M+e1NT_YuHW+IhqEXdMHobl) zrTNJnuc2Af4u&}udLalR7)Wf}*pSnxGSI?d-|#U}kcGUFfM+or_R2}IV7^F=stb?k zT3uYE{$rtwDxIA!my)r+{C8boJSegte7l@4>$gC{ZLm)?qsR8cQJlTN2_%?t(Ui@S zDwn;yj8%mxOAIIT2Ns5@TTBePEO|1nestn*H3ov4>_1BwLAF^WBKqJH{^$& z>Pa;<80niE%zqd^dLX1W{H++=52Q?93^gxlQ?T|~+;D`H>|JZ9CQbfy0c{8Wl+_dD zE^3D+sj#%kzFa`bL8V*o_AQzq<6~TYL02U)gJaz532TvIH)qgxeb%^O3twI4?|VFIf4=c0>MD!lA+7ugPG(hRZHj+8LUe@CyLsBOAg;&oFx#Ffus5cs4_1| zl?f~y*lbAXXQZp7Js)~&_GA%WBd%_(6xlC`1Tp)pdxg|&*`EQQ{I{H%fW5f83_?s3 zPd7gfyc+=}ch$8`S0HJpaGwVl5=yDF$F}idUty6_nx3G7ov;|TS3DN?eq=;%T)kl& zJtBpmBM?b{9qUjzzlo?>hS^vVJ3T({{IFZ-Hq~85PX2E{@F#^UILBRA{lE zas)}~AO>^ns6&OOI*_C7&z}3rWQt)B5~hPRr+;+O66Y5@?$d}h+gxkuI1?}bdNY?K zVm%hyco7M*J(sHUX@d#Xt|N2C`Wp@o1vDO{FK(Xps9)m8eJ7PDh{(L^W<j8pNl7O8?#dGo~+a;8kd4Lt$Y9-Ch_@H^aK>mcCGFG}W= z(Kv{w?02-;_@@E#*-GUu7l-@hVSnZWHNa`Pw@c%Bc;$4U)<6@|;SlVapF{TL*|~{U z0bv-5cG~g|lz_cwVT(n1SAqXf9*!tK2{$3T4vb$Q?S2IAY{ei;uQrA)j)(x^0j?#c z8dy~1{RkIZ-g$u>&T{0qhXZ;V$$xZfPHocTL1#=hmduMJp%~`ChJq!vNO>sk>S}< zKeRiR-e$x>I(yHGigWMtS@s40(OA8zKg{8VgEpxh653G;5Rnuo#M2zJh_z*8MFq=^ zv!EyM-gT!0#2i3iz?dA1N5I`98*b=OZSA`n#`pdJ-+CbZa9#x?cvi6kYN@ejU3d76 zmw)G$;m{M9vmKLrjL5~j1Qgk!r`J6-Wx^&f|#l$gokpa_b%7Q zhL{{$POklGI$;UqM1D5$Ml9r2Ydr2V2kQ2E;a^*z`U{Vm%|AqZVP9CNQS}_uF^hgM zK7mlv6^q+P?iIa8Q@q6zaLZ$0EV*fvOtrp{rF@~yS{)=~?&Ps7iSC+P8OskOIOKky zZ))@G{SdaZ$tr6lcMJW5)HeW%b?1?yL7od_IQuiLAz85-rY|BU!Y_GfIvUsdK=+&L z^d}Iiv!)z*gFaG5YUeA6)ZK zyd6zSLBw?5muy9DJl+OgIA|Yat&UE{a`2BMf>uQ3$7z?;R3ZA3Foy7g-{Ei*q@^D9 zhV0!}?Vvzn-)~eLuzAX1&TnpBegtF?gWeVw$7*wIS_9(CS(4HUe9&{qoAFR zev0lbUoAo;m11koymnv(m-h4Az~$)^WgGE?;@73PWipZsEZrgcC4k#NbgOYtRSzgX zHt3;TEr=dA%*S1c&rRo`P{5v*rv;q&kcd5dYstvlUc4j*s-WccJ5$x3}hUQ$06bU6zm zSaB}W6%h;kDEhtdSjUhs2RrqrBWCNX{K+8iJFgaQ9&bFlU$hVIbJMY69!eM(^0>(<5tSIr}UU4|H2Jrtv6IuiPs;rLIK79%}gm zU*49!)j+I&*nh_Sd$x*gNKiy2+fuR>Q0d{#gwzNJrV|R|`oY8Z>ka*P`*(SQHXBrF zC)y|}ggnFo3dZEomfPkl!ld9YA=`^qid0nnHoshD{(cvc*50#gN*Z#64|UQdFFr9E z@xUNtcI78|S0af}z3M-k`W^sv+?Jpr&oFsS9|V?|5Ip$bO3V}y(cYxF8A%O2;IaXw zYlhgd?deb$vkvB&dZZrT4Pd?k?63I`hjp(lzdo=ijE`~I0)8^_Y#^^`GZkA?yWtq7 z1NIxAs^Vz{p^ulWs77P+I+1YIgi3B9hs7(({Pqw9k{H&pbTw?;DH|WH<!WrXbq`3BjbrfKqCD0>izI8b^MZm~Uda+l8ztg+xk`lje#>RSbX@X_5{m-ieSs z%L(POR`9i!-5d}CNw*+|^}~svRZ%5pRvuer5o1+k^n478ECb8U$2R@a zb(Ew^if$_kW>9CV>5`Y}Us1K!<1#Sj6&@1)A=^pdsHsL#O8`vJxQG7z-85Yt_|y#hEL7xoP~H);h@&Fe?ah8gb7f6h(=4p z7j|v1yAy&erB?&I7HAR{+h<7-xl0J<m>9F0`3N+WxB zn}2fFPT3l_TCVX`fvmV z6zla0go{wfW8F#AO(Y#S;tzpl*{AXhZZ`wY!deu#T|>Wx!@aatvC(|<4{aUFTs9{* z8bO7^1O0m+CW8<)320ye)_gu}10Ubo@iY&Yvu9Z(cA(Y#3D$!>i>KW$|3tDhrzW?I z5`3M1PmpIZ(mudPUccsyWx*Shw6_ZIcpeyt2{AoTzOu%qcxjpqh?aAmP6Hnu>LOIG z0N>Cq`mE0mA2P@?dV8a0>?H|m?fBKSaIN}>idKmP`9iEVr4A-2n8Ue!XMb6>{1FD_ zaBTER)106%u$wvA`%WldZqAYQ!&VGcFYR8ZN;J4m8`gEg@JCby0`pv*M^@0p)hqgo zqCHc*g%N4J_D<_sX2`NKymprXK#OELx*_+*ii8-x=f@vE>m1mw4tNbYf0;N zu_WM+62U-XwMu&966oRSWu%1#K4%{^UyK1?q>I;Gw8aq^2|?6RUAM6rhBXKBdAkU? zzvAnGFZd#FniALah@U{y#xec^!M?FjuRY%$g;W+X%5fN70`1=pfizG8Ar83!OiX}D z@qa&)vYCJ1Ao+#(C0O}!(86mLc?*xWuO+ESs+72z+jkY`V1asNm6Ak_QU!CVr})GD zxB%HYFtMncl^(u#L1T{VldVt&Npq}+eLg*BL`z9_R30QNtE1gcgxu3;z@deLH5%kJ z(tD#^d*uZ}<oA3{ANP2fvsznP6c{s|(HpA+jb;fwgbo&8eX$P1>=X97| z!-$8V1o=BY8f1;9*m~Itjk~&3p@Jrbhn zMuSRe#!BS}@en>o0>Mga{EMq^76@kL6@3k6o%J>`m|-$@*NkklbdW|EAh5-v;W$hK zZ_<&6i#$4J-mAfuo#qOldUpjXKD!<<#hk)B5a9n0K5$NKv`m{xf8Qw# zF$nQN9X3y(s|QRFHJMZ{=b2l9_&!z|(C>R*wc8js2S&PU%{>7eQsmS$Yfo;^bAOt- z3xb1paoXPEN@?LI6JVtHBQV`3givic{*+w8Rt`zH1K_gM+~&a;I6RX0JzHWKi`hm2 zv(1GNKyFUd4?C}b2@7K50|QG-7GJ6~v-%rgJnB{RWbap+B5>L8h3mZ3yl6(Qy_oLL;JVC0Sxu)*YES%FtUt5l;r`RGz0C`y0S3<%Jcja zvNmBE-Zw2WFN7~G)Xq=Pm8Av>Yv)VCTDo)VA6gz({d14JhzgBZSyugHyjYkb55ifP zlotkG>ua?G-dX`?*|izI6B3|1yM|7dP}M6?Q_a-B53}b=2F#BGo_{rKt`q4 z@qKL}pI|wGVe!0>$VZNVk0coxs^nW?&CB*-W-X3gZ)6VP#5-3(CK@Lq$%Gn^MuL~w zWU8!1)A=QMm6w{w#iD!Vc2jx-O{8vKKxZhrq^pmF>EG5Pw&VL_!mQ5dlaDud>s<&h zL)H}Dx!9+eqc9f_0hial^supACql^z66~#B>|%joIbw|FG?x^fkPh~KV=z4a0>H=e zT&n~r1nb8gMY~80F$XP_J(+H(G81rV5B234K-4EpQi(8#HKIOZKHDwS6ZE^yN`?C5 zd_WnPOU*5%8w?aVGHiC@Y$-^=IQsO=xy`F@d}qK0!k3+9feQ@rArB2kPe}j z1f++O(0lpj2Hh9m_nSW!_xFQ4bLXBpz_2kiIfaX7J zbG!?^O5VikN`&@C>yEyvBWPPt4RM-OFioDT&@VkcmFF+HJuE}^lzFW*4#O-x;g0eY z9iF1u`qaPjOy;fD@2@JwQGW!nF;-K-8pXb09R9-fbYOGqIYC@Q^@`mN{ zv{bWw4{7lf7bUX(?sQ6t8(uXOG+kYNQg2yt7ooPv=qH3A1bpiF7O?>oEd4q~dsyj? z_JL#ID(G_zL%x4QgI5E1f-h941bY@uQb826c=TvMcK5bPpzgg=RQx23uejumRY2=_ zjgE(a-n?XpukvKYyhIt86$>P2%rWIk;jFHJ9r-zu(A*HNX?bv;St%q@uk_`Z6LNKI zX?ygruIL&+$=ACNRcobuOFZ5Fr*8x>@zlZn>weZmV8oqU-&OQXYq5C$&7uklWc=rq zLvYb1%R#{7cp3&=fPY8SoE4Y01iRBDKUHqI3%PCb1x{nk`3w6tBv#N=<3dn;0(&w) zQh`rBp#;)wj(`pZT!*ofdWHzdahw|iI4BsgYj4llt8wlbN;7Jdnj@o`snnY8yMKRS zs-rq@;4}vRkozRhVc*~=RuiBT9yV-dIlC;;fU_a(J$e(JA@$@I4MV!s&f^@ z8n^Ce^!6Q8L*x^0pN6W_pJ%wh2uL5DW#A)QXwJ;U0E981Zj_cDj&Lsb@N$_+gjDX) zmtz2tv z+9L_iN|Z&4dFte(xYP*3n7+vMoc$iiP5gJ{W0%rC={=YmS^<|QGX4`< zroNW%xE+&BD#N(u4L;QF!93R63+w8AaL~6Cm!dEuqk4y`nnKYTQzPmas1qxi#bRiw zerw)ELr5szInqaH&&Rd6mDoQ8kG1oGPqq&U$_N#^Ykm6r41%SbtBUxsFDb?Hw#;A8 zFWbIXiJ2((_1(l)n9|J1U^YY=_x5${-+JMK8Csbq;#S;!V6@rHfVs}ttHHqOU8K#tnHD}*6lZiabM^4jY_`4rO$pb< zE-L&73{L@qvHhdUMK2{%#66`(`c%#{MrH0QRw=P85G@NziwhqIl6)25RL~Y>_ay8$ z7Ei~45cVI|r+>@sC!>=&_GADB{VzL7e%pRzD$yoowG-i{jHlJVr&uYRYdyoPWDYj_ z+6D=*WcKJiEy=I5Tu9Yndrsb{#W#1FrG)XuZjpo4V64H<=1^S2W*6m z(p+2GwA1QkbGRU1zG`^s1DM!9)N1XyZy+KvoI)f-z0Fsu!gCYw<2}5j-wSUv9mKR0 zQf+~w80E={DH=fD{e*+B+yvF~M`nuY;hZbx6?2&xB~wR|D;0kp6<`^2r%oP%L%ihXrk6;c>Mn+d37hrE!#j zZimlh9tB@bDDM9;i+>?;%DUc(%{~y}saV`nMnmL|hmp6rPZzeg34)e-HSYMDKSQ0` zK6#9$l;>-Yj1iAuBD$*{JG{Gii#l^w6D`1(^U~NL*KCoK1gZ=BKryVFw5QywjTA-D zqmv3ApM00!eH{%B<8y^VbQ+pp?!i6Lf2jFn;+R4z?`2UwpmmJyyZGCwnf*!@ zeZ~zMDo|$q*+TPb&+fq%w-iv7b6HUBMADWDu6Rz&P+~7R1cL&Q_C`w~%~tJ>?5FKC z4AbYgtE*?qMbrWB6GdRAY~8CIoLHjKg5*wU7j?1ZJ>WwBJ4WmJ^|RNqx3a=8u`D(B z=r{()MLjDw;u~`f0pBAeSh*`Nzz?~{UK@)$tZ72w;7XsM^an=P#4WBsWtKoAS~H06fm%R^jx?$%oszf-}|`cl*s$~j z#dxH(xiM&A0>=*~*AC!0Si@uDOi!5x8{k3(lFOJC*ENY^cz7v&&DKXXaCaNSR1o(B z5QIpqRZG1FHJwKaA4adB^u0&(5H9Z0cA#>A(o`WPeh*8c2V|5GdUzb>@W5kRuu?c} z6=#7yC}xa}Dmid;+(9;CE_F0TBot0|uUn00Q8`)xg{>2~d8_aFsuCP0;sS1t__=%_ zj>-Dy_xWkI15#5U`>gt0E;7~hX_4<(QC0<%at9SYI#AExEo+7miQWCU<-{<8u$9RE zS7AoR%Jtd#5r0Qvqz2Nh^Lgm9IY|}$a@9ic>&$M+w$qhG)p=PPyiShCQ+1*6_gO^gjTw*cmP&ya8 zof*0yBt4OM6?;sMRnDgepGKJg`mUe_lX5yGZ#m2ezE7lw?}<))o8VKOFP-H=aV3Rk zi<^&IQf+-wgnu55yI8V3fU6+)Ed}Ype@B&XuL1LB08I~rbD%4z3qHTfs7o)ULDF?U zo(*mCK+!s=;sp&&$qJl?;PmQaTU>UASU-UFBXUfhZ03Xe;6*+jeef+%e&M~+JAjxY znRj$Pl!P<1qw&iTV8IXE=_(;TU~Q$IBT1hlSpn3X@^TD`@Sf$c+LKXAIHS%tG!2yiUVHv5?}?f{@qW zUY)U(=vlK5mak-%+V$cuC|5)dG%gtqkxGXbXGldWx^C=G4cDUO@xWA4@PXZd>FcT4 zc^XQ0E5SblE;HjCZ0Z5CI>_^}3R_$_2_YcqhYngU&Dvk`C+Q z45^q!H;TPMwgS^xRs@k#+_W4@2F8^kj ztR}e01BBYgR#5L43`mK*#TiKJTuWTWMei6>Q3-`n1Rw^&vJTWmkLhbI%)i!2`}PSm z%Cba`bM{2z)jmN2i_-Ydlb^jr^$NK;qTa!!0SXPS;hIFy)o*75%ntm{;y2R6EA2+E zix?;XaKxe$87C=Ov=d0AwSA^7$iI?`Se#;ReYiLOetph!hj%;V==~s7HNblAKTX;F zjt~Y6qj4|^tbb|(i2?bU97Hws%)Qw6@eB_1Kgrg)l>~aZm*l@M1aH~_>cv2x(*bXq zZXY7Ly}PY+5$x-K7JZ9rNI$!WY+sP&faoxC^R+yxQ@E0pFAi=Y2W5b9e}M)KZ!Q+Y zvsC`47!Ujc1`UVEQ9xifR9OFf4nz+nG;SKZ|+S zLV6cucZEBh*b+3LF0&sirZzKindu4{>*3fQ4qNs#nQp^Vd-HPt-n`B0uB?im1{Hd> z!mO=RbBCJyh$iR|)lSG?D#$plB*{eO2P)4HjB1(L6<@R=2=I5$Q#p>wm{40&P?Nm}V%+F;%o9gQ--fA#Q9Rlvs3Ml-# z-P0|((?U}1;^L4ph;smCC6%$xJ|lmM5?5*jQwzm!futGJ9-S+`M&XjPyidNX%d~eqHUOZe?!qQB~L>pq?%1px3lT zWciToa$4Xu<5mL;Z$6ag?nqIG(!I3Bp*uo}{IOkUsP4z^WKB17$oijoP<>t4eW7aH zjA3a3$|OEFb*NP!!>ka?oo8;50`DI?oRqYkiX=R6hb!XEmC|nUH-!%u!ymh;k&+M> zn?8VvWU$57o3T`m3et=*bJjX6hLU}K|9mwOY#^@{X3U=Bpmdq!`cRRPe016O>PhE3 zBD0U)-_JjiKD;5)4$L^Z2pzh6!*w(3OjKJs)5|fO4cVs2L-sMv)-@k62qh(sDn|uJ zAD&{gkV)42yFV5Qe&{~dUbW58F;BGzp&>W+m9PC$wr5pWrl4WkaN*>$841otk*o<3ETT$seC(Vg zx+e>5$oICOA1^DetSIvxl~YI3F;An+2F+J0+Z1TH@7VT;pQq}9&>8hWoxa)QBZ=p+ z`~FA$)n{8;B!gbb&k_*^U1&5VpO`ZtF3u1hOdRr_oVoA4F?%K+8~&tSKD=Cn1uej$ z8l9-TZ-~@AJj1n0P!;5;ltH1Db>DuQUmpsQ#=IiqwEeA)@Lp;98aZuv!uBYcGq}M* z>>+LeBGZWT0#2l43~0{MGy(9$S$~a^WZ^PXOx~)3#jb$CVZIg_C82sd*z!*5=|!{$6GY;lx6;*3=G@Pxq*Yls9))-U^_bsc70kYjr)cOOOcTJxbMP{ zYY*MjQd~DyYV*anEfvnOd3SO15XCO)|Bruc-IT|iB_Ms;7}(KPQd{*t|JaKXkZ8L9Kl?K7#kMi`Wc zbJ;b97|~Gi%dL2eO!^8?kTtN{UonKOSjed2o1S<_il-huD-K@3@iwAX!kl>oF1%}` z8fgmO-3{pc{#tDYx|XCB+$_fg`eqgD@>!;b)Mf_AA9#ZHeGz1Zh4xs$fnqqgTn< z9u6WClaKRo`NBPX6aqnJSGG(*g~qoB&@l60^ZwFQcY}!mkD3}HBD>WUdtQR*%h<>u z$hkbp@qvssQ=`}3kQQ{7GCABy*?mFSe-1jd!4dd5gq^V7exE?|&oz)ZFXlcL6gJL7 z&19&?%zz$?z+6A*VS?L;3FnUG0ONlTAE6z|kO6ULfocJ$1N|ATgP!R?bxvf8ys_Kn zCk4+kipy$y&&RKcxsMJnda}HhZ(8EunvE5TApD#V{JhxOYn3gzSQNIL=--Y``~$?T zN)2#(U+=?r^e=RtUIp+4xpPWzq^jkU@USyLAHoDK@jV0j{4C*%=}@)R&U?VqAm)D% zxXT9xA*27uRv+s^Xo3P94qX5_d2?+SZ4Lm8=f`-)Ug(64n8dC%EWV?1bS5Jpk^j#tMmQ3MK9z7y0(C;z<2$foxrs4Q6sUgj z&dC`6`;{aPRQ){=U=mpNcfIVVFKm;$ z%_uSb`>2o~dnzOe-V`uE6>g8Fu`a8D)=d*9A8Z}rdvQeDf1ds9YfhP@+wH(|9>C;o zr}w*)^lm3GPtBm=^(6=@lc^j*maq4n@%8JXyE!D3UtAXjnH(5E9wbpN$7#Z^`VI~i zZ*h=7#2*i?GU+vB_IeU1&RG9l^`DF|j1pZFILy)ph0AkPmiBn0_B+-E5+hyJ-9o7F z36><1g1`YnF=bY{VR{i?Hq@q1U=t;M=QmL6ng-(Dj|fn1AR+1X`TOsU3qfJHGLyY} zj)k(Vm|V=wACrO~pT9iN&giM!oTl1>D@Jmk-Oyy=r60Npv4WPk5VLh~0~*Y``HV|x zCNWci_ENs@OMsNRG49Fe-eQ^-tYIcwq!EE&tqOxg?O7B%y-d-M;E2M4F`YfgCG zmlhXe$y{M7Ma1hxTlvDJA25RY(j!&l+^4dHT-FP`mzbUFUPJUZ$@xL`Qvnh>L7?xO z(v~USJ~lygbC7gZ<+%cxL5Nioc!`RT{eoQ~LSCw<>%+!9K<<{wcs*L(LyoPz{E5x# ztQc}ypX7{s#<)L1?pjmj`XJA`r}wG8u{#(cVPHRY;^BJ(kKPE4p{yV-)-mAv(*~#s ziKZHVhLAV#Vbk;vri5fweKkvy&uOyk^@G;i)3!zqrLYAjQDg;AP87$ZJc0d64@~9pAeDBZ*C0sy;X-C@WUEX*9 zkUSUexKacz#+({DV7ge&$}*@}EKsJ{vj44rrUwpPss!$KfqWy_U(J0KIUfa=0fhx^ zlx*PU-csj+FD)QCrku^D+?8g<90Y!Ak8XFSec!o`%;CT}uN3{#30`%l3oEn<{CCh$ zs$Keo>KiAmi|E2!%FXPi*-Lmr9y!xr0gH zqMYh#qiNZv?ajKDz2M+DaKBHg>gpEx{kAO#Zaq%=Mn6CCb9n%hJqcMUV*x>Il*~hM z7D3fF6noBqU3t)K8L%hD7zGZI=#?Bu)mSjZK#^CHOYN}`jX>k`kXvGMqL>&J2Nb0g z*L`nwX)ly+!?AbHKGS*Isi0-z$2{Q2EhPism}Ene$I?EQ_=vB6%MA-t=c|?3_bm!36^BJQR{)wv z4W*@pLp+2OSio2Ssb>Hp19O3gz(tLPqu;yK`OOcDNL(-7%X`qs0QihCB0P3V*%jc{ z!6Rz*Ru(?Tel|Bf3|YV3>uP7Xf2en zg;iA!>4+x1oa~mbydVZw1w@;100r!;?`itu+0R-4oAE{}s8K7M2kkmp%99qE12*Kx zc&6QH!0hD_ID3XFx5%aW!`pHDdbxJbCCD1r-1nPPE4dZl5m zkE#995?~8a2EhVXkmtWBvVV2B!HdO<@58bN5HG;sE0C?IilUCuYT9~z=oz{h=>lys z>QBE_hN9M2R|Mcdv&4NH;!KB_MiZS}-Em+6R07>>o@DOv{UYrAc#w+gbZ*G|PP3(> zRLp%=Y-lho@do4tgK6@^G<5K1Tcs4sd20Z|v!9{{tVzc7 zN1o{^#eFYnA1~-Qp;jrWvj~-|giqdM&oMkaV{b6OsmvCkiz%=q+4;{KS!A^gL-)kV zWhsPv!SS!g3*j4!ZRvF@EMsKgt(1M?nH8x=Un&fv!F;}@ryj^PI7}?p7&y^pUVR;( z>Y!|>slJS&r6G8!FjjAnu>va$ZXu}&@J@mrYZZtu$u4rumYTG6#9nIFp~@KgpcU4! z3UGujPj2po_ECuE94(NKv%q@C8i%t=o}~ih8QjMx!JQt;^Yq)Xm`glQK*A0x&bZKe zMdrZ|e5dGdI}>nrA0kr#x!^zAUGn@&ib5^nOAVh#%wMbj{*-#w|b`N$bD5 zrl^@v1aH@pobx@M8D75vEC`BG2uUn?YEMcG|2q?_79hvGo0TD*8EF?~4drBI+JIND ziI3WGj<;m3b0K9(dNj7im@{AWwliCGQfJ=S9Eke zL~r5`-zPC+fKL{5BFJ(zLM&3(nAx9F8YepM-q~~)zO%Ii9B^Z9LvZGPj+OVtl3#qx zKp=%!1$U&qt}ClABhoW6pgoN7Z?#>Q2dnd08%j`OF`YK7lF;oz0EdH+GSFu6c|)vr zoN6f?!^C5Dx31R;kJ$PQ-&m(ikq0H1$yzDjeBDS9-O)l==ZrGnW`L$81|vY569{+W z#@0ac)R+oV(n!lE`9Z)x2Cs$uVmXqqQ1$~VCixtTe{(jZDGC)t>D%v(YADIIM1n${ zV!4S*z`n(znkf2ZqWBlFc!1BLtYDcGX9Ofl#oQ-3$2K+ygZrTNBs-^QdrV&%9MLyn zm>p8U=tW&uUUe7?4=V&8K11HdP`W z%%O}C)CvL{y*(J&<|PQSNAQ9u zx&{d8m1{|CrVo$uwv?_wxhRn9_8Qsl`W)4%!e+o%eY!zeE+n&ShYyoUrQhKB6oIsG zE$pG|bD98j*qv|G>(VZMS!e=;QQ*`5`#x~r1!~F(1gM`ahzgg`AS;eQMyZ)5>kyke z`_EEs08T6)ybc6f{bKx*3%wRboAie;)*47U;2i!F(Ki@Tnc*VcY#r-vDjlaTntWkW z9*|r>;y_BGK%Ox^5c6j?yPSu&bP9%P#S+SsIkN(U0g#`@7}$MEsb^5q`6+h5LU-zR z7Nd-8Cm2{Upt6wLXsfVrd&>B#VJGk|F3bcYKq*3J3L!dbpfa1Jz~m08o+&$VPiLAC z7GVSno~z!2x```N=jrYTFoN>+db`7-#+xyl`RyP ze*2SfMK-|esiYVwkj#i@BIVkkH1=Tv2PR%eQuT}wIZ!tH^lB=inRb^rNS&;7fRD6|1R%^K2^Q-7JrB0Z z4ikUzCw#j^!ITZ`le-m|Gdwd5)@#1tx=h3tT+cN19f(jzxC}AfPCku+6+8(^|3R~F zX^8EuR);!GfJDJ!;v_+K;=6{n@n%1UEjtOaCaGZ~z<&<#wz1hbH$u7|rm7RVN(WZ; zs5Pa2hZW<3M@EEl*^55e>wSXapBmZ^dGG10D#c6%ZdX_Nn0+?C@|TM@E;ha=+{IFL z0v^lV5^SOW=+ z3sZ|t5dU%|LA(gQ(c#M3V4wsSC=4?iG#u&HISPtgY=d@whsse7PeH-jpg|EAc5rj- z#>PL)y}edX6aeqQY9z0v$qoaR#$i!`2PsVs6ZnM0x#n}4SVQkNmSI@v+NXjH_DXYU z@``J%VEs#Kyti!j-Vfz#K<75#9p;gB5{BV~kXycDkTU6C%tex3)P1(%GFfkf6 zEyY4`Ex6z`KfOojpcnxW*XnoJOni|{+okj@t31fZ0a<4O`18;I-dfOV$eVU&) z^pw@HKVS+SFY~!43S#YNWF)v3W?@&D&nwQK8IFDQcvp8KY8i1q^OP zVE+^(G@+UFl%X9|V-Q+|%o?{OZ46G~|m+*>ZvaezLmwp2=eT#vdeXIl~f zR^4jPk1se5@N_ETBTihFL$=FIG>b*3`pz7BPq)Ei4i)boE*q4m(-`R@2p0F@YVFzy zi&eHdpn36e#oEV`#U(&UWkO<=k6Y$qm-QdfDm{WkUTh>4Pw-=XfcgV*4DhdL zpIUjkt|zh#tFB}+2mx7DcDZ^Q|#Wr|Eyq#OhoXZ3(ss_l9HE0zy0{SZs4>G(dQAz1~;veHhrhP5!vnq%h>(#GoNCo9>bMuA|mFody5FVAV-|Cy->|uyUPK7>Idqc4% zC(R3GHGU4c$7`?JAg2K`=xGkRWLzPjUry9T1OIls2eP>t_qXmrNynN_B@w$;PFx~A z-f-L#&^(m_nNJEQ<>+A@cR;c`nq~i^OZ_ni90{WTVsrbz$S7O$0FW(Ky2!0GdIQY7 zo%5(0D>o06M!u~QZy+KB!^x-(nCd%##RPDbfcGRLx*J# z0IgOO$vXPCELX%C*iNrxv60R2!hL0j*&!A-^cjKon4WCWWU!rCzXt1j6@X zb$o=oV>?eilY}+1Jm*PJNgIv4YrC|Tu@n;fixumPVr1S@l_Qph&@9yeJj&Az(G#D~ zp9ShYa;`8fTR;%f(9I!9#_uarufO3rQPl%+zB?&6SG5`40Vzq>k(?otRTW?*p`DC= z22OpAdm~7BDV@^CzsYl&ILi?S4ZsPo<7DDzPVMDB@BrpL5_E0jBh22Z+a)p%0agRZ z9{v~(1<)@O#N8Kcq{WL}$o<#qauQtmL&sSYd6xv4JA$L<9nctE+0 zl$3~|lP5k(1m0&D)E3%D2u1*mSs=2&tkKdO?LC`-B|AzASJfHA$griXqjq2!f(a!Z z<%F)Dp-N9Do4!89v|SzGM5f6htu^YRLG|4!4!OEl=_w<#^LjfUk)b;rX>IzsT!hlB z`;g5|N+D(VVEVd&eX{=u4Nu()oOy%bD%}y}`<9ldGC%8~)&zJ2knH)FRf>%Dk3vz% z9=C;^$_pV@44-yPG(%c;CQ2jNiY%_omDF7JtLeTw_-?r@7bP}&a6*CbO(FO)t*fqZqkiG%_ z<3&qRv&`V=FMFoIG5RSbAVAaYX{&H^O^7bJE+bw9rs(n+AHlm}wl}GxRax zIx>a6mYE&*aMW6hw=eoea-l4LyX%H~vA|o+YlfH`X>-Q)vdia)QH}XL1%>b+`E^m^ zJNkEj++QQ)n)t-R{}W>z?ukSBRW%89RkKpT=mCSvt;>XJ`)|^;=#Mu(jSpQV#zeIR zsp*%RwSDZK*|>~$72S{-zn-ChQ72#DX(-?4^#NKUvi@uv(oBXyO>(+0AFaf$VcFSrz+zbpm*csvR|!9YzmS&X@Im&Ke^Ja! zA;nCO;?X}|7)4vg?43~%G&JCy(ZgPs6!gdvetR*L*qyZai0uOtzO8~8m4~)2a5+=U z38`3tuzwDL^CT*pQ#|;2wAniE^*3HOcw(aD%Pnk{hFu5qIo6TUG-Xe}W=AIoM)NMK zW?XuGb=t*Cwe0E5`UBI$o%#2_ExO?*l8H7%k-zckL|VoG9u>1v>Tq>JLv!QKvmcF|wKyLit&5wo4 z`QTRuaA;}FYqWut>>rfcid$mkzx3#Xhdpb&$H}|%D9_s~`mwoN@u*PrJSO6VA^gok zGcjtuuxkJZkC`7*w}_oDd~Vut2@mH+ezLJ9>hu zcjwgZ+|LDd@+Ua?WQ-X&PY*A|dvL4A@6koSjIHx*Q!uaIH@9>f z4aG5qUczFFm2(Meg!FT?s{@$DQGYZ@<^M9CHDWqDN1mqh471=X-HS&N>jsRKc?G7m z$3qJeQ2E}>p{uzH`jk;NQa1;R?`VuQPs;gxZWbds2MOdtbCB#-Y3i1mX_t!P9{Fdz z4(qVYt>L7#4q=JUOwyp4*VGf%Q(tA|`pRyoclET7qi7z7lIYNmRwHf_+lhEF;3>C! zT*n=*{K}<>NUOkAE@t&&fUIfjIiH*PFAD|#6KYu<9myMa-X6z|7XWg2`;W5v@wzQF z;)8>HYJHBfJT_Ea4?EiZUDLA+8m<{Lg}$~6)`rEN8>RP&e?t!wK6?_%?t!BArW_ju zh1V_fG~`e9x#LY}<3IeB$c_*D+u$*#F{XUu0X1y{Uv!;DN$LZ$Mz)N<*odL4$A}Rp zHP2vTWl#BytWb#D$G7b_Kl$!KMACm2v%6qibnu?xHSQ8L&5=>{*t&h4FX)_IXxO@4 zHI=QcrP%IlBKDv*EqJCr#g^YyZHbW<6^n^1=r5~le55ePQzXT=aNe!u@IxM1aMab6JanXN z-faaH9FOpaYNz*WPL_six);Nma^~OMF}V`uk$UxXl;k6Ww>bf^X5MR6tbN3l9B5Zz zhnpL9T~u^?sD5guARtpz`4Nxm12iGw9{Vb9{NH>S)qWufETXcYF4x=iGKA>AVTREo?>!R z&f_w`Se0s=GWSdqNN-@(YUiUBB&<`27)7(~rM85+pOwu=%wOR7%EcTWv!g3D&+m>o8%8#*qj4$LmkU+z(vDgdH&$HW zaOwHB{yZLc9r}B-2oI(=&_5o&Qh1{CR8b{9)h*<4nxZ}s2W3%}JQ;O)cOlh6`Sm=L zM-TJi4Y`WuI+ePC#JAmJSWFVZ&d$<%4d>s>vfB4|I$%5{`*2if!-w>K{mnm zi`FHc8wA(n|JmbPLAjbmMA1;(Jktx-OvUf6lQkXN=4F3ldp3SM;jJ13mls|fsykJx zhbgp8UPp5zoEM&8g6fWvmaao+I_#E;lIuEe@wXi94iOyBehpdk%lE#EIl>q5Is07a zYNpX*^jdEPk=&wR^kW58+=>~4U33n_XlnYQEfox8hBwvEe;Fc) z{;hEnlIDLFQ#jh9M5p>jNa{)kwhSff_36R+2jfhRaoq6>Ww+HU;qu8h@LZ^x(Q`Pa z2GiT^vnA9$Zow%7IG%PEz5!bDM@o!it*p_B*tBee26QrbA0FZgy#J+g3RpNXA`7v?o&FZd#RklgtG70{Gk~2l2TrO0{eS+ z=HFU0HEW79vmwLoLVa^+(1-+sS^c{(O`VZqo*5M!)6K7Abdf6zgtazdNW8L8i>3;H z0=0Qg*~1{?+NKKet!a4EdSx$-UEGwdslrgoXSOS)te0$gX(Oas$Z~&K6427C-&{5- zuGX!yD)8WVVAm8b3JthA(j2VF+gbR-A(!IW_Sa`nmJ4>1D|}(^L*xFpvgFi%7T+%~ zc8qwM$05MN4n8Nfd%y*F87S|UTU{1%357T2>M@}5;S!mg5?XDtG&SJv1UpQxRrBV; z4s&U)u>vjDe5l+S zn!20pQ2(auEySbwf?Mr=qo@O14u8WGq;G3(5Yn$F+xpwwMkms{U@$kG>lQ0% z`b0y=4^yr=ZL+i@oSX|-OqI_)-qRJT>WdU2`WfJ2EZskhG4{UL;HCnt>Z0Gfm{e#5 ziOpvuB@Kg)E&%#>YSr>&D}Ik$=<19Kkp>oZ66kxrm)1(JDeSsaRj6^dpvwg)VZLK&JI{3E0>%*SoBc3xkznyKS5McliSmrQ|B=U& z{#oU$u(rxqWYy1&cZZHet4Xxo^?@GL((#eL9F=p2^60}tB>nQ{Ld_oT#LXG^g@H1o zS*GithW&kIcmb{~`MJ!c{=yYe9dq>E|DIvA9HyKvf1A$#uZn1^ zn0)@wg}Dt<=l`hxZ;sF(TIti&FyYP=UZLPygsHk=wsgz$>7+RE zNGZVKRBpUGD-1=y=NBskq76XRutIw_6*$-`6fTqkAJ5N*O0q|6Oc&1Mc0#4Ex%%`FBC+r@j-4aE*46Tg)vR#zTQlzeD8VVx)fT$cm2-Mr9LDMC#Mraf^i4()>B;u2ybvN@|$` zvRGnxn-Q}A2~5B)ix+zDQPb93ZImrHfIU35H|=)QW1wQUqxR6v_WGe%yswp2i@ldM zjG84Fjxk+lE3#uMb_2)*8CrwBKTTapJARJoe>Xi@Kz#KfO{V=jf$!L3u+TOa@1aX& zi}?6C-zl(J!1^%%kQD!b*)#86z-7*D_`=w4R<)KD&^Gn9T8u`T%w!F=v&fOJ{zn$lycYi<<7Oq@1Q76hIal` zd<6?0dtFOW?BvD#zj(uK>cA|n%vR)yYsmkS8`!gC;K*!dKK3O7p$bj1!t6BH`Z2%l ztv~b}tbWQm)y{MH?I2Ok_^6eWL_~%r{Y8&!r+S1GVixTz@A-y77Fp~F&V4uyQoH2y zE+5VO4vq=taEv16WwYYTYCaE=I!c%L@nxkxIQYTuwBFdufY)epQP^(^h2ky+biHLy zjIQaM=0O)=#f}u8|9EiQpj(^na`x@g+Opqa$XaT3m)o3D0uv;mOcMO@QL$I1PZC2l z7YXV2`Py7^d|txqG`Y^5tjvJUbn}WRcta7gZ-sw>brf+A&!x0~i z)f<7NC%je=l6}9OIktF4YRwLkt$Ra1&T56gP4BzvphW5ZC+l{jrxEZvmn-K^?yF;T zfQNe@v5Gn&ku~jc2+tgurK)oZM6+^F2A_T*{wrlq_DczJQQTUbyY3~|Hl+%!b>>NoD@l^q4jp)` zW%LMjbirU*vfu!@L6^ixdYBU{j!nbfAiZTyH}Q==@7wd|g&W&!n_aL1`b`Jj|Ieq_ zMuk=K4dBixtXmOjyR-ewirA5bf;Yr2TV|wa6R&g^rm=aNg6Yp3+Ke@}Whi!lJu?mO zs1sEHs@O`yg5po_Z)GNf^MjfJ0-bz#J7U;L>aS)xmRrka|7&T4X@RQLSLpMACsCXj zqJI2|carSn2Jw7Lj$&h&kIy ze%bp0Mx(3Czm(b~^lP|I7~IaSTMVi^xwUuW(7hnJ`FrZZLuJXbDw@=tW`(}w(J`uv^4O*`xM>ryDh{L}bFt8Aws8a8GqGgq zWAXHfl47S-<9Gh^VBB{0anF2VjkXMwwZeX=PZBT*cK=Xn={_PnR@ zB1J8X{H|}Rgy-0}{(IeY5CSOs18{s5X`)2L+boc0zR2uX~qZe8Z zodjf`f>K}01?H^zh&xRniu{`A<}OnC-3TlyqHW!n{UtGgQj5bMU*zPosD%T0>tBb1 zxcWdvU+gNALI|APswOIW4`{~4g+?Q{bYCRl*GkWy506+rKC(;! z>7NeavpABCb10`+z&;g@#`{z#PkR=3UkUw?pm=@b3|N6S=TuQ~!N&Y`%R;!4pD<4} zzM@jSNn(tocz;<)gB5^Kdoj41W_e2G2BSF^_h)z}$^27ImX?;+(;5P|hPcQhy>n5b z`_E1^e=B%=b^T6jzfgEPC-fA4x*vwKP;bGUrln?wEgGP>`r;a7o z?E7M%B>ZJ_#Ygl|CXV!nN0;F6u^!A~Fj$sgp0@&)@bwi4o5n(hN3j|eJviGQfXEu4 z!pZ~(eCj>;qf_|VZmMnJqEug6F&c}j_d5iW9FS-AwLeU(?Z*Oi{~&J9NkNYo5%Wa! z69(rV9{BQtP=A(s3wH1w*sbWcH9Je#LUzw=Xt)VM_5V>N7frv?VWVsk-2zhVh_uR| z{>I+dT6^cW^}Zq1lc?yp1OCqL^G)wTx^p)rGX83NtLITFb`8I8dZ(w4krB74arnp} z&L29B`dqW*H1^(j#N+PO+r&TkSZlM1k*mjntN0gAclb$!edWcwhbRN7wld)KU|GgmepDe}5-f6%c@UPNkhYkAQ<{?e&WAp%!8-2}gH zM%BQZsmZX3qy}yJ*dGw{V|nu(!n*m-VEW%`Im?Ny}oCLRb3YX#LBP|Wwgbq=b1lb2-f+8})s z$6^VDI#suWuBmp~=bk=;XBuN;Ih(g(z&G4E8XPMK0R5(El-CE;AC2;Tbs#|u8gC9` z4Ej4)hc-MydqGfL@bE5Bn3BZPeB^EAF5m0iR%jK{Jc_#uA9_x`VH1Ob)LD|PKeEDS z9=U=|E?8HYKek8S-H`h-dS68VonAgiHi_r0Z3%D7@yVq*kj5~Aj~ehN|DFP;)aDc7 z+vMCN^R?lnfLUVnK=``|kBw0T1=kFA@_V&)IVognIsNCM7K}P=`c+5@gW0cRP|*h_ zIbRvusJyWU5+qba8cP2JdPxAEn}*Whu3ARG)vz~OC5FXwi`83fmsJ1DFTJ&(1mEDX zZWLegRv?CVZ`(w^Oc%BP7&US&$TI5t)vpU`MP?p^aD31^7UD(aOh4MW%E(t_l?&if zWQv6$AGeQTBl?_E`x!T}E2jLhTp4oWLe?@0>b~x7izg4okKh02H&=kKRo=big#{s~ z#KjB`?cC3fm2gC)i}}H1-lF$X!ltyiw(3Ho)m*RR{~U(yR3vi0=&tQ|zRNr5G%>+r zmmDvn^K{Rbn>LLddpao*QEOobtV5Spjc9 zUBv(BJ>1x5=FyLpDb*Y*QFbL@CH>!-I*;&jPGZ$-r@rQOD@*Eq0=f!wqcUsYF`Zj+ zcdq7K|L_7hslWa2;u4gLKKYjGFZd7wZq3^eZ%4o>O|hP zt=d&DUB}nU_h@~ssYl~@LUVM}wG~Ttu6`ZX;)%|=&2Jq(&wZWiVdmakoZ{RQHHqy{ ztcTXljD6+MS~eCySp>hv&KD^Z#0dJ0sITG9ieh##xyS+s z!CNcu2K*L=s1$SaPo<*YW%$x*oJZpSDSVb(c1kc%TN#;|j^^&uujJ5opXrC;XBW;??<-^Q z?B`z0mpVP#5)zRieWHKgqT>(sv^BGj1HDbFJ}TAETiLUD&z&S=_cR#X(hzX(vQr~*t(46!+4EAAX4~?=wx^mG* z_U)(Ha5*Not5kTI9VfqFPya7^xgR*uo^9C>e6Ak(V(-)PV$}%9z!kFh3~bo(8={PN zc48ZgqCUWB$%Sm36(OYKKVwu{uQZ=%dt=Y{ooY;t_eE<JE=ioln$_sa*gs7k_RdNw`CDriOJ(b`OGM}+42h6rmJ)0 z$5~bBPV_tdV6T@!v8yHOO3U`E9i_Eh^uM0Lsy{cs!Y3*&<3Hg0`Q#JnIZykzh^`;= zF)Ym@Qqs5-!pRbPG$y+fC~UE!1Sa*e-pd$6e_oBxQoRCuxEu}8CDyQ$=&@NZad_Ak zm46xq`q(>p=;=Qd?3Z~nj;9qOTNJ@@1*y1lkO&SBUBI4G06FXK_a)go=2$JxDJR^e zTei9kg@wee3g!6!i5m|u%B6~_$G7|O(BVq6HJ2z-;fA^1;kC5DR&pqcI&-r7^J#s@*9l>rgC3&rsj|qP6X9j)>ul1bm-DTAuSG%UgHYC)8N)ud zHHObrfWp36U3c5h^gq7?c4jqdm9C;D-Bn7Mh%rfQULMdxjPoq0FKB{#ciX)!R4!yz zJddl2>o)IXVOeh-Asf2_zv_iwTnulSO~{^;%@>$U*vm0bmX5Ul@8fWVs_OX-x@%oM zpWh_5vqre7{8zp}&A?vFgwGF3WPK4omG>mCz_k0ouKZeh2}HMM=LU~Bf4CW3LIURY zmZ8_=sZq1i=1xSf64f}dc{Zsjn5}$=CWz!&V&>=md?H_cwK71P4l5P8V><&=G8a@D zWhAanbB~;jobwAr3?LAT4jG~WAo*EJ>MP&%#~vC&_|%T4+nSI3pyY}l9cHh|+xfW5 zeE_Te@YH{wfLRp62ij~~D>*JXgwYblw}*O2qL<_ajYS1ybvGmsMpK|N^?S&@QyfPQ z#F6BupA(2)!uXM?pjY$KYI`iVG<0Hi?noi$4}P6`drLAW^Hj0uEyBzGNIQm{A^8q) zC9ibCj3u$d?`NP$|BFoRCw-A3{ur9U#r#vic*jggP7Q-sUjfEmZ_v@pP?TPh_?l|Q+)yw=O z`WZyscaEH5M;#Arx^FO)@MQ2aS6Y+R{nlb%5L{1jYiWQy3acGd;wE^6m=k-n%~BZktvhy1HY2Z^2aMcYuXS ze5{Hq<7CmuXe~$nLbla#ia8gPbG7sJR!8ryo`&-2|2O-8boG{AC3&rKAKqkDawT~s zCXpx=NeEQ048%e0QJe57g&aMcLmQj?MvaMou$PvRLuDV>BiS z+Yxc7ke>+yJRt2Oo?Ibcn`u-F@_b5M-jmW>()7SQ2Z|c@tz8M_aFy^1a6c`0aH+`U%MK7>a3_SG9zNKv`qezXvkbsw58zGZs0+Z0%(n4_l;EI zzf;wk`vL1~SaYMRG+ihXtERml6GR(cHhyB+eWCY`&GVR_*e~FPd3sBRzlK_p24VXM zlxn~o!3GT_0A;3{ysR>{eDCA9K%c+N6DxNrEeMO26+uXu{N@vaWgWVkVz9%n6zglnZ(}2AJ+12aU{%7ugi&T|+;f<>~w>zpI#^h+*4`OXDZ=nTETg`-udy_b~+g{DH zDdl00;HSDWj`FsUUFzy2O^f;(UI89{?e~TS< z_oAlP51hQn*YPVOC-qdht~zpKqOq`_-6I-$lFB^uO)2ny|Cs8_y}L4xt5kqZ2neaq z6krC-(W*twBVCh!p}do@=!A_sC6|hCfy&qquRjgYcMk?i+J$4tSL`<)yqlu%ZLA<; zU++L)`u#fkpglz_n>9R@H)X3MUrtsU4LH` zedIuoXTX&dZ7as&`JfyCim7R4VcYT#y^y;t^h?eP6Jzin<@lOATsf?h<$FzYmRl2f zo{<4xOXdy5i z<0j*v_BeojFk%k1q_aK^RrKsErS&`q?R%$z`W7fTQujgR%IEKq6?cQ5&T}yEp628w zH8qJu%w{HlMN}n@tlBf45iI}?`IDJ+T0SZ3N!9P6q$gFeZ!XV#gmNIBt^dY2(`}DM zg^gdft{U^@$34lYE1g8eR58+sn|q~LR?A{g_2;X}oitlC;D~LhB9_Qz&Fo@LvZW=x zcl<(5Jd@KBiZ88B>pDzS(sXL=v&u8pY-D#rLS-I*qSaS}NFk@2CbFp=XOFuw`oF}4 zS6i8CEvI4=nxotrM{=X@?8zs-|KH+!7(~>1LL3gA}Z?ShuB8aG9YKN{0W& z(gtfl?w&B??-(RRR4fl7I-5O|(=wM4U_g#l?%i+-|BX6ZQ8g`B?X4_Og-&*mSs)5(=YFxVd*g zvykY=M{_ep(E+T;V;Oz08}1r^^CTuFe46X3H>q`EHV1@MmoZ;urAlU&WBp@Y5RP+q z>>N+_Z1@OeQizT-l-@PI7@-CF8-cF%<;B*cp`KPOT4y?XD=zDQ8KOA!Y^fK-t<|#Z&SRWP9C{Vu2XsXanORP{_cOXnzszP73dPxboeudCVer# z2Sm1<;U}w|KfD)o?XG-az2(bD%!sgKc;o@>Pi8uJ`~qP>kjhbcPsP$xPB=ffOeRr2 zD`tgXRCcmOE@P{^-KXThe%1b;hw#sc1}$iIw#d=`>zlSpOJ!cKdlA`lqZ+zF8^AsK z1IYbs49y{$MgT$Lj~xOA{a&j8OqU^PS*GNfCu<`n95S0{)^Ct4$2l^z$PINR19uy! zcR<>A_cAB+USCChjZB6zyr(;oqA{UZw9or|^Q>L8SD{}9wn6)H&2j2cx4Noe(sBO= z0O)2Pvea|Oa)})wb?LLemiC%S|1YHLG#e%CsD9rIdGRdIFJuB$%H;8E#}Q9mtUH$F zg*KG@zVIEQJmNcY*c5sxBpJ&O#&H)QgsE}k+b=NIC6}D$PH;eF zx@&6t-KzdE_8_%Jct(Q?Il|56_S<Pbxp)yc3Me74%!q`rdx?^;&P0sTc?8DUS?VrDzeoh5n2w{Ygx`b~2GuszUMOqiQD zJZrxq^bvOU@p20WJ9wFKOc69N6-6FC;E20nuJpIuS!;%4DfOP=e1bQ#`F0rxxP_LiilXD zOPZX^elF+>qB^gq(~kB3&F_bLnoY_!$3VmA?}!0&atu|rpejuw9YoU$be2D9R%?6n zwAT|0zDl7`L+iwa?xAgZxmKC{ylc%cr?0f;>Foy|BSY4QJxkN#&gvvNH~1>?3JXfl zH-=T!-c3@5R@_UIfn&^q_lpl8EcRTB??1aE!HAGP88@4&{PaYulxgdW<5Jas3%jpT>w8qYqhDK4kpg3ag}L6n)k!PBkg~ z%Am~an;ebDS=+jy_KjoLUR(zKJHMQyoO>Dp#Y%}2QQb#YcP3wpOp_DR=Bg8QZ-(NbkPV@xMTU zImRJ2Uk~7&5uV3W=3~PKK7-z^%AXrRPpm+m4q1~Cq4eGQ zxv9et4B_2bno2#`%UR3TLX_?5sQ6Mkj=G;Bbt-V!sjg<^K{ED$Q;Mdtw`zz4@B)3R zt2E4NYf|&v9m?pxg&@EeyFcVlTI%bCTB$f@gr0rkE(mRA(2<{Heq1NG+;sx5>m=A> zqSp5<*W&%YLRv#T`w;?5VzQAWivOWvKw@k}-Fhh8K3I{_!#$tlYM*Z6)sK9JZlip1)}x;?E>(cXrSyR>@`|C&ShL zg|Bc7tyOyhOHDCPp613}oWQOn!5)|YQGVLR=rN{EUu4aK!8TO!#NH%7E#26;1hBfabi`1bFY*=rThJ)~ZU_0u8`Dk=liC8Gl*Bx4}GKLC;y z(5mbz!QWq+|DtsP^edCjNma~z1hMVAuk9r-PVBqe?sEcTIyQT4pNU+E+{h+w{9zeo%vGz9LWy;g#z+#13^>jEakuPl_(j) z&~nPz^~DApuVaIqs7BU2{6TyN@e0t2%OM<1&0vhY}VPTTY z)t3Ure~KUBQKm32dfef0`En4qH3U z()b)=5~TGuA%vBGHB)^(PH;7NB5G{w@iGoH>R5+YO_F=tOEnWnO(cuNmVvWb#3#!d zRPL45=2#M^zeSOFX6>+T#pwv~aKZ4ZDAmHf4sh-yirMJ+{rz2$Y{IPih*v+%N+VE3 zLTXP?MIn1blGzpZ!txGcjR&{(R(8+X$7;qp{)qcy>00=QKaLA$(%nB+2M5}}$W-l= zT5%WQkVr^uamB=)a^s;4EN^$F!c!a^9O^9Gu7&%%i_HHjTxt6g+41nF!|=bo4-nM) z#`q5$Vc|KMsB;Jj*~1rF|+RF9Y3`y5-YR)@-- zGvyl@d%@kLfXD1KSARhQR=X!%1$U>?B9{31%;#Ziu%WmGNO+^x;F{^v^X#AZE=Jt%J^3^xSJh1dA z8+`}Ov0m~~r}@HeveC8=it9GzA_Gba7F`-04 zX%a1dE0!x7A!x~<%l~y~*DOQI^HUU`)uaJ32zOk$NLvAD3ue^TCxK0KAR}pe`S{Z8 zEC*s_7tk=gnptb>;_>NO>34)=n^`IsnN&PO)am}tb`JaKbljeiG+_iNi?YMb(I}#r z!oaUE?1vP$dni;8rUEymA=N#3Vh46x;ERD2q7IzJMN@$s7rmi9J>Fwrc9%mBjlu%E z1BWIwi_k-TNLiIpsr$C_ST3G51_!TIVg1Tj?RvY;5m-xJ7$cJH(E-{t_m`KNo956C zdU~KiFNdn-wXG&`l!1W4y2?d}Yn)|BPI98UWo>ZKr1UbJ=N9qcNkW8QQHjN}sj^k2 zY{nYlM9dg2(7UZffjDQ3T{Aqb(l*LyH|Ow zm6n2gAV8`5!H3xE4j5<)3z>|$@4UN|A-v$`KH{YVtJwrgB2HYZeN--c(G9=e0Q!-k|jkYfqlgeQCZP?Y{nA|#-yYlz1!L5*a z?9{aX6aGA!TMhviZ=G|Lu^^_eC7Gv)=zZ560S3&0{t}$;P2w8?dK;O12~=vw7Iy30 z?_SE$m5)?4p8NRdv~8yHjob#S;_u~`t%)l|YT#e9FwoeWw3u|$m73xO7VBjZ?82S)5l7>j5)+0Q`}xAh3xvyt0z@ z8zvzPb5bi`IB$&STMO;n2Gke`j>RfZM&)sE57~b4B2SIE64*iu`7GBhL)4}_$!|%X zd7}K?HuG4qq_&=M0kUSG7e-?xXqky9{%=J8FCy@u++oOnb9DJeHY9v94a8LlP;Q?= zC`e0ein~RyJ@RttQ2XT7r#I{8i5k!ct5o{3i~Wc6HS3DoOb!?c!HUp_E$K^qDJ zS~z1s5&t0~UcGK4T=z8=5+;<%Jf~n}0I?qJUuGHBZnJxikS;quvmPOiLH7ee4S&<| zLR%qH$w_NhRO|(?D!B)hT~A?iyB&Y+v8Vz}oq)><6+k za7$pyu2uAAy7|KQeLJ{a(-Vjp%-^Ha&Tdb=k#=X8*C-=Lw&gf|9k_{gY+d4N1fS-Z zD<3@4AtQ0QF|hV5HX`Ti0|H9(pxBW1ieSa)Ncx+z>B|kcu51ffcUAB`Q7B+)8%iz zlhRfG8a3HR7J!?-#wY^TFpars-c1UyoHMFo&yX)%w(V(b^mbm%3LB}A`5_fkLmC*L z|M&w>^Sa0c%8VX5s1C5lKaFtNoL?UM60L#-+8iXusRhL1794u4mxfjrbQ*K}1pM=4 z7w>O5RM1!Pi7P;VjRtlZd>rFxwRQk`Rkoz#5^r!H_^L@6&+fH!94k=LiYA<>=<2!tF$Yknc&Dn~1lY#*CAOj=7vNnEoF{Y9Yu)83NxQaPzfHTG36EA6SS=VTEdQr*|>m`BVJI z&3kg}y=+TX&|nRptpGUR)G$F{sE0VbNGmb$G(gRsPpA@Bfn^yWj6Xc2yt0Y~&sVI$ zBt_%WH8j++b@aVHcEy1B)5*#jn4uwo&&+;rVlb#a7XdtD5hG3|_rmvP<97q9&rP>u zaO>J&5nHRYOAC+87Lw1*&kRV3dmG|Q)L_nrw3BR8Q`*6Ewi>ee=}bGX63SespXM^N zR&!%Oe|a1jF_Fh>@|r<)9;}j(~s>>KcwZ$=r%Z%%JI! z(PeNxuQwH>{20(sea~ug5~z^)crpMpX(yRmCtSh7E#S zE(wm83Fc4>b1|%4x~9nWzZGe2U};R@3w8UY{%r$FEiG2|f^d$}U_TaYO&a(aO8>~# zJ+?l@4<8XE$Vk467?oNn|0oen2RAdLF?ZxU|5yp5FLtJRey;dpKxxpNRk)r`{#kqA zH>(e50l8np^di(VV&g{(j*p(&0lW6w9;sX`vKJ~c0NhF?WQ%&{vzx9v2C%udz5c65{Ty9>Vi{wL4d&8+AkkbHB zk&HnfoNEx-BG0cuK|1p?yWV9^Z{r)`2Q!_POD&&RA@B{oGIs0QHAs{Zfcxr8gJ4EL zQ^1GlMVVlY7J@dtGc!}WRo@ws8ZJ^gg4Ij|X8V!+JN~x9JuTXyOgr1`?5<6xAg9Zd zH<~t9p!N4JHYM#A)aVNt&DLB&%54$9hn<_r;VS6LkFk)``B22JP%Q|Bc?D90IduGo z@h|(2Xacd>vmCaeI^7j*E0h&Ody_Cn2GG3r;2-iaKXvIaN*Be#Mx7!5gf?pDGTnLf zFH55%CMCBS7(X&X=H__sk`swM4a>kB;(9w#aEki3VfIH{F(B4p{hJ&p&^K`tFFS`o zN2oI&6e6@|xuw7K>_}XeF2lRj1+V?5a}5T^?)z@M__mTiq1sCbGlGwQC{ z&sgA2%qYEXI_3l%Zx??p^4`nG zidiuRxL}YPA8T?~)JU!h`j#<}6`e!{@q?ZAilLfK+So&Uw{ew}SOL8XJ~ZGiO}&8+ zi7Y4rp_P}djrV#2Yyt4j45T7ybZ+na%uMWLbRm=5XZ!KQ(fp3%7X8wtJ-PT3p@Inq zDyop`AboQJD~I-GD%E%|KZJM>IC*#>&J&r5M+f5)PnYIkAjCFU zo*5jnRQ#!d58Yl3tlbYp@o1r06N%+Y=2S&6lOi)%oXvCZ3pO6- z;dCI_gzSmWI?H$agmZIX9D`R1EMWA(7N8jaqS&*){9iN7^(DdLQ_*<*UJ3?XQ&!-+ z*r9Qe`-in|`yTrW1f)Tr2H1gEH06YP7Hd|HCz%K*fCT5-9p(-_2^6Q=+tTBCIbo$h z1*mbMR;KP*f{+qytG^FeBS4l8_Gj4=KH<|KkZ;|8LJ&shii_>mv!knfpsZ^83vzPE zFe(kCxxC$r1Fmp$V6Ry*Ha1B+sCeg_Ud#xxk;&xv?k81z=CvVC9mg z7eODYbg7P6F-Cj8V|s$|56mcMXh>B9ucnqOyKBK+5ILh+{X}K$mQ=PuniV~vc&Lsb z|0a=7!?*T!LHB?n#3iRGlC9ljwKKbUr0!q5P)<&-`LWw?m)`6az-WM5>cUu_F@L=K zu5ru&wr zll#Ed%LnXPKxb?Ahl2a7yUF9;pMrD}cy#|kZS@~J5Ut%c8fl^6y($H{+xzSc$pdHR zlV4C^Y1y^pQq4h7VMcj;-=n-LrqO+eQWLu=$8lRm7VZGFPv3V3DGC$kh;!H|wq#FY zk8Fv+& zFjx;Wn#Jj4M+jX7(8H)o5qQvdPW#sIZcFVdqq!j0-94xnC`UKx_-f>fY}b%Ew6${F z$^_u*016R95SG$^|CA*7uSJ}kF}|v&@Ykmsra#+rD2oC^snADtHJ6)FNG-JZk1L0`}4Uf{WP~) z_VQ=Ng>0a=>5L$`q&T;SDqG!B6ZO*FbwklX6mWg-i`_4#OzlTtU_gqTZBTX< zZa~nwF!pqX`iLLEeDdvFygT|RUt1d6?vn`N^9kT@E35Y5*~)EzjK)cOuE@)kSNN>@ z!t(Mk>?&mB6;3`w;K|fveV&B2!X|H`E`WVm)LJ{xv8r}um8p%#yeCUkW_Cf&3i@hB z{?^!JwzSO-jeDhBRy173;exS3b@QABk~T|6%4vF{Xi-6mVIyH3b+XH!oM%EOlq6`b65x!yBtb@^7o;CE^vqj9D^6T(k(^n3p_iW{EtJ@F&!DkT) zU-a5w&JYB;*hq&_hwPmNE0{BgM5YzlrxSaZ`p6tkI2X|gz@KY+k^6?X*TbCE=MRi7 z?+fWZ9sN`YzPCx=)qCu5r!sr+2~z~6>V=b+gNhYpaYsV^$BJ*g0Buwq>A!5ITkRdy zVCfMc5SY`Fd4^;v=Eng9#S@(4$*Y@FS5->Xn8jed&hHlQ5>92~=~H(6TTv)y-sUzdJWOyYp^r|Cp$=uI1$3vlr$ z`d#PxFsd8?=i|uS+Ipm!Gzo?3d|-st)SaF4MK*y*>;Ag~`-kjQ^|KYWn_fgeil{-N zgI3lS$JuF9)cNt4hP)Ye6)skLOBcHozzcjI>3*Mcm&84%`IJK zUjq!m0x=Q;=?q`glQJhpEggv+O=SpBzQ+a^EEy;ZOHXsVdv4f42^VDz94O$#ok#e1 zXNqiR0`sc3revrdY_Kiwo@A3uX^-j`XC#!-fpo_|V;#|BaJyISuJ#TqE|kLBeR+k# zG=tC@Ys-ne$3sds=%dsaI;}KCw5Jt+0v+v;@z)9TO@llePxDza8R7KC@?5QNXL|=S z94-qLaNNAIBmZ{}i#IZ2!e5Kt^B^I9m9nZ%fAH2|>s9FM!hz!;OIy2jO+B?`uy|>0 zKDh=v;8L5?2?Bk#orh~%Z} z68f4!4JUfyEPl%&MWn}hxuJ(p-zJ=(c_wsrs`t`mQIUtPv}2OmqQ_;*``SDFDo)VC zKz%FbW)_D=e4o@Jg*guw*_d(G1v{e0+%ot+MYP6VD4a|~n5)swom3{;tx(--6Oik( zsK!itKj7uk4CJt{8vRo>=eh+!pru@BK91W73wjV zR7hh5(X5lAsX=?5%@8w?FuoCKpWOuvt@)U{5$#2z60NI+`x8U(dkA$=jtLpA&e7a0 z@Y{X32Qu+%jbVwhV84wGm$9;@mpV?dyN<0vIf6`IzfJl8s3OEE2UL1XLeT~&bPVF4 zLdQiVDQZ8c)2T^rgRUU|17E#_bIgF$cBJJ89v+xuATEY1+nmHj6U|zyJ~!$Vq06XP z)TtdlX@Xz(bgjFy z<$&1bjO|)mD+y%H&C#WGY_^8*D$(h+R=d`X@s@=!Js^J!UK{;7vp`ijQUFd(m>M=Z zwuQ9;*4i^$0hT>2e#Za|U4c2&rHkC4@z>7If>MhbaEdV*3jLq>e?PVJ=6luRojb<< zv@~L3aSJ3k2P-`AYrEd31FDD`eJ%zLw#FQ=IS6(vFgJ6VtOt6)X62YQHv2||Bl{ql ztu~=xz_Yu0y(VcN{~IY};r9T8d#Bx^Y9b*bD^i%9TD~iQsHw#jo6^qFpOo^xlIC|P z_W)^LWVCLV7xK3-bp*GjnA9R?Y{>8trY-=qC_xHXT^k}WZ7W`Wp}^cQNU}gtJ_wxy zl1g$+AU6`>;KEuZeXUCb-KK&yGyn?TJxa25 zRAIvN-$5HQIkk{b-}7)%DW)zZa>P);(lGP^KEykhnewVUkx&O;Eh#B6I1mdG;S|zV zXK1&ktsBZyf4#(|y%C1YE+Ct^PSziUB+EypjvC_Iq=axd9gv_{il>NQ@mU#H|H3?4 z4Myl6G~+pR4LjM+Nri>U9fQ?H(Kkv)WlF6a6B4<$ENOpd_PcJmZAs(%oGgOeb!kzD zJ(^+Y6+cf#HNGF(2Qi86^hsTAw+?HVGaxNjn5gRVB1akeUX{MXw8ezf{WOPge{KCB z(pLPYNsK{zG{Bcp&5;fx(MCG9guz&7mjFzaVL3Sg#=y+i3oR|SuuLFse;ySGP!vFJ z#2BZokLuq`5@<$H0p#?NHG=+!xlP@CI-hwl2m;>5H_-+FL$AEquAO~$Z~w-Y)W{4$ zU@t31J^!QRrF)BY`719PB#h(d-v%w zwMEb~UYytn&&Kbh{}x~&Vq-h*`bl!&u}T=#nu~4!{jsoQW@KTf0n!ww26{QcZN4l;Iokf(Gie!t-WRXaPh_?>WOF#;a3ANFCWjYC>uI5Jqn}Pifl@A1-V0RZvD0_AuzfAVOSJ7N zBzb})^apVPxy-z4Irx(9YfGEKKne$H?*3ZKVTnqQ>96y>EGx2Fq4zLpTLa;O3L1Ql zizJjr1@_i2l&`M#iSj@E#jgVM3s-%gR@frVZ$c2(58x`|8OM3S)Pb@l|UOb1Vw*;*ah8Q#+{b^(ee41xCS zTvkH+N;;I6=t%!>q635%SQ-4ZX&8LxAua0Dg_=|5g*zE7oX;E)5ad(2Xa*HO{Xf}Q zE)oN24S8*EuhP@lyC?d92(b(5tstd9dmJ=k(P$N>)9HNrh^t z`l^oK>#}>E_%G!P{nIPug6xJ}OW{YflqXRrG%eBNb5!c;5U4qYMzWnTA9v>WIonb| zl7!>WgF)Bj#7eyf3Th7(z$$bEv6GM?FxnDubpeWt{@C_fOHPuU)n;td>OP{op~&?A zZ(fFQ>S5F$NTGm6f5N$>{~hPJZr5XWj>gQmzb!}4Z#(X zWtW6WuX<1K){!|-om;G?C#2*I0A{+1^4iL1u@x=@n0|AqR-4J4q?lb*l7)t#~Qq|;kgroSS9sto&iO1`2o2cm)mItU)mv)5kyLDna( zyD()g0Jgvh*2TF=MU4cTU;GL&hwgWJv6>!301VF7ch@kRYawtoVy_O`D2U!~;a27L zG@X;H5yl7|--++GcP+p)G9xFpGn$~3c%;ehv$eB|^L5v{`a7Vz#Yu8;%!;c^ymSxf zJC0|Bc#$F*^T z_G_^OaVwy;Nvh&42Hlm0TjJ;B+bz`t2f?H2COS9Gxz_)j(hd3&1t++2021dYVEqiTBT>#kYZ$C)soiD-7-M<$bb!&I$=P1(pc+hILEr)GA1aB{85{ z9Bn`gg2II;`AfgS0I42dbTrdvZ!lq}$`ltU8={ujFs=o;tE24jxK^^-5q`CCoS(Wi zUA~3;6i~f8I$#JP5-4TULkuaw4{?j-+i_YFcy)kHJ@?!jlHjZ3^J|G7$DM8gG7}&u zT)lz$XV@Cz4o0^tMvIZpxg3LWe9Ds-U+D@?cJSAtD|Ds*!sV1F7ZK|HfNs(a2c!0O zkLheZ$9~Wt#}+^bd7y3A;-qGECRuRpr?r}eI`(X8zH~Wnn3oCwdpte! zMZ9m*4mVEGc~93%g$x8o56GVAu_4`u>QOv7(6=+M3G~|LqYhVr1WwRD=78YadDZLI zQCmEn3DDF``d`Oe=>sGi20Nd*F_bHYQAK)B`}zP)ZzJO7|60|<Ng5n7TU3qt$&!?4_3y2Ml}$Toyor)jJ{HLvm6w3*rMs> zkC1I)R9)ietF&UX6=Rx*1m#LuIy1KF+Bbt|X)nPR78T8(%tO=wJ?2rc3iwh|F+I8O zMB%1UnscUBTHdRzdBgq6tRKB;G|tVo?0V3oQAif#aP7BimVJO7ePO5)aO){xT!P0-Y}5jK(lb5;eCn&uiGijw-uR;xIb1CHHh za1NY=wOyp#{tZ!19uQgVhlQ!6R}PcAWZWH;ok2T_DWc9RZZvc~7ph`IEFW+7>#-Nv zIVE!5Xvl)~JHc}@3}hc5Z0!J{{i9eJzB(-5hz!hG=YxT%or&K<1;>>Cr(94&mbC$T z1nd_QK#)B$3wpNF0S=;0@|$l0#ki%1AGwlp3Cp#hIiqKCF813S;QGMVV{bCpt-Ez? z%pIsHDDc-D1no>#;0268&7FRJUi}5Ik}Qmh&X}U#C9r`M!TPa-Hck?8?*VEvfsA0i z6b(0#?LF<`$8>r7jeaameYa;=c`x-S`$(k-!`Hgt>WxzPHUwS?wib%p^eLXTLk;kR zIffdQ%GuO^?LCiqF{BYZiHXyM*`b0=~?C8_A*>V|^%*Hece@W2XBsFk<;$wyxZ_Y96jdNK!{~~x9(1~Cky^pHY>_&Bdt1Brfj-ytP8{#=C3A5w4+SV6 z`-0T-`fS|eSV6!X0{h}wInWQ?nx~%i6PxUddtDo_w=z!!Q4#ZcMFg>nLu-M%DJmY= z)1Ql-70{CzMJ6PBEbUlfHxbIg@!N(_#bmO=5g!V`_5X3HV|m$lO+%qv7NssR`QRwX zK}>X{L7Lz{&9tX1l_YHKZ*wcgw&gGwI{-UmX$M?j?-OLs+jh0@_??2yH0q|Y-mGT0Ex$#&y0vX4fwsDk$hmK0(jS1z zFSa^uPj=5~$|2#tshGCQPB+kPEu{coD>s%-n_gAFVku4R+53~=Zb^#*y(lzE;+|jI zK)J0Zy545*Z~7R%I?WMOLzn-R~|kfLf5Qy;I60kOgXAL%n3QGA6_4#lkOYGHEL z=f9;bLwnM@>&aaJoIj#Dws#!Ct4Fl@ZQ5F64)m%#E-f&phr-Q)x_G7{EY5fL?a7O- zhK3;3NQ#5|j9#Lc!8K+XsjuP*y+_CeX&6P zEux^%Z^>~S2f+DtF`gH2pZCD(7|S!MSHY*Rby3_c zthlfW`g&df&;YVWWNxQos6gS^ALIj)C%?Esf%Juv!aj>w8KGVBw#g~*Z4=BEB^DOn zY&un7?-G3PA$W=gn5iROAJUqMh<2H4A#k!8;5#(aG`fMw0f?>l^=e&){I{xLq$Y$K zz2*XV((NA*XgLXWS+D!FWAIo3nLW_E0a~GN;2p;ci=y!UPo4V3qNzr~g)Ol5_|Tbg zTy9(KY$~J7VasjFSr&{&(#ZP~JNUo9X@)O(VlN_L_D+?m;Rn*6P*!}baT=T(a1U~~ zq2axRk&>F;Z>iYvwt$gV2La=6(fYe%Hd|{6T%aEW&5?%FB3iAM6@mrgyi(|c7~z0i zr}oVtB=d`Czvv%29un+(0tRK40qz+ZP+_^65~AXe5O5J1&0A)a4vzVxb?V9p!|@lH z*i)R}?xiCfAUHl7wR+%Fg~!^h0h8}CsG163R)(Lk9k^>MjO z*Gk9U9qGr5(>{hgCt*O4d!iu&%U(0LQJxIJd(dSjwYBl_Z&Rp6G@)IYApl?pOAC4d zOyo8(^|H&=_oa>uDT1h3@)gch-WHgjkFcqDG<@$aC>V8tz#-r)bcC4g0BlI+j zS>XVsKp!M!_kP(;Aj2YhKofKvERTSxyZb?ifHCpuiOmBZW-prL#okex!`R;2^=2qp zo=Y#W`t>Im?DCrGwG(gL-=xPHoKT_%esLIZC^aw?(8Uk}bTV}U?e*G|x(#YPt8(o6 z?Fkk4;||!#zU|E^ya3le@*?KvA6?ELc0F_^=1xG*B@>IiORaaUp-lwx1J}`ER>6wZ@cWN(;kldB?CuJzZ}S#~(mklSl3_ z(Pfs(?e{M3_ta9u0Sv<*;gAtiqRuaiZENYzL2%#jIFKFIAstr1y>c4273~mmf;YC& zl{a)D3uwuH^F{6#Hx2l5Rl|Th89JnST(K>YXK*!}dsGf1y2LIkd^y=$)p%~SC-g!1SG%RCoq!9$kRLW0HV}y>5I-!B? z*AJsk+q_cJjG#@q3LoXM^&QJAH{;~zj*O8Jo1Ql%+si zO9(U$x`rVfLZ@ufx@HY_3&G2|qW0X>XRC9)@RVMOv-vbeJt>yr)jUSG-)mqVmJZ&B z-ofOw588x|;j+PpA7E-!88JnJzBRk#GZ96e4@NUwrFMKev47A_H+|FAhdPrxL1XE^Htt&Q&GV*3s0&j>LYEb)n>;fK zxidVcZMgDhn;qwRT}SO8Jw4{-|4B?#Oq|kRA*2ulG;}kL{Gj_ffr~eRi?UFmVs#1m z)}Wt989{oFsk`cC7ldh`Chin17l@l+s(z01Qu)4Ka~cv8_xRz1`rwImxnmQyuF($h z+#0Wq@k2Z<+PXZcq-$cTFd1<&-kY+vN$V`_Iq9!b4_vjGr+U-A<^d zi4DtUr@{%#%hZW^G12f;3xeUa!`@hqtn7|FD<2^mn9b1T<0{>6w^E<1;pqa#%$JgC z!KBuGHG!AiAv8@|a)R?Iezd6A1}Sny!WXx3puGu3RM5(;8YagB1GVFW<{m+q)#S6z zzHOEBi}w#a8SF!f_`bq0Nm9VLDxbuZU}p;xyJpncSbqvlJkbUkjknXyr=xnw2sa7W z+VC7&Z$9Qvc%nXdDN$n59*q;L-+BQ`96>2~zX6Mdhnx2be9+hiXk@aiG01inTeEp zo7z?>Yq#2KoEli^V;)UCZ?}SX*6_bi2+UTFO(l?aUiD zGAH0Ft;~}4$JY_~@AWUQ7dF8c^;EE(_2iOxq=EEfRt#HBKYRovjVobE)Ob01$bNgU z``CVX(b-vke*+6o0eje&%&QUNxYb1FXy)CqMXNto%mw#5bhP?_ymQe?(M=(mjI)K` z_uKhJWW6!r4P%RB%Lw5@b`9F>c>~b;wPQb!o7}4dH+(@QO?0|~R}U>dfAs6y&|yNr zBJSAr`PpQeV$v_HKj90#EG-;5J_auM5aeGXJ$v4I`Jt|YsuR4M8z!t6g1OG9B$g92 zu5K8z`WAcn{bLSZQCBsd@4hSYb5}@n_oYSs?%}%@l-$I|d~F$}F@brGYs>5ve`o^a zSo1g~K|R&a(j2qj>A=F4#Lfam8l7r01M~}e(N9NzKpW%TKT#L5{Pe+UvoM<<*Jzch z0D`<~Z=1t}GubYd6i9v9onH)>;5Pi{T+y2%>JE(pTOa{<>0);=dl&R8^L%b_zK*}t zja@FYgdUSARn9Ur{~MF6|4mG}Hc1r1lW)r#rq>niDbNm0M3;1W7@{tM9 z;{@gOpkV6VwJXfCS}ab>R|5L2(u{n>ubz_bI~Udbu$3YqR#=2Nv{V!_PSlbFoqXNkMR7J6LR#lg8!tD?Pc_NVf;7-VDfJ=dS(BnvPqYH3`~-OaQ* z)00I5WCXVsRx}I0XP{BAJb1Hunk*>h?A=z$T?7u38t->8`v+LjpakTVP4GmW^lnod;|Dve$!#ek~w4$!6}6=DswWeAWV*h@Q9o81H|U-7Aw!_0cMv z(--=bRKCYnkVG{854c0G)N$A(&`(X!&w@A1m^cB91)Md<1_ zP)CpBa$Z?pUkz5qUaH`7B|jUL*4eZ}owkcdGN-`BSBo+2reRWUxlRPz7i4ryY6dWN z{q0o^dS6Ee5_3t@(;8ZJciWC9Zl;T_4P4QYPNM^t<4EH<&7%&}5Tg$vL$Ouy#Y@6W$D&N$*`F zeg``5?;F+A!>i%ngQnoY&Tz(_6Us;rIH9PTU%Uiu|7=Lz^zXT zgz4apEbb3N_Q8s))Ix2_4%R3J4nR*$38_g5jXCP-IGMXyxJiSGu}f`?MpwT88oOyX zQSp(kWf|BNBEK-_=`!EF>h(mXBqa2Gm2kHv!308!+n_SSgcEo)b-^^r0<77(q3H3{ zRA6K2pF4B5yjZ&_(3ymyPLzgN4+r=aXd7d?peI@T%W{6*hRtNj7Dn5EB9h7F|KsXC zpqk3M_hB4nWM)(lQR$!{AYHn2M@kGx5u{fIsnP?XgX2#@Y0{gZlz@ozCZPnC-U%R5 z0!j}h^bX-WNeJ`)zq{7Vnx&I_&)sLAy`TN;a&fHh_*lOjmSsmzT%zp&t$;rgX5aRJ z8XsWi>T8QUah9hVVCgpEu~F%$(>*RN^V+=;5=C%k>hOyq(t+PwJQ^nwa38`nr_WIt z&!v<4*n+8u70eWtw2LNE?(W%}z#2-F7sciesVEDvekI{XWdg6v7LTA^`*_)G!l`m3 zv50AG01(53w+5GhLYmTAW$0&s^&{STyISnXszWXUm>;V%_itzt5GfUJCePdg>xtN1 zi3tmet3`1(phx?wXMdJp)9B99xQw|B@Gg!*C@v0tP#Rp)3c8c@^xCB)O_nDKU=j8{K%wzKXA7P0HB2b)2EmDMO zACE-Sc}%Mll=+#exH+?16Ns2+-#Kjex+picgT6L6I8^BNjjqbz%b1qC zMi|OPFV-Z6y8Qp%J@|fjk7tqe6NA^FVvbkB-KJ;Zdm@OBodsES-~d$i10d?biyj7G z<~>iQTTkcoj|pN;3dPTN56Nqx2HoYvJ~^g+E!`=TA`to?#^tAjH@Cr3zs}>xOydYD z8+LG6WF7;x8`n;EJ&A2}|Ha$M9)ja~Z5kk;Ia*r|`;)exXYBY(=xz;&2;ZQCLVt|i zBvwi_C=yG6DT?oHUZ^~F%0BD|;^Bt)!}(^%fxXzMciZ=we!84t8xW`26Jne_GEL%Nd#b;oo5Cxm122b$G0*4^Kg z7{p?}97-6>RHH9+nt)Dc1nCX+3s`;rN2>S~mY`Yo+0Y^o-$akkKTIUJhBVx873g4B zg9~`^PCnrua%KQsJYXLhC`k}d!1YLpSt=(E557ds#AFuu9-Wlm7=)xF4!#t|*P13QDAYgkNN5k(SCmoTDuP zMegU6Uhn3|ZMbMHjju@|Oit7%cn<;K*wH;V(ALXTU6=nrekWH?a z3P!VG5qUc|7HyFFd|7yt#s%0r(1=dFEb;RTAIBMK;lL*nN$a2pF5L!^ujNid?~ZPE z7l{5iu^mYOO*OEZ_(uCTSW3TvCkn;xXDm4)t*5W@CfeQ%`| zgk7gRNC=eW_znWbCUi7_cO08f{V|?RBDwxgh2S~5 z*|y5cE?A-2I`EZn6yPQlY=;|GX#mh``45sohB^m+z*ZVuBSYVT2$CJU$8S)fP~+n8 z)CC&@KFT0cSp&D6&!febqXonCKI$BIHqM`P+I=V^E9D&!i&TepeDz4XB$QO|)MAbO z^J=c2ms6dKuYb!y0&GWtOXtu*dCUy?YEM{2P73lAfRu>^N2f8Cmr5r)@?M|2#!rzU znh+##b}5++QmH{!gA0fKA1U9D#~GHp%dI5EO0tkjWZrj^9g6=^{*c+FXmd~~@DgwB zutOMwV!1ZD^NpDXGz$d=%+U4hdgqEAJO}eZUK>6Ds=4y{vb_i31bl#t*kMazIB-5S zvp;X{{)+IZb9{-Sldj`tNsu+xTrn5h9HiWd#Fzq%ysZ(jylhnG9Ha~;l{|@7^U$kU zY-pUXB954#7>Fm5iot(89&|kz=FQcDD1*?%2AABWZXW2mo^t?l+U&=+Hw%5fLfPM? zIvrkfm*Ld;B!FqE-D%JsTli(b@R|_Xfh*WIiAYZ1Gh#UqVgQS(v}3CYLCVAX7*P`> z0-*IkT*~;f8uP2PfG{))*HM-b6WO;QRdx=<=U*e-<=hwh)I>>|C6pvby1op;*?rnT zGiv2?CX8y!YY8iC7HD~lwuoc_t>;tfJH^`BE6UyMNh6p89$JIW_(JkYVPogl@@ZOV zUdl)%mbWqui%QfVVGx|5^8|mPhFzrXyNN0Nb9u$wYc;6`b>u_kMfmOCs||#~rIu&x z3Ylte>pTUt2qAEU*Mf@Mv7jBC5&>GjV`Qi;m(5+tjRW0CpubmSg_W7tyie@bftdW! zHxPgH>>h+Ndz{A3KU-zUR7Ez4s;DMY72~>Khp6vIVg}26F)5*7;6#FoUE3I#fMvrC zaUoXVQD{T-POP}`aa*cpRGcud@=Cf9d_ti0>$r1wkP48?yVIcRX5{V0A}3&Xp#p#A zs=V%zG&!ipuslV{JT99e(-afn61pFK`7AwmSdZnI zI8Odi?NJFM&qZDRL10hXq6u>1gwH+S8z3P21nTRV(zi?Hb;b>mRwdB1&A7JID$uw~ z(BAjXC(!cHj(^C>c<7Zk0U(a_w?+&lMg~Ksflt$19uM4mIFXjC8fg(4x<-((qpsRJ zyYc$RzcX2a#n6KZFB1Tva<(+1cQI(%!>sNxP}qq_GlpptPO2b?fpb4EPy!^)oup&1j=yiJUboFzLIPt&BmL4l{R19 zR%B%>H%`?zC$Sc3+l5R5N~yrzJg0X0@zk$n7Uc^JzGI$2K-n2 ztG-ciJTU|#+OzPBkHg#)`NXY_PK?gVgw!xL5J9pEJ|BjS10MlI3xix(e#l0h|%SnRTfXnhxN-_)U3f2Pd3qn;Qaj_Pj+#iJ! zaIQw^%H-f|(!HC9kaIT28n18Xz&a+QQ^2VT(k9YY|LufFmu|N#FUJumdSMzFY8zYx z?RC`8IA=#3X*39XF|aG9)fH`#?7qa8*7)ygTdhPU?t4}2NR$N-9+=Rme3YV#1#yT?z6!9FqY@p9~0@B~gT8I-+-J@l;iwtV~) zPHamFmdQH_;FrsE)yji$V>N6$rdKD1wLpgc z@vAL*YG-GA>Db)DaSGJA6jxWlh$B0}7Ok%4H2W#C&<+uBYkZoWKNx31ljI0HQdJ() z1*gMK*;f@y@cY5Y6IT7_8OQHVG79kZcmh^J*iegSmbe`^1|9qZ+FpFUW|Lp_^(DW0 zckpnfA#F&t5fn)@qV+oc_;s?&XuP`W3;irVlpyEg7I8H$o7(?b#xG+@iIPJB{0MI+ z0M#TU)&|B07Yoyp8CVH15!Fhyeb7z=vMoq1yUi+&L!5=}tQJgAh<8 z&<%Pc{tHVf+jkX}+_K&+u`<+4a(sW0ahq*?{W5k*NqzDV_bj7b8w?gBUY!n(e z9DCqnwY5%w71s~z=`{BTj^HcX3M!ANxK)c585sf}5X)+QsmuS5qH3O)3}tbu(IRRC zKK0Lmr7PWl918ZirWNTjAqgB#GL30x*MtCTz=&##C`k^)1wk* zk>gis;UL_J&h1<>*$3lELPJAY^Z@z*bLEV7*Ns<*DG?U46Xo=*%JjsE=zYYCawLG% zO!6>`{dB_x*%eU4ve5>x&O8`emx~-aA0VM3Bf*jW5c$f-#Yp*6&x5)`TT5>rmyO0n z8*Uc`?fse(td8;bbnmQQk1L}q)g+ag85-+BtcgF5~ zf-_<3KAgmEe{5AqIs+U?IubRyWjiR44HfvkKTEd$HrN8`>UJ>8r`{YH^2Z}jWm6Wj zvZ`(19YijZYo|7pcv}9D2E%(G0M`EF@!=>1&8WPD37DbL(Od!kY4r&yNQ6X_Y~o%0 z^!3++yl4oBq_uOSH-uXRW$WhujB41Nj}+F7bU9cXfC`7-vk)S@C?BN$Cep@b(IvtZ z4WDerpT4QKt)KI_LIMYvUzVlsUK=#STV!Y^^E`Bh3WQ38j{lN3deX)xPNI=WG~Kx# zF+4mG6>0@I8jbd~XRk1_cu)@`@Q@JOwi9xainlJ)AD6*s&V6lX*~=^!$BaxcRa+AX znmF=!!eC?y$XG&^!wDx}B4Su+MVR%U#^oxD5=D2sHa7Bw0ObEK;LRc@m(bQ@Ftq7H zgpgt{$Ql1Ga2D`OPRDtKH@$4ZM|e|FNc{(y;_2_RmIvPe!D)SiT(cQjY2wwb+_*<5 z#~5f82E-efQW83E9ymWm>jtuTFZgCa9U;-!$eb9P52??-SLeHb1UXF51ufD4YG5y! zeQZ6k29yds78R5B9R*50Q`hBb@%pk>Xy`ArMyH=TXOjn$9zGtB=~MdK6@?Q-(w&?* z8)yQ*5X2lQE$XNdsA4)^j&uo+^>(c$;9b>P28O|bR~YD5tQFNc1TDgU@T#OFGXw-- z36LTf`GI79LAJe_ies`3coH6jdTw*!{vw*O*id7;pF%IY zC=BRDNKuWln|mxsYYCk4nw}*vp<`b{c<>>*e?KScU<*yF+}RuxrQ8TgaLzppYMfOi zHi`!$N#*Vo3)#}2*LXM)!Y}4TA)^Im5ewLzr4e5X?8OgZgzVa4_GV?MU7|C3>=F(1bDrVJUQf4&3R$9Qy{j$n0=D6gOq74i``^^Jy#b zgInx9Cv}&4YLl4r4`Bpy|7za;LxvF95qF;T#fWcT`XoyHS|;vCxUlDO$V+ilf$nYla`{VgLM)|7y+2B9&=E;ga5=;cJ)*!|SPE zo^x+|-YqtE9Vv0XW3Wr}yL*bi4BuA5bRN2dpU@=TPSlkapfU!>4d3xsa7X6DTJFZl zrak-rJ(s~Q;?O(W+X^tFZP-HpTc`@yS-}4yk5+(HsuP9F^hCb(io-qn$1uf10Yw+F z2Dp#DXI~N(t4|%PfFyyF3%dt;MIP|;D)@KWry9g{f2iW0)fwE2MPE7hfX5wv;#o;W zg{$6FlJ9iBn~Oz}lMUO_<&!Cq?9lNfR~+oQfM zT<9j42_><~1MYvcgQjhWl1xnm{Y{kTG~urgUz*O80GzHRt|h&aeQL3a8OF*S7Xzdx z!JLl)_4?xBkxeTE|H9MBww)kO4vj>dp`H7J0Pp|%Fi2O%1>4zBfb$mBb(H{Xey)`Q1U|hWMmt>5m?Z$Iw_L&T15ion?HbUx<7znO_*6V^LDHeT%RRJI z94+#^lj)j`^1SOb?wtWa$Q7!privjpzN5M4Etx2Z^;GF~Kf<<8XH+i?9H6SUaG*A0 zfW`S8ZQAF0pye@~D0e_-Tp?sheB63YYXK-I78*#|iz&;k-e%o7ccc&p5(EXE53^q9 zVq}p=pmV$7`64sZUUJ-qMI6qu&)4#%kf%^R{AmmPbfo5!^XKai+dO=nKYv_zjbv!& zEeK=b$ql9Be7rZc`NWoUva;39LwW3?9#Y{kZa)vv;S$bVczgGDfX3}o5G6W{mrNRm z97pDCwgCHSu7}J_&@`UtUotL{;$TAPUVR;hZk_&73CeN^8cbd>ZB=z2%gAw6^pp`o z9YmzU_dz(|gFO%Sz$QOHL-{Qjd7x56M{A(+a3zIl!q<#E1Q)1CHK>lk=gxj~vr$$M zaZ^_+Gug=O%#y>D+3hkIgi^y`Abk|66JG&w=bt>@h1k7fMvs~_6Z zZu{-eE(3@60Me!JC(iK_ki3@xz({7ptTmk&&Yx!p1JN63ze^1SI<~KYGB3|q&O%Vz zRG$H(TJ24F&N-*jZjgX`uP*~i@*`nupoqZbR7==WtpGFs*z346Iql=d;brU}v}?7Y z3^y@be|D)%7tMq^Rmb8-(^IQJKh?iMdBYAt+#G?R+AtzqqYEc54-&J0QE*Nv*p8=l zGY8IN&*8M4fO-gcmtoxq&JF0U8U9Gam9Gcv#PcAc+Su)EpeMA2+|N@&GrN0$jStz>@La_q@;vA@GeE zdpJl7mRQ0bcZXgli0(n@`=CpNwA?M!)4Y`D6Jw0L=7z{@XLmJ}sC?xz9YQuZO&n1t*m?Q1`eBAv~P2|)fOhz&izOS$*Ansx#`Qo_rUa`)W{f0+7dwyp){t6`ZCvZ z%E0O*a-c!+^a2N@bJ|ospa)kl1*qL@>48AV^lln($0|GqO85xET3A>~_A~O$?9b-o zi@Znw5RShzK$uOx{*R~A52U1|I9kA%hK6I|7JAu;-2(ZnQ81hHr0dqf>1e-jb|(>a zOQ%AF1GN8UprIQLp0rpcU5tDXo0O?rG3T``b;PC@@Hzv{Mz(@R5&>gj`S*&#LpL}czlWjaJROzs%XxG-l$;mttstw? z(fM+axluNy2ektrDu~-arH<825pqZ>9>qrs_twD7UW33V9ueSga=Kq=K6{j@@H z@NM9vnO^oWEiLMD^Dnk`U9d-8qXuKWLrgwTunY^fkNrn4NUsy{0h9+pvsENtQv`#U zO~=`&NeNtoClaf`$l*cM0}IFL3h7A%A%CT^zdx{B8Wo45U>pDVz1f2Uy#eI&O}!^7 zRCuRqBxq3aa~sMCNC#ZE@18a0%q5oL)C4r`=;HhpI0B_P^b>K$mM?Xu63ijn6oGoSuI>H?nNHD&^s@MjTGo?$M zFpxpXJ6Sd6X9{XT{z6NR{`u? z0MGiwTq`{ybV>~_=)cF~KKQv3{8a-X6(DG)BtI5-aOFU^-32h1V)UPkW!FEUX)E6F zQM!fjA^_7z5d57qQu(p>d7C*IQc@8KrCmv9nD7Eg>z}{2E;#u@mF2)lM>#&;x||>z zRM;5dML^;5kIIL@U-#f#BK&dM22+)xhkmqfs@RWBJi@P9Q6*Kj#}hk6tUmu>nHC-q zDp*^wC<5U9=rFC-0=62VbQM+m5%%S7vkoh~q zl72Z24%DZGBiCDZ;uUkm7s81ImO|GfGE)lToX1zmc0 zcTlr-sigXW%*&=CwK94V2gKQe?UL26ErB&>4!yEc;}N*bI|IZ{xE*}SI!|uC7%W`cPb-FYs#F!=AM)KyBE7Yg zcZWy%hOW@kOHu6{M_noKh+tX!oWg+G-wuTV*kIhYCYv8Js>PR9(kfp8Yq;Bog^}nC z7L^k*yeQQ47vKN|6A6wAT^&2%P+xtu+ zR!OXTa16nxjOj@Pg2n(vj(zo=)%VoX_lgK*z18UJ0_KFJ6w0hs(LMk(ZNuXFU$$XJ z3xzNxKg6|UiWtqx#{ZI*gM+9-F@sopa3{^1f@zWKJ+=339=cN&2`H7!++G zAyx{=-R?EUDOchqPz(&ss)BqKn&oLw#sfX6nO6E2ZlCuGWmWKH^%>hHY9Ynm%ZwO& z1Pc~8kcAt$hkbOKKgLV|+m**e6;uoR_B9%1ge2VSy)$Vuy&l$px%|*f(Km##@k1~;W(bdnvK?jG0KFMgB2vye~GXK0JX!GMzBtT z159ULdlBm`pi`R_RJ?riYE;;(wfvpzI6@x`s6=;Rw5vPJL&#o@f7>INR;&$^S&KM{ zil*EN%^3}kKx9?(kuG9Ix$zaDo|rCgBUabS;K&mkh}HAuBR$K?1gUs0p)ho!!n3uuCKARPcs*g7hwx$4*&)B{{U zhiUgr{Vp*pBL$LY*JSd<#BTX)(C3oo?+rlpi1mz?*ITQ7gMerGW!3!4@=+Tts7?;% z_Z$)^xX5=|y0SqW0_HdobSBD6k zH7iR4u&!8pI@GNB7g3N3B-Brn1sqimZ<+SMrkk%>(8V` z*klZO1i9<9Q{KMGax~%XB0eH{0s8~afx+6YIxh+ZqIh~Wc=7I1wa)?g0E7jw15oU9 z{t(FbxNgH<<2kRn%SF6tCED4c!to@Ei}Pd&zev>1j`7DU+T+-_h+3zJ~#WeY%Pth6tB*{^~BHCFpzZK zz27wE=h3JE_zY`L10GZ^tnu#m&cPnlMmm6NS@zB$h#&D=XeC7oNHzkjZ7Rj8&%bC`ofN@Q?#H6Q3jI5ABue+4{e?pYvI)O{&j@Qdzufi%XdNj(@q z$E{x>MSG8;8BzOpV3QgMv4tCuL-*sKIddS8OsaesjeddPzZwbq@VdL3G*Hu%IIW%H z=RcpAMpoa3Zq9;|mDql>JxkCiaCWsdyLE+nXvXL=I;hTN=(`ztDDTe)vi3*EE#q|| zZF;>s?8p8+OEKr5Hj<_)y*Ff;FJ6of{_sQ6_+o6@g=QvUy)^>?`jV?9eBS?jcl^i6 zQSai~Yh&TxtF3L7{^>RB<6~I68@$xb9cucAs2KE5sMnl-P>^B1&i|Qu?Z|q}9_>f* zh|Sgh`sMR88N{{s1!0Mre3#V~rOMtR5AwJ*BD(MPCpqPrl}ykI4~xnCKCEM5Q2zx{ z1c8^+dZ-J3|M!oyzUu`!y+{2+P+v_Lq{H=i?Pa?JbJoe8j?j|Sfr26`_p_baWE=gB znM~c0UdFAOv-y3r6ketopQoi`e6wVO-FjQO_Fc&v0ra7me>-IYelH_;CH6&R@=gaV zFWXi{D#KphaWp|*fsXar5~Je{m)M74I6KaeIVpviPxGPr?mwS(nO!U5OwG4lL46R|duv?{q|`8lECBF>@RAa1|d8!w*~hkYuH z1XKsy)YBIBS828)mah;W-4XRl$ewe?7%@iA+P8#6`q5~0IZN6*z|_wf>E_4LL=oXH zVO3C4(F?^LU8B#%N_q9Ix5uVEhEqW&sj+s7tU>s<>y-D6yNTT*q!px?4b|4u&(`>% z#*@`oM2GhtvryMGZ8(Gn=q=1KiiKz4AKFh{Zd1)tAGw#Oz2p}FQ`Y4dN}05=uwrrM zNe<$dA^G3;X=_vR#9KD7w@rvmImJYVQ=^ZuHDLi6kBUKS0d-9V zT{#MC@8?5p^t4+-xa9efS%cHr9a%&a1vG?_tRctwiXuabDhA~l4v@KdMuL)>^R3XM z#5kGj&CF1fiQrGjR|9+MU|sePy(L*xugDZzvQYfy(mc0ytU7zLnJLT?MpcU7OqA6^ zWBOQ^zimWhySc$s#M*Z@k0PdRRp90CE#&0ny!}pe{*LU_7m_T3k43U}W9x1#Gh_O^ zI>)zrmxspb)6Q7Vbqb|>f5=XRz$vC0;^&qAcO@$V9aoSC=K43c%@Yk}rq|23x*`kj z&UUHAA3P*zX+{OVWZPlqe5BXo!lu2)6U&ml2bZfoIXr&(`Vq-{wpn5$tvNRa?FoA{ zZZ2Qfb8Cn{OIEaF6XSq5M1y}8jAuUBejet(Az~>hVydQak(e+g-Y$4Meg$XNJJ`Q7 zOwC-^Z#~!XR1-!wV!&~fe^qEH6nCc?20P5k7VKkO{+gW!olNYxDKx@^xXOhq?7{cNWR|7AL4xTQP5IU z?88vp8MY|(ot5e)O!Jhh!BpNlzzcG8b;7@?rLSstZd#`W{hADY1a2u@2B7Fv*;!Cjmvpu2vcqOIk&vazerJD4OnM$#=6G;xSrOWuWu8t3`lRE1p#Jq*DKr^FEnL;)sI@g z71ke@SpR*>ds*G$4a^;U0>$mX(#iT~Kp!I=?*zv0qtUv3n{1Ye@tAxCZ~v@)*ZOkb zbMQcNUkZy2uJ3x=sYNuoCujXI9ncJfTaYo+R z7MGEk;Kc%$Txk{PoRPaZJ|F(7m_dtvpku>_1@=Hq>J-f>lmry zy5ys^;n@KQ6)ZVGNb#cegY-8ViUV0^Q zv8W}3KUSau^`VgYvj{oV0IOwuU@Fd4Wc{jboDcg)pLE0R>f8jBOQC)dTLkq#m6v_h zf_R4Lvt&o2YlI5f%l8D0D;xxnPvoZO1QpsZ)jTX!$}$nn{2r~IzTG==B{frtB+gaY zQy&Tzy~z1I(YrhH%_e3(Mc)d2Kyajqh;23zYN=95TNR>oN-k8I>Nt#@Rt^ zWa<`ij5EVcDrK1_ULB7*wp({L16yOJQH&wXiq3)8$v5q4$~=j;jN@i%{Io>MqSR9u zS^Iwre9$og7k9aQ)>!uuZZelY@jP^d6UmhoXr3PzHE{bvqr5)B+51k~s`F_yu9-w| z;S&clzOXC*&#~9r;@R7iLfwYO>YCx*q1E#omcJDg>a{~uAlLkC=(Xg;^`@@639DT^ z(Bri2kSs7OkwjYC&V&U(QuY$3WjK&rRv+s@u`2w6eim7xRHqURTijhBxE;#& ziD)=?KH(9grYaZe;98-Tn$~0)q7wgS$~ESpnUt$lfeuc6EGqtC`iG73-}^6weiO_ck&3MH^SROV#7@_HjpZD z)+(Css%MFAdkEIG=$FEyAaHh)yFCTCB+hI+tW@)MjiGNKU!94LeQEcw+|x$|qN_*q zr|^S2RdabEX-_{9rH=kI|27;6-@m$8y)*tykZc5YbxC9a1x0vlz^uS{P`Oz3 zy+TBvVAoebGgzg*%aS#4if}$t?6{6W^dwJeUtv8WP;x20B*E3<_c?*Wd z6J@OuvmNRDR{}RKsN|9LDg?ZsSJx7bjz+COM8IARrY^bXRMFno6Sv>r`ugi3x=f&A z$2#z4_fb~GsDtadE2y`l!%u^rg_mlh-QGE20$ zAd)N06j^63z2KUs2(<81p-`?U5#A zZw{mBogULk)dk1b0QP5TUazirm~~x>^qY z$%66IoF_5cOhr~!ElE#(DnwV?$;&_VA#3;jVuAzxROa@q<{cA86slvipEEg}kk z7?p+bu%&!-i!`>o*=?XTlD45lg)e)dM zHO@WN>f4K*h{YQkQO<4L%z3Pzu@?)BC9ay4=7acujw}7`GLA=mAr$Ask?^q!Sy(Ij zKcFHuPqD2BwbukqdAqQVa9DRVzQgY}oWBtNtRqwQjagY(m<^&GBZLi}zj`gJ+0^TP zo#<*Az}du0uKEU%B?M-O6$HLR8WWF0QkH&$+QWKwSB1eG(enE4wnz^5QZ#r#5k3%dU?#BCyr#i0A7=3w0XW+7YYK>gG@0Yxwv za4RYx&kR>)xOb_F`T4=9-WbiYpJFf1Q|wiNnxYd&qW=qVeIxR=aC0O0d)#Gcvl!zFh-1kDUx$7bPtOS^f7v=qDPnIy-he}tTUem z%twxVU+4|e?4n2Ul{ISgh~{zLXkHF47|f8p+fA4+MtaI$WkZK(-CS7Lac-Vk{iD)j zp8nc-?)P1Wn%mF8vtMQ^y>S}-sKlJpl|FIZ{t@iln?JbgDr7_rftZO`LpPL+3RkI^ z`6v|&qns3U&<9-15xC(qG!nHNpXUFhs1asl4yega?qfBYDWoBW6Rfcrm4P!wj+`@M zu>;fzi?KpZY198_;>dYU|Ngr4sXT8z+K(N^gjpEhOwbqC!Ej;aDtg0qf>8cw3Zy^P4s!+jO zB-)=G!^(uA{2BE50)T63eT;TAFCI@=K=JZxEH{etaca5Y3bs=zj#A1YB#Bwhagp(! zw|_;(y08P4vqJOC+`W;jn2pLc)T01^=agQ^-ftKx@KQKG`>l5Ek8j-y~nENFn+83=lYr)H+fYQ z++PSGh0CaW=E;$uNY^%I9<9yAnN~>1{J#9?#BNrpFT8d>V+_J7(}MG+mrqQ0uvwz= z3El9sO%HO`r9j?udH*a^aE=uQT_U6SFx4>ah?B}-(6q^W{=OvqdIhR;}_ z8RM~ei%rZ4JTFHB#K3nQ>kn`G&pm(Lj{1DluFq+`BDVw4XG&HNf3E$7e->^8uMsUk3B7e6F#D5!!!wP>- znHkMeC*7dfj~ty-EWM53ret@;2KYMuXanZE^>?kDdOe_AZo(n=02HYRa3|S~{Q+6b zz0UjnH#D?jpNfOkxTDxMm)1lUd1V&x+uN0=gWlnkQi52TDV6FwqP)N z{X(pp5Cxs1ms_8J!MX;tKhvbN6>(teoVNWkg4u;R%-R0RC_CFospq%ekKF+@2c|JO zQEJ;PP+j0#=Qll6(of}6!G%A^meJtfSchfG_KH@jBh?E{xGr?~H^v>_&pF`o zQ+Cd~FLuMo)ixFCJc4{Qf6#ZuPS_;>8!Ao4FYq7qMwUr1cZE?xdU1*9txIJ1wAM#^ z!W;#g8Cb{`o1@+KaO1k2OH(m6-~`rNunGlvffHzX36XFBsYVi@pf!6Paks%2oHgL4 zd&Sv!U}cUTqJIP?RM)AXKPm3`fSPx`oB)sYzfbK+vENct-ye4Rl9TD<*^SQ8dxB}z zB@#54z~!Tu!&misNgJjA&M`r_bLNmfMW(`U;_hpD0L#ak7Q8JU5SCW+#CYEw@H@_D zQo&z-c#`(Bx)zX7H*R0zUFpZ?p&^heimnFCxDhk21q<1%t=W>D07KA0r%~;(ovnMcsXBbe5RhmUqFaXc zK2~xg6pf^y)~SPSk!zU_6Z3$^Q!`m|=Zi##6eNVg&H=FXg3*W8P^$K=&`#$V3H^bW z@BFd`-lQ z2lqy8@~osGGviGa+xG!o1g=A9Yqar5xZwq`BkY-+BvIWGA#>EN#r`GmxL+UlB7%z8cU$ATyaJ|z@R%A?o$E+MyvW56n+E{J z+*=64QT*nQ(3f6V0nVN%(^g4x4Z(=ALCL@zx+#YG$CskR%mmbm9f(9^qRl9{wd!kD zmTmAQAj%iTVg}Xr0LwxlF1W~-Q2z^^@3nTI2YnKoV32#iM&B{Pg}sM7Hj#omc_s`o zdSB*-%kc^0+ynD&hMBp%Ux+cl9_JW}^Y#E=L*;t~n@$967MjJO!`k0b#c zK4QOhb4a~|xsOoc39ckVGOb3z4XMy!>osh7WaHIF?eE`-nP|Pu^5#0=k0h{8eT+t7uWP2WWQ%fRK{F(_FnB_t+}BEA2jIc@hgj!qr6&EzaT zFh!c>RB0yHA2k?1S#|1C0F)Eg9b?#U*PsjdoB zi0hsbfc+`D^@hGLpo#X63%i`6H_fUO;F@V(P0xWy(}O*TcLx8ug+tD=Chk}-U}9{P zt1NS!Jg}qEJLjar&*N{(*cfrEO}UEID5KxiL(xYa744fejd5p^E&{>EA1?PX4nOgX@bZ^I z{&vTso&F$F9IK--7M7Z$&esOR&R0T$Ol~He{TqXbC7SfVWC#P1h}Tpm61R`6K8C=k zyxQxyYpx}Js4?e7RmQjcx{)WNQ?I?ApCxM??X&I*qg>@_meGuc8NklodRDI^@4B%_ zR#rP%)j9)*<;-nCN zSNG2Ct8TNZtV;~+r}ev0L;<&%@X&fAlY!F*(=xZxlRPSzCM0U+k;w9^dXv77)%&i{ z-q!kb=1A+n8GE0pHWXUMrh8>ncBohQ2|jK<;rnBke7&=HLF8|{R)ALw;?=6>=cUK| z7S3O$HTaUMJ8rs}Fip>OR3BxvRGITMG-w#l=326CqL@nu8PsWwkj2=Gn1TR&qeU>ANv)MngJQ zvFN`sbuMp)6M+z4byye`ofnD%RhRksxjR<4?d^GL%i5%+e+kf(%rrILBS$F|6m+>A z9=V}zpZ|)(%K~`L7UGmrI&;q9UvOwd?LTJ6+)wls-THO6WT*MA7PgZSqrMa2OtKz; z5Ys{3LY@iwiDnh8^K9Q-rg|7crP;B6`|XWE)w3uLY!0D{;MD~cDNsd$Y}woa`8co| z7V-PrHsmDCNGdt42e5G~k>&G)-9z_h>54j7$vlDKnk9yuL#cs?{%+DiWp8B4dfic4 zXYY9GGiSG7K(%7(6Li`T^8NyA<^mV(;D?eo^;cPtVV0!=9B(3!>C7k zs=I(ZJ*@)Z1CwbE*O8D+rQnvb9WhPs_8;5w`W=V7eS!@_zRK&U0==^aC@kY zop|%WtZ7`TdMT4YdT!7Rg-}fZe(HVowBJ6yc`Px1tMJ>=ilHf_W&Q~PM+Nl#bFzQI z+Yjc20<^gc>og>*4mvll^#90}dRSO3E5l=)VYr{3{i2Um@F&g~;jaxkQk21#3dan4 z#>ixv1gHH%AF1`%?<3;@LrL;jcWU+hZjp(}V$Q1q^8y3g>@mY{=i|bCt?x%vr}7WU zF|hvj-skdb^>j{z;+t|?SckJ3*Re~oU{A78koO0Fty95W8?}MI^VW8V@O<2AEBe_~ z>K^igq^Q%2@>*Kf0RbfP;A-_=`+Vf=+(e$l3;03p0yvn=JYD&Pl7M;|BM~Qt!^MO@iLE0G0~;ymvFoZ?Dt@9 zQIN4Ni5$~wAHV%}vu5$txf^M=?RtMVjZ3_EoEJpME5jI0HuIWEZN|AQX3-8O*ZUEV zowEHwK&aIkzdx77nPSFwbQ5{z$3N*G*3PyCUSa)B?u^tBBtPChj5y#N+@ZnB=mac) zc`CIz{y_ox5?RV(PT@}k6$ly~|8#MzXH#Y@UqukSg<2)azixUAj+-##N=mMn(# zhRCjLrA#H!oQ#slI>xkN5wX`{+gR-u`53rrm3ZC&x}Yq7v9JihHCYD|wSJ_G)&=o~ z;w)O>h)m$=}dQS^YH{MSVDZ|AD`wPOq zWem#6J*;oRXvJ;bgPmK2;9?HWor;8x)R0EFk!W`B#ym8}7lbt(3S~ai?Gvg76n500 zVn(NW3j!ApnTTkT7;`>2GBmBPf&T*|H$T3wFr4aB=W>d~wI=bJnN;CDVan(`+4riVNlwx0MW?7KxRsmDcK_WHah-XgBR@i#QPqHqB~vUsF~7iTpT{ZF5uVAGLin|{*h`U3J9yW0Bv4T2ECb!Q{l zY)Muieu4=TEs{6)$q6Ue3kt2m<}XTjZ}@6>$EKeuM!17-uz$))R8-;=->1pQ2$23Ytb`WB8kHk9CWsa`r3w zPAcBKtiE^-g9utl8QQtKro&HK6Ga32FmPI&{SkevjIlSY0)1i1{BHeGnc%x~P=1CG zrK=D5DOcQwK<>v9u+P$s*i{u~*N3bFj9~e==!!j*X3Pf(~=$nt6uR z?A(1{a~R~T+)-5XWZ+Rq$>+dA3vx(eT^g3jT-vPRGVu0=F7TBvQgNZqc9PE6p-kpr zx5=&OtnnrEP?pjgACvomss*B-VMP9{g|zbbTdTojgIivUZ$x-x@{2w-nY3b$h@`j( zke+YibWs?t_5E}Ft*blz2j`m5280}xpy>}_k$KVTk)QO>Dsr}EkqBCf-V|~eL=k*- zXs~QwFNQh_*UFa|^hjwYr3PU0M!w4jnlP+VAFGokJG2OHuY$)hqIhA63L=09<~eOd zztsjpvG~QXKE`A#FICvxj(bZ(eSdW|&RATggtWe$i5U4YJEYDBNxY{1bYN`U1SDxn zQok1(GMkb7fAIHaVzDYgKIP^3MzfXIg{?x&6)%ItfsTGEtX7YFbLcoZGLkK7AC%mE z|B^|+p1|4!86De+y>d^y#{@){G}oOn1cw1lSS>G+MrOPUUly57RE1E`O?K;WKCQC{_4 zQLLbJlqOQ8YN%H!h9U|o(oyN%5TqCND$*sC&_SAnDxCx=iqeY-O-kq`w4hWWl<$N~ zz~5Tm^M~seAt&dVGqY#Uo;kqd@DwZu5#Kx%=_ZLr zx0-Q$mJcMY3u&!YLvun;xhZ{B62g$?SV&GlvJ>m7tSP|?crxqg#3c0RiAzm>pXO26m@kLMrV;>^<@zXtK zMj2i6qyV9RnlazfrylUrOl87bONo0C$&{8_!Ge5GS(Nn>M$Nt@hRiLh&DtF6R?&gH z)&3aLPAP03+wRFx?)%*g*zy0KnsIbK{}6|j212DyU5zP~S4BmcP2C$ z136>(SDRWI3oODL@t58g^OywPY!>JHyOkj7$L|dY0Kf8kY|Fq9J!_buHN)Q zI^ub&ZWp>EXk-0@%QquSR5AIKvO%iNe;@hI>j2^K7cR@<{$}j9OyhI-=U87SMbCFz za7_bPn{&I5e3ihHMS~{|7%5~tU^!y{f`R8!speDUZc@ob{*JAN*>8G z)N(6|)b-O;VbK#oyM3Y~he$PZ1z&NOdx)Fe(TJN><(bmhRDV`h*3*qaIo$sJZL~Gav=jp{P$q2^T>a@<)$pfE~Z$<2YmhQ&DvJTHt=`>6DTV zr1go@MC>t}V|GTSd7-dHBAYtH4m#}u5cXB|vFZ>QsXk}*zs4@g1{A-`OB^(E^QcC9 zKIxVEPn&bNW_-5KwdMnbPOAxzrQhRGA&|F^cfEi8kSj%llFA>efxm6c*_a}o61{$7 z7c3JFiAMr@C5v;yB^HsAriY;8>2w&_D%P7IJ_Y5rto=QZqLL<%upY3An!; z3+o}1Mf!mBG7K4wWBqYSER~uiL9S(asBe{~9ZQiG&G=~MzA;05JBd$9E9_Cx`C71( zMaS+8Lmc^@Ln%3OYJ`RrL$OE3@@6tzy6Ys{^FvP$2U=<1{9UT& zM&7@WPLYPF=TTIuTwdZ>8tI__?l1sbWvK&r1k|h($l;$l_zPL`tdF+(JjGwavHnv! zAt0M@k89Z9POl7}35cI{I5`=dI<~n|m6nwPM3ZF!D3wR=R!#PN#&6k!9Z*VxEhZA* zoKQPA%?ZFFPmj?OnGR+;6cG_<|CuiCj~5Vr#l`>P7^6dbqT!r}5kfIsB)nwa*-ff) zVPxcUKM>MKeFOp&iW<-=sn+1HKP%6s?%)r;P z9XU4P{+QzQHy39bhCzKE!qc8pdncN3+e-nkU`M3Q%=ZyDM;oQA#o3{NQ0Y!v1n?~O zA3zCdAQR~cXKJf-*b`TUar6q=z1QzoS@oqpPiv9mMxPV`iClpDRg+}n`7HJLTK3ZB#~`Xm$`Lw zj1`miDEmbGe-Vnhl*AJU1~R_5qzXtXV?`I!AM{--{N9Wd6CJnFTu)28pyFcEGu|_Q z|yk<@Ojp8a9lX%;C&S(BsnX!j4;;-*B6d-L= zJMnbf{Z*P@ipS4tZ~p16DgtG1hJFEg;hHk_MM(!77$H20H~>t=iF?BYevCG93)=hj+Ylh=k&m3QC+0-dnXnrksm!0X89Q1I*>HOe` zYSGCAznETbWL?UuzDPBf^0|muCQXXYcDG4mk2tAmE2MJykeVc&D^U!p8vr7j$K>Ul zL>aRs95R8AdqlA~B<4kQo*}$6v>>(TP}&yuH5_j{Bo@j)@oF!GffQP;^tXRW({KPW zpfO@$TDo;WIE3`pWU)Cb^0N*QATw}eo44u9RC6|ZHB986ZinA_b3bnZyUxARw9KD2 z5lkfZGk&3J0XTpigU7^$i^|DEe0iTN1PV2XI;64t+e1Wdn6rHvH(6R1y++rw*kWtG z+eu3K8IFgP6hn+mNinYV#-%dzXutpAQHTNNbY|S5qm;{sw{FDu?-B~#3W%RbE9?3O z#4Uv88`}PsFEC z@uS>+coHz4JP2 ztCyV0TqvM1e+vW`p3lHI8)Xwvuo?e5pMQ(=wh*Z(Tj5jR-SrEA3k-%=ieR~K382OY zxu$c7@BTJ@{luYqd`h*D7=1c}%(RmP?yU*WPF|4TUQg_`&8rX#r{%izq@j(+M1bRS zsnKzLwe-g>sg^wqv$=W&)`81tdf~1Nqbs@9dLNGj=H~v+-t2UJQK@h*=lxr|F4w=) z6rM|t@ci}foB+mFvcjpVS{`!p^d(fnR$IJRbt12fOkD4ch1XNPrc*8J@tvB@D5&ve z7@WVMB^{xtstjK=M9RkA8TZ!0%*LuZ3cll$_B&d|IUTu9<~NBJb|aJ>XxG+ggR4E3ZUWog;+l+S5e7ugW8yfRvzw zosH}Z!3j4JUDv-l@xsSHZ}(@xA7A-PU6Q6qI-qu?ZZ;Xe)yy`qxgv|Z6mB<-C*AOv z`uzauEsafoaYC(6$f`o^mHBohm)*u-+k2aZU^<#YlM$GOFq-7xT@+WXiw__sLZ6q7 z8$0(*sk}KVskE0uLA2BP4qhihC^yu;p-_B^J;WYz*W;U3kF?#j79U<(2%@GrlzCX|HB%J0KI;33!u$&>d(iSEB~{L8P$r zR%hA*tS?%udOPg%i~d{uFOHUstunK{TfSzsWlXPQ>s|nNudJxPgO4YcLO*Kcc{}xs ze9B#5fU&XefhBbbYRMe}k62qE)G%ZN`*e`d~3O&x8tt<>s6<=cf3RII#~!W zVdmTKn}%ytQuZ3iz}nw`?_N0*vn_+=eCmClZ>^dG`UJi_zL;LQAld8p%`LU>S#`4@ zMh;f#^ZPf!xTh}o91fW9t%CnTWKfrL^73@e+>xbfQX#$@ zBGvQs?XX;|hL$!$Eh?HfRfem#t8nH)l_&D|)lXH%`KGaT?)`1}^STjHS}0#M{}1eh*LPFZkQF6_ruX$mBn;Y zhx)eHuMNB4-%`N(P#`bKOju7Z$wkA5c2Q5sNS+T1aJ zJkSR3P}7K|H*_Z28Z5TL38RxkdG1RZ6@FE#cd6Xb-S+YtYE^CK_WRB*UNk?JGh5)7 z*qbuC0Z=_ne&`NgU&R?YC7d&S*=IFQi>Dr(k}%_5x2W{hU}8v6ue^~)$WT$`+Gpas zTO|mqwRl;ltY3R^^lm4pPqJaW<+Tdwh*ZNFm4+z zpTwD`7njb!YrC~uea@F4 zH;3?9P*DzU`z+SSx&9$rqm}*X6}o6oHPrL=Ug`RW7<{SXLwGuOqbf24g$PQ+gd;L5 zk!(@3Y%!(4C#=n@dU|MUJ3H3TOUa19>h~OYhJ=vl-jVW!-n-&##M#SF;q{;Z*T<#s zLpqh;cdnZ^%7OAd-!tv>fuS=8s}+8|N}?V2)&+^_fN`VzM}s)YU==?W^=IF7-P&8- z!wr0Rrpt+JEKvmHcByCq`7EL2nK9yoh@pUCpR5HUis50LXF;QWq~1Spu^twbIot0? zMW&sRq;M`2n?{7km1q6eY{b3Bx5?zyI?p|7r)K%fKBv+7;wJgVho*4$w>@??W>3=x zc4h&hvra89TRSmtmI(K^1eXi7v zFeUZErN}OgE=()3$zu$7Lm-{t7 zgLw+oEflzyHUq#EyHBasASA1o1E$im2Cp6+wf>U6!v=iw6)a87IDZ6o=guM!M4wJY z`XuX8%x%9_WJa@~k}Ts=4F%r(Id_&&zi!nwPLIuWB+FTF>|EE9K!Hn>Gh8tAHMXqQ ztXfKoM0Vf3w0?J^?v)Qyy~|-t7W>)!uI`}b9u+A_v?s7}DX{Fy33ek;#Go<-caz@4 zS$KU*PXe^BdZ0e3M8ae7!R$kNH3CZgen&;?oNC<&ht>PWe6ZwhwOKb!Dl=)KcYt=I z^B9U<67M@#Xq@=k^>5?0Mft#5HYGLEd8V|cCi{z-yEVxEpJZ$7r@}341-0`T1TMaz z!S#DiWRM`0{>Y7l4~?HJ%OzR0EilXWv_%&{YpyZbDGYC@UDnBr+w*g2r79<9D_ z(7SG|tDeHDb5bqoM+dmZ8;7&XRCwj{=8tZnlOY98!sAM?A7k%I({&)MV*If`lLF!p- zgaqaiEifDIZ@uBx=);Ho-^$}Joqv2&2YYWN#I5e~xd*flpR>ATh9(*7^~XBQ%2eN- z!M2{O?wybwmAMfzaJ*=F@}?DmHiddNA<@U<@9*uhFJF{!u3b0+^cU@sSuV7oG}v%dy!6UUOh%Q%s>R0yWz3MHu&DZlZT6`$Tximp>i8L7_)puG=LD z-)YSQYAZwQ;JvDs!o1+4Uau!JgJG%`OiK?hkKIO*e^16)_*8H zuTWVyLwu0ff_;P^AV!_IAynk4oFjBAr8K4NfjfRTMWQ&KJFCe5Rfk>z!Jj zLQb#k-yr$#d!l59>kHIGS3C3W%tla}6ad{(>)HITKtn+rxYX)6Z~T(M1ad(Y%7Z=P z+^~5o^7D&OMT`GVj0s%OazTbKGGYBIM?5U>6d5+amU$vqmnT=#=G|Y(hv@skgr+sX zAr#i7ORF=5BMQsq{(g3}KD#l0zITvpa^RK1a}UsXM&Osfr(|^Svw)+rRWtkfy5}|x za1|l=lrGt&y0y^NCPu&7&$`z8uk*S)2s8ZmyL8Q0wP36ddYsZy4H!j@wPZ$)wX+ZA zwT7SlJNcK!kBO#hr=@z;q1Uj7-gOQ}sO8_Yvh!=|3EfW#AR;jbsVCnP%s7pZ1lW$q z<{d3P;Qb)i^=89=6)bGUnewWjk`vu*5PRoD91B+Um*z=#Pge|5?#2<7!{0etkj;dI7uPu|2JhM~Y~+u8 z-u4MP@P>s4^#E-S37;fbD*&;P=wYWU>T=%f@sG|*q z>D}?3TKL&NKgZb}O1-9}@G&LVjJcR}jmzpe5YI*OH$P8G3ufj8?vf?Otl8asA+cml zo?BWLd*o!g0pD5~hy=TjDWT)&NSYZ=!>?sN8|1_~Di)ATfHL#)o1E=IXG0&nXo!t* zj;y+$en3=SRj}<@j>1U|b@6IVc-@Hgx0N%1UU_5gVLrblFy?suupo6CbeD_&DZk&$ zv>G)&$%@}l1h4u7B$M6V`!xobooPJA#~Oq%sRg!;zFSmf8<=;8R+crS3hJF5DDWv% zio2id+G(A0lJ|8>XBCf*`qqKO)~98B0W^BwV#41 z*N;~XO@$7KiBLtWciSlzBMPfmlG5Po=(+l8D?gwOa@RP3zpcqbbe0!6saysw*JRge z`j7;?;2&mV@W;0V(?7Q@p8U=ru&#E-S2e0nk9S-rOk+C~1 z)b*@mBWg5HEPdtgR1pZBIDpw{`2EH))Df1JKU+* z+(def=`2%=y#VyHYxm9D?0ce4lEGhRN&L@9WkCuf3=r6u*qSjD8&kR9USAdm{@g1^ ze{KuRW)CQ1*k?)m-^sO|-+6{O>bs#O^O(?>sJ1=`Q9pG`ass*fe-YTQqxe3~Rp=If zuqA6BRNEC$;S&T7o?iFCay;Rb98 z533DWkr!Va{>fF_?;&+THKFYGDrl<%-+K-mXl>Y^XOm@LmkBY2HTzEqId-rE*!rWA zvuM&&5_-61gg*k>6F2Ju8Vy;`Wkl`KbiU|9${PSl$w>?sM%z3oVm+G+RBf#P3O)Jt zP)$cPH;Mv~uReba^1bzg{$jdg`;>x+Khpn~i`t3q&Va@pRe%(L?9I`2ah{MLHTMd~ z+Q1O5M;()r@pUF~65ujtlo4A3KDq5(_fnM`L{n@)W|kkx7DR%G(90}HE}a4?DfNi3 z#8U}H(8UNJ#n7sQ{7S_fBP$|PFl7wjGE1T-nk??L6VDZB|4-?~S2?>sX%c&dG_+<7 z1CmCjADcJHE}9`Bkh^}Rwm%jocfiRs35eeEf4C+Ne9zwFn0XKZVaWSyJN_55(Tw57 zITey5pxJdKG9)5aLGK?w$Qx-z(Gq(Un#onynf5??OV7p_+!4r(wvZiG3$F;=7~eC4 z$3uflRNXXi)A#qQl{H*f1boas4-7I=h{01WtZ`d0fEo0A3^)M)UyMDs^%xRf28k-` z?mE4iWfSvLpb#vhqk=f>yHV^!?DH_A=!ium2Iea9?s*@mH7@c08GYZ&>wFu(i*NHH zj{{jj_rqLLd%MMwPGO*sTh9RI#w>T-@R&;ievJit6HR`_Qz?n1(VfZ# z`?33IzZd=89LFttmVg_cywF$e0S8p}hIpa#aNHyo$gFD4U-MBzP|+B~FXaFbF(vR8 z2}Rrw0>!oPt=6rzwRu4KIa(f{Psm4tS;?U9PpgPx%Fd>(v5ZUn%?vtTn~x@91K`3< z_tg!QU`Je%?EG67#qA{3Cb2SM{KCD_F^S7At(~7@8`zwCjKb@<9vCo%yD5=Eqo>$l z@a+a~tNOfLuh83z@A4@+uNv_}xk#*i)N&IM`DU{F(zFVw?#>|hy)ECbEO7n#xBnZE zU3m`P^u1_GcA>fuKx+8NDrVlc@d4EQ{W89Lx1r(W_%tr;kzNZe8w8CnU$J>>Q1=LT zvy(Zurf0eVH>_T*>V6{2hcm|UdR;AN8$0Ud>Q6ng7i%PNi>;qyFR5o+?sS$~O7dBT zRZoR_A@#GYuTF3Q%7KJ`#X}IDmV>RuE}ugYc&8H;&)t%4?irGr-jSue5%pW%;if0P zveHXyKiT}d=CiIdrD<&C8ig!@bVk97a(a#Uf!1TcUn=o{Ky*B>)ojS2a}Drv1M~Up zgN2Vly5nn6_A{*rr5?oVHTnguhrWGPQKj<&xC*)<6A+8d1F?6U*U|8VtJ9{zKj7SQ zwMoSrJh0UtDf%p8Rt0Qi=h!q}jppj@FsVvl%fVpi#)ed?~PDa z%@nk*j8W1N$BLz`_!r9sgOKX;ri=itELzz9RFT9^IGns{;2yYtiXojh2DvFeNO@E& zaWjc-V^352DbBnxQ^mX`zB2yB_2feW3(*g3t$T@!#{PF2FQdHsWWuUUF2n9DDbnC% zoyYwEp+}hz6oOw2(fyV-f#7yWHydA`*5MKiXp0pkxirp6qU<$V>>rf4_dEXjEM08X z;fi1aAL;8}B*zy~wev3R2#)(?EB?a$qxs}}l<;x?QLl4=)-Tz^(L8Yfgyn|rDoV|G z@A<71yDtk)zNZm1U#TDpz|PkRb_;+C{(5K`yVee(iF(#o0I|7n>I$Hu-=w=3$g2KJX$-X zJiDHgs*67!Q9iz)`-4_bE7FM35dVDu%2k&HVKFeX*$JghZ`0@UfFWp^x{YA+k>UbY ziuhD`Yq-^$G&dnu3;gK!o15yf8Tm-Wvjfmp{nvhoaQt70?D~XL{c0bO*D|g)1R0P5 zz%gjg`_aASjiMxnpl19kGM7e570J^Q`SB#ew;PlT{W2!LI$apgI!Bn?*3ZKYsi&_a zl`Oi7VtBT))T?JiC(dfW@075`yAb9p{IiA{TVu&~brHZ_`A#=DAcJ0%r#`Vz#ZqKY zTcT=tjxI+>f94oqYtt6WdtD-}MLw81PJJ&~lk1-n)FX&FctH6<$MR~H>QPZfIw{;XTK

    Zh`8avOag)|hW8|F-IGC)=z_(+3yW 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 From 163d13e4159e695a4bea8d428e860e121c4c0234 Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Wed, 26 May 2021 11:24:52 +0100 Subject: [PATCH 046/192] [kotlin][client] fix Android crash on API level 25 and bellow (#9578) * [kotlin][client] fix Android crash on API level * [kotlin][client] update sample project * Try to fix CI * [kotlin][client] add flag to control android api level supported * [kotlin][client] update docs * [kotlin][client] update docs --- bin/configs/kotlin-json-request-string.yaml | 1 + docs/generators/kotlin.md | 1 + .../codegen/languages/KotlinClientCodegen.java | 4 ++++ .../infrastructure/ApiClient.kt.mustache | 16 ++++++++++++++-- .../client/infrastructure/ApiClient.kt | 3 +-- .../client/infrastructure/ApiClient.kt | 3 +-- .../client/infrastructure/ApiClient.kt | 9 +++++++-- .../client/infrastructure/ApiClient.kt | 3 +-- .../client/infrastructure/ApiClient.kt | 3 +-- .../client/infrastructure/ApiClient.kt | 3 +-- .../client/infrastructure/ApiClient.kt | 3 +-- .../client/infrastructure/ApiClient.kt | 3 +-- .../client/infrastructure/ApiClient.kt | 3 +-- .../client/infrastructure/ApiClient.kt | 3 +-- .../client/infrastructure/ApiClient.kt | 3 +-- .../client/infrastructure/ApiClient.kt | 3 +-- 16 files changed, 38 insertions(+), 26 deletions(-) diff --git a/bin/configs/kotlin-json-request-string.yaml b/bin/configs/kotlin-json-request-string.yaml index 375622ae5df..bbe5ddd4283 100644 --- a/bin/configs/kotlin-json-request-string.yaml +++ b/bin/configs/kotlin-json-request-string.yaml @@ -6,3 +6,4 @@ additionalProperties: requestDateConverter: toString artifactId: kotlin-petstore-json-request-string parcelizeModels: true + supportAndroidApiLevel25AndBelow: true diff --git a/docs/generators/kotlin.md b/docs/generators/kotlin.md index f4b0aceeb60..6432fc5be67 100644 --- a/docs/generators/kotlin.md +++ b/docs/generators/kotlin.md @@ -25,6 +25,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |null| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |null| |sourceFolder|source folder for generated code| |src/main/kotlin| +|supportAndroidApiLevel25AndBelow|[WARNING] This flag will generate code that has a known security vulnerability. It uses `kotlin.io.createTempFile` instead of `java.nio.file.Files.createTempFile` in oder to support Android API level 25 and bellow. For more info, please check the following links https://github.com/OpenAPITools/openapi-generator/security/advisories/GHSA-23x4-m842-fmwf, https://github.com/OpenAPITools/openapi-generator/pull/9284| |false| |useCoroutines|Whether to use the Coroutines adapter with the retrofit2 library.| |false| |useRxJava|Whether to use the RxJava adapter with the retrofit2 library.| |false| |useRxJava2|Whether to use the RxJava2 adapter with the retrofit2 library.| |false| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index d2a229fe988..c98ffd60e72 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -63,6 +63,8 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { public static final String MOSHI_CODE_GEN = "moshiCodeGen"; + public static final String SUPPORT_ANDROID_API_LEVEL_25_AND_BELLOW = "supportAndroidApiLevel25AndBelow"; + protected static final String VENDOR_EXTENSION_BASE_NAME_LITERAL = "x-base-name-literal"; protected String dateLibrary = DateLibrary.JAVA8.value; @@ -208,6 +210,8 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { cliOptions.add(CliOption.newBoolean(USE_COROUTINES, "Whether to use the Coroutines adapter with the retrofit2 library.")); cliOptions.add(CliOption.newBoolean(MOSHI_CODE_GEN, "Whether to enable codegen with the Moshi library. Refer to the [official Moshi doc](https://github.com/square/moshi#codegen) for more info.")); + + cliOptions.add(CliOption.newBoolean(SUPPORT_ANDROID_API_LEVEL_25_AND_BELLOW, "[WARNING] This flag will generate code that has a known security vulnerability. It uses `kotlin.io.createTempFile` instead of `java.nio.file.Files.createTempFile` in oder to support Android API level 25 and bellow. For more info, please check the following links https://github.com/OpenAPITools/openapi-generator/security/advisories/GHSA-23x4-m842-fmwf, https://github.com/OpenAPITools/openapi-generator/pull/9284")); } public CodegenType getTag() { diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache index aa5a275a9f3..b470beae2e5 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache @@ -1,5 +1,8 @@ package {{packageName}}.infrastructure +{{#supportAndroidApiLevel25AndBelow}} +import android.os.Build +{{/supportAndroidApiLevel25AndBelow}} import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody @@ -28,7 +31,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date {{^threetenbp}} import java.time.LocalDate @@ -176,7 +178,17 @@ import org.threeten.bp.OffsetTime } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.{{packageName}}", null).toFile() + {{^supportAndroidApiLevel25AndBelow}} + val f = java.nio.file.Files.createTempFile("tmp.{{packageName}}", null).toFile() + {{/supportAndroidApiLevel25AndBelow}} + {{#supportAndroidApiLevel25AndBelow}} + val f = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + java.nio.file.Files.createTempFile("tmp.net.medicineone.teleconsultationandroid.openapi.openapicommon", null).toFile() + } else { + @Suppress("DEPRECATION") + createTempFile("tmp.net.medicineone.teleconsultationandroid.openapi.openapicommon", null) + } + {{/supportAndroidApiLevel25AndBelow}} f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 8ffe5403596..a1c98200ac4 100644 --- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -16,7 +16,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date import java.time.LocalDate import java.time.LocalDateTime @@ -119,7 +118,7 @@ open class ApiClient(val baseUrl: String) { } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.org.openapitools.client", null).toFile() + val f = java.nio.file.Files.createTempFile("tmp.org.openapitools.client", null).toFile() f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 0ea33dc522c..e9bcbc7981c 100644 --- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -16,7 +16,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date import java.time.LocalDate import java.time.LocalDateTime @@ -119,7 +118,7 @@ open class ApiClient(val baseUrl: String) { } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.org.openapitools.client", null).toFile() + val f = java.nio.file.Files.createTempFile("tmp.org.openapitools.client", null).toFile() f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index cd2898923dd..a9fe6b46d77 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,5 +1,6 @@ package org.openapitools.client.infrastructure +import android.os.Build import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody @@ -16,7 +17,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date import java.time.LocalDate import java.time.LocalDateTime @@ -119,7 +119,12 @@ open class ApiClient(val baseUrl: String) { } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.org.openapitools.client", null).toFile() + val f = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + java.nio.file.Files.createTempFile("tmp.net.medicineone.teleconsultationandroid.openapi.openapicommon", null).toFile() + } else { + @Suppress("DEPRECATION") + createTempFile("tmp.net.medicineone.teleconsultationandroid.openapi.openapicommon", null) + } f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 8ffe5403596..a1c98200ac4 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -16,7 +16,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date import java.time.LocalDate import java.time.LocalDateTime @@ -119,7 +118,7 @@ open class ApiClient(val baseUrl: String) { } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.org.openapitools.client", null).toFile() + val f = java.nio.file.Files.createTempFile("tmp.org.openapitools.client", null).toFile() f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index bc9ed02c0f1..c548762e28b 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -16,7 +16,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date import java.time.LocalDate import java.time.LocalDateTime @@ -119,7 +118,7 @@ open class ApiClient(val baseUrl: String) { } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.org.openapitools.client", null).toFile() + val f = java.nio.file.Files.createTempFile("tmp.org.openapitools.client", null).toFile() f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index d43c0c614d5..98b12a97150 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -16,7 +16,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date import java.time.LocalDate import java.time.LocalDateTime @@ -119,7 +118,7 @@ internal open class ApiClient(val baseUrl: String) { } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.org.openapitools.client", null).toFile() + val f = java.nio.file.Files.createTempFile("tmp.org.openapitools.client", null).toFile() f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index bc9ed02c0f1..c548762e28b 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -16,7 +16,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date import java.time.LocalDate import java.time.LocalDateTime @@ -119,7 +118,7 @@ open class ApiClient(val baseUrl: String) { } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.org.openapitools.client", null).toFile() + val f = java.nio.file.Files.createTempFile("tmp.org.openapitools.client", null).toFile() f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 8fad7b08960..72929a5dc0f 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -14,7 +14,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date import java.time.LocalDate import java.time.LocalDateTime @@ -117,7 +116,7 @@ open class ApiClient(val baseUrl: String) { } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.org.openapitools.client", null).toFile() + val f = java.nio.file.Files.createTempFile("tmp.org.openapitools.client", null).toFile() f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index bc9ed02c0f1..c548762e28b 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -16,7 +16,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date import java.time.LocalDate import java.time.LocalDateTime @@ -119,7 +118,7 @@ open class ApiClient(val baseUrl: String) { } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.org.openapitools.client", null).toFile() + val f = java.nio.file.Files.createTempFile("tmp.org.openapitools.client", null).toFile() f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index bd683341896..12ea3e7c065 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -16,7 +16,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date import org.threeten.bp.LocalDate import org.threeten.bp.LocalDateTime @@ -119,7 +118,7 @@ open class ApiClient(val baseUrl: String) { } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.org.openapitools.client", null).toFile() + val f = java.nio.file.Files.createTempFile("tmp.org.openapitools.client", null).toFile() f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index a9f5f6ce2a2..9da041200e1 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -16,7 +16,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date import java.time.LocalDate import java.time.LocalDateTime @@ -119,7 +118,7 @@ open class ApiClient(val baseUrl: String) { } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.org.openapitools.client", null).toFile() + val f = java.nio.file.Files.createTempFile("tmp.org.openapitools.client", null).toFile() f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index bc9ed02c0f1..c548762e28b 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -16,7 +16,6 @@ import java.io.File import java.io.BufferedWriter import java.io.FileWriter import java.net.URLConnection -import java.nio.file.Files import java.util.Date import java.time.LocalDate import java.time.LocalDateTime @@ -119,7 +118,7 @@ open class ApiClient(val baseUrl: String) { } if (T::class.java == File::class.java) { // return tempfile - val f = Files.createTempFile("tmp.org.openapitools.client", null).toFile() + val f = java.nio.file.Files.createTempFile("tmp.org.openapitools.client", null).toFile() f.deleteOnExit() val out = BufferedWriter(FileWriter(f)) out.write(bodyContent) From b2041414eb4575679acd2f61716a060d89595a07 Mon Sep 17 00:00:00 2001 From: Anders Aaen Springborg Date: Wed, 26 May 2021 17:32:16 +0200 Subject: [PATCH 047/192] Change logo to English (#9591) * add Aalborg university * English logo --- .../img/companies/aalborg_university.png | Bin 198345 -> 17144 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/website/static/img/companies/aalborg_university.png b/website/static/img/companies/aalborg_university.png index 89282d904676005c74069e5d0e8350fe22e91b93..5fcf0511d478161f73004a87f9db365120c6771e 100644 GIT binary patch literal 17144 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 A?f?J) literal 198345 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¦q^9G&?{M9J7<{{Cw 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�(uRegao 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 z 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 z�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
    &cov(2rvIjM1&CW#TYP0j%-%FM~ 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 OJeq2{sudth`2PWfSs|7H From 81343622443ecc6b0e1c15fac0f07fd3ca7e5ff0 Mon Sep 17 00:00:00 2001 From: Samuel Kahn <48932506+Kahncode@users.noreply.github.com> Date: Wed, 26 May 2021 17:33:47 +0200 Subject: [PATCH 048/192] [cpp-ue4] Added public methods to process enums in string form (#9569) * [cpp-ue4] Added public methods to process enums in string form as it may be useful for the user code * [cpp-ue4] Fixed linker errors in some configurations --- .../cpp-ue4/api-operations-header.mustache | 3 + .../cpp-ue4/api-operations-source.mustache | 31 +++++++--- .../resources/cpp-ue4/model-header.mustache | 6 ++ .../resources/cpp-ue4/model-source.mustache | 62 ++++++++++++++----- 4 files changed, 78 insertions(+), 24 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-header.mustache b/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-header.mustache index 2319c59b3fa..f4810ba5888 100644 --- a/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-header.mustache @@ -35,6 +35,9 @@ public: {{/enumVars}} }; {{/allowableValues}} + + static FString EnumToString(const {{{enumName}}}& EnumValue); + static bool EnumFromString(const FString& EnumAsString, {{{enumName}}}& EnumValue); {{#description}}/* {{{description}}} */ {{/description}}{{^required}}TOptional<{{/required}}{{{datatypeWithEnum}}}{{^required}}>{{/required}} {{paramName}}{{#required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{/required}}; {{/isEnum}} diff --git a/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-source.mustache b/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-source.mustache index 07b557157ea..4d262483e1f 100644 --- a/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-source.mustache @@ -32,6 +32,28 @@ inline FString ToString(const {{classname}}::{{operationIdCamelCase}}Request::{{ return TEXT(""); } +FString {{classname}}::{{operationIdCamelCase}}Request::EnumToString(const {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}& EnumValue) +{ + return ToString(EnumValue); +} + +inline bool FromString(const FString& EnumAsString, {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}& Value) +{ + static TMap StringToEnum = { {{#allowableValues}}{{#enumVars}} + { TEXT("{{{value}}}"), {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}::{{name}} },{{/enumVars}}{{/allowableValues}} }; + + const auto Found = StringToEnum.Find(EnumAsString); + if(Found) + Value = *Found; + + return Found != nullptr; +} + +bool {{classname}}::{{operationIdCamelCase}}Request::EnumFromString(const FString& EnumAsString, {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}& EnumValue) +{ + return FromString(EnumAsString, EnumValue); +} + inline FStringFormatArg ToStringFormatArg(const {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}& Value) { return FStringFormatArg(ToString(Value)); @@ -48,15 +70,8 @@ inline bool TryGetJsonValue(const TSharedPtr& JsonValue, {{classname FString TmpValue; if (JsonValue->TryGetString(TmpValue)) { - static TMap StringToEnum = { {{#enumVars}} - { TEXT("{{{value}}}"), {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}::{{name}} },{{/enumVars}} }; - - const auto Found = StringToEnum.Find(TmpValue); - if(Found) - { - Value = *Found; + if(FromString(TmpValue, Value)) return true; - } } {{/allowableValues}} return false; diff --git a/modules/openapi-generator/src/main/resources/cpp-ue4/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-ue4/model-header.mustache index 900dcf7f318..8742ad7a85f 100644 --- a/modules/openapi-generator/src/main/resources/cpp-ue4/model-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-ue4/model-header.mustache @@ -36,6 +36,9 @@ public: Values Value{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}; {{/allowableValues}} + + static FString EnumToString(const Values& EnumValue); + static bool EnumFromString(const FString& EnumAsString, Values& EnumValue); {{/isEnum}} {{^isEnum}} FString Value{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}; @@ -51,6 +54,9 @@ public: {{/enumVars}} }; {{/allowableValues}} + + static FString EnumToString(const {{{enumName}}}& EnumValue); + static bool EnumFromString(const FString& EnumAsString, {{{enumName}}}& EnumValue); {{#description}}/* {{{description}}} */ {{/description}}{{^required}}TOptional<{{/required}}{{{datatypeWithEnum}}}{{^required}}>{{/required}} {{name}}{{#required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{/required}}; {{/isEnum}} diff --git a/modules/openapi-generator/src/main/resources/cpp-ue4/model-source.mustache b/modules/openapi-generator/src/main/resources/cpp-ue4/model-source.mustache index d084f8a8033..3022a7a935d 100644 --- a/modules/openapi-generator/src/main/resources/cpp-ue4/model-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-ue4/model-source.mustache @@ -28,6 +28,28 @@ inline FString ToString(const {{classname}}::Values& Value) return TEXT(""); } +FString {{classname}}::EnumToString(const {{classname}}::Values& EnumValue) +{ + return ToString(EnumValue); +} + +inline bool FromString(const FString& EnumAsString, {{classname}}::Values& Value) +{ + static TMap StringToEnum = { {{#allowableValues}}{{#enumVars}} + { TEXT("{{{value}}}"), {{classname}}::Values::{{name}} },{{/enumVars}}{{/allowableValues}} }; + + const auto Found = StringToEnum.Find(EnumAsString); + if(Found) + Value = *Found; + + return Found != nullptr; +} + +bool {{classname}}::EnumFromString(const FString& EnumAsString, {{classname}}::Values& EnumValue) +{ + return FromString(EnumAsString, EnumValue); +} + inline FStringFormatArg ToStringFormatArg(const {{classname}}::Values& Value) { return FStringFormatArg(ToString(Value)); @@ -44,15 +66,8 @@ inline bool TryGetJsonValue(const TSharedPtr& JsonValue, {{classname FString TmpValue; if (JsonValue->TryGetString(TmpValue)) { - static TMap StringToEnum = { {{#enumVars}} - { TEXT("{{{value}}}"), {{classname}}::Values::{{name}} },{{/enumVars}} }; - - const auto Found = StringToEnum.Find(TmpValue); - if(Found) - { - Value = *Found; + if(FromString(TmpValue, Value)) return true; - } } {{/allowableValues}} return false; @@ -78,6 +93,28 @@ inline FString ToString(const {{classname}}::{{{enumName}}}& Value) return TEXT(""); } +FString {{classname}}::EnumToString(const {{classname}}::{{{enumName}}}& EnumValue) +{ + return ToString(EnumValue); +} + +inline bool FromString(const FString& EnumAsString, {{classname}}::{{{enumName}}}& Value) +{ + static TMap StringToEnum = { {{#allowableValues}}{{#enumVars}} + { TEXT("{{{value}}}"), {{classname}}::{{{enumName}}}::{{name}} },{{/enumVars}}{{/allowableValues}} }; + + const auto Found = StringToEnum.Find(EnumAsString); + if(Found) + Value = *Found; + + return Found != nullptr; +} + +bool {{classname}}::EnumFromString(const FString& EnumAsString, {{classname}}::{{{enumName}}}& EnumValue) +{ + return FromString(EnumAsString, EnumValue); +} + inline FStringFormatArg ToStringFormatArg(const {{classname}}::{{{enumName}}}& Value) { return FStringFormatArg(ToString(Value)); @@ -94,15 +131,8 @@ inline bool TryGetJsonValue(const TSharedPtr& JsonValue, {{classname FString TmpValue; if (JsonValue->TryGetString(TmpValue)) { - static TMap StringToEnum = { {{#enumVars}} - { TEXT("{{{value}}}"), {{classname}}::{{{enumName}}}::{{name}} },{{/enumVars}} }; - - const auto Found = StringToEnum.Find(TmpValue); - if(Found) - { - Value = *Found; + if(FromString(TmpValue, Value)) return true; - } } {{/allowableValues}} return false; From 6e6b8472d4869148840ebaf7cfe5c72d6ed22d7b Mon Sep 17 00:00:00 2001 From: Justin Black Date: Wed, 26 May 2021 11:59:28 -0700 Subject: [PATCH 049/192] Adds isShort + isUnboundedInteger to IJsonSchemaValidationProperties implementers (#9519) * Adds getter + setter methods for isShortInteger in IJsonSchemaValidationProperties * Adds isShortInteger to CodegenModel * Adds isShortInteger to CodegenProperty * Adds isShortInteger to CodegenParameter * Adds isShortInteger to CodegenResponse * Ensures that samples are up to date * Changes interface to isShort * Removes typescript file * Adds isShort to CodegenModel and CodegenProperty instances * Samples updated, shows too many changes across generators * Adds isUnboundedInteger and implements it in CodegenModel * Adds isUnboundedInteger to COdegenProperty * Adds isUnboundedInteger to CodegenParameter * Adds isUnboundedInteger to CodegenResponse * Regenerates samples and docs * Adds testBooleansSetForIntSchemas * Fixes integer tests --- .../openapitools/codegen/CodegenModel.java | 24 +++- .../codegen/CodegenParameter.java | 26 +++- .../openapitools/codegen/CodegenProperty.java | 24 +++- .../openapitools/codegen/CodegenResponse.java | 24 +++- .../openapitools/codegen/DefaultCodegen.java | 29 ++++- .../IJsonSchemaValidationProperties.java | 10 +- .../codegen/DefaultCodegenTest.java | 123 ++++++++++++++++++ .../src/test/resources/3_0/issue_9447.yaml | 106 +++++++++++++++ .../handler/PathHandlerInterface.java | 4 +- 9 files changed, 356 insertions(+), 14 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/issue_9447.yaml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java index e7a3adce6a3..7669f837919 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java @@ -64,7 +64,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { public String defaultValue; public String arrayModelType; public boolean isAlias; // Is this effectively an alias of another simple type - public boolean isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble, isDate, isDateTime; + public boolean isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble, isDate, isDateTime, isShort, isUnboundedInteger; private boolean additionalPropertiesIsAnyType; public List vars = new ArrayList(); // all properties (without parent's properties) public List allVars = new ArrayList(); // all properties (with parent's properties) @@ -606,6 +606,22 @@ public class CodegenModel implements IJsonSchemaValidationProperties { this.isArray = isArray; } + @Override + public boolean getIsShort() { return isShort; } + + @Override + public void setIsShort(boolean isShort) { + this.isShort = isShort; + } + + @Override + public boolean getIsUnboundedInteger() { return isUnboundedInteger; } + + @Override + public void setIsUnboundedInteger(boolean isUnboundedInteger) { + this.isUnboundedInteger = isUnboundedInteger; + } + @Override public CodegenProperty getAdditionalProperties() { return additionalProperties; } @@ -752,7 +768,9 @@ public class CodegenModel implements IJsonSchemaValidationProperties { return isAlias == that.isAlias && isString == that.isString && isInteger == that.isInteger && + isShort == that.isShort && isLong == that.isLong && + isUnboundedInteger == that.isUnboundedInteger && isNumber == that.isNumber && isNumeric == that.isNumeric && isFloat == that.isFloat && @@ -839,7 +857,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { getDescription(), getClassVarName(), getModelJson(), getDataType(), getXmlPrefix(), getXmlNamespace(), getXmlName(), getClassFilename(), getUnescapedDescription(), getDiscriminator(), getDefaultValue(), getArrayModelType(), isAlias, isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble, - isDate, isDateTime, isNull, hasValidation, + isDate, isDateTime, isNull, hasValidation, isShort, isUnboundedInteger, getVars(), getAllVars(), getRequiredVars(), getOptionalVars(), getReadOnlyVars(), getReadWriteVars(), getParentVars(), getAllowableValues(), getMandatory(), getAllMandatory(), getImports(), hasVars, isEmptyVars(), hasMoreModels, hasEnums, isEnum, isNullable, hasRequired, hasOptional, isArray, @@ -881,7 +899,9 @@ public class CodegenModel implements IJsonSchemaValidationProperties { sb.append(", isAlias=").append(isAlias); sb.append(", isString=").append(isString); sb.append(", isInteger=").append(isInteger); + sb.append(", isShort=").append(isShort); sb.append(", isLong=").append(isLong); + sb.append(", isUnboundedInteger=").append(isUnboundedInteger); sb.append(", isNumber=").append(isNumber); sb.append(", isNumeric=").append(isNumeric); sb.append(", isFloat=").append(isFloat); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java index 326785046d9..d2dc9fa9808 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java @@ -35,7 +35,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { public String example; // example value (x-example) public String jsonSchema; public boolean isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, - isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType; + isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isShort, isUnboundedInteger; public boolean isArray, isMap; public boolean isFile; public boolean isEnum; @@ -184,7 +184,9 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { output.isString = this.isString; output.isNumeric = this.isNumeric; output.isInteger = this.isInteger; + output.isShort = this.isShort; output.isLong = this.isLong; + output.isUnboundedInteger = this.isUnboundedInteger; output.isDouble = this.isDouble; output.isDecimal = this.isDecimal; output.isFloat = this.isFloat; @@ -209,7 +211,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { @Override public int hashCode() { - return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style, isDeepObject, example, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, getMaxProperties(), getMinProperties(), isNullable, required, getMaximum(), getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(), getPattern(), getMaxItems(), getMinItems(), getUniqueItems(), contentType, multipleOf, isNull, additionalPropertiesIsAnyType, hasVars, hasRequired); + return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumName, style, isDeepObject, example, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, getMaxProperties(), getMinProperties(), isNullable, required, getMaximum(), getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(), getPattern(), getMaxItems(), getMinItems(), getUniqueItems(), contentType, multipleOf, isNull, additionalPropertiesIsAnyType, hasVars, hasRequired, isShort, isUnboundedInteger); } @Override @@ -231,7 +233,9 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { isString == that.isString && isNumeric == that.isNumeric && isInteger == that.isInteger && + isShort == that.isShort && isLong == that.isLong && + isUnboundedInteger == that.isUnboundedInteger && isNumber == that.isNumber && isFloat == that.isFloat && isDouble == that.isDouble && @@ -328,7 +332,9 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { sb.append(", isString=").append(isString); sb.append(", isNumeric=").append(isNumeric); sb.append(", isInteger=").append(isInteger); + sb.append(", isShort=").append(isShort); sb.append(", isLong=").append(isLong); + sb.append(", isUnboundedInteger=").append(isUnboundedInteger); sb.append(", isNumber=").append(isNumber); sb.append(", isFloat=").append(isFloat); sb.append(", isDouble=").append(isDouble); @@ -560,6 +566,22 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { this.isArray = isArray; } + @Override + public boolean getIsShort() { return isShort; } + + @Override + public void setIsShort(boolean isShort) { + this.isShort = isShort; + } + + @Override + public boolean getIsUnboundedInteger() { return isUnboundedInteger; } + + @Override + public void setIsUnboundedInteger(boolean isUnboundedInteger) { + this.isUnboundedInteger = isUnboundedInteger; + } + @Override public CodegenProperty getAdditionalProperties() { return additionalProperties; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java index b20e55f61b4..47e69fe89d4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java @@ -118,7 +118,9 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti public boolean isString; public boolean isNumeric; public boolean isInteger; + public boolean isShort; public boolean isLong; + public boolean isUnboundedInteger; public boolean isNumber; public boolean isFloat; public boolean isDouble; @@ -507,6 +509,22 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti this.isArray = isArray; } + @Override + public boolean getIsShort() { return isShort; } + + @Override + public void setIsShort(boolean isShort) { + this.isShort = isShort; + } + + @Override + public boolean getIsUnboundedInteger() { return isUnboundedInteger; } + + @Override + public void setIsUnboundedInteger(boolean isUnboundedInteger) { + this.isUnboundedInteger = isUnboundedInteger; + } + public Map getVendorExtensions() { return vendorExtensions; } @@ -765,7 +783,9 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti sb.append(", isString=").append(isString); sb.append(", isNumeric=").append(isNumeric); sb.append(", isInteger=").append(isInteger); + sb.append(", isShort=").append(isShort); sb.append(", isLong=").append(isLong); + sb.append(", isUnboundedInteger=").append(isUnboundedInteger); sb.append(", isNumber=").append(isNumber); sb.append(", isFloat=").append(isFloat); sb.append(", isDouble=").append(isDouble); @@ -838,7 +858,9 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti isString == that.isString && isNumeric == that.isNumeric && isInteger == that.isInteger && + isShort == that.isShort && isLong == that.isLong && + isUnboundedInteger == that.isUnboundedInteger && isNumber == that.isNumber && isFloat == that.isFloat && isDouble == that.isDouble && @@ -926,7 +948,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti hasMoreNonReadOnly, isPrimitiveType, isModel, isContainer, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isFile, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, - isArray, isMap, isEnum, isReadOnly, isWriteOnly, isNullable, + isArray, isMap, isEnum, isReadOnly, isWriteOnly, isNullable, isShort, isUnboundedInteger, isSelfReference, isCircularReference, isDiscriminator, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, isInherited, discriminatorValue, nameInCamelCase, diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java index bb062c1304f..d8c1756f446 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java @@ -36,7 +36,9 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { public boolean isString; public boolean isNumeric; public boolean isInteger; + public boolean isShort; public boolean isLong; + public boolean isUnboundedInteger; public boolean isNumber; public boolean isFloat; public boolean isDouble; @@ -89,7 +91,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBoolean, isDate, isDateTime, isUuid, isEmail, isModel, isFreeFormObject, isAnyType, isDefault, simpleType, primitiveType, isMap, isArray, isBinary, isFile, schema, jsonSchema, vendorExtensions, items, additionalProperties, - vars, requiredVars, isNull, hasValidation, + vars, requiredVars, isNull, hasValidation, isShort, isUnboundedInteger, getMaxProperties(), getMinProperties(), uniqueItems, getMaxItems(), getMinItems(), getMaxLength(), getMinLength(), exclusiveMinimum, exclusiveMaximum, getMinimum(), getMaximum(), getPattern(), is1xx, is2xx, is3xx, is4xx, is5xx, additionalPropertiesIsAnyType, hasVars, hasRequired); @@ -104,7 +106,9 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { isString == that.isString && isNumeric == that.isNumeric && isInteger == that.isInteger && + isShort == that.isShort && isLong == that.isLong && + isUnboundedInteger == that.isUnboundedInteger && isNumber == that.isNumber && isFloat == that.isFloat && isDouble == that.isDouble && @@ -316,6 +320,22 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { this.isArray = isArray; } + @Override + public boolean getIsShort() { return isShort; } + + @Override + public void setIsShort(boolean isShort) { + this.isShort = isShort; + } + + @Override + public boolean getIsUnboundedInteger() { return isUnboundedInteger; } + + @Override + public void setIsUnboundedInteger(boolean isUnboundedInteger) { + this.isUnboundedInteger = isUnboundedInteger; + } + @Override public void setIsModel(boolean isModel) { this.isModel = isModel; @@ -402,7 +422,9 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { sb.append(", isString=").append(isString); sb.append(", isNumeric=").append(isNumeric); sb.append(", isInteger=").append(isInteger); + sb.append(", isShort=").append(isShort); sb.append(", isLong=").append(isLong); + sb.append(", isUnboundedInteger=").append(isUnboundedInteger); sb.append(", isNumber=").append(isNumber); sb.append(", isFloat=").append(isFloat); sb.append(", isDouble=").append(isDouble); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 2edf1bf15af..c26a4df1362 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -2532,8 +2532,13 @@ public class DefaultCodegen implements CodegenConfig { m.isNumeric = Boolean.TRUE; if (ModelUtils.isLongSchema(schema)) { // int64/long format m.isLong = Boolean.TRUE; - } else { // int32 format - m.isInteger = Boolean.TRUE; + } else { + m.isInteger = Boolean.TRUE; // older use case, int32 and unbounded int + if (ModelUtils.isShortSchema(schema)) { // int32 + m.setIsShort(Boolean.TRUE); + } else { // unbounded integer + m.setIsUnboundedInteger(Boolean.TRUE); + } } } else if (ModelUtils.isDateTimeSchema(schema)) { // NOTE: DateTime schemas as CodegenModel is a rare use case and may be removed at a later date. @@ -3192,10 +3197,14 @@ public class DefaultCodegen implements CodegenConfig { property.isNumeric = Boolean.TRUE; if (ModelUtils.isLongSchema(p)) { // int64/long format property.isLong = Boolean.TRUE; - } else { // int32 format - property.isInteger = Boolean.TRUE; + } else { + property.isInteger = Boolean.TRUE; // older use case, int32 and unbounded int + if (ModelUtils.isShortSchema(p)) { // int32 + property.setIsShort(Boolean.TRUE); + } else { // unbounded integer + property.setIsUnboundedInteger(Boolean.TRUE); + } } - } else if (ModelUtils.isBooleanSchema(p)) { // boolean type property.isBoolean = true; property.getter = toBooleanGetter(name); @@ -4067,6 +4076,11 @@ public class DefaultCodegen implements CodegenConfig { } else if (Boolean.TRUE.equals(cp.isInteger)) { r.isInteger = true; r.isNumeric = true; + if (Boolean.TRUE.equals(cp.isShort)) { + r.isShort = true; + } else if (Boolean.TRUE.equals(cp.isUnboundedInteger)) { + r.isUnboundedInteger = true; + } } else if (Boolean.TRUE.equals(cp.isNumber)) { r.isNumber = true; r.isNumeric = true; @@ -5383,6 +5397,11 @@ public class DefaultCodegen implements CodegenConfig { } else if (Boolean.TRUE.equals(property.isInteger)) { parameter.isInteger = true; parameter.isPrimitiveType = true; + if (Boolean.TRUE.equals(property.isShort)) { + parameter.isShort = true; + } else if (Boolean.TRUE.equals(property.isUnboundedInteger)) { + parameter.isUnboundedInteger = true; + } } else if (Boolean.TRUE.equals(property.isDouble)) { parameter.isDouble = true; parameter.isPrimitiveType = true; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java index 4eb567b6cdc..ea677853335 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java @@ -77,7 +77,15 @@ public interface IJsonSchemaValidationProperties { boolean getIsArray(); - void setIsArray(boolean isArray); + void setIsArray(boolean isShort); + + boolean getIsShort(); + + void setIsShort(boolean isShort); + + boolean getIsUnboundedInteger(); + + void setIsUnboundedInteger(boolean isUnboundedInteger); CodegenProperty getAdditionalProperties(); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index e125c98a463..1d249e687e4 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -3437,4 +3437,127 @@ public class DefaultCodegenTest { } } } + + @Test + public void testBooleansSetForIntSchemas() { + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue_9447.yaml"); + final DefaultCodegen codegen = new DefaultCodegen(); + codegen.setOpenAPI(openAPI); + codegen.setDisallowAdditionalPropertiesIfNotPresent(false); + + String modelName; + Schema sc; + CodegenModel cm; + + modelName = "UnboundedInteger"; + sc = openAPI.getComponents().getSchemas().get(modelName); + cm = codegen.fromModel(modelName, sc); + assertEquals(cm.isUnboundedInteger, true); + assertEquals(cm.isInteger, true); + assertEquals(cm.isShort, false); + assertEquals(cm.isLong, false); + + modelName = "Int32"; + sc = openAPI.getComponents().getSchemas().get(modelName); + cm = codegen.fromModel(modelName, sc); + assertEquals(cm.isUnboundedInteger, false); + assertEquals(cm.isInteger, true); + assertEquals(cm.isShort, true); + assertEquals(cm.isLong, false); + + modelName = "Int64"; + sc = openAPI.getComponents().getSchemas().get(modelName); + cm = codegen.fromModel(modelName, sc); + assertEquals(cm.isUnboundedInteger, false); + assertEquals(cm.isInteger, false); + assertEquals(cm.isShort, false); + assertEquals(cm.isLong, true); + + modelName = "ObjectModelWithIntegerProps"; + sc = openAPI.getComponents().getSchemas().get(modelName); + cm = codegen.fromModel(modelName, sc); + assertEquals(cm.isUnboundedInteger, false); + assertEquals(cm.isInteger, false); + assertEquals(cm.isShort, false); + assertEquals(cm.isLong, false); + CodegenProperty cp; + cp = cm.vars.get(0); + assertEquals(cp.isUnboundedInteger, true); + assertEquals(cp.isInteger, true); + assertEquals(cp.isShort, false); + assertEquals(cp.isLong, false); + cp = cm.vars.get(1); + assertEquals(cp.isUnboundedInteger, false); + assertEquals(cp.isInteger, true); + assertEquals(cp.isShort, true); + assertEquals(cp.isLong, false); + cp = cm.vars.get(2); + assertEquals(cp.isUnboundedInteger, false); + assertEquals(cp.isInteger, false); + assertEquals(cp.isShort, false); + assertEquals(cp.isLong, true); + + String path; + Operation operation; + CodegenOperation co; + CodegenParameter cpa; + CodegenResponse cr; + + path = "/UnboundedInteger"; + operation = openAPI.getPaths().get(path).getPost(); + co = codegen.fromOperation(path, "POST", operation, null); + cpa = co.pathParams.get(0); + assertEquals(cpa.isUnboundedInteger, true); + assertEquals(cpa.isInteger, true); + assertEquals(cpa.isShort, false); + assertEquals(cpa.isLong, false); + cpa = co.bodyParam; + assertEquals(cpa.isUnboundedInteger, true); + assertEquals(cpa.isInteger, true); + assertEquals(cpa.isShort, false); + assertEquals(cpa.isLong, false); + cr = co.responses.get(0); + assertEquals(cr.isUnboundedInteger, true); + assertEquals(cr.isInteger, true); + assertEquals(cr.isShort, false); + assertEquals(cr.isLong, false); + + path = "/Int32"; + operation = openAPI.getPaths().get(path).getPost(); + co = codegen.fromOperation(path, "POST", operation, null); + cpa = co.pathParams.get(0); + assertEquals(cpa.isUnboundedInteger, false); + assertEquals(cpa.isInteger, true); + assertEquals(cpa.isShort, true); + assertEquals(cpa.isLong, false); + cpa = co.bodyParam; + assertEquals(cpa.isUnboundedInteger, false); + assertEquals(cpa.isInteger, true); + assertEquals(cpa.isShort, true); + assertEquals(cpa.isLong, false); + cr = co.responses.get(0); + assertEquals(cr.isUnboundedInteger, false); + assertEquals(cr.isInteger, true); + assertEquals(cr.isShort, true); + assertEquals(cr.isLong, false); + + path = "/Int64"; + operation = openAPI.getPaths().get(path).getPost(); + co = codegen.fromOperation(path, "POST", operation, null); + cpa = co.pathParams.get(0); + assertEquals(cpa.isUnboundedInteger, false); + assertEquals(cpa.isInteger, false); + assertEquals(cpa.isShort, false); + assertEquals(cpa.isLong, true); + cpa = co.bodyParam; + assertEquals(cpa.isUnboundedInteger, false); + assertEquals(cpa.isInteger, false); + assertEquals(cpa.isShort, false); + assertEquals(cpa.isLong, true); + cr = co.responses.get(0); + assertEquals(cr.isUnboundedInteger, false); + assertEquals(cr.isInteger, false); + assertEquals(cr.isShort, false); + assertEquals(cr.isLong, true); + } } diff --git a/modules/openapi-generator/src/test/resources/3_0/issue_9447.yaml b/modules/openapi-generator/src/test/resources/3_0/issue_9447.yaml new file mode 100644 index 00000000000..7cfa010c37f --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/issue_9447.yaml @@ -0,0 +1,106 @@ +openapi: 3.0.1 +info: + title: OpenAPI Petstore + description: "sample to vet integer handling" + license: + name: Apache-2.0 + url: https://www.apache.org/licenses/LICENSE-2.0.html + version: 1.0.0 +servers: + - url: http://petstore.swagger.io:80/v2 +tags: [] +paths: + /UnboundedInteger: + post: + operationId: UnboundedInteger + parameters: + - name: UnboundedInteger + in: path + required: true + schema: + type: integer + requestBody: + content: + application/json: + schema: + type: integer + required: true + responses: + 200: + description: success + content: + application/json: + schema: + type: integer + /Int64: + post: + operationId: Int64 + parameters: + - name: Int64 + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + type: integer + format: int64 + required: true + responses: + 200: + description: success + content: + application/json: + schema: + type: integer + format: int64 + /Int32: + post: + operationId: Int32 + parameters: + - name: Int32 + in: path + required: true + schema: + type: integer + format: int32 + requestBody: + content: + application/json: + schema: + type: integer + format: int32 + required: true + responses: + 200: + description: success + content: + application/json: + schema: + type: integer + format: int32 +components: + schemas: + UnboundedInteger: + type: integer + Int32: + type: integer + format: int32 + Int64: + type: integer + format: int64 + ObjectModelWithIntegerProps: + type: object + properties: + UnboundedInteger: + type: integer + Int32: + type: integer + format: int32 + Int64: + type: integer + format: int64 + securitySchemes: {} \ No newline at end of file diff --git a/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java b/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java index 41b91a89132..362ae244118 100644 --- a/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java +++ b/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java @@ -539,10 +539,10 @@ public interface PathHandlerInterface { *

    Response headers: [CodegenProperty{openApiType='integer', baseName='X-Rate-Limit', complexType='null', getter='getxRateLimit', setter='setxRateLimit', description='calls per hour allowed by the user', dataType='Integer', datatypeWithEnum='Integer', dataFormat='int32', name='xRateLimit', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Rate-Limit;', baseType='Integer', containerType='null', title='null', unescapedDescription='calls per hour allowed by the user', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{ "type" : "integer", "format" : "int32" -}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=true, isModel=false, isContainer=false, isString=false, isNumeric=true, isInteger=true, isLong=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=false, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XRateLimit', nameInSnakeCase='X_RATE_LIMIT', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false}, CodegenProperty{openApiType='string', baseName='X-Expires-After', complexType='Date', getter='getxExpiresAfter', setter='setxExpiresAfter', description='date in UTC when toekn expires', dataType='Date', datatypeWithEnum='Date', dataFormat='date-time', name='xExpiresAfter', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Expires-After;', baseType='Date', containerType='null', title='null', unescapedDescription='date in UTC when toekn expires', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{ +}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=true, isModel=false, isContainer=false, isString=false, isNumeric=true, isInteger=true, isShort=true, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=false, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XRateLimit', nameInSnakeCase='X_RATE_LIMIT', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false}, CodegenProperty{openApiType='string', baseName='X-Expires-After', complexType='Date', getter='getxExpiresAfter', setter='setxExpiresAfter', description='date in UTC when toekn expires', dataType='Date', datatypeWithEnum='Date', dataFormat='date-time', name='xExpiresAfter', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Expires-After;', baseType='Date', containerType='null', title='null', unescapedDescription='date in UTC when toekn expires', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{ "type" : "string", "format" : "date-time" -}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=false, isModel=false, isContainer=false, isString=false, isNumeric=false, isInteger=false, isLong=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=true, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XExpiresAfter', nameInSnakeCase='X_EXPIRES_AFTER', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false}]

    +}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=false, isModel=false, isContainer=false, isString=false, isNumeric=false, isInteger=false, isShort=false, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=true, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XExpiresAfter', nameInSnakeCase='X_EXPIRES_AFTER', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false}]

    * *

    Produces: [{mediaType=application/xml}, {mediaType=application/json}]

    *

    Returns: {@link String}

    From b5843f41a60da7202f2dd86782e72fb4fe5f57b0 Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Thu, 27 May 2021 03:05:48 +0100 Subject: [PATCH 050/192] [swift5] update docs (#9587) --- docs/generators/swift5.md | 2 +- .../org/openapitools/codegen/languages/Swift5ClientCodegen.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/generators/swift5.md b/docs/generators/swift5.md index 480eda2ebfd..bace7f1f049 100644 --- a/docs/generators/swift5.md +++ b/docs/generators/swift5.md @@ -17,7 +17,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|
    **true**
    The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
    **false**
    The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
    |true| |lenientTypeCast|Accept and cast values for simple types (string->bool, string->int, int->string)| |false| |library|Library template (sub-template) to use|
    **urlsession**
    [DEFAULT] HTTP client: URLSession
    **alamofire**
    HTTP client: Alamofire
    |urlsession| -|mapFileBinaryToData|Map File and Binary to Data (default: false)| |false| +|mapFileBinaryToData|[WARNING] This option will be removed and enabled by default in the future once we've enhanced the code to work with `Data` in all the different situations. Map File and Binary to Data (default: false)| |false| |nonPublicApi|Generates code with reduced access modifiers; allows embedding elsewhere without exposing non-public API calls to consumers.(default: false)| |null| |objcCompatible|Add additional properties and methods for Objective-C compatibility (default: false)| |null| |podAuthors|Authors used for Podspec| |null| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index e84cd331369..c810c01a891 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -288,7 +288,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig .defaultValue(Boolean.TRUE.toString())); cliOptions.add(new CliOption(MAP_FILE_BINARY_TO_DATA, - "Map File and Binary to Data (default: false)") + "[WARNING] This option will be removed and enabled by default in the future once we've enhanced the code to work with `Data` in all the different situations. Map File and Binary to Data (default: false)") .defaultValue(Boolean.FALSE.toString())); supportedLibraries.put(LIBRARY_URLSESSION, "[DEFAULT] HTTP client: URLSession"); From a61db6e596cba545132bd4cdc8ea5310d8fa0c76 Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Thu, 27 May 2021 03:18:51 +0100 Subject: [PATCH 051/192] [swift5][client] fix binary response (#9595) * [swift5][client] fix binary respose * [swift5][client] fix binary respose --- .../AlamofireImplementations.mustache | 64 ++++++++++++++++++- .../URLSessionImplementations.mustache | 47 +++++++++++++- .../OpenAPIs/AlamofireImplementations.swift | 64 ++++++++++++++++++- .../OpenAPIs/URLSessionImplementations.swift | 47 +++++++++++++- .../OpenAPIs/URLSessionImplementations.swift | 47 +++++++++++++- .../OpenAPIs/URLSessionImplementations.swift | 47 +++++++++++++- .../OpenAPIs/URLSessionImplementations.swift | 47 +++++++++++++- .../OpenAPIs/URLSessionImplementations.swift | 47 +++++++++++++- .../OpenAPIs/URLSessionImplementations.swift | 47 +++++++++++++- .../OpenAPIs/URLSessionImplementations.swift | 47 +++++++++++++- .../OpenAPIs/URLSessionImplementations.swift | 47 +++++++++++++- .../OpenAPIs/URLSessionImplementations.swift | 47 +++++++++++++- .../OpenAPIs/URLSessionImplementations.swift | 47 +++++++++++++- .../URLSessionImplementations.swift | 47 +++++++++++++- .../OpenAPIs/URLSessionImplementations.swift | 47 +++++++++++++- 15 files changed, 709 insertions(+), 30 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache b/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache index 71e9670965b..b7aac0d8ef1 100644 --- a/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache @@ -190,16 +190,18 @@ private var managerStore = SynchronizedDictionary() } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.{{projectName}}.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ private var urlSessionStore = SynchronizedDictionary() completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ private var urlSessionStore = SynchronizedDictionary() completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.{{projectName}}.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift index f26fae21f71..8b73fa8aaf6 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift @@ -190,16 +190,18 @@ open class AlamofireRequestBuilder: RequestBuilder { let fileManager = FileManager.default let urlRequest = try request.asURLRequest() - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try self.getURL(from: urlRequest) var requestPath = try self.getPath(from: requestURL) if let headerFileName = self.getFileName(fromContentDisposition: dataResponse.response?.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -225,6 +227,18 @@ open class AlamofireRequestBuilder: RequestBuilder { completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.response, error))) } + }) + case is Data.Type: + validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { dataResponse in + cleanupRequest() + + switch dataResponse.result { + case .success: + completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T))) + case let .failure(error): + completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.response, error))) + } + }) default: validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { dataResponse in @@ -328,6 +342,52 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild } }) + case is URL.Type: + validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { dataResponse in + cleanupRequest() + + do { + + guard !dataResponse.result.isFailure else { + throw DownloadException.responseFailed + } + + guard let data = dataResponse.data else { + throw DownloadException.responseDataMissing + } + + guard let request = request.request else { + throw DownloadException.requestMissing + } + + let fileManager = FileManager.default + let urlRequest = try request.asURLRequest() + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try self.getURL(from: urlRequest) + + var requestPath = try self.getPath(from: requestURL) + + if let headerFileName = self.getFileName(fromContentDisposition: dataResponse.response?.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: dataResponse.response!, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, dataResponse.data, dataResponse.response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, dataResponse.data, dataResponse.response, error))) + } + return + }) case is Void.Type: validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { voidResponse in cleanupRequest() diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 52b2071ec1a..fbf069a93c4 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -205,16 +205,18 @@ open class URLSessionRequestBuilder: RequestBuilder { } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ open class URLSessionRequestBuilder: RequestBuilder { completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 52b2071ec1a..fbf069a93c4 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -205,16 +205,18 @@ open class URLSessionRequestBuilder: RequestBuilder { } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ open class URLSessionRequestBuilder: RequestBuilder { completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 52b2071ec1a..fbf069a93c4 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -205,16 +205,18 @@ open class URLSessionRequestBuilder: RequestBuilder { } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ open class URLSessionRequestBuilder: RequestBuilder { completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index c8ac98f2026..66b9d23bb39 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -205,16 +205,18 @@ internal class URLSessionRequestBuilder: RequestBuilder { } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ internal class URLSessionRequestBuilder: RequestBuilder { completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ internal class URLSessionDecodableRequestBuilder: URLSessionReques completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 52b2071ec1a..fbf069a93c4 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -205,16 +205,18 @@ open class URLSessionRequestBuilder: RequestBuilder { } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ open class URLSessionRequestBuilder: RequestBuilder { completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 52b2071ec1a..fbf069a93c4 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -205,16 +205,18 @@ open class URLSessionRequestBuilder: RequestBuilder { } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ open class URLSessionRequestBuilder: RequestBuilder { completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 52b2071ec1a..fbf069a93c4 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -205,16 +205,18 @@ open class URLSessionRequestBuilder: RequestBuilder { } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ open class URLSessionRequestBuilder: RequestBuilder { completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 52b2071ec1a..fbf069a93c4 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -205,16 +205,18 @@ open class URLSessionRequestBuilder: RequestBuilder { } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ open class URLSessionRequestBuilder: RequestBuilder { completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 52b2071ec1a..fbf069a93c4 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -205,16 +205,18 @@ open class URLSessionRequestBuilder: RequestBuilder { } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ open class URLSessionRequestBuilder: RequestBuilder { completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 52b2071ec1a..fbf069a93c4 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -205,16 +205,18 @@ open class URLSessionRequestBuilder: RequestBuilder { } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ open class URLSessionRequestBuilder: RequestBuilder { completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift index 52b2071ec1a..fbf069a93c4 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift @@ -205,16 +205,18 @@ open class URLSessionRequestBuilder: RequestBuilder { } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ open class URLSessionRequestBuilder: RequestBuilder { completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 52b2071ec1a..fbf069a93c4 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -205,16 +205,18 @@ open class URLSessionRequestBuilder: RequestBuilder { } let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] let requestURL = try getURL(from: urlRequest) var requestPath = try getPath(from: requestURL) if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") } - let filePath = documentsDirectory.appendingPathComponent(requestPath) + let filePath = cachesDirectory.appendingPathComponent(requestPath) let directoryPath = filePath.deletingLastPathComponent().path try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) @@ -232,6 +234,10 @@ open class URLSessionRequestBuilder: RequestBuilder { completion(.success(Response(response: httpResponse, body: nil))) + case is Data.Type: + + completion(.success(Response(response: httpResponse, body: data as? T))) + default: completion(.success(Response(response: httpResponse, body: data as? T))) @@ -328,6 +334,43 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui completion(.success(Response(response: httpResponse, body: body as? T))) + case is URL.Type: + do { + + guard error == nil else { + throw DownloadException.responseFailed + } + + guard let data = data else { + throw DownloadException.responseDataMissing + } + + let fileManager = FileManager.default + let cachesDirectory = fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0] + let requestURL = try getURL(from: urlRequest) + + var requestPath = try getPath(from: requestURL) + + if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { + requestPath = requestPath.appending("/\(headerFileName)") + } else { + requestPath = requestPath.appending("/tmp.PetstoreClient.\(UUID().uuidString)") + } + + let filePath = cachesDirectory.appendingPathComponent(requestPath) + let directoryPath = filePath.deletingLastPathComponent().path + + try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) + try data.write(to: filePath, options: .atomic) + + completion(.success(Response(response: httpResponse, body: filePath as? T))) + + } catch let requestParserError as DownloadException { + completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) + } catch { + completion(.failure(ErrorResponse.error(400, data, response, error))) + } + case is Void.Type: completion(.success(Response(response: httpResponse, body: nil))) From 4f1d8f469904878c215f9c07027abf7048627bc0 Mon Sep 17 00:00:00 2001 From: desmese Date: Thu, 27 May 2021 04:24:38 +0200 Subject: [PATCH 052/192] - added localVar prefix to the contentType variable defined in the api.mustache template in the java resttemplate library (#9568) - rerun generate-samples.sh and export_docs_generators.sh --- docs/generators/fsharp-functions.md | 2 +- docs/generators/fsharp-giraffe-server.md | 2 +- docs/generators/java-inflector.md | 2 +- docs/generators/jaxrs-cxf-client.md | 2 +- docs/generators/swift5.md | 4 +- .../Java/libraries/resttemplate/api.mustache | 4 +- .../petstore/R/.openapi-generator/FILES | 2 +- .../client/api/AnotherFakeApi.java | 4 +- .../org/openapitools/client/api/FakeApi.java | 56 +++--- .../client/api/FakeClassnameTags123Api.java | 4 +- .../org/openapitools/client/api/PetApi.java | 36 ++-- .../org/openapitools/client/api/StoreApi.java | 16 +- .../org/openapitools/client/api/UserApi.java | 32 ++-- .../client/api/AnotherFakeApi.java | 4 +- .../org/openapitools/client/api/FakeApi.java | 56 +++--- .../client/api/FakeClassnameTags123Api.java | 4 +- .../org/openapitools/client/api/PetApi.java | 36 ++-- .../org/openapitools/client/api/StoreApi.java | 16 +- .../org/openapitools/client/api/UserApi.java | 32 ++-- .../.openapi-generator/FILES | 2 +- .../php/OpenAPIClient-php/phpunit.xml.dist | 4 +- samples/client/petstore/powershell/README.md | 12 +- .../petstore/powershell/docs/PSPetApi.md | 2 +- .../petstore/powershell/docs/PSStoreApi.md | 2 +- .../petstore/powershell/docs/PSUserApi.md | 2 +- .../default-v3.0/models/Capitalization.ts | 1 + .../petstore_client_lib_fake/README.md | 168 +++++++++--------- .../dart-dio/petstore_client_lib/README.md | 52 +++--- .../petstore_client_lib_fake/README.md | 168 +++++++++--------- .../dart2/petstore_client_lib/README.md | 52 +++--- .../dart2/petstore_client_lib_fake/README.md | 168 +++++++++--------- .../README.md | 168 +++++++++--------- .../Org.OpenAPITools/Controllers/PetApi.cs | 8 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- .../Org.OpenAPITools/Controllers/PetApi.cs | 8 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- .../Org.OpenAPITools/Controllers/PetApi.cs | 12 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- .../Org.OpenAPITools/Controllers/PetApi.cs | 8 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- samples/server/petstore/php-slim4/README.md | 4 +- .../petstore/php-slim4/phpunit.xml.dist | 4 +- .../SymfonyBundle-php/phpunit.xml.dist | 6 +- .../python-aiohttp-srclayout/setup.py | 6 +- .../tests/conftest.py | 2 +- .../petstore/python-aiohttp-srclayout/tox.ini | 2 +- 50 files changed, 600 insertions(+), 599 deletions(-) diff --git a/docs/generators/fsharp-functions.md b/docs/generators/fsharp-functions.md index bb16f39fa77..2a81000a7fb 100644 --- a/docs/generators/fsharp-functions.md +++ b/docs/generators/fsharp-functions.md @@ -22,7 +22,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |OpenAPI/src| +|sourceFolder|source folder for generated code| |OpenAPI\src| ## IMPORT MAPPING diff --git a/docs/generators/fsharp-giraffe-server.md b/docs/generators/fsharp-giraffe-server.md index f374168aa71..66150dbec0d 100644 --- a/docs/generators/fsharp-giraffe-server.md +++ b/docs/generators/fsharp-giraffe-server.md @@ -19,7 +19,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |packageVersion|F# package version.| |1.0.0| |returnICollection|Return ICollection<T> instead of the concrete type.| |false| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |OpenAPI/src| +|sourceFolder|source folder for generated code| |OpenAPI\src| |useCollection|Deserialize array types to Collection<T> instead of List<T>.| |false| |useDateTimeOffset|Use DateTimeOffset to model date-time properties| |false| |useSwashbuckle|Uses the Swashbuckle.AspNetCore NuGet package for documentation.| |false| diff --git a/docs/generators/java-inflector.md b/docs/generators/java-inflector.md index 373bc61861b..131b09f3f90 100644 --- a/docs/generators/java-inflector.md +++ b/docs/generators/java-inflector.md @@ -48,7 +48,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |snapshotVersion|Uses a SNAPSHOT version.|
    **true**
    Use a SnapShot Version
    **false**
    Use a Release Version
    |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |src/gen/java| +|sourceFolder|source folder for generated code| |src\gen\java| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-cxf-client.md b/docs/generators/jaxrs-cxf-client.md index fb3547c920d..25d03ea104b 100644 --- a/docs/generators/jaxrs-cxf-client.md +++ b/docs/generators/jaxrs-cxf-client.md @@ -48,7 +48,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |snapshotVersion|Uses a SNAPSHOT version.|
    **true**
    Use a SnapShot Version
    **false**
    Use a Release Version
    |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |src/gen/java| +|sourceFolder|source folder for generated code| |src\gen\java| |useBeanValidation|Use BeanValidation API annotations| |false| |useGenericResponse|Use generic response| |false| |useGzipFeatureForTests|Use Gzip Feature for tests| |false| diff --git a/docs/generators/swift5.md b/docs/generators/swift5.md index bace7f1f049..2846d6de2b9 100644 --- a/docs/generators/swift5.md +++ b/docs/generators/swift5.md @@ -36,10 +36,10 @@ These options may be applied as additional-properties (cli) or configOptions (pl |responseAs|Optionally use libraries to manage response. Currently PromiseKit, RxSwift, Result, Combine are available.| |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|swiftPackagePath|Set a custom source path instead of OpenAPIClient/Classes/OpenAPIs.| |null| +|swiftPackagePath|Set a custom source path instead of OpenAPIClient\Classes\OpenAPIs.| |null| |swiftUseApiNamespace|Flag to make all the API classes inner-class of {{projectName}}API| |null| |useBacktickEscapes|Escape reserved words using backticks (default: false)| |false| -|useSPMFileStructure|Use SPM file structure and set the source path to Sources/{{projectName}} (default: false).| |null| +|useSPMFileStructure|Use SPM file structure and set the source path to Sources\{{projectName}} (default: false).| |null| ## IMPORT MAPPING diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/api.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/api.mustache index 006e6cf8f93..e0c75bdc0da 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/api.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/api.mustache @@ -139,12 +139,12 @@ public class {{classname}} { final String[] contentTypes = { {{#hasConsumes}} {{#consumes}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/consumes}} {{/hasConsumes}} }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { {{#authMethods}}"{{name}}"{{^-last}}, {{/-last}}{{/authMethods}} }; {{#returnType}}ParameterizedTypeReference<{{{returnType}}}> returnType = new ParameterizedTypeReference<{{{returnType}}}>() {};{{/returnType}}{{^returnType}}ParameterizedTypeReference returnType = new ParameterizedTypeReference() {};{{/returnType}} - return apiClient.invokeAPI(path, HttpMethod.{{httpMethod}}, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.{{httpMethod}}, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } {{/operation}} } diff --git a/samples/client/petstore/R/.openapi-generator/FILES b/samples/client/petstore/R/.openapi-generator/FILES index 9385728f010..5ec829dd19d 100644 --- a/samples/client/petstore/R/.openapi-generator/FILES +++ b/samples/client/petstore/R/.openapi-generator/FILES @@ -3,6 +3,7 @@ .travis.yml DESCRIPTION NAMESPACE +README.md R/api_client.R R/api_response.R R/category.R @@ -14,7 +15,6 @@ R/store_api.R R/tag.R R/user.R R/user_api.R -README.md docs/Category.md docs/ModelApiResponse.md docs/Order.md diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/AnotherFakeApi.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/AnotherFakeApi.java index 6cd06d48e57..dee726fce33 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/AnotherFakeApi.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/AnotherFakeApi.java @@ -89,11 +89,11 @@ public class AnotherFakeApi { final String[] contentTypes = { "application/json" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PATCH, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PATCH, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/FakeApi.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/FakeApi.java index a4388e7f41d..045664b3bbb 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/FakeApi.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/FakeApi.java @@ -94,12 +94,12 @@ public class FakeApi { final String[] contentTypes = { "application/xml", "application/xml; charset=utf-8", "application/xml; charset=utf-16", "text/xml", "text/xml; charset=utf-8", "text/xml; charset=utf-16" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -136,12 +136,12 @@ public class FakeApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -178,12 +178,12 @@ public class FakeApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -220,12 +220,12 @@ public class FakeApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -262,12 +262,12 @@ public class FakeApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -308,12 +308,12 @@ public class FakeApi { final String[] contentTypes = { "application/json" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -363,12 +363,12 @@ public class FakeApi { final String[] contentTypes = { "application/json" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * To test \"client\" model @@ -412,12 +412,12 @@ public class FakeApi { final String[] contentTypes = { "application/json" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PATCH, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PATCH, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -530,12 +530,12 @@ public class FakeApi { final String[] contentTypes = { "application/x-www-form-urlencoded" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "http_basic_test" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * To test enum parameters @@ -602,12 +602,12 @@ public class FakeApi { final String[] contentTypes = { "application/x-www-form-urlencoded" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Fake endpoint to test group parameters (optional) @@ -676,12 +676,12 @@ public class FakeApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * test inline additionalProperties @@ -722,12 +722,12 @@ public class FakeApi { final String[] contentTypes = { "application/json" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * test json serialization of form data @@ -780,12 +780,12 @@ public class FakeApi { final String[] contentTypes = { "application/x-www-form-urlencoded" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -858,11 +858,11 @@ public class FakeApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java index 1aaa79e9b97..26ad7b23546 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java @@ -89,11 +89,11 @@ public class FakeClassnameTags123Api { final String[] contentTypes = { "application/json" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "api_key_query" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PATCH, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PATCH, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/PetApi.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/PetApi.java index 6e44289f45e..b5ff30e3cf2 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/PetApi.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/PetApi.java @@ -91,12 +91,12 @@ public class PetApi { final String[] contentTypes = { "application/json", "application/xml" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Deletes a pet @@ -145,12 +145,12 @@ public class PetApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Finds Pets by status @@ -196,12 +196,12 @@ public class PetApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference> returnType = new ParameterizedTypeReference>() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Finds Pets by tags @@ -249,12 +249,12 @@ public class PetApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference> returnType = new ParameterizedTypeReference>() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Find pet by ID @@ -303,12 +303,12 @@ public class PetApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "api_key" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Update an existing pet @@ -355,12 +355,12 @@ public class PetApi { final String[] contentTypes = { "application/json", "application/xml" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Updates a pet in the store with form data @@ -413,12 +413,12 @@ public class PetApi { final String[] contentTypes = { "application/x-www-form-urlencoded" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * uploads an image @@ -474,12 +474,12 @@ public class PetApi { final String[] contentTypes = { "multipart/form-data" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * uploads an image (required) @@ -540,11 +540,11 @@ public class PetApi { final String[] contentTypes = { "multipart/form-data" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/StoreApi.java index 1f1cbc751ef..63aa265f38e 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/StoreApi.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/StoreApi.java @@ -89,12 +89,12 @@ public class StoreApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Returns pet inventories by status @@ -129,12 +129,12 @@ public class StoreApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "api_key" }; ParameterizedTypeReference> returnType = new ParameterizedTypeReference>() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Find purchase order by ID @@ -183,12 +183,12 @@ public class StoreApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Place an order for a pet @@ -232,11 +232,11 @@ public class StoreApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/UserApi.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/UserApi.java index 35f6e660963..46be8cbbd61 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/UserApi.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/api/UserApi.java @@ -84,12 +84,12 @@ public class UserApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Creates list of users with given input array @@ -128,12 +128,12 @@ public class UserApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Creates list of users with given input array @@ -172,12 +172,12 @@ public class UserApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Delete user @@ -221,12 +221,12 @@ public class UserApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Get user by user name @@ -275,12 +275,12 @@ public class UserApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Logs user into the system @@ -334,12 +334,12 @@ public class UserApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Logs out current logged in user session @@ -371,12 +371,12 @@ public class UserApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Updated user @@ -427,11 +427,11 @@ public class UserApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/AnotherFakeApi.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/AnotherFakeApi.java index 6cd06d48e57..dee726fce33 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/AnotherFakeApi.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/AnotherFakeApi.java @@ -89,11 +89,11 @@ public class AnotherFakeApi { final String[] contentTypes = { "application/json" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PATCH, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PATCH, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/FakeApi.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/FakeApi.java index a4388e7f41d..045664b3bbb 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/FakeApi.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/FakeApi.java @@ -94,12 +94,12 @@ public class FakeApi { final String[] contentTypes = { "application/xml", "application/xml; charset=utf-8", "application/xml; charset=utf-16", "text/xml", "text/xml; charset=utf-8", "text/xml; charset=utf-16" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -136,12 +136,12 @@ public class FakeApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -178,12 +178,12 @@ public class FakeApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -220,12 +220,12 @@ public class FakeApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -262,12 +262,12 @@ public class FakeApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -308,12 +308,12 @@ public class FakeApi { final String[] contentTypes = { "application/json" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -363,12 +363,12 @@ public class FakeApi { final String[] contentTypes = { "application/json" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * To test \"client\" model @@ -412,12 +412,12 @@ public class FakeApi { final String[] contentTypes = { "application/json" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PATCH, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PATCH, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -530,12 +530,12 @@ public class FakeApi { final String[] contentTypes = { "application/x-www-form-urlencoded" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "http_basic_test" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * To test enum parameters @@ -602,12 +602,12 @@ public class FakeApi { final String[] contentTypes = { "application/x-www-form-urlencoded" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Fake endpoint to test group parameters (optional) @@ -676,12 +676,12 @@ public class FakeApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * test inline additionalProperties @@ -722,12 +722,12 @@ public class FakeApi { final String[] contentTypes = { "application/json" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * test json serialization of form data @@ -780,12 +780,12 @@ public class FakeApi { final String[] contentTypes = { "application/x-www-form-urlencoded" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * @@ -858,11 +858,11 @@ public class FakeApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java index 1aaa79e9b97..26ad7b23546 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java @@ -89,11 +89,11 @@ public class FakeClassnameTags123Api { final String[] contentTypes = { "application/json" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "api_key_query" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PATCH, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PATCH, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/PetApi.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/PetApi.java index 6e44289f45e..b5ff30e3cf2 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/PetApi.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/PetApi.java @@ -91,12 +91,12 @@ public class PetApi { final String[] contentTypes = { "application/json", "application/xml" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Deletes a pet @@ -145,12 +145,12 @@ public class PetApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Finds Pets by status @@ -196,12 +196,12 @@ public class PetApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference> returnType = new ParameterizedTypeReference>() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Finds Pets by tags @@ -249,12 +249,12 @@ public class PetApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference> returnType = new ParameterizedTypeReference>() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Find pet by ID @@ -303,12 +303,12 @@ public class PetApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "api_key" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Update an existing pet @@ -355,12 +355,12 @@ public class PetApi { final String[] contentTypes = { "application/json", "application/xml" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Updates a pet in the store with form data @@ -413,12 +413,12 @@ public class PetApi { final String[] contentTypes = { "application/x-www-form-urlencoded" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * uploads an image @@ -474,12 +474,12 @@ public class PetApi { final String[] contentTypes = { "multipart/form-data" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * uploads an image (required) @@ -540,11 +540,11 @@ public class PetApi { final String[] contentTypes = { "multipart/form-data" }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "petstore_auth" }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/StoreApi.java index 1f1cbc751ef..63aa265f38e 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/StoreApi.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/StoreApi.java @@ -89,12 +89,12 @@ public class StoreApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Returns pet inventories by status @@ -129,12 +129,12 @@ public class StoreApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { "api_key" }; ParameterizedTypeReference> returnType = new ParameterizedTypeReference>() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Find purchase order by ID @@ -183,12 +183,12 @@ public class StoreApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Place an order for a pet @@ -232,11 +232,11 @@ public class StoreApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/UserApi.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/UserApi.java index 35f6e660963..46be8cbbd61 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/UserApi.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/api/UserApi.java @@ -84,12 +84,12 @@ public class UserApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Creates list of users with given input array @@ -128,12 +128,12 @@ public class UserApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Creates list of users with given input array @@ -172,12 +172,12 @@ public class UserApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Delete user @@ -221,12 +221,12 @@ public class UserApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.DELETE, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Get user by user name @@ -275,12 +275,12 @@ public class UserApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Logs user into the system @@ -334,12 +334,12 @@ public class UserApi { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Logs out current logged in user session @@ -371,12 +371,12 @@ public class UserApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.GET, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } /** * Updated user @@ -427,11 +427,11 @@ public class UserApi { final String[] localVarAccepts = { }; final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] contentTypes = { }; - final MediaType contentType = apiClient.selectHeaderContentType(contentTypes); + final MediaType localVarContentType = apiClient.selectHeaderContentType(contentTypes); String[] authNames = new String[] { }; ParameterizedTypeReference returnType = new ParameterizedTypeReference() {}; - return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, contentType, authNames, returnType); + return apiClient.invokeAPI(path, HttpMethod.PUT, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, authNames, returnType); } } diff --git a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES index fda1dc9138c..dcbafb2b319 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES +++ b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES @@ -55,6 +55,7 @@ docs/Model/SpecialModelName.md docs/Model/Tag.md docs/Model/User.md git_push.sh +lib/ApiException.php lib/Api/AnotherFakeApi.php lib/Api/DefaultApi.php lib/Api/FakeApi.php @@ -62,7 +63,6 @@ lib/Api/FakeClassnameTags123Api.php lib/Api/PetApi.php lib/Api/StoreApi.php lib/Api/UserApi.php -lib/ApiException.php lib/Configuration.php lib/HeaderSelector.php lib/Model/AdditionalPropertiesClass.php diff --git a/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist b/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist index 3dd90bbe32c..afbe167922d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist +++ b/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist @@ -13,8 +13,8 @@ - ./lib/Api - ./lib/Model + ./lib\/Api + ./lib\/Model diff --git a/samples/client/petstore/powershell/README.md b/samples/client/petstore/powershell/README.md index d394a82a0e9..45adbebb096 100644 --- a/samples/client/petstore/powershell/README.md +++ b/samples/client/petstore/powershell/README.md @@ -79,12 +79,12 @@ Class | Method | HTTP request | Description ## Documentation for Models - - [PSPetstore/Model.ApiResponse](docs/ApiResponse.md) - - [PSPetstore/Model.Category](docs/Category.md) - - [PSPetstore/Model.Order](docs/Order.md) - - [PSPetstore/Model.Pet](docs/Pet.md) - - [PSPetstore/Model.Tag](docs/Tag.md) - - [PSPetstore/Model.User](docs/User.md) + - [PSPetstore\Model.ApiResponse](docs/ApiResponse.md) + - [PSPetstore\Model.Category](docs/Category.md) + - [PSPetstore\Model.Order](docs/Order.md) + - [PSPetstore\Model.Pet](docs/Pet.md) + - [PSPetstore\Model.Tag](docs/Tag.md) + - [PSPetstore\Model.User](docs/User.md) ## Documentation for Authorization diff --git a/samples/client/petstore/powershell/docs/PSPetApi.md b/samples/client/petstore/powershell/docs/PSPetApi.md index 5b8c2a0f2e3..af5ef7d0ded 100644 --- a/samples/client/petstore/powershell/docs/PSPetApi.md +++ b/samples/client/petstore/powershell/docs/PSPetApi.md @@ -1,4 +1,4 @@ -# PSPetstore.PSPetstore/Api.PSPetApi +# PSPetstore.PSPetstore\Api.PSPetApi All URIs are relative to *http://petstore.swagger.io:80/v2* diff --git a/samples/client/petstore/powershell/docs/PSStoreApi.md b/samples/client/petstore/powershell/docs/PSStoreApi.md index 33b3541ced6..2ae1104846c 100644 --- a/samples/client/petstore/powershell/docs/PSStoreApi.md +++ b/samples/client/petstore/powershell/docs/PSStoreApi.md @@ -1,4 +1,4 @@ -# PSPetstore.PSPetstore/Api.PSStoreApi +# PSPetstore.PSPetstore\Api.PSStoreApi All URIs are relative to *http://petstore.swagger.io:80/v2* diff --git a/samples/client/petstore/powershell/docs/PSUserApi.md b/samples/client/petstore/powershell/docs/PSUserApi.md index f008e292f2c..0288084bf1f 100644 --- a/samples/client/petstore/powershell/docs/PSUserApi.md +++ b/samples/client/petstore/powershell/docs/PSUserApi.md @@ -1,4 +1,4 @@ -# PSPetstore.PSPetstore/Api.PSUserApi +# PSPetstore.PSPetstore\Api.PSUserApi All URIs are relative to *http://petstore.swagger.io:80/v2* diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts index 72152fe0462..dbb703aad5e 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts @@ -51,6 +51,7 @@ export interface Capitalization { sCAETHFlowPoints?: string; /** * Name of the pet + * @type {string} * @memberof Capitalization */ diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md index 31cdc5ce99b..b4a60640c2e 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md @@ -64,94 +64,94 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc/DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc\AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc\DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc\FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc\FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc\FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc\FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc\FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc\FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc\FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc\FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc\FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc\FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc\FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc\FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc\FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc\FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc\FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc\FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc\FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc\PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc\PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc\PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc\PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc\PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc\PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc\PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc\PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc\PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc\StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc\StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc\StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc\StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc\UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc\UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc\UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc\UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc\UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc\UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc\UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc\UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [AdditionalPropertiesClass](doc/AdditionalPropertiesClass.md) - - [Animal](doc/Animal.md) - - [ApiResponse](doc/ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc/ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc/ArrayOfNumberOnly.md) - - [ArrayTest](doc/ArrayTest.md) - - [Capitalization](doc/Capitalization.md) - - [Cat](doc/Cat.md) - - [CatAllOf](doc/CatAllOf.md) - - [Category](doc/Category.md) - - [ClassModel](doc/ClassModel.md) - - [Dog](doc/Dog.md) - - [DogAllOf](doc/DogAllOf.md) - - [EnumArrays](doc/EnumArrays.md) - - [EnumTest](doc/EnumTest.md) - - [FileSchemaTestClass](doc/FileSchemaTestClass.md) - - [Foo](doc/Foo.md) - - [FormatTest](doc/FormatTest.md) - - [HasOnlyReadOnly](doc/HasOnlyReadOnly.md) - - [HealthCheckResult](doc/HealthCheckResult.md) - - [InlineResponseDefault](doc/InlineResponseDefault.md) - - [MapTest](doc/MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc/MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc/Model200Response.md) - - [ModelClient](doc/ModelClient.md) - - [ModelEnumClass](doc/ModelEnumClass.md) - - [ModelFile](doc/ModelFile.md) - - [ModelList](doc/ModelList.md) - - [ModelReturn](doc/ModelReturn.md) - - [Name](doc/Name.md) - - [NullableClass](doc/NullableClass.md) - - [NumberOnly](doc/NumberOnly.md) - - [Order](doc/Order.md) - - [OuterComposite](doc/OuterComposite.md) - - [OuterEnum](doc/OuterEnum.md) - - [OuterEnumDefaultValue](doc/OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc/OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc/OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc/OuterObjectWithEnumProperty.md) - - [Pet](doc/Pet.md) - - [ReadOnlyFirst](doc/ReadOnlyFirst.md) - - [SpecialModelName](doc/SpecialModelName.md) - - [Tag](doc/Tag.md) - - [User](doc/User.md) + - [AdditionalPropertiesClass](doc\AdditionalPropertiesClass.md) + - [Animal](doc\Animal.md) + - [ApiResponse](doc\ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc\ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc\ArrayOfNumberOnly.md) + - [ArrayTest](doc\ArrayTest.md) + - [Capitalization](doc\Capitalization.md) + - [Cat](doc\Cat.md) + - [CatAllOf](doc\CatAllOf.md) + - [Category](doc\Category.md) + - [ClassModel](doc\ClassModel.md) + - [Dog](doc\Dog.md) + - [DogAllOf](doc\DogAllOf.md) + - [EnumArrays](doc\EnumArrays.md) + - [EnumTest](doc\EnumTest.md) + - [FileSchemaTestClass](doc\FileSchemaTestClass.md) + - [Foo](doc\Foo.md) + - [FormatTest](doc\FormatTest.md) + - [HasOnlyReadOnly](doc\HasOnlyReadOnly.md) + - [HealthCheckResult](doc\HealthCheckResult.md) + - [InlineResponseDefault](doc\InlineResponseDefault.md) + - [MapTest](doc\MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc\MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc\Model200Response.md) + - [ModelClient](doc\ModelClient.md) + - [ModelEnumClass](doc\ModelEnumClass.md) + - [ModelFile](doc\ModelFile.md) + - [ModelList](doc\ModelList.md) + - [ModelReturn](doc\ModelReturn.md) + - [Name](doc\Name.md) + - [NullableClass](doc\NullableClass.md) + - [NumberOnly](doc\NumberOnly.md) + - [Order](doc\Order.md) + - [OuterComposite](doc\OuterComposite.md) + - [OuterEnum](doc\OuterEnum.md) + - [OuterEnumDefaultValue](doc\OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc\OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc\OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc\OuterObjectWithEnumProperty.md) + - [Pet](doc\Pet.md) + - [ReadOnlyFirst](doc\ReadOnlyFirst.md) + - [SpecialModelName](doc\SpecialModelName.md) + - [Tag](doc\Tag.md) + - [User](doc\User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md index ac04fa9f72b..b20e32f0141 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md @@ -58,36 +58,36 @@ All URIs are relative to *http://petstore.swagger.io/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*PetApi* | [**addPet**](doc\PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc\PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc\PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc\PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc\PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc\PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc\PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc\PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](doc\StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc\StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc\StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc\StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc\UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc\UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc\UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc\UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc\UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc\UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc\UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc\UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [ApiResponse](doc/ApiResponse.md) - - [Category](doc/Category.md) - - [Order](doc/Order.md) - - [Pet](doc/Pet.md) - - [Tag](doc/Tag.md) - - [User](doc/User.md) + - [ApiResponse](doc\ApiResponse.md) + - [Category](doc\Category.md) + - [Order](doc\Order.md) + - [Pet](doc\Pet.md) + - [Tag](doc\Tag.md) + - [User](doc\User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md index 22789ae7761..a516da3036f 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md @@ -58,94 +58,94 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc/DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc\AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc\DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc\FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc\FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc\FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc\FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc\FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc\FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc\FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc\FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc\FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc\FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc\FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc\FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc\FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc\FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc\FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc\FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc\FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc\PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc\PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc\PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc\PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc\PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc\PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc\PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc\PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc\PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc\StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc\StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc\StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc\StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc\UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc\UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc\UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc\UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc\UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc\UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc\UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc\UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [AdditionalPropertiesClass](doc/AdditionalPropertiesClass.md) - - [Animal](doc/Animal.md) - - [ApiResponse](doc/ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc/ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc/ArrayOfNumberOnly.md) - - [ArrayTest](doc/ArrayTest.md) - - [Capitalization](doc/Capitalization.md) - - [Cat](doc/Cat.md) - - [CatAllOf](doc/CatAllOf.md) - - [Category](doc/Category.md) - - [ClassModel](doc/ClassModel.md) - - [Dog](doc/Dog.md) - - [DogAllOf](doc/DogAllOf.md) - - [EnumArrays](doc/EnumArrays.md) - - [EnumTest](doc/EnumTest.md) - - [FileSchemaTestClass](doc/FileSchemaTestClass.md) - - [Foo](doc/Foo.md) - - [FormatTest](doc/FormatTest.md) - - [HasOnlyReadOnly](doc/HasOnlyReadOnly.md) - - [HealthCheckResult](doc/HealthCheckResult.md) - - [InlineResponseDefault](doc/InlineResponseDefault.md) - - [MapTest](doc/MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc/MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc/Model200Response.md) - - [ModelClient](doc/ModelClient.md) - - [ModelEnumClass](doc/ModelEnumClass.md) - - [ModelFile](doc/ModelFile.md) - - [ModelList](doc/ModelList.md) - - [ModelReturn](doc/ModelReturn.md) - - [Name](doc/Name.md) - - [NullableClass](doc/NullableClass.md) - - [NumberOnly](doc/NumberOnly.md) - - [Order](doc/Order.md) - - [OuterComposite](doc/OuterComposite.md) - - [OuterEnum](doc/OuterEnum.md) - - [OuterEnumDefaultValue](doc/OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc/OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc/OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc/OuterObjectWithEnumProperty.md) - - [Pet](doc/Pet.md) - - [ReadOnlyFirst](doc/ReadOnlyFirst.md) - - [SpecialModelName](doc/SpecialModelName.md) - - [Tag](doc/Tag.md) - - [User](doc/User.md) + - [AdditionalPropertiesClass](doc\AdditionalPropertiesClass.md) + - [Animal](doc\Animal.md) + - [ApiResponse](doc\ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc\ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc\ArrayOfNumberOnly.md) + - [ArrayTest](doc\ArrayTest.md) + - [Capitalization](doc\Capitalization.md) + - [Cat](doc\Cat.md) + - [CatAllOf](doc\CatAllOf.md) + - [Category](doc\Category.md) + - [ClassModel](doc\ClassModel.md) + - [Dog](doc\Dog.md) + - [DogAllOf](doc\DogAllOf.md) + - [EnumArrays](doc\EnumArrays.md) + - [EnumTest](doc\EnumTest.md) + - [FileSchemaTestClass](doc\FileSchemaTestClass.md) + - [Foo](doc\Foo.md) + - [FormatTest](doc\FormatTest.md) + - [HasOnlyReadOnly](doc\HasOnlyReadOnly.md) + - [HealthCheckResult](doc\HealthCheckResult.md) + - [InlineResponseDefault](doc\InlineResponseDefault.md) + - [MapTest](doc\MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc\MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc\Model200Response.md) + - [ModelClient](doc\ModelClient.md) + - [ModelEnumClass](doc\ModelEnumClass.md) + - [ModelFile](doc\ModelFile.md) + - [ModelList](doc\ModelList.md) + - [ModelReturn](doc\ModelReturn.md) + - [Name](doc\Name.md) + - [NullableClass](doc\NullableClass.md) + - [NumberOnly](doc\NumberOnly.md) + - [Order](doc\Order.md) + - [OuterComposite](doc\OuterComposite.md) + - [OuterEnum](doc\OuterEnum.md) + - [OuterEnumDefaultValue](doc\OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc\OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc\OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc\OuterObjectWithEnumProperty.md) + - [Pet](doc\Pet.md) + - [ReadOnlyFirst](doc\ReadOnlyFirst.md) + - [SpecialModelName](doc\SpecialModelName.md) + - [Tag](doc\Tag.md) + - [User](doc\User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md b/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md index 99bd229f3c5..18de35ccec0 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md @@ -60,36 +60,36 @@ All URIs are relative to *http://petstore.swagger.io/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*PetApi* | [**addPet**](doc\/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc\/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc\/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc\/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc\/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc\/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc\/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc\/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](doc\/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc\/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc\/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc\/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc\/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc\/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc\/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc\/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc\/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc\/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc\/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc\/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [ApiResponse](doc//ApiResponse.md) - - [Category](doc//Category.md) - - [Order](doc//Order.md) - - [Pet](doc//Pet.md) - - [Tag](doc//Tag.md) - - [User](doc//User.md) + - [ApiResponse](doc\/ApiResponse.md) + - [Category](doc\/Category.md) + - [Order](doc\/Order.md) + - [Pet](doc\/Pet.md) + - [Tag](doc\/Tag.md) + - [User](doc\/User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md index fe39c2f2126..9b39a96c6b7 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md @@ -58,94 +58,94 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc//AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc//DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc//FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc//FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc//FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc//FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc//FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc//FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc//FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc//FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc//FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc//FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc//FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc//FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc//FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc//FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc//FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc//FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc//FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc//PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc\/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc\/DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc\/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc\/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc\/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc\/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc\/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc\/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc\/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc\/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc\/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc\/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc\/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc\/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc\/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc\/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc\/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc\/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc\/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc\/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc\/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc\/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc\/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc\/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc\/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc\/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc\/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc\/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc\/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc\/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc\/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc\/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc\/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc\/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc\/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc\/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc\/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc\/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc\/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc\/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [AdditionalPropertiesClass](doc//AdditionalPropertiesClass.md) - - [Animal](doc//Animal.md) - - [ApiResponse](doc//ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc//ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc//ArrayOfNumberOnly.md) - - [ArrayTest](doc//ArrayTest.md) - - [Capitalization](doc//Capitalization.md) - - [Cat](doc//Cat.md) - - [CatAllOf](doc//CatAllOf.md) - - [Category](doc//Category.md) - - [ClassModel](doc//ClassModel.md) - - [Dog](doc//Dog.md) - - [DogAllOf](doc//DogAllOf.md) - - [EnumArrays](doc//EnumArrays.md) - - [EnumClass](doc//EnumClass.md) - - [EnumTest](doc//EnumTest.md) - - [FileSchemaTestClass](doc//FileSchemaTestClass.md) - - [Foo](doc//Foo.md) - - [FormatTest](doc//FormatTest.md) - - [HasOnlyReadOnly](doc//HasOnlyReadOnly.md) - - [HealthCheckResult](doc//HealthCheckResult.md) - - [InlineResponseDefault](doc//InlineResponseDefault.md) - - [MapTest](doc//MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc//MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc//Model200Response.md) - - [ModelClient](doc//ModelClient.md) - - [ModelFile](doc//ModelFile.md) - - [ModelList](doc//ModelList.md) - - [ModelReturn](doc//ModelReturn.md) - - [Name](doc//Name.md) - - [NullableClass](doc//NullableClass.md) - - [NumberOnly](doc//NumberOnly.md) - - [Order](doc//Order.md) - - [OuterComposite](doc//OuterComposite.md) - - [OuterEnum](doc//OuterEnum.md) - - [OuterEnumDefaultValue](doc//OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc//OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc//OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc//OuterObjectWithEnumProperty.md) - - [Pet](doc//Pet.md) - - [ReadOnlyFirst](doc//ReadOnlyFirst.md) - - [SpecialModelName](doc//SpecialModelName.md) - - [Tag](doc//Tag.md) - - [User](doc//User.md) + - [AdditionalPropertiesClass](doc\/AdditionalPropertiesClass.md) + - [Animal](doc\/Animal.md) + - [ApiResponse](doc\/ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc\/ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc\/ArrayOfNumberOnly.md) + - [ArrayTest](doc\/ArrayTest.md) + - [Capitalization](doc\/Capitalization.md) + - [Cat](doc\/Cat.md) + - [CatAllOf](doc\/CatAllOf.md) + - [Category](doc\/Category.md) + - [ClassModel](doc\/ClassModel.md) + - [Dog](doc\/Dog.md) + - [DogAllOf](doc\/DogAllOf.md) + - [EnumArrays](doc\/EnumArrays.md) + - [EnumClass](doc\/EnumClass.md) + - [EnumTest](doc\/EnumTest.md) + - [FileSchemaTestClass](doc\/FileSchemaTestClass.md) + - [Foo](doc\/Foo.md) + - [FormatTest](doc\/FormatTest.md) + - [HasOnlyReadOnly](doc\/HasOnlyReadOnly.md) + - [HealthCheckResult](doc\/HealthCheckResult.md) + - [InlineResponseDefault](doc\/InlineResponseDefault.md) + - [MapTest](doc\/MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc\/MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc\/Model200Response.md) + - [ModelClient](doc\/ModelClient.md) + - [ModelFile](doc\/ModelFile.md) + - [ModelList](doc\/ModelList.md) + - [ModelReturn](doc\/ModelReturn.md) + - [Name](doc\/Name.md) + - [NullableClass](doc\/NullableClass.md) + - [NumberOnly](doc\/NumberOnly.md) + - [Order](doc\/Order.md) + - [OuterComposite](doc\/OuterComposite.md) + - [OuterEnum](doc\/OuterEnum.md) + - [OuterEnumDefaultValue](doc\/OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc\/OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc\/OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc\/OuterObjectWithEnumProperty.md) + - [Pet](doc\/Pet.md) + - [ReadOnlyFirst](doc\/ReadOnlyFirst.md) + - [SpecialModelName](doc\/SpecialModelName.md) + - [Tag](doc\/Tag.md) + - [User](doc\/User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md index fe39c2f2126..9b39a96c6b7 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md @@ -58,94 +58,94 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc//AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc//DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc//FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc//FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc//FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc//FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc//FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc//FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc//FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc//FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc//FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc//FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc//FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc//FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc//FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc//FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc//FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc//FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc//FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc//PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc\/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc\/DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc\/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc\/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc\/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc\/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc\/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc\/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc\/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc\/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc\/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc\/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc\/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc\/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc\/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc\/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc\/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc\/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc\/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc\/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc\/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc\/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc\/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc\/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc\/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc\/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc\/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc\/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc\/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc\/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc\/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc\/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc\/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc\/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc\/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc\/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc\/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc\/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc\/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc\/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [AdditionalPropertiesClass](doc//AdditionalPropertiesClass.md) - - [Animal](doc//Animal.md) - - [ApiResponse](doc//ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc//ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc//ArrayOfNumberOnly.md) - - [ArrayTest](doc//ArrayTest.md) - - [Capitalization](doc//Capitalization.md) - - [Cat](doc//Cat.md) - - [CatAllOf](doc//CatAllOf.md) - - [Category](doc//Category.md) - - [ClassModel](doc//ClassModel.md) - - [Dog](doc//Dog.md) - - [DogAllOf](doc//DogAllOf.md) - - [EnumArrays](doc//EnumArrays.md) - - [EnumClass](doc//EnumClass.md) - - [EnumTest](doc//EnumTest.md) - - [FileSchemaTestClass](doc//FileSchemaTestClass.md) - - [Foo](doc//Foo.md) - - [FormatTest](doc//FormatTest.md) - - [HasOnlyReadOnly](doc//HasOnlyReadOnly.md) - - [HealthCheckResult](doc//HealthCheckResult.md) - - [InlineResponseDefault](doc//InlineResponseDefault.md) - - [MapTest](doc//MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc//MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc//Model200Response.md) - - [ModelClient](doc//ModelClient.md) - - [ModelFile](doc//ModelFile.md) - - [ModelList](doc//ModelList.md) - - [ModelReturn](doc//ModelReturn.md) - - [Name](doc//Name.md) - - [NullableClass](doc//NullableClass.md) - - [NumberOnly](doc//NumberOnly.md) - - [Order](doc//Order.md) - - [OuterComposite](doc//OuterComposite.md) - - [OuterEnum](doc//OuterEnum.md) - - [OuterEnumDefaultValue](doc//OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc//OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc//OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc//OuterObjectWithEnumProperty.md) - - [Pet](doc//Pet.md) - - [ReadOnlyFirst](doc//ReadOnlyFirst.md) - - [SpecialModelName](doc//SpecialModelName.md) - - [Tag](doc//Tag.md) - - [User](doc//User.md) + - [AdditionalPropertiesClass](doc\/AdditionalPropertiesClass.md) + - [Animal](doc\/Animal.md) + - [ApiResponse](doc\/ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc\/ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc\/ArrayOfNumberOnly.md) + - [ArrayTest](doc\/ArrayTest.md) + - [Capitalization](doc\/Capitalization.md) + - [Cat](doc\/Cat.md) + - [CatAllOf](doc\/CatAllOf.md) + - [Category](doc\/Category.md) + - [ClassModel](doc\/ClassModel.md) + - [Dog](doc\/Dog.md) + - [DogAllOf](doc\/DogAllOf.md) + - [EnumArrays](doc\/EnumArrays.md) + - [EnumClass](doc\/EnumClass.md) + - [EnumTest](doc\/EnumTest.md) + - [FileSchemaTestClass](doc\/FileSchemaTestClass.md) + - [Foo](doc\/Foo.md) + - [FormatTest](doc\/FormatTest.md) + - [HasOnlyReadOnly](doc\/HasOnlyReadOnly.md) + - [HealthCheckResult](doc\/HealthCheckResult.md) + - [InlineResponseDefault](doc\/InlineResponseDefault.md) + - [MapTest](doc\/MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc\/MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc\/Model200Response.md) + - [ModelClient](doc\/ModelClient.md) + - [ModelFile](doc\/ModelFile.md) + - [ModelList](doc\/ModelList.md) + - [ModelReturn](doc\/ModelReturn.md) + - [Name](doc\/Name.md) + - [NullableClass](doc\/NullableClass.md) + - [NumberOnly](doc\/NumberOnly.md) + - [Order](doc\/Order.md) + - [OuterComposite](doc\/OuterComposite.md) + - [OuterEnum](doc\/OuterEnum.md) + - [OuterEnumDefaultValue](doc\/OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc\/OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc\/OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc\/OuterObjectWithEnumProperty.md) + - [Pet](doc\/Pet.md) + - [ReadOnlyFirst](doc\/ReadOnlyFirst.md) + - [SpecialModelName](doc\/SpecialModelName.md) + - [Tag](doc\/Tag.md) + - [User](doc\/User.md) ## Documentation For Authorization diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs index d58ff968d3c..04aa969cb95 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -86,7 +86,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -225,7 +225,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; + exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs index 79c62f5c672..cb4da58b610 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs index 17fdac817ad..c4f77f108ac 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; + exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs index d58ff968d3c..04aa969cb95 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -86,7 +86,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -225,7 +225,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; + exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs index 79c62f5c672..cb4da58b610 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs index 17fdac817ad..c4f77f108ac 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; + exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs index 3162f82261b..c99e55e5f2d 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -48,7 +48,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(405); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -97,7 +97,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -161,7 +161,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -197,7 +197,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(405); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -247,7 +247,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; + exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs index 431fccf1905..881cd5107a9 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -128,7 +128,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs index 406c969ffb2..327c18b8687 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -134,7 +134,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; + exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs index 68722c6b4cb..6f7fae5e120 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -86,7 +86,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -225,7 +225,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; + exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs index 4503e177b9c..213f6a8479e 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs index 06ca8107d07..b4752ae73d1 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; + exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/php-slim4/README.md b/samples/server/petstore/php-slim4/README.md index 3f5c820198c..78d2322ebb7 100644 --- a/samples/server/petstore/php-slim4/README.md +++ b/samples/server/petstore/php-slim4/README.md @@ -168,10 +168,10 @@ Class | Method | HTTP request | Description ## Authentication ### Security schema `api_key` -> Important! To make ApiKey authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\ApiKeyAuthenticator](./src/Auth/ApiKeyAuthenticator.php) class. +> Important! To make ApiKey authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib\/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\ApiKeyAuthenticator](./src/Auth/ApiKeyAuthenticator.php) class. ### Security schema `petstore_auth` -> Important! To make OAuth authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\OAuthAuthenticator](./src/Auth/OAuthAuthenticator.php) class. +> Important! To make OAuth authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib\/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\OAuthAuthenticator](./src/Auth/OAuthAuthenticator.php) class. Scope list: * `write:pets` - modify pets in your account diff --git a/samples/server/petstore/php-slim4/phpunit.xml.dist b/samples/server/petstore/php-slim4/phpunit.xml.dist index 3efb4b45f4a..10eaa652957 100644 --- a/samples/server/petstore/php-slim4/phpunit.xml.dist +++ b/samples/server/petstore/php-slim4/phpunit.xml.dist @@ -21,9 +21,9 @@ - ./lib/Api + ./lib\/Api ./lib/BaseModel.php - ./lib/Model + ./lib\/Model diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist b/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist index e754829e628..40d39d2f5a8 100644 --- a/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist +++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist @@ -14,9 +14,9 @@ - ././Api - ././Model - ././Controller + ./.\/Api + ./.\/Model + ./.\/Controller diff --git a/samples/server/petstore/python-aiohttp-srclayout/setup.py b/samples/server/petstore/python-aiohttp-srclayout/setup.py index 6f62aec4414..600b620958c 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/setup.py +++ b/samples/server/petstore/python-aiohttp-srclayout/setup.py @@ -27,9 +27,9 @@ setup( url="", keywords=["OpenAPI", "OpenAPI Petstore"], install_requires=REQUIRES, - packages=find_packages("src/"), - package_dir={"": "src/"}, - package_data={'': ['src//openapi/openapi.yaml']}, + packages=find_packages("src\"), + package_dir={"": "src\"}, + package_data={'': ['src\/openapi/openapi.yaml']}, include_package_data=True, entry_points={ 'console_scripts': ['openapi_server=openapi_server.__main__:main']}, diff --git a/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py b/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py index 578bf18e982..63ba2f413d1 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py +++ b/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py @@ -12,7 +12,7 @@ def client(loop, aiohttp_client): "swagger_ui": True } specification_dir = os.path.join(os.path.dirname(__file__), '..', - "src/", + "src\", 'openapi_server', 'openapi') app = connexion.AioHttpApp(__name__, specification_dir=specification_dir, diff --git a/samples/server/petstore/python-aiohttp-srclayout/tox.ini b/samples/server/petstore/python-aiohttp-srclayout/tox.ini index 25d12bb84c0..3d847999b3c 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/tox.ini +++ b/samples/server/petstore/python-aiohttp-srclayout/tox.ini @@ -8,4 +8,4 @@ deps=-r{toxinidir}/requirements.txt {toxinidir} commands= - pytest --cov=src/openapi_server + pytest --cov=src\openapi_server From 32d5900611b808228bcbbc296521f8d1c22e1f11 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Thu, 27 May 2021 10:40:32 +0800 Subject: [PATCH 053/192] update samples, docs --- docs/generators/fsharp-functions.md | 2 +- docs/generators/fsharp-giraffe-server.md | 2 +- docs/generators/java-inflector.md | 2 +- docs/generators/jaxrs-cxf-client.md | 2 +- docs/generators/swift5.md | 4 +- .../petstore/R/.openapi-generator/FILES | 2 +- .../.openapi-generator/FILES | 2 +- .../php/OpenAPIClient-php/phpunit.xml.dist | 4 +- samples/client/petstore/powershell/README.md | 12 +- .../petstore/powershell/docs/PSPetApi.md | 2 +- .../petstore/powershell/docs/PSStoreApi.md | 2 +- .../petstore/powershell/docs/PSUserApi.md | 2 +- .../default-v3.0/models/Capitalization.ts | 1 - .../petstore_client_lib_fake/README.md | 168 +++++++++--------- .../dart-dio/petstore_client_lib/README.md | 52 +++--- .../petstore_client_lib_fake/README.md | 168 +++++++++--------- .../dart2/petstore_client_lib/README.md | 52 +++--- .../dart2/petstore_client_lib_fake/README.md | 168 +++++++++--------- .../README.md | 168 +++++++++--------- .../Org.OpenAPITools/Controllers/PetApi.cs | 8 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- .../Org.OpenAPITools/Controllers/PetApi.cs | 8 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- .../Org.OpenAPITools/Controllers/PetApi.cs | 12 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- .../Org.OpenAPITools/Controllers/PetApi.cs | 8 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- samples/server/petstore/php-slim4/README.md | 4 +- .../petstore/php-slim4/phpunit.xml.dist | 4 +- .../SymfonyBundle-php/phpunit.xml.dist | 6 +- .../python-aiohttp-srclayout/setup.py | 6 +- .../tests/conftest.py | 2 +- .../petstore/python-aiohttp-srclayout/tox.ini | 2 +- 37 files changed, 449 insertions(+), 450 deletions(-) diff --git a/docs/generators/fsharp-functions.md b/docs/generators/fsharp-functions.md index 2a81000a7fb..bb16f39fa77 100644 --- a/docs/generators/fsharp-functions.md +++ b/docs/generators/fsharp-functions.md @@ -22,7 +22,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |OpenAPI\src| +|sourceFolder|source folder for generated code| |OpenAPI/src| ## IMPORT MAPPING diff --git a/docs/generators/fsharp-giraffe-server.md b/docs/generators/fsharp-giraffe-server.md index 66150dbec0d..f374168aa71 100644 --- a/docs/generators/fsharp-giraffe-server.md +++ b/docs/generators/fsharp-giraffe-server.md @@ -19,7 +19,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |packageVersion|F# package version.| |1.0.0| |returnICollection|Return ICollection<T> instead of the concrete type.| |false| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |OpenAPI\src| +|sourceFolder|source folder for generated code| |OpenAPI/src| |useCollection|Deserialize array types to Collection<T> instead of List<T>.| |false| |useDateTimeOffset|Use DateTimeOffset to model date-time properties| |false| |useSwashbuckle|Uses the Swashbuckle.AspNetCore NuGet package for documentation.| |false| diff --git a/docs/generators/java-inflector.md b/docs/generators/java-inflector.md index 131b09f3f90..373bc61861b 100644 --- a/docs/generators/java-inflector.md +++ b/docs/generators/java-inflector.md @@ -48,7 +48,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |snapshotVersion|Uses a SNAPSHOT version.|
    **true**
    Use a SnapShot Version
    **false**
    Use a Release Version
    |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |src\gen\java| +|sourceFolder|source folder for generated code| |src/gen/java| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-cxf-client.md b/docs/generators/jaxrs-cxf-client.md index 25d03ea104b..fb3547c920d 100644 --- a/docs/generators/jaxrs-cxf-client.md +++ b/docs/generators/jaxrs-cxf-client.md @@ -48,7 +48,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |snapshotVersion|Uses a SNAPSHOT version.|
    **true**
    Use a SnapShot Version
    **false**
    Use a Release Version
    |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |src\gen\java| +|sourceFolder|source folder for generated code| |src/gen/java| |useBeanValidation|Use BeanValidation API annotations| |false| |useGenericResponse|Use generic response| |false| |useGzipFeatureForTests|Use Gzip Feature for tests| |false| diff --git a/docs/generators/swift5.md b/docs/generators/swift5.md index 2846d6de2b9..bace7f1f049 100644 --- a/docs/generators/swift5.md +++ b/docs/generators/swift5.md @@ -36,10 +36,10 @@ These options may be applied as additional-properties (cli) or configOptions (pl |responseAs|Optionally use libraries to manage response. Currently PromiseKit, RxSwift, Result, Combine are available.| |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|swiftPackagePath|Set a custom source path instead of OpenAPIClient\Classes\OpenAPIs.| |null| +|swiftPackagePath|Set a custom source path instead of OpenAPIClient/Classes/OpenAPIs.| |null| |swiftUseApiNamespace|Flag to make all the API classes inner-class of {{projectName}}API| |null| |useBacktickEscapes|Escape reserved words using backticks (default: false)| |false| -|useSPMFileStructure|Use SPM file structure and set the source path to Sources\{{projectName}} (default: false).| |null| +|useSPMFileStructure|Use SPM file structure and set the source path to Sources/{{projectName}} (default: false).| |null| ## IMPORT MAPPING diff --git a/samples/client/petstore/R/.openapi-generator/FILES b/samples/client/petstore/R/.openapi-generator/FILES index 5ec829dd19d..9385728f010 100644 --- a/samples/client/petstore/R/.openapi-generator/FILES +++ b/samples/client/petstore/R/.openapi-generator/FILES @@ -3,7 +3,6 @@ .travis.yml DESCRIPTION NAMESPACE -README.md R/api_client.R R/api_response.R R/category.R @@ -15,6 +14,7 @@ R/store_api.R R/tag.R R/user.R R/user_api.R +README.md docs/Category.md docs/ModelApiResponse.md docs/Order.md diff --git a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES index dcbafb2b319..fda1dc9138c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES +++ b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES @@ -55,7 +55,6 @@ docs/Model/SpecialModelName.md docs/Model/Tag.md docs/Model/User.md git_push.sh -lib/ApiException.php lib/Api/AnotherFakeApi.php lib/Api/DefaultApi.php lib/Api/FakeApi.php @@ -63,6 +62,7 @@ lib/Api/FakeClassnameTags123Api.php lib/Api/PetApi.php lib/Api/StoreApi.php lib/Api/UserApi.php +lib/ApiException.php lib/Configuration.php lib/HeaderSelector.php lib/Model/AdditionalPropertiesClass.php diff --git a/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist b/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist index afbe167922d..3dd90bbe32c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist +++ b/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist @@ -13,8 +13,8 @@ - ./lib\/Api - ./lib\/Model + ./lib/Api + ./lib/Model diff --git a/samples/client/petstore/powershell/README.md b/samples/client/petstore/powershell/README.md index 45adbebb096..d394a82a0e9 100644 --- a/samples/client/petstore/powershell/README.md +++ b/samples/client/petstore/powershell/README.md @@ -79,12 +79,12 @@ Class | Method | HTTP request | Description ## Documentation for Models - - [PSPetstore\Model.ApiResponse](docs/ApiResponse.md) - - [PSPetstore\Model.Category](docs/Category.md) - - [PSPetstore\Model.Order](docs/Order.md) - - [PSPetstore\Model.Pet](docs/Pet.md) - - [PSPetstore\Model.Tag](docs/Tag.md) - - [PSPetstore\Model.User](docs/User.md) + - [PSPetstore/Model.ApiResponse](docs/ApiResponse.md) + - [PSPetstore/Model.Category](docs/Category.md) + - [PSPetstore/Model.Order](docs/Order.md) + - [PSPetstore/Model.Pet](docs/Pet.md) + - [PSPetstore/Model.Tag](docs/Tag.md) + - [PSPetstore/Model.User](docs/User.md) ## Documentation for Authorization diff --git a/samples/client/petstore/powershell/docs/PSPetApi.md b/samples/client/petstore/powershell/docs/PSPetApi.md index af5ef7d0ded..5b8c2a0f2e3 100644 --- a/samples/client/petstore/powershell/docs/PSPetApi.md +++ b/samples/client/petstore/powershell/docs/PSPetApi.md @@ -1,4 +1,4 @@ -# PSPetstore.PSPetstore\Api.PSPetApi +# PSPetstore.PSPetstore/Api.PSPetApi All URIs are relative to *http://petstore.swagger.io:80/v2* diff --git a/samples/client/petstore/powershell/docs/PSStoreApi.md b/samples/client/petstore/powershell/docs/PSStoreApi.md index 2ae1104846c..33b3541ced6 100644 --- a/samples/client/petstore/powershell/docs/PSStoreApi.md +++ b/samples/client/petstore/powershell/docs/PSStoreApi.md @@ -1,4 +1,4 @@ -# PSPetstore.PSPetstore\Api.PSStoreApi +# PSPetstore.PSPetstore/Api.PSStoreApi All URIs are relative to *http://petstore.swagger.io:80/v2* diff --git a/samples/client/petstore/powershell/docs/PSUserApi.md b/samples/client/petstore/powershell/docs/PSUserApi.md index 0288084bf1f..f008e292f2c 100644 --- a/samples/client/petstore/powershell/docs/PSUserApi.md +++ b/samples/client/petstore/powershell/docs/PSUserApi.md @@ -1,4 +1,4 @@ -# PSPetstore.PSPetstore\Api.PSUserApi +# PSPetstore.PSPetstore/Api.PSUserApi All URIs are relative to *http://petstore.swagger.io:80/v2* diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts index dbb703aad5e..72152fe0462 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts @@ -51,7 +51,6 @@ export interface Capitalization { sCAETHFlowPoints?: string; /** * Name of the pet - * @type {string} * @memberof Capitalization */ diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md index b4a60640c2e..31cdc5ce99b 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md @@ -64,94 +64,94 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc\AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc\DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc\FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc\FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc\FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc\FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc\FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc\FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc\FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc\FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc\FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc\FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc\FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc\FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc\FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc\FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc\FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc\FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc\FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc\PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc\PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc\PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc\PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc\PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc\PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc\PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc\PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc\PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc\StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc\StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc\StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc\StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc\UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc\UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc\UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc\UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc\UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc\UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc\UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc\UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc/DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [AdditionalPropertiesClass](doc\AdditionalPropertiesClass.md) - - [Animal](doc\Animal.md) - - [ApiResponse](doc\ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc\ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc\ArrayOfNumberOnly.md) - - [ArrayTest](doc\ArrayTest.md) - - [Capitalization](doc\Capitalization.md) - - [Cat](doc\Cat.md) - - [CatAllOf](doc\CatAllOf.md) - - [Category](doc\Category.md) - - [ClassModel](doc\ClassModel.md) - - [Dog](doc\Dog.md) - - [DogAllOf](doc\DogAllOf.md) - - [EnumArrays](doc\EnumArrays.md) - - [EnumTest](doc\EnumTest.md) - - [FileSchemaTestClass](doc\FileSchemaTestClass.md) - - [Foo](doc\Foo.md) - - [FormatTest](doc\FormatTest.md) - - [HasOnlyReadOnly](doc\HasOnlyReadOnly.md) - - [HealthCheckResult](doc\HealthCheckResult.md) - - [InlineResponseDefault](doc\InlineResponseDefault.md) - - [MapTest](doc\MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc\MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc\Model200Response.md) - - [ModelClient](doc\ModelClient.md) - - [ModelEnumClass](doc\ModelEnumClass.md) - - [ModelFile](doc\ModelFile.md) - - [ModelList](doc\ModelList.md) - - [ModelReturn](doc\ModelReturn.md) - - [Name](doc\Name.md) - - [NullableClass](doc\NullableClass.md) - - [NumberOnly](doc\NumberOnly.md) - - [Order](doc\Order.md) - - [OuterComposite](doc\OuterComposite.md) - - [OuterEnum](doc\OuterEnum.md) - - [OuterEnumDefaultValue](doc\OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc\OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc\OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc\OuterObjectWithEnumProperty.md) - - [Pet](doc\Pet.md) - - [ReadOnlyFirst](doc\ReadOnlyFirst.md) - - [SpecialModelName](doc\SpecialModelName.md) - - [Tag](doc\Tag.md) - - [User](doc\User.md) + - [AdditionalPropertiesClass](doc/AdditionalPropertiesClass.md) + - [Animal](doc/Animal.md) + - [ApiResponse](doc/ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc/ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc/ArrayOfNumberOnly.md) + - [ArrayTest](doc/ArrayTest.md) + - [Capitalization](doc/Capitalization.md) + - [Cat](doc/Cat.md) + - [CatAllOf](doc/CatAllOf.md) + - [Category](doc/Category.md) + - [ClassModel](doc/ClassModel.md) + - [Dog](doc/Dog.md) + - [DogAllOf](doc/DogAllOf.md) + - [EnumArrays](doc/EnumArrays.md) + - [EnumTest](doc/EnumTest.md) + - [FileSchemaTestClass](doc/FileSchemaTestClass.md) + - [Foo](doc/Foo.md) + - [FormatTest](doc/FormatTest.md) + - [HasOnlyReadOnly](doc/HasOnlyReadOnly.md) + - [HealthCheckResult](doc/HealthCheckResult.md) + - [InlineResponseDefault](doc/InlineResponseDefault.md) + - [MapTest](doc/MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc/MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc/Model200Response.md) + - [ModelClient](doc/ModelClient.md) + - [ModelEnumClass](doc/ModelEnumClass.md) + - [ModelFile](doc/ModelFile.md) + - [ModelList](doc/ModelList.md) + - [ModelReturn](doc/ModelReturn.md) + - [Name](doc/Name.md) + - [NullableClass](doc/NullableClass.md) + - [NumberOnly](doc/NumberOnly.md) + - [Order](doc/Order.md) + - [OuterComposite](doc/OuterComposite.md) + - [OuterEnum](doc/OuterEnum.md) + - [OuterEnumDefaultValue](doc/OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc/OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc/OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc/OuterObjectWithEnumProperty.md) + - [Pet](doc/Pet.md) + - [ReadOnlyFirst](doc/ReadOnlyFirst.md) + - [SpecialModelName](doc/SpecialModelName.md) + - [Tag](doc/Tag.md) + - [User](doc/User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md index b20e32f0141..ac04fa9f72b 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md @@ -58,36 +58,36 @@ All URIs are relative to *http://petstore.swagger.io/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](doc\PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc\PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc\PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc\PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc\PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc\PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc\PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc\PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](doc\StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc\StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc\StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc\StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc\UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc\UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc\UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc\UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc\UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc\UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc\UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc\UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [ApiResponse](doc\ApiResponse.md) - - [Category](doc\Category.md) - - [Order](doc\Order.md) - - [Pet](doc\Pet.md) - - [Tag](doc\Tag.md) - - [User](doc\User.md) + - [ApiResponse](doc/ApiResponse.md) + - [Category](doc/Category.md) + - [Order](doc/Order.md) + - [Pet](doc/Pet.md) + - [Tag](doc/Tag.md) + - [User](doc/User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md index a516da3036f..22789ae7761 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md @@ -58,94 +58,94 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc\AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc\DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc\FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc\FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc\FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc\FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc\FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc\FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc\FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc\FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc\FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc\FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc\FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc\FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc\FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc\FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc\FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc\FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc\FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc\PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc\PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc\PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc\PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc\PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc\PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc\PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc\PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc\PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc\StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc\StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc\StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc\StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc\UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc\UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc\UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc\UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc\UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc\UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc\UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc\UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc/DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [AdditionalPropertiesClass](doc\AdditionalPropertiesClass.md) - - [Animal](doc\Animal.md) - - [ApiResponse](doc\ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc\ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc\ArrayOfNumberOnly.md) - - [ArrayTest](doc\ArrayTest.md) - - [Capitalization](doc\Capitalization.md) - - [Cat](doc\Cat.md) - - [CatAllOf](doc\CatAllOf.md) - - [Category](doc\Category.md) - - [ClassModel](doc\ClassModel.md) - - [Dog](doc\Dog.md) - - [DogAllOf](doc\DogAllOf.md) - - [EnumArrays](doc\EnumArrays.md) - - [EnumTest](doc\EnumTest.md) - - [FileSchemaTestClass](doc\FileSchemaTestClass.md) - - [Foo](doc\Foo.md) - - [FormatTest](doc\FormatTest.md) - - [HasOnlyReadOnly](doc\HasOnlyReadOnly.md) - - [HealthCheckResult](doc\HealthCheckResult.md) - - [InlineResponseDefault](doc\InlineResponseDefault.md) - - [MapTest](doc\MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc\MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc\Model200Response.md) - - [ModelClient](doc\ModelClient.md) - - [ModelEnumClass](doc\ModelEnumClass.md) - - [ModelFile](doc\ModelFile.md) - - [ModelList](doc\ModelList.md) - - [ModelReturn](doc\ModelReturn.md) - - [Name](doc\Name.md) - - [NullableClass](doc\NullableClass.md) - - [NumberOnly](doc\NumberOnly.md) - - [Order](doc\Order.md) - - [OuterComposite](doc\OuterComposite.md) - - [OuterEnum](doc\OuterEnum.md) - - [OuterEnumDefaultValue](doc\OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc\OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc\OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc\OuterObjectWithEnumProperty.md) - - [Pet](doc\Pet.md) - - [ReadOnlyFirst](doc\ReadOnlyFirst.md) - - [SpecialModelName](doc\SpecialModelName.md) - - [Tag](doc\Tag.md) - - [User](doc\User.md) + - [AdditionalPropertiesClass](doc/AdditionalPropertiesClass.md) + - [Animal](doc/Animal.md) + - [ApiResponse](doc/ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc/ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc/ArrayOfNumberOnly.md) + - [ArrayTest](doc/ArrayTest.md) + - [Capitalization](doc/Capitalization.md) + - [Cat](doc/Cat.md) + - [CatAllOf](doc/CatAllOf.md) + - [Category](doc/Category.md) + - [ClassModel](doc/ClassModel.md) + - [Dog](doc/Dog.md) + - [DogAllOf](doc/DogAllOf.md) + - [EnumArrays](doc/EnumArrays.md) + - [EnumTest](doc/EnumTest.md) + - [FileSchemaTestClass](doc/FileSchemaTestClass.md) + - [Foo](doc/Foo.md) + - [FormatTest](doc/FormatTest.md) + - [HasOnlyReadOnly](doc/HasOnlyReadOnly.md) + - [HealthCheckResult](doc/HealthCheckResult.md) + - [InlineResponseDefault](doc/InlineResponseDefault.md) + - [MapTest](doc/MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc/MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc/Model200Response.md) + - [ModelClient](doc/ModelClient.md) + - [ModelEnumClass](doc/ModelEnumClass.md) + - [ModelFile](doc/ModelFile.md) + - [ModelList](doc/ModelList.md) + - [ModelReturn](doc/ModelReturn.md) + - [Name](doc/Name.md) + - [NullableClass](doc/NullableClass.md) + - [NumberOnly](doc/NumberOnly.md) + - [Order](doc/Order.md) + - [OuterComposite](doc/OuterComposite.md) + - [OuterEnum](doc/OuterEnum.md) + - [OuterEnumDefaultValue](doc/OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc/OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc/OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc/OuterObjectWithEnumProperty.md) + - [Pet](doc/Pet.md) + - [ReadOnlyFirst](doc/ReadOnlyFirst.md) + - [SpecialModelName](doc/SpecialModelName.md) + - [Tag](doc/Tag.md) + - [User](doc/User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md b/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md index 18de35ccec0..99bd229f3c5 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md @@ -60,36 +60,36 @@ All URIs are relative to *http://petstore.swagger.io/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](doc\/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc\/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc\/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc\/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc\/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc\/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc\/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc\/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](doc\/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc\/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc\/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc\/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc\/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc\/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc\/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc\/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc\/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc\/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc\/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc\/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [ApiResponse](doc\/ApiResponse.md) - - [Category](doc\/Category.md) - - [Order](doc\/Order.md) - - [Pet](doc\/Pet.md) - - [Tag](doc\/Tag.md) - - [User](doc\/User.md) + - [ApiResponse](doc//ApiResponse.md) + - [Category](doc//Category.md) + - [Order](doc//Order.md) + - [Pet](doc//Pet.md) + - [Tag](doc//Tag.md) + - [User](doc//User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md index 9b39a96c6b7..fe39c2f2126 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md @@ -58,94 +58,94 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc\/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc\/DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc\/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc\/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc\/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc\/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc\/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc\/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc\/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc\/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc\/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc\/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc\/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc\/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc\/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc\/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc\/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc\/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc\/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc\/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc\/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc\/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc\/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc\/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc\/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc\/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc\/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc\/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc\/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc\/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc\/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc\/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc\/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc\/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc\/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc\/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc\/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc\/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc\/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc\/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc//AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc//DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc//FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc//FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc//FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc//FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc//FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc//FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc//FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc//FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc//FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc//FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc//FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc//FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc//FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc//FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc//FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc//FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc//FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc//PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [AdditionalPropertiesClass](doc\/AdditionalPropertiesClass.md) - - [Animal](doc\/Animal.md) - - [ApiResponse](doc\/ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc\/ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc\/ArrayOfNumberOnly.md) - - [ArrayTest](doc\/ArrayTest.md) - - [Capitalization](doc\/Capitalization.md) - - [Cat](doc\/Cat.md) - - [CatAllOf](doc\/CatAllOf.md) - - [Category](doc\/Category.md) - - [ClassModel](doc\/ClassModel.md) - - [Dog](doc\/Dog.md) - - [DogAllOf](doc\/DogAllOf.md) - - [EnumArrays](doc\/EnumArrays.md) - - [EnumClass](doc\/EnumClass.md) - - [EnumTest](doc\/EnumTest.md) - - [FileSchemaTestClass](doc\/FileSchemaTestClass.md) - - [Foo](doc\/Foo.md) - - [FormatTest](doc\/FormatTest.md) - - [HasOnlyReadOnly](doc\/HasOnlyReadOnly.md) - - [HealthCheckResult](doc\/HealthCheckResult.md) - - [InlineResponseDefault](doc\/InlineResponseDefault.md) - - [MapTest](doc\/MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc\/MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc\/Model200Response.md) - - [ModelClient](doc\/ModelClient.md) - - [ModelFile](doc\/ModelFile.md) - - [ModelList](doc\/ModelList.md) - - [ModelReturn](doc\/ModelReturn.md) - - [Name](doc\/Name.md) - - [NullableClass](doc\/NullableClass.md) - - [NumberOnly](doc\/NumberOnly.md) - - [Order](doc\/Order.md) - - [OuterComposite](doc\/OuterComposite.md) - - [OuterEnum](doc\/OuterEnum.md) - - [OuterEnumDefaultValue](doc\/OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc\/OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc\/OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc\/OuterObjectWithEnumProperty.md) - - [Pet](doc\/Pet.md) - - [ReadOnlyFirst](doc\/ReadOnlyFirst.md) - - [SpecialModelName](doc\/SpecialModelName.md) - - [Tag](doc\/Tag.md) - - [User](doc\/User.md) + - [AdditionalPropertiesClass](doc//AdditionalPropertiesClass.md) + - [Animal](doc//Animal.md) + - [ApiResponse](doc//ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc//ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc//ArrayOfNumberOnly.md) + - [ArrayTest](doc//ArrayTest.md) + - [Capitalization](doc//Capitalization.md) + - [Cat](doc//Cat.md) + - [CatAllOf](doc//CatAllOf.md) + - [Category](doc//Category.md) + - [ClassModel](doc//ClassModel.md) + - [Dog](doc//Dog.md) + - [DogAllOf](doc//DogAllOf.md) + - [EnumArrays](doc//EnumArrays.md) + - [EnumClass](doc//EnumClass.md) + - [EnumTest](doc//EnumTest.md) + - [FileSchemaTestClass](doc//FileSchemaTestClass.md) + - [Foo](doc//Foo.md) + - [FormatTest](doc//FormatTest.md) + - [HasOnlyReadOnly](doc//HasOnlyReadOnly.md) + - [HealthCheckResult](doc//HealthCheckResult.md) + - [InlineResponseDefault](doc//InlineResponseDefault.md) + - [MapTest](doc//MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc//MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc//Model200Response.md) + - [ModelClient](doc//ModelClient.md) + - [ModelFile](doc//ModelFile.md) + - [ModelList](doc//ModelList.md) + - [ModelReturn](doc//ModelReturn.md) + - [Name](doc//Name.md) + - [NullableClass](doc//NullableClass.md) + - [NumberOnly](doc//NumberOnly.md) + - [Order](doc//Order.md) + - [OuterComposite](doc//OuterComposite.md) + - [OuterEnum](doc//OuterEnum.md) + - [OuterEnumDefaultValue](doc//OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc//OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc//OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc//OuterObjectWithEnumProperty.md) + - [Pet](doc//Pet.md) + - [ReadOnlyFirst](doc//ReadOnlyFirst.md) + - [SpecialModelName](doc//SpecialModelName.md) + - [Tag](doc//Tag.md) + - [User](doc//User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md index 9b39a96c6b7..fe39c2f2126 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md @@ -58,94 +58,94 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc\/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc\/DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc\/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc\/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc\/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc\/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc\/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc\/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc\/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc\/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc\/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc\/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc\/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc\/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc\/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc\/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc\/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc\/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc\/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc\/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc\/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc\/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc\/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc\/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc\/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc\/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc\/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc\/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc\/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc\/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc\/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc\/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc\/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc\/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc\/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc\/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc\/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc\/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc\/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc\/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc//AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc//DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc//FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc//FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc//FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc//FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc//FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc//FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc//FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc//FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc//FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc//FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc//FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc//FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc//FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc//FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc//FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc//FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc//FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc//PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [AdditionalPropertiesClass](doc\/AdditionalPropertiesClass.md) - - [Animal](doc\/Animal.md) - - [ApiResponse](doc\/ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc\/ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc\/ArrayOfNumberOnly.md) - - [ArrayTest](doc\/ArrayTest.md) - - [Capitalization](doc\/Capitalization.md) - - [Cat](doc\/Cat.md) - - [CatAllOf](doc\/CatAllOf.md) - - [Category](doc\/Category.md) - - [ClassModel](doc\/ClassModel.md) - - [Dog](doc\/Dog.md) - - [DogAllOf](doc\/DogAllOf.md) - - [EnumArrays](doc\/EnumArrays.md) - - [EnumClass](doc\/EnumClass.md) - - [EnumTest](doc\/EnumTest.md) - - [FileSchemaTestClass](doc\/FileSchemaTestClass.md) - - [Foo](doc\/Foo.md) - - [FormatTest](doc\/FormatTest.md) - - [HasOnlyReadOnly](doc\/HasOnlyReadOnly.md) - - [HealthCheckResult](doc\/HealthCheckResult.md) - - [InlineResponseDefault](doc\/InlineResponseDefault.md) - - [MapTest](doc\/MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc\/MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc\/Model200Response.md) - - [ModelClient](doc\/ModelClient.md) - - [ModelFile](doc\/ModelFile.md) - - [ModelList](doc\/ModelList.md) - - [ModelReturn](doc\/ModelReturn.md) - - [Name](doc\/Name.md) - - [NullableClass](doc\/NullableClass.md) - - [NumberOnly](doc\/NumberOnly.md) - - [Order](doc\/Order.md) - - [OuterComposite](doc\/OuterComposite.md) - - [OuterEnum](doc\/OuterEnum.md) - - [OuterEnumDefaultValue](doc\/OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc\/OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc\/OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc\/OuterObjectWithEnumProperty.md) - - [Pet](doc\/Pet.md) - - [ReadOnlyFirst](doc\/ReadOnlyFirst.md) - - [SpecialModelName](doc\/SpecialModelName.md) - - [Tag](doc\/Tag.md) - - [User](doc\/User.md) + - [AdditionalPropertiesClass](doc//AdditionalPropertiesClass.md) + - [Animal](doc//Animal.md) + - [ApiResponse](doc//ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc//ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc//ArrayOfNumberOnly.md) + - [ArrayTest](doc//ArrayTest.md) + - [Capitalization](doc//Capitalization.md) + - [Cat](doc//Cat.md) + - [CatAllOf](doc//CatAllOf.md) + - [Category](doc//Category.md) + - [ClassModel](doc//ClassModel.md) + - [Dog](doc//Dog.md) + - [DogAllOf](doc//DogAllOf.md) + - [EnumArrays](doc//EnumArrays.md) + - [EnumClass](doc//EnumClass.md) + - [EnumTest](doc//EnumTest.md) + - [FileSchemaTestClass](doc//FileSchemaTestClass.md) + - [Foo](doc//Foo.md) + - [FormatTest](doc//FormatTest.md) + - [HasOnlyReadOnly](doc//HasOnlyReadOnly.md) + - [HealthCheckResult](doc//HealthCheckResult.md) + - [InlineResponseDefault](doc//InlineResponseDefault.md) + - [MapTest](doc//MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc//MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc//Model200Response.md) + - [ModelClient](doc//ModelClient.md) + - [ModelFile](doc//ModelFile.md) + - [ModelList](doc//ModelList.md) + - [ModelReturn](doc//ModelReturn.md) + - [Name](doc//Name.md) + - [NullableClass](doc//NullableClass.md) + - [NumberOnly](doc//NumberOnly.md) + - [Order](doc//Order.md) + - [OuterComposite](doc//OuterComposite.md) + - [OuterEnum](doc//OuterEnum.md) + - [OuterEnumDefaultValue](doc//OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc//OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc//OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc//OuterObjectWithEnumProperty.md) + - [Pet](doc//Pet.md) + - [ReadOnlyFirst](doc//ReadOnlyFirst.md) + - [SpecialModelName](doc//SpecialModelName.md) + - [Tag](doc//Tag.md) + - [User](doc//User.md) ## Documentation For Authorization diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs index 04aa969cb95..d58ff968d3c 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -86,7 +86,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -225,7 +225,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; + exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs index cb4da58b610..79c62f5c672 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs index c4f77f108ac..17fdac817ad 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; + exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs index 04aa969cb95..d58ff968d3c 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -86,7 +86,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -225,7 +225,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; + exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs index cb4da58b610..79c62f5c672 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs index c4f77f108ac..17fdac817ad 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; + exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs index c99e55e5f2d..3162f82261b 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -48,7 +48,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(405); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -97,7 +97,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -161,7 +161,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -197,7 +197,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(405); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -247,7 +247,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; + exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs index 881cd5107a9..431fccf1905 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -128,7 +128,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs index 327c18b8687..406c969ffb2 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -134,7 +134,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; + exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs index 6f7fae5e120..68722c6b4cb 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -86,7 +86,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -225,7 +225,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; + exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs index 213f6a8479e..4503e177b9c 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs index b4752ae73d1..06ca8107d07 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; + exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/php-slim4/README.md b/samples/server/petstore/php-slim4/README.md index 78d2322ebb7..3f5c820198c 100644 --- a/samples/server/petstore/php-slim4/README.md +++ b/samples/server/petstore/php-slim4/README.md @@ -168,10 +168,10 @@ Class | Method | HTTP request | Description ## Authentication ### Security schema `api_key` -> Important! To make ApiKey authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib\/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\ApiKeyAuthenticator](./src/Auth/ApiKeyAuthenticator.php) class. +> Important! To make ApiKey authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\ApiKeyAuthenticator](./src/Auth/ApiKeyAuthenticator.php) class. ### Security schema `petstore_auth` -> Important! To make OAuth authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib\/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\OAuthAuthenticator](./src/Auth/OAuthAuthenticator.php) class. +> Important! To make OAuth authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\OAuthAuthenticator](./src/Auth/OAuthAuthenticator.php) class. Scope list: * `write:pets` - modify pets in your account diff --git a/samples/server/petstore/php-slim4/phpunit.xml.dist b/samples/server/petstore/php-slim4/phpunit.xml.dist index 10eaa652957..3efb4b45f4a 100644 --- a/samples/server/petstore/php-slim4/phpunit.xml.dist +++ b/samples/server/petstore/php-slim4/phpunit.xml.dist @@ -21,9 +21,9 @@ - ./lib\/Api + ./lib/Api ./lib/BaseModel.php - ./lib\/Model + ./lib/Model diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist b/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist index 40d39d2f5a8..e754829e628 100644 --- a/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist +++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist @@ -14,9 +14,9 @@ - ./.\/Api - ./.\/Model - ./.\/Controller + ././Api + ././Model + ././Controller diff --git a/samples/server/petstore/python-aiohttp-srclayout/setup.py b/samples/server/petstore/python-aiohttp-srclayout/setup.py index 600b620958c..6f62aec4414 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/setup.py +++ b/samples/server/petstore/python-aiohttp-srclayout/setup.py @@ -27,9 +27,9 @@ setup( url="", keywords=["OpenAPI", "OpenAPI Petstore"], install_requires=REQUIRES, - packages=find_packages("src\"), - package_dir={"": "src\"}, - package_data={'': ['src\/openapi/openapi.yaml']}, + packages=find_packages("src/"), + package_dir={"": "src/"}, + package_data={'': ['src//openapi/openapi.yaml']}, include_package_data=True, entry_points={ 'console_scripts': ['openapi_server=openapi_server.__main__:main']}, diff --git a/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py b/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py index 63ba2f413d1..578bf18e982 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py +++ b/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py @@ -12,7 +12,7 @@ def client(loop, aiohttp_client): "swagger_ui": True } specification_dir = os.path.join(os.path.dirname(__file__), '..', - "src\", + "src/", 'openapi_server', 'openapi') app = connexion.AioHttpApp(__name__, specification_dir=specification_dir, diff --git a/samples/server/petstore/python-aiohttp-srclayout/tox.ini b/samples/server/petstore/python-aiohttp-srclayout/tox.ini index 3d847999b3c..25d12bb84c0 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/tox.ini +++ b/samples/server/petstore/python-aiohttp-srclayout/tox.ini @@ -8,4 +8,4 @@ deps=-r{toxinidir}/requirements.txt {toxinidir} commands= - pytest --cov=src\openapi_server + pytest --cov=src/openapi_server From 62a52bf1e8f56f74ea3a7a233975d34ab9ac0059 Mon Sep 17 00:00:00 2001 From: Elan Thangamani Date: Wed, 26 May 2021 21:46:22 -0500 Subject: [PATCH 054/192] Upgrade Virtualan version with 2.2.1 -> Open API Mock service (#9598) * changed correct values * Updated virtualan version * updated the correct version * Updated with latest version * Update pom.xml * Updated with 2.5.0 * Updated with db 2.5.0 version --- .../libraries/spring-boot/application.mustache | 10 +++++----- .../JavaSpring/libraries/spring-boot/pom.mustache | 9 ++------- samples/server/petstore/springboot-virtualan/pom.xml | 9 ++------- 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/application.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/application.mustache index b7fea3f6262..6eb4ae24298 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/application.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/application.mustache @@ -5,8 +5,8 @@ server.port={{serverPort}} spring.jackson.date-format={{basePackage}}.RFC3339DateFormat spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false {{#virtualService}} -virtual.datasource.driver-class-name=org.hsqldb.jdbcDriver -virtual.datasource.jdbcurl=jdbc:hsqldb:mem:dataSource -virtual.datasource.username=sa -virtual.datasource.password= -{{/virtualService}} \ No newline at end of file +virtualan.datasource.driver-class-name=org.hsqldb.jdbcDriver +virtualan.datasource.jdbcurl=jdbc:hsqldb:mem:dataSource +virtualan.datasource.username=sa +virtualan.datasource.password= +{{/virtualService}} diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/pom.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/pom.mustache index e2733633e35..d5ae34ff8a5 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/pom.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/pom.mustache @@ -176,18 +176,13 @@ io.virtualan virtualan-plugin - 2.1.7 + 2.2.1 org.hsqldb hsqldb - 2.3.2 - - - org.springframework.boot - spring-boot-starter-data-jpa - 1.5.9.RELEASE + 2.5.0 {{/virtualService}} diff --git a/samples/server/petstore/springboot-virtualan/pom.xml b/samples/server/petstore/springboot-virtualan/pom.xml index 3dceb8a963e..8dc39bea12e 100644 --- a/samples/server/petstore/springboot-virtualan/pom.xml +++ b/samples/server/petstore/springboot-virtualan/pom.xml @@ -75,18 +75,13 @@ io.virtualan virtualan-plugin - 2.1.7 + 2.2.1 org.hsqldb hsqldb - 2.3.2 - - - org.springframework.boot - spring-boot-starter-data-jpa - 1.5.9.RELEASE + 2.5.0 From 6edbc91eebdd5cfdccf26e384c6f75dfe0e8686c Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Thu, 27 May 2021 04:58:37 +0200 Subject: [PATCH 055/192] [dart][dart-dio] Update docs for dart-dio-next (#9584) * remove deprecated author field from all pubspec templates * improve dart-dio-next readme/markdown documentation * add a lot of dart-doc to model and API classes --- .../main/resources/dart-dio/pubspec.mustache | 2 - .../dart/libraries/dio/README.mustache | 6 +- .../resources/dart/libraries/dio/api.mustache | 24 +- .../dart/libraries/dio/api_doc.mustache | 14 +- .../dart/libraries/dio/object_doc.mustache | 2 +- .../dart/libraries/dio/pubspec.mustache | 2 - .../serialization/built_value/class.mustache | 12 +- .../src/main/resources/dart2/pubspec.mustache | 2 - .../petstore_client_lib_fake/README.md | 84 +++--- .../doc/AdditionalPropertiesClass.md | 4 +- .../doc/AnotherFakeApi.md | 10 +- .../doc/ArrayOfArrayOfNumberOnly.md | 2 +- .../doc/ArrayOfNumberOnly.md | 2 +- .../petstore_client_lib_fake/doc/ArrayTest.md | 6 +- .../doc/DefaultApi.md | 8 +- .../doc/EnumArrays.md | 2 +- .../petstore_client_lib_fake/doc/FakeApi.md | 224 +++++++-------- .../doc/FakeClassnameTags123Api.md | 10 +- .../doc/FileSchemaTestClass.md | 2 +- .../petstore_client_lib_fake/doc/MapTest.md | 8 +- ...dPropertiesAndAdditionalPropertiesClass.md | 2 +- .../doc/NullableClass.md | 12 +- .../petstore_client_lib_fake/doc/Pet.md | 4 +- .../petstore_client_lib_fake/doc/PetApi.md | 104 +++---- .../petstore_client_lib_fake/doc/StoreApi.md | 38 +-- .../petstore_client_lib_fake/doc/UserApi.md | 74 ++--- .../lib/src/api/another_fake_api.dart | 13 +- .../lib/src/api/default_api.dart | 12 +- .../lib/src/api/fake_api.dart | 256 ++++++++++++++++-- .../src/api/fake_classname_tags123_api.dart | 13 +- .../lib/src/api/pet_api.dart | 125 ++++++++- .../lib/src/api/store_api.dart | 51 +++- .../lib/src/api/user_api.dart | 105 ++++++- .../model/additional_properties_class.dart | 7 +- .../lib/src/model/animal.dart | 7 +- .../lib/src/model/api_response.dart | 8 +- .../model/array_of_array_of_number_only.dart | 6 +- .../lib/src/model/array_of_number_only.dart | 6 +- .../lib/src/model/array_test.dart | 8 +- .../lib/src/model/capitalization.dart | 11 +- .../lib/src/model/cat.dart | 6 + .../lib/src/model/cat_all_of.dart | 6 +- .../lib/src/model/category.dart | 7 +- .../lib/src/model/class_model.dart | 6 +- .../lib/src/model/dog.dart | 6 + .../lib/src/model/dog_all_of.dart | 6 +- .../lib/src/model/enum_arrays.dart | 7 +- .../lib/src/model/enum_test.dart | 13 +- .../lib/src/model/file_schema_test_class.dart | 7 +- .../lib/src/model/foo.dart | 6 +- .../lib/src/model/format_test.dart | 21 +- .../lib/src/model/has_only_read_only.dart | 7 +- .../lib/src/model/health_check_result.dart | 6 +- .../src/model/inline_response_default.dart | 6 +- .../lib/src/model/map_test.dart | 9 +- ...rties_and_additional_properties_class.dart | 8 +- .../lib/src/model/model200_response.dart | 7 +- .../lib/src/model/model_client.dart | 6 +- .../lib/src/model/model_file.dart | 6 +- .../lib/src/model/model_list.dart | 6 +- .../lib/src/model/model_return.dart | 6 +- .../lib/src/model/name.dart | 9 +- .../lib/src/model/nullable_class.dart | 17 +- .../lib/src/model/number_only.dart | 6 +- .../lib/src/model/order.dart | 11 +- .../lib/src/model/outer_composite.dart | 8 +- .../outer_object_with_enum_property.dart | 6 +- .../lib/src/model/pet.dart | 11 +- .../lib/src/model/read_only_first.dart | 7 +- .../lib/src/model/special_model_name.dart | 6 +- .../lib/src/model/tag.dart | 7 +- .../lib/src/model/user.dart | 13 +- .../petstore_client_lib_fake/pubspec.yaml | 2 - .../dart-dio/petstore_client_lib/pubspec.yaml | 2 - .../petstore_client_lib_fake/pubspec.yaml | 2 - .../dart2/petstore_client_lib/pubspec.yaml | 2 - .../petstore_client_lib_fake/pubspec.yaml | 2 - .../pubspec.yaml | 2 - 78 files changed, 1107 insertions(+), 452 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/dart-dio/pubspec.mustache b/modules/openapi-generator/src/main/resources/dart-dio/pubspec.mustache index 025230b7357..2484e50837a 100644 --- a/modules/openapi-generator/src/main/resources/dart-dio/pubspec.mustache +++ b/modules/openapi-generator/src/main/resources/dart-dio/pubspec.mustache @@ -2,8 +2,6 @@ name: {{pubName}} version: {{pubVersion}} description: {{pubDescription}} homepage: {{pubHomepage}} -authors: - - '{{{pubAuthor}}} <{{{pubAuthorEmail}}}>' environment: sdk: '>=2.7.0 <3.0.0' diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/README.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/README.mustache index 3ef0679e726..69591ce24a3 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/README.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/README.mustache @@ -60,9 +60,9 @@ Please follow the [installation procedure](#installation--usage) and then run th import 'package:{{pubName}}/{{pubName}}.dart'; {{#apiInfo}}{{#apis}}{{#-first}}{{#operations}}{{#operation}}{{#-first}} -final api = {{classname}}(); +final api = {{clientName}}().get{{classname}}(); {{#allParams}} -final {{paramName}} = {{#isArray}}[{{/isArray}}{{#isBodyParam}}{{dataType}}(){{/isBodyParam}}{{^isBodyParam}}{{{example}}}{{/isBodyParam}}{{#isArray}}]{{/isArray}}; // {{{dataType}}} | {{{description}}} +final {{{dataType}}} {{paramName}} = {{{example}}}; // {{{dataType}}} | {{{description}}} {{/allParams}} try { @@ -82,7 +82,7 @@ All URIs are relative to *{{basePath}}* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}*{{classname}}* | [**{{operationId}}**]({{apiDocPath}}{{classname}}.md#{{operationIdLowerCase}}) | **{{httpMethod}}** {{path}} | {{#summary}}{{summary}}{{/summary}} +{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}[*{{classname}}*]({{modelDocPath}}{{{classname}}}.md) | [**{{operationId}}**]({{apiDocPath}}{{classname}}.md#{{operationIdLowerCase}}) | **{{httpMethod}}** {{path}} | {{#summary}}{{summary}}{{/summary}} {{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} ## Documentation For Models diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache index 328506457c0..5182266d24b 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache @@ -19,9 +19,29 @@ class {{classname}} { const {{classname}}(this._dio{{#useBuiltValue}}, this._serializers{{/useBuiltValue}}); {{#operation}} - /// {{{summary}}} + /// {{#summary}}{{.}}{{/summary}}{{^summary}}{{nickname}}{{/summary}} + /// {{notes}} /// - /// {{{notes}}} + /// Parameters: + {{#allParams}} + /// * [{{paramName}}] {{#description}}- {{{.}}}{{/description}} + {{/allParams}} + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future]{{#returnType}} containing a [Response] with a [{{{returnType}}}] as data{{/returnType}} + /// Throws [DioError] if API call or serialization fails + {{#externalDocs}} + /// {{description}} + /// Also see [{{summary}} Documentation]({{url}}) + {{/externalDocs}} + {{#isDeprecated}} + @Deprecated('This operation has been deprecated') + {{/isDeprecated}} Future> {{nickname}}({ {{#allParams}}{{#isPathParam}} required {{{dataType}}} {{paramName}},{{/isPathParam}}{{#isQueryParam}} {{#required}}required {{/required}}{{{dataType}}}{{^required}}?{{/required}} {{paramName}},{{/isQueryParam}}{{#isHeaderParam}} diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/api_doc.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/api_doc.mustache index 1e28b16012e..548c8b140ce 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/api_doc.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/api_doc.mustache @@ -45,17 +45,17 @@ import 'package:{{pubName}}/api.dart'; {{/authMethods}} {{/hasAuthMethods}} -var api_instance = new {{classname}}(); +final api = {{clientName}}().get{{classname}}(); {{#allParams}} -var {{paramName}} = {{#isArray}}[{{/isArray}}{{#isBodyParam}}new {{{dataType}}}(){{/isBodyParam}}{{^isBodyParam}}{{{example}}}{{/isBodyParam}}{{#isArray}}]{{/isArray}}; // {{{dataType}}} | {{{description}}} +final {{{dataType}}} {{paramName}} = {{{example}}}; // {{{dataType}}} | {{{description}}} {{/allParams}} try { - {{#returnType}}var result = {{/returnType}}api_instance.{{{operationId}}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}); + {{#returnType}}final response = {{/returnType}}api.{{{operationId}}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}); {{#returnType}} - print(result); + print(response); {{/returnType}} -} catch (e) { +} catch on DioError (e) { print('Exception when calling {{classname}}->{{operationId}}: $e\n'); } ``` @@ -64,12 +64,12 @@ try { {{^allParams}}This endpoint does not need any parameter.{{/allParams}}{{#allParams}}{{#-last}} Name | Type | Description | Notes ------------- | ------------- | ------------- | -------------{{/-last}}{{/allParams}} -{{#allParams}} **{{paramName}}** | {{#isPrimitiveType}}**{{{dataType}}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{{dataType}}}**]({{baseType}}.md){{/isPrimitiveType}}| {{{description}}} | {{^required}}[optional] {{/required}}{{#defaultValue}}[default to {{{defaultValue}}}]{{/defaultValue}} +{{#allParams}} **{{paramName}}** | {{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{dataType}}**]({{baseType}}.md){{/isPrimitiveType}}| {{{description}}} | {{^required}}[optional] {{/required}}{{#defaultValue}}[default to {{{defaultValue}}}]{{/defaultValue}} {{/allParams}} ### Return type -{{#returnType}}{{#returnTypeIsPrimitive}}**{{{returnType}}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}[**{{{returnType}}}**]({{returnBaseType}}.md){{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}void (empty response body){{/returnType}} +{{#returnType}}{{#returnTypeIsPrimitive}}**{{returnType}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}[**{{returnType}}**]({{returnBaseType}}.md){{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}void (empty response body){{/returnType}} ### Authorization diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/object_doc.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/object_doc.mustache index f2a52db11a4..84b70087bf4 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/object_doc.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/object_doc.mustache @@ -8,7 +8,7 @@ import 'package:{{pubName}}/api.dart'; ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -{{#vars}}**{{name}}** | {{#isPrimitiveType}}**{{{dataType}}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{{dataType}}}**]({{complexType}}.md){{/isPrimitiveType}} | {{{description}}} | {{^required}}[optional] {{/required}}{{#readOnly}}[readonly] {{/readOnly}}{{#defaultValue}}[default to {{{defaultValue}}}]{{/defaultValue}} +{{#vars}}**{{name}}** | {{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{dataType}}**]({{complexType}}.md){{/isPrimitiveType}} | {{{description}}} | {{^required}}[optional] {{/required}}{{#readOnly}}[readonly] {{/readOnly}}{{#defaultValue}}[default to {{{defaultValue}}}]{{/defaultValue}} {{/vars}} [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/pubspec.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/pubspec.mustache index b2eef72f91e..991de1e44b5 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/pubspec.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/pubspec.mustache @@ -2,8 +2,6 @@ name: {{pubName}} version: {{pubVersion}} description: {{pubDescription}} homepage: {{pubHomepage}} -authors: - - '{{{pubAuthor}}} <{{{pubAuthorEmail}}}>' environment: sdk: '>=2.12.0 <3.0.0' diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class.mustache index f359b8d5a91..9eb53c756c7 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class.mustache @@ -7,8 +7,18 @@ part '{{classFilename}}.g.dart'; Classes with polymorphism or composition may generate unused imports, these need to be ignored for said classes so that there are no lint errors. }} -{{#parentModel}}// ignore_for_file: unused_import{{/parentModel}} +{{#parentModel}} +// ignore_for_file: unused_import +{{/parentModel}} +/// {{#description}}{{{.}}}{{/description}}{{^description}}{{classname}}{{/description}} +{{#hasVars}} +/// +/// Properties: +{{#allVars}} +/// * [{{{name}}}] {{#description}}- {{{.}}}{{/description}} +{{/allVars}} +{{/hasVars}} abstract class {{classname}} implements Built<{{classname}}, {{classname}}Builder> { {{#vars}} {{#description}} diff --git a/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache b/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache index 93c848aa5c1..4ce12df9e48 100644 --- a/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/pubspec.mustache @@ -5,8 +5,6 @@ name: '{{{pubName}}}' version: '{{{pubVersion}}}' description: '{{{pubDescription}}}' -authors: - - '{{{pubAuthor}}} <{{{pubAuthorEmail}}}>' homepage: '{{{pubHomepage}}}' environment: sdk: '>=2.12.0 <3.0.0' diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md index 31cdc5ce99b..48f3b73ec03 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md @@ -46,8 +46,8 @@ Please follow the [installation procedure](#installation--usage) and then run th import 'package:openapi/openapi.dart'; -final api = AnotherFakeApi(); -final modelClient = ModelClient(); // ModelClient | client model +final api = Openapi().getAnotherFakeApi(); +final ModelClient modelClient = ; // ModelClient | client model try { final response = await api.call123testSpecialTags(modelClient); @@ -64,46 +64,46 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc/DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +[*AnotherFakeApi*](doc/AnotherFakeApi.md) | [**call123testSpecialTags**](doc/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +[*DefaultApi*](doc/DefaultApi.md) | [**fooGet**](doc/DefaultApi.md#fooget) | **GET** /foo | +[*FakeApi*](doc/FakeApi.md) | [**fakeHealthGet**](doc/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +[*FakeApi*](doc/FakeApi.md) | [**fakeHttpSignatureTest**](doc/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +[*FakeApi*](doc/FakeApi.md) | [**fakeOuterBooleanSerialize**](doc/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +[*FakeApi*](doc/FakeApi.md) | [**fakeOuterCompositeSerialize**](doc/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +[*FakeApi*](doc/FakeApi.md) | [**fakeOuterNumberSerialize**](doc/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +[*FakeApi*](doc/FakeApi.md) | [**fakeOuterStringSerialize**](doc/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +[*FakeApi*](doc/FakeApi.md) | [**fakePropertyEnumIntegerSerialize**](doc/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +[*FakeApi*](doc/FakeApi.md) | [**testBodyWithFileSchema**](doc/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +[*FakeApi*](doc/FakeApi.md) | [**testBodyWithQueryParams**](doc/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +[*FakeApi*](doc/FakeApi.md) | [**testClientModel**](doc/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +[*FakeApi*](doc/FakeApi.md) | [**testEndpointParameters**](doc/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +[*FakeApi*](doc/FakeApi.md) | [**testEnumParameters**](doc/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +[*FakeApi*](doc/FakeApi.md) | [**testGroupParameters**](doc/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +[*FakeApi*](doc/FakeApi.md) | [**testInlineAdditionalProperties**](doc/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +[*FakeApi*](doc/FakeApi.md) | [**testJsonFormData**](doc/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +[*FakeApi*](doc/FakeApi.md) | [**testQueryParameterCollectionFormat**](doc/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +[*FakeClassnameTags123Api*](doc/FakeClassnameTags123Api.md) | [**testClassname**](doc/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +[*PetApi*](doc/PetApi.md) | [**addPet**](doc/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +[*PetApi*](doc/PetApi.md) | [**deletePet**](doc/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +[*PetApi*](doc/PetApi.md) | [**findPetsByStatus**](doc/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +[*PetApi*](doc/PetApi.md) | [**findPetsByTags**](doc/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +[*PetApi*](doc/PetApi.md) | [**getPetById**](doc/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +[*PetApi*](doc/PetApi.md) | [**updatePet**](doc/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +[*PetApi*](doc/PetApi.md) | [**updatePetWithForm**](doc/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +[*PetApi*](doc/PetApi.md) | [**uploadFile**](doc/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +[*PetApi*](doc/PetApi.md) | [**uploadFileWithRequiredFile**](doc/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +[*StoreApi*](doc/StoreApi.md) | [**deleteOrder**](doc/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +[*StoreApi*](doc/StoreApi.md) | [**getInventory**](doc/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +[*StoreApi*](doc/StoreApi.md) | [**getOrderById**](doc/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +[*StoreApi*](doc/StoreApi.md) | [**placeOrder**](doc/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +[*UserApi*](doc/UserApi.md) | [**createUser**](doc/UserApi.md#createuser) | **POST** /user | Create user +[*UserApi*](doc/UserApi.md) | [**createUsersWithArrayInput**](doc/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +[*UserApi*](doc/UserApi.md) | [**createUsersWithListInput**](doc/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +[*UserApi*](doc/UserApi.md) | [**deleteUser**](doc/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +[*UserApi*](doc/UserApi.md) | [**getUserByName**](doc/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +[*UserApi*](doc/UserApi.md) | [**loginUser**](doc/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +[*UserApi*](doc/UserApi.md) | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +[*UserApi*](doc/UserApi.md) | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/AdditionalPropertiesClass.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/AdditionalPropertiesClass.md index 5443d024fd2..f9f7857894d 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/AdditionalPropertiesClass.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/AdditionalPropertiesClass.md @@ -8,8 +8,8 @@ import 'package:openapi/api.dart'; ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**mapProperty** | **BuiltMap** | | [optional] -**mapOfMapProperty** | [**BuiltMap>**](BuiltMap.md) | | [optional] +**mapProperty** | **BuiltMap<String, String>** | | [optional] +**mapOfMapProperty** | [**BuiltMap<String, BuiltMap<String, String>>**](BuiltMap.md) | | [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) diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/AnotherFakeApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/AnotherFakeApi.md index bb401f7c20c..9416627d74d 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/AnotherFakeApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/AnotherFakeApi.md @@ -23,13 +23,13 @@ To test special tags and operation ID starting with number ```dart import 'package:openapi/api.dart'; -var api_instance = new AnotherFakeApi(); -var modelClient = new ModelClient(); // ModelClient | client model +final api = Openapi().getAnotherFakeApi(); +final ModelClient modelClient = ; // ModelClient | client model try { - var result = api_instance.call123testSpecialTags(modelClient); - print(result); -} catch (e) { + final response = api.call123testSpecialTags(modelClient); + print(response); +} catch on DioError (e) { print('Exception when calling AnotherFakeApi->call123testSpecialTags: $e\n'); } ``` diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/ArrayOfArrayOfNumberOnly.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/ArrayOfArrayOfNumberOnly.md index 0a9d69c7e3c..d1a272ab602 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/ArrayOfArrayOfNumberOnly.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/ArrayOfArrayOfNumberOnly.md @@ -8,7 +8,7 @@ import 'package:openapi/api.dart'; ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**arrayArrayNumber** | [**BuiltList>**](BuiltList.md) | | [optional] +**arrayArrayNumber** | [**BuiltList<BuiltList<num>>**](BuiltList.md) | | [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) diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/ArrayOfNumberOnly.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/ArrayOfNumberOnly.md index 6ffe36730c2..94b60f272fd 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/ArrayOfNumberOnly.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/ArrayOfNumberOnly.md @@ -8,7 +8,7 @@ import 'package:openapi/api.dart'; ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**arrayNumber** | **BuiltList** | | [optional] +**arrayNumber** | **BuiltList<num>** | | [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) diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/ArrayTest.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/ArrayTest.md index fc38f8ae52d..0813d4fa93c 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/ArrayTest.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/ArrayTest.md @@ -8,9 +8,9 @@ import 'package:openapi/api.dart'; ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**arrayOfString** | **BuiltList** | | [optional] -**arrayArrayOfInteger** | [**BuiltList>**](BuiltList.md) | | [optional] -**arrayArrayOfModel** | [**BuiltList>**](BuiltList.md) | | [optional] +**arrayOfString** | **BuiltList<String>** | | [optional] +**arrayArrayOfInteger** | [**BuiltList<BuiltList<int>>**](BuiltList.md) | | [optional] +**arrayArrayOfModel** | [**BuiltList<BuiltList<ReadOnlyFirst>>**](BuiltList.md) | | [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) diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/DefaultApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/DefaultApi.md index 5c305ecaa71..5b5a2cdead6 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/DefaultApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/DefaultApi.md @@ -21,12 +21,12 @@ Method | HTTP request | Description ```dart import 'package:openapi/api.dart'; -var api_instance = new DefaultApi(); +final api = Openapi().getDefaultApi(); try { - var result = api_instance.fooGet(); - print(result); -} catch (e) { + final response = api.fooGet(); + print(response); +} catch on DioError (e) { print('Exception when calling DefaultApi->fooGet: $e\n'); } ``` diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/EnumArrays.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/EnumArrays.md index 9cc4d727b2a..06170bb8f51 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/EnumArrays.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/EnumArrays.md @@ -9,7 +9,7 @@ import 'package:openapi/api.dart'; Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **justSymbol** | **String** | | [optional] -**arrayEnum** | **BuiltList** | | [optional] +**arrayEnum** | **BuiltList<String>** | | [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) diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeApi.md index 8ceda8fa68d..00d1bde3e34 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeApi.md @@ -36,12 +36,12 @@ Health check endpoint ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); +final api = Openapi().getFakeApi(); try { - var result = api_instance.fakeHealthGet(); - print(result); -} catch (e) { + final response = api.fakeHealthGet(); + print(response); +} catch on DioError (e) { print('Exception when calling FakeApi->fakeHealthGet: $e\n'); } ``` @@ -76,14 +76,14 @@ import 'package:openapi/api.dart'; //defaultApiClient.getAuthentication('http_signature_test').username = 'YOUR_USERNAME' //defaultApiClient.getAuthentication('http_signature_test').password = 'YOUR_PASSWORD'; -var api_instance = new FakeApi(); -var pet = new Pet(); // Pet | Pet object that needs to be added to the store -var query1 = query1_example; // String | query parameter -var header1 = header1_example; // String | header parameter +final api = Openapi().getFakeApi(); +final Pet pet = ; // Pet | Pet object that needs to be added to the store +final String query1 = query1_example; // String | query parameter +final String header1 = header1_example; // String | header parameter try { - api_instance.fakeHttpSignatureTest(pet, query1, header1); -} catch (e) { + api.fakeHttpSignatureTest(pet, query1, header1); +} catch on DioError (e) { print('Exception when calling FakeApi->fakeHttpSignatureTest: $e\n'); } ``` @@ -122,13 +122,13 @@ Test serialization of outer boolean types ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); -var body = new bool(); // bool | Input boolean as post body +final api = Openapi().getFakeApi(); +final bool body = true; // bool | Input boolean as post body try { - var result = api_instance.fakeOuterBooleanSerialize(body); - print(result); -} catch (e) { + final response = api.fakeOuterBooleanSerialize(body); + print(response); +} catch on DioError (e) { print('Exception when calling FakeApi->fakeOuterBooleanSerialize: $e\n'); } ``` @@ -165,13 +165,13 @@ Test serialization of object with outer number type ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); -var outerComposite = new OuterComposite(); // OuterComposite | Input composite as post body +final api = Openapi().getFakeApi(); +final OuterComposite outerComposite = ; // OuterComposite | Input composite as post body try { - var result = api_instance.fakeOuterCompositeSerialize(outerComposite); - print(result); -} catch (e) { + final response = api.fakeOuterCompositeSerialize(outerComposite); + print(response); +} catch on DioError (e) { print('Exception when calling FakeApi->fakeOuterCompositeSerialize: $e\n'); } ``` @@ -208,13 +208,13 @@ Test serialization of outer number types ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); -var body = new num(); // num | Input number as post body +final api = Openapi().getFakeApi(); +final num body = 8.14; // num | Input number as post body try { - var result = api_instance.fakeOuterNumberSerialize(body); - print(result); -} catch (e) { + final response = api.fakeOuterNumberSerialize(body); + print(response); +} catch on DioError (e) { print('Exception when calling FakeApi->fakeOuterNumberSerialize: $e\n'); } ``` @@ -251,13 +251,13 @@ Test serialization of outer string types ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); -var body = new String(); // String | Input string as post body +final api = Openapi().getFakeApi(); +final String body = body_example; // String | Input string as post body try { - var result = api_instance.fakeOuterStringSerialize(body); - print(result); -} catch (e) { + final response = api.fakeOuterStringSerialize(body); + print(response); +} catch on DioError (e) { print('Exception when calling FakeApi->fakeOuterStringSerialize: $e\n'); } ``` @@ -294,13 +294,13 @@ Test serialization of enum (int) properties with examples ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); -var outerObjectWithEnumProperty = new OuterObjectWithEnumProperty(); // OuterObjectWithEnumProperty | Input enum (int) as post body +final api = Openapi().getFakeApi(); +final OuterObjectWithEnumProperty outerObjectWithEnumProperty = ; // OuterObjectWithEnumProperty | Input enum (int) as post body try { - var result = api_instance.fakePropertyEnumIntegerSerialize(outerObjectWithEnumProperty); - print(result); -} catch (e) { + final response = api.fakePropertyEnumIntegerSerialize(outerObjectWithEnumProperty); + print(response); +} catch on DioError (e) { print('Exception when calling FakeApi->fakePropertyEnumIntegerSerialize: $e\n'); } ``` @@ -337,12 +337,12 @@ For this test, the body for this request much reference a schema named `File`. ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); -var fileSchemaTestClass = new FileSchemaTestClass(); // FileSchemaTestClass | +final api = Openapi().getFakeApi(); +final FileSchemaTestClass fileSchemaTestClass = ; // FileSchemaTestClass | try { - api_instance.testBodyWithFileSchema(fileSchemaTestClass); -} catch (e) { + api.testBodyWithFileSchema(fileSchemaTestClass); +} catch on DioError (e) { print('Exception when calling FakeApi->testBodyWithFileSchema: $e\n'); } ``` @@ -377,13 +377,13 @@ No authorization required ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); -var query = query_example; // String | -var user = new User(); // User | +final api = Openapi().getFakeApi(); +final String query = query_example; // String | +final User user = ; // User | try { - api_instance.testBodyWithQueryParams(query, user); -} catch (e) { + api.testBodyWithQueryParams(query, user); +} catch on DioError (e) { print('Exception when calling FakeApi->testBodyWithQueryParams: $e\n'); } ``` @@ -421,13 +421,13 @@ To test \"client\" model ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); -var modelClient = new ModelClient(); // ModelClient | client model +final api = Openapi().getFakeApi(); +final ModelClient modelClient = ; // ModelClient | client model try { - var result = api_instance.testClientModel(modelClient); - print(result); -} catch (e) { + final response = api.testClientModel(modelClient); + print(response); +} catch on DioError (e) { print('Exception when calling FakeApi->testClientModel: $e\n'); } ``` @@ -467,25 +467,25 @@ import 'package:openapi/api.dart'; //defaultApiClient.getAuthentication('http_basic_test').username = 'YOUR_USERNAME' //defaultApiClient.getAuthentication('http_basic_test').password = 'YOUR_PASSWORD'; -var api_instance = new FakeApi(); -var number = 8.14; // num | None -var double_ = 1.2; // double | None -var patternWithoutDelimiter = patternWithoutDelimiter_example; // String | None -var byte = BYTE_ARRAY_DATA_HERE; // String | None -var integer = 56; // int | None -var int32 = 56; // int | None -var int64 = 789; // int | None -var float = 3.4; // double | None -var string = string_example; // String | None -var binary = BINARY_DATA_HERE; // Uint8List | None -var date = 2013-10-20; // Date | None -var dateTime = 2013-10-20T19:20:30+01:00; // DateTime | None -var password = password_example; // String | None -var callback = callback_example; // String | None +final api = Openapi().getFakeApi(); +final num number = 8.14; // num | None +final double double_ = 1.2; // double | None +final String patternWithoutDelimiter = patternWithoutDelimiter_example; // String | None +final String byte = BYTE_ARRAY_DATA_HERE; // String | None +final int integer = 56; // int | None +final int int32 = 56; // int | None +final int int64 = 789; // int | None +final double float = 3.4; // double | None +final String string = string_example; // String | None +final Uint8List binary = BINARY_DATA_HERE; // Uint8List | None +final Date date = 2013-10-20; // Date | None +final DateTime dateTime = 2013-10-20T19:20:30+01:00; // DateTime | None +final String password = password_example; // String | None +final String callback = callback_example; // String | None try { - api_instance.testEndpointParameters(number, double_, patternWithoutDelimiter, byte, integer, int32, int64, float, string, binary, date, dateTime, password, callback); -} catch (e) { + api.testEndpointParameters(number, double_, patternWithoutDelimiter, byte, integer, int32, int64, float, string, binary, date, dateTime, password, callback); +} catch on DioError (e) { print('Exception when calling FakeApi->testEndpointParameters: $e\n'); } ``` @@ -535,19 +535,19 @@ To test enum parameters ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); -var enumHeaderStringArray = []; // BuiltList | Header parameter enum test (string array) -var enumHeaderString = enumHeaderString_example; // String | Header parameter enum test (string) -var enumQueryStringArray = []; // BuiltList | Query parameter enum test (string array) -var enumQueryString = enumQueryString_example; // String | Query parameter enum test (string) -var enumQueryInteger = 56; // int | Query parameter enum test (double) -var enumQueryDouble = 1.2; // double | Query parameter enum test (double) -var enumFormStringArray = [enumFormStringArray_example]; // BuiltList | Form parameter enum test (string array) -var enumFormString = enumFormString_example; // String | Form parameter enum test (string) +final api = Openapi().getFakeApi(); +final BuiltList enumHeaderStringArray = ; // BuiltList | Header parameter enum test (string array) +final String enumHeaderString = enumHeaderString_example; // String | Header parameter enum test (string) +final BuiltList enumQueryStringArray = ; // BuiltList | Query parameter enum test (string array) +final String enumQueryString = enumQueryString_example; // String | Query parameter enum test (string) +final int enumQueryInteger = 56; // int | Query parameter enum test (double) +final double enumQueryDouble = 1.2; // double | Query parameter enum test (double) +final BuiltList enumFormStringArray = enumFormStringArray_example; // BuiltList | Form parameter enum test (string array) +final String enumFormString = enumFormString_example; // String | Form parameter enum test (string) try { - api_instance.testEnumParameters(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString); -} catch (e) { + api.testEnumParameters(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString); +} catch on DioError (e) { print('Exception when calling FakeApi->testEnumParameters: $e\n'); } ``` @@ -556,13 +556,13 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **enumHeaderStringArray** | [**BuiltList**](String.md)| Header parameter enum test (string array) | [optional] + **enumHeaderStringArray** | [**BuiltList<String>**](String.md)| Header parameter enum test (string array) | [optional] **enumHeaderString** | **String**| Header parameter enum test (string) | [optional] [default to '-efg'] - **enumQueryStringArray** | [**BuiltList**](String.md)| Query parameter enum test (string array) | [optional] + **enumQueryStringArray** | [**BuiltList<String>**](String.md)| Query parameter enum test (string array) | [optional] **enumQueryString** | **String**| Query parameter enum test (string) | [optional] [default to '-efg'] **enumQueryInteger** | **int**| Query parameter enum test (double) | [optional] **enumQueryDouble** | **double**| Query parameter enum test (double) | [optional] - **enumFormStringArray** | [**BuiltList**](String.md)| Form parameter enum test (string array) | [optional] [default to '$'] + **enumFormStringArray** | [**BuiltList<String>**](String.md)| Form parameter enum test (string array) | [optional] [default to '$'] **enumFormString** | **String**| Form parameter enum test (string) | [optional] [default to '-efg'] ### Return type @@ -594,17 +594,17 @@ import 'package:openapi/api.dart'; //defaultApiClient.getAuthentication('bearer_test').username = 'YOUR_USERNAME' //defaultApiClient.getAuthentication('bearer_test').password = 'YOUR_PASSWORD'; -var api_instance = new FakeApi(); -var requiredStringGroup = 56; // int | Required String in group parameters -var requiredBooleanGroup = true; // bool | Required Boolean in group parameters -var requiredInt64Group = 789; // int | Required Integer in group parameters -var stringGroup = 56; // int | String in group parameters -var booleanGroup = true; // bool | Boolean in group parameters -var int64Group = 789; // int | Integer in group parameters +final api = Openapi().getFakeApi(); +final int requiredStringGroup = 56; // int | Required String in group parameters +final bool requiredBooleanGroup = true; // bool | Required Boolean in group parameters +final int requiredInt64Group = 789; // int | Required Integer in group parameters +final int stringGroup = 56; // int | String in group parameters +final bool booleanGroup = true; // bool | Boolean in group parameters +final int int64Group = 789; // int | Integer in group parameters try { - api_instance.testGroupParameters(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group); -} catch (e) { + api.testGroupParameters(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group); +} catch on DioError (e) { print('Exception when calling FakeApi->testGroupParameters: $e\n'); } ``` @@ -644,12 +644,12 @@ test inline additionalProperties ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); -var requestBody = new BuiltMap(); // BuiltMap | request body +final api = Openapi().getFakeApi(); +final BuiltMap requestBody = ; // BuiltMap | request body try { - api_instance.testInlineAdditionalProperties(requestBody); -} catch (e) { + api.testInlineAdditionalProperties(requestBody); +} catch on DioError (e) { print('Exception when calling FakeApi->testInlineAdditionalProperties: $e\n'); } ``` @@ -658,7 +658,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **requestBody** | [**BuiltMap**](String.md)| request body | + **requestBody** | [**BuiltMap<String, String>**](String.md)| request body | ### Return type @@ -684,13 +684,13 @@ test json serialization of form data ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); -var param = param_example; // String | field1 -var param2 = param2_example; // String | field2 +final api = Openapi().getFakeApi(); +final String param = param_example; // String | field1 +final String param2 = param2_example; // String | field2 try { - api_instance.testJsonFormData(param, param2); -} catch (e) { + api.testJsonFormData(param, param2); +} catch on DioError (e) { print('Exception when calling FakeApi->testJsonFormData: $e\n'); } ``` @@ -728,16 +728,16 @@ To test the collection format in query parameters ```dart import 'package:openapi/api.dart'; -var api_instance = new FakeApi(); -var pipe = []; // BuiltList | -var ioutil = []; // BuiltList | -var http = []; // BuiltList | -var url = []; // BuiltList | -var context = []; // BuiltList | +final api = Openapi().getFakeApi(); +final BuiltList pipe = ; // BuiltList | +final BuiltList ioutil = ; // BuiltList | +final BuiltList http = ; // BuiltList | +final BuiltList url = ; // BuiltList | +final BuiltList context = ; // BuiltList | try { - api_instance.testQueryParameterCollectionFormat(pipe, ioutil, http, url, context); -} catch (e) { + api.testQueryParameterCollectionFormat(pipe, ioutil, http, url, context); +} catch on DioError (e) { print('Exception when calling FakeApi->testQueryParameterCollectionFormat: $e\n'); } ``` @@ -746,11 +746,11 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **pipe** | [**BuiltList**](String.md)| | - **ioutil** | [**BuiltList**](String.md)| | - **http** | [**BuiltList**](String.md)| | - **url** | [**BuiltList**](String.md)| | - **context** | [**BuiltList**](String.md)| | + **pipe** | [**BuiltList<String>**](String.md)| | + **ioutil** | [**BuiltList<String>**](String.md)| | + **http** | [**BuiltList<String>**](String.md)| | + **url** | [**BuiltList<String>**](String.md)| | + **context** | [**BuiltList<String>**](String.md)| | ### Return type diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeClassnameTags123Api.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeClassnameTags123Api.md index 98fe0b47358..cabd6fe0a99 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeClassnameTags123Api.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeClassnameTags123Api.md @@ -27,13 +27,13 @@ import 'package:openapi/api.dart'; // uncomment below to setup prefix (e.g. Bearer) for API key, if needed //defaultApiClient.getAuthentication('api_key_query').apiKeyPrefix = 'Bearer'; -var api_instance = new FakeClassnameTags123Api(); -var modelClient = new ModelClient(); // ModelClient | client model +final api = Openapi().getFakeClassnameTags123Api(); +final ModelClient modelClient = ; // ModelClient | client model try { - var result = api_instance.testClassname(modelClient); - print(result); -} catch (e) { + final response = api.testClassname(modelClient); + print(response); +} catch on DioError (e) { print('Exception when calling FakeClassnameTags123Api->testClassname: $e\n'); } ``` diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FileSchemaTestClass.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FileSchemaTestClass.md index 9b7eebcb2bf..105fece87f1 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FileSchemaTestClass.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FileSchemaTestClass.md @@ -9,7 +9,7 @@ import 'package:openapi/api.dart'; Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **file** | [**ModelFile**](ModelFile.md) | | [optional] -**files** | [**BuiltList**](ModelFile.md) | | [optional] +**files** | [**BuiltList<ModelFile>**](ModelFile.md) | | [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) diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/MapTest.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/MapTest.md index 2da739ba8b8..4ad87df6423 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/MapTest.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/MapTest.md @@ -8,10 +8,10 @@ import 'package:openapi/api.dart'; ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**mapMapOfString** | [**BuiltMap>**](BuiltMap.md) | | [optional] -**mapOfEnumString** | **BuiltMap** | | [optional] -**directMap** | **BuiltMap** | | [optional] -**indirectMap** | **BuiltMap** | | [optional] +**mapMapOfString** | [**BuiltMap<String, BuiltMap<String, String>>**](BuiltMap.md) | | [optional] +**mapOfEnumString** | **BuiltMap<String, String>** | | [optional] +**directMap** | **BuiltMap<String, bool>** | | [optional] +**indirectMap** | **BuiltMap<String, bool>** | | [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) diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/MixedPropertiesAndAdditionalPropertiesClass.md index f50d9768751..b1a4c4ccc40 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/MixedPropertiesAndAdditionalPropertiesClass.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/MixedPropertiesAndAdditionalPropertiesClass.md @@ -10,7 +10,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **uuid** | **String** | | [optional] **dateTime** | [**DateTime**](DateTime.md) | | [optional] -**map** | [**BuiltMap**](Animal.md) | | [optional] +**map** | [**BuiltMap<String, Animal>**](Animal.md) | | [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) diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/NullableClass.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/NullableClass.md index 0241e3eb15e..4ce8d5e1757 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/NullableClass.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/NullableClass.md @@ -14,12 +14,12 @@ Name | Type | Description | Notes **stringProp** | **String** | | [optional] **dateProp** | [**Date**](Date.md) | | [optional] **datetimeProp** | [**DateTime**](DateTime.md) | | [optional] -**arrayNullableProp** | [**BuiltList**](JsonObject.md) | | [optional] -**arrayAndItemsNullableProp** | [**BuiltList**](JsonObject.md) | | [optional] -**arrayItemsNullable** | [**BuiltList**](JsonObject.md) | | [optional] -**objectNullableProp** | [**BuiltMap**](JsonObject.md) | | [optional] -**objectAndItemsNullableProp** | [**BuiltMap**](JsonObject.md) | | [optional] -**objectItemsNullable** | [**BuiltMap**](JsonObject.md) | | [optional] +**arrayNullableProp** | [**BuiltList<JsonObject>**](JsonObject.md) | | [optional] +**arrayAndItemsNullableProp** | [**BuiltList<JsonObject>**](JsonObject.md) | | [optional] +**arrayItemsNullable** | [**BuiltList<JsonObject>**](JsonObject.md) | | [optional] +**objectNullableProp** | [**BuiltMap<String, JsonObject>**](JsonObject.md) | | [optional] +**objectAndItemsNullableProp** | [**BuiltMap<String, JsonObject>**](JsonObject.md) | | [optional] +**objectItemsNullable** | [**BuiltMap<String, JsonObject>**](JsonObject.md) | | [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) diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/Pet.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/Pet.md index 3640640df19..08e0aeedd78 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/Pet.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/Pet.md @@ -11,8 +11,8 @@ Name | Type | Description | Notes **id** | **int** | | [optional] **category** | [**Category**](Category.md) | | [optional] **name** | **String** | | -**photoUrls** | **BuiltSet** | | -**tags** | [**BuiltList**](Tag.md) | | [optional] +**photoUrls** | **BuiltSet<String>** | | +**tags** | [**BuiltList<Tag>**](Tag.md) | | [optional] **status** | **String** | pet status in the store | [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) diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/PetApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/PetApi.md index bca230088d8..70f5342d771 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/PetApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/PetApi.md @@ -31,12 +31,12 @@ import 'package:openapi/api.dart'; // TODO Configure OAuth2 access token for authorization: petstore_auth //defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; -var api_instance = new PetApi(); -var pet = new Pet(); // Pet | Pet object that needs to be added to the store +final api = Openapi().getPetApi(); +final Pet pet = ; // Pet | Pet object that needs to be added to the store try { - api_instance.addPet(pet); -} catch (e) { + api.addPet(pet); +} catch on DioError (e) { print('Exception when calling PetApi->addPet: $e\n'); } ``` @@ -73,13 +73,13 @@ import 'package:openapi/api.dart'; // TODO Configure OAuth2 access token for authorization: petstore_auth //defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; -var api_instance = new PetApi(); -var petId = 789; // int | Pet id to delete -var apiKey = apiKey_example; // String | +final api = Openapi().getPetApi(); +final int petId = 789; // int | Pet id to delete +final String apiKey = apiKey_example; // String | try { - api_instance.deletePet(petId, apiKey); -} catch (e) { + api.deletePet(petId, apiKey); +} catch on DioError (e) { print('Exception when calling PetApi->deletePet: $e\n'); } ``` @@ -119,13 +119,13 @@ import 'package:openapi/api.dart'; // TODO Configure OAuth2 access token for authorization: petstore_auth //defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; -var api_instance = new PetApi(); -var status = []; // BuiltList | Status values that need to be considered for filter +final api = Openapi().getPetApi(); +final BuiltList status = ; // BuiltList | Status values that need to be considered for filter try { - var result = api_instance.findPetsByStatus(status); - print(result); -} catch (e) { + final response = api.findPetsByStatus(status); + print(response); +} catch on DioError (e) { print('Exception when calling PetApi->findPetsByStatus: $e\n'); } ``` @@ -134,11 +134,11 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **status** | [**BuiltList**](String.md)| Status values that need to be considered for filter | + **status** | [**BuiltList<String>**](String.md)| Status values that need to be considered for filter | ### Return type -[**BuiltList**](Pet.md) +[**BuiltList<Pet>**](Pet.md) ### Authorization @@ -164,13 +164,13 @@ import 'package:openapi/api.dart'; // TODO Configure OAuth2 access token for authorization: petstore_auth //defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; -var api_instance = new PetApi(); -var tags = []; // BuiltSet | Tags to filter by +final api = Openapi().getPetApi(); +final BuiltSet tags = ; // BuiltSet | Tags to filter by try { - var result = api_instance.findPetsByTags(tags); - print(result); -} catch (e) { + final response = api.findPetsByTags(tags); + print(response); +} catch on DioError (e) { print('Exception when calling PetApi->findPetsByTags: $e\n'); } ``` @@ -179,11 +179,11 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **tags** | [**BuiltSet**](String.md)| Tags to filter by | + **tags** | [**BuiltSet<String>**](String.md)| Tags to filter by | ### Return type -[**BuiltSet**](Pet.md) +[**BuiltSet<Pet>**](Pet.md) ### Authorization @@ -211,13 +211,13 @@ import 'package:openapi/api.dart'; // uncomment below to setup prefix (e.g. Bearer) for API key, if needed //defaultApiClient.getAuthentication('api_key').apiKeyPrefix = 'Bearer'; -var api_instance = new PetApi(); -var petId = 789; // int | ID of pet to return +final api = Openapi().getPetApi(); +final int petId = 789; // int | ID of pet to return try { - var result = api_instance.getPetById(petId); - print(result); -} catch (e) { + final response = api.getPetById(petId); + print(response); +} catch on DioError (e) { print('Exception when calling PetApi->getPetById: $e\n'); } ``` @@ -254,12 +254,12 @@ import 'package:openapi/api.dart'; // TODO Configure OAuth2 access token for authorization: petstore_auth //defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; -var api_instance = new PetApi(); -var pet = new Pet(); // Pet | Pet object that needs to be added to the store +final api = Openapi().getPetApi(); +final Pet pet = ; // Pet | Pet object that needs to be added to the store try { - api_instance.updatePet(pet); -} catch (e) { + api.updatePet(pet); +} catch on DioError (e) { print('Exception when calling PetApi->updatePet: $e\n'); } ``` @@ -296,14 +296,14 @@ import 'package:openapi/api.dart'; // TODO Configure OAuth2 access token for authorization: petstore_auth //defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; -var api_instance = new PetApi(); -var petId = 789; // int | ID of pet that needs to be updated -var name = name_example; // String | Updated name of the pet -var status = status_example; // String | Updated status of the pet +final api = Openapi().getPetApi(); +final int petId = 789; // int | ID of pet that needs to be updated +final String name = name_example; // String | Updated name of the pet +final String status = status_example; // String | Updated status of the pet try { - api_instance.updatePetWithForm(petId, name, status); -} catch (e) { + api.updatePetWithForm(petId, name, status); +} catch on DioError (e) { print('Exception when calling PetApi->updatePetWithForm: $e\n'); } ``` @@ -342,15 +342,15 @@ import 'package:openapi/api.dart'; // TODO Configure OAuth2 access token for authorization: petstore_auth //defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; -var api_instance = new PetApi(); -var petId = 789; // int | ID of pet to update -var additionalMetadata = additionalMetadata_example; // String | Additional data to pass to server -var file = BINARY_DATA_HERE; // MultipartFile | file to upload +final api = Openapi().getPetApi(); +final int petId = 789; // int | ID of pet to update +final String additionalMetadata = additionalMetadata_example; // String | Additional data to pass to server +final MultipartFile file = BINARY_DATA_HERE; // MultipartFile | file to upload try { - var result = api_instance.uploadFile(petId, additionalMetadata, file); - print(result); -} catch (e) { + final response = api.uploadFile(petId, additionalMetadata, file); + print(response); +} catch on DioError (e) { print('Exception when calling PetApi->uploadFile: $e\n'); } ``` @@ -389,15 +389,15 @@ import 'package:openapi/api.dart'; // TODO Configure OAuth2 access token for authorization: petstore_auth //defaultApiClient.getAuthentication('petstore_auth').accessToken = 'YOUR_ACCESS_TOKEN'; -var api_instance = new PetApi(); -var petId = 789; // int | ID of pet to update -var requiredFile = BINARY_DATA_HERE; // MultipartFile | file to upload -var additionalMetadata = additionalMetadata_example; // String | Additional data to pass to server +final api = Openapi().getPetApi(); +final int petId = 789; // int | ID of pet to update +final MultipartFile requiredFile = BINARY_DATA_HERE; // MultipartFile | file to upload +final String additionalMetadata = additionalMetadata_example; // String | Additional data to pass to server try { - var result = api_instance.uploadFileWithRequiredFile(petId, requiredFile, additionalMetadata); - print(result); -} catch (e) { + final response = api.uploadFileWithRequiredFile(petId, requiredFile, additionalMetadata); + print(response); +} catch on DioError (e) { print('Exception when calling PetApi->uploadFileWithRequiredFile: $e\n'); } ``` diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/StoreApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/StoreApi.md index a7dbf9ad019..e955785ca95 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/StoreApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/StoreApi.md @@ -26,12 +26,12 @@ For valid response try integer IDs with value < 1000. Anything above 1000 or non ```dart import 'package:openapi/api.dart'; -var api_instance = new StoreApi(); -var orderId = orderId_example; // String | ID of the order that needs to be deleted +final api = Openapi().getStoreApi(); +final String orderId = orderId_example; // String | ID of the order that needs to be deleted try { - api_instance.deleteOrder(orderId); -} catch (e) { + api.deleteOrder(orderId); +} catch on DioError (e) { print('Exception when calling StoreApi->deleteOrder: $e\n'); } ``` @@ -72,12 +72,12 @@ import 'package:openapi/api.dart'; // uncomment below to setup prefix (e.g. Bearer) for API key, if needed //defaultApiClient.getAuthentication('api_key').apiKeyPrefix = 'Bearer'; -var api_instance = new StoreApi(); +final api = Openapi().getStoreApi(); try { - var result = api_instance.getInventory(); - print(result); -} catch (e) { + final response = api.getInventory(); + print(response); +} catch on DioError (e) { print('Exception when calling StoreApi->getInventory: $e\n'); } ``` @@ -87,7 +87,7 @@ This endpoint does not need any parameter. ### Return type -**BuiltMap** +**BuiltMap<String, int>** ### Authorization @@ -111,13 +111,13 @@ For valid response try integer IDs with value <= 5 or > 10. Other values will ge ```dart import 'package:openapi/api.dart'; -var api_instance = new StoreApi(); -var orderId = 789; // int | ID of pet that needs to be fetched +final api = Openapi().getStoreApi(); +final int orderId = 789; // int | ID of pet that needs to be fetched try { - var result = api_instance.getOrderById(orderId); - print(result); -} catch (e) { + final response = api.getOrderById(orderId); + print(response); +} catch on DioError (e) { print('Exception when calling StoreApi->getOrderById: $e\n'); } ``` @@ -152,13 +152,13 @@ Place an order for a pet ```dart import 'package:openapi/api.dart'; -var api_instance = new StoreApi(); -var order = new Order(); // Order | order placed for purchasing the pet +final api = Openapi().getStoreApi(); +final Order order = ; // Order | order placed for purchasing the pet try { - var result = api_instance.placeOrder(order); - print(result); -} catch (e) { + final response = api.placeOrder(order); + print(response); +} catch on DioError (e) { print('Exception when calling StoreApi->placeOrder: $e\n'); } ``` diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/UserApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/UserApi.md index 32bc2e675da..5e96b548e3b 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/UserApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/UserApi.md @@ -30,12 +30,12 @@ This can only be done by the logged in user. ```dart import 'package:openapi/api.dart'; -var api_instance = new UserApi(); -var user = new User(); // User | Created user object +final api = Openapi().getUserApi(); +final User user = ; // User | Created user object try { - api_instance.createUser(user); -} catch (e) { + api.createUser(user); +} catch on DioError (e) { print('Exception when calling UserApi->createUser: $e\n'); } ``` @@ -70,12 +70,12 @@ Creates list of users with given input array ```dart import 'package:openapi/api.dart'; -var api_instance = new UserApi(); -var user = [new BuiltList()]; // BuiltList | List of user object +final api = Openapi().getUserApi(); +final BuiltList user = ; // BuiltList | List of user object try { - api_instance.createUsersWithArrayInput(user); -} catch (e) { + api.createUsersWithArrayInput(user); +} catch on DioError (e) { print('Exception when calling UserApi->createUsersWithArrayInput: $e\n'); } ``` @@ -84,7 +84,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **user** | [**BuiltList**](User.md)| List of user object | + **user** | [**BuiltList<User>**](User.md)| List of user object | ### Return type @@ -110,12 +110,12 @@ Creates list of users with given input array ```dart import 'package:openapi/api.dart'; -var api_instance = new UserApi(); -var user = [new BuiltList()]; // BuiltList | List of user object +final api = Openapi().getUserApi(); +final BuiltList user = ; // BuiltList | List of user object try { - api_instance.createUsersWithListInput(user); -} catch (e) { + api.createUsersWithListInput(user); +} catch on DioError (e) { print('Exception when calling UserApi->createUsersWithListInput: $e\n'); } ``` @@ -124,7 +124,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **user** | [**BuiltList**](User.md)| List of user object | + **user** | [**BuiltList<User>**](User.md)| List of user object | ### Return type @@ -152,12 +152,12 @@ This can only be done by the logged in user. ```dart import 'package:openapi/api.dart'; -var api_instance = new UserApi(); -var username = username_example; // String | The name that needs to be deleted +final api = Openapi().getUserApi(); +final String username = username_example; // String | The name that needs to be deleted try { - api_instance.deleteUser(username); -} catch (e) { + api.deleteUser(username); +} catch on DioError (e) { print('Exception when calling UserApi->deleteUser: $e\n'); } ``` @@ -192,13 +192,13 @@ Get user by user name ```dart import 'package:openapi/api.dart'; -var api_instance = new UserApi(); -var username = username_example; // String | The name that needs to be fetched. Use user1 for testing. +final api = Openapi().getUserApi(); +final String username = username_example; // String | The name that needs to be fetched. Use user1 for testing. try { - var result = api_instance.getUserByName(username); - print(result); -} catch (e) { + final response = api.getUserByName(username); + print(response); +} catch on DioError (e) { print('Exception when calling UserApi->getUserByName: $e\n'); } ``` @@ -233,14 +233,14 @@ Logs user into the system ```dart import 'package:openapi/api.dart'; -var api_instance = new UserApi(); -var username = username_example; // String | The user name for login -var password = password_example; // String | The password for login in clear text +final api = Openapi().getUserApi(); +final String username = username_example; // String | The user name for login +final String password = password_example; // String | The password for login in clear text try { - var result = api_instance.loginUser(username, password); - print(result); -} catch (e) { + final response = api.loginUser(username, password); + print(response); +} catch on DioError (e) { print('Exception when calling UserApi->loginUser: $e\n'); } ``` @@ -276,11 +276,11 @@ Logs out current logged in user session ```dart import 'package:openapi/api.dart'; -var api_instance = new UserApi(); +final api = Openapi().getUserApi(); try { - api_instance.logoutUser(); -} catch (e) { + api.logoutUser(); +} catch on DioError (e) { print('Exception when calling UserApi->logoutUser: $e\n'); } ``` @@ -314,13 +314,13 @@ This can only be done by the logged in user. ```dart import 'package:openapi/api.dart'; -var api_instance = new UserApi(); -var username = username_example; // String | name that need to be deleted -var user = new User(); // User | Updated user object +final api = Openapi().getUserApi(); +final String username = username_example; // String | name that need to be deleted +final User user = ; // User | Updated user object try { - api_instance.updateUser(username, user); -} catch (e) { + api.updateUser(username, user); +} catch on DioError (e) { print('Exception when calling UserApi->updateUser: $e\n'); } ``` diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart index a65b9647944..4d0e1366d06 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart @@ -18,8 +18,19 @@ class AnotherFakeApi { const AnotherFakeApi(this._dio, this._serializers); /// To test special tags - /// /// To test special tags and operation ID starting with number + /// + /// Parameters: + /// * [modelClient] - client model + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [ModelClient] as data + /// Throws [DioError] if API call or serialization fails Future> call123testSpecialTags({ required ModelClient modelClient, CancelToken? cancelToken, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart index 22b4500214c..3a46c9a2048 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart @@ -17,9 +17,19 @@ class DefaultApi { const DefaultApi(this._dio, this._serializers); + /// fooGet /// /// - /// + /// Parameters: + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [InlineResponseDefault] as data + /// Throws [DioError] if API call or serialization fails Future> fooGet({ CancelToken? cancelToken, Map? headers, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart index c9f67f4b736..583f89de933 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart @@ -28,8 +28,18 @@ class FakeApi { const FakeApi(this._dio, this._serializers); /// Health check endpoint - /// /// + /// + /// Parameters: + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [HealthCheckResult] as data + /// Throws [DioError] if API call or serialization fails Future> fakeHealthGet({ CancelToken? cancelToken, Map? headers, @@ -94,8 +104,21 @@ class FakeApi { } /// test http signature authentication - /// /// + /// + /// Parameters: + /// * [pet] - Pet object that needs to be added to the store + /// * [query1] - query parameter + /// * [header1] - header parameter + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> fakeHttpSignatureTest({ required Pet pet, String? query1, @@ -162,9 +185,20 @@ class FakeApi { return _response; } - /// - /// + /// fakeOuterBooleanSerialize /// Test serialization of outer boolean types + /// + /// Parameters: + /// * [body] - Input boolean as post body + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [bool] as data + /// Throws [DioError] if API call or serialization fails Future> fakeOuterBooleanSerialize({ bool? body, CancelToken? cancelToken, @@ -244,9 +278,20 @@ class FakeApi { ); } - /// - /// + /// fakeOuterCompositeSerialize /// Test serialization of object with outer number type + /// + /// Parameters: + /// * [outerComposite] - Input composite as post body + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [OuterComposite] as data + /// Throws [DioError] if API call or serialization fails Future> fakeOuterCompositeSerialize({ OuterComposite? outerComposite, CancelToken? cancelToken, @@ -331,9 +376,20 @@ class FakeApi { ); } - /// - /// + /// fakeOuterNumberSerialize /// Test serialization of outer number types + /// + /// Parameters: + /// * [body] - Input number as post body + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [num] as data + /// Throws [DioError] if API call or serialization fails Future> fakeOuterNumberSerialize({ num? body, CancelToken? cancelToken, @@ -413,9 +469,20 @@ class FakeApi { ); } - /// - /// + /// fakeOuterStringSerialize /// Test serialization of outer string types + /// + /// Parameters: + /// * [body] - Input string as post body + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [String] as data + /// Throws [DioError] if API call or serialization fails Future> fakeOuterStringSerialize({ String? body, CancelToken? cancelToken, @@ -495,9 +562,20 @@ class FakeApi { ); } - /// - /// + /// fakePropertyEnumIntegerSerialize /// Test serialization of enum (int) properties with examples + /// + /// Parameters: + /// * [outerObjectWithEnumProperty] - Input enum (int) as post body + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [OuterObjectWithEnumProperty] as data + /// Throws [DioError] if API call or serialization fails Future> fakePropertyEnumIntegerSerialize({ required OuterObjectWithEnumProperty outerObjectWithEnumProperty, CancelToken? cancelToken, @@ -582,9 +660,20 @@ class FakeApi { ); } - /// + /// testBodyWithFileSchema + /// For this test, the body for this request much reference a schema named `File`. /// - /// For this test, the body for this request much reference a schema named `File`. + /// Parameters: + /// * [fileSchemaTestClass] + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> testBodyWithFileSchema({ required FileSchemaTestClass fileSchemaTestClass, CancelToken? cancelToken, @@ -642,9 +731,21 @@ class FakeApi { return _response; } + /// testBodyWithQueryParams /// /// - /// + /// Parameters: + /// * [query] + /// * [user] + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> testBodyWithQueryParams({ required String query, required User user, @@ -704,9 +805,20 @@ class FakeApi { return _response; } - /// To test \"client\" model + /// To test \"client\" model + /// To test \"client\" model /// - /// To test \"client\" model + /// Parameters: + /// * [modelClient] - client model + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [ModelClient] as data + /// Throws [DioError] if API call or serialization fails Future> testClientModel({ required ModelClient modelClient, CancelToken? cancelToken, @@ -792,8 +904,32 @@ class FakeApi { } /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 - /// /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Parameters: + /// * [number] - None + /// * [double_] - None + /// * [patternWithoutDelimiter] - None + /// * [byte] - None + /// * [integer] - None + /// * [int32] - None + /// * [int64] - None + /// * [float] - None + /// * [string] - None + /// * [binary] - None + /// * [date] - None + /// * [dateTime] - None + /// * [password] - None + /// * [callback] - None + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> testEndpointParameters({ required num number, required double double_, @@ -884,8 +1020,26 @@ class FakeApi { } /// To test enum parameters - /// /// To test enum parameters + /// + /// Parameters: + /// * [enumHeaderStringArray] - Header parameter enum test (string array) + /// * [enumHeaderString] - Header parameter enum test (string) + /// * [enumQueryStringArray] - Query parameter enum test (string array) + /// * [enumQueryString] - Query parameter enum test (string) + /// * [enumQueryInteger] - Query parameter enum test (double) + /// * [enumQueryDouble] - Query parameter enum test (double) + /// * [enumFormStringArray] - Form parameter enum test (string array) + /// * [enumFormString] - Form parameter enum test (string) + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> testEnumParameters({ BuiltList? enumHeaderStringArray, String? enumHeaderString, @@ -959,8 +1113,24 @@ class FakeApi { } /// Fake endpoint to test group parameters (optional) - /// /// Fake endpoint to test group parameters (optional) + /// + /// Parameters: + /// * [requiredStringGroup] - Required String in group parameters + /// * [requiredBooleanGroup] - Required Boolean in group parameters + /// * [requiredInt64Group] - Required Integer in group parameters + /// * [stringGroup] - String in group parameters + /// * [booleanGroup] - Boolean in group parameters + /// * [int64Group] - Integer in group parameters + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> testGroupParameters({ required int requiredStringGroup, required bool requiredBooleanGroup, @@ -1015,8 +1185,19 @@ class FakeApi { } /// test inline additionalProperties - /// /// + /// + /// Parameters: + /// * [requestBody] - request body + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> testInlineAdditionalProperties({ required BuiltMap requestBody, CancelToken? cancelToken, @@ -1075,8 +1256,20 @@ class FakeApi { } /// test json serialization of form data - /// /// + /// + /// Parameters: + /// * [param] - field1 + /// * [param2] - field2 + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> testJsonFormData({ required String param, required String param2, @@ -1137,9 +1330,24 @@ class FakeApi { return _response; } - /// - /// + /// testQueryParameterCollectionFormat /// To test the collection format in query parameters + /// + /// Parameters: + /// * [pipe] + /// * [ioutil] + /// * [http] + /// * [url] + /// * [context] + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> testQueryParameterCollectionFormat({ required BuiltList pipe, required BuiltList ioutil, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart index e97d899d0be..e48c38c96ba 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart @@ -18,8 +18,19 @@ class FakeClassnameTags123Api { const FakeClassnameTags123Api(this._dio, this._serializers); /// To test class name in snake case - /// /// To test class name in snake case + /// + /// Parameters: + /// * [modelClient] - client model + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [ModelClient] as data + /// Throws [DioError] if API call or serialization fails Future> testClassname({ required ModelClient modelClient, CancelToken? cancelToken, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart index ede9b4e65ba..be1d9d27924 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart @@ -21,8 +21,19 @@ class PetApi { const PetApi(this._dio, this._serializers); /// Add a new pet to the store - /// /// + /// + /// Parameters: + /// * [pet] - Pet object that needs to be added to the store + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> addPet({ required Pet pet, CancelToken? cancelToken, @@ -86,8 +97,20 @@ class PetApi { } /// Deletes a pet - /// /// + /// + /// Parameters: + /// * [petId] - Pet id to delete + /// * [apiKey] + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> deletePet({ required int petId, String? apiKey, @@ -133,8 +156,19 @@ class PetApi { } /// Finds Pets by status - /// /// Multiple status values can be provided with comma separated strings + /// + /// Parameters: + /// * [status] - Status values that need to be considered for filter + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [BuiltList] as data + /// Throws [DioError] if API call or serialization fails Future>> findPetsByStatus({ required BuiltList status, CancelToken? cancelToken, @@ -206,8 +240,20 @@ class PetApi { } /// Finds Pets by tags - /// /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Parameters: + /// * [tags] - Tags to filter by + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [BuiltSet] as data + /// Throws [DioError] if API call or serialization fails + @Deprecated('This operation has been deprecated') Future>> findPetsByTags({ required BuiltSet tags, CancelToken? cancelToken, @@ -279,8 +325,19 @@ class PetApi { } /// Find pet by ID - /// /// Returns a single pet + /// + /// Parameters: + /// * [petId] - ID of pet to return + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [Pet] as data + /// Throws [DioError] if API call or serialization fails Future> getPetById({ required int petId, CancelToken? cancelToken, @@ -353,8 +410,19 @@ class PetApi { } /// Update an existing pet - /// /// + /// + /// Parameters: + /// * [pet] - Pet object that needs to be added to the store + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> updatePet({ required Pet pet, CancelToken? cancelToken, @@ -418,8 +486,21 @@ class PetApi { } /// Updates a pet in the store with form data - /// /// + /// + /// Parameters: + /// * [petId] - ID of pet that needs to be updated + /// * [name] - Updated name of the pet + /// * [status] - Updated status of the pet + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> updatePetWithForm({ required int petId, String? name, @@ -487,8 +568,21 @@ class PetApi { } /// uploads an image - /// /// + /// + /// Parameters: + /// * [petId] - ID of pet to update + /// * [additionalMetadata] - Additional data to pass to server + /// * [file] - file to upload + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [ApiResponse] as data + /// Throws [DioError] if API call or serialization fails Future> uploadFile({ required int petId, String? additionalMetadata, @@ -583,8 +677,21 @@ class PetApi { } /// uploads an image (required) - /// /// + /// + /// Parameters: + /// * [petId] - ID of pet to update + /// * [requiredFile] - file to upload + /// * [additionalMetadata] - Additional data to pass to server + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [ApiResponse] as data + /// Throws [DioError] if API call or serialization fails Future> uploadFileWithRequiredFile({ required int petId, required MultipartFile requiredFile, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart index 66fccc40e4b..24c4bd7a55c 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart @@ -19,8 +19,19 @@ class StoreApi { const StoreApi(this._dio, this._serializers); /// Delete purchase order by ID + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors /// - /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// Parameters: + /// * [orderId] - ID of the order that needs to be deleted + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> deleteOrder({ required String orderId, CancelToken? cancelToken, @@ -59,8 +70,18 @@ class StoreApi { } /// Returns pet inventories by status - /// /// Returns a map of status codes to quantities + /// + /// Parameters: + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [BuiltMap] as data + /// Throws [DioError] if API call or serialization fails Future>> getInventory({ CancelToken? cancelToken, Map? headers, @@ -132,8 +153,19 @@ class StoreApi { } /// Find purchase order by ID + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions /// - /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// Parameters: + /// * [orderId] - ID of pet that needs to be fetched + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [Order] as data + /// Throws [DioError] if API call or serialization fails Future> getOrderById({ required int orderId, CancelToken? cancelToken, @@ -199,8 +231,19 @@ class StoreApi { } /// Place an order for a pet - /// /// + /// + /// Parameters: + /// * [order] - order placed for purchasing the pet + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [Order] as data + /// Throws [DioError] if API call or serialization fails Future> placeOrder({ required Order order, CancelToken? cancelToken, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart index d8f42219111..a0552484403 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart @@ -19,8 +19,19 @@ class UserApi { const UserApi(this._dio, this._serializers); /// Create user - /// /// This can only be done by the logged in user. + /// + /// Parameters: + /// * [user] - Created user object + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> createUser({ required User user, CancelToken? cancelToken, @@ -79,8 +90,19 @@ class UserApi { } /// Creates list of users with given input array - /// /// + /// + /// Parameters: + /// * [user] - List of user object + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> createUsersWithArrayInput({ required BuiltList user, CancelToken? cancelToken, @@ -139,8 +161,19 @@ class UserApi { } /// Creates list of users with given input array - /// /// + /// + /// Parameters: + /// * [user] - List of user object + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> createUsersWithListInput({ required BuiltList user, CancelToken? cancelToken, @@ -199,8 +232,19 @@ class UserApi { } /// Delete user - /// /// This can only be done by the logged in user. + /// + /// Parameters: + /// * [username] - The name that needs to be deleted + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> deleteUser({ required String username, CancelToken? cancelToken, @@ -239,8 +283,19 @@ class UserApi { } /// Get user by user name - /// /// + /// + /// Parameters: + /// * [username] - The name that needs to be fetched. Use user1 for testing. + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [User] as data + /// Throws [DioError] if API call or serialization fails Future> getUserByName({ required String username, CancelToken? cancelToken, @@ -306,8 +361,20 @@ class UserApi { } /// Logs user into the system - /// /// + /// + /// Parameters: + /// * [username] - The user name for login + /// * [password] - The password for login in clear text + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] containing a [Response] with a [String] as data + /// Throws [DioError] if API call or serialization fails Future> loginUser({ required String username, required String password, @@ -372,8 +439,18 @@ class UserApi { } /// Logs out current logged in user session - /// /// + /// + /// Parameters: + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> logoutUser({ CancelToken? cancelToken, Map? headers, @@ -411,8 +488,20 @@ class UserApi { } /// Updated user - /// /// This can only be done by the logged in user. + /// + /// Parameters: + /// * [username] - name that need to be deleted + /// * [user] - Updated user object + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails Future> updateUser({ required String username, required User user, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/additional_properties_class.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/additional_properties_class.dart index f92d8336bbb..25e0fb4fdbf 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/additional_properties_class.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/additional_properties_class.dart @@ -8,8 +8,11 @@ import 'package:built_value/serializer.dart'; part 'additional_properties_class.g.dart'; - - +/// AdditionalPropertiesClass +/// +/// Properties: +/// * [mapProperty] +/// * [mapOfMapProperty] abstract class AdditionalPropertiesClass implements Built { @BuiltValueField(wireName: r'map_property') BuiltMap? get mapProperty; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/animal.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/animal.dart index 14419f9eca4..d51c6d7b0be 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/animal.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/animal.dart @@ -7,8 +7,11 @@ import 'package:built_value/serializer.dart'; part 'animal.g.dart'; - - +/// Animal +/// +/// Properties: +/// * [className] +/// * [color] abstract class Animal implements Built { @BuiltValueField(wireName: r'className') String get className; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/api_response.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/api_response.dart index 4c9fa0b7159..fc9554f36ce 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/api_response.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/api_response.dart @@ -7,8 +7,12 @@ import 'package:built_value/serializer.dart'; part 'api_response.g.dart'; - - +/// ApiResponse +/// +/// Properties: +/// * [code] +/// * [type] +/// * [message] abstract class ApiResponse implements Built { @BuiltValueField(wireName: r'code') int? get code; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/array_of_array_of_number_only.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/array_of_array_of_number_only.dart index 0f86aa08c5b..899697f7efc 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/array_of_array_of_number_only.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/array_of_array_of_number_only.dart @@ -8,8 +8,10 @@ import 'package:built_value/serializer.dart'; part 'array_of_array_of_number_only.g.dart'; - - +/// ArrayOfArrayOfNumberOnly +/// +/// Properties: +/// * [arrayArrayNumber] abstract class ArrayOfArrayOfNumberOnly implements Built { @BuiltValueField(wireName: r'ArrayArrayNumber') BuiltList>? get arrayArrayNumber; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/array_of_number_only.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/array_of_number_only.dart index b68a04794aa..2e886df9b04 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/array_of_number_only.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/array_of_number_only.dart @@ -8,8 +8,10 @@ import 'package:built_value/serializer.dart'; part 'array_of_number_only.g.dart'; - - +/// ArrayOfNumberOnly +/// +/// Properties: +/// * [arrayNumber] abstract class ArrayOfNumberOnly implements Built { @BuiltValueField(wireName: r'ArrayNumber') BuiltList? get arrayNumber; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/array_test.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/array_test.dart index e9657764dc4..82ee6c2c01a 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/array_test.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/array_test.dart @@ -9,8 +9,12 @@ import 'package:built_value/serializer.dart'; part 'array_test.g.dart'; - - +/// ArrayTest +/// +/// Properties: +/// * [arrayOfString] +/// * [arrayArrayOfInteger] +/// * [arrayArrayOfModel] abstract class ArrayTest implements Built { @BuiltValueField(wireName: r'array_of_string') BuiltList? get arrayOfString; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/capitalization.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/capitalization.dart index 9b7cd294db3..fb1bfd7a5b9 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/capitalization.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/capitalization.dart @@ -7,8 +7,15 @@ import 'package:built_value/serializer.dart'; part 'capitalization.g.dart'; - - +/// Capitalization +/// +/// Properties: +/// * [smallCamel] +/// * [capitalCamel] +/// * [smallSnake] +/// * [capitalSnake] +/// * [sCAETHFlowPoints] +/// * [ATT_NAME] - Name of the pet abstract class Capitalization implements Built { @BuiltValueField(wireName: r'smallCamel') String? get smallCamel; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/cat.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/cat.dart index 1ee68912ba7..fa9282bb8cb 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/cat.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/cat.dart @@ -11,6 +11,12 @@ part 'cat.g.dart'; // ignore_for_file: unused_import +/// Cat +/// +/// Properties: +/// * [className] +/// * [color] +/// * [declawed] abstract class Cat implements Built { @BuiltValueField(wireName: r'className') String get className; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/cat_all_of.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/cat_all_of.dart index cbbf6321603..b8019b936d8 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/cat_all_of.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/cat_all_of.dart @@ -7,8 +7,10 @@ import 'package:built_value/serializer.dart'; part 'cat_all_of.g.dart'; - - +/// CatAllOf +/// +/// Properties: +/// * [declawed] abstract class CatAllOf implements Built { @BuiltValueField(wireName: r'declawed') bool? get declawed; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/category.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/category.dart index 3bc36cefbcc..35184265992 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/category.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/category.dart @@ -7,8 +7,11 @@ import 'package:built_value/serializer.dart'; part 'category.g.dart'; - - +/// Category +/// +/// Properties: +/// * [id] +/// * [name] abstract class Category implements Built { @BuiltValueField(wireName: r'id') int? get id; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/class_model.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/class_model.dart index bdc392005cf..7b99dc2be1a 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/class_model.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/class_model.dart @@ -7,8 +7,10 @@ import 'package:built_value/serializer.dart'; part 'class_model.g.dart'; - - +/// Model for testing model with \"_class\" property +/// +/// Properties: +/// * [class_] abstract class ClassModel implements Built { @BuiltValueField(wireName: r'_class') String? get class_; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/dog.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/dog.dart index 63f2d483d5d..9ca43e05402 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/dog.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/dog.dart @@ -11,6 +11,12 @@ part 'dog.g.dart'; // ignore_for_file: unused_import +/// Dog +/// +/// Properties: +/// * [className] +/// * [color] +/// * [breed] abstract class Dog implements Built { @BuiltValueField(wireName: r'className') String get className; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/dog_all_of.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/dog_all_of.dart index e896ffe4b1b..291310df2c2 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/dog_all_of.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/dog_all_of.dart @@ -7,8 +7,10 @@ import 'package:built_value/serializer.dart'; part 'dog_all_of.g.dart'; - - +/// DogAllOf +/// +/// Properties: +/// * [breed] abstract class DogAllOf implements Built { @BuiltValueField(wireName: r'breed') String? get breed; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/enum_arrays.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/enum_arrays.dart index 371f28947d8..0e28f7247a8 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/enum_arrays.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/enum_arrays.dart @@ -8,8 +8,11 @@ import 'package:built_value/serializer.dart'; part 'enum_arrays.g.dart'; - - +/// EnumArrays +/// +/// Properties: +/// * [justSymbol] +/// * [arrayEnum] abstract class EnumArrays implements Built { @BuiltValueField(wireName: r'just_symbol') EnumArraysJustSymbolEnum? get justSymbol; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/enum_test.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/enum_test.dart index 51c417dcadd..8e6d8c6d23e 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/enum_test.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/enum_test.dart @@ -12,8 +12,17 @@ import 'package:built_value/serializer.dart'; part 'enum_test.g.dart'; - - +/// EnumTest +/// +/// Properties: +/// * [enumString] +/// * [enumStringRequired] +/// * [enumInteger] +/// * [enumNumber] +/// * [outerEnum] +/// * [outerEnumInteger] +/// * [outerEnumDefaultValue] +/// * [outerEnumIntegerDefaultValue] abstract class EnumTest implements Built { @BuiltValueField(wireName: r'enum_string') EnumTestEnumStringEnum? get enumString; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/file_schema_test_class.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/file_schema_test_class.dart index 083b61e326a..0fdd8367085 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/file_schema_test_class.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/file_schema_test_class.dart @@ -9,8 +9,11 @@ import 'package:built_value/serializer.dart'; part 'file_schema_test_class.g.dart'; - - +/// FileSchemaTestClass +/// +/// Properties: +/// * [file] +/// * [files] abstract class FileSchemaTestClass implements Built { @BuiltValueField(wireName: r'file') ModelFile? get file; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/foo.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/foo.dart index 045d8857577..148b67aacea 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/foo.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/foo.dart @@ -7,8 +7,10 @@ import 'package:built_value/serializer.dart'; part 'foo.g.dart'; - - +/// Foo +/// +/// Properties: +/// * [bar] abstract class Foo implements Built { @BuiltValueField(wireName: r'bar') String? get bar; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/format_test.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/format_test.dart index 745e9b5c63b..eb013af8673 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/format_test.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/format_test.dart @@ -9,8 +9,25 @@ import 'package:built_value/serializer.dart'; part 'format_test.g.dart'; - - +/// FormatTest +/// +/// Properties: +/// * [integer] +/// * [int32] +/// * [int64] +/// * [number] +/// * [float] +/// * [double_] +/// * [decimal] +/// * [string] +/// * [byte] +/// * [binary] +/// * [date] +/// * [dateTime] +/// * [uuid] +/// * [password] +/// * [patternWithDigits] - A string that is a 10 digit number. Can have leading zeros. +/// * [patternWithDigitsAndDelimiter] - A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. abstract class FormatTest implements Built { @BuiltValueField(wireName: r'integer') int? get integer; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/has_only_read_only.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/has_only_read_only.dart index f7cb2cd2e5a..d1ed7b46954 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/has_only_read_only.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/has_only_read_only.dart @@ -7,8 +7,11 @@ import 'package:built_value/serializer.dart'; part 'has_only_read_only.g.dart'; - - +/// HasOnlyReadOnly +/// +/// Properties: +/// * [bar] +/// * [foo] abstract class HasOnlyReadOnly implements Built { @BuiltValueField(wireName: r'bar') String? get bar; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/health_check_result.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/health_check_result.dart index 69bca6dce0f..a071f956787 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/health_check_result.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/health_check_result.dart @@ -7,8 +7,10 @@ import 'package:built_value/serializer.dart'; part 'health_check_result.g.dart'; - - +/// Just a string to inform instance is up and running. Make it nullable in hope to get it as pointer in generated model. +/// +/// Properties: +/// * [nullableMessage] abstract class HealthCheckResult implements Built { @BuiltValueField(wireName: r'NullableMessage') String? get nullableMessage; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/inline_response_default.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/inline_response_default.dart index 875b612c5d6..d6eb09c8797 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/inline_response_default.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/inline_response_default.dart @@ -8,8 +8,10 @@ import 'package:built_value/serializer.dart'; part 'inline_response_default.g.dart'; - - +/// InlineResponseDefault +/// +/// Properties: +/// * [string] abstract class InlineResponseDefault implements Built { @BuiltValueField(wireName: r'string') Foo? get string; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/map_test.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/map_test.dart index 21af21a52bb..89fa1e3065e 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/map_test.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/map_test.dart @@ -8,8 +8,13 @@ import 'package:built_value/serializer.dart'; part 'map_test.g.dart'; - - +/// MapTest +/// +/// Properties: +/// * [mapMapOfString] +/// * [mapOfEnumString] +/// * [directMap] +/// * [indirectMap] abstract class MapTest implements Built { @BuiltValueField(wireName: r'map_map_of_string') BuiltMap>? get mapMapOfString; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/mixed_properties_and_additional_properties_class.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/mixed_properties_and_additional_properties_class.dart index 4da5f4d520d..55328c39f6f 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/mixed_properties_and_additional_properties_class.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/mixed_properties_and_additional_properties_class.dart @@ -9,8 +9,12 @@ import 'package:built_value/serializer.dart'; part 'mixed_properties_and_additional_properties_class.g.dart'; - - +/// MixedPropertiesAndAdditionalPropertiesClass +/// +/// Properties: +/// * [uuid] +/// * [dateTime] +/// * [map] abstract class MixedPropertiesAndAdditionalPropertiesClass implements Built { @BuiltValueField(wireName: r'uuid') String? get uuid; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model200_response.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model200_response.dart index be8614351cb..f8eaf0f3e2d 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model200_response.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model200_response.dart @@ -7,8 +7,11 @@ import 'package:built_value/serializer.dart'; part 'model200_response.g.dart'; - - +/// Model for testing model name starting with number +/// +/// Properties: +/// * [name] +/// * [class_] abstract class Model200Response implements Built { @BuiltValueField(wireName: r'name') int? get name; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_client.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_client.dart index 57871562a07..045a6805707 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_client.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_client.dart @@ -7,8 +7,10 @@ import 'package:built_value/serializer.dart'; part 'model_client.g.dart'; - - +/// ModelClient +/// +/// Properties: +/// * [client] abstract class ModelClient implements Built { @BuiltValueField(wireName: r'client') String? get client; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_file.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_file.dart index 8a6c468bc00..2ad4601d2f0 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_file.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_file.dart @@ -7,8 +7,10 @@ import 'package:built_value/serializer.dart'; part 'model_file.g.dart'; - - +/// Must be named `File` for test. +/// +/// Properties: +/// * [sourceURI] - Test capitalization abstract class ModelFile implements Built { /// Test capitalization @BuiltValueField(wireName: r'sourceURI') diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_list.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_list.dart index 901616e8dc6..4bb83e5f277 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_list.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_list.dart @@ -7,8 +7,10 @@ import 'package:built_value/serializer.dart'; part 'model_list.g.dart'; - - +/// ModelList +/// +/// Properties: +/// * [n123list] abstract class ModelList implements Built { @BuiltValueField(wireName: r'123-list') String? get n123list; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_return.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_return.dart index 42c03755627..4e7bad16424 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_return.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/model_return.dart @@ -7,8 +7,10 @@ import 'package:built_value/serializer.dart'; part 'model_return.g.dart'; - - +/// Model for testing reserved words +/// +/// Properties: +/// * [return_] abstract class ModelReturn implements Built { @BuiltValueField(wireName: r'return') int? get return_; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/name.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/name.dart index 911fa0a5471..1963c3ace07 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/name.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/name.dart @@ -7,8 +7,13 @@ import 'package:built_value/serializer.dart'; part 'name.g.dart'; - - +/// Model for testing model name same as property name +/// +/// Properties: +/// * [name] +/// * [snakeCase] +/// * [property] +/// * [n123number] abstract class Name implements Built { @BuiltValueField(wireName: r'name') int get name; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/nullable_class.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/nullable_class.dart index 13fa27880f6..30dc376cb02 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/nullable_class.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/nullable_class.dart @@ -10,8 +10,21 @@ import 'package:built_value/serializer.dart'; part 'nullable_class.g.dart'; - - +/// NullableClass +/// +/// Properties: +/// * [integerProp] +/// * [numberProp] +/// * [booleanProp] +/// * [stringProp] +/// * [dateProp] +/// * [datetimeProp] +/// * [arrayNullableProp] +/// * [arrayAndItemsNullableProp] +/// * [arrayItemsNullable] +/// * [objectNullableProp] +/// * [objectAndItemsNullableProp] +/// * [objectItemsNullable] abstract class NullableClass implements Built { @BuiltValueField(wireName: r'integer_prop') int? get integerProp; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/number_only.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/number_only.dart index 55e00d4d65c..b423c6fc656 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/number_only.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/number_only.dart @@ -7,8 +7,10 @@ import 'package:built_value/serializer.dart'; part 'number_only.g.dart'; - - +/// NumberOnly +/// +/// Properties: +/// * [justNumber] abstract class NumberOnly implements Built { @BuiltValueField(wireName: r'JustNumber') num? get justNumber; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/order.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/order.dart index 9c65fbf0c3a..cdebcd96b1e 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/order.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/order.dart @@ -8,8 +8,15 @@ import 'package:built_value/serializer.dart'; part 'order.g.dart'; - - +/// Order +/// +/// Properties: +/// * [id] +/// * [petId] +/// * [quantity] +/// * [shipDate] +/// * [status] - Order Status +/// * [complete] abstract class Order implements Built { @BuiltValueField(wireName: r'id') int? get id; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/outer_composite.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/outer_composite.dart index 69007a11464..0a8f4296c13 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/outer_composite.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/outer_composite.dart @@ -7,8 +7,12 @@ import 'package:built_value/serializer.dart'; part 'outer_composite.g.dart'; - - +/// OuterComposite +/// +/// Properties: +/// * [myNumber] +/// * [myString] +/// * [myBoolean] abstract class OuterComposite implements Built { @BuiltValueField(wireName: r'my_number') num? get myNumber; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/outer_object_with_enum_property.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/outer_object_with_enum_property.dart index 6f4563d7a5e..a95f92d8837 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/outer_object_with_enum_property.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/outer_object_with_enum_property.dart @@ -8,8 +8,10 @@ import 'package:built_value/serializer.dart'; part 'outer_object_with_enum_property.g.dart'; - - +/// OuterObjectWithEnumProperty +/// +/// Properties: +/// * [value] abstract class OuterObjectWithEnumProperty implements Built { @BuiltValueField(wireName: r'value') OuterEnumInteger get value; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/pet.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/pet.dart index 99ef939eb1b..ea94306056c 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/pet.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/pet.dart @@ -10,8 +10,15 @@ import 'package:built_value/serializer.dart'; part 'pet.g.dart'; - - +/// Pet +/// +/// Properties: +/// * [id] +/// * [category] +/// * [name] +/// * [photoUrls] +/// * [tags] +/// * [status] - pet status in the store abstract class Pet implements Built { @BuiltValueField(wireName: r'id') int? get id; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/read_only_first.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/read_only_first.dart index d53617d1c0b..ce46f919ea3 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/read_only_first.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/read_only_first.dart @@ -7,8 +7,11 @@ import 'package:built_value/serializer.dart'; part 'read_only_first.g.dart'; - - +/// ReadOnlyFirst +/// +/// Properties: +/// * [bar] +/// * [baz] abstract class ReadOnlyFirst implements Built { @BuiltValueField(wireName: r'bar') String? get bar; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/special_model_name.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/special_model_name.dart index 36880f32998..dc69b29e496 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/special_model_name.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/special_model_name.dart @@ -7,8 +7,10 @@ import 'package:built_value/serializer.dart'; part 'special_model_name.g.dart'; - - +/// SpecialModelName +/// +/// Properties: +/// * [dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket] abstract class SpecialModelName implements Built { @BuiltValueField(wireName: r'$special[property.name]') int? get dollarSpecialLeftSquareBracketPropertyPeriodNameRightSquareBracket; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/tag.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/tag.dart index d46c2aa4045..6723a6ea9f2 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/tag.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/tag.dart @@ -7,8 +7,11 @@ import 'package:built_value/serializer.dart'; part 'tag.g.dart'; - - +/// Tag +/// +/// Properties: +/// * [id] +/// * [name] abstract class Tag implements Built { @BuiltValueField(wireName: r'id') int? get id; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/user.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/user.dart index dec21c7e473..8aeb8f43ade 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/user.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/user.dart @@ -7,8 +7,17 @@ import 'package:built_value/serializer.dart'; part 'user.g.dart'; - - +/// User +/// +/// Properties: +/// * [id] +/// * [username] +/// * [firstName] +/// * [lastName] +/// * [email] +/// * [password] +/// * [phone] +/// * [userStatus] - User Status abstract class User implements Built { @BuiltValueField(wireName: r'id') int? get id; diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/pubspec.yaml b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/pubspec.yaml index 4a109ee28d3..2a62f274f36 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/pubspec.yaml @@ -2,8 +2,6 @@ name: openapi version: 1.0.0 description: OpenAPI API client homepage: homepage -authors: - - 'Author ' environment: sdk: '>=2.12.0 <3.0.0' diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml index 3182395f579..34a1aa76180 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/pubspec.yaml @@ -2,8 +2,6 @@ name: openapi version: 1.0.0 description: OpenAPI API client homepage: homepage -authors: - - 'Author ' environment: sdk: '>=2.7.0 <3.0.0' diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pubspec.yaml b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pubspec.yaml index 3182395f579..34a1aa76180 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/pubspec.yaml @@ -2,8 +2,6 @@ name: openapi version: 1.0.0 description: OpenAPI API client homepage: homepage -authors: - - 'Author ' environment: sdk: '>=2.7.0 <3.0.0' diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml b/samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml index 4d55880cd85..163b29ec3ec 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/pubspec.yaml @@ -5,8 +5,6 @@ name: 'openapi' version: '1.0.0' description: 'OpenAPI API client' -authors: - - 'Author ' homepage: 'homepage' environment: sdk: '>=2.12.0 <3.0.0' diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml index 4d55880cd85..163b29ec3ec 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/pubspec.yaml @@ -5,8 +5,6 @@ name: 'openapi' version: '1.0.0' description: 'OpenAPI API client' -authors: - - 'Author ' homepage: 'homepage' environment: sdk: '>=2.12.0 <3.0.0' diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/pubspec.yaml b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/pubspec.yaml index 73931cb6b83..66b0d5a7acd 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/pubspec.yaml +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/pubspec.yaml @@ -5,8 +5,6 @@ name: 'openapi' version: '1.0.0' description: 'OpenAPI API client' -authors: - - 'Author ' homepage: 'homepage' environment: sdk: '>=2.12.0 <3.0.0' From 5227e060552171c93cb211f35525880dd84fc94d Mon Sep 17 00:00:00 2001 From: Hemant Zope <42613258+zhemant@users.noreply.github.com> Date: Thu, 27 May 2021 05:00:21 +0200 Subject: [PATCH 056/192] [C]: Fix enum values (#9537) * use unmodified enum values in arrays * update enum values in body and api mustache --- .../src/main/resources/C-libcurl/api-body.mustache | 4 ++-- .../src/main/resources/C-libcurl/model-body.mustache | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache index 0c85a67a2b3..81c1fbdba39 100644 --- a/modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache +++ b/modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache @@ -18,13 +18,13 @@ // Functions for enum {{enumName}} for {{{classname}}}_{{{operationId}}} static char* {{{operationId}}}_{{enumName}}_ToString({{projectName}}_{{operationId}}_{{baseName}}_e {{enumName}}){ - char *{{enumName}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; + char *{{enumName}}Array[] = { "NULL"{{#allowableValues}}{{#values}}, "{{.}}"{{/values}}{{/allowableValues}} }; return {{enumName}}Array[{{enumName}}]; } static {{projectName}}_{{operationId}}_{{baseName}}_e {{{operationId}}}_{{enumName}}_FromString(char* {{enumName}}){ int stringToReturn = 0; - char *{{enumName}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; + char *{{enumName}}Array[] = { "NULL"{{#allowableValues}}{{#values}}, "{{.}}"{{/values}}{{/allowableValues}} }; size_t sizeofArray = sizeof({{enumName}}Array) / sizeof({{enumName}}Array[0]); while(stringToReturn < sizeofArray) { if(strcmp({{enumName}}, {{enumName}}Array[stringToReturn]) == 0) { diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/model-body.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/model-body.mustache index e487cb0f474..6f4259a6f18 100644 --- a/modules/openapi-generator/src/main/resources/C-libcurl/model-body.mustache +++ b/modules/openapi-generator/src/main/resources/C-libcurl/model-body.mustache @@ -8,13 +8,13 @@ {{#isEnum}} char* {{classFilename}}_{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName}}_e {{classname}}) { - char *{{classname}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; + char *{{classname}}Array[] = { "NULL"{{#allowableValues}}{{#values}}, "{{.}}"{{/values}}{{/allowableValues}} }; return {{classname}}Array[{{classname}}]; } {{projectName}}_{{classVarName}}_{{enumName}}_e {{classFilename}}_{{classname}}_FromString(char* {{classname}}) { int stringToReturn = 0; - char *{{classname}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; + char *{{classname}}Array[] = { "NULL"{{#allowableValues}}{{#values}}, "{{.}}"{{/values}}{{/allowableValues}} }; size_t sizeofArray = sizeof({{classname}}Array) / sizeof({{classname}}Array[0]); while(stringToReturn < sizeofArray) { if(strcmp({{classname}}, {{classname}}Array[stringToReturn]) == 0) { @@ -78,13 +78,13 @@ end: {{^isModel}} {{#isEnum}} char* {{name}}{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}) { - char* {{name}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; + char* {{name}}Array[] = { "NULL"{{#allowableValues}}{{#values}}, "{{.}}"{{/values}}{{/allowableValues}} }; return {{name}}Array[{{name}}]; } {{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}{{classname}}_FromString(char* {{name}}){ int stringToReturn = 0; - char *{{name}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; + char *{{name}}Array[] = { "NULL"{{#allowableValues}}{{#values}}, "{{.}}"{{/values}}{{/allowableValues}} }; size_t sizeofArray = sizeof({{name}}Array) / sizeof({{name}}Array[0]); while(stringToReturn < sizeofArray) { if(strcmp({{name}}, {{name}}Array[stringToReturn]) == 0) { @@ -102,13 +102,13 @@ char* {{name}}{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName {{^isModel}} {{#isEnum}} char* {{name}}{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}) { - char *{{name}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; + char *{{name}}Array[] = { "NULL"{{#allowableValues}}{{#values}}, "{{.}}"{{/values}}{{/allowableValues}} }; return {{name}}Array[{{name}} - 1]; } {{projectName}}_{{classVarName}}_{{enumName}}_e {{name}}{{classname}}_FromString(char* {{name}}) { int stringToReturn = 0; - char *{{name}}Array[] = { "NULL"{{#allowableValues}}{{#enumVars}}, "{{{value}}}"{{/enumVars}}{{/allowableValues}} }; + char *{{name}}Array[] = { "NULL"{{#allowableValues}}{{#values}}, "{{.}}"{{/values}}{{/allowableValues}} }; size_t sizeofArray = sizeof({{name}}Array) / sizeof({{name}}Array[0]); while(stringToReturn < sizeofArray) { if(strcmp({{name}}, {{name}}Array[stringToReturn]) == 0) { From 670c5884b65137b78863e491bf079d73217d16ad Mon Sep 17 00:00:00 2001 From: William Cheng Date: Thu, 27 May 2021 11:23:00 +0800 Subject: [PATCH 057/192] update samples --- .../src/main/resources/application.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/samples/server/petstore/springboot-virtualan/src/main/resources/application.properties b/samples/server/petstore/springboot-virtualan/src/main/resources/application.properties index cf5e33b6869..64073b52f1e 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/resources/application.properties +++ b/samples/server/petstore/springboot-virtualan/src/main/resources/application.properties @@ -2,7 +2,7 @@ springfox.documentation.swagger.v2.path=/api-docs server.port=80 spring.jackson.date-format=org.openapitools.RFC3339DateFormat spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false -virtual.datasource.driver-class-name=org.hsqldb.jdbcDriver -virtual.datasource.jdbcurl=jdbc:hsqldb:mem:dataSource -virtual.datasource.username=sa -virtual.datasource.password= +virtualan.datasource.driver-class-name=org.hsqldb.jdbcDriver +virtualan.datasource.jdbcurl=jdbc:hsqldb:mem:dataSource +virtualan.datasource.username=sa +virtualan.datasource.password= From 73b34ade6ad6fb2967283c5c9faca1c360ce0a7f Mon Sep 17 00:00:00 2001 From: adameste <32512271+adameste@users.noreply.github.com> Date: Fri, 28 May 2021 03:58:01 +0200 Subject: [PATCH 058/192] [cpp-restsdk] Update json double/float parse. (#9577) * [cpp-restsdk] Update json double/float parse. Fix cpp-restsdk double and float parse. double.NaN was parsed when server doesn't ensure the floating point value has decimal point in in. * Update docs & samples. --- .../cpp-rest-sdk-client/modelbase-source.mustache | 8 ++++---- samples/client/petstore/cpp-restsdk/client/ModelBase.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/modelbase-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/modelbase-source.mustache index cfe9c44fecc..faa2333603a 100644 --- a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/modelbase-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/modelbase-source.mustache @@ -249,13 +249,13 @@ bool ModelBase::fromJson( const web::json::value& val, bool & outVal ) } bool ModelBase::fromJson( const web::json::value& val, float & outVal ) { - outVal = !val.is_double() ? std::numeric_limits::quiet_NaN(): static_cast(val.as_double()); - return val.is_double(); + outVal = (!val.is_double() && !val.is_integer()) ? std::numeric_limits::quiet_NaN(): static_cast(val.as_double()); + return val.is_double() || val.is_integer(); } bool ModelBase::fromJson( const web::json::value& val, double & outVal ) { - outVal = !val.is_double() ? std::numeric_limits::quiet_NaN(): val.as_double(); - return val.is_double() ; + outVal = (!val.is_double() && !val.is_integer()) ? std::numeric_limits::quiet_NaN(): val.as_double(); + return val.is_double() || val.is_integer(); } bool ModelBase::fromJson( const web::json::value& val, int32_t & outVal ) { diff --git a/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp b/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp index 4803353fa2c..8c02ac7c40d 100644 --- a/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp @@ -260,13 +260,13 @@ bool ModelBase::fromJson( const web::json::value& val, bool & outVal ) } bool ModelBase::fromJson( const web::json::value& val, float & outVal ) { - outVal = !val.is_double() ? std::numeric_limits::quiet_NaN(): static_cast(val.as_double()); - return val.is_double(); + outVal = (!val.is_double() && !val.is_integer()) ? std::numeric_limits::quiet_NaN(): static_cast(val.as_double()); + return val.is_double() || val.is_integer(); } bool ModelBase::fromJson( const web::json::value& val, double & outVal ) { - outVal = !val.is_double() ? std::numeric_limits::quiet_NaN(): val.as_double(); - return val.is_double() ; + outVal = (!val.is_double() && !val.is_integer()) ? std::numeric_limits::quiet_NaN(): val.as_double(); + return val.is_double() || val.is_integer(); } bool ModelBase::fromJson( const web::json::value& val, int32_t & outVal ) { From 12c34d4658ab3b1cd3cdfb9b7e72ce3cc55c27ba Mon Sep 17 00:00:00 2001 From: adessoDpd <83429301+adessoDpd@users.noreply.github.com> Date: Fri, 28 May 2021 04:22:28 +0200 Subject: [PATCH 059/192] New generator: WSDL (#9545) * init port * add outputDir * fill out current .md * update samples Co-authored-by: William Cheng --- bin/configs/wsdl-spec.yaml | 6 + docs/generators/fsharp-functions.md | 2 +- docs/generators/fsharp-giraffe-server.md | 2 +- docs/generators/java-inflector.md | 2 +- docs/generators/jaxrs-cxf-client.md | 2 +- docs/generators/swift5.md | 4 +- docs/generators/wsdl.md | 150 +++ .../languages/WsdlGeneratorCodegen.java | 264 ++++ .../org.openapitools.codegen.CodegenConfig | 1 + .../wsdl/jaxb-customization.mustache | 50 + .../resources/wsdl/wsdl-converter.mustache | 348 +++++ .../codegen/wsdl/WsdlGeneratorTest.java | 269 ++++ .../src/test/resources/3_0/wsdl/petstore.yaml | 728 +++++++++++ .../petstore/R/.openapi-generator/FILES | 2 +- .../.openapi-generator/FILES | 2 +- .../php/OpenAPIClient-php/phpunit.xml.dist | 4 +- samples/client/petstore/powershell/README.md | 12 +- .../petstore/powershell/docs/PSPetApi.md | 2 +- .../petstore/powershell/docs/PSStoreApi.md | 2 +- .../petstore/powershell/docs/PSUserApi.md | 2 +- .../default-v3.0/models/Capitalization.ts | 1 + .../wsdl/.openapi-generator-ignore | 23 + .../wsdl/.openapi-generator/FILES | 2 + .../wsdl/.openapi-generator/VERSION | 1 + .../documentation/wsdl/jaxb-customization.xml | 28 + samples/documentation/wsdl/service.wsdl | 1158 +++++++++++++++++ .../petstore_client_lib_fake/README.md | 89 +- .../dart-dio/petstore_client_lib/README.md | 12 +- .../petstore_client_lib_fake/README.md | 88 +- .../dart2/petstore_client_lib/README.md | 52 +- .../dart2/petstore_client_lib_fake/README.md | 168 +-- .../README.md | 168 +-- .../Org.OpenAPITools/Controllers/PetApi.cs | 8 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- .../Org.OpenAPITools/Controllers/PetApi.cs | 8 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- .../Org.OpenAPITools/Controllers/PetApi.cs | 12 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- .../Org.OpenAPITools/Controllers/PetApi.cs | 8 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- samples/server/petstore/php-slim4/README.md | 4 +- .../petstore/php-slim4/phpunit.xml.dist | 4 +- .../SymfonyBundle-php/phpunit.xml.dist | 6 +- .../python-aiohttp-srclayout/setup.py | 6 +- .../tests/conftest.py | 2 +- .../petstore/python-aiohttp-srclayout/tox.ini | 2 +- 50 files changed, 3378 insertions(+), 350 deletions(-) create mode 100644 bin/configs/wsdl-spec.yaml create mode 100644 docs/generators/wsdl.md create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlGeneratorCodegen.java create mode 100644 modules/openapi-generator/src/main/resources/wsdl/jaxb-customization.mustache create mode 100644 modules/openapi-generator/src/main/resources/wsdl/wsdl-converter.mustache create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/wsdl/WsdlGeneratorTest.java create mode 100644 modules/openapi-generator/src/test/resources/3_0/wsdl/petstore.yaml create mode 100644 samples/documentation/wsdl/.openapi-generator-ignore create mode 100644 samples/documentation/wsdl/.openapi-generator/FILES create mode 100644 samples/documentation/wsdl/.openapi-generator/VERSION create mode 100644 samples/documentation/wsdl/jaxb-customization.xml create mode 100644 samples/documentation/wsdl/service.wsdl diff --git a/bin/configs/wsdl-spec.yaml b/bin/configs/wsdl-spec.yaml new file mode 100644 index 00000000000..2674412251d --- /dev/null +++ b/bin/configs/wsdl-spec.yaml @@ -0,0 +1,6 @@ +generatorName: wsdl +outputDir: samples/documentation/wsdl +inputSpec: modules/openapi-generator/src/test/resources/3_0/wsdl/petstore.yaml +templateDir: modules/openapi-generator/src/main/resources/wsdl +additionalProperties: + hideGenerationTimestamp: "true" diff --git a/docs/generators/fsharp-functions.md b/docs/generators/fsharp-functions.md index bb16f39fa77..2a81000a7fb 100644 --- a/docs/generators/fsharp-functions.md +++ b/docs/generators/fsharp-functions.md @@ -22,7 +22,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |OpenAPI/src| +|sourceFolder|source folder for generated code| |OpenAPI\src| ## IMPORT MAPPING diff --git a/docs/generators/fsharp-giraffe-server.md b/docs/generators/fsharp-giraffe-server.md index f374168aa71..66150dbec0d 100644 --- a/docs/generators/fsharp-giraffe-server.md +++ b/docs/generators/fsharp-giraffe-server.md @@ -19,7 +19,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |packageVersion|F# package version.| |1.0.0| |returnICollection|Return ICollection<T> instead of the concrete type.| |false| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |OpenAPI/src| +|sourceFolder|source folder for generated code| |OpenAPI\src| |useCollection|Deserialize array types to Collection<T> instead of List<T>.| |false| |useDateTimeOffset|Use DateTimeOffset to model date-time properties| |false| |useSwashbuckle|Uses the Swashbuckle.AspNetCore NuGet package for documentation.| |false| diff --git a/docs/generators/java-inflector.md b/docs/generators/java-inflector.md index 373bc61861b..131b09f3f90 100644 --- a/docs/generators/java-inflector.md +++ b/docs/generators/java-inflector.md @@ -48,7 +48,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |snapshotVersion|Uses a SNAPSHOT version.|
    **true**
    Use a SnapShot Version
    **false**
    Use a Release Version
    |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |src/gen/java| +|sourceFolder|source folder for generated code| |src\gen\java| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-cxf-client.md b/docs/generators/jaxrs-cxf-client.md index fb3547c920d..25d03ea104b 100644 --- a/docs/generators/jaxrs-cxf-client.md +++ b/docs/generators/jaxrs-cxf-client.md @@ -48,7 +48,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |snapshotVersion|Uses a SNAPSHOT version.|
    **true**
    Use a SnapShot Version
    **false**
    Use a Release Version
    |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |src/gen/java| +|sourceFolder|source folder for generated code| |src\gen\java| |useBeanValidation|Use BeanValidation API annotations| |false| |useGenericResponse|Use generic response| |false| |useGzipFeatureForTests|Use Gzip Feature for tests| |false| diff --git a/docs/generators/swift5.md b/docs/generators/swift5.md index bace7f1f049..2846d6de2b9 100644 --- a/docs/generators/swift5.md +++ b/docs/generators/swift5.md @@ -36,10 +36,10 @@ These options may be applied as additional-properties (cli) or configOptions (pl |responseAs|Optionally use libraries to manage response. Currently PromiseKit, RxSwift, Result, Combine are available.| |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|swiftPackagePath|Set a custom source path instead of OpenAPIClient/Classes/OpenAPIs.| |null| +|swiftPackagePath|Set a custom source path instead of OpenAPIClient\Classes\OpenAPIs.| |null| |swiftUseApiNamespace|Flag to make all the API classes inner-class of {{projectName}}API| |null| |useBacktickEscapes|Escape reserved words using backticks (default: false)| |false| -|useSPMFileStructure|Use SPM file structure and set the source path to Sources/{{projectName}} (default: false).| |null| +|useSPMFileStructure|Use SPM file structure and set the source path to Sources\{{projectName}} (default: false).| |null| ## IMPORT MAPPING diff --git a/docs/generators/wsdl.md b/docs/generators/wsdl.md new file mode 100644 index 00000000000..46d30e12393 --- /dev/null +++ b/docs/generators/wsdl.md @@ -0,0 +1,150 @@ +--- +title: Config Options for wsdl +sidebar_label: wsdl +--- + +These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details. + +| Option | Description | Values | Default | +| ------ | ----------- | ------ | ------- | +|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false| +|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
    **false**
    The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
    **true**
    Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
    |true| +|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true| +|hostname|the hostname of the service| |null| +|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|
    **true**
    The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
    **false**
    The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
    |true| +|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| +|serviceName|service name for the wsdl| |null| +|soapPath|basepath of the soap services| |null| +|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| +|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| + +## IMPORT MAPPING + +| Type/Alias | Imports | +| ---------- | ------- | + + +## INSTANTIATION TYPES + +| Type/Alias | Instantiated By | +| ---------- | --------------- | + + +## LANGUAGE PRIMITIVES + +
      +
    + +## RESERVED WORDS + +
      +
    + +## FEATURE SET + + +### Client Modification Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|BasePath|✗|ToolingExtension +|Authorizations|✗|ToolingExtension +|UserAgent|✗|ToolingExtension +|MockServer|✗|ToolingExtension + +### Data Type Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Custom|✗|OAS2,OAS3 +|Int32|✓|OAS2,OAS3 +|Int64|✓|OAS2,OAS3 +|Float|✓|OAS2,OAS3 +|Double|✓|OAS2,OAS3 +|Decimal|✓|ToolingExtension +|String|✓|OAS2,OAS3 +|Byte|✓|OAS2,OAS3 +|Binary|✓|OAS2,OAS3 +|Boolean|✓|OAS2,OAS3 +|Date|✓|OAS2,OAS3 +|DateTime|✓|OAS2,OAS3 +|Password|✓|OAS2,OAS3 +|File|✓|OAS2 +|Array|✓|OAS2,OAS3 +|Maps|✓|ToolingExtension +|CollectionFormat|✓|OAS2 +|CollectionFormatMulti|✓|OAS2 +|Enum|✓|OAS2,OAS3 +|ArrayOfEnum|✓|ToolingExtension +|ArrayOfModel|✓|ToolingExtension +|ArrayOfCollectionOfPrimitives|✓|ToolingExtension +|ArrayOfCollectionOfModel|✓|ToolingExtension +|ArrayOfCollectionOfEnum|✓|ToolingExtension +|MapOfEnum|✓|ToolingExtension +|MapOfModel|✓|ToolingExtension +|MapOfCollectionOfPrimitives|✓|ToolingExtension +|MapOfCollectionOfModel|✓|ToolingExtension +|MapOfCollectionOfEnum|✓|ToolingExtension + +### Documentation Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Readme|✗|ToolingExtension +|Model|✓|ToolingExtension +|Api|✓|ToolingExtension + +### Global Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Host|✓|OAS2,OAS3 +|BasePath|✓|OAS2,OAS3 +|Info|✓|OAS2,OAS3 +|Schemes|✗|OAS2,OAS3 +|PartialSchemes|✓|OAS2,OAS3 +|Consumes|✓|OAS2 +|Produces|✓|OAS2 +|ExternalDocumentation|✓|OAS2,OAS3 +|Examples|✓|OAS2,OAS3 +|XMLStructureDefinitions|✗|OAS2,OAS3 +|MultiServer|✗|OAS3 +|ParameterizedServer|✗|OAS3 +|ParameterStyling|✗|OAS3 +|Callbacks|✓|OAS3 +|LinkObjects|✗|OAS3 + +### Parameter Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Path|✓|OAS2,OAS3 +|Query|✓|OAS2,OAS3 +|Header|✓|OAS2,OAS3 +|Body|✓|OAS2 +|FormUnencoded|✓|OAS2 +|FormMultipart|✓|OAS2 +|Cookie|✓|OAS3 + +### Schema Support Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Simple|✓|OAS2,OAS3 +|Composite|✓|OAS2,OAS3 +|Polymorphism|✓|OAS2,OAS3 +|Union|✗|OAS3 + +### Security Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|BasicAuth|✓|OAS2,OAS3 +|ApiKey|✓|OAS2,OAS3 +|OpenIDConnect|✗|OAS3 +|BearerToken|✓|OAS3 +|OAuth2_Implicit|✓|OAS2,OAS3 +|OAuth2_Password|✓|OAS2,OAS3 +|OAuth2_ClientCredentials|✓|OAS2,OAS3 +|OAuth2_AuthorizationCode|✓|OAS2,OAS3 + +### Wire Format Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|JSON|✓|OAS2,OAS3 +|XML|✓|OAS2,OAS3 +|PROTOBUF|✗|ToolingExtension +|Custom|✗|OAS2,OAS3 diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlGeneratorCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlGeneratorCodegen.java new file mode 100644 index 00000000000..d6493b524cc --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlGeneratorCodegen.java @@ -0,0 +1,264 @@ +package org.openapitools.codegen.languages; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; + +import java.io.File; +import java.text.Normalizer; +import java.util.List; +import java.util.ArrayList; +import java.util.Locale; +import java.util.Map; + +import org.openapitools.codegen.CliOption; +import org.openapitools.codegen.CodegenConfig; +import org.openapitools.codegen.CodegenModel; +import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.CodegenParameter; +import org.openapitools.codegen.CodegenProperty; +import org.openapitools.codegen.CodegenType; +import org.openapitools.codegen.DefaultCodegen; +import org.openapitools.codegen.SupportingFile; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class WsdlGeneratorCodegen extends DefaultCodegen implements CodegenConfig { + public static final String PROJECT_NAME = "projectName"; + + static final Logger LOGGER = LoggerFactory.getLogger(WsdlGeneratorCodegen.class); + + public CodegenType getTag() { + return CodegenType.DOCUMENTATION; + } + + public String getName() { + return "wsdl"; + } + + public String getHelp() { + return "Generates a wsdl-spec documentation."; + } + + public WsdlGeneratorCodegen() { + super(); + + outputFolder = "generated-code" + File.separator + "wsdl-spec"; + embeddedTemplateDir = templateDir = "wsdl"; + apiPackage = "Apis"; + modelPackage = "Models"; + + cliOptions.add(new CliOption("hostname", "the hostname of the service")); + cliOptions.add(new CliOption("soapPath", "basepath of the soap services")); + cliOptions.add(new CliOption("serviceName", "service name for the wsdl")); + + additionalProperties.put("hostname", "localhost"); + additionalProperties.put("soapPath", "soap"); + additionalProperties.put("serviceName", "ServiceV1"); + + supportingFiles.add(new SupportingFile("wsdl-converter.mustache", "", "service.wsdl")); + supportingFiles.add(new SupportingFile("jaxb-customization.mustache", "", + "jaxb-customization.xml")); + } + + public void preprocessOpenAPI(OpenAPI openAPI) { + Info info = openAPI.getInfo(); + + String title = info.getTitle(); + String description = info.getDescription(); + + info.setDescription(this.processOpenapiSpecDescription(description)); + info.setTitle(this.escapeTitle(title)); + } + + private String escapeTitle(String title) { + // strip umlauts etc. + final String normalizedTitle = Normalizer.normalize(title, Normalizer.Form.NFD) + .replaceAll("[^\\p{ASCII}]", ""); + return super.escapeUnsafeCharacters(normalizedTitle); + } + + public String processOpenapiSpecDescription(String description) { + if (description != null) { + return description.replaceAll("\\s+", " "); + } else { + return "No description provided"; + } + } + + @Override + public Map postProcessOperationsWithModels(Map objs, + List allModels) { + + Map operations = (Map) objs.get("operations"); + List operationList = (List) operations.get("operation"); + for (CodegenOperation op : operationList) { + op.operationId = this.generateOperationId(op); + + // for xml compliant primitives, lowercase dataType of openapi + for (CodegenParameter param : op.allParams) { + Map paramVendorExtensions = param.vendorExtensions; + + normalizeDataType(param); + + // prevent default="null" in wsdl-tag if no default was specified for a param + if ("null".equals(param.defaultValue) || param.defaultValue == null) { + paramVendorExtensions.put("x-param-has-defaultvalue", false); + } else { + paramVendorExtensions.put("x-param-has-defaultvalue", true); + } + + // check if param has a minimum or maximum number or lenght + if (param.minimum != null + || param.maximum != null + || param.minLength != null + || param.maxLength != null) { + paramVendorExtensions.put("x-param-has-minormax", true); + } else { + paramVendorExtensions.put("x-param-has-minormax", false); + } + + // if param is enum, uppercase 'baseName' to have a reference to wsdl simpletype + if (param.isEnum) { + char[] c = param.baseName.toCharArray(); + c[0] = Character.toUpperCase(c[0]); + param.baseName = new String(c); + } + } + + for (CodegenParameter param : op.bodyParams) { + normalizeDataType(param); + } + for (CodegenParameter param : op.pathParams) { + normalizeDataType(param); + } + for (CodegenParameter param : op.queryParams) { + normalizeDataType(param); + } + for (CodegenParameter param : op.formParams) { + normalizeDataType(param); + } + } + + return objs; + } + + private void normalizeDataType(CodegenParameter param) { + if (param.isPrimitiveType) { + param.dataType = param.dataType.toLowerCase(Locale.getDefault()); + } + if (param.dataFormat != null && param.dataFormat.equalsIgnoreCase("date")) { + param.dataType = "date"; + } + if (param.dataFormat != null && param.dataFormat.equalsIgnoreCase("date-time")) { + param.dataType = "dateTime"; + } + if (param.dataFormat != null && param.dataFormat.equalsIgnoreCase("uuid")) { + param.dataType = "string"; + } + } + + @Override + public Map postProcessModels(Map objs) { + List models = (List) objs.get("models"); + + for (Object mo : models) { + Map mod = (Map) mo; + CodegenModel model = (CodegenModel) mod.get("model"); + Map modelVendorExtensions = model.getVendorExtensions(); + + /* check if model is a model with no properties + * Used in the mustache template to ensure that no complextype is created + * if model is just a schema with an enum defined in the openapi specification + */ + if (model.allowableValues != null) { + modelVendorExtensions.put("x-is-openapimodel-enum", true); + } else { + modelVendorExtensions.put("x-is-openapimodel-enum", false); + } + + for (CodegenProperty var : model.vars) { + Map propertyVendorExtensions = var.getVendorExtensions(); + + // lowercase basetypes if openapitype is string + if (var.openApiType == "string") { + char[] c = var.baseType.toCharArray(); + c[0] = Character.toLowerCase(c[0]); + var.baseType = new String(c); + } + // if string enum, uppercase 'name' to have a reference to wsdl simpletype + if (var.isEnum) { + char[] c = var.name.toCharArray(); + c[0] = Character.toUpperCase(c[0]); + var.name = new String(c); + } + + // prevent default="null" in wsdl-tag if no default was specified for a property + if ("null".equals(var.defaultValue) || var.defaultValue == null) { + propertyVendorExtensions.put("x-prop-has-defaultvalue", false); + } else { + propertyVendorExtensions.put("x-prop-has-defaultvalue", true); + } + + // check if model property has a minimum or maximum number or lenght + if (var.minimum != null + || var.maximum != null + || var.minLength != null + || var.maxLength != null) { + propertyVendorExtensions.put("x-prop-has-minormax", true); + } else { + propertyVendorExtensions.put("x-prop-has-minormax", false); + } + } + } + return super.postProcessModelsEnum(objs); + } + + public String generateOperationId(CodegenOperation op) { + String newOperationid = this.lowerCaseStringExceptFirstLetter(op.httpMethod); + String[] pathElements = op.path.split("/"); + List pathParameters = new ArrayList(); + + for (int i = 0; i < pathElements.length; i++) { + if (pathElements[i].contains("{")) { + pathParameters.add(pathElements[i]); + pathElements[i] = ""; + } + if (pathElements[i].length() > 0) { + newOperationid = newOperationid + this.lowerCaseStringExceptFirstLetter(pathElements[i]); + } + } + + if (pathParameters.size() > 0) { + for (int i = 0; i < pathParameters.size(); i++) { + String pathParameter = pathParameters.get(i); + pathParameter = this.lowerCaseStringExceptFirstLetter(pathParameter + .substring(1, pathParameter.length() - 1)); + if (i == 0) { + newOperationid = newOperationid + "By" + pathParameter; + } else { + newOperationid = newOperationid + "And" + pathParameter; + } + } + } + return newOperationid; + } + + public String lowerCaseStringExceptFirstLetter(String value) { + String newOperationid = value.toLowerCase(Locale.getDefault()); + return newOperationid.substring(0, 1).toUpperCase(Locale.getDefault()) + + newOperationid.substring(1); + } + + @Override + public String escapeQuotationMark(String input) { + // just return the original string + return input; + } + + @Override + public String escapeUnsafeCharacters(String input) { + // just return the original string + return input; + } +} diff --git a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig index dcc8eacbc8a..6a0ecf94cba 100644 --- a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig +++ b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig @@ -134,3 +134,4 @@ org.openapitools.codegen.languages.TypeScriptNodeClientCodegen org.openapitools.codegen.languages.TypeScriptReduxQueryClientCodegen org.openapitools.codegen.languages.TypeScriptRxjsClientCodegen org.openapitools.codegen.languages.GoEchoServerCodegen +org.openapitools.codegen.languages.WsdlGeneratorCodegen diff --git a/modules/openapi-generator/src/main/resources/wsdl/jaxb-customization.mustache b/modules/openapi-generator/src/main/resources/wsdl/jaxb-customization.mustache new file mode 100644 index 00000000000..cfdd31b1b58 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/wsdl/jaxb-customization.mustache @@ -0,0 +1,50 @@ + + + + true + false + + {{#models}} + {{#model}} + {{^allOf}} + {{#vars}} + {{#isEnum}} + {{#baseType}} + + + {{#allowableValues}} + {{#enumVars}} + + {{/enumVars}} + {{/allowableValues}} + + + {{/baseType}} + {{/isEnum}} + {{/vars}} + {{/allOf}} + {{/model}} + {{/models}} + + {{#models}} + {{#model}} + {{^vars}} + + + {{#allowableValues}} + {{#enumVars}} + + {{/enumVars}} + {{/allowableValues}} + + + {{/vars}} + {{/model}} + {{/models}} + + diff --git a/modules/openapi-generator/src/main/resources/wsdl/wsdl-converter.mustache b/modules/openapi-generator/src/main/resources/wsdl/wsdl-converter.mustache new file mode 100644 index 00000000000..c136126eb5a --- /dev/null +++ b/modules/openapi-generator/src/main/resources/wsdl/wsdl-converter.mustache @@ -0,0 +1,348 @@ + + + + + {{#apiInfo}} + {{#apis}} + {{#operations}} + {{#operation}} + + + {{#responses}} + {{#is4xx}} + + + {{message}} + + + {{/is4xx}} + {{#is5xx}} + + + {{message}} + + + {{/is5xx}} + {{/responses}} + {{/operation}} + {{/operations}} + {{/apis}} + {{/apiInfo}} + {{#models}} + {{#model}} + {{^vendorExtensions.x-is-openapimodel-enum}} + + {{#description}} + + {{description}} + + {{/description}} + + {{#vars}} + {{#vendorExtensions.x-prop-has-minormax}} + + + {{#description}} + + {{description}} + + {{/description}} + + {{#maximum}} + + {{/maximum}} + {{#minimum}} + + {{/minimum}} + {{#maxLength}} + + {{/maxLength}} + {{#minLength}} + + {{/minLength}} + + + + {{/vendorExtensions.x-prop-has-minormax}} + {{^vendorExtensions.x-prop-has-minormax}} + {{#isContainer}} + + {{/isContainer}} + {{^isContainer}} + + {{/isContainer}} + {{#description}} + + {{description}} + + + {{/description}} + {{/vendorExtensions.x-prop-has-minormax}} + {{/vars}} + + + {{/vendorExtensions.x-is-openapimodel-enum}} + {{/model}} + {{/models}} + {{#models}} + {{#model}} + {{^allOf}} + {{#vars}} + {{#isEnum}} + {{#baseType}} + + {{#description}} + + {{description}} + + {{/description}} + + {{#allowableValues}} + {{#enumVars}} + + {{/enumVars}} + {{/allowableValues}} + + + {{/baseType}} + {{/isEnum}} + {{/vars}} + {{/allOf}} + {{/model}} + {{/models}} + {{#models}} + {{#model}} + {{^vars}} + + {{#description}} + + {{description}} + + {{/description}} + + {{#allowableValues}} + {{#enumVars}} + + {{/enumVars}} + {{/allowableValues}} + + + {{/vars}} + {{/model}} + {{/models}} + {{#apiInfo}} + {{#apis}} + {{#operations}} + {{#operation}} + {{#allParams}} + {{#isEnum}} + + + {{#allowableValues}} + {{#enumVars}} + + {{/enumVars}} + {{/allowableValues}} + + + {{/isEnum}} + {{/allParams}} + {{/operation}} + {{/operations}} + {{/apis}} + {{/apiInfo}} + {{#apiInfo}} + {{#apis}} + {{#operations}} + {{#operation}} + {{#hasParams}} + + + {{#allParams}} + {{#vendorExtensions.x-param-has-minormax}} + + + {{#description}} + + {{description}} + + {{/description}} + + {{#maximum}} + + {{/maximum}} + {{#minimum}} + + {{/minimum}} + {{#maxLength}} + + {{/maxLength}} + {{#minLength}} + + {{/minLength}} + + + + {{/vendorExtensions.x-param-has-minormax}} + {{^vendorExtensions.x-param-has-minormax}} + + {{#description}} + + {{description}} + + + {{/description}} + {{/vendorExtensions.x-param-has-minormax}} + {{/allParams}} + + + {{/hasParams}} + {{^hasParams}} + + {{/hasParams}} + {{#responses}} + {{^is4xx}} + {{^is5xx}} + + + {{#message}} + + + {{message}} + + + {{/message}} + {{^message}} + + {{/message}} + + + {{/is5xx}} + {{/is4xx}} + {{/responses}} + {{/operation}} + {{/operations}} + {{/apis}} + {{/apiInfo}} + + + {{#apiInfo}} + {{#apis}} + {{#operations}} + {{#operation}} + + + + {{#responses}} + {{#is2xx}} + + + + {{/is2xx}} + {{#isDefault}} + + + + {{/isDefault}} + {{#is4xx}} + + + + {{/is4xx}} + {{#is5xx}} + + + + {{/is5xx}} + {{/responses}} + {{/operation}} + {{/operations}} + {{/apis}} + {{/apiInfo}} + + {{#apiInfo}} + {{#apis}} + {{#operations}} + {{#operation}} + + {{#notes}} + {{notes}} + {{/notes}} + {{^notes}} + {{#summary}} + {{summary}} + {{/summary}} + {{/notes}} + + {{#responses}} + {{^is4xx}} + {{^is5xx}} + + {{#message}} + {{message}} + + {{/message}} + {{/is5xx}} + {{/is4xx}} + {{#is4xx}} + + {{#message}} + {{message}} + + {{/message}} + {{/is4xx}} + {{#is5xx}} + + {{#message}} + {{message}} + + {{/message}} + {{/is5xx}} + {{/responses}} + + {{/operation}} + {{/operations}} + {{/apis}} + {{/apiInfo}} + + + + {{#apiInfo}} + {{#apis}} + {{#operations}} + {{#operation}} + + + + + + {{#responses}} + {{#is2xx}} + + + + {{/is2xx}} + {{#is4xx}} + + + + {{/is4xx}} + {{#is5xx}} + + + + {{/is5xx}} + {{/responses}} + + {{/operation}} + {{/operations}} + {{/apis}} + {{/apiInfo}} + + + {{appDescription}} + + + + + \ No newline at end of file diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/wsdl/WsdlGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/wsdl/WsdlGeneratorTest.java new file mode 100644 index 00000000000..439165ac4c4 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/wsdl/WsdlGeneratorTest.java @@ -0,0 +1,269 @@ +package org.openapitools.codegen.wsdl; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.Operation; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; + +import org.apache.commons.io.FileUtils; + +import org.openapitools.codegen.ClientOptInput; +import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.DefaultGenerator; +import org.openapitools.codegen.TestUtils; +import org.openapitools.codegen.languages.WsdlGeneratorCodegen; + +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import static org.openapitools.codegen.TestUtils.assertFileContains; +import static org.openapitools.codegen.TestUtils.ensureContainsFile; + +public class WsdlGeneratorTest { + private OpenAPI openAPI; + private File outputDirectory; + private String outputPath; + private List listOfFiles; + + @BeforeClass + public void setUp() throws IOException { + this.openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/wsdl/petstore.yaml"); + this.outputDirectory = Files.createTempDirectory("test").toFile().getCanonicalFile(); + this.outputPath = this.outputDirectory.getAbsolutePath().replace('\\', '/'); + + WsdlGeneratorCodegen codegen = new WsdlGeneratorCodegen(); + codegen.setOutputDir(this.outputDirectory.getAbsolutePath()); + + ClientOptInput input = new ClientOptInput() + .openAPI(this.openAPI) + .config(codegen); + + DefaultGenerator generator = new DefaultGenerator(); + this.listOfFiles = generator.opts(input).generate(); + } + + @Test(description = "ensure that the operationid has been generated correctly") + public void testOperationIdGeneration() { + final OpenAPI openAPI = this.openAPI; + WsdlGeneratorCodegen codegen = new WsdlGeneratorCodegen(); + codegen.setOpenAPI(openAPI); + + String requestPathWithId = "/store/order/{orderId}"; + Operation textOperationGet = openAPI.getPaths().get(requestPathWithId).getGet(); + CodegenOperation opGet = codegen.fromOperation(requestPathWithId, "get", textOperationGet, null); + String newOperationIdWithId = codegen.generateOperationId(opGet); + + String requestPathWithoutId = "/store/order"; + Operation textOperationPost = openAPI.getPaths().get(requestPathWithoutId).getPost(); + CodegenOperation opPost = codegen.fromOperation(requestPathWithoutId, "post", textOperationPost, null); + String newOperationIdWithoutId = codegen.generateOperationId(opPost); + + Assert.assertEquals(newOperationIdWithId, "GetStoreOrderByOrderid"); + Assert.assertEquals(newOperationIdWithoutId, "PostStoreOrder"); + } + + @Test(description = "Ensure that passed strings are processed correcly by this method") + public void testLowerCaseStringExceptFirstLetter() { + WsdlGeneratorCodegen codegen = new WsdlGeneratorCodegen(); + String value = codegen.lowerCaseStringExceptFirstLetter("uploadPetByPathId"); + + Assert.assertEquals(value, "Uploadpetbypathid"); + } + + @Test(description = "Check if element tags has been created for an operation ") + public void testIfElementTagsExist() { + String xsElementRequestMessage = + ""; + String xsElementResponseMessage = + ""; + String xsElementErrorResponse = + " \n" + + " \n" + + " Invalid input\n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), xsElementRequestMessage); + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), xsElementResponseMessage); + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), xsElementErrorResponse); + } + + @Test(description = "Check if complexType input- and output-message has been created for an operation ") + public void testIfInputAndResponseMessageExist() { + String complexTypeRequestMessage = + " \n" + + " \n" + + " \n" + + " \n" + + " ID of pet to return\n" + + " \n" + + " \n" + + " \n" + + " \n"; + + String complexTypeResponseMessage = + " \n" + + " \n" + + " \n" + + " \n" + + " successful operation\n" + + " \n" + + " \n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), complexTypeRequestMessage); + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), complexTypeResponseMessage); + } + + @Test(description = + "Check if complexType RequestMessage with minimum and maximum restriction has been created for an operation ") + public void testIfRequestMessageMinimumExists() { + String complexTypeRequestMessageMinimum = + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " ID of pet that needs to be fetched\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), complexTypeRequestMessageMinimum); + } + + @Test(description = "Check if complexType model has been created for an openapi model schema") + public void testIfComplexTypeModelExists() { + String complexTypeModel = + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " pet status in the store\n" + + " \n" + + " \n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), complexTypeModel); + } + + @Test(description = "Check if message and part tags has been created for an operation ") + public void testIfMessageTagsAndContentExist() { + String messageRequestMessage = + " \n" + + " \n" + + " "; + + String messageError = + " \n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), messageRequestMessage); + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), messageError); + } + + @Test(description = "Check if portType tag and portType operation has been generated") + public void testIfPorttypeOperationExists() { + String portType = ""; + + String portTypeOperation = + " \n" + + " Returns a single pet\n" + + " \n" + + " \n" + + " successful operation\n" + + " \n" + + " \n" + + " Invalid ID supplied\n" + + " \n" + + " \n" + + " Pet not found\n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), portType); + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), portTypeOperation); + } + + @Test(description = "Check if portType tag and portType operation has been generated") + public void testIfBindingOperationExists() { + String binding = ""; + + String bindingOperation = + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), binding); + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), bindingOperation); + } + + @Test(description = "Ensure that all files have been correctly generated") + public void testFileGeneration() throws Exception { + Assert.assertEquals(this.listOfFiles.size(), 5); + ensureContainsFile(this.listOfFiles, this.outputDirectory, ".openapi-generator-ignore"); + ensureContainsFile(this.listOfFiles, this.outputDirectory, ".openapi-generator/FILES"); + ensureContainsFile(this.listOfFiles, this.outputDirectory, ".openapi-generator/VERSION"); + ensureContainsFile(this.listOfFiles, this.outputDirectory, "service.wsdl"); + ensureContainsFile(this.listOfFiles, this.outputDirectory, "jaxb-customization.xml"); + } + + @Test(description = "Ensure that default description is set if it doesn't exist") + public void testOpenapiDescriptionWasNotProvided() throws IOException { + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/ping.yaml"); + File outputDirectory = Files.createTempDirectory("test").toFile().getCanonicalFile(); + String outputPath = this.outputDirectory.getAbsolutePath().replace('\\', '/'); + + WsdlGeneratorCodegen codegen = new WsdlGeneratorCodegen(); + codegen.setOutputDir(this.outputDirectory.getAbsolutePath()); + + ClientOptInput input = new ClientOptInput().openAPI(openAPI).config(codegen); + + DefaultGenerator generator = new DefaultGenerator(); + generator.opts(input).generate(); + + String value = "No description provided"; + assertFileContains(Paths.get(outputPath + "/service.wsdl"), value); + + FileUtils.deleteDirectory(outputDirectory); + } + + + @AfterClass + public void cleanUp() throws Exception { + // Delete temp folder + FileUtils.deleteDirectory(this.outputDirectory); + } +} diff --git a/modules/openapi-generator/src/test/resources/3_0/wsdl/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/wsdl/petstore.yaml new file mode 100644 index 00000000000..83ccdf1c611 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/wsdl/petstore.yaml @@ -0,0 +1,728 @@ +openapi: 3.0.1 +info: + title: Swagger Petstore + description: 'This is a sample server Petstore server. You can find out more about Swagger + at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For + this sample, you can use the api key `special-key` to test the authorization filters.' + termsOfService: http://swagger.io/terms/ + contact: + email: apiteam@swagger.io + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + version: 1.0.0 +externalDocs: + description: Find out more about Swagger + url: http://swagger.io +servers: +- url: https://petstore.swagger.io/v2 +- url: http://petstore.swagger.io/v2 +tags: +- name: pet + description: Everything about your Pets + externalDocs: + description: Find out more + url: http://swagger.io +- name: store + description: Access to Petstore orders +- name: user + description: Operations about user + externalDocs: + description: Find out more about our store + url: http://swagger.io +paths: + /pet: + put: + tags: + - pet + summary: Update an existing pet + operationId: updatePet + requestBody: + description: Pet object that needs to be added to the store + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + required: true + responses: + 400: + description: Invalid ID supplied + content: {} + 404: + description: Pet not found + content: {} + 405: + description: Validation exception + content: {} + security: + - petstore_auth: + - write:pets + - read:pets + x-codegen-request-body-name: body + post: + tags: + - pet + summary: Add a new pet to the store + operationId: addPet + requestBody: + description: Pet object that needs to be added to the store + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + required: true + responses: + 405: + description: Invalid input + content: {} + security: + - petstore_auth: + - write:pets + - read:pets + x-codegen-request-body-name: body + /pet/findByStatus: + get: + tags: + - pet + summary: Finds Pets by status + description: Multiple status values can be provided with comma separated strings + operationId: findPetsByStatus + parameters: + - name: status + in: query + description: Status values that need to be considered for filter + required: true + style: form + explode: true + schema: + type: array + items: + type: string + default: available + enum: + - available + - pending + - sold + responses: + 200: + description: successful operation + content: + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + 400: + description: Invalid status value + content: {} + security: + - petstore_auth: + - write:pets + - read:pets + /pet/findByTags: + get: + tags: + - pet + summary: Finds Pets by tags + description: Muliple tags can be provided with comma separated strings. Use tag1, + tag2, tag3 for testing. + operationId: findPetsByTags + parameters: + - name: tags + in: query + description: Tags to filter by + required: true + style: form + explode: true + schema: + type: array + items: + type: string + responses: + 200: + description: successful operation + content: + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + 400: + description: Invalid tag value + content: {} + deprecated: true + security: + - petstore_auth: + - write:pets + - read:pets + /pet/{petId}: + get: + tags: + - pet + summary: Find pet by ID + description: Returns a single pet + operationId: getPetById + parameters: + - name: petId + in: path + description: ID of pet to return + required: true + schema: + type: integer + format: int64 + responses: + 200: + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/json: + schema: + $ref: '#/components/schemas/Pet' + 400: + description: Invalid ID supplied + content: {} + 404: + description: Pet not found + content: {} + security: + - api_key: [] + post: + tags: + - pet + summary: Updates a pet in the store with form data + operationId: updatePetWithForm + parameters: + - name: petId + in: path + description: ID of pet that needs to be updated + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/x-www-form-urlencoded: + schema: + properties: + name: + type: string + description: Updated name of the pet + status: + type: string + description: Updated status of the pet + responses: + 405: + description: Invalid input + content: {} + security: + - petstore_auth: + - write:pets + - read:pets + delete: + tags: + - pet + summary: Deletes a pet + operationId: deletePet + parameters: + - name: api_key + in: header + schema: + type: string + - name: petId + in: path + description: Pet id to delete + required: true + schema: + type: integer + format: int64 + responses: + 400: + description: Invalid ID supplied + content: {} + 404: + description: Pet not found + content: {} + security: + - petstore_auth: + - write:pets + - read:pets + /pet/{petId}/uploadImage: + post: + tags: + - pet + summary: uploads an image + operationId: uploadFile + parameters: + - name: petId + in: path + description: ID of pet to update + required: true + schema: + type: integer + format: int64 + requestBody: + content: + multipart/form-data: + schema: + properties: + additionalMetadata: + type: string + description: Additional data to pass to server + file: + type: string + description: file to upload + format: binary + responses: + 200: + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + security: + - petstore_auth: + - write:pets + - read:pets + /store/inventory: + get: + tags: + - store + summary: Returns pet inventories by status + description: Returns a map of status codes to quantities + operationId: getInventory + responses: + 200: + description: successful operation + content: + application/json: + schema: + type: object + additionalProperties: + type: integer + format: int32 + security: + - api_key: [] + /store/order: + post: + tags: + - store + summary: Place an order for a pet + operationId: placeOrder + requestBody: + description: order placed for purchasing the pet + content: + '*/*': + schema: + $ref: '#/components/schemas/Order' + required: true + responses: + 200: + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + 400: + description: Invalid Order + content: {} + x-codegen-request-body-name: body + /store/order/{orderId}: + get: + tags: + - store + summary: Find purchase order by ID + description: For valid response try integer IDs with value >= 1 and <= 10. Other + values will generated exceptions + operationId: getOrderById + parameters: + - name: orderId + in: path + description: ID of pet that needs to be fetched + required: true + schema: + maximum: 10.0 + minimum: 1.0 + type: integer + format: int64 + responses: + 200: + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + 400: + description: Invalid ID supplied + content: {} + 404: + description: Order not found + content: {} + delete: + tags: + - store + summary: Delete purchase order by ID + description: For valid response try integer IDs with positive integer value. Negative + or non-integer values will generate API errors + operationId: deleteOrder + parameters: + - name: orderId + in: path + description: ID of the order that needs to be deleted + required: true + schema: + minimum: 1.0 + type: integer + format: int64 + responses: + 400: + description: Invalid ID supplied + content: {} + 404: + description: Order not found + content: {} + /user: + post: + tags: + - user + summary: Create user + description: This can only be done by the logged in user. + operationId: createUser + requestBody: + description: Created user object + content: + '*/*': + schema: + $ref: '#/components/schemas/User' + required: true + responses: + default: + description: successful operation + content: {} + x-codegen-request-body-name: body + /user/createWithArray: + post: + tags: + - user + summary: Creates list of users with given input array + operationId: createUsersWithArrayInput + requestBody: + description: List of user object + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/User' + required: true + responses: + default: + description: successful operation + content: {} + x-codegen-request-body-name: body + /user/createWithList: + post: + tags: + - user + summary: Creates list of users with given input array + operationId: createUsersWithListInput + requestBody: + description: List of user object + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/User' + required: true + responses: + default: + description: successful operation + content: {} + x-codegen-request-body-name: body + /user/login: + get: + tags: + - user + summary: Logs user into the system + operationId: loginUser + parameters: + - name: username + in: query + description: The user name for login + required: true + schema: + type: string + - name: password + in: query + description: The password for login in clear text + required: true + schema: + type: string + responses: + 200: + description: successful operation + headers: + X-Rate-Limit: + description: calls per hour allowed by the user + schema: + type: integer + format: int32 + X-Expires-After: + description: date in UTC when token expires + schema: + type: string + format: date-time + content: + application/xml: + schema: + type: string + application/json: + schema: + type: string + 400: + description: Invalid username/password supplied + content: {} + /user/logout: + get: + tags: + - user + summary: Logs out current logged in user session + operationId: logoutUser + responses: + default: + description: successful operation + content: {} + /user/{username}: + get: + tags: + - user + summary: Get user by user name + operationId: getUserByName + parameters: + - name: username + in: path + description: 'The name that needs to be fetched. Use user1 for testing. ' + required: true + schema: + type: string + responses: + 200: + description: successful operation + content: + application/xml: + schema: + $ref: '#/components/schemas/User' + application/json: + schema: + $ref: '#/components/schemas/User' + 400: + description: Invalid username supplied + content: {} + 404: + description: User not found + content: {} + put: + tags: + - user + summary: Updated user + description: This can only be done by the logged in user. + operationId: updateUser + parameters: + - name: username + in: path + description: name that need to be updated + required: true + schema: + type: string + requestBody: + description: Updated user object + content: + '*/*': + schema: + $ref: '#/components/schemas/User' + required: true + responses: + 400: + description: Invalid user supplied + content: {} + 404: + description: User not found + content: {} + x-codegen-request-body-name: body + delete: + tags: + - user + summary: Delete user + description: This can only be done by the logged in user. + operationId: deleteUser + parameters: + - name: username + in: path + description: The name that needs to be deleted + required: true + schema: + type: string + responses: + 400: + description: Invalid username supplied + content: {} + 404: + description: User not found + content: {} +components: + schemas: + Order: + type: object + properties: + id: + type: integer + format: int64 + petId: + type: integer + format: int64 + quantity: + type: integer + format: int32 + shipDate: + type: string + format: date-time + status: + type: string + description: Order Status + enum: + - placed + - approved + - delivered + complete: + type: boolean + default: false + xml: + name: Order + Category: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + xml: + name: Category + User: + type: object + properties: + id: + type: integer + format: int64 + username: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + password: + type: string + phone: + type: string + userStatus: + type: integer + description: User Status + format: int32 + xml: + name: User + Tag: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + xml: + name: Tag + Pet: + required: + - name + - photoUrls + type: object + properties: + id: + type: integer + format: int64 + category: + $ref: '#/components/schemas/Category' + name: + type: string + example: doggie + photoUrls: + type: array + xml: + name: photoUrl + wrapped: true + items: + type: string + tags: + type: array + xml: + name: tag + wrapped: true + items: + $ref: '#/components/schemas/Tag' + status: + type: string + description: pet status in the store + enum: + - available + - pending + - sold + xml: + name: Pet + ApiResponse: + type: object + properties: + code: + type: integer + format: int32 + type: + type: string + message: + type: string + securitySchemes: + petstore_auth: + type: oauth2 + flows: + implicit: + authorizationUrl: http://petstore.swagger.io/oauth/dialog + scopes: + write:pets: modify pets in your account + read:pets: read your pets + api_key: + type: apiKey + name: api_key + in: header diff --git a/samples/client/petstore/R/.openapi-generator/FILES b/samples/client/petstore/R/.openapi-generator/FILES index 9385728f010..5ec829dd19d 100644 --- a/samples/client/petstore/R/.openapi-generator/FILES +++ b/samples/client/petstore/R/.openapi-generator/FILES @@ -3,6 +3,7 @@ .travis.yml DESCRIPTION NAMESPACE +README.md R/api_client.R R/api_response.R R/category.R @@ -14,7 +15,6 @@ R/store_api.R R/tag.R R/user.R R/user_api.R -README.md docs/Category.md docs/ModelApiResponse.md docs/Order.md diff --git a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES index fda1dc9138c..dcbafb2b319 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES +++ b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES @@ -55,6 +55,7 @@ docs/Model/SpecialModelName.md docs/Model/Tag.md docs/Model/User.md git_push.sh +lib/ApiException.php lib/Api/AnotherFakeApi.php lib/Api/DefaultApi.php lib/Api/FakeApi.php @@ -62,7 +63,6 @@ lib/Api/FakeClassnameTags123Api.php lib/Api/PetApi.php lib/Api/StoreApi.php lib/Api/UserApi.php -lib/ApiException.php lib/Configuration.php lib/HeaderSelector.php lib/Model/AdditionalPropertiesClass.php diff --git a/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist b/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist index 3dd90bbe32c..afbe167922d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist +++ b/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist @@ -13,8 +13,8 @@ - ./lib/Api - ./lib/Model + ./lib\/Api + ./lib\/Model diff --git a/samples/client/petstore/powershell/README.md b/samples/client/petstore/powershell/README.md index d394a82a0e9..45adbebb096 100644 --- a/samples/client/petstore/powershell/README.md +++ b/samples/client/petstore/powershell/README.md @@ -79,12 +79,12 @@ Class | Method | HTTP request | Description ## Documentation for Models - - [PSPetstore/Model.ApiResponse](docs/ApiResponse.md) - - [PSPetstore/Model.Category](docs/Category.md) - - [PSPetstore/Model.Order](docs/Order.md) - - [PSPetstore/Model.Pet](docs/Pet.md) - - [PSPetstore/Model.Tag](docs/Tag.md) - - [PSPetstore/Model.User](docs/User.md) + - [PSPetstore\Model.ApiResponse](docs/ApiResponse.md) + - [PSPetstore\Model.Category](docs/Category.md) + - [PSPetstore\Model.Order](docs/Order.md) + - [PSPetstore\Model.Pet](docs/Pet.md) + - [PSPetstore\Model.Tag](docs/Tag.md) + - [PSPetstore\Model.User](docs/User.md) ## Documentation for Authorization diff --git a/samples/client/petstore/powershell/docs/PSPetApi.md b/samples/client/petstore/powershell/docs/PSPetApi.md index 5b8c2a0f2e3..af5ef7d0ded 100644 --- a/samples/client/petstore/powershell/docs/PSPetApi.md +++ b/samples/client/petstore/powershell/docs/PSPetApi.md @@ -1,4 +1,4 @@ -# PSPetstore.PSPetstore/Api.PSPetApi +# PSPetstore.PSPetstore\Api.PSPetApi All URIs are relative to *http://petstore.swagger.io:80/v2* diff --git a/samples/client/petstore/powershell/docs/PSStoreApi.md b/samples/client/petstore/powershell/docs/PSStoreApi.md index 33b3541ced6..2ae1104846c 100644 --- a/samples/client/petstore/powershell/docs/PSStoreApi.md +++ b/samples/client/petstore/powershell/docs/PSStoreApi.md @@ -1,4 +1,4 @@ -# PSPetstore.PSPetstore/Api.PSStoreApi +# PSPetstore.PSPetstore\Api.PSStoreApi All URIs are relative to *http://petstore.swagger.io:80/v2* diff --git a/samples/client/petstore/powershell/docs/PSUserApi.md b/samples/client/petstore/powershell/docs/PSUserApi.md index f008e292f2c..0288084bf1f 100644 --- a/samples/client/petstore/powershell/docs/PSUserApi.md +++ b/samples/client/petstore/powershell/docs/PSUserApi.md @@ -1,4 +1,4 @@ -# PSPetstore.PSPetstore/Api.PSUserApi +# PSPetstore.PSPetstore\Api.PSUserApi All URIs are relative to *http://petstore.swagger.io:80/v2* diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts index 72152fe0462..dbb703aad5e 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts @@ -51,6 +51,7 @@ export interface Capitalization { sCAETHFlowPoints?: string; /** * Name of the pet + * @type {string} * @memberof Capitalization */ diff --git a/samples/documentation/wsdl/.openapi-generator-ignore b/samples/documentation/wsdl/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/documentation/wsdl/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/documentation/wsdl/.openapi-generator/FILES b/samples/documentation/wsdl/.openapi-generator/FILES new file mode 100644 index 00000000000..94285c6e2aa --- /dev/null +++ b/samples/documentation/wsdl/.openapi-generator/FILES @@ -0,0 +1,2 @@ +jaxb-customization.xml +service.wsdl diff --git a/samples/documentation/wsdl/.openapi-generator/VERSION b/samples/documentation/wsdl/.openapi-generator/VERSION new file mode 100644 index 00000000000..6555596f931 --- /dev/null +++ b/samples/documentation/wsdl/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/documentation/wsdl/jaxb-customization.xml b/samples/documentation/wsdl/jaxb-customization.xml new file mode 100644 index 00000000000..0ae533ccb5f --- /dev/null +++ b/samples/documentation/wsdl/jaxb-customization.xml @@ -0,0 +1,28 @@ + + + + true + false + + + + + + + + + + + + + + + + + + diff --git a/samples/documentation/wsdl/service.wsdl b/samples/documentation/wsdl/service.wsdl new file mode 100644 index 00000000000..68ce9752d72 --- /dev/null +++ b/samples/documentation/wsdl/service.wsdl @@ -0,0 +1,1158 @@ + + + + + + + + + Invalid input + + + + + + + Invalid ID supplied + + + + + Pet not found + + + + + + + Invalid status value + + + + + + + Invalid tag value + + + + + + + Invalid ID supplied + + + + + Pet not found + + + + + + + Invalid ID supplied + + + + + Pet not found + + + + + Validation exception + + + + + + + Invalid input + + + + + + + + + Invalid ID supplied + + + + + Order not found + + + + + + + + + Invalid ID supplied + + + + + Order not found + + + + + + + Invalid Order + + + + + + + + + + + + + Invalid username supplied + + + + + User not found + + + + + + + Invalid username supplied + + + + + User not found + + + + + + + Invalid username/password supplied + + + + + + + + + Invalid user supplied + + + + + User not found + + + + + + + + + + + + + + + + + + + + + + + + Order Status + + + + + + + + + + + + + + + pet status in the store + + + + + + + + + + + + + + + + + + + + + + User Status + + + + + + + Order Status + + + + + + + + + + pet status in the store + + + + + + + + + + + + + + + + + + + Pet object that needs to be added to the store + + + + + + + + + Pet id to delete + + + + + + + + + + Status values that need to be considered for filter + + + + + + + + + successful operation + + + + + + + + + Tags to filter by + + + + + + + + + successful operation + + + + + + + + + ID of pet to return + + + + + + + + + successful operation + + + + + + + + + Pet object that needs to be added to the store + + + + + + + + + ID of pet that needs to be updated + + + + + Updated name of the pet + + + + + Updated status of the pet + + + + + + + + + ID of pet to update + + + + + Additional data to pass to server + + + + + file to upload + + + + + + + + + successful operation + + + + + + + + + + ID of the order that needs to be deleted + + + + + + + + + + + + + + successful operation + + + + + + + + + + ID of pet that needs to be fetched + + + + + + + + + + + + + + successful operation + + + + + + + + + order placed for purchasing the pet + + + + + + + + + successful operation + + + + + + + + + Created user object + + + + + + + + + successful operation + + + + + + + + + List of user object + + + + + + + + + successful operation + + + + + + + + + List of user object + + + + + + + + + successful operation + + + + + + + + + The name that needs to be deleted + + + + + + + + + The name that needs to be fetched. Use user1 for testing. + + + + + + + + + successful operation + + + + + + + + + The user name for login + + + + + The password for login in clear text + + + + + + + + + successful operation + + + + + + + + + + successful operation + + + + + + + + + name that need to be updated + + + + + Updated user object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add a new pet to the store + + + Invalid input + + + + Deletes a pet + + + Invalid ID supplied + + + Pet not found + + + + Multiple status values can be provided with comma separated strings + + + successful operation + + + Invalid status value + + + + Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + + + successful operation + + + Invalid tag value + + + + Returns a single pet + + + successful operation + + + Invalid ID supplied + + + Pet not found + + + + Update an existing pet + + + Invalid ID supplied + + + Pet not found + + + Validation exception + + + + Updates a pet in the store with form data + + + Invalid input + + + + uploads an image + + + successful operation + + + + For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + + + Invalid ID supplied + + + Order not found + + + + Returns a map of status codes to quantities + + + successful operation + + + + For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + + + successful operation + + + Invalid ID supplied + + + Order not found + + + + Place an order for a pet + + + successful operation + + + Invalid Order + + + + This can only be done by the logged in user. + + + successful operation + + + + Creates list of users with given input array + + + successful operation + + + + Creates list of users with given input array + + + successful operation + + + + This can only be done by the logged in user. + + + Invalid username supplied + + + User not found + + + + Get user by user name + + + successful operation + + + Invalid username supplied + + + User not found + + + + Logs user into the system + + + successful operation + + + Invalid username/password supplied + + + + Logs out current logged in user session + + + successful operation + + + + This can only be done by the logged in user. + + + Invalid user supplied + + + User not found + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. + + + + + \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md index 48f3b73ec03..fe559da5098 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md @@ -105,53 +105,52 @@ Class | Method | HTTP request | Description [*UserApi*](doc/UserApi.md) | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session [*UserApi*](doc/UserApi.md) | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user - ## Documentation For Models - - [AdditionalPropertiesClass](doc/AdditionalPropertiesClass.md) - - [Animal](doc/Animal.md) - - [ApiResponse](doc/ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc/ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc/ArrayOfNumberOnly.md) - - [ArrayTest](doc/ArrayTest.md) - - [Capitalization](doc/Capitalization.md) - - [Cat](doc/Cat.md) - - [CatAllOf](doc/CatAllOf.md) - - [Category](doc/Category.md) - - [ClassModel](doc/ClassModel.md) - - [Dog](doc/Dog.md) - - [DogAllOf](doc/DogAllOf.md) - - [EnumArrays](doc/EnumArrays.md) - - [EnumTest](doc/EnumTest.md) - - [FileSchemaTestClass](doc/FileSchemaTestClass.md) - - [Foo](doc/Foo.md) - - [FormatTest](doc/FormatTest.md) - - [HasOnlyReadOnly](doc/HasOnlyReadOnly.md) - - [HealthCheckResult](doc/HealthCheckResult.md) - - [InlineResponseDefault](doc/InlineResponseDefault.md) - - [MapTest](doc/MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc/MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc/Model200Response.md) - - [ModelClient](doc/ModelClient.md) - - [ModelEnumClass](doc/ModelEnumClass.md) - - [ModelFile](doc/ModelFile.md) - - [ModelList](doc/ModelList.md) - - [ModelReturn](doc/ModelReturn.md) - - [Name](doc/Name.md) - - [NullableClass](doc/NullableClass.md) - - [NumberOnly](doc/NumberOnly.md) - - [Order](doc/Order.md) - - [OuterComposite](doc/OuterComposite.md) - - [OuterEnum](doc/OuterEnum.md) - - [OuterEnumDefaultValue](doc/OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc/OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc/OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc/OuterObjectWithEnumProperty.md) - - [Pet](doc/Pet.md) - - [ReadOnlyFirst](doc/ReadOnlyFirst.md) - - [SpecialModelName](doc/SpecialModelName.md) - - [Tag](doc/Tag.md) - - [User](doc/User.md) + - [AdditionalPropertiesClass](doc\AdditionalPropertiesClass.md) + - [Animal](doc\Animal.md) + - [ApiResponse](doc\ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc\ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc\ArrayOfNumberOnly.md) + - [ArrayTest](doc\ArrayTest.md) + - [Capitalization](doc\Capitalization.md) + - [Cat](doc\Cat.md) + - [CatAllOf](doc\CatAllOf.md) + - [Category](doc\Category.md) + - [ClassModel](doc\ClassModel.md) + - [Dog](doc\Dog.md) + - [DogAllOf](doc\DogAllOf.md) + - [EnumArrays](doc\EnumArrays.md) + - [EnumTest](doc\EnumTest.md) + - [FileSchemaTestClass](doc\FileSchemaTestClass.md) + - [Foo](doc\Foo.md) + - [FormatTest](doc\FormatTest.md) + - [HasOnlyReadOnly](doc\HasOnlyReadOnly.md) + - [HealthCheckResult](doc\HealthCheckResult.md) + - [InlineResponseDefault](doc\InlineResponseDefault.md) + - [MapTest](doc\MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc\MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc\Model200Response.md) + - [ModelClient](doc\ModelClient.md) + - [ModelEnumClass](doc\ModelEnumClass.md) + - [ModelFile](doc\ModelFile.md) + - [ModelList](doc\ModelList.md) + - [ModelReturn](doc\ModelReturn.md) + - [Name](doc\Name.md) + - [NullableClass](doc\NullableClass.md) + - [NumberOnly](doc\NumberOnly.md) + - [Order](doc\Order.md) + - [OuterComposite](doc\OuterComposite.md) + - [OuterEnum](doc\OuterEnum.md) + - [OuterEnumDefaultValue](doc\OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc\OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc\OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc\OuterObjectWithEnumProperty.md) + - [Pet](doc\Pet.md) + - [ReadOnlyFirst](doc\ReadOnlyFirst.md) + - [SpecialModelName](doc\SpecialModelName.md) + - [Tag](doc\Tag.md) + - [User](doc\User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md index ac04fa9f72b..cd35141505e 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md @@ -82,12 +82,12 @@ Class | Method | HTTP request | Description ## Documentation For Models - - [ApiResponse](doc/ApiResponse.md) - - [Category](doc/Category.md) - - [Order](doc/Order.md) - - [Pet](doc/Pet.md) - - [Tag](doc/Tag.md) - - [User](doc/User.md) + - [ApiResponse](doc\ApiResponse.md) + - [Category](doc\Category.md) + - [Order](doc\Order.md) + - [Pet](doc\Pet.md) + - [Tag](doc\Tag.md) + - [User](doc\User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md index 22789ae7761..36738b4ade8 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md @@ -102,50 +102,50 @@ Class | Method | HTTP request | Description ## Documentation For Models - - [AdditionalPropertiesClass](doc/AdditionalPropertiesClass.md) - - [Animal](doc/Animal.md) - - [ApiResponse](doc/ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc/ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc/ArrayOfNumberOnly.md) - - [ArrayTest](doc/ArrayTest.md) - - [Capitalization](doc/Capitalization.md) - - [Cat](doc/Cat.md) - - [CatAllOf](doc/CatAllOf.md) - - [Category](doc/Category.md) - - [ClassModel](doc/ClassModel.md) - - [Dog](doc/Dog.md) - - [DogAllOf](doc/DogAllOf.md) - - [EnumArrays](doc/EnumArrays.md) - - [EnumTest](doc/EnumTest.md) - - [FileSchemaTestClass](doc/FileSchemaTestClass.md) - - [Foo](doc/Foo.md) - - [FormatTest](doc/FormatTest.md) - - [HasOnlyReadOnly](doc/HasOnlyReadOnly.md) - - [HealthCheckResult](doc/HealthCheckResult.md) - - [InlineResponseDefault](doc/InlineResponseDefault.md) - - [MapTest](doc/MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc/MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc/Model200Response.md) - - [ModelClient](doc/ModelClient.md) - - [ModelEnumClass](doc/ModelEnumClass.md) - - [ModelFile](doc/ModelFile.md) - - [ModelList](doc/ModelList.md) - - [ModelReturn](doc/ModelReturn.md) - - [Name](doc/Name.md) - - [NullableClass](doc/NullableClass.md) - - [NumberOnly](doc/NumberOnly.md) - - [Order](doc/Order.md) - - [OuterComposite](doc/OuterComposite.md) - - [OuterEnum](doc/OuterEnum.md) - - [OuterEnumDefaultValue](doc/OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc/OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc/OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc/OuterObjectWithEnumProperty.md) - - [Pet](doc/Pet.md) - - [ReadOnlyFirst](doc/ReadOnlyFirst.md) - - [SpecialModelName](doc/SpecialModelName.md) - - [Tag](doc/Tag.md) - - [User](doc/User.md) + - [AdditionalPropertiesClass](doc\AdditionalPropertiesClass.md) + - [Animal](doc\Animal.md) + - [ApiResponse](doc\ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc\ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc\ArrayOfNumberOnly.md) + - [ArrayTest](doc\ArrayTest.md) + - [Capitalization](doc\Capitalization.md) + - [Cat](doc\Cat.md) + - [CatAllOf](doc\CatAllOf.md) + - [Category](doc\Category.md) + - [ClassModel](doc\ClassModel.md) + - [Dog](doc\Dog.md) + - [DogAllOf](doc\DogAllOf.md) + - [EnumArrays](doc\EnumArrays.md) + - [EnumTest](doc\EnumTest.md) + - [FileSchemaTestClass](doc\FileSchemaTestClass.md) + - [Foo](doc\Foo.md) + - [FormatTest](doc\FormatTest.md) + - [HasOnlyReadOnly](doc\HasOnlyReadOnly.md) + - [HealthCheckResult](doc\HealthCheckResult.md) + - [InlineResponseDefault](doc\InlineResponseDefault.md) + - [MapTest](doc\MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc\MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc\Model200Response.md) + - [ModelClient](doc\ModelClient.md) + - [ModelEnumClass](doc\ModelEnumClass.md) + - [ModelFile](doc\ModelFile.md) + - [ModelList](doc\ModelList.md) + - [ModelReturn](doc\ModelReturn.md) + - [Name](doc\Name.md) + - [NullableClass](doc\NullableClass.md) + - [NumberOnly](doc\NumberOnly.md) + - [Order](doc\Order.md) + - [OuterComposite](doc\OuterComposite.md) + - [OuterEnum](doc\OuterEnum.md) + - [OuterEnumDefaultValue](doc\OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc\OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc\OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc\OuterObjectWithEnumProperty.md) + - [Pet](doc\Pet.md) + - [ReadOnlyFirst](doc\ReadOnlyFirst.md) + - [SpecialModelName](doc\SpecialModelName.md) + - [Tag](doc\Tag.md) + - [User](doc\User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md b/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md index 99bd229f3c5..18de35ccec0 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md @@ -60,36 +60,36 @@ All URIs are relative to *http://petstore.swagger.io/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*PetApi* | [**addPet**](doc\/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc\/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc\/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc\/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc\/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc\/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc\/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc\/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](doc\/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc\/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc\/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc\/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc\/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc\/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc\/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc\/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc\/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc\/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc\/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc\/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [ApiResponse](doc//ApiResponse.md) - - [Category](doc//Category.md) - - [Order](doc//Order.md) - - [Pet](doc//Pet.md) - - [Tag](doc//Tag.md) - - [User](doc//User.md) + - [ApiResponse](doc\/ApiResponse.md) + - [Category](doc\/Category.md) + - [Order](doc\/Order.md) + - [Pet](doc\/Pet.md) + - [Tag](doc\/Tag.md) + - [User](doc\/User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md index fe39c2f2126..9b39a96c6b7 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md @@ -58,94 +58,94 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc//AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc//DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc//FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc//FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc//FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc//FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc//FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc//FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc//FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc//FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc//FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc//FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc//FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc//FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc//FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc//FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc//FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc//FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc//FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc//PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc\/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc\/DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc\/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc\/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc\/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc\/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc\/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc\/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc\/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc\/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc\/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc\/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc\/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc\/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc\/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc\/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc\/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc\/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc\/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc\/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc\/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc\/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc\/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc\/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc\/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc\/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc\/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc\/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc\/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc\/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc\/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc\/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc\/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc\/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc\/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc\/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc\/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc\/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc\/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc\/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [AdditionalPropertiesClass](doc//AdditionalPropertiesClass.md) - - [Animal](doc//Animal.md) - - [ApiResponse](doc//ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc//ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc//ArrayOfNumberOnly.md) - - [ArrayTest](doc//ArrayTest.md) - - [Capitalization](doc//Capitalization.md) - - [Cat](doc//Cat.md) - - [CatAllOf](doc//CatAllOf.md) - - [Category](doc//Category.md) - - [ClassModel](doc//ClassModel.md) - - [Dog](doc//Dog.md) - - [DogAllOf](doc//DogAllOf.md) - - [EnumArrays](doc//EnumArrays.md) - - [EnumClass](doc//EnumClass.md) - - [EnumTest](doc//EnumTest.md) - - [FileSchemaTestClass](doc//FileSchemaTestClass.md) - - [Foo](doc//Foo.md) - - [FormatTest](doc//FormatTest.md) - - [HasOnlyReadOnly](doc//HasOnlyReadOnly.md) - - [HealthCheckResult](doc//HealthCheckResult.md) - - [InlineResponseDefault](doc//InlineResponseDefault.md) - - [MapTest](doc//MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc//MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc//Model200Response.md) - - [ModelClient](doc//ModelClient.md) - - [ModelFile](doc//ModelFile.md) - - [ModelList](doc//ModelList.md) - - [ModelReturn](doc//ModelReturn.md) - - [Name](doc//Name.md) - - [NullableClass](doc//NullableClass.md) - - [NumberOnly](doc//NumberOnly.md) - - [Order](doc//Order.md) - - [OuterComposite](doc//OuterComposite.md) - - [OuterEnum](doc//OuterEnum.md) - - [OuterEnumDefaultValue](doc//OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc//OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc//OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc//OuterObjectWithEnumProperty.md) - - [Pet](doc//Pet.md) - - [ReadOnlyFirst](doc//ReadOnlyFirst.md) - - [SpecialModelName](doc//SpecialModelName.md) - - [Tag](doc//Tag.md) - - [User](doc//User.md) + - [AdditionalPropertiesClass](doc\/AdditionalPropertiesClass.md) + - [Animal](doc\/Animal.md) + - [ApiResponse](doc\/ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc\/ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc\/ArrayOfNumberOnly.md) + - [ArrayTest](doc\/ArrayTest.md) + - [Capitalization](doc\/Capitalization.md) + - [Cat](doc\/Cat.md) + - [CatAllOf](doc\/CatAllOf.md) + - [Category](doc\/Category.md) + - [ClassModel](doc\/ClassModel.md) + - [Dog](doc\/Dog.md) + - [DogAllOf](doc\/DogAllOf.md) + - [EnumArrays](doc\/EnumArrays.md) + - [EnumClass](doc\/EnumClass.md) + - [EnumTest](doc\/EnumTest.md) + - [FileSchemaTestClass](doc\/FileSchemaTestClass.md) + - [Foo](doc\/Foo.md) + - [FormatTest](doc\/FormatTest.md) + - [HasOnlyReadOnly](doc\/HasOnlyReadOnly.md) + - [HealthCheckResult](doc\/HealthCheckResult.md) + - [InlineResponseDefault](doc\/InlineResponseDefault.md) + - [MapTest](doc\/MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc\/MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc\/Model200Response.md) + - [ModelClient](doc\/ModelClient.md) + - [ModelFile](doc\/ModelFile.md) + - [ModelList](doc\/ModelList.md) + - [ModelReturn](doc\/ModelReturn.md) + - [Name](doc\/Name.md) + - [NullableClass](doc\/NullableClass.md) + - [NumberOnly](doc\/NumberOnly.md) + - [Order](doc\/Order.md) + - [OuterComposite](doc\/OuterComposite.md) + - [OuterEnum](doc\/OuterEnum.md) + - [OuterEnumDefaultValue](doc\/OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc\/OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc\/OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc\/OuterObjectWithEnumProperty.md) + - [Pet](doc\/Pet.md) + - [ReadOnlyFirst](doc\/ReadOnlyFirst.md) + - [SpecialModelName](doc\/SpecialModelName.md) + - [Tag](doc\/Tag.md) + - [User](doc\/User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md index fe39c2f2126..9b39a96c6b7 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md @@ -58,94 +58,94 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc//AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc//DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc//FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc//FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc//FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc//FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc//FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc//FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc//FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc//FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc//FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc//FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc//FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc//FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc//FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc//FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc//FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc//FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc//FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc//PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc\/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc\/DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc\/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc\/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc\/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc\/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc\/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc\/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc\/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc\/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc\/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc\/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc\/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc\/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc\/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc\/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc\/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc\/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc\/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc\/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc\/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc\/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc\/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc\/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc\/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc\/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc\/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc\/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc\/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc\/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc\/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc\/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc\/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc\/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc\/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc\/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc\/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc\/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc\/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc\/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [AdditionalPropertiesClass](doc//AdditionalPropertiesClass.md) - - [Animal](doc//Animal.md) - - [ApiResponse](doc//ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc//ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc//ArrayOfNumberOnly.md) - - [ArrayTest](doc//ArrayTest.md) - - [Capitalization](doc//Capitalization.md) - - [Cat](doc//Cat.md) - - [CatAllOf](doc//CatAllOf.md) - - [Category](doc//Category.md) - - [ClassModel](doc//ClassModel.md) - - [Dog](doc//Dog.md) - - [DogAllOf](doc//DogAllOf.md) - - [EnumArrays](doc//EnumArrays.md) - - [EnumClass](doc//EnumClass.md) - - [EnumTest](doc//EnumTest.md) - - [FileSchemaTestClass](doc//FileSchemaTestClass.md) - - [Foo](doc//Foo.md) - - [FormatTest](doc//FormatTest.md) - - [HasOnlyReadOnly](doc//HasOnlyReadOnly.md) - - [HealthCheckResult](doc//HealthCheckResult.md) - - [InlineResponseDefault](doc//InlineResponseDefault.md) - - [MapTest](doc//MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc//MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc//Model200Response.md) - - [ModelClient](doc//ModelClient.md) - - [ModelFile](doc//ModelFile.md) - - [ModelList](doc//ModelList.md) - - [ModelReturn](doc//ModelReturn.md) - - [Name](doc//Name.md) - - [NullableClass](doc//NullableClass.md) - - [NumberOnly](doc//NumberOnly.md) - - [Order](doc//Order.md) - - [OuterComposite](doc//OuterComposite.md) - - [OuterEnum](doc//OuterEnum.md) - - [OuterEnumDefaultValue](doc//OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc//OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc//OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc//OuterObjectWithEnumProperty.md) - - [Pet](doc//Pet.md) - - [ReadOnlyFirst](doc//ReadOnlyFirst.md) - - [SpecialModelName](doc//SpecialModelName.md) - - [Tag](doc//Tag.md) - - [User](doc//User.md) + - [AdditionalPropertiesClass](doc\/AdditionalPropertiesClass.md) + - [Animal](doc\/Animal.md) + - [ApiResponse](doc\/ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc\/ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc\/ArrayOfNumberOnly.md) + - [ArrayTest](doc\/ArrayTest.md) + - [Capitalization](doc\/Capitalization.md) + - [Cat](doc\/Cat.md) + - [CatAllOf](doc\/CatAllOf.md) + - [Category](doc\/Category.md) + - [ClassModel](doc\/ClassModel.md) + - [Dog](doc\/Dog.md) + - [DogAllOf](doc\/DogAllOf.md) + - [EnumArrays](doc\/EnumArrays.md) + - [EnumClass](doc\/EnumClass.md) + - [EnumTest](doc\/EnumTest.md) + - [FileSchemaTestClass](doc\/FileSchemaTestClass.md) + - [Foo](doc\/Foo.md) + - [FormatTest](doc\/FormatTest.md) + - [HasOnlyReadOnly](doc\/HasOnlyReadOnly.md) + - [HealthCheckResult](doc\/HealthCheckResult.md) + - [InlineResponseDefault](doc\/InlineResponseDefault.md) + - [MapTest](doc\/MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc\/MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc\/Model200Response.md) + - [ModelClient](doc\/ModelClient.md) + - [ModelFile](doc\/ModelFile.md) + - [ModelList](doc\/ModelList.md) + - [ModelReturn](doc\/ModelReturn.md) + - [Name](doc\/Name.md) + - [NullableClass](doc\/NullableClass.md) + - [NumberOnly](doc\/NumberOnly.md) + - [Order](doc\/Order.md) + - [OuterComposite](doc\/OuterComposite.md) + - [OuterEnum](doc\/OuterEnum.md) + - [OuterEnumDefaultValue](doc\/OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc\/OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc\/OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc\/OuterObjectWithEnumProperty.md) + - [Pet](doc\/Pet.md) + - [ReadOnlyFirst](doc\/ReadOnlyFirst.md) + - [SpecialModelName](doc\/SpecialModelName.md) + - [Tag](doc\/Tag.md) + - [User](doc\/User.md) ## Documentation For Authorization diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs index d58ff968d3c..04aa969cb95 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -86,7 +86,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -225,7 +225,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; + exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs index 79c62f5c672..cb4da58b610 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs index 17fdac817ad..c4f77f108ac 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; + exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs index d58ff968d3c..04aa969cb95 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -86,7 +86,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -225,7 +225,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; + exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs index 79c62f5c672..cb4da58b610 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs index 17fdac817ad..c4f77f108ac 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; + exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs index 3162f82261b..c99e55e5f2d 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -48,7 +48,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(405); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -97,7 +97,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -161,7 +161,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -197,7 +197,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(405); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -247,7 +247,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; + exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs index 431fccf1905..881cd5107a9 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -128,7 +128,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs index 406c969ffb2..327c18b8687 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -134,7 +134,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; + exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs index 68722c6b4cb..6f7fae5e120 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -86,7 +86,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; + exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -225,7 +225,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; + exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs index 4503e177b9c..213f6a8479e 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; + exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs index 06ca8107d07..b4752ae73d1 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; + exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/php-slim4/README.md b/samples/server/petstore/php-slim4/README.md index 3f5c820198c..78d2322ebb7 100644 --- a/samples/server/petstore/php-slim4/README.md +++ b/samples/server/petstore/php-slim4/README.md @@ -168,10 +168,10 @@ Class | Method | HTTP request | Description ## Authentication ### Security schema `api_key` -> Important! To make ApiKey authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\ApiKeyAuthenticator](./src/Auth/ApiKeyAuthenticator.php) class. +> Important! To make ApiKey authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib\/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\ApiKeyAuthenticator](./src/Auth/ApiKeyAuthenticator.php) class. ### Security schema `petstore_auth` -> Important! To make OAuth authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\OAuthAuthenticator](./src/Auth/OAuthAuthenticator.php) class. +> Important! To make OAuth authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib\/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\OAuthAuthenticator](./src/Auth/OAuthAuthenticator.php) class. Scope list: * `write:pets` - modify pets in your account diff --git a/samples/server/petstore/php-slim4/phpunit.xml.dist b/samples/server/petstore/php-slim4/phpunit.xml.dist index 3efb4b45f4a..10eaa652957 100644 --- a/samples/server/petstore/php-slim4/phpunit.xml.dist +++ b/samples/server/petstore/php-slim4/phpunit.xml.dist @@ -21,9 +21,9 @@ - ./lib/Api + ./lib\/Api ./lib/BaseModel.php - ./lib/Model + ./lib\/Model diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist b/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist index e754829e628..40d39d2f5a8 100644 --- a/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist +++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist @@ -14,9 +14,9 @@ - ././Api - ././Model - ././Controller + ./.\/Api + ./.\/Model + ./.\/Controller diff --git a/samples/server/petstore/python-aiohttp-srclayout/setup.py b/samples/server/petstore/python-aiohttp-srclayout/setup.py index 6f62aec4414..600b620958c 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/setup.py +++ b/samples/server/petstore/python-aiohttp-srclayout/setup.py @@ -27,9 +27,9 @@ setup( url="", keywords=["OpenAPI", "OpenAPI Petstore"], install_requires=REQUIRES, - packages=find_packages("src/"), - package_dir={"": "src/"}, - package_data={'': ['src//openapi/openapi.yaml']}, + packages=find_packages("src\"), + package_dir={"": "src\"}, + package_data={'': ['src\/openapi/openapi.yaml']}, include_package_data=True, entry_points={ 'console_scripts': ['openapi_server=openapi_server.__main__:main']}, diff --git a/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py b/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py index 578bf18e982..63ba2f413d1 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py +++ b/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py @@ -12,7 +12,7 @@ def client(loop, aiohttp_client): "swagger_ui": True } specification_dir = os.path.join(os.path.dirname(__file__), '..', - "src/", + "src\", 'openapi_server', 'openapi') app = connexion.AioHttpApp(__name__, specification_dir=specification_dir, diff --git a/samples/server/petstore/python-aiohttp-srclayout/tox.ini b/samples/server/petstore/python-aiohttp-srclayout/tox.ini index 25d12bb84c0..3d847999b3c 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/tox.ini +++ b/samples/server/petstore/python-aiohttp-srclayout/tox.ini @@ -8,4 +8,4 @@ deps=-r{toxinidir}/requirements.txt {toxinidir} commands= - pytest --cov=src/openapi_server + pytest --cov=src\openapi_server From 28c3e1d544d22feb55b91781040e33988bcb5b4f Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 28 May 2021 10:26:48 +0800 Subject: [PATCH 060/192] update samples, docs --- docs/generators.md | 1 + docs/generators/fsharp-functions.md | 2 +- docs/generators/fsharp-giraffe-server.md | 2 +- docs/generators/java-inflector.md | 2 +- docs/generators/jaxrs-cxf-client.md | 2 +- docs/generators/swift5.md | 4 +- .../petstore/R/.openapi-generator/FILES | 2 +- .../.openapi-generator/FILES | 2 +- .../php/OpenAPIClient-php/phpunit.xml.dist | 4 +- samples/client/petstore/powershell/README.md | 12 +- .../petstore/powershell/docs/PSPetApi.md | 2 +- .../petstore/powershell/docs/PSStoreApi.md | 2 +- .../petstore/powershell/docs/PSUserApi.md | 2 +- .../default-v3.0/models/Capitalization.ts | 1 - .../petstore_client_lib_fake/README.md | 89 +++++----- .../dart-dio/petstore_client_lib/README.md | 12 +- .../petstore_client_lib_fake/README.md | 88 ++++----- .../dart2/petstore_client_lib/README.md | 52 +++--- .../dart2/petstore_client_lib_fake/README.md | 168 +++++++++--------- .../README.md | 168 +++++++++--------- .../Org.OpenAPITools/Controllers/PetApi.cs | 8 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- .../Org.OpenAPITools/Controllers/PetApi.cs | 8 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- .../Org.OpenAPITools/Controllers/PetApi.cs | 12 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- .../Org.OpenAPITools/Controllers/PetApi.cs | 8 +- .../Org.OpenAPITools/Controllers/StoreApi.cs | 4 +- .../Org.OpenAPITools/Controllers/UserApi.cs | 2 +- samples/server/petstore/php-slim4/README.md | 4 +- .../petstore/php-slim4/phpunit.xml.dist | 4 +- .../SymfonyBundle-php/phpunit.xml.dist | 6 +- .../python-aiohttp-srclayout/setup.py | 6 +- .../tests/conftest.py | 2 +- .../petstore/python-aiohttp-srclayout/tox.ini | 2 +- 38 files changed, 351 insertions(+), 350 deletions(-) diff --git a/docs/generators.md b/docs/generators.md index e667c369f36..59b26392bc0 100644 --- a/docs/generators.md +++ b/docs/generators.md @@ -142,6 +142,7 @@ The following generators are available: * [openapi](generators/openapi.md) * [openapi-yaml](generators/openapi-yaml.md) * [plantuml (beta)](generators/plantuml.md) +* [wsdl](generators/wsdl.md) ## SCHEMA generators diff --git a/docs/generators/fsharp-functions.md b/docs/generators/fsharp-functions.md index 2a81000a7fb..bb16f39fa77 100644 --- a/docs/generators/fsharp-functions.md +++ b/docs/generators/fsharp-functions.md @@ -22,7 +22,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |OpenAPI\src| +|sourceFolder|source folder for generated code| |OpenAPI/src| ## IMPORT MAPPING diff --git a/docs/generators/fsharp-giraffe-server.md b/docs/generators/fsharp-giraffe-server.md index 66150dbec0d..f374168aa71 100644 --- a/docs/generators/fsharp-giraffe-server.md +++ b/docs/generators/fsharp-giraffe-server.md @@ -19,7 +19,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |packageVersion|F# package version.| |1.0.0| |returnICollection|Return ICollection<T> instead of the concrete type.| |false| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |OpenAPI\src| +|sourceFolder|source folder for generated code| |OpenAPI/src| |useCollection|Deserialize array types to Collection<T> instead of List<T>.| |false| |useDateTimeOffset|Use DateTimeOffset to model date-time properties| |false| |useSwashbuckle|Uses the Swashbuckle.AspNetCore NuGet package for documentation.| |false| diff --git a/docs/generators/java-inflector.md b/docs/generators/java-inflector.md index 131b09f3f90..373bc61861b 100644 --- a/docs/generators/java-inflector.md +++ b/docs/generators/java-inflector.md @@ -48,7 +48,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |snapshotVersion|Uses a SNAPSHOT version.|
    **true**
    Use a SnapShot Version
    **false**
    Use a Release Version
    |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |src\gen\java| +|sourceFolder|source folder for generated code| |src/gen/java| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| ## IMPORT MAPPING diff --git a/docs/generators/jaxrs-cxf-client.md b/docs/generators/jaxrs-cxf-client.md index 25d03ea104b..fb3547c920d 100644 --- a/docs/generators/jaxrs-cxf-client.md +++ b/docs/generators/jaxrs-cxf-client.md @@ -48,7 +48,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |snapshotVersion|Uses a SNAPSHOT version.|
    **true**
    Use a SnapShot Version
    **false**
    Use a Release Version
    |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |src\gen\java| +|sourceFolder|source folder for generated code| |src/gen/java| |useBeanValidation|Use BeanValidation API annotations| |false| |useGenericResponse|Use generic response| |false| |useGzipFeatureForTests|Use Gzip Feature for tests| |false| diff --git a/docs/generators/swift5.md b/docs/generators/swift5.md index 2846d6de2b9..bace7f1f049 100644 --- a/docs/generators/swift5.md +++ b/docs/generators/swift5.md @@ -36,10 +36,10 @@ These options may be applied as additional-properties (cli) or configOptions (pl |responseAs|Optionally use libraries to manage response. Currently PromiseKit, RxSwift, Result, Combine are available.| |null| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|swiftPackagePath|Set a custom source path instead of OpenAPIClient\Classes\OpenAPIs.| |null| +|swiftPackagePath|Set a custom source path instead of OpenAPIClient/Classes/OpenAPIs.| |null| |swiftUseApiNamespace|Flag to make all the API classes inner-class of {{projectName}}API| |null| |useBacktickEscapes|Escape reserved words using backticks (default: false)| |false| -|useSPMFileStructure|Use SPM file structure and set the source path to Sources\{{projectName}} (default: false).| |null| +|useSPMFileStructure|Use SPM file structure and set the source path to Sources/{{projectName}} (default: false).| |null| ## IMPORT MAPPING diff --git a/samples/client/petstore/R/.openapi-generator/FILES b/samples/client/petstore/R/.openapi-generator/FILES index 5ec829dd19d..9385728f010 100644 --- a/samples/client/petstore/R/.openapi-generator/FILES +++ b/samples/client/petstore/R/.openapi-generator/FILES @@ -3,7 +3,6 @@ .travis.yml DESCRIPTION NAMESPACE -README.md R/api_client.R R/api_response.R R/category.R @@ -15,6 +14,7 @@ R/store_api.R R/tag.R R/user.R R/user_api.R +README.md docs/Category.md docs/ModelApiResponse.md docs/Order.md diff --git a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES index dcbafb2b319..fda1dc9138c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES +++ b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/FILES @@ -55,7 +55,6 @@ docs/Model/SpecialModelName.md docs/Model/Tag.md docs/Model/User.md git_push.sh -lib/ApiException.php lib/Api/AnotherFakeApi.php lib/Api/DefaultApi.php lib/Api/FakeApi.php @@ -63,6 +62,7 @@ lib/Api/FakeClassnameTags123Api.php lib/Api/PetApi.php lib/Api/StoreApi.php lib/Api/UserApi.php +lib/ApiException.php lib/Configuration.php lib/HeaderSelector.php lib/Model/AdditionalPropertiesClass.php diff --git a/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist b/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist index afbe167922d..3dd90bbe32c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist +++ b/samples/client/petstore/php/OpenAPIClient-php/phpunit.xml.dist @@ -13,8 +13,8 @@ - ./lib\/Api - ./lib\/Model + ./lib/Api + ./lib/Model diff --git a/samples/client/petstore/powershell/README.md b/samples/client/petstore/powershell/README.md index 45adbebb096..d394a82a0e9 100644 --- a/samples/client/petstore/powershell/README.md +++ b/samples/client/petstore/powershell/README.md @@ -79,12 +79,12 @@ Class | Method | HTTP request | Description ## Documentation for Models - - [PSPetstore\Model.ApiResponse](docs/ApiResponse.md) - - [PSPetstore\Model.Category](docs/Category.md) - - [PSPetstore\Model.Order](docs/Order.md) - - [PSPetstore\Model.Pet](docs/Pet.md) - - [PSPetstore\Model.Tag](docs/Tag.md) - - [PSPetstore\Model.User](docs/User.md) + - [PSPetstore/Model.ApiResponse](docs/ApiResponse.md) + - [PSPetstore/Model.Category](docs/Category.md) + - [PSPetstore/Model.Order](docs/Order.md) + - [PSPetstore/Model.Pet](docs/Pet.md) + - [PSPetstore/Model.Tag](docs/Tag.md) + - [PSPetstore/Model.User](docs/User.md) ## Documentation for Authorization diff --git a/samples/client/petstore/powershell/docs/PSPetApi.md b/samples/client/petstore/powershell/docs/PSPetApi.md index af5ef7d0ded..5b8c2a0f2e3 100644 --- a/samples/client/petstore/powershell/docs/PSPetApi.md +++ b/samples/client/petstore/powershell/docs/PSPetApi.md @@ -1,4 +1,4 @@ -# PSPetstore.PSPetstore\Api.PSPetApi +# PSPetstore.PSPetstore/Api.PSPetApi All URIs are relative to *http://petstore.swagger.io:80/v2* diff --git a/samples/client/petstore/powershell/docs/PSStoreApi.md b/samples/client/petstore/powershell/docs/PSStoreApi.md index 2ae1104846c..33b3541ced6 100644 --- a/samples/client/petstore/powershell/docs/PSStoreApi.md +++ b/samples/client/petstore/powershell/docs/PSStoreApi.md @@ -1,4 +1,4 @@ -# PSPetstore.PSPetstore\Api.PSStoreApi +# PSPetstore.PSPetstore/Api.PSStoreApi All URIs are relative to *http://petstore.swagger.io:80/v2* diff --git a/samples/client/petstore/powershell/docs/PSUserApi.md b/samples/client/petstore/powershell/docs/PSUserApi.md index 0288084bf1f..f008e292f2c 100644 --- a/samples/client/petstore/powershell/docs/PSUserApi.md +++ b/samples/client/petstore/powershell/docs/PSUserApi.md @@ -1,4 +1,4 @@ -# PSPetstore.PSPetstore\Api.PSUserApi +# PSPetstore.PSPetstore/Api.PSUserApi All URIs are relative to *http://petstore.swagger.io:80/v2* diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts index dbb703aad5e..72152fe0462 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Capitalization.ts @@ -51,7 +51,6 @@ export interface Capitalization { sCAETHFlowPoints?: string; /** * Name of the pet - * @type {string} * @memberof Capitalization */ diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md index fe559da5098..48f3b73ec03 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md @@ -105,52 +105,53 @@ Class | Method | HTTP request | Description [*UserApi*](doc/UserApi.md) | [**logoutUser**](doc/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session [*UserApi*](doc/UserApi.md) | [**updateUser**](doc/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user + ## Documentation For Models - - [AdditionalPropertiesClass](doc\AdditionalPropertiesClass.md) - - [Animal](doc\Animal.md) - - [ApiResponse](doc\ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc\ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc\ArrayOfNumberOnly.md) - - [ArrayTest](doc\ArrayTest.md) - - [Capitalization](doc\Capitalization.md) - - [Cat](doc\Cat.md) - - [CatAllOf](doc\CatAllOf.md) - - [Category](doc\Category.md) - - [ClassModel](doc\ClassModel.md) - - [Dog](doc\Dog.md) - - [DogAllOf](doc\DogAllOf.md) - - [EnumArrays](doc\EnumArrays.md) - - [EnumTest](doc\EnumTest.md) - - [FileSchemaTestClass](doc\FileSchemaTestClass.md) - - [Foo](doc\Foo.md) - - [FormatTest](doc\FormatTest.md) - - [HasOnlyReadOnly](doc\HasOnlyReadOnly.md) - - [HealthCheckResult](doc\HealthCheckResult.md) - - [InlineResponseDefault](doc\InlineResponseDefault.md) - - [MapTest](doc\MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc\MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc\Model200Response.md) - - [ModelClient](doc\ModelClient.md) - - [ModelEnumClass](doc\ModelEnumClass.md) - - [ModelFile](doc\ModelFile.md) - - [ModelList](doc\ModelList.md) - - [ModelReturn](doc\ModelReturn.md) - - [Name](doc\Name.md) - - [NullableClass](doc\NullableClass.md) - - [NumberOnly](doc\NumberOnly.md) - - [Order](doc\Order.md) - - [OuterComposite](doc\OuterComposite.md) - - [OuterEnum](doc\OuterEnum.md) - - [OuterEnumDefaultValue](doc\OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc\OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc\OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc\OuterObjectWithEnumProperty.md) - - [Pet](doc\Pet.md) - - [ReadOnlyFirst](doc\ReadOnlyFirst.md) - - [SpecialModelName](doc\SpecialModelName.md) - - [Tag](doc\Tag.md) - - [User](doc\User.md) + - [AdditionalPropertiesClass](doc/AdditionalPropertiesClass.md) + - [Animal](doc/Animal.md) + - [ApiResponse](doc/ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc/ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc/ArrayOfNumberOnly.md) + - [ArrayTest](doc/ArrayTest.md) + - [Capitalization](doc/Capitalization.md) + - [Cat](doc/Cat.md) + - [CatAllOf](doc/CatAllOf.md) + - [Category](doc/Category.md) + - [ClassModel](doc/ClassModel.md) + - [Dog](doc/Dog.md) + - [DogAllOf](doc/DogAllOf.md) + - [EnumArrays](doc/EnumArrays.md) + - [EnumTest](doc/EnumTest.md) + - [FileSchemaTestClass](doc/FileSchemaTestClass.md) + - [Foo](doc/Foo.md) + - [FormatTest](doc/FormatTest.md) + - [HasOnlyReadOnly](doc/HasOnlyReadOnly.md) + - [HealthCheckResult](doc/HealthCheckResult.md) + - [InlineResponseDefault](doc/InlineResponseDefault.md) + - [MapTest](doc/MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc/MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc/Model200Response.md) + - [ModelClient](doc/ModelClient.md) + - [ModelEnumClass](doc/ModelEnumClass.md) + - [ModelFile](doc/ModelFile.md) + - [ModelList](doc/ModelList.md) + - [ModelReturn](doc/ModelReturn.md) + - [Name](doc/Name.md) + - [NullableClass](doc/NullableClass.md) + - [NumberOnly](doc/NumberOnly.md) + - [Order](doc/Order.md) + - [OuterComposite](doc/OuterComposite.md) + - [OuterEnum](doc/OuterEnum.md) + - [OuterEnumDefaultValue](doc/OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc/OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc/OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc/OuterObjectWithEnumProperty.md) + - [Pet](doc/Pet.md) + - [ReadOnlyFirst](doc/ReadOnlyFirst.md) + - [SpecialModelName](doc/SpecialModelName.md) + - [Tag](doc/Tag.md) + - [User](doc/User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md index cd35141505e..ac04fa9f72b 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/README.md @@ -82,12 +82,12 @@ Class | Method | HTTP request | Description ## Documentation For Models - - [ApiResponse](doc\ApiResponse.md) - - [Category](doc\Category.md) - - [Order](doc\Order.md) - - [Pet](doc\Pet.md) - - [Tag](doc\Tag.md) - - [User](doc\User.md) + - [ApiResponse](doc/ApiResponse.md) + - [Category](doc/Category.md) + - [Order](doc/Order.md) + - [Pet](doc/Pet.md) + - [Tag](doc/Tag.md) + - [User](doc/User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md index 36738b4ade8..22789ae7761 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md @@ -102,50 +102,50 @@ Class | Method | HTTP request | Description ## Documentation For Models - - [AdditionalPropertiesClass](doc\AdditionalPropertiesClass.md) - - [Animal](doc\Animal.md) - - [ApiResponse](doc\ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc\ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc\ArrayOfNumberOnly.md) - - [ArrayTest](doc\ArrayTest.md) - - [Capitalization](doc\Capitalization.md) - - [Cat](doc\Cat.md) - - [CatAllOf](doc\CatAllOf.md) - - [Category](doc\Category.md) - - [ClassModel](doc\ClassModel.md) - - [Dog](doc\Dog.md) - - [DogAllOf](doc\DogAllOf.md) - - [EnumArrays](doc\EnumArrays.md) - - [EnumTest](doc\EnumTest.md) - - [FileSchemaTestClass](doc\FileSchemaTestClass.md) - - [Foo](doc\Foo.md) - - [FormatTest](doc\FormatTest.md) - - [HasOnlyReadOnly](doc\HasOnlyReadOnly.md) - - [HealthCheckResult](doc\HealthCheckResult.md) - - [InlineResponseDefault](doc\InlineResponseDefault.md) - - [MapTest](doc\MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc\MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc\Model200Response.md) - - [ModelClient](doc\ModelClient.md) - - [ModelEnumClass](doc\ModelEnumClass.md) - - [ModelFile](doc\ModelFile.md) - - [ModelList](doc\ModelList.md) - - [ModelReturn](doc\ModelReturn.md) - - [Name](doc\Name.md) - - [NullableClass](doc\NullableClass.md) - - [NumberOnly](doc\NumberOnly.md) - - [Order](doc\Order.md) - - [OuterComposite](doc\OuterComposite.md) - - [OuterEnum](doc\OuterEnum.md) - - [OuterEnumDefaultValue](doc\OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc\OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc\OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc\OuterObjectWithEnumProperty.md) - - [Pet](doc\Pet.md) - - [ReadOnlyFirst](doc\ReadOnlyFirst.md) - - [SpecialModelName](doc\SpecialModelName.md) - - [Tag](doc\Tag.md) - - [User](doc\User.md) + - [AdditionalPropertiesClass](doc/AdditionalPropertiesClass.md) + - [Animal](doc/Animal.md) + - [ApiResponse](doc/ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc/ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc/ArrayOfNumberOnly.md) + - [ArrayTest](doc/ArrayTest.md) + - [Capitalization](doc/Capitalization.md) + - [Cat](doc/Cat.md) + - [CatAllOf](doc/CatAllOf.md) + - [Category](doc/Category.md) + - [ClassModel](doc/ClassModel.md) + - [Dog](doc/Dog.md) + - [DogAllOf](doc/DogAllOf.md) + - [EnumArrays](doc/EnumArrays.md) + - [EnumTest](doc/EnumTest.md) + - [FileSchemaTestClass](doc/FileSchemaTestClass.md) + - [Foo](doc/Foo.md) + - [FormatTest](doc/FormatTest.md) + - [HasOnlyReadOnly](doc/HasOnlyReadOnly.md) + - [HealthCheckResult](doc/HealthCheckResult.md) + - [InlineResponseDefault](doc/InlineResponseDefault.md) + - [MapTest](doc/MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc/MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc/Model200Response.md) + - [ModelClient](doc/ModelClient.md) + - [ModelEnumClass](doc/ModelEnumClass.md) + - [ModelFile](doc/ModelFile.md) + - [ModelList](doc/ModelList.md) + - [ModelReturn](doc/ModelReturn.md) + - [Name](doc/Name.md) + - [NullableClass](doc/NullableClass.md) + - [NumberOnly](doc/NumberOnly.md) + - [Order](doc/Order.md) + - [OuterComposite](doc/OuterComposite.md) + - [OuterEnum](doc/OuterEnum.md) + - [OuterEnumDefaultValue](doc/OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc/OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc/OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc/OuterObjectWithEnumProperty.md) + - [Pet](doc/Pet.md) + - [ReadOnlyFirst](doc/ReadOnlyFirst.md) + - [SpecialModelName](doc/SpecialModelName.md) + - [Tag](doc/Tag.md) + - [User](doc/User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md b/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md index 18de35ccec0..99bd229f3c5 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/README.md @@ -60,36 +60,36 @@ All URIs are relative to *http://petstore.swagger.io/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*PetApi* | [**addPet**](doc\/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc\/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc\/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc\/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc\/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc\/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc\/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc\/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**deleteOrder**](doc\/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc\/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc\/StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc\/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc\/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc\/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc\/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc\/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc\/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc\/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc\/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc\/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [ApiResponse](doc\/ApiResponse.md) - - [Category](doc\/Category.md) - - [Order](doc\/Order.md) - - [Pet](doc\/Pet.md) - - [Tag](doc\/Tag.md) - - [User](doc\/User.md) + - [ApiResponse](doc//ApiResponse.md) + - [Category](doc//Category.md) + - [Order](doc//Order.md) + - [Pet](doc//Pet.md) + - [Tag](doc//Tag.md) + - [User](doc//User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md index 9b39a96c6b7..fe39c2f2126 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md @@ -58,94 +58,94 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc\/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc\/DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc\/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc\/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc\/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc\/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc\/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc\/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc\/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc\/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc\/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc\/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc\/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc\/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc\/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc\/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc\/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc\/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc\/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc\/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc\/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc\/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc\/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc\/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc\/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc\/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc\/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc\/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc\/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc\/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc\/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc\/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc\/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc\/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc\/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc\/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc\/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc\/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc\/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc\/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc//AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc//DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc//FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc//FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc//FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc//FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc//FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc//FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc//FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc//FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc//FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc//FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc//FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc//FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc//FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc//FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc//FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc//FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc//FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc//PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [AdditionalPropertiesClass](doc\/AdditionalPropertiesClass.md) - - [Animal](doc\/Animal.md) - - [ApiResponse](doc\/ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc\/ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc\/ArrayOfNumberOnly.md) - - [ArrayTest](doc\/ArrayTest.md) - - [Capitalization](doc\/Capitalization.md) - - [Cat](doc\/Cat.md) - - [CatAllOf](doc\/CatAllOf.md) - - [Category](doc\/Category.md) - - [ClassModel](doc\/ClassModel.md) - - [Dog](doc\/Dog.md) - - [DogAllOf](doc\/DogAllOf.md) - - [EnumArrays](doc\/EnumArrays.md) - - [EnumClass](doc\/EnumClass.md) - - [EnumTest](doc\/EnumTest.md) - - [FileSchemaTestClass](doc\/FileSchemaTestClass.md) - - [Foo](doc\/Foo.md) - - [FormatTest](doc\/FormatTest.md) - - [HasOnlyReadOnly](doc\/HasOnlyReadOnly.md) - - [HealthCheckResult](doc\/HealthCheckResult.md) - - [InlineResponseDefault](doc\/InlineResponseDefault.md) - - [MapTest](doc\/MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc\/MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc\/Model200Response.md) - - [ModelClient](doc\/ModelClient.md) - - [ModelFile](doc\/ModelFile.md) - - [ModelList](doc\/ModelList.md) - - [ModelReturn](doc\/ModelReturn.md) - - [Name](doc\/Name.md) - - [NullableClass](doc\/NullableClass.md) - - [NumberOnly](doc\/NumberOnly.md) - - [Order](doc\/Order.md) - - [OuterComposite](doc\/OuterComposite.md) - - [OuterEnum](doc\/OuterEnum.md) - - [OuterEnumDefaultValue](doc\/OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc\/OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc\/OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc\/OuterObjectWithEnumProperty.md) - - [Pet](doc\/Pet.md) - - [ReadOnlyFirst](doc\/ReadOnlyFirst.md) - - [SpecialModelName](doc\/SpecialModelName.md) - - [Tag](doc\/Tag.md) - - [User](doc\/User.md) + - [AdditionalPropertiesClass](doc//AdditionalPropertiesClass.md) + - [Animal](doc//Animal.md) + - [ApiResponse](doc//ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc//ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc//ArrayOfNumberOnly.md) + - [ArrayTest](doc//ArrayTest.md) + - [Capitalization](doc//Capitalization.md) + - [Cat](doc//Cat.md) + - [CatAllOf](doc//CatAllOf.md) + - [Category](doc//Category.md) + - [ClassModel](doc//ClassModel.md) + - [Dog](doc//Dog.md) + - [DogAllOf](doc//DogAllOf.md) + - [EnumArrays](doc//EnumArrays.md) + - [EnumClass](doc//EnumClass.md) + - [EnumTest](doc//EnumTest.md) + - [FileSchemaTestClass](doc//FileSchemaTestClass.md) + - [Foo](doc//Foo.md) + - [FormatTest](doc//FormatTest.md) + - [HasOnlyReadOnly](doc//HasOnlyReadOnly.md) + - [HealthCheckResult](doc//HealthCheckResult.md) + - [InlineResponseDefault](doc//InlineResponseDefault.md) + - [MapTest](doc//MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc//MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc//Model200Response.md) + - [ModelClient](doc//ModelClient.md) + - [ModelFile](doc//ModelFile.md) + - [ModelList](doc//ModelList.md) + - [ModelReturn](doc//ModelReturn.md) + - [Name](doc//Name.md) + - [NullableClass](doc//NullableClass.md) + - [NumberOnly](doc//NumberOnly.md) + - [Order](doc//Order.md) + - [OuterComposite](doc//OuterComposite.md) + - [OuterEnum](doc//OuterEnum.md) + - [OuterEnumDefaultValue](doc//OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc//OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc//OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc//OuterObjectWithEnumProperty.md) + - [Pet](doc//Pet.md) + - [ReadOnlyFirst](doc//ReadOnlyFirst.md) + - [SpecialModelName](doc//SpecialModelName.md) + - [Tag](doc//Tag.md) + - [User](doc//User.md) ## Documentation For Authorization diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md index 9b39a96c6b7..fe39c2f2126 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md @@ -58,94 +58,94 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AnotherFakeApi* | [**call123testSpecialTags**](doc\/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags -*DefaultApi* | [**fooGet**](doc\/DefaultApi.md#fooget) | **GET** /foo | -*FakeApi* | [**fakeHealthGet**](doc\/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint -*FakeApi* | [**fakeHttpSignatureTest**](doc\/FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication -*FakeApi* | [**fakeOuterBooleanSerialize**](doc\/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | -*FakeApi* | [**fakeOuterCompositeSerialize**](doc\/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | -*FakeApi* | [**fakeOuterNumberSerialize**](doc\/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | -*FakeApi* | [**fakeOuterStringSerialize**](doc\/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | -*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc\/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | -*FakeApi* | [**testBodyWithFileSchema**](doc\/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | -*FakeApi* | [**testBodyWithQueryParams**](doc\/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | -*FakeApi* | [**testClientModel**](doc\/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model -*FakeApi* | [**testEndpointParameters**](doc\/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*FakeApi* | [**testEnumParameters**](doc\/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters -*FakeApi* | [**testGroupParameters**](doc\/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) -*FakeApi* | [**testInlineAdditionalProperties**](doc\/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*FakeApi* | [**testJsonFormData**](doc\/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data -*FakeApi* | [**testQueryParameterCollectionFormat**](doc\/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | -*FakeClassnameTags123Api* | [**testClassname**](doc\/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case -*PetApi* | [**addPet**](doc\/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store -*PetApi* | [**deletePet**](doc\/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet -*PetApi* | [**findPetsByStatus**](doc\/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status -*PetApi* | [**findPetsByTags**](doc\/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags -*PetApi* | [**getPetById**](doc\/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID -*PetApi* | [**updatePet**](doc\/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet -*PetApi* | [**updatePetWithForm**](doc\/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**uploadFile**](doc\/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image -*PetApi* | [**uploadFileWithRequiredFile**](doc\/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) -*StoreApi* | [**deleteOrder**](doc\/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*StoreApi* | [**getInventory**](doc\/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status -*StoreApi* | [**getOrderById**](doc\/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID -*StoreApi* | [**placeOrder**](doc\/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet -*UserApi* | [**createUser**](doc\/UserApi.md#createuser) | **POST** /user | Create user -*UserApi* | [**createUsersWithArrayInput**](doc\/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**createUsersWithListInput**](doc\/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array -*UserApi* | [**deleteUser**](doc\/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user -*UserApi* | [**getUserByName**](doc\/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name -*UserApi* | [**loginUser**](doc\/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system -*UserApi* | [**logoutUser**](doc\/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session -*UserApi* | [**updateUser**](doc\/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user +*AnotherFakeApi* | [**call123testSpecialTags**](doc//AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**fooGet**](doc//DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**fakeHealthGet**](doc//FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**fakeHttpSignatureTest**](doc//FakeApi.md#fakehttpsignaturetest) | **GET** /fake/http-signature-test | test http signature authentication +*FakeApi* | [**fakeOuterBooleanSerialize**](doc//FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**fakeOuterCompositeSerialize**](doc//FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**fakeOuterNumberSerialize**](doc//FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**fakeOuterStringSerialize**](doc//FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc//FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithFileSchema**](doc//FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**testBodyWithQueryParams**](doc//FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**testClientModel**](doc//FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**testEndpointParameters**](doc//FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**testEnumParameters**](doc//FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**testGroupParameters**](doc//FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**testInlineAdditionalProperties**](doc//FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**testJsonFormData**](doc//FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**testQueryParameterCollectionFormat**](doc//FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**testClassname**](doc//FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**addPet**](doc//PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](doc//PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](doc//PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](doc//PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](doc//PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](doc//PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](doc//PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](doc//PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**uploadFileWithRequiredFile**](doc//PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**deleteOrder**](doc//StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**getInventory**](doc//StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](doc//StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**placeOrder**](doc//StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](doc//UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](doc//UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](doc//UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](doc//UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](doc//UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](doc//UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](doc//UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](doc//UserApi.md#updateuser) | **PUT** /user/{username} | Updated user ## Documentation For Models - - [AdditionalPropertiesClass](doc\/AdditionalPropertiesClass.md) - - [Animal](doc\/Animal.md) - - [ApiResponse](doc\/ApiResponse.md) - - [ArrayOfArrayOfNumberOnly](doc\/ArrayOfArrayOfNumberOnly.md) - - [ArrayOfNumberOnly](doc\/ArrayOfNumberOnly.md) - - [ArrayTest](doc\/ArrayTest.md) - - [Capitalization](doc\/Capitalization.md) - - [Cat](doc\/Cat.md) - - [CatAllOf](doc\/CatAllOf.md) - - [Category](doc\/Category.md) - - [ClassModel](doc\/ClassModel.md) - - [Dog](doc\/Dog.md) - - [DogAllOf](doc\/DogAllOf.md) - - [EnumArrays](doc\/EnumArrays.md) - - [EnumClass](doc\/EnumClass.md) - - [EnumTest](doc\/EnumTest.md) - - [FileSchemaTestClass](doc\/FileSchemaTestClass.md) - - [Foo](doc\/Foo.md) - - [FormatTest](doc\/FormatTest.md) - - [HasOnlyReadOnly](doc\/HasOnlyReadOnly.md) - - [HealthCheckResult](doc\/HealthCheckResult.md) - - [InlineResponseDefault](doc\/InlineResponseDefault.md) - - [MapTest](doc\/MapTest.md) - - [MixedPropertiesAndAdditionalPropertiesClass](doc\/MixedPropertiesAndAdditionalPropertiesClass.md) - - [Model200Response](doc\/Model200Response.md) - - [ModelClient](doc\/ModelClient.md) - - [ModelFile](doc\/ModelFile.md) - - [ModelList](doc\/ModelList.md) - - [ModelReturn](doc\/ModelReturn.md) - - [Name](doc\/Name.md) - - [NullableClass](doc\/NullableClass.md) - - [NumberOnly](doc\/NumberOnly.md) - - [Order](doc\/Order.md) - - [OuterComposite](doc\/OuterComposite.md) - - [OuterEnum](doc\/OuterEnum.md) - - [OuterEnumDefaultValue](doc\/OuterEnumDefaultValue.md) - - [OuterEnumInteger](doc\/OuterEnumInteger.md) - - [OuterEnumIntegerDefaultValue](doc\/OuterEnumIntegerDefaultValue.md) - - [OuterObjectWithEnumProperty](doc\/OuterObjectWithEnumProperty.md) - - [Pet](doc\/Pet.md) - - [ReadOnlyFirst](doc\/ReadOnlyFirst.md) - - [SpecialModelName](doc\/SpecialModelName.md) - - [Tag](doc\/Tag.md) - - [User](doc\/User.md) + - [AdditionalPropertiesClass](doc//AdditionalPropertiesClass.md) + - [Animal](doc//Animal.md) + - [ApiResponse](doc//ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](doc//ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](doc//ArrayOfNumberOnly.md) + - [ArrayTest](doc//ArrayTest.md) + - [Capitalization](doc//Capitalization.md) + - [Cat](doc//Cat.md) + - [CatAllOf](doc//CatAllOf.md) + - [Category](doc//Category.md) + - [ClassModel](doc//ClassModel.md) + - [Dog](doc//Dog.md) + - [DogAllOf](doc//DogAllOf.md) + - [EnumArrays](doc//EnumArrays.md) + - [EnumClass](doc//EnumClass.md) + - [EnumTest](doc//EnumTest.md) + - [FileSchemaTestClass](doc//FileSchemaTestClass.md) + - [Foo](doc//Foo.md) + - [FormatTest](doc//FormatTest.md) + - [HasOnlyReadOnly](doc//HasOnlyReadOnly.md) + - [HealthCheckResult](doc//HealthCheckResult.md) + - [InlineResponseDefault](doc//InlineResponseDefault.md) + - [MapTest](doc//MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](doc//MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](doc//Model200Response.md) + - [ModelClient](doc//ModelClient.md) + - [ModelFile](doc//ModelFile.md) + - [ModelList](doc//ModelList.md) + - [ModelReturn](doc//ModelReturn.md) + - [Name](doc//Name.md) + - [NullableClass](doc//NullableClass.md) + - [NumberOnly](doc//NumberOnly.md) + - [Order](doc//Order.md) + - [OuterComposite](doc//OuterComposite.md) + - [OuterEnum](doc//OuterEnum.md) + - [OuterEnumDefaultValue](doc//OuterEnumDefaultValue.md) + - [OuterEnumInteger](doc//OuterEnumInteger.md) + - [OuterEnumIntegerDefaultValue](doc//OuterEnumIntegerDefaultValue.md) + - [OuterObjectWithEnumProperty](doc//OuterObjectWithEnumProperty.md) + - [Pet](doc//Pet.md) + - [ReadOnlyFirst](doc//ReadOnlyFirst.md) + - [SpecialModelName](doc//SpecialModelName.md) + - [Tag](doc//Tag.md) + - [User](doc//User.md) ## Documentation For Authorization diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs index 04aa969cb95..d58ff968d3c 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -86,7 +86,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -225,7 +225,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; + exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs index cb4da58b610..79c62f5c672 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs index c4f77f108ac..17fdac817ad 100644 --- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; + exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs index 04aa969cb95..d58ff968d3c 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -86,7 +86,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -225,7 +225,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; + exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs index cb4da58b610..79c62f5c672 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs index c4f77f108ac..17fdac817ad 100644 --- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; + exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs index c99e55e5f2d..3162f82261b 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -48,7 +48,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(405); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -97,7 +97,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -161,7 +161,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -197,7 +197,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 405 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(405); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -247,7 +247,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; + exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs index 881cd5107a9..431fccf1905 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -128,7 +128,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs index 327c18b8687..406c969ffb2 100644 --- a/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore-5.0/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -134,7 +134,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; + exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs index 6f7fae5e120..68722c6b4cb 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs @@ -86,7 +86,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\r\n \"name\" : \"doggie\",\r\n \"id\" : 0,\r\n \"category\" : {\r\n \"name\" : \"name\",\r\n \"id\" : 6\r\n },\r\n \"tags\" : [ {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n }, {\r\n \"name\" : \"name\",\r\n \"id\" : 1\r\n } ],\r\n \"status\" : \"available\"\r\n}"; + exampleJson = "{\n \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ],\n \"name\" : \"doggie\",\n \"id\" : 0,\n \"category\" : {\n \"name\" : \"name\",\n \"id\" : 6\n },\n \"tags\" : [ {\n \"name\" : \"name\",\n \"id\" : 1\n }, {\n \"name\" : \"name\",\n \"id\" : 1\n } ],\n \"status\" : \"available\"\n}"; exampleJson = "\n 123456789\n doggie\n \n aeiou\n \n \n \n aeiou\n"; var example = exampleJson != null @@ -225,7 +225,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(ApiResponse)); string exampleJson = null; - exampleJson = "{\r\n \"code\" : 0,\r\n \"type\" : \"type\",\r\n \"message\" : \"message\"\r\n}"; + exampleJson = "{\n \"code\" : 0,\n \"type\" : \"type\",\n \"message\" : \"message\"\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs index 213f6a8479e..4503e177b9c 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 400 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(400); string exampleJson = null; - exampleJson = "{\r\n \"petId\" : 6,\r\n \"quantity\" : 1,\r\n \"id\" : 0,\r\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\r\n \"complete\" : false,\r\n \"status\" : \"placed\"\r\n}"; + exampleJson = "{\n \"petId\" : 6,\n \"quantity\" : 1,\n \"id\" : 0,\n \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\",\n \"complete\" : false,\n \"status\" : \"placed\"\n}"; exampleJson = "\n 123456789\n 123456789\n 123\n 2000-01-23T04:56:07.000Z\n aeiou\n true\n"; var example = exampleJson != null diff --git a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs index b4752ae73d1..06ca8107d07 100644 --- a/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs +++ b/samples/server/petstore/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs @@ -127,7 +127,7 @@ namespace Org.OpenAPITools.Controllers //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404); string exampleJson = null; - exampleJson = "{\r\n \"firstName\" : \"firstName\",\r\n \"lastName\" : \"lastName\",\r\n \"password\" : \"password\",\r\n \"userStatus\" : 6,\r\n \"phone\" : \"phone\",\r\n \"id\" : 0,\r\n \"email\" : \"email\",\r\n \"username\" : \"username\"\r\n}"; + exampleJson = "{\n \"firstName\" : \"firstName\",\n \"lastName\" : \"lastName\",\n \"password\" : \"password\",\n \"userStatus\" : 6,\n \"phone\" : \"phone\",\n \"id\" : 0,\n \"email\" : \"email\",\n \"username\" : \"username\"\n}"; exampleJson = "\n 123456789\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n aeiou\n 123\n"; var example = exampleJson != null diff --git a/samples/server/petstore/php-slim4/README.md b/samples/server/petstore/php-slim4/README.md index 78d2322ebb7..3f5c820198c 100644 --- a/samples/server/petstore/php-slim4/README.md +++ b/samples/server/petstore/php-slim4/README.md @@ -168,10 +168,10 @@ Class | Method | HTTP request | Description ## Authentication ### Security schema `api_key` -> Important! To make ApiKey authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib\/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\ApiKeyAuthenticator](./src/Auth/ApiKeyAuthenticator.php) class. +> Important! To make ApiKey authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\ApiKeyAuthenticator](./src/Auth/ApiKeyAuthenticator.php) class. ### Security schema `petstore_auth` -> Important! To make OAuth authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib\/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\OAuthAuthenticator](./src/Auth/OAuthAuthenticator.php) class. +> Important! To make OAuth authentication work you need to extend [\OpenAPIServer\Auth\AbstractAuthenticator](./lib/Auth/AbstractAuthenticator.php) class by [\OpenAPIServer\Auth\OAuthAuthenticator](./src/Auth/OAuthAuthenticator.php) class. Scope list: * `write:pets` - modify pets in your account diff --git a/samples/server/petstore/php-slim4/phpunit.xml.dist b/samples/server/petstore/php-slim4/phpunit.xml.dist index 10eaa652957..3efb4b45f4a 100644 --- a/samples/server/petstore/php-slim4/phpunit.xml.dist +++ b/samples/server/petstore/php-slim4/phpunit.xml.dist @@ -21,9 +21,9 @@ - ./lib\/Api + ./lib/Api ./lib/BaseModel.php - ./lib\/Model + ./lib/Model diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist b/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist index 40d39d2f5a8..e754829e628 100644 --- a/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist +++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/phpunit.xml.dist @@ -14,9 +14,9 @@ - ./.\/Api - ./.\/Model - ./.\/Controller + ././Api + ././Model + ././Controller diff --git a/samples/server/petstore/python-aiohttp-srclayout/setup.py b/samples/server/petstore/python-aiohttp-srclayout/setup.py index 600b620958c..6f62aec4414 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/setup.py +++ b/samples/server/petstore/python-aiohttp-srclayout/setup.py @@ -27,9 +27,9 @@ setup( url="", keywords=["OpenAPI", "OpenAPI Petstore"], install_requires=REQUIRES, - packages=find_packages("src\"), - package_dir={"": "src\"}, - package_data={'': ['src\/openapi/openapi.yaml']}, + packages=find_packages("src/"), + package_dir={"": "src/"}, + package_data={'': ['src//openapi/openapi.yaml']}, include_package_data=True, entry_points={ 'console_scripts': ['openapi_server=openapi_server.__main__:main']}, diff --git a/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py b/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py index 63ba2f413d1..578bf18e982 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py +++ b/samples/server/petstore/python-aiohttp-srclayout/tests/conftest.py @@ -12,7 +12,7 @@ def client(loop, aiohttp_client): "swagger_ui": True } specification_dir = os.path.join(os.path.dirname(__file__), '..', - "src\", + "src/", 'openapi_server', 'openapi') app = connexion.AioHttpApp(__name__, specification_dir=specification_dir, diff --git a/samples/server/petstore/python-aiohttp-srclayout/tox.ini b/samples/server/petstore/python-aiohttp-srclayout/tox.ini index 3d847999b3c..25d12bb84c0 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/tox.ini +++ b/samples/server/petstore/python-aiohttp-srclayout/tox.ini @@ -8,4 +8,4 @@ deps=-r{toxinidir}/requirements.txt {toxinidir} commands= - pytest --cov=src\openapi_server + pytest --cov=src/openapi_server From 763f65f2934b7d152c41c0a7a3c9e386fc09f9ad Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 28 May 2021 21:38:36 +0800 Subject: [PATCH 061/192] [Wsdl] minor improvements, bug fixes (#9613) * minor improvements to wsdl-schema gen * better code format * update readme --- README.md | 3 +- bin/configs/wsdl-schema.yaml | 6 + bin/configs/wsdl-spec.yaml | 6 - docs/generators.md | 2 +- docs/generators/{wsdl.md => wsdl-schema.md} | 4 +- .../languages/WsdlGeneratorCodegen.java | 264 ---------------- .../codegen/languages/WsdlSchemaCodegen.java | 287 ++++++++++++++++++ .../org.openapitools.codegen.CodegenConfig | 4 +- .../jaxb-customization.mustache | 0 .../wsdl-converter.mustache | 0 .../codegen/wsdl/WsdlGeneratorTest.java | 269 ---------------- .../codegen/wsdl/WsdlSchemaCodegenTest.java | 266 ++++++++++++++++ .../wsdl-schema}/.openapi-generator-ignore | 0 .../wsdl-schema}/.openapi-generator/FILES | 0 .../wsdl-schema}/.openapi-generator/VERSION | 0 .../wsdl-schema}/jaxb-customization.xml | 0 .../petstore/wsdl-schema}/service.wsdl | 0 17 files changed, 566 insertions(+), 545 deletions(-) create mode 100644 bin/configs/wsdl-schema.yaml delete mode 100644 bin/configs/wsdl-spec.yaml rename docs/generators/{wsdl.md => wsdl-schema.md} (98%) delete mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlGeneratorCodegen.java create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java rename modules/openapi-generator/src/main/resources/{wsdl => wsdl-schema}/jaxb-customization.mustache (100%) rename modules/openapi-generator/src/main/resources/{wsdl => wsdl-schema}/wsdl-converter.mustache (100%) delete mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/wsdl/WsdlGeneratorTest.java create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/wsdl/WsdlSchemaCodegenTest.java rename samples/{documentation/wsdl => schema/petstore/wsdl-schema}/.openapi-generator-ignore (100%) rename samples/{documentation/wsdl => schema/petstore/wsdl-schema}/.openapi-generator/FILES (100%) rename samples/{documentation/wsdl => schema/petstore/wsdl-schema}/.openapi-generator/VERSION (100%) rename samples/{documentation/wsdl => schema/petstore/wsdl-schema}/jaxb-customization.xml (100%) rename samples/{documentation/wsdl => schema/petstore/wsdl-schema}/service.wsdl (100%) diff --git a/README.md b/README.md index c034ec83e61..ff47c88ff23 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ OpenAPI Generator allows generation of API client libraries (SDK generation), se | **Server stubs** | **Ada**, **C#** (ASP.NET Core, NancyFx), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin, Echo), **Haskell** (Servant), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/)), **Kotlin** (Spring Boot, Ktor, Vertx), **PHP** (Laravel, Lumen, Slim, Silex, [Symfony](https://symfony.com/), [Zend Expressive](https://github.com/zendframework/zend-expressive)), **Python** (Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** (rust-server), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), Scalatra) | | **API documentation generators** | **HTML**, **Confluence Wiki**, **Asciidoc**, **Markdown**, **PlantUML** | | **Configuration files** | [**Apache2**](https://httpd.apache.org/) | -| **Others** | **GraphQL**, **JMeter**, **Ktorm**, **MySQL Schema**, **Protocol Buffer** | +| **Others** | **GraphQL**, **JMeter**, **Ktorm**, **MySQL Schema**, **Protocol Buffer**, **WSDL** | ## Table of contents @@ -972,6 +972,7 @@ Here is a list of template creators: * Ktorm: @Luiz-Monad * MySQL: @ybelenko * Protocol Buffer: @wing328 + * WSDL @adessoDpd :heart: = Link to support the contributor directly diff --git a/bin/configs/wsdl-schema.yaml b/bin/configs/wsdl-schema.yaml new file mode 100644 index 00000000000..29484b39dfe --- /dev/null +++ b/bin/configs/wsdl-schema.yaml @@ -0,0 +1,6 @@ +generatorName: wsdl-schema +outputDir: samples/schema/petstore/wsdl-schema +inputSpec: modules/openapi-generator/src/test/resources/3_0/wsdl/petstore.yaml +templateDir: modules/openapi-generator/src/main/resources/wsdl-schema +additionalProperties: + hideGenerationTimestamp: "true" diff --git a/bin/configs/wsdl-spec.yaml b/bin/configs/wsdl-spec.yaml deleted file mode 100644 index 2674412251d..00000000000 --- a/bin/configs/wsdl-spec.yaml +++ /dev/null @@ -1,6 +0,0 @@ -generatorName: wsdl -outputDir: samples/documentation/wsdl -inputSpec: modules/openapi-generator/src/test/resources/3_0/wsdl/petstore.yaml -templateDir: modules/openapi-generator/src/main/resources/wsdl -additionalProperties: - hideGenerationTimestamp: "true" diff --git a/docs/generators.md b/docs/generators.md index 59b26392bc0..f1cec8c6687 100644 --- a/docs/generators.md +++ b/docs/generators.md @@ -142,7 +142,6 @@ The following generators are available: * [openapi](generators/openapi.md) * [openapi-yaml](generators/openapi-yaml.md) * [plantuml (beta)](generators/plantuml.md) -* [wsdl](generators/wsdl.md) ## SCHEMA generators @@ -151,6 +150,7 @@ The following generators are available: * [ktorm-schema (beta)](generators/ktorm-schema.md) * [mysql-schema](generators/mysql-schema.md) * [protobuf-schema (beta)](generators/protobuf-schema.md) +* [wsdl-schema (beta)](generators/wsdl-schema.md) ## CONFIG generators diff --git a/docs/generators/wsdl.md b/docs/generators/wsdl-schema.md similarity index 98% rename from docs/generators/wsdl.md rename to docs/generators/wsdl-schema.md index 46d30e12393..7842f856749 100644 --- a/docs/generators/wsdl.md +++ b/docs/generators/wsdl-schema.md @@ -1,6 +1,6 @@ --- -title: Config Options for wsdl -sidebar_label: wsdl +title: Config Options for wsdl-schema +sidebar_label: wsdl-schema --- These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details. diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlGeneratorCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlGeneratorCodegen.java deleted file mode 100644 index d6493b524cc..00000000000 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlGeneratorCodegen.java +++ /dev/null @@ -1,264 +0,0 @@ -package org.openapitools.codegen.languages; - -import io.swagger.v3.oas.models.OpenAPI; -import io.swagger.v3.oas.models.info.Info; - -import java.io.File; -import java.text.Normalizer; -import java.util.List; -import java.util.ArrayList; -import java.util.Locale; -import java.util.Map; - -import org.openapitools.codegen.CliOption; -import org.openapitools.codegen.CodegenConfig; -import org.openapitools.codegen.CodegenModel; -import org.openapitools.codegen.CodegenOperation; -import org.openapitools.codegen.CodegenParameter; -import org.openapitools.codegen.CodegenProperty; -import org.openapitools.codegen.CodegenType; -import org.openapitools.codegen.DefaultCodegen; -import org.openapitools.codegen.SupportingFile; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class WsdlGeneratorCodegen extends DefaultCodegen implements CodegenConfig { - public static final String PROJECT_NAME = "projectName"; - - static final Logger LOGGER = LoggerFactory.getLogger(WsdlGeneratorCodegen.class); - - public CodegenType getTag() { - return CodegenType.DOCUMENTATION; - } - - public String getName() { - return "wsdl"; - } - - public String getHelp() { - return "Generates a wsdl-spec documentation."; - } - - public WsdlGeneratorCodegen() { - super(); - - outputFolder = "generated-code" + File.separator + "wsdl-spec"; - embeddedTemplateDir = templateDir = "wsdl"; - apiPackage = "Apis"; - modelPackage = "Models"; - - cliOptions.add(new CliOption("hostname", "the hostname of the service")); - cliOptions.add(new CliOption("soapPath", "basepath of the soap services")); - cliOptions.add(new CliOption("serviceName", "service name for the wsdl")); - - additionalProperties.put("hostname", "localhost"); - additionalProperties.put("soapPath", "soap"); - additionalProperties.put("serviceName", "ServiceV1"); - - supportingFiles.add(new SupportingFile("wsdl-converter.mustache", "", "service.wsdl")); - supportingFiles.add(new SupportingFile("jaxb-customization.mustache", "", - "jaxb-customization.xml")); - } - - public void preprocessOpenAPI(OpenAPI openAPI) { - Info info = openAPI.getInfo(); - - String title = info.getTitle(); - String description = info.getDescription(); - - info.setDescription(this.processOpenapiSpecDescription(description)); - info.setTitle(this.escapeTitle(title)); - } - - private String escapeTitle(String title) { - // strip umlauts etc. - final String normalizedTitle = Normalizer.normalize(title, Normalizer.Form.NFD) - .replaceAll("[^\\p{ASCII}]", ""); - return super.escapeUnsafeCharacters(normalizedTitle); - } - - public String processOpenapiSpecDescription(String description) { - if (description != null) { - return description.replaceAll("\\s+", " "); - } else { - return "No description provided"; - } - } - - @Override - public Map postProcessOperationsWithModels(Map objs, - List allModels) { - - Map operations = (Map) objs.get("operations"); - List operationList = (List) operations.get("operation"); - for (CodegenOperation op : operationList) { - op.operationId = this.generateOperationId(op); - - // for xml compliant primitives, lowercase dataType of openapi - for (CodegenParameter param : op.allParams) { - Map paramVendorExtensions = param.vendorExtensions; - - normalizeDataType(param); - - // prevent default="null" in wsdl-tag if no default was specified for a param - if ("null".equals(param.defaultValue) || param.defaultValue == null) { - paramVendorExtensions.put("x-param-has-defaultvalue", false); - } else { - paramVendorExtensions.put("x-param-has-defaultvalue", true); - } - - // check if param has a minimum or maximum number or lenght - if (param.minimum != null - || param.maximum != null - || param.minLength != null - || param.maxLength != null) { - paramVendorExtensions.put("x-param-has-minormax", true); - } else { - paramVendorExtensions.put("x-param-has-minormax", false); - } - - // if param is enum, uppercase 'baseName' to have a reference to wsdl simpletype - if (param.isEnum) { - char[] c = param.baseName.toCharArray(); - c[0] = Character.toUpperCase(c[0]); - param.baseName = new String(c); - } - } - - for (CodegenParameter param : op.bodyParams) { - normalizeDataType(param); - } - for (CodegenParameter param : op.pathParams) { - normalizeDataType(param); - } - for (CodegenParameter param : op.queryParams) { - normalizeDataType(param); - } - for (CodegenParameter param : op.formParams) { - normalizeDataType(param); - } - } - - return objs; - } - - private void normalizeDataType(CodegenParameter param) { - if (param.isPrimitiveType) { - param.dataType = param.dataType.toLowerCase(Locale.getDefault()); - } - if (param.dataFormat != null && param.dataFormat.equalsIgnoreCase("date")) { - param.dataType = "date"; - } - if (param.dataFormat != null && param.dataFormat.equalsIgnoreCase("date-time")) { - param.dataType = "dateTime"; - } - if (param.dataFormat != null && param.dataFormat.equalsIgnoreCase("uuid")) { - param.dataType = "string"; - } - } - - @Override - public Map postProcessModels(Map objs) { - List models = (List) objs.get("models"); - - for (Object mo : models) { - Map mod = (Map) mo; - CodegenModel model = (CodegenModel) mod.get("model"); - Map modelVendorExtensions = model.getVendorExtensions(); - - /* check if model is a model with no properties - * Used in the mustache template to ensure that no complextype is created - * if model is just a schema with an enum defined in the openapi specification - */ - if (model.allowableValues != null) { - modelVendorExtensions.put("x-is-openapimodel-enum", true); - } else { - modelVendorExtensions.put("x-is-openapimodel-enum", false); - } - - for (CodegenProperty var : model.vars) { - Map propertyVendorExtensions = var.getVendorExtensions(); - - // lowercase basetypes if openapitype is string - if (var.openApiType == "string") { - char[] c = var.baseType.toCharArray(); - c[0] = Character.toLowerCase(c[0]); - var.baseType = new String(c); - } - // if string enum, uppercase 'name' to have a reference to wsdl simpletype - if (var.isEnum) { - char[] c = var.name.toCharArray(); - c[0] = Character.toUpperCase(c[0]); - var.name = new String(c); - } - - // prevent default="null" in wsdl-tag if no default was specified for a property - if ("null".equals(var.defaultValue) || var.defaultValue == null) { - propertyVendorExtensions.put("x-prop-has-defaultvalue", false); - } else { - propertyVendorExtensions.put("x-prop-has-defaultvalue", true); - } - - // check if model property has a minimum or maximum number or lenght - if (var.minimum != null - || var.maximum != null - || var.minLength != null - || var.maxLength != null) { - propertyVendorExtensions.put("x-prop-has-minormax", true); - } else { - propertyVendorExtensions.put("x-prop-has-minormax", false); - } - } - } - return super.postProcessModelsEnum(objs); - } - - public String generateOperationId(CodegenOperation op) { - String newOperationid = this.lowerCaseStringExceptFirstLetter(op.httpMethod); - String[] pathElements = op.path.split("/"); - List pathParameters = new ArrayList(); - - for (int i = 0; i < pathElements.length; i++) { - if (pathElements[i].contains("{")) { - pathParameters.add(pathElements[i]); - pathElements[i] = ""; - } - if (pathElements[i].length() > 0) { - newOperationid = newOperationid + this.lowerCaseStringExceptFirstLetter(pathElements[i]); - } - } - - if (pathParameters.size() > 0) { - for (int i = 0; i < pathParameters.size(); i++) { - String pathParameter = pathParameters.get(i); - pathParameter = this.lowerCaseStringExceptFirstLetter(pathParameter - .substring(1, pathParameter.length() - 1)); - if (i == 0) { - newOperationid = newOperationid + "By" + pathParameter; - } else { - newOperationid = newOperationid + "And" + pathParameter; - } - } - } - return newOperationid; - } - - public String lowerCaseStringExceptFirstLetter(String value) { - String newOperationid = value.toLowerCase(Locale.getDefault()); - return newOperationid.substring(0, 1).toUpperCase(Locale.getDefault()) - + newOperationid.substring(1); - } - - @Override - public String escapeQuotationMark(String input) { - // just return the original string - return input; - } - - @Override - public String escapeUnsafeCharacters(String input) { - // just return the original string - return input; - } -} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java new file mode 100644 index 00000000000..7bee8aee42a --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java @@ -0,0 +1,287 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openapitools.codegen.languages; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; + +import java.io.File; +import java.text.Normalizer; +import java.util.List; +import java.util.ArrayList; +import java.util.Locale; +import java.util.Map; + +import org.openapitools.codegen.CliOption; +import org.openapitools.codegen.CodegenConfig; +import org.openapitools.codegen.CodegenModel; +import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.CodegenParameter; +import org.openapitools.codegen.CodegenProperty; +import org.openapitools.codegen.CodegenType; +import org.openapitools.codegen.DefaultCodegen; +import org.openapitools.codegen.meta.GeneratorMetadata; +import org.openapitools.codegen.meta.Stability; +import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.SupportingFile; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class WsdlSchemaCodegen extends DefaultCodegen implements CodegenConfig { + public static final String PROJECT_NAME = "projectName"; + + static final Logger LOGGER = LoggerFactory.getLogger(WsdlSchemaCodegen.class); + + public CodegenType getTag() { + return CodegenType.SCHEMA; + } + + public String getName() { + return "wsdl-schema"; + } + + public String getHelp() { + return "Generates WSDL files."; + } + + public WsdlSchemaCodegen() { + super(); + + generatorMetadata = GeneratorMetadata.newBuilder(generatorMetadata) + .stability(Stability.BETA) + .build(); + + outputFolder = "generated-code" + File.separator + "wsdl-schema"; + embeddedTemplateDir = templateDir = "wsdl-schema"; + apiPackage = "Apis"; + modelPackage = "Models"; + + cliOptions.add(new CliOption("hostname", "the hostname of the service")); + cliOptions.add(new CliOption("soapPath", "basepath of the soap services")); + cliOptions.add(new CliOption("serviceName", "service name for the wsdl")); + + additionalProperties.put("hostname", "localhost"); + additionalProperties.put("soapPath", "soap"); + additionalProperties.put("serviceName", "ServiceV1"); + + supportingFiles.add(new SupportingFile("wsdl-converter.mustache", "", "service.wsdl")); + supportingFiles.add(new SupportingFile("jaxb-customization.mustache", "", + "jaxb-customization.xml")); + } + + public void preprocessOpenAPI(OpenAPI openAPI) { + Info info = openAPI.getInfo(); + + String title = info.getTitle(); + String description = info.getDescription(); + + info.setDescription(this.processOpenapiSpecDescription(description)); + info.setTitle(this.escapeTitle(title)); + } + + private String escapeTitle(String title) { + // strip umlauts etc. + final String normalizedTitle = Normalizer.normalize(title, Normalizer.Form.NFD) + .replaceAll("[^\\p{ASCII}]", ""); + return super.escapeUnsafeCharacters(normalizedTitle); + } + + public String processOpenapiSpecDescription(String description) { + if (description != null) { + return description.replaceAll("\\s+", " "); + } else { + return "No description provided"; + } + } + + @Override + public Map postProcessOperationsWithModels(Map objs, + List allModels) { + + Map operations = (Map) objs.get("operations"); + List operationList = (List) operations.get("operation"); + for (CodegenOperation op : operationList) { + op.operationId = this.generateOperationId(op); + + // for xml compliant primitives, lowercase dataType of openapi + for (CodegenParameter param : op.allParams) { + Map paramVendorExtensions = param.vendorExtensions; + + normalizeDataType(param); + + // prevent default="null" in wsdl-tag if no default was specified for a param + if ("null".equals(param.defaultValue) || param.defaultValue == null) { + paramVendorExtensions.put("x-param-has-defaultvalue", false); + } else { + paramVendorExtensions.put("x-param-has-defaultvalue", true); + } + + // check if param has a minimum or maximum number or lenght + if (param.minimum != null + || param.maximum != null + || param.minLength != null + || param.maxLength != null) { + paramVendorExtensions.put("x-param-has-minormax", true); + } else { + paramVendorExtensions.put("x-param-has-minormax", false); + } + + // if param is enum, uppercase 'baseName' to have a reference to wsdl simpletype + if (param.isEnum) { + char[] c = param.baseName.toCharArray(); + c[0] = Character.toUpperCase(c[0]); + param.baseName = new String(c); + } + } + + for (CodegenParameter param : op.bodyParams) { + normalizeDataType(param); + } + for (CodegenParameter param : op.pathParams) { + normalizeDataType(param); + } + for (CodegenParameter param : op.queryParams) { + normalizeDataType(param); + } + for (CodegenParameter param : op.formParams) { + normalizeDataType(param); + } + } + + return objs; + } + + private void normalizeDataType(CodegenParameter param) { + if (param.isPrimitiveType) { + param.dataType = param.dataType.toLowerCase(Locale.getDefault()); + } + if (param.dataFormat != null && param.dataFormat.equalsIgnoreCase("date")) { + param.dataType = "date"; + } + if (param.dataFormat != null && param.dataFormat.equalsIgnoreCase("date-time")) { + param.dataType = "dateTime"; + } + if (param.dataFormat != null && param.dataFormat.equalsIgnoreCase("uuid")) { + param.dataType = "string"; + } + } + + @Override + public Map postProcessModels(Map objs) { + List models = (List) objs.get("models"); + + for (Object mo : models) { + Map mod = (Map) mo; + CodegenModel model = (CodegenModel) mod.get("model"); + Map modelVendorExtensions = model.getVendorExtensions(); + + /* check if model is a model with no properties + * Used in the mustache template to ensure that no complextype is created + * if model is just a schema with an enum defined in the openapi specification + */ + if (model.allowableValues != null) { + modelVendorExtensions.put("x-is-openapimodel-enum", true); + } else { + modelVendorExtensions.put("x-is-openapimodel-enum", false); + } + + for (CodegenProperty var : model.vars) { + Map propertyVendorExtensions = var.getVendorExtensions(); + + // lowercase basetypes if openapitype is string + if ("string".equals(var.openApiType)) { + char[] c = var.baseType.toCharArray(); + c[0] = Character.toLowerCase(c[0]); + var.baseType = new String(c); + } + // if string enum, uppercase 'name' to have a reference to wsdl simpletype + if (var.isEnum) { + char[] c = var.name.toCharArray(); + c[0] = Character.toUpperCase(c[0]); + var.name = new String(c); + } + + // prevent default="null" in wsdl-tag if no default was specified for a property + if ("null".equals(var.defaultValue) || var.defaultValue == null) { + propertyVendorExtensions.put("x-prop-has-defaultvalue", false); + } else { + propertyVendorExtensions.put("x-prop-has-defaultvalue", true); + } + + // check if model property has a minimum or maximum number or lenght + if (var.minimum != null + || var.maximum != null + || var.minLength != null + || var.maxLength != null) { + propertyVendorExtensions.put("x-prop-has-minormax", true); + } else { + propertyVendorExtensions.put("x-prop-has-minormax", false); + } + } + } + return super.postProcessModelsEnum(objs); + } + + public String generateOperationId(CodegenOperation op) { + String newOperationid = this.lowerCaseStringExceptFirstLetter(op.httpMethod); + String[] pathElements = op.path.split("/"); + List pathParameters = new ArrayList(); + + for (int i = 0; i < pathElements.length; i++) { + if (pathElements[i].contains("{")) { + pathParameters.add(pathElements[i]); + pathElements[i] = ""; + } + if (pathElements[i].length() > 0) { + newOperationid = newOperationid + this.lowerCaseStringExceptFirstLetter(pathElements[i]); + } + } + + if (pathParameters.size() > 0) { + for (int i = 0; i < pathParameters.size(); i++) { + String pathParameter = pathParameters.get(i); + pathParameter = this.lowerCaseStringExceptFirstLetter(pathParameter + .substring(1, pathParameter.length() - 1)); + if (i == 0) { + newOperationid = newOperationid + "By" + pathParameter; + } else { + newOperationid = newOperationid + "And" + pathParameter; + } + } + } + return newOperationid; + } + + public String lowerCaseStringExceptFirstLetter(String value) { + String newOperationid = value.toLowerCase(Locale.getDefault()); + return newOperationid.substring(0, 1).toUpperCase(Locale.getDefault()) + + newOperationid.substring(1); + } + + @Override + public String escapeQuotationMark(String input) { + // just return the original string + return input; + } + + @Override + public String escapeUnsafeCharacters(String input) { + // just return the original string + return input; + } +} diff --git a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig index 6a0ecf94cba..9d6b52d6fc3 100644 --- a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig +++ b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig @@ -38,6 +38,7 @@ org.openapitools.codegen.languages.FsharpFunctionsServerCodegen org.openapitools.codegen.languages.FsharpGiraffeServerCodegen org.openapitools.codegen.languages.GoClientCodegen org.openapitools.codegen.languages.GoDeprecatedClientCodegen +org.openapitools.codegen.languages.GoEchoServerCodegen org.openapitools.codegen.languages.GoServerCodegen org.openapitools.codegen.languages.GoGinServerCodegen org.openapitools.codegen.languages.GraphQLSchemaCodegen @@ -133,5 +134,4 @@ org.openapitools.codegen.languages.TypeScriptNestjsClientCodegen org.openapitools.codegen.languages.TypeScriptNodeClientCodegen org.openapitools.codegen.languages.TypeScriptReduxQueryClientCodegen org.openapitools.codegen.languages.TypeScriptRxjsClientCodegen -org.openapitools.codegen.languages.GoEchoServerCodegen -org.openapitools.codegen.languages.WsdlGeneratorCodegen +org.openapitools.codegen.languages.WsdlSchemaCodegen diff --git a/modules/openapi-generator/src/main/resources/wsdl/jaxb-customization.mustache b/modules/openapi-generator/src/main/resources/wsdl-schema/jaxb-customization.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/wsdl/jaxb-customization.mustache rename to modules/openapi-generator/src/main/resources/wsdl-schema/jaxb-customization.mustache diff --git a/modules/openapi-generator/src/main/resources/wsdl/wsdl-converter.mustache b/modules/openapi-generator/src/main/resources/wsdl-schema/wsdl-converter.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/wsdl/wsdl-converter.mustache rename to modules/openapi-generator/src/main/resources/wsdl-schema/wsdl-converter.mustache diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/wsdl/WsdlGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/wsdl/WsdlGeneratorTest.java deleted file mode 100644 index 439165ac4c4..00000000000 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/wsdl/WsdlGeneratorTest.java +++ /dev/null @@ -1,269 +0,0 @@ -package org.openapitools.codegen.wsdl; - -import io.swagger.v3.oas.models.OpenAPI; -import io.swagger.v3.oas.models.Operation; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.List; - -import org.apache.commons.io.FileUtils; - -import org.openapitools.codegen.ClientOptInput; -import org.openapitools.codegen.CodegenOperation; -import org.openapitools.codegen.DefaultGenerator; -import org.openapitools.codegen.TestUtils; -import org.openapitools.codegen.languages.WsdlGeneratorCodegen; - -import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import static org.openapitools.codegen.TestUtils.assertFileContains; -import static org.openapitools.codegen.TestUtils.ensureContainsFile; - -public class WsdlGeneratorTest { - private OpenAPI openAPI; - private File outputDirectory; - private String outputPath; - private List listOfFiles; - - @BeforeClass - public void setUp() throws IOException { - this.openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/wsdl/petstore.yaml"); - this.outputDirectory = Files.createTempDirectory("test").toFile().getCanonicalFile(); - this.outputPath = this.outputDirectory.getAbsolutePath().replace('\\', '/'); - - WsdlGeneratorCodegen codegen = new WsdlGeneratorCodegen(); - codegen.setOutputDir(this.outputDirectory.getAbsolutePath()); - - ClientOptInput input = new ClientOptInput() - .openAPI(this.openAPI) - .config(codegen); - - DefaultGenerator generator = new DefaultGenerator(); - this.listOfFiles = generator.opts(input).generate(); - } - - @Test(description = "ensure that the operationid has been generated correctly") - public void testOperationIdGeneration() { - final OpenAPI openAPI = this.openAPI; - WsdlGeneratorCodegen codegen = new WsdlGeneratorCodegen(); - codegen.setOpenAPI(openAPI); - - String requestPathWithId = "/store/order/{orderId}"; - Operation textOperationGet = openAPI.getPaths().get(requestPathWithId).getGet(); - CodegenOperation opGet = codegen.fromOperation(requestPathWithId, "get", textOperationGet, null); - String newOperationIdWithId = codegen.generateOperationId(opGet); - - String requestPathWithoutId = "/store/order"; - Operation textOperationPost = openAPI.getPaths().get(requestPathWithoutId).getPost(); - CodegenOperation opPost = codegen.fromOperation(requestPathWithoutId, "post", textOperationPost, null); - String newOperationIdWithoutId = codegen.generateOperationId(opPost); - - Assert.assertEquals(newOperationIdWithId, "GetStoreOrderByOrderid"); - Assert.assertEquals(newOperationIdWithoutId, "PostStoreOrder"); - } - - @Test(description = "Ensure that passed strings are processed correcly by this method") - public void testLowerCaseStringExceptFirstLetter() { - WsdlGeneratorCodegen codegen = new WsdlGeneratorCodegen(); - String value = codegen.lowerCaseStringExceptFirstLetter("uploadPetByPathId"); - - Assert.assertEquals(value, "Uploadpetbypathid"); - } - - @Test(description = "Check if element tags has been created for an operation ") - public void testIfElementTagsExist() { - String xsElementRequestMessage = - ""; - String xsElementResponseMessage = - ""; - String xsElementErrorResponse = - " \n" - + " \n" - + " Invalid input\n" - + " \n" - + " \n"; - - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), xsElementRequestMessage); - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), xsElementResponseMessage); - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), xsElementErrorResponse); - } - - @Test(description = "Check if complexType input- and output-message has been created for an operation ") - public void testIfInputAndResponseMessageExist() { - String complexTypeRequestMessage = - " \n" - + " \n" - + " \n" - + " \n" - + " ID of pet to return\n" - + " \n" - + " \n" - + " \n" - + " \n"; - - String complexTypeResponseMessage = - " \n" - + " \n" - + " \n" - + " \n" - + " successful operation\n" - + " \n" - + " \n" - + " \n" - + " \n"; - - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), complexTypeRequestMessage); - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), complexTypeResponseMessage); - } - - @Test(description = - "Check if complexType RequestMessage with minimum and maximum restriction has been created for an operation ") - public void testIfRequestMessageMinimumExists() { - String complexTypeRequestMessageMinimum = - " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " ID of pet that needs to be fetched\n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n"; - - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), complexTypeRequestMessageMinimum); - } - - @Test(description = "Check if complexType model has been created for an openapi model schema") - public void testIfComplexTypeModelExists() { - String complexTypeModel = - " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " pet status in the store\n" - + " \n" - + " \n" - + " \n" - + " \n"; - - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), complexTypeModel); - } - - @Test(description = "Check if message and part tags has been created for an operation ") - public void testIfMessageTagsAndContentExist() { - String messageRequestMessage = - " \n" - + " \n" - + " "; - - String messageError = - " \n" - + " \n" - + " \n"; - - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), messageRequestMessage); - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), messageError); - } - - @Test(description = "Check if portType tag and portType operation has been generated") - public void testIfPorttypeOperationExists() { - String portType = ""; - - String portTypeOperation = - " \n" - + " Returns a single pet\n" - + " \n" - + " \n" - + " successful operation\n" - + " \n" - + " \n" - + " Invalid ID supplied\n" - + " \n" - + " \n" - + " Pet not found\n" - + " \n" - + " \n"; - - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), portType); - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), portTypeOperation); - } - - @Test(description = "Check if portType tag and portType operation has been generated") - public void testIfBindingOperationExists() { - String binding = ""; - - String bindingOperation = - " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n"; - - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), binding); - assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), bindingOperation); - } - - @Test(description = "Ensure that all files have been correctly generated") - public void testFileGeneration() throws Exception { - Assert.assertEquals(this.listOfFiles.size(), 5); - ensureContainsFile(this.listOfFiles, this.outputDirectory, ".openapi-generator-ignore"); - ensureContainsFile(this.listOfFiles, this.outputDirectory, ".openapi-generator/FILES"); - ensureContainsFile(this.listOfFiles, this.outputDirectory, ".openapi-generator/VERSION"); - ensureContainsFile(this.listOfFiles, this.outputDirectory, "service.wsdl"); - ensureContainsFile(this.listOfFiles, this.outputDirectory, "jaxb-customization.xml"); - } - - @Test(description = "Ensure that default description is set if it doesn't exist") - public void testOpenapiDescriptionWasNotProvided() throws IOException { - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/ping.yaml"); - File outputDirectory = Files.createTempDirectory("test").toFile().getCanonicalFile(); - String outputPath = this.outputDirectory.getAbsolutePath().replace('\\', '/'); - - WsdlGeneratorCodegen codegen = new WsdlGeneratorCodegen(); - codegen.setOutputDir(this.outputDirectory.getAbsolutePath()); - - ClientOptInput input = new ClientOptInput().openAPI(openAPI).config(codegen); - - DefaultGenerator generator = new DefaultGenerator(); - generator.opts(input).generate(); - - String value = "No description provided"; - assertFileContains(Paths.get(outputPath + "/service.wsdl"), value); - - FileUtils.deleteDirectory(outputDirectory); - } - - - @AfterClass - public void cleanUp() throws Exception { - // Delete temp folder - FileUtils.deleteDirectory(this.outputDirectory); - } -} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/wsdl/WsdlSchemaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/wsdl/WsdlSchemaCodegenTest.java new file mode 100644 index 00000000000..6cb452dae1c --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/wsdl/WsdlSchemaCodegenTest.java @@ -0,0 +1,266 @@ +package org.openapitools.codegen.wsdl; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.Operation; +import org.apache.commons.io.FileUtils; +import org.openapitools.codegen.ClientOptInput; +import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.DefaultGenerator; +import org.openapitools.codegen.TestUtils; +import org.openapitools.codegen.languages.WsdlSchemaCodegen; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; + +import static org.openapitools.codegen.TestUtils.assertFileContains; +import static org.openapitools.codegen.TestUtils.ensureContainsFile; + +public class WsdlSchemaCodegenTest { + private OpenAPI openAPI; + private File outputDirectory; + private String outputPath; + private List listOfFiles; + + @BeforeClass + public void setUp() throws IOException { + this.openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/wsdl/petstore.yaml"); + this.outputDirectory = Files.createTempDirectory("test").toFile().getCanonicalFile(); + this.outputPath = this.outputDirectory.getAbsolutePath().replace('\\', '/'); + + WsdlSchemaCodegen codegen = new WsdlSchemaCodegen(); + codegen.setOutputDir(this.outputDirectory.getAbsolutePath()); + + ClientOptInput input = new ClientOptInput() + .openAPI(this.openAPI) + .config(codegen); + + DefaultGenerator generator = new DefaultGenerator(); + this.listOfFiles = generator.opts(input).generate(); + } + + @Test(description = "ensure that the operationid has been generated correctly") + public void testOperationIdGeneration() { + final OpenAPI openAPI = this.openAPI; + WsdlSchemaCodegen codegen = new WsdlSchemaCodegen(); + codegen.setOpenAPI(openAPI); + + String requestPathWithId = "/store/order/{orderId}"; + Operation textOperationGet = openAPI.getPaths().get(requestPathWithId).getGet(); + CodegenOperation opGet = codegen.fromOperation(requestPathWithId, "get", textOperationGet, null); + String newOperationIdWithId = codegen.generateOperationId(opGet); + + String requestPathWithoutId = "/store/order"; + Operation textOperationPost = openAPI.getPaths().get(requestPathWithoutId).getPost(); + CodegenOperation opPost = codegen.fromOperation(requestPathWithoutId, "post", textOperationPost, null); + String newOperationIdWithoutId = codegen.generateOperationId(opPost); + + Assert.assertEquals(newOperationIdWithId, "GetStoreOrderByOrderid"); + Assert.assertEquals(newOperationIdWithoutId, "PostStoreOrder"); + } + + @Test(description = "Ensure that passed strings are processed correcly by this method") + public void testLowerCaseStringExceptFirstLetter() { + WsdlSchemaCodegen codegen = new WsdlSchemaCodegen(); + String value = codegen.lowerCaseStringExceptFirstLetter("uploadPetByPathId"); + + Assert.assertEquals(value, "Uploadpetbypathid"); + } + + @Test(description = "Check if element tags has been created for an operation ") + public void testIfElementTagsExist() { + String xsElementRequestMessage = + ""; + String xsElementResponseMessage = + ""; + String xsElementErrorResponse = + " \n" + + " \n" + + " Invalid input\n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), xsElementRequestMessage); + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), xsElementResponseMessage); + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), xsElementErrorResponse); + } + + @Test(description = "Check if complexType input- and output-message has been created for an operation ") + public void testIfInputAndResponseMessageExist() { + String complexTypeRequestMessage = + " \n" + + " \n" + + " \n" + + " \n" + + " ID of pet to return\n" + + " \n" + + " \n" + + " \n" + + " \n"; + + String complexTypeResponseMessage = + " \n" + + " \n" + + " \n" + + " \n" + + " successful operation\n" + + " \n" + + " \n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), complexTypeRequestMessage); + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), complexTypeResponseMessage); + } + + @Test(description = + "Check if complexType RequestMessage with minimum and maximum restriction has been created for an operation ") + public void testIfRequestMessageMinimumExists() { + String complexTypeRequestMessageMinimum = + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " ID of pet that needs to be fetched\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), complexTypeRequestMessageMinimum); + } + + @Test(description = "Check if complexType model has been created for an openapi model schema") + public void testIfComplexTypeModelExists() { + String complexTypeModel = + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " pet status in the store\n" + + " \n" + + " \n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), complexTypeModel); + } + + @Test(description = "Check if message and part tags has been created for an operation ") + public void testIfMessageTagsAndContentExist() { + String messageRequestMessage = + " \n" + + " \n" + + " "; + + String messageError = + " \n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), messageRequestMessage); + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), messageError); + } + + @Test(description = "Check if portType tag and portType operation has been generated") + public void testIfPorttypeOperationExists() { + String portType = ""; + + String portTypeOperation = + " \n" + + " Returns a single pet\n" + + " \n" + + " \n" + + " successful operation\n" + + " \n" + + " \n" + + " Invalid ID supplied\n" + + " \n" + + " \n" + + " Pet not found\n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), portType); + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), portTypeOperation); + } + + @Test(description = "Check if portType tag and portType operation has been generated") + public void testIfBindingOperationExists() { + String binding = ""; + + String bindingOperation = + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n"; + + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), binding); + assertFileContains(Paths.get(this.outputPath + "/service.wsdl"), bindingOperation); + } + + @Test(description = "Ensure that all files have been correctly generated") + public void testFileGeneration() throws Exception { + Assert.assertEquals(this.listOfFiles.size(), 5); + ensureContainsFile(this.listOfFiles, this.outputDirectory, ".openapi-generator-ignore"); + ensureContainsFile(this.listOfFiles, this.outputDirectory, ".openapi-generator/FILES"); + ensureContainsFile(this.listOfFiles, this.outputDirectory, ".openapi-generator/VERSION"); + ensureContainsFile(this.listOfFiles, this.outputDirectory, "service.wsdl"); + ensureContainsFile(this.listOfFiles, this.outputDirectory, "jaxb-customization.xml"); + } + + @Test(description = "Ensure that default description is set if it doesn't exist") + public void testOpenapiDescriptionWasNotProvided() throws IOException { + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/ping.yaml"); + File outputDirectory = Files.createTempDirectory("test").toFile().getCanonicalFile(); + String outputPath = this.outputDirectory.getAbsolutePath().replace('\\', '/'); + + WsdlSchemaCodegen codegen = new WsdlSchemaCodegen(); + codegen.setOutputDir(this.outputDirectory.getAbsolutePath()); + + ClientOptInput input = new ClientOptInput().openAPI(openAPI).config(codegen); + + DefaultGenerator generator = new DefaultGenerator(); + generator.opts(input).generate(); + + String value = "No description provided"; + assertFileContains(Paths.get(outputPath + "/service.wsdl"), value); + + FileUtils.deleteDirectory(outputDirectory); + } + + + @AfterClass + public void cleanUp() throws Exception { + // Delete temp folder + FileUtils.deleteDirectory(this.outputDirectory); + } +} diff --git a/samples/documentation/wsdl/.openapi-generator-ignore b/samples/schema/petstore/wsdl-schema/.openapi-generator-ignore similarity index 100% rename from samples/documentation/wsdl/.openapi-generator-ignore rename to samples/schema/petstore/wsdl-schema/.openapi-generator-ignore diff --git a/samples/documentation/wsdl/.openapi-generator/FILES b/samples/schema/petstore/wsdl-schema/.openapi-generator/FILES similarity index 100% rename from samples/documentation/wsdl/.openapi-generator/FILES rename to samples/schema/petstore/wsdl-schema/.openapi-generator/FILES diff --git a/samples/documentation/wsdl/.openapi-generator/VERSION b/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION similarity index 100% rename from samples/documentation/wsdl/.openapi-generator/VERSION rename to samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION diff --git a/samples/documentation/wsdl/jaxb-customization.xml b/samples/schema/petstore/wsdl-schema/jaxb-customization.xml similarity index 100% rename from samples/documentation/wsdl/jaxb-customization.xml rename to samples/schema/petstore/wsdl-schema/jaxb-customization.xml diff --git a/samples/documentation/wsdl/service.wsdl b/samples/schema/petstore/wsdl-schema/service.wsdl similarity index 100% rename from samples/documentation/wsdl/service.wsdl rename to samples/schema/petstore/wsdl-schema/service.wsdl From 1b6fd2dd7a000bf2489bdb2223a010c9de4fbd25 Mon Sep 17 00:00:00 2001 From: Stefan Hanselmann <69970522+shanselm-ergon@users.noreply.github.com> Date: Fri, 28 May 2021 15:50:28 +0200 Subject: [PATCH 062/192] [Kotlin][retrofit2] replace okhttpclient with callfactory (#9451) * [Kotlin][Retrofit][#9448] Replace OkHttpClient parameter with Call.Factory. * [Kotlin][Retrofit][#9448] Update sample project. --- .../jvm-retrofit2/infrastructure/ApiClient.kt.mustache | 7 ++++--- .../org/openapitools/client/infrastructure/ApiClient.kt | 7 ++++--- .../org/openapitools/client/infrastructure/ApiClient.kt | 7 ++++--- .../org/openapitools/client/infrastructure/ApiClient.kt | 7 ++++--- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache index ea19748fbfb..2d64978b0c2 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache @@ -21,6 +21,7 @@ import {{packageName}}.auth.HttpBearerAuth {{/authMethods}} {{/hasAuthMethods}} +import okhttp3.Call import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit @@ -56,7 +57,7 @@ import okhttp3.MediaType.Companion.toMediaType private var baseUrl: String = defaultBasePath, private val okHttpClientBuilder: OkHttpClient.Builder? = null{{^kotlinx_serialization}}, private val serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder{{/kotlinx_serialization}}, - private val okHttpClient : OkHttpClient? = null, + private val callFactory : Call.Factory? = null, private val converterFactory: Converter.Factory? = null, ) { private val apiAuthorizations = mutableMapOf() @@ -303,8 +304,8 @@ import okhttp3.MediaType.Companion.toMediaType } fun createService(serviceClass: Class): S { - val usedClient = this.okHttpClient ?: clientBuilder.build() - return retrofitBuilder.client(usedClient).build().create(serviceClass) + val usedCallFactory = this.callFactory ?: clientBuilder.build() + return retrofitBuilder.callFactory(usedCallFactory).build().create(serviceClass) } private fun normalizeBaseUrl() { diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index a5aaa332be8..3bb7d9c4d66 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -7,6 +7,7 @@ import org.openapitools.client.auth.OAuth import org.openapitools.client.auth.OAuth.AccessTokenListener import org.openapitools.client.auth.OAuthFlow +import okhttp3.Call import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit @@ -21,7 +22,7 @@ import okhttp3.MediaType.Companion.toMediaType class ApiClient( private var baseUrl: String = defaultBasePath, private val okHttpClientBuilder: OkHttpClient.Builder? = null, - private val okHttpClient : OkHttpClient? = null, + private val callFactory : Call.Factory? = null, private val converterFactory: Converter.Factory? = null, ) { private val apiAuthorizations = mutableMapOf() @@ -180,8 +181,8 @@ class ApiClient( } fun createService(serviceClass: Class): S { - val usedClient = this.okHttpClient ?: clientBuilder.build() - return retrofitBuilder.client(usedClient).build().create(serviceClass) + val usedCallFactory = this.callFactory ?: clientBuilder.build() + return retrofitBuilder.callFactory(usedCallFactory).build().create(serviceClass) } private fun normalizeBaseUrl() { diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index cc63b570177..51a186e48fa 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -7,6 +7,7 @@ import org.openapitools.client.auth.OAuth import org.openapitools.client.auth.OAuth.AccessTokenListener import org.openapitools.client.auth.OAuthFlow +import okhttp3.Call import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit @@ -22,7 +23,7 @@ class ApiClient( private var baseUrl: String = defaultBasePath, private val okHttpClientBuilder: OkHttpClient.Builder? = null, private val serializerBuilder: Moshi.Builder = Serializer.moshiBuilder, - private val okHttpClient : OkHttpClient? = null, + private val callFactory : Call.Factory? = null, private val converterFactory: Converter.Factory? = null, ) { private val apiAuthorizations = mutableMapOf() @@ -183,8 +184,8 @@ class ApiClient( } fun createService(serviceClass: Class): S { - val usedClient = this.okHttpClient ?: clientBuilder.build() - return retrofitBuilder.client(usedClient).build().create(serviceClass) + val usedCallFactory = this.callFactory ?: clientBuilder.build() + return retrofitBuilder.callFactory(usedCallFactory).build().create(serviceClass) } private fun normalizeBaseUrl() { diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index bee954129e6..4aa4323fc5b 100644 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -7,6 +7,7 @@ import org.openapitools.client.auth.OAuth import org.openapitools.client.auth.OAuth.AccessTokenListener import org.openapitools.client.auth.OAuthFlow +import okhttp3.Call import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit @@ -21,7 +22,7 @@ class ApiClient( private var baseUrl: String = defaultBasePath, private val okHttpClientBuilder: OkHttpClient.Builder? = null, private val serializerBuilder: Moshi.Builder = Serializer.moshiBuilder, - private val okHttpClient : OkHttpClient? = null, + private val callFactory : Call.Factory? = null, private val converterFactory: Converter.Factory? = null, ) { private val apiAuthorizations = mutableMapOf() @@ -180,8 +181,8 @@ class ApiClient( } fun createService(serviceClass: Class): S { - val usedClient = this.okHttpClient ?: clientBuilder.build() - return retrofitBuilder.client(usedClient).build().create(serviceClass) + val usedCallFactory = this.callFactory ?: clientBuilder.build() + return retrofitBuilder.callFactory(usedCallFactory).build().create(serviceClass) } private fun normalizeBaseUrl() { From f7b93ebdf2063c853b6e9438e560c5a81a78bc98 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Sat, 29 May 2021 04:26:01 +0200 Subject: [PATCH 063/192] Update fake API to contain sample with binary body (#9610) --- ...ith-fake-endpoints-models-for-testing.yaml | 21 +- .../petstore/csharp/OpenAPIClient/README.md | 1 + .../csharp/OpenAPIClient/docs/FakeApi.md | 77 ++++++- .../src/Org.OpenAPITools/Api/FakeApi.cs | 207 ++++++++++++++++- .../elixir/lib/openapi_petstore/api/fake.ex | 28 ++- .../client/petstore/javascript-es6/README.md | 1 + .../petstore/javascript-es6/docs/FakeApi.md | 48 +++- .../javascript-es6/src/api/FakeApi.js | 42 +++- .../petstore/javascript-promise-es6/README.md | 1 + .../javascript-promise-es6/docs/FakeApi.md | 47 +++- .../javascript-promise-es6/src/api/FakeApi.js | 49 +++- samples/client/petstore/perl/README.md | 1 + samples/client/petstore/perl/docs/FakeApi.md | 48 +++- .../perl/lib/WWW/OpenAPIClient/FakeApi.pm | 56 +++++ .../petstore/php/OpenAPIClient-php/README.md | 1 + .../php/OpenAPIClient-php/docs/Api/FakeApi.md | 58 ++++- .../php/OpenAPIClient-php/lib/Api/FakeApi.php | 209 ++++++++++++++++++ .../client/petstore/ruby-faraday/README.md | 1 + .../petstore/ruby-faraday/docs/FakeApi.md | 66 +++++- .../ruby-faraday/lib/petstore/api/fake_api.rb | 61 ++++- samples/client/petstore/ruby/README.md | 1 + samples/client/petstore/ruby/docs/FakeApi.md | 66 +++++- .../ruby/lib/petstore/api/fake_api.rb | 61 ++++- .../builds/default-v3.0/apis/FakeApi.ts | 40 +++- .../petstore_client_lib_fake/README.md | 1 + .../petstore_client_lib_fake/doc/FakeApi.md | 45 +++- .../lib/src/api/fake_api.dart | 72 +++++- .../petstore_client_lib_fake/README.md | 1 + .../petstore_client_lib_fake/doc/FakeApi.md | 45 +++- .../lib/api/fake_api.dart | 44 +++- .../dart2/petstore_client_lib_fake/README.md | 1 + .../petstore_client_lib_fake/doc/FakeApi.md | 45 +++- .../lib/api/fake_api.dart | 56 ++++- .../README.md | 1 + .../doc/FakeApi.md | 45 +++- .../lib/api/fake_api.dart | 56 ++++- .../client/petstore/python-legacy/README.md | 1 + .../petstore/python-legacy/docs/FakeApi.md | 63 +++++- .../petstore_api/api/fake_api.py | 133 ++++++++++- .../java/org/openapitools/api/FakeApi.java | 14 +- .../org/openapitools/api/FakeApiService.java | 1 + .../api/impl/FakeApiServiceImpl.java | 5 + .../app/Http/Controllers/FakeController.php | 24 ++ .../petstore/php-laravel/lib/routes/api.php | 9 +- .../lib/app/Http/Controllers/FakeApi.php | 24 ++ .../petstore/php-lumen/lib/routes/web.php | 9 +- 46 files changed, 1844 insertions(+), 42 deletions(-) diff --git a/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml b/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml index 431dd54b031..05b9fd5f542 100644 --- a/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml @@ -1008,7 +1008,7 @@ paths: tags: - fake description: >- - For this test, the body for this request much reference a schema named + For this test, the body for this request must reference a schema named `File`. operationId: testBodyWithFileSchema responses: @@ -1020,6 +1020,25 @@ paths: schema: $ref: '#/components/schemas/FileSchemaTestClass' required: true + /fake/body-with-binary: + put: + tags: + - fake + description: >- + For this test, the body has to be a binary file. + operationId: testBodyWithBinary + responses: + '200': + description: Success + requestBody: + content: + image/png: + schema: + type: string + nullable: true + format: binary + description: image to upload + required: true /fake/test-query-paramters: put: tags: diff --git a/samples/client/petstore/csharp/OpenAPIClient/README.md b/samples/client/petstore/csharp/OpenAPIClient/README.md index f33c01b2a43..0174c279b8d 100644 --- a/samples/client/petstore/csharp/OpenAPIClient/README.md +++ b/samples/client/petstore/csharp/OpenAPIClient/README.md @@ -114,6 +114,7 @@ Class | Method | HTTP request | Description *FakeApi* | [**FakeOuterNumberSerialize**](docs/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | *FakeApi* | [**FakeOuterStringSerialize**](docs/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | *FakeApi* | [**FakePropertyEnumIntegerSerialize**](docs/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**TestBodyWithBinary**](docs/FakeApi.md#testbodywithbinary) | **PUT** /fake/body-with-binary | *FakeApi* | [**TestBodyWithFileSchema**](docs/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | *FakeApi* | [**TestBodyWithQueryParams**](docs/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | *FakeApi* | [**TestClientModel**](docs/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model diff --git a/samples/client/petstore/csharp/OpenAPIClient/docs/FakeApi.md b/samples/client/petstore/csharp/OpenAPIClient/docs/FakeApi.md index 64474672ca8..b821e3f31c1 100644 --- a/samples/client/petstore/csharp/OpenAPIClient/docs/FakeApi.md +++ b/samples/client/petstore/csharp/OpenAPIClient/docs/FakeApi.md @@ -11,6 +11,7 @@ Method | HTTP request | Description [**FakeOuterNumberSerialize**](FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | [**FakeOuterStringSerialize**](FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | [**FakePropertyEnumIntegerSerialize**](FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +[**TestBodyWithBinary**](FakeApi.md#testbodywithbinary) | **PUT** /fake/body-with-binary | [**TestBodyWithFileSchema**](FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | [**TestBodyWithQueryParams**](FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | [**TestClientModel**](FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model @@ -546,13 +547,87 @@ No authorization required [[Back to README]](../README.md) +## TestBodyWithBinary + +> void TestBodyWithBinary (System.IO.Stream body) + + + +For this test, the body has to be a binary file. + +### Example + +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestBodyWithBinaryExample + { + public static void Main() + { + Configuration.Default.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(Configuration.Default); + var body = BINARY_DATA_HERE; // System.IO.Stream | image to upload + + try + { + apiInstance.TestBodyWithBinary(body); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestBodyWithBinary: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **System.IO.Stream**| image to upload | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: image/png +- **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Success | - | + +[[Back to top]](#) +[[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + ## TestBodyWithFileSchema > void TestBodyWithFileSchema (FileSchemaTestClass fileSchemaTestClass) -For this test, the body for this request much reference a schema named `File`. +For this test, the body for this request must reference a schema named `File`. ### Example diff --git a/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools/Api/FakeApi.cs index 6161aa33d32..c01c18e2f8c 100644 --- a/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools/Api/FakeApi.cs @@ -178,7 +178,28 @@ namespace Org.OpenAPITools.Api /// /// /// - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body has to be a binary file. + /// + /// Thrown when fails to make API call + /// image to upload + /// + void TestBodyWithBinary (System.IO.Stream body); + + /// + /// + /// + /// + /// For this test, the body has to be a binary file. + /// + /// Thrown when fails to make API call + /// image to upload + /// ApiResponse of Object(void) + ApiResponse TestBodyWithBinaryWithHttpInfo (System.IO.Stream body); + /// + /// + /// + /// + /// For this test, the body for this request must reference a schema named `File`. /// /// Thrown when fails to make API call /// @@ -189,7 +210,7 @@ namespace Org.OpenAPITools.Api /// /// /// - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body for this request must reference a schema named `File`. /// /// Thrown when fails to make API call /// @@ -594,7 +615,30 @@ namespace Org.OpenAPITools.Api /// /// /// - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body has to be a binary file. + /// + /// Thrown when fails to make API call + /// image to upload + /// Cancellation Token to cancel request (optional) + /// Task of void + System.Threading.Tasks.Task TestBodyWithBinaryAsync (System.IO.Stream body, CancellationToken cancellationToken = default(CancellationToken)); + + /// + /// + /// + /// + /// For this test, the body has to be a binary file. + /// + /// Thrown when fails to make API call + /// image to upload + /// Cancellation Token to cancel request (optional) + /// Task of ApiResponse + System.Threading.Tasks.Task> TestBodyWithBinaryWithHttpInfoAsync (System.IO.Stream body, CancellationToken cancellationToken = default(CancellationToken)); + /// + /// + /// + /// + /// For this test, the body for this request must reference a schema named `File`. /// /// Thrown when fails to make API call /// @@ -606,7 +650,7 @@ namespace Org.OpenAPITools.Api /// /// /// - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body for this request must reference a schema named `File`. /// /// Thrown when fails to make API call /// @@ -1988,7 +2032,154 @@ namespace Org.OpenAPITools.Api } /// - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body has to be a binary file. + /// + /// Thrown when fails to make API call + /// image to upload + /// + public void TestBodyWithBinary (System.IO.Stream body) + { + TestBodyWithBinaryWithHttpInfo(body); + } + + /// + /// For this test, the body has to be a binary file. + /// + /// Thrown when fails to make API call + /// image to upload + /// ApiResponse of Object(void) + public ApiResponse TestBodyWithBinaryWithHttpInfo (System.IO.Stream body) + { + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling FakeApi->TestBodyWithBinary"); + + var localVarPath = "/fake/body-with-binary"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "image/png" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("TestBodyWithBinary", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Name, x => string.Join(",", x.Value)), + null); + } + + /// + /// For this test, the body has to be a binary file. + /// + /// Thrown when fails to make API call + /// image to upload + /// Cancellation Token to cancel request (optional) + /// Task of void + public async System.Threading.Tasks.Task TestBodyWithBinaryAsync (System.IO.Stream body, CancellationToken cancellationToken = default(CancellationToken)) + { + await TestBodyWithBinaryWithHttpInfoAsync(body, cancellationToken); + + } + + /// + /// For this test, the body has to be a binary file. + /// + /// Thrown when fails to make API call + /// image to upload + /// Cancellation Token to cancel request (optional) + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestBodyWithBinaryWithHttpInfoAsync (System.IO.Stream body, CancellationToken cancellationToken = default(CancellationToken)) + { + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling FakeApi->TestBodyWithBinary"); + + var localVarPath = "/fake/body-with-binary"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "image/png" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType, cancellationToken); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("TestBodyWithBinary", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Name, x => string.Join(",", x.Value)), + null); + } + + /// + /// For this test, the body for this request must reference a schema named `File`. /// /// Thrown when fails to make API call /// @@ -1999,7 +2190,7 @@ namespace Org.OpenAPITools.Api } /// - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body for this request must reference a schema named `File`. /// /// Thrown when fails to make API call /// @@ -2060,7 +2251,7 @@ namespace Org.OpenAPITools.Api } /// - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body for this request must reference a schema named `File`. /// /// Thrown when fails to make API call /// @@ -2073,7 +2264,7 @@ namespace Org.OpenAPITools.Api } /// - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body for this request must reference a schema named `File`. /// /// Thrown when fails to make API call /// diff --git a/samples/client/petstore/elixir/lib/openapi_petstore/api/fake.ex b/samples/client/petstore/elixir/lib/openapi_petstore/api/fake.ex index 7d05057b3a6..407ff92dbbd 100644 --- a/samples/client/petstore/elixir/lib/openapi_petstore/api/fake.ex +++ b/samples/client/petstore/elixir/lib/openapi_petstore/api/fake.ex @@ -215,7 +215,33 @@ defmodule OpenapiPetstore.Api.Fake do end @doc """ - For this test, the body for this request much reference a schema named `File`. + For this test, the body has to be a binary file. + + ## Parameters + + - connection (OpenapiPetstore.Connection): Connection to server + - body (String.t): image to upload + - opts (KeywordList): [optional] Optional parameters + ## Returns + + {:ok, nil} on success + {:error, Tesla.Env.t} on failure + """ + @spec test_body_with_binary(Tesla.Env.client, String.t, keyword()) :: {:ok, nil} | {:error, Tesla.Env.t} + def test_body_with_binary(connection, body, _opts \\ []) do + %{} + |> method(:put) + |> url("/fake/body-with-binary") + |> add_param(:body, :body, body) + |> Enum.into([]) + |> (&Connection.request(connection, &1)).() + |> evaluate_response([ + { 200, false} + ]) + end + + @doc """ + For this test, the body for this request must reference a schema named `File`. ## Parameters diff --git a/samples/client/petstore/javascript-es6/README.md b/samples/client/petstore/javascript-es6/README.md index 7484625b457..736594bda69 100644 --- a/samples/client/petstore/javascript-es6/README.md +++ b/samples/client/petstore/javascript-es6/README.md @@ -129,6 +129,7 @@ Class | Method | HTTP request | Description *OpenApiPetstore.FakeApi* | [**fakeOuterNumberSerialize**](docs/FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | *OpenApiPetstore.FakeApi* | [**fakeOuterStringSerialize**](docs/FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | *OpenApiPetstore.FakeApi* | [**fakePropertyEnumIntegerSerialize**](docs/FakeApi.md#fakePropertyEnumIntegerSerialize) | **POST** /fake/property/enum-int | +*OpenApiPetstore.FakeApi* | [**testBodyWithBinary**](docs/FakeApi.md#testBodyWithBinary) | **PUT** /fake/body-with-binary | *OpenApiPetstore.FakeApi* | [**testBodyWithFileSchema**](docs/FakeApi.md#testBodyWithFileSchema) | **PUT** /fake/body-with-file-schema | *OpenApiPetstore.FakeApi* | [**testBodyWithQueryParams**](docs/FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | *OpenApiPetstore.FakeApi* | [**testClientModel**](docs/FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model diff --git a/samples/client/petstore/javascript-es6/docs/FakeApi.md b/samples/client/petstore/javascript-es6/docs/FakeApi.md index 95446d77d5e..9ba9d28131b 100644 --- a/samples/client/petstore/javascript-es6/docs/FakeApi.md +++ b/samples/client/petstore/javascript-es6/docs/FakeApi.md @@ -11,6 +11,7 @@ Method | HTTP request | Description [**fakeOuterNumberSerialize**](FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | [**fakeOuterStringSerialize**](FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | [**fakePropertyEnumIntegerSerialize**](FakeApi.md#fakePropertyEnumIntegerSerialize) | **POST** /fake/property/enum-int | +[**testBodyWithBinary**](FakeApi.md#testBodyWithBinary) | **PUT** /fake/body-with-binary | [**testBodyWithFileSchema**](FakeApi.md#testBodyWithFileSchema) | **PUT** /fake/body-with-file-schema | [**testBodyWithQueryParams**](FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | [**testClientModel**](FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model @@ -345,13 +346,58 @@ No authorization required - **Accept**: */* +## testBodyWithBinary + +> testBodyWithBinary(body) + + + +For this test, the body has to be a binary file. + +### Example + +```javascript +import OpenApiPetstore from 'open_api_petstore'; + +let apiInstance = new OpenApiPetstore.FakeApi(); +let body = "/path/to/file"; // File | image to upload +apiInstance.testBodyWithBinary(body, (error, data, response) => { + if (error) { + console.error(error); + } else { + console.log('API called successfully.'); + } +}); +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **File**| image to upload | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: image/png +- **Accept**: Not defined + + ## testBodyWithFileSchema > testBodyWithFileSchema(fileSchemaTestClass) -For this test, the body for this request much reference a schema named `File`. +For this test, the body for this request must reference a schema named `File`. ### Example diff --git a/samples/client/petstore/javascript-es6/src/api/FakeApi.js b/samples/client/petstore/javascript-es6/src/api/FakeApi.js index 33f85635f09..df52f7e836c 100644 --- a/samples/client/petstore/javascript-es6/src/api/FakeApi.js +++ b/samples/client/petstore/javascript-es6/src/api/FakeApi.js @@ -319,6 +319,46 @@ export default class FakeApi { ); } + /** + * Callback function to receive the result of the testBodyWithBinary operation. + * @callback module:api/FakeApi~testBodyWithBinaryCallback + * @param {String} error Error message, if any. + * @param data This operation does not return a value. + * @param {String} response The complete HTTP response. + */ + + /** + * For this test, the body has to be a binary file. + * @param {File} body image to upload + * @param {module:api/FakeApi~testBodyWithBinaryCallback} callback The callback function, accepting three arguments: error, data, response + */ + testBodyWithBinary(body, callback) { + let postBody = body; + // verify the required parameter 'body' is set + if (body === undefined || body === null) { + throw new Error("Missing the required parameter 'body' when calling testBodyWithBinary"); + } + + let pathParams = { + }; + let queryParams = { + }; + let headerParams = { + }; + let formParams = { + }; + + let authNames = []; + let contentTypes = ['image/png']; + let accepts = []; + let returnType = null; + return this.apiClient.callApi( + '/fake/body-with-binary', 'PUT', + pathParams, queryParams, headerParams, formParams, postBody, + authNames, contentTypes, accepts, returnType, null, callback + ); + } + /** * Callback function to receive the result of the testBodyWithFileSchema operation. * @callback module:api/FakeApi~testBodyWithFileSchemaCallback @@ -328,7 +368,7 @@ export default class FakeApi { */ /** - * For this test, the body for this request much reference a schema named `File`. + * For this test, the body for this request must reference a schema named `File`. * @param {module:model/FileSchemaTestClass} fileSchemaTestClass * @param {module:api/FakeApi~testBodyWithFileSchemaCallback} callback The callback function, accepting three arguments: error, data, response */ diff --git a/samples/client/petstore/javascript-promise-es6/README.md b/samples/client/petstore/javascript-promise-es6/README.md index ef092423575..b13f89f2dac 100644 --- a/samples/client/petstore/javascript-promise-es6/README.md +++ b/samples/client/petstore/javascript-promise-es6/README.md @@ -127,6 +127,7 @@ Class | Method | HTTP request | Description *OpenApiPetstore.FakeApi* | [**fakeOuterNumberSerialize**](docs/FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | *OpenApiPetstore.FakeApi* | [**fakeOuterStringSerialize**](docs/FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | *OpenApiPetstore.FakeApi* | [**fakePropertyEnumIntegerSerialize**](docs/FakeApi.md#fakePropertyEnumIntegerSerialize) | **POST** /fake/property/enum-int | +*OpenApiPetstore.FakeApi* | [**testBodyWithBinary**](docs/FakeApi.md#testBodyWithBinary) | **PUT** /fake/body-with-binary | *OpenApiPetstore.FakeApi* | [**testBodyWithFileSchema**](docs/FakeApi.md#testBodyWithFileSchema) | **PUT** /fake/body-with-file-schema | *OpenApiPetstore.FakeApi* | [**testBodyWithQueryParams**](docs/FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | *OpenApiPetstore.FakeApi* | [**testClientModel**](docs/FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model diff --git a/samples/client/petstore/javascript-promise-es6/docs/FakeApi.md b/samples/client/petstore/javascript-promise-es6/docs/FakeApi.md index b6c5594e0ba..a0cd0aefb42 100644 --- a/samples/client/petstore/javascript-promise-es6/docs/FakeApi.md +++ b/samples/client/petstore/javascript-promise-es6/docs/FakeApi.md @@ -11,6 +11,7 @@ Method | HTTP request | Description [**fakeOuterNumberSerialize**](FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | [**fakeOuterStringSerialize**](FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | [**fakePropertyEnumIntegerSerialize**](FakeApi.md#fakePropertyEnumIntegerSerialize) | **POST** /fake/property/enum-int | +[**testBodyWithBinary**](FakeApi.md#testBodyWithBinary) | **PUT** /fake/body-with-binary | [**testBodyWithFileSchema**](FakeApi.md#testBodyWithFileSchema) | **PUT** /fake/body-with-file-schema | [**testBodyWithQueryParams**](FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | [**testClientModel**](FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model @@ -338,13 +339,57 @@ No authorization required - **Accept**: */* +## testBodyWithBinary + +> testBodyWithBinary(body) + + + +For this test, the body has to be a binary file. + +### Example + +```javascript +import OpenApiPetstore from 'open_api_petstore'; + +let apiInstance = new OpenApiPetstore.FakeApi(); +let body = "/path/to/file"; // File | image to upload +apiInstance.testBodyWithBinary(body).then(() => { + console.log('API called successfully.'); +}, (error) => { + console.error(error); +}); + +``` + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **File**| image to upload | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: image/png +- **Accept**: Not defined + + ## testBodyWithFileSchema > testBodyWithFileSchema(fileSchemaTestClass) -For this test, the body for this request much reference a schema named `File`. +For this test, the body for this request must reference a schema named `File`. ### Example diff --git a/samples/client/petstore/javascript-promise-es6/src/api/FakeApi.js b/samples/client/petstore/javascript-promise-es6/src/api/FakeApi.js index 0902c816dc4..dc949777c5b 100644 --- a/samples/client/petstore/javascript-promise-es6/src/api/FakeApi.js +++ b/samples/client/petstore/javascript-promise-es6/src/api/FakeApi.js @@ -356,7 +356,52 @@ export default class FakeApi { /** - * For this test, the body for this request much reference a schema named `File`. + * For this test, the body has to be a binary file. + * @param {File} body image to upload + * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response + */ + testBodyWithBinaryWithHttpInfo(body) { + let postBody = body; + // verify the required parameter 'body' is set + if (body === undefined || body === null) { + throw new Error("Missing the required parameter 'body' when calling testBodyWithBinary"); + } + + let pathParams = { + }; + let queryParams = { + }; + let headerParams = { + }; + let formParams = { + }; + + let authNames = []; + let contentTypes = ['image/png']; + let accepts = []; + let returnType = null; + return this.apiClient.callApi( + '/fake/body-with-binary', 'PUT', + pathParams, queryParams, headerParams, formParams, postBody, + authNames, contentTypes, accepts, returnType, null + ); + } + + /** + * For this test, the body has to be a binary file. + * @param {File} body image to upload + * @return {Promise} a {@link https://www.promisejs.org/|Promise} + */ + testBodyWithBinary(body) { + return this.testBodyWithBinaryWithHttpInfo(body) + .then(function(response_and_data) { + return response_and_data.data; + }); + } + + + /** + * For this test, the body for this request must reference a schema named `File`. * @param {module:model/FileSchemaTestClass} fileSchemaTestClass * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response */ @@ -388,7 +433,7 @@ export default class FakeApi { } /** - * For this test, the body for this request much reference a schema named `File`. + * For this test, the body for this request must reference a schema named `File`. * @param {module:model/FileSchemaTestClass} fileSchemaTestClass * @return {Promise} a {@link https://www.promisejs.org/|Promise} */ diff --git a/samples/client/petstore/perl/README.md b/samples/client/petstore/perl/README.md index 9dd81b461b1..2a469ee47b7 100644 --- a/samples/client/petstore/perl/README.md +++ b/samples/client/petstore/perl/README.md @@ -385,6 +385,7 @@ Class | Method | HTTP request | Description *FakeApi* | [**fake_outer_number_serialize**](docs/FakeApi.md#fake_outer_number_serialize) | **POST** /fake/outer/number | *FakeApi* | [**fake_outer_string_serialize**](docs/FakeApi.md#fake_outer_string_serialize) | **POST** /fake/outer/string | *FakeApi* | [**fake_property_enum_integer_serialize**](docs/FakeApi.md#fake_property_enum_integer_serialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**test_body_with_binary**](docs/FakeApi.md#test_body_with_binary) | **PUT** /fake/body-with-binary | *FakeApi* | [**test_body_with_file_schema**](docs/FakeApi.md#test_body_with_file_schema) | **PUT** /fake/body-with-file-schema | *FakeApi* | [**test_body_with_query_params**](docs/FakeApi.md#test_body_with_query_params) | **PUT** /fake/body-with-query-params | *FakeApi* | [**test_client_model**](docs/FakeApi.md#test_client_model) | **PATCH** /fake | To test \"client\" model diff --git a/samples/client/petstore/perl/docs/FakeApi.md b/samples/client/petstore/perl/docs/FakeApi.md index d1696217c59..9db900a571a 100644 --- a/samples/client/petstore/perl/docs/FakeApi.md +++ b/samples/client/petstore/perl/docs/FakeApi.md @@ -16,6 +16,7 @@ Method | HTTP request | Description [**fake_outer_number_serialize**](FakeApi.md#fake_outer_number_serialize) | **POST** /fake/outer/number | [**fake_outer_string_serialize**](FakeApi.md#fake_outer_string_serialize) | **POST** /fake/outer/string | [**fake_property_enum_integer_serialize**](FakeApi.md#fake_property_enum_integer_serialize) | **POST** /fake/property/enum-int | +[**test_body_with_binary**](FakeApi.md#test_body_with_binary) | **PUT** /fake/body-with-binary | [**test_body_with_file_schema**](FakeApi.md#test_body_with_file_schema) | **PUT** /fake/body-with-file-schema | [**test_body_with_query_params**](FakeApi.md#test_body_with_query_params) | **PUT** /fake/body-with-query-params | [**test_client_model**](FakeApi.md#test_client_model) | **PATCH** /fake | To test \"client\" model @@ -347,12 +348,57 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **test_body_with_binary** +> test_body_with_binary(body => $body) + + + +For this test, the body has to be a binary file. + +### Example +```perl +use Data::Dumper; +use WWW::OpenAPIClient::FakeApi; +my $api_instance = WWW::OpenAPIClient::FakeApi->new( +); + +my $body = WWW::OpenAPIClient::Object::string->new(); # string | image to upload + +eval { + $api_instance->test_body_with_binary(body => $body); +}; +if ($@) { + warn "Exception when calling FakeApi->test_body_with_binary: $@\n"; +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **string****string**| image to upload | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: image/png + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **test_body_with_file_schema** > test_body_with_file_schema(file_schema_test_class => $file_schema_test_class) -For this test, the body for this request much reference a schema named `File`. +For this test, the body for this request must reference a schema named `File`. ### Example ```perl diff --git a/samples/client/petstore/perl/lib/WWW/OpenAPIClient/FakeApi.pm b/samples/client/petstore/perl/lib/WWW/OpenAPIClient/FakeApi.pm index 8646aa3cc07..d3879045dee 100644 --- a/samples/client/petstore/perl/lib/WWW/OpenAPIClient/FakeApi.pm +++ b/samples/client/petstore/perl/lib/WWW/OpenAPIClient/FakeApi.pm @@ -485,6 +485,62 @@ sub fake_property_enum_integer_serialize { return $_response_object; } +# +# test_body_with_binary +# +# +# +# @param string $body image to upload (required) +{ + my $params = { + 'body' => { + data_type => 'string', + description => 'image to upload', + required => '1', + }, + }; + __PACKAGE__->method_documentation->{ 'test_body_with_binary' } = { + summary => '', + params => $params, + returns => undef, + }; +} +# @return void +# +sub test_body_with_binary { + my ($self, %args) = @_; + + # parse inputs + my $_resource_path = '/fake/body-with-binary'; + + my $_method = 'PUT'; + my $query_params = {}; + my $header_params = {}; + my $form_params = {}; + + # 'Accept' and 'Content-Type' header + my $_header_accept = $self->{api_client}->select_header_accept(); + if ($_header_accept) { + $header_params->{'Accept'} = $_header_accept; + } + $header_params->{'Content-Type'} = $self->{api_client}->select_header_content_type('image/png'); + + my $_body_data; + # body params + if ( exists $args{'body'}) { + $_body_data = $args{'body'}; + } + + # authentication setting, if any + my $auth_settings = [qw()]; + + # make the API Call + $self->{api_client}->call_api($_resource_path, $_method, + $query_params, $form_params, + $header_params, $_body_data, $auth_settings); + return; +} + # # test_body_with_file_schema # diff --git a/samples/client/petstore/php/OpenAPIClient-php/README.md b/samples/client/petstore/php/OpenAPIClient-php/README.md index 2f4807ddee0..6540cb639a5 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/README.md +++ b/samples/client/petstore/php/OpenAPIClient-php/README.md @@ -80,6 +80,7 @@ Class | Method | HTTP request | Description *FakeApi* | [**fakeOuterNumberSerialize**](docs/Api/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | *FakeApi* | [**fakeOuterStringSerialize**](docs/Api/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | *FakeApi* | [**fakePropertyEnumIntegerSerialize**](docs/Api/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithBinary**](docs/Api/FakeApi.md#testbodywithbinary) | **PUT** /fake/body-with-binary | *FakeApi* | [**testBodyWithFileSchema**](docs/Api/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | *FakeApi* | [**testBodyWithQueryParams**](docs/Api/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | *FakeApi* | [**testClientModel**](docs/Api/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model diff --git a/samples/client/petstore/php/OpenAPIClient-php/docs/Api/FakeApi.md b/samples/client/petstore/php/OpenAPIClient-php/docs/Api/FakeApi.md index 4319d48a408..ce8d2050136 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/docs/Api/FakeApi.md +++ b/samples/client/petstore/php/OpenAPIClient-php/docs/Api/FakeApi.md @@ -11,6 +11,7 @@ Method | HTTP request | Description [**fakeOuterNumberSerialize()**](FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | [**fakeOuterStringSerialize()**](FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | [**fakePropertyEnumIntegerSerialize()**](FakeApi.md#fakePropertyEnumIntegerSerialize) | **POST** /fake/property/enum-int | +[**testBodyWithBinary()**](FakeApi.md#testBodyWithBinary) | **PUT** /fake/body-with-binary | [**testBodyWithFileSchema()**](FakeApi.md#testBodyWithFileSchema) | **PUT** /fake/body-with-file-schema | [**testBodyWithQueryParams()**](FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | [**testClientModel()**](FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model @@ -412,6 +413,61 @@ No authorization required [[Back to Model list]](../../README.md#models) [[Back to README]](../../README.md) +## `testBodyWithBinary()` + +```php +testBodyWithBinary($body) +``` + + + +For this test, the body has to be a binary file. + +### Example + +```php +testBodyWithBinary($body); +} catch (Exception $e) { + echo 'Exception when calling FakeApi->testBodyWithBinary: ', $e->getMessage(), PHP_EOL; +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **\SplFileObject****\SplFileObject**| image to upload | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: `image/png` +- **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../../README.md#endpoints) +[[Back to Model list]](../../README.md#models) +[[Back to README]](../../README.md) + ## `testBodyWithFileSchema()` ```php @@ -420,7 +476,7 @@ testBodyWithFileSchema($file_schema_test_class) -For this test, the body for this request much reference a schema named `File`. +For this test, the body for this request must reference a schema named `File`. ### Example diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php index 69ea9500cde..93aeaacf9c9 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -1847,6 +1847,215 @@ class FakeApi ); } + /** + * Operation testBodyWithBinary + * + * @param \SplFileObject $body image to upload (required) + * + * @throws \OpenAPI\Client\ApiException on non-2xx response + * @throws \InvalidArgumentException + * @return void + */ + public function testBodyWithBinary($body) + { + $this->testBodyWithBinaryWithHttpInfo($body); + } + + /** + * Operation testBodyWithBinaryWithHttpInfo + * + * @param \SplFileObject $body image to upload (required) + * + * @throws \OpenAPI\Client\ApiException on non-2xx response + * @throws \InvalidArgumentException + * @return array of null, HTTP status code, HTTP response headers (array of strings) + */ + public function testBodyWithBinaryWithHttpInfo($body) + { + $request = $this->testBodyWithBinaryRequest($body); + + try { + $options = $this->createHttpClientOption(); + try { + $response = $this->client->send($request, $options); + } catch (RequestException $e) { + throw new ApiException( + "[{$e->getCode()}] {$e->getMessage()}", + (int) $e->getCode(), + $e->getResponse() ? $e->getResponse()->getHeaders() : null, + $e->getResponse() ? (string) $e->getResponse()->getBody() : null + ); + } + + $statusCode = $response->getStatusCode(); + + if ($statusCode < 200 || $statusCode > 299) { + throw new ApiException( + sprintf( + '[%d] Error connecting to the API (%s)', + $statusCode, + (string) $request->getUri() + ), + $statusCode, + $response->getHeaders(), + (string) $response->getBody() + ); + } + + return [null, $statusCode, $response->getHeaders()]; + + } catch (ApiException $e) { + switch ($e->getCode()) { + } + throw $e; + } + } + + /** + * Operation testBodyWithBinaryAsync + * + * @param \SplFileObject $body image to upload (required) + * + * @throws \InvalidArgumentException + * @return \GuzzleHttp\Promise\PromiseInterface + */ + public function testBodyWithBinaryAsync($body) + { + return $this->testBodyWithBinaryAsyncWithHttpInfo($body) + ->then( + function ($response) { + return $response[0]; + } + ); + } + + /** + * Operation testBodyWithBinaryAsyncWithHttpInfo + * + * @param \SplFileObject $body image to upload (required) + * + * @throws \InvalidArgumentException + * @return \GuzzleHttp\Promise\PromiseInterface + */ + public function testBodyWithBinaryAsyncWithHttpInfo($body) + { + $returnType = ''; + $request = $this->testBodyWithBinaryRequest($body); + + return $this->client + ->sendAsync($request, $this->createHttpClientOption()) + ->then( + function ($response) use ($returnType) { + return [null, $response->getStatusCode(), $response->getHeaders()]; + }, + function ($exception) { + $response = $exception->getResponse(); + $statusCode = $response->getStatusCode(); + throw new ApiException( + sprintf( + '[%d] Error connecting to the API (%s)', + $statusCode, + $exception->getRequest()->getUri() + ), + $statusCode, + $response->getHeaders(), + (string) $response->getBody() + ); + } + ); + } + + /** + * Create request for operation 'testBodyWithBinary' + * + * @param \SplFileObject $body image to upload (required) + * + * @throws \InvalidArgumentException + * @return \GuzzleHttp\Psr7\Request + */ + public function testBodyWithBinaryRequest($body) + { + // verify the required parameter 'body' is set + if ($body === null || (is_array($body) && count($body) === 0)) { + throw new \InvalidArgumentException( + 'Missing the required parameter $body when calling testBodyWithBinary' + ); + } + + $resourcePath = '/fake/body-with-binary'; + $formParams = []; + $queryParams = []; + $headerParams = []; + $httpBody = ''; + $multipart = false; + + + + + + if ($multipart) { + $headers = $this->headerSelector->selectHeadersForMultipart( + [] + ); + } else { + $headers = $this->headerSelector->selectHeaders( + [], + ['image/png'] + ); + } + + // for model (json/xml) + if (isset($body)) { + if ($headers['Content-Type'] === 'application/json') { + $httpBody = \GuzzleHttp\json_encode(ObjectSerializer::sanitizeForSerialization($body)); + } else { + $httpBody = $body; + } + } elseif (count($formParams) > 0) { + if ($multipart) { + $multipartContents = []; + foreach ($formParams as $formParamName => $formParamValue) { + $formParamValueItems = is_array($formParamValue) ? $formParamValue : [$formParamValue]; + foreach ($formParamValueItems as $formParamValueItem) { + $multipartContents[] = [ + 'name' => $formParamName, + 'contents' => $formParamValueItem + ]; + } + } + // for HTTP post (form) + $httpBody = new MultipartStream($multipartContents); + + } elseif ($headers['Content-Type'] === 'application/json') { + $httpBody = \GuzzleHttp\json_encode($formParams); + + } else { + // for HTTP post (form) + $httpBody = \GuzzleHttp\Psr7\build_query($formParams); + } + } + + + $defaultHeaders = []; + if ($this->config->getUserAgent()) { + $defaultHeaders['User-Agent'] = $this->config->getUserAgent(); + } + + $headers = array_merge( + $defaultHeaders, + $headerParams, + $headers + ); + + $query = \GuzzleHttp\Psr7\build_query($queryParams); + return new Request( + 'PUT', + $this->config->getHost() . $resourcePath . ($query ? "?{$query}" : ''), + $headers, + $httpBody + ); + } + /** * Operation testBodyWithFileSchema * diff --git a/samples/client/petstore/ruby-faraday/README.md b/samples/client/petstore/ruby-faraday/README.md index f7d8816e8ca..e4cc57adb51 100644 --- a/samples/client/petstore/ruby-faraday/README.md +++ b/samples/client/petstore/ruby-faraday/README.md @@ -84,6 +84,7 @@ Class | Method | HTTP request | Description *Petstore::FakeApi* | [**fake_outer_number_serialize**](docs/FakeApi.md#fake_outer_number_serialize) | **POST** /fake/outer/number | *Petstore::FakeApi* | [**fake_outer_string_serialize**](docs/FakeApi.md#fake_outer_string_serialize) | **POST** /fake/outer/string | *Petstore::FakeApi* | [**fake_property_enum_integer_serialize**](docs/FakeApi.md#fake_property_enum_integer_serialize) | **POST** /fake/property/enum-int | +*Petstore::FakeApi* | [**test_body_with_binary**](docs/FakeApi.md#test_body_with_binary) | **PUT** /fake/body-with-binary | *Petstore::FakeApi* | [**test_body_with_file_schema**](docs/FakeApi.md#test_body_with_file_schema) | **PUT** /fake/body-with-file-schema | *Petstore::FakeApi* | [**test_body_with_query_params**](docs/FakeApi.md#test_body_with_query_params) | **PUT** /fake/body-with-query-params | *Petstore::FakeApi* | [**test_client_model**](docs/FakeApi.md#test_client_model) | **PATCH** /fake | To test \"client\" model diff --git a/samples/client/petstore/ruby-faraday/docs/FakeApi.md b/samples/client/petstore/ruby-faraday/docs/FakeApi.md index ce74242565c..696f5ff4820 100644 --- a/samples/client/petstore/ruby-faraday/docs/FakeApi.md +++ b/samples/client/petstore/ruby-faraday/docs/FakeApi.md @@ -11,6 +11,7 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* | [**fake_outer_number_serialize**](FakeApi.md#fake_outer_number_serialize) | **POST** /fake/outer/number | | | [**fake_outer_string_serialize**](FakeApi.md#fake_outer_string_serialize) | **POST** /fake/outer/string | | | [**fake_property_enum_integer_serialize**](FakeApi.md#fake_property_enum_integer_serialize) | **POST** /fake/property/enum-int | | +| [**test_body_with_binary**](FakeApi.md#test_body_with_binary) | **PUT** /fake/body-with-binary | | | [**test_body_with_file_schema**](FakeApi.md#test_body_with_file_schema) | **PUT** /fake/body-with-file-schema | | | [**test_body_with_query_params**](FakeApi.md#test_body_with_query_params) | **PUT** /fake/body-with-query-params | | | [**test_client_model**](FakeApi.md#test_client_model) | **PATCH** /fake | To test \"client\" model | @@ -479,13 +480,76 @@ No authorization required - **Accept**: */* +## test_body_with_binary + +> test_body_with_binary(body) + + + +For this test, the body has to be a binary file. + +### Examples + +```ruby +require 'time' +require 'petstore' + +api_instance = Petstore::FakeApi.new +body = File.new('/path/to/some/file') # File | image to upload + +begin + + api_instance.test_body_with_binary(body) +rescue Petstore::ApiError => e + puts "Error when calling FakeApi->test_body_with_binary: #{e}" +end +``` + +#### Using the test_body_with_binary_with_http_info variant + +This returns an Array which contains the response data (`nil` in this case), status code and headers. + +> test_body_with_binary_with_http_info(body) + +```ruby +begin + + data, status_code, headers = api_instance.test_body_with_binary_with_http_info(body) + p status_code # => 2xx + p headers # => { ... } + p data # => nil +rescue Petstore::ApiError => e + puts "Error when calling FakeApi->test_body_with_binary_with_http_info: #{e}" +end +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---- | ---- | ----------- | ----- | +| **body** | **File** | image to upload | | + +### Return type + +nil (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: image/png +- **Accept**: Not defined + + ## test_body_with_file_schema > test_body_with_file_schema(file_schema_test_class) -For this test, the body for this request much reference a schema named `File`. +For this test, the body for this request must reference a schema named `File`. ### Examples diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb index 2155182abf5..eed4d7da429 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb @@ -440,7 +440,64 @@ module Petstore return data, status_code, headers end - # For this test, the body for this request much reference a schema named `File`. + # For this test, the body has to be a binary file. + # @param body [File] image to upload + # @param [Hash] opts the optional parameters + # @return [nil] + def test_body_with_binary(body, opts = {}) + test_body_with_binary_with_http_info(body, opts) + nil + end + + # For this test, the body has to be a binary file. + # @param body [File] image to upload + # @param [Hash] opts the optional parameters + # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers + def test_body_with_binary_with_http_info(body, opts = {}) + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: FakeApi.test_body_with_binary ...' + end + # resource path + local_var_path = '/fake/body-with-binary' + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Content-Type' + header_params['Content-Type'] = @api_client.select_header_content_type(['image/png']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] || @api_client.object_to_http_body(body) + + # return_type + return_type = opts[:debug_return_type] + + # auth_names + auth_names = opts[:debug_auth_names] || [] + + new_options = opts.merge( + :operation => :"FakeApi.test_body_with_binary", + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type + ) + + data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: FakeApi#test_body_with_binary\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # For this test, the body for this request must reference a schema named `File`. # @param file_schema_test_class [FileSchemaTestClass] # @param [Hash] opts the optional parameters # @return [nil] @@ -449,7 +506,7 @@ module Petstore nil end - # For this test, the body for this request much reference a schema named `File`. + # For this test, the body for this request must reference a schema named `File`. # @param file_schema_test_class [FileSchemaTestClass] # @param [Hash] opts the optional parameters # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers diff --git a/samples/client/petstore/ruby/README.md b/samples/client/petstore/ruby/README.md index f7d8816e8ca..e4cc57adb51 100644 --- a/samples/client/petstore/ruby/README.md +++ b/samples/client/petstore/ruby/README.md @@ -84,6 +84,7 @@ Class | Method | HTTP request | Description *Petstore::FakeApi* | [**fake_outer_number_serialize**](docs/FakeApi.md#fake_outer_number_serialize) | **POST** /fake/outer/number | *Petstore::FakeApi* | [**fake_outer_string_serialize**](docs/FakeApi.md#fake_outer_string_serialize) | **POST** /fake/outer/string | *Petstore::FakeApi* | [**fake_property_enum_integer_serialize**](docs/FakeApi.md#fake_property_enum_integer_serialize) | **POST** /fake/property/enum-int | +*Petstore::FakeApi* | [**test_body_with_binary**](docs/FakeApi.md#test_body_with_binary) | **PUT** /fake/body-with-binary | *Petstore::FakeApi* | [**test_body_with_file_schema**](docs/FakeApi.md#test_body_with_file_schema) | **PUT** /fake/body-with-file-schema | *Petstore::FakeApi* | [**test_body_with_query_params**](docs/FakeApi.md#test_body_with_query_params) | **PUT** /fake/body-with-query-params | *Petstore::FakeApi* | [**test_client_model**](docs/FakeApi.md#test_client_model) | **PATCH** /fake | To test \"client\" model diff --git a/samples/client/petstore/ruby/docs/FakeApi.md b/samples/client/petstore/ruby/docs/FakeApi.md index ce74242565c..696f5ff4820 100644 --- a/samples/client/petstore/ruby/docs/FakeApi.md +++ b/samples/client/petstore/ruby/docs/FakeApi.md @@ -11,6 +11,7 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* | [**fake_outer_number_serialize**](FakeApi.md#fake_outer_number_serialize) | **POST** /fake/outer/number | | | [**fake_outer_string_serialize**](FakeApi.md#fake_outer_string_serialize) | **POST** /fake/outer/string | | | [**fake_property_enum_integer_serialize**](FakeApi.md#fake_property_enum_integer_serialize) | **POST** /fake/property/enum-int | | +| [**test_body_with_binary**](FakeApi.md#test_body_with_binary) | **PUT** /fake/body-with-binary | | | [**test_body_with_file_schema**](FakeApi.md#test_body_with_file_schema) | **PUT** /fake/body-with-file-schema | | | [**test_body_with_query_params**](FakeApi.md#test_body_with_query_params) | **PUT** /fake/body-with-query-params | | | [**test_client_model**](FakeApi.md#test_client_model) | **PATCH** /fake | To test \"client\" model | @@ -479,13 +480,76 @@ No authorization required - **Accept**: */* +## test_body_with_binary + +> test_body_with_binary(body) + + + +For this test, the body has to be a binary file. + +### Examples + +```ruby +require 'time' +require 'petstore' + +api_instance = Petstore::FakeApi.new +body = File.new('/path/to/some/file') # File | image to upload + +begin + + api_instance.test_body_with_binary(body) +rescue Petstore::ApiError => e + puts "Error when calling FakeApi->test_body_with_binary: #{e}" +end +``` + +#### Using the test_body_with_binary_with_http_info variant + +This returns an Array which contains the response data (`nil` in this case), status code and headers. + +> test_body_with_binary_with_http_info(body) + +```ruby +begin + + data, status_code, headers = api_instance.test_body_with_binary_with_http_info(body) + p status_code # => 2xx + p headers # => { ... } + p data # => nil +rescue Petstore::ApiError => e + puts "Error when calling FakeApi->test_body_with_binary_with_http_info: #{e}" +end +``` + +### Parameters + +| Name | Type | Description | Notes | +| ---- | ---- | ----------- | ----- | +| **body** | **File** | image to upload | | + +### Return type + +nil (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: image/png +- **Accept**: Not defined + + ## test_body_with_file_schema > test_body_with_file_schema(file_schema_test_class) -For this test, the body for this request much reference a schema named `File`. +For this test, the body for this request must reference a schema named `File`. ### Examples diff --git a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb index 2155182abf5..eed4d7da429 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb @@ -440,7 +440,64 @@ module Petstore return data, status_code, headers end - # For this test, the body for this request much reference a schema named `File`. + # For this test, the body has to be a binary file. + # @param body [File] image to upload + # @param [Hash] opts the optional parameters + # @return [nil] + def test_body_with_binary(body, opts = {}) + test_body_with_binary_with_http_info(body, opts) + nil + end + + # For this test, the body has to be a binary file. + # @param body [File] image to upload + # @param [Hash] opts the optional parameters + # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers + def test_body_with_binary_with_http_info(body, opts = {}) + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: FakeApi.test_body_with_binary ...' + end + # resource path + local_var_path = '/fake/body-with-binary' + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Content-Type' + header_params['Content-Type'] = @api_client.select_header_content_type(['image/png']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] || @api_client.object_to_http_body(body) + + # return_type + return_type = opts[:debug_return_type] + + # auth_names + auth_names = opts[:debug_auth_names] || [] + + new_options = opts.merge( + :operation => :"FakeApi.test_body_with_binary", + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type + ) + + data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: FakeApi#test_body_with_binary\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # For this test, the body for this request must reference a schema named `File`. # @param file_schema_test_class [FileSchemaTestClass] # @param [Hash] opts the optional parameters # @return [nil] @@ -449,7 +506,7 @@ module Petstore nil end - # For this test, the body for this request much reference a schema named `File`. + # For this test, the body for this request must reference a schema named `File`. # @param file_schema_test_class [FileSchemaTestClass] # @param [Hash] opts the optional parameters # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/FakeApi.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/FakeApi.ts index 358d9a5b09b..a1f992e866c 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/FakeApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/FakeApi.ts @@ -64,6 +64,10 @@ export interface FakePropertyEnumIntegerSerializeRequest { outerObjectWithEnumProperty: OuterObjectWithEnumProperty; } +export interface TestBodyWithBinaryRequest { + body: Blob | null; +} + export interface TestBodyWithFileSchemaRequest { fileSchemaTestClass: FileSchemaTestClass; } @@ -352,7 +356,39 @@ export class FakeApi extends runtime.BaseAPI { } /** - * For this test, the body for this request much reference a schema named `File`. + * For this test, the body has to be a binary file. + */ + async testBodyWithBinaryRaw(requestParameters: TestBodyWithBinaryRequest): Promise> { + if (requestParameters.body === null || requestParameters.body === undefined) { + throw new runtime.RequiredError('body','Required parameter requestParameters.body was null or undefined when calling testBodyWithBinary.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'image/png'; + + const response = await this.request({ + path: `/fake/body-with-binary`, + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: requestParameters.body as any, + }); + + return new runtime.VoidApiResponse(response); + } + + /** + * For this test, the body has to be a binary file. + */ + async testBodyWithBinary(requestParameters: TestBodyWithBinaryRequest): Promise { + await this.testBodyWithBinaryRaw(requestParameters); + } + + /** + * For this test, the body for this request must reference a schema named `File`. */ async testBodyWithFileSchemaRaw(requestParameters: TestBodyWithFileSchemaRequest): Promise> { if (requestParameters.fileSchemaTestClass === null || requestParameters.fileSchemaTestClass === undefined) { @@ -377,7 +413,7 @@ export class FakeApi extends runtime.BaseAPI { } /** - * For this test, the body for this request much reference a schema named `File`. + * For this test, the body for this request must reference a schema named `File`. */ async testBodyWithFileSchema(requestParameters: TestBodyWithFileSchemaRequest): Promise { await this.testBodyWithFileSchemaRaw(requestParameters); diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md index 48f3b73ec03..0e312d4370d 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/README.md @@ -73,6 +73,7 @@ Class | Method | HTTP request | Description [*FakeApi*](doc/FakeApi.md) | [**fakeOuterNumberSerialize**](doc/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | [*FakeApi*](doc/FakeApi.md) | [**fakeOuterStringSerialize**](doc/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | [*FakeApi*](doc/FakeApi.md) | [**fakePropertyEnumIntegerSerialize**](doc/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +[*FakeApi*](doc/FakeApi.md) | [**testBodyWithBinary**](doc/FakeApi.md#testbodywithbinary) | **PUT** /fake/body-with-binary | [*FakeApi*](doc/FakeApi.md) | [**testBodyWithFileSchema**](doc/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | [*FakeApi*](doc/FakeApi.md) | [**testBodyWithQueryParams**](doc/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | [*FakeApi*](doc/FakeApi.md) | [**testClientModel**](doc/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeApi.md b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeApi.md index 00d1bde3e34..b8e90ea6074 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeApi.md +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/doc/FakeApi.md @@ -16,6 +16,7 @@ Method | HTTP request | Description [**fakeOuterNumberSerialize**](FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | [**fakeOuterStringSerialize**](FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | [**fakePropertyEnumIntegerSerialize**](FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +[**testBodyWithBinary**](FakeApi.md#testbodywithbinary) | **PUT** /fake/body-with-binary | [**testBodyWithFileSchema**](FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | [**testBodyWithQueryParams**](FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | [**testClientModel**](FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model @@ -326,12 +327,54 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **testBodyWithBinary** +> testBodyWithBinary(body) + + + +For this test, the body has to be a binary file. + +### Example +```dart +import 'package:openapi/api.dart'; + +final api = Openapi().getFakeApi(); +final MultipartFile body = BINARY_DATA_HERE; // MultipartFile | image to upload + +try { + api.testBodyWithBinary(body); +} catch on DioError (e) { + print('Exception when calling FakeApi->testBodyWithBinary: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **MultipartFile**| image to upload | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: image/png + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **testBodyWithFileSchema** > testBodyWithFileSchema(fileSchemaTestClass) -For this test, the body for this request much reference a schema named `File`. +For this test, the body for this request must reference a schema named `File`. ### Example ```dart diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart index 583f89de933..20e4483e544 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart @@ -660,8 +660,78 @@ class FakeApi { ); } + /// testBodyWithBinary + /// For this test, the body has to be a binary file. + /// + /// Parameters: + /// * [body] - image to upload + /// * [cancelToken] - A [CancelToken] that can be used to cancel the operation + /// * [headers] - Can be used to add additional headers to the request + /// * [extras] - Can be used to add flags to the request + /// * [validateStatus] - A [ValidateStatus] callback that can be used to determine request success based on the HTTP status of the response + /// * [onSendProgress] - A [ProgressCallback] that can be used to get the send progress + /// * [onReceiveProgress] - A [ProgressCallback] that can be used to get the receive progress + /// + /// Returns a [Future] + /// Throws [DioError] if API call or serialization fails + Future> testBodyWithBinary({ + required MultipartFile body, + CancelToken? cancelToken, + Map? headers, + Map? extra, + ValidateStatus? validateStatus, + ProgressCallback? onSendProgress, + ProgressCallback? onReceiveProgress, + }) async { + final _path = r'/fake/body-with-binary'; + final _options = Options( + method: r'PUT', + headers: { + ...?headers, + }, + extra: { + 'secure': >[], + ...?extra, + }, + contentType: 'image/png', + validateStatus: validateStatus, + ); + + final _queryParameters = { + }; + + dynamic _bodyData; + + try { + _bodyData = body.finalize(); + + } catch(error, stackTrace) { + throw DioError( + requestOptions: _options.compose( + _dio.options, + _path, + queryParameters: _queryParameters, + ), + type: DioErrorType.other, + error: error, + )..stackTrace = stackTrace; + } + + final _response = await _dio.request( + _path, + data: _bodyData, + options: _options, + queryParameters: _queryParameters, + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + return _response; + } + /// testBodyWithFileSchema - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body for this request must reference a schema named `File`. /// /// Parameters: /// * [fileSchemaTestClass] diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md index 22789ae7761..b1d9fbe962c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/README.md @@ -67,6 +67,7 @@ Class | Method | HTTP request | Description *FakeApi* | [**fakeOuterNumberSerialize**](doc/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | *FakeApi* | [**fakeOuterStringSerialize**](doc/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | *FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc/FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithBinary**](doc/FakeApi.md#testbodywithbinary) | **PUT** /fake/body-with-binary | *FakeApi* | [**testBodyWithFileSchema**](doc/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | *FakeApi* | [**testBodyWithQueryParams**](doc/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | *FakeApi* | [**testClientModel**](doc/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FakeApi.md b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FakeApi.md index b28fe4abbe3..da4601dbec5 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FakeApi.md +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/doc/FakeApi.md @@ -16,6 +16,7 @@ Method | HTTP request | Description [**fakeOuterNumberSerialize**](FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | [**fakeOuterStringSerialize**](FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | [**fakePropertyEnumIntegerSerialize**](FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +[**testBodyWithBinary**](FakeApi.md#testbodywithbinary) | **PUT** /fake/body-with-binary | [**testBodyWithFileSchema**](FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | [**testBodyWithQueryParams**](FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | [**testClientModel**](FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model @@ -326,12 +327,54 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **testBodyWithBinary** +> testBodyWithBinary(body) + + + +For this test, the body has to be a binary file. + +### Example +```dart +import 'package:openapi/api.dart'; + +var api_instance = new FakeApi(); +var body = new Uint8List(); // Uint8List | image to upload + +try { + api_instance.testBodyWithBinary(body); +} catch (e) { + print('Exception when calling FakeApi->testBodyWithBinary: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **Uint8List**| image to upload | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: image/png + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **testBodyWithFileSchema** > testBodyWithFileSchema(fileSchemaTestClass) -For this test, the body for this request much reference a schema named `File`. +For this test, the body for this request must reference a schema named `File`. ### Example ```dart diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart index a8310d5f4a2..9dadc9c1988 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/lib/api/fake_api.dart @@ -413,7 +413,49 @@ class FakeApi { /// /// - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body has to be a binary file. + Future> testBodyWithBinary( + Uint8List body, { + CancelToken cancelToken, + Map headers, + Map extra, + ValidateStatus validateStatus, + ProgressCallback onSendProgress, + ProgressCallback onReceiveProgress, + }) async { + final _request = RequestOptions( + path: r'/fake/body-with-binary', + method: 'PUT', + headers: { + ...?headers, + }, + extra: { + 'secure': >[], + ...?extra, + }, + validateStatus: validateStatus, + contentType: 'image/png', + cancelToken: cancelToken, + onSendProgress: onSendProgress, + onReceiveProgress: onReceiveProgress, + ); + + dynamic _bodyData; + + _bodyData = body; + + final _response = await _dio.request( + _request.path, + data: _bodyData, + options: _request, + ); + + return _response; + } + + /// + /// + /// For this test, the body for this request must reference a schema named `File`. Future> testBodyWithFileSchema( FileSchemaTestClass fileSchemaTestClass, { CancelToken cancelToken, diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md index fe39c2f2126..ec001c87cea 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/README.md @@ -67,6 +67,7 @@ Class | Method | HTTP request | Description *FakeApi* | [**fakeOuterNumberSerialize**](doc//FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | *FakeApi* | [**fakeOuterStringSerialize**](doc//FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | *FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc//FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithBinary**](doc//FakeApi.md#testbodywithbinary) | **PUT** /fake/body-with-binary | *FakeApi* | [**testBodyWithFileSchema**](doc//FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | *FakeApi* | [**testBodyWithQueryParams**](doc//FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | *FakeApi* | [**testClientModel**](doc//FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/doc/FakeApi.md b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/doc/FakeApi.md index 8b7f63bf8bd..6d613003880 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/doc/FakeApi.md +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/doc/FakeApi.md @@ -16,6 +16,7 @@ Method | HTTP request | Description [**fakeOuterNumberSerialize**](FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | [**fakeOuterStringSerialize**](FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | [**fakePropertyEnumIntegerSerialize**](FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +[**testBodyWithBinary**](FakeApi.md#testbodywithbinary) | **PUT** /fake/body-with-binary | [**testBodyWithFileSchema**](FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | [**testBodyWithQueryParams**](FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | [**testClientModel**](FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model @@ -323,12 +324,54 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **testBodyWithBinary** +> testBodyWithBinary(body) + + + +For this test, the body has to be a binary file. + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final body = MultipartFile(); // MultipartFile | image to upload + +try { + api_instance.testBodyWithBinary(body); +} catch (e) { + print('Exception when calling FakeApi->testBodyWithBinary: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **MultipartFile**| image to upload | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: image/png + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **testBodyWithFileSchema** > testBodyWithFileSchema(fileSchemaTestClass) -For this test, the body for this request much reference a schema named `File`. +For this test, the body for this request must reference a schema named `File`. ### Example ```dart diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart index 95eb36aacdf..03731c1bf00 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart @@ -414,7 +414,59 @@ class FakeApi { return Future.value(null); } - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body has to be a binary file. + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [MultipartFile] body (required): + /// image to upload + Future testBodyWithBinaryWithHttpInfo(MultipartFile body) async { + // Verify required params are set. + if (body == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: body'); + } + + final path = r'/fake/body-with-binary'; + + Object postBody = body; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['image/png']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + + return await apiClient.invokeAPI( + path, + 'PUT', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// For this test, the body has to be a binary file. + /// + /// Parameters: + /// + /// * [MultipartFile] body (required): + /// image to upload + Future testBodyWithBinary(MultipartFile body) async { + final response = await testBodyWithBinaryWithHttpInfo(body); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, await _decodeBodyBytes(response)); + } + } + + /// For this test, the body for this request must reference a schema named `File`. /// /// Note: This method returns the HTTP [Response]. /// @@ -452,7 +504,7 @@ class FakeApi { ); } - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body for this request must reference a schema named `File`. /// /// Parameters: /// diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md index fe39c2f2126..ec001c87cea 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/README.md @@ -67,6 +67,7 @@ Class | Method | HTTP request | Description *FakeApi* | [**fakeOuterNumberSerialize**](doc//FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | *FakeApi* | [**fakeOuterStringSerialize**](doc//FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | *FakeApi* | [**fakePropertyEnumIntegerSerialize**](doc//FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**testBodyWithBinary**](doc//FakeApi.md#testbodywithbinary) | **PUT** /fake/body-with-binary | *FakeApi* | [**testBodyWithFileSchema**](doc//FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | *FakeApi* | [**testBodyWithQueryParams**](doc//FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | *FakeApi* | [**testClientModel**](doc//FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FakeApi.md b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FakeApi.md index 8b7f63bf8bd..6d613003880 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FakeApi.md +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/doc/FakeApi.md @@ -16,6 +16,7 @@ Method | HTTP request | Description [**fakeOuterNumberSerialize**](FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | [**fakeOuterStringSerialize**](FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | [**fakePropertyEnumIntegerSerialize**](FakeApi.md#fakepropertyenumintegerserialize) | **POST** /fake/property/enum-int | +[**testBodyWithBinary**](FakeApi.md#testbodywithbinary) | **PUT** /fake/body-with-binary | [**testBodyWithFileSchema**](FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | [**testBodyWithQueryParams**](FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | [**testClientModel**](FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model @@ -323,12 +324,54 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **testBodyWithBinary** +> testBodyWithBinary(body) + + + +For this test, the body has to be a binary file. + +### Example +```dart +import 'package:openapi/api.dart'; + +final api_instance = FakeApi(); +final body = MultipartFile(); // MultipartFile | image to upload + +try { + api_instance.testBodyWithBinary(body); +} catch (e) { + print('Exception when calling FakeApi->testBodyWithBinary: $e\n'); +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **MultipartFile**| image to upload | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: image/png + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **testBodyWithFileSchema** > testBodyWithFileSchema(fileSchemaTestClass) -For this test, the body for this request much reference a schema named `File`. +For this test, the body for this request must reference a schema named `File`. ### Example ```dart diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart index 2386fdfe4d5..9790ef7222c 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart @@ -420,7 +420,59 @@ class FakeApi { return Future.value(null); } - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body has to be a binary file. + /// + /// Note: This method returns the HTTP [Response]. + /// + /// Parameters: + /// + /// * [MultipartFile] body (required): + /// image to upload + Future testBodyWithBinaryWithHttpInfo(MultipartFile body) async { + // Verify required params are set. + if (body == null) { + throw ApiException(HttpStatus.badRequest, 'Missing required param: body'); + } + + final path = r'/fake/body-with-binary'; + + Object postBody = body; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + + final contentTypes = ['image/png']; + final nullableContentType = contentTypes.isNotEmpty ? contentTypes[0] : null; + final authNames = []; + + + return await apiClient.invokeAPI( + path, + 'PUT', + queryParams, + postBody, + headerParams, + formParams, + nullableContentType, + authNames, + ); + } + + /// For this test, the body has to be a binary file. + /// + /// Parameters: + /// + /// * [MultipartFile] body (required): + /// image to upload + Future testBodyWithBinary(MultipartFile body) async { + final response = await testBodyWithBinaryWithHttpInfo(body); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, await _decodeBodyBytes(response)); + } + } + + /// For this test, the body for this request must reference a schema named `File`. /// /// Note: This method returns the HTTP [Response]. /// @@ -458,7 +510,7 @@ class FakeApi { ); } - /// For this test, the body for this request much reference a schema named `File`. + /// For this test, the body for this request must reference a schema named `File`. /// /// Parameters: /// diff --git a/samples/openapi3/client/petstore/python-legacy/README.md b/samples/openapi3/client/petstore/python-legacy/README.md index 65ce00102b4..507b849f5b2 100755 --- a/samples/openapi3/client/petstore/python-legacy/README.md +++ b/samples/openapi3/client/petstore/python-legacy/README.md @@ -90,6 +90,7 @@ Class | Method | HTTP request | Description *FakeApi* | [**fake_outer_number_serialize**](docs/FakeApi.md#fake_outer_number_serialize) | **POST** /fake/outer/number | *FakeApi* | [**fake_outer_string_serialize**](docs/FakeApi.md#fake_outer_string_serialize) | **POST** /fake/outer/string | *FakeApi* | [**fake_property_enum_integer_serialize**](docs/FakeApi.md#fake_property_enum_integer_serialize) | **POST** /fake/property/enum-int | +*FakeApi* | [**test_body_with_binary**](docs/FakeApi.md#test_body_with_binary) | **PUT** /fake/body-with-binary | *FakeApi* | [**test_body_with_file_schema**](docs/FakeApi.md#test_body_with_file_schema) | **PUT** /fake/body-with-file-schema | *FakeApi* | [**test_body_with_query_params**](docs/FakeApi.md#test_body_with_query_params) | **PUT** /fake/body-with-query-params | *FakeApi* | [**test_client_model**](docs/FakeApi.md#test_client_model) | **PATCH** /fake | To test \"client\" model diff --git a/samples/openapi3/client/petstore/python-legacy/docs/FakeApi.md b/samples/openapi3/client/petstore/python-legacy/docs/FakeApi.md index f7bbbecdce6..f958d8f71a0 100755 --- a/samples/openapi3/client/petstore/python-legacy/docs/FakeApi.md +++ b/samples/openapi3/client/petstore/python-legacy/docs/FakeApi.md @@ -11,6 +11,7 @@ Method | HTTP request | Description [**fake_outer_number_serialize**](FakeApi.md#fake_outer_number_serialize) | **POST** /fake/outer/number | [**fake_outer_string_serialize**](FakeApi.md#fake_outer_string_serialize) | **POST** /fake/outer/string | [**fake_property_enum_integer_serialize**](FakeApi.md#fake_property_enum_integer_serialize) | **POST** /fake/property/enum-int | +[**test_body_with_binary**](FakeApi.md#test_body_with_binary) | **PUT** /fake/body-with-binary | [**test_body_with_file_schema**](FakeApi.md#test_body_with_file_schema) | **PUT** /fake/body-with-file-schema | [**test_body_with_query_params**](FakeApi.md#test_body_with_query_params) | **PUT** /fake/body-with-query-params | [**test_client_model**](FakeApi.md#test_client_model) | **PATCH** /fake | To test \"client\" model @@ -510,12 +511,72 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **test_body_with_binary** +> test_body_with_binary(body) + + + +For this test, the body has to be a binary file. + +### Example + +```python +from __future__ import print_function +import time +import petstore_api +from petstore_api.rest import ApiException +from pprint import pprint +# Defining the host is optional and defaults to http://petstore.swagger.io:80/v2 +# See configuration.py for a list of all supported configuration parameters. +configuration = petstore_api.Configuration( + host = "http://petstore.swagger.io:80/v2" +) + + +# Enter a context with an instance of the API client +with petstore_api.ApiClient() as api_client: + # Create an instance of the API class + api_instance = petstore_api.FakeApi(api_client) + body = '/path/to/file' # file | image to upload + + try: + api_instance.test_body_with_binary(body) + except ApiException as e: + print("Exception when calling FakeApi->test_body_with_binary: %s\n" % e) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **file**| image to upload | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: image/png + - **Accept**: Not defined + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Success | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **test_body_with_file_schema** > test_body_with_file_schema(file_schema_test_class) -For this test, the body for this request much reference a schema named `File`. +For this test, the body for this request must reference a schema named `File`. ### Example diff --git a/samples/openapi3/client/petstore/python-legacy/petstore_api/api/fake_api.py b/samples/openapi3/client/petstore/python-legacy/petstore_api/api/fake_api.py index d5dd027679e..d81dc4866d9 100755 --- a/samples/openapi3/client/petstore/python-legacy/petstore_api/api/fake_api.py +++ b/samples/openapi3/client/petstore/python-legacy/petstore_api/api/fake_api.py @@ -982,10 +982,139 @@ class FakeApi(object): collection_formats=collection_formats, _request_auth=local_var_params.get('_request_auth')) + def test_body_with_binary(self, body, **kwargs): # noqa: E501 + """test_body_with_binary # noqa: E501 + + For this test, the body has to be a binary file. # noqa: E501 + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + + >>> thread = api.test_body_with_binary(body, async_req=True) + >>> result = thread.get() + + :param body: image to upload (required) + :type body: file + :param async_req: Whether to execute the request asynchronously. + :type async_req: bool, optional + :param _preload_content: if False, the urllib3.HTTPResponse object will + be returned without reading/decoding response + data. Default is True. + :type _preload_content: bool, optional + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :return: Returns the result object. + If the method is called asynchronously, + returns the request thread. + :rtype: None + """ + kwargs['_return_http_data_only'] = True + return self.test_body_with_binary_with_http_info(body, **kwargs) # noqa: E501 + + def test_body_with_binary_with_http_info(self, body, **kwargs): # noqa: E501 + """test_body_with_binary # noqa: E501 + + For this test, the body has to be a binary file. # noqa: E501 + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + + >>> thread = api.test_body_with_binary_with_http_info(body, async_req=True) + >>> result = thread.get() + + :param body: image to upload (required) + :type body: file + :param async_req: Whether to execute the request asynchronously. + :type async_req: bool, optional + :param _return_http_data_only: response data without head status code + and headers + :type _return_http_data_only: bool, optional + :param _preload_content: if False, the urllib3.HTTPResponse object will + be returned without reading/decoding response + data. Default is True. + :type _preload_content: bool, optional + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the authentication + in the spec for a single request. + :type _request_auth: dict, optional + :return: Returns the result object. + If the method is called asynchronously, + returns the request thread. + :rtype: None + """ + + local_var_params = locals() + + all_params = [ + 'body' + ] + all_params.extend( + [ + 'async_req', + '_return_http_data_only', + '_preload_content', + '_request_timeout', + '_request_auth' + ] + ) + + for key, val in six.iteritems(local_var_params['kwargs']): + if key not in all_params: + raise ApiTypeError( + "Got an unexpected keyword argument '%s'" + " to method test_body_with_binary" % key + ) + local_var_params[key] = val + del local_var_params['kwargs'] + + collection_formats = {} + + path_params = {} + + query_params = [] + + header_params = {} + + form_params = [] + local_var_files = {} + + body_params = None + if 'body' in local_var_params: + body_params = local_var_params['body'] + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['image/png']) # noqa: E501 + + # Authentication setting + auth_settings = [] # noqa: E501 + + response_types_map = {} + + return self.api_client.call_api( + '/fake/body-with-binary', 'PUT', + path_params, + query_params, + header_params, + body=body_params, + post_params=form_params, + files=local_var_files, + response_types_map=response_types_map, + auth_settings=auth_settings, + async_req=local_var_params.get('async_req'), + _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501 + _preload_content=local_var_params.get('_preload_content', True), + _request_timeout=local_var_params.get('_request_timeout'), + collection_formats=collection_formats, + _request_auth=local_var_params.get('_request_auth')) + def test_body_with_file_schema(self, file_schema_test_class, **kwargs): # noqa: E501 """test_body_with_file_schema # noqa: E501 - For this test, the body for this request much reference a schema named `File`. # noqa: E501 + For this test, the body for this request must reference a schema named `File`. # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True @@ -1015,7 +1144,7 @@ class FakeApi(object): def test_body_with_file_schema_with_http_info(self, file_schema_test_class, **kwargs): # noqa: E501 """test_body_with_file_schema # noqa: E501 - For this test, the body for this request much reference a schema named `File`. # noqa: E501 + For this test, the body for this request must reference a schema named `File`. # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True diff --git a/samples/server/petstore/jaxrs-jersey/src/gen/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/jaxrs-jersey/src/gen/java/org/openapitools/api/FakeApi.java index 43796a701ef..9cfd7cd8869 100644 --- a/samples/server/petstore/jaxrs-jersey/src/gen/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/jaxrs-jersey/src/gen/java/org/openapitools/api/FakeApi.java @@ -153,10 +153,22 @@ public class FakeApi { return delegate.fakePropertyEnumIntegerSerialize(outerObjectWithEnumProperty, securityContext); } @PUT + @Path("/body-with-binary") + @Consumes({ "image/png" }) + + @io.swagger.annotations.ApiOperation(value = "", notes = "For this test, the body has to be a binary file.", response = Void.class, tags={ "fake", }) + @io.swagger.annotations.ApiResponses(value = { + @io.swagger.annotations.ApiResponse(code = 200, message = "Success", response = Void.class) + }) + public Response testBodyWithBinary(@ApiParam(value = "image to upload", required = true) @NotNull File body,@Context SecurityContext securityContext) + throws NotFoundException { + return delegate.testBodyWithBinary(body, securityContext); + } + @PUT @Path("/body-with-file-schema") @Consumes({ "application/json" }) - @io.swagger.annotations.ApiOperation(value = "", notes = "For this test, the body for this request much reference a schema named `File`.", response = Void.class, tags={ "fake", }) + @io.swagger.annotations.ApiOperation(value = "", notes = "For this test, the body for this request must reference a schema named `File`.", response = Void.class, tags={ "fake", }) @io.swagger.annotations.ApiResponses(value = { @io.swagger.annotations.ApiResponse(code = 200, message = "Success", response = Void.class) }) diff --git a/samples/server/petstore/jaxrs-jersey/src/gen/java/org/openapitools/api/FakeApiService.java b/samples/server/petstore/jaxrs-jersey/src/gen/java/org/openapitools/api/FakeApiService.java index 60685a8f5ff..e5c1a063e88 100644 --- a/samples/server/petstore/jaxrs-jersey/src/gen/java/org/openapitools/api/FakeApiService.java +++ b/samples/server/petstore/jaxrs-jersey/src/gen/java/org/openapitools/api/FakeApiService.java @@ -35,6 +35,7 @@ public abstract class FakeApiService { public abstract Response fakeOuterNumberSerialize(BigDecimal body,SecurityContext securityContext) throws NotFoundException; public abstract Response fakeOuterStringSerialize(String body,SecurityContext securityContext) throws NotFoundException; public abstract Response fakePropertyEnumIntegerSerialize(OuterObjectWithEnumProperty outerObjectWithEnumProperty,SecurityContext securityContext) throws NotFoundException; + public abstract Response testBodyWithBinary(File body,SecurityContext securityContext) throws NotFoundException; public abstract Response testBodyWithFileSchema(FileSchemaTestClass fileSchemaTestClass,SecurityContext securityContext) throws NotFoundException; public abstract Response testBodyWithQueryParams( @NotNull String query,User user,SecurityContext securityContext) throws NotFoundException; public abstract Response testClientModel(Client client,SecurityContext securityContext) throws NotFoundException; diff --git a/samples/server/petstore/jaxrs-jersey/src/main/java/org/openapitools/api/impl/FakeApiServiceImpl.java b/samples/server/petstore/jaxrs-jersey/src/main/java/org/openapitools/api/impl/FakeApiServiceImpl.java index 10c9235fe62..b9b56985363 100644 --- a/samples/server/petstore/jaxrs-jersey/src/main/java/org/openapitools/api/impl/FakeApiServiceImpl.java +++ b/samples/server/petstore/jaxrs-jersey/src/main/java/org/openapitools/api/impl/FakeApiServiceImpl.java @@ -64,6 +64,11 @@ public class FakeApiServiceImpl extends FakeApiService { return Response.ok().entity(new ApiResponseMessage(ApiResponseMessage.OK, "magic!")).build(); } @Override + public Response testBodyWithBinary(File body, SecurityContext securityContext) throws NotFoundException { + // do some magic! + return Response.ok().entity(new ApiResponseMessage(ApiResponseMessage.OK, "magic!")).build(); + } + @Override public Response testBodyWithFileSchema(FileSchemaTestClass fileSchemaTestClass, SecurityContext securityContext) throws NotFoundException { // do some magic! return Response.ok().entity(new ApiResponseMessage(ApiResponseMessage.OK, "magic!")).build(); diff --git a/samples/server/petstore/php-laravel/lib/app/Http/Controllers/FakeController.php b/samples/server/petstore/php-laravel/lib/app/Http/Controllers/FakeController.php index cb3da629aaa..a0b1238d92e 100644 --- a/samples/server/petstore/php-laravel/lib/app/Http/Controllers/FakeController.php +++ b/samples/server/petstore/php-laravel/lib/app/Http/Controllers/FakeController.php @@ -228,6 +228,30 @@ class FakeController extends Controller return response('How about implementing testGroupParameters as a delete method ?'); } + /** + * Operation testBodyWithBinary + * + * . + * + * + * @return Http response + */ + public function testBodyWithBinary() + { + $input = Request::all(); + + //path params validation + + + //not path params validation + if (!isset($input['body'])) { + throw new \InvalidArgumentException('Missing the required parameter $body when calling testBodyWithBinary'); + } + $body = $input['body']; + + + return response('How about implementing testBodyWithBinary as a put method ?'); + } /** * Operation testBodyWithFileSchema * diff --git a/samples/server/petstore/php-laravel/lib/routes/api.php b/samples/server/petstore/php-laravel/lib/routes/api.php index 856cc66810a..fec2cea4a3c 100644 --- a/samples/server/petstore/php-laravel/lib/routes/api.php +++ b/samples/server/petstore/php-laravel/lib/routes/api.php @@ -63,10 +63,17 @@ Route::get('/v2/fake', 'FakeController@testEnumParameters'); */ Route::delete('/v2/fake', 'FakeController@testGroupParameters'); +/** + * put testBodyWithBinary + * Summary: + * Notes: For this test, the body has to be a binary file. + + */ +Route::put('/v2/fake/body-with-binary', 'FakeController@testBodyWithBinary'); /** * put testBodyWithFileSchema * Summary: - * Notes: For this test, the body for this request much reference a schema named `File`. + * Notes: For this test, the body for this request must reference a schema named `File`. */ Route::put('/v2/fake/body-with-file-schema', 'FakeController@testBodyWithFileSchema'); diff --git a/samples/server/petstore/php-lumen/lib/app/Http/Controllers/FakeApi.php b/samples/server/petstore/php-lumen/lib/app/Http/Controllers/FakeApi.php index 86e5ae7356f..e3b631dd097 100644 --- a/samples/server/petstore/php-lumen/lib/app/Http/Controllers/FakeApi.php +++ b/samples/server/petstore/php-lumen/lib/app/Http/Controllers/FakeApi.php @@ -224,6 +224,30 @@ class FakeApi extends Controller return response('How about implementing testGroupParameters as a delete method ?'); } + /** + * Operation testBodyWithBinary + * + * . + * + * + * @return Http response + */ + public function testBodyWithBinary() + { + $input = Request::all(); + + //path params validation + + + //not path params validation + if (!isset($input['body'])) { + throw new \InvalidArgumentException('Missing the required parameter $body when calling testBodyWithBinary'); + } + $body = $input['body']; + + + return response('How about implementing testBodyWithBinary as a put method ?'); + } /** * Operation testBodyWithFileSchema * diff --git a/samples/server/petstore/php-lumen/lib/routes/web.php b/samples/server/petstore/php-lumen/lib/routes/web.php index f159b8da780..9831967079f 100644 --- a/samples/server/petstore/php-lumen/lib/routes/web.php +++ b/samples/server/petstore/php-lumen/lib/routes/web.php @@ -79,10 +79,17 @@ $router->get('/v2/fake', 'FakeApi@testEnumParameters'); */ $router->delete('/v2/fake', 'FakeApi@testGroupParameters'); +/** + * put testBodyWithBinary + * Summary: + * Notes: For this test, the body has to be a binary file. + */ +$router->put('/v2/fake/body-with-binary', 'FakeApi@testBodyWithBinary'); + /** * put testBodyWithFileSchema * Summary: - * Notes: For this test, the body for this request much reference a schema named `File`. + * Notes: For this test, the body for this request must reference a schema named `File`. */ $router->put('/v2/fake/body-with-file-schema', 'FakeApi@testBodyWithFileSchema'); From dee2840b20d469627769e5fc7f4cf4af814e3e1d Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Sun, 30 May 2021 10:40:09 +0100 Subject: [PATCH 064/192] [swift5][client] improve docs for Data (#9605) --- .../org/openapitools/codegen/languages/Swift5ClientCodegen.java | 2 ++ samples/client/petstore/swift5/alamofireLibrary/docs/FakeAPI.md | 2 +- samples/client/petstore/swift5/combineLibrary/docs/FakeAPI.md | 2 +- samples/client/petstore/swift5/default/docs/FakeAPI.md | 2 +- samples/client/petstore/swift5/nonPublicApi/docs/FakeAPI.md | 2 +- samples/client/petstore/swift5/objcCompatible/docs/FakeAPI.md | 2 +- .../client/petstore/swift5/promisekitLibrary/docs/FakeAPI.md | 2 +- .../client/petstore/swift5/readonlyProperties/docs/FakeAPI.md | 2 +- samples/client/petstore/swift5/resultLibrary/docs/FakeAPI.md | 2 +- samples/client/petstore/swift5/rxswiftLibrary/docs/FakeAPI.md | 2 +- .../client/petstore/swift5/urlsessionLibrary/docs/FakeAPI.md | 2 +- samples/client/petstore/swift5/x-swift-hashable/docs/FakeAPI.md | 2 +- 12 files changed, 13 insertions(+), 11 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index c810c01a891..273762e830d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -1137,6 +1137,8 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig } } else if ("URL".equals(codegenParameter.dataType)) { // URL return "URL(string: \"https://example.com\")!"; + } else if ("Data".equals(codegenParameter.dataType)) { // URL + return "Data([9, 8, 7])"; } else if ("Date".equals(codegenParameter.dataType)) { // date return "Date()"; } else { // numeric diff --git a/samples/client/petstore/swift5/alamofireLibrary/docs/FakeAPI.md b/samples/client/petstore/swift5/alamofireLibrary/docs/FakeAPI.md index 543869c0d2e..553a46281aa 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/docs/FakeAPI.md +++ b/samples/client/petstore/swift5/alamofireLibrary/docs/FakeAPI.md @@ -379,7 +379,7 @@ import PetstoreClient let number = 987 // Double | None let double = 987 // Double | None let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None -let byte = 987 // Data | None +let byte = Data([9, 8, 7]) // Data | None let integer = 987 // Int | None (optional) let int32 = 987 // Int | None (optional) let int64 = 987 // Int64 | None (optional) diff --git a/samples/client/petstore/swift5/combineLibrary/docs/FakeAPI.md b/samples/client/petstore/swift5/combineLibrary/docs/FakeAPI.md index 543869c0d2e..553a46281aa 100644 --- a/samples/client/petstore/swift5/combineLibrary/docs/FakeAPI.md +++ b/samples/client/petstore/swift5/combineLibrary/docs/FakeAPI.md @@ -379,7 +379,7 @@ import PetstoreClient let number = 987 // Double | None let double = 987 // Double | None let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None -let byte = 987 // Data | None +let byte = Data([9, 8, 7]) // Data | None let integer = 987 // Int | None (optional) let int32 = 987 // Int | None (optional) let int64 = 987 // Int64 | None (optional) diff --git a/samples/client/petstore/swift5/default/docs/FakeAPI.md b/samples/client/petstore/swift5/default/docs/FakeAPI.md index 46599ecd3b1..01d7c662e3c 100644 --- a/samples/client/petstore/swift5/default/docs/FakeAPI.md +++ b/samples/client/petstore/swift5/default/docs/FakeAPI.md @@ -431,7 +431,7 @@ import PetstoreClient let number = 987 // Double | None let double = 987 // Double | None let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None -let byte = 987 // Data | None +let byte = Data([9, 8, 7]) // Data | None let integer = 987 // Int | None (optional) let int32 = 987 // Int | None (optional) let int64 = 987 // Int64 | None (optional) diff --git a/samples/client/petstore/swift5/nonPublicApi/docs/FakeAPI.md b/samples/client/petstore/swift5/nonPublicApi/docs/FakeAPI.md index 3b14781480f..b922f6ff706 100644 --- a/samples/client/petstore/swift5/nonPublicApi/docs/FakeAPI.md +++ b/samples/client/petstore/swift5/nonPublicApi/docs/FakeAPI.md @@ -384,7 +384,7 @@ let float = 987 // Float | None (optional) let double = 987 // Double | None let string = "string_example" // String | None (optional) let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None -let byte = 987 // Data | None +let byte = Data([9, 8, 7]) // Data | None let binary = URL(string: "https://example.com")! // URL | None (optional) let date = Date() // Date | None (optional) let dateTime = Date() // Date | None (optional) diff --git a/samples/client/petstore/swift5/objcCompatible/docs/FakeAPI.md b/samples/client/petstore/swift5/objcCompatible/docs/FakeAPI.md index 712fa591f2f..779e16b3ce6 100644 --- a/samples/client/petstore/swift5/objcCompatible/docs/FakeAPI.md +++ b/samples/client/petstore/swift5/objcCompatible/docs/FakeAPI.md @@ -379,7 +379,7 @@ import PetstoreClient let number = 987 // Double | None let double = 987 // Double | None let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None -let byte = 987 // Data | None +let byte = Data([9, 8, 7]) // Data | None let integer = 987 // Int | None (optional) let int32 = 987 // Int | None (optional) let int64 = 987 // Int64 | None (optional) diff --git a/samples/client/petstore/swift5/promisekitLibrary/docs/FakeAPI.md b/samples/client/petstore/swift5/promisekitLibrary/docs/FakeAPI.md index f2b3e2abe1e..a79f3ecc8af 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/docs/FakeAPI.md +++ b/samples/client/petstore/swift5/promisekitLibrary/docs/FakeAPI.md @@ -358,7 +358,7 @@ import PetstoreClient let number = 987 // Double | None let double = 987 // Double | None let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None -let byte = 987 // Data | None +let byte = Data([9, 8, 7]) // Data | None let integer = 987 // Int | None (optional) let int32 = 987 // Int | None (optional) let int64 = 987 // Int64 | None (optional) diff --git a/samples/client/petstore/swift5/readonlyProperties/docs/FakeAPI.md b/samples/client/petstore/swift5/readonlyProperties/docs/FakeAPI.md index 543869c0d2e..553a46281aa 100644 --- a/samples/client/petstore/swift5/readonlyProperties/docs/FakeAPI.md +++ b/samples/client/petstore/swift5/readonlyProperties/docs/FakeAPI.md @@ -379,7 +379,7 @@ import PetstoreClient let number = 987 // Double | None let double = 987 // Double | None let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None -let byte = 987 // Data | None +let byte = Data([9, 8, 7]) // Data | None let integer = 987 // Int | None (optional) let int32 = 987 // Int | None (optional) let int64 = 987 // Int64 | None (optional) diff --git a/samples/client/petstore/swift5/resultLibrary/docs/FakeAPI.md b/samples/client/petstore/swift5/resultLibrary/docs/FakeAPI.md index 543869c0d2e..553a46281aa 100644 --- a/samples/client/petstore/swift5/resultLibrary/docs/FakeAPI.md +++ b/samples/client/petstore/swift5/resultLibrary/docs/FakeAPI.md @@ -379,7 +379,7 @@ import PetstoreClient let number = 987 // Double | None let double = 987 // Double | None let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None -let byte = 987 // Data | None +let byte = Data([9, 8, 7]) // Data | None let integer = 987 // Int | None (optional) let int32 = 987 // Int | None (optional) let int64 = 987 // Int64 | None (optional) diff --git a/samples/client/petstore/swift5/rxswiftLibrary/docs/FakeAPI.md b/samples/client/petstore/swift5/rxswiftLibrary/docs/FakeAPI.md index 9ca07180e07..76acf726217 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/docs/FakeAPI.md +++ b/samples/client/petstore/swift5/rxswiftLibrary/docs/FakeAPI.md @@ -315,7 +315,7 @@ import PetstoreClient let number = 987 // Double | None let double = 987 // Double | None let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None -let byte = 987 // Data | None +let byte = Data([9, 8, 7]) // Data | None let integer = 987 // Int | None (optional) let int32 = 987 // Int | None (optional) let int64 = 987 // Int64 | None (optional) diff --git a/samples/client/petstore/swift5/urlsessionLibrary/docs/FakeAPI.md b/samples/client/petstore/swift5/urlsessionLibrary/docs/FakeAPI.md index 543869c0d2e..553a46281aa 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/docs/FakeAPI.md +++ b/samples/client/petstore/swift5/urlsessionLibrary/docs/FakeAPI.md @@ -379,7 +379,7 @@ import PetstoreClient let number = 987 // Double | None let double = 987 // Double | None let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None -let byte = 987 // Data | None +let byte = Data([9, 8, 7]) // Data | None let integer = 987 // Int | None (optional) let int32 = 987 // Int | None (optional) let int64 = 987 // Int64 | None (optional) diff --git a/samples/client/petstore/swift5/x-swift-hashable/docs/FakeAPI.md b/samples/client/petstore/swift5/x-swift-hashable/docs/FakeAPI.md index 543869c0d2e..553a46281aa 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/docs/FakeAPI.md +++ b/samples/client/petstore/swift5/x-swift-hashable/docs/FakeAPI.md @@ -379,7 +379,7 @@ import PetstoreClient let number = 987 // Double | None let double = 987 // Double | None let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None -let byte = 987 // Data | None +let byte = Data([9, 8, 7]) // Data | None let integer = 987 // Int | None (optional) let int32 = 987 // Int | None (optional) let int64 = 987 // Int64 | None (optional) From 0da409986889dcfab1420fb1410ae9509a5834c8 Mon Sep 17 00:00:00 2001 From: Nikita Vakula <52108696+krjakbrjak@users.noreply.github.com> Date: Sun, 30 May 2021 11:43:31 +0200 Subject: [PATCH 065/192] New python-fastapi generator (#9611) * [python-fastapi] Added new generator See https://fastapi.tiangolo.com/ for more details about FastAPI Signed-off-by: Nikita Vakula * [python-fastapi] Added samples Signed-off-by: Nikita Vakula --- bin/configs/python-fastapi.yaml | 6 + docs/generators/python-fastapi.md | 211 +++++ .../languages/PythonFastAPIServerCodegen.java | 254 ++++++ .../org.openapitools.codegen.CodegenConfig | 1 + .../python-fastapi/Dockerfile.mustache | 30 + .../resources/python-fastapi/README.mustache | 32 + .../python-fastapi/__init__.mustache | 0 .../resources/python-fastapi/api.mustache | 64 ++ .../python-fastapi/api_test.mustache | 53 ++ .../python-fastapi/conftest.mustache | 20 + .../python-fastapi/docker-compose.mustache | 9 + .../endpoint_argument_definition.mustache | 1 + .../python-fastapi/extra_models.mustache | 8 + .../python-fastapi/gitignore.mustache | 138 +++ .../resources/python-fastapi/main.mustache | 23 + .../resources/python-fastapi/model.mustache | 35 + .../resources/python-fastapi/openapi.mustache | 1 + .../python-fastapi/param_type.mustache | 1 + .../python-fastapi/partial_header.mustache | 17 + .../python-fastapi/pyproject_toml.mustache | 30 + .../python-fastapi/requirements.mustache | 36 + .../python-fastapi/security_api.mustache | 157 ++++ .../python-fastapi/setup_cfg.mustache | 23 + .../server/petstore/python-fastapi/.gitignore | 138 +++ .../python-fastapi/.openapi-generator-ignore | 23 + .../python-fastapi/.openapi-generator/FILES | 23 + .../python-fastapi/.openapi-generator/VERSION | 1 + .../server/petstore/python-fastapi/Dockerfile | 30 + .../server/petstore/python-fastapi/README.md | 29 + .../python-fastapi/docker-compose.yaml | 9 + .../petstore/python-fastapi/openapi.yaml | 843 ++++++++++++++++++ .../petstore/python-fastapi/pyproject.toml | 30 + .../petstore/python-fastapi/requirements.txt | 36 + .../server/petstore/python-fastapi/setup.cfg | 23 + .../src/openapi_server/apis/__init__.py | 0 .../src/openapi_server/apis/pet_api.py | 189 ++++ .../src/openapi_server/apis/store_api.py | 91 ++ .../src/openapi_server/apis/user_api.py | 171 ++++ .../python-fastapi/src/openapi_server/main.py | 27 + .../src/openapi_server/models/__init__.py | 0 .../src/openapi_server/models/api_response.py | 24 + .../src/openapi_server/models/category.py | 22 + .../src/openapi_server/models/extra_models.py | 8 + .../src/openapi_server/models/order.py | 30 + .../src/openapi_server/models/pet.py | 32 + .../src/openapi_server/models/tag.py | 22 + .../src/openapi_server/models/user.py | 34 + .../src/openapi_server/security_api.py | 83 ++ .../petstore/python-fastapi/tests/conftest.py | 20 + .../python-fastapi/tests/test_pet_api.py | 165 ++++ .../python-fastapi/tests/test_store_api.py | 76 ++ .../python-fastapi/tests/test_user_api.py | 154 ++++ 52 files changed, 3483 insertions(+) create mode 100644 bin/configs/python-fastapi.yaml create mode 100644 docs/generators/python-fastapi.md create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/Dockerfile.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/README.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/__init__.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/api.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/api_test.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/conftest.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/docker-compose.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/endpoint_argument_definition.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/extra_models.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/gitignore.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/main.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/model.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/openapi.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/param_type.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/partial_header.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/pyproject_toml.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/requirements.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/security_api.mustache create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/setup_cfg.mustache create mode 100644 samples/server/petstore/python-fastapi/.gitignore create mode 100644 samples/server/petstore/python-fastapi/.openapi-generator-ignore create mode 100644 samples/server/petstore/python-fastapi/.openapi-generator/FILES create mode 100644 samples/server/petstore/python-fastapi/.openapi-generator/VERSION create mode 100644 samples/server/petstore/python-fastapi/Dockerfile create mode 100644 samples/server/petstore/python-fastapi/README.md create mode 100644 samples/server/petstore/python-fastapi/docker-compose.yaml create mode 100644 samples/server/petstore/python-fastapi/openapi.yaml create mode 100644 samples/server/petstore/python-fastapi/pyproject.toml create mode 100644 samples/server/petstore/python-fastapi/requirements.txt create mode 100644 samples/server/petstore/python-fastapi/setup.cfg create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/apis/__init__.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/apis/pet_api.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/apis/store_api.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/apis/user_api.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/main.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/models/__init__.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/models/api_response.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/models/category.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/models/extra_models.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/models/order.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/models/pet.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/models/tag.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/models/user.py create mode 100644 samples/server/petstore/python-fastapi/src/openapi_server/security_api.py create mode 100644 samples/server/petstore/python-fastapi/tests/conftest.py create mode 100644 samples/server/petstore/python-fastapi/tests/test_pet_api.py create mode 100644 samples/server/petstore/python-fastapi/tests/test_store_api.py create mode 100644 samples/server/petstore/python-fastapi/tests/test_user_api.py diff --git a/bin/configs/python-fastapi.yaml b/bin/configs/python-fastapi.yaml new file mode 100644 index 00000000000..7bf7405c527 --- /dev/null +++ b/bin/configs/python-fastapi.yaml @@ -0,0 +1,6 @@ +generatorName: python-fastapi +outputDir: samples/server/petstore/python-fastapi +inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml +templateDir: modules/openapi-generator/src/main/resources/python-fastapi +additionalProperties: + hideGenerationTimestamp: "true" diff --git a/docs/generators/python-fastapi.md b/docs/generators/python-fastapi.md new file mode 100644 index 00000000000..2143321f2d7 --- /dev/null +++ b/docs/generators/python-fastapi.md @@ -0,0 +1,211 @@ +--- +title: Config Options for python-fastapi +sidebar_label: python-fastapi +--- + +These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details. + +| Option | Description | Values | Default | +| ------ | ----------- | ------ | ------- | +|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false| +|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
    **false**
    The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
    **true**
    Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
    |true| +|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true| +|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|
    **true**
    The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
    **false**
    The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
    |true| +|packageName|python package name (convention: snake_case).| |openapi_server| +|packageVersion|python package version.| |1.0.0| +|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| +|serverPort|TCP port to listen to in app.run| |8080| +|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| +|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| + +## IMPORT MAPPING + +| Type/Alias | Imports | +| ---------- | ------- | + + +## INSTANTIATION TYPES + +| Type/Alias | Instantiated By | +| ---------- | --------------- | + + +## LANGUAGE PRIMITIVES + +
      +
    • Dict
    • +
    • List
    • +
    • bool
    • +
    • bytes
    • +
    • date
    • +
    • datetime
    • +
    • dict
    • +
    • file
    • +
    • float
    • +
    • int
    • +
    • list
    • +
    • object
    • +
    • str
    • +
    + +## RESERVED WORDS + +
      +
    • all_params
    • +
    • and
    • +
    • as
    • +
    • assert
    • +
    • async
    • +
    • auth_settings
    • +
    • await
    • +
    • body_params
    • +
    • break
    • +
    • class
    • +
    • continue
    • +
    • def
    • +
    • del
    • +
    • elif
    • +
    • else
    • +
    • except
    • +
    • exec
    • +
    • false
    • +
    • finally
    • +
    • for
    • +
    • form_params
    • +
    • from
    • +
    • global
    • +
    • header_params
    • +
    • if
    • +
    • import
    • +
    • in
    • +
    • is
    • +
    • lambda
    • +
    • local_var_files
    • +
    • none
    • +
    • nonlocal
    • +
    • not
    • +
    • or
    • +
    • pass
    • +
    • path_params
    • +
    • print
    • +
    • property
    • +
    • query_params
    • +
    • raise
    • +
    • resource_path
    • +
    • return
    • +
    • self
    • +
    • true
    • +
    • try
    • +
    • while
    • +
    • with
    • +
    • yield
    • +
    + +## FEATURE SET + + +### Client Modification Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|BasePath|✗|ToolingExtension +|Authorizations|✗|ToolingExtension +|UserAgent|✗|ToolingExtension +|MockServer|✗|ToolingExtension + +### Data Type Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Custom|✗|OAS2,OAS3 +|Int32|✓|OAS2,OAS3 +|Int64|✓|OAS2,OAS3 +|Float|✓|OAS2,OAS3 +|Double|✓|OAS2,OAS3 +|Decimal|✓|ToolingExtension +|String|✓|OAS2,OAS3 +|Byte|✓|OAS2,OAS3 +|Binary|✓|OAS2,OAS3 +|Boolean|✓|OAS2,OAS3 +|Date|✓|OAS2,OAS3 +|DateTime|✓|OAS2,OAS3 +|Password|✓|OAS2,OAS3 +|File|✓|OAS2 +|Array|✓|OAS2,OAS3 +|Maps|✓|ToolingExtension +|CollectionFormat|✓|OAS2 +|CollectionFormatMulti|✓|OAS2 +|Enum|✓|OAS2,OAS3 +|ArrayOfEnum|✓|ToolingExtension +|ArrayOfModel|✓|ToolingExtension +|ArrayOfCollectionOfPrimitives|✓|ToolingExtension +|ArrayOfCollectionOfModel|✓|ToolingExtension +|ArrayOfCollectionOfEnum|✓|ToolingExtension +|MapOfEnum|✓|ToolingExtension +|MapOfModel|✓|ToolingExtension +|MapOfCollectionOfPrimitives|✓|ToolingExtension +|MapOfCollectionOfModel|✓|ToolingExtension +|MapOfCollectionOfEnum|✓|ToolingExtension + +### Documentation Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Readme|✗|ToolingExtension +|Model|✓|ToolingExtension +|Api|✓|ToolingExtension + +### Global Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Host|✓|OAS2,OAS3 +|BasePath|✓|OAS2,OAS3 +|Info|✓|OAS2,OAS3 +|Schemes|✗|OAS2,OAS3 +|PartialSchemes|✓|OAS2,OAS3 +|Consumes|✓|OAS2 +|Produces|✓|OAS2 +|ExternalDocumentation|✓|OAS2,OAS3 +|Examples|✓|OAS2,OAS3 +|XMLStructureDefinitions|✗|OAS2,OAS3 +|MultiServer|✗|OAS3 +|ParameterizedServer|✗|OAS3 +|ParameterStyling|✗|OAS3 +|Callbacks|✓|OAS3 +|LinkObjects|✗|OAS3 + +### Parameter Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Path|✓|OAS2,OAS3 +|Query|✓|OAS2,OAS3 +|Header|✓|OAS2,OAS3 +|Body|✓|OAS2 +|FormUnencoded|✓|OAS2 +|FormMultipart|✓|OAS2 +|Cookie|✓|OAS3 + +### Schema Support Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Simple|✓|OAS2,OAS3 +|Composite|✓|OAS2,OAS3 +|Polymorphism|✓|OAS2,OAS3 +|Union|✗|OAS3 + +### Security Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|BasicAuth|✓|OAS2,OAS3 +|ApiKey|✓|OAS2,OAS3 +|OpenIDConnect|✗|OAS3 +|BearerToken|✓|OAS3 +|OAuth2_Implicit|✓|OAS2,OAS3 +|OAuth2_Password|✓|OAS2,OAS3 +|OAuth2_ClientCredentials|✓|OAS2,OAS3 +|OAuth2_AuthorizationCode|✓|OAS2,OAS3 + +### Wire Format Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|JSON|✓|OAS2,OAS3 +|XML|✓|OAS2,OAS3 +|PROTOBUF|✗|ToolingExtension +|Custom|✗|OAS2,OAS3 diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java new file mode 100644 index 00000000000..f4e69664724 --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java @@ -0,0 +1,254 @@ +package org.openapitools.codegen.languages; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.module.SimpleModule; +import io.swagger.v3.oas.models.media.ArraySchema; +import io.swagger.v3.oas.models.media.Schema; +import org.apache.commons.lang3.StringUtils; +import org.openapitools.codegen.*; +import org.openapitools.codegen.utils.ModelUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.IOException; +import java.util.*; + +import static org.openapitools.codegen.utils.StringUtils.underscore; + +public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { + private static class SnakeCaseKeySerializer extends JsonSerializer { + @Override + public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeFieldName(underscore(value)); + } + } + + private static class PythonBooleanSerializer extends JsonSerializer { + @Override + public void serialize(Boolean value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeNumber(value ? 1 : 0); + } + } + + // An object mapper that is used to convert an example string to + // a "python-compliant" example string (keys in snake case, boolean as 1/0). + final ObjectMapper MAPPER = new ObjectMapper(); + + final Logger LOGGER = LoggerFactory.getLogger(PythonFastAPIServerCodegen.class); + + private static final String NAME = "python-fastapi"; + private static final int DEFAULT_SERVER_PORT = 8080; + private static final String DEFAULT_PACKAGE_NAME = "openapi_server"; + private static final String SRC_DIR = "src"; + + @Override + public CodegenType getTag() { + return CodegenType.SERVER; + } + + @Override + public String getHelp() { + return "Generates a python server (FastAPI)."; + } + + public PythonFastAPIServerCodegen() { + super(); + + SimpleModule simpleModule = new SimpleModule(); + simpleModule.addKeySerializer(String.class, new SnakeCaseKeySerializer()); + simpleModule.addSerializer(Boolean.class, new PythonBooleanSerializer()); + MAPPER.registerModule(simpleModule); + + /* + * Additional Properties. These values can be passed to the templates and + * are available in models, apis, and supporting files + */ + additionalProperties.put("serverPort", DEFAULT_SERVER_PORT); + additionalProperties.put(CodegenConstants.PACKAGE_NAME, DEFAULT_PACKAGE_NAME); + + languageSpecificPrimitives.add("List"); + languageSpecificPrimitives.add("Dict"); + typeMapping.put("array", "List"); + typeMapping.put("map", "Dict"); + + outputFolder = "generated-code" + File.separator + NAME; + modelTemplateFiles.put("model.mustache", ".py"); + apiTemplateFiles.put("api.mustache", ".py"); + embeddedTemplateDir = templateDir = NAME; + apiPackage = "apis"; + modelPackage = "models"; + testPackage = "tests"; + apiTestTemplateFiles().put("api_test.mustache", ".py"); + + cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "python package name (convention: snake_case).") + .defaultValue(DEFAULT_PACKAGE_NAME)); + cliOptions.add(new CliOption(CodegenConstants.PACKAGE_VERSION, "python package version.") + .defaultValue("1.0.0")); + cliOptions.add(new CliOption("serverPort", "TCP port to listen to in app.run"). + defaultValue(String.valueOf(DEFAULT_SERVER_PORT))); + } + + @Override + public void processOpts() { + super.processOpts(); + + if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) { + setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME)); + } + + modelPackage = packageName + "." + modelPackage; + apiPackage = packageName + "." + apiPackage; + + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); + supportingFiles.add(new SupportingFile("openapi.mustache", "", "openapi.yaml")); + supportingFiles.add(new SupportingFile("main.mustache", SRC_DIR + File.separator + packageName.replace('.', File.separatorChar), "main.py")); + supportingFiles.add(new SupportingFile("docker-compose.mustache", "", "docker-compose.yaml")); + supportingFiles.add(new SupportingFile("Dockerfile.mustache", "", "Dockerfile")); + supportingFiles.add(new SupportingFile("requirements.mustache", "", "requirements.txt")); + supportingFiles.add(new SupportingFile("security_api.mustache", SRC_DIR + File.separator + packageName.replace('.', File.separatorChar), "security_api.py")); + supportingFiles.add(new SupportingFile("extra_models.mustache", StringUtils.substringAfter(modelFileFolder(), outputFolder), "extra_models.py")); + + // Add __init__.py to all sub-folders under namespace pkg + StringBuilder namespacePackagePath = new StringBuilder(SRC_DIR + File.separator + StringUtils.substringBefore(packageName, ".")); + for (String tmp: StringUtils.split(StringUtils.substringAfter(packageName, "."), '.')) { + namespacePackagePath.append(File.separator).append(tmp); + supportingFiles.add(new SupportingFile("__init__.mustache", namespacePackagePath.toString(), "__init__.py")); + } + supportingFiles.add(new SupportingFile("__init__.mustache", StringUtils.substringAfter(modelFileFolder(), outputFolder), "__init__.py")); + supportingFiles.add(new SupportingFile("__init__.mustache", StringUtils.substringAfter(apiFileFolder(), outputFolder), "__init__.py")); + + supportingFiles.add(new SupportingFile("conftest.mustache", testPackage.replace('.', File.separatorChar), "conftest.py")); + + supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); + supportingFiles.add(new SupportingFile("pyproject_toml.mustache", "", "pyproject.toml")); + supportingFiles.add(new SupportingFile("setup_cfg.mustache", "", "setup.cfg")); + } + + @Override + public String getName() { + return NAME; + } + + @Override + public String toModelImport(String name) { + String modelImport; + if (StringUtils.startsWithAny(name, "import", "from")) { + modelImport = name; + } else { + modelImport = "from "; + if (!"".equals(modelPackage())) { + modelImport += modelPackage() + "."; + } + modelImport += toModelFilename(name) + " import " + name; + } + return modelImport; + } + + @Override + public String getTypeDeclaration(Schema p) { + if (ModelUtils.isArraySchema(p)) { + ArraySchema ap = (ArraySchema) p; + Schema inner = ap.getItems(); + return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; + } else if (ModelUtils.isMapSchema(p)) { + Schema inner = getAdditionalProperties(p); + return getSchemaType(p) + "[str, " + getTypeDeclaration(inner) + "]"; + } + return super.getTypeDeclaration(p); + } + + @Override + public Map postProcessOperationsWithModels(Map objs, List allModels) { + Map operations = (Map) objs.get("operations"); + // Set will make sure that no duplicated items are used. + Set securityImports = new HashSet<>(); + if (operations != null) { + List ops = (List) operations.get("operation"); + for (final CodegenOperation operation : ops) { + List responses = operation.responses; + if (responses != null) { + for (final CodegenResponse resp : responses) { + // Convert "default" value (0) to OK (200). + if ("0".equals(resp.code)) { + resp.code = "200"; + } + } + } + List securityMethods = operation.authMethods; + if (securityMethods != null) { + for (final CodegenSecurity securityMethod: securityMethods) { + securityImports.add(securityMethod.name); + } + } + + if (operation.requestBodyExamples != null) { + for (Map example : operation.requestBodyExamples) { + if (example.get("contentType") != null && example.get("contentType").equals("application/json")) { + // Make an example dictionary more python-like (snake-case, etc.). + // If fails, use the original string. + try { + Map result = MAPPER.readValue(example.get("example"), + new TypeReference>(){}); + operation.bodyParam.example = MAPPER.writeValueAsString(result); + } catch (IOException e) { + operation.bodyParam.example = example.get("example"); + } + } + } + } + } + } + + objs.put("securityImports", new ArrayList(securityImports)); + + return objs; + } + + @Override + public Map postProcessAllModels(Map objs) { + Map result = super.postProcessAllModels(objs); + for (Map.Entry entry : result.entrySet()) { + Map inner = (Map) entry.getValue(); + List> models = (List>) inner.get("models"); + for (Map mo : models) { + CodegenModel cm = (CodegenModel) mo.get("model"); + // Add additional filename information for imports + mo.put("pyImports", toPyImports(cm, cm.imports)); + } + } + return result; + } + + private List> toPyImports(CodegenModel cm, Set imports) { + List> pyImports = new ArrayList<>(); + for (String im : imports) { + if (!im.equals(cm.classname)) { + HashMap pyImport = new HashMap<>(); + pyImport.put("import", toModelImport(im)); + pyImports.add(pyImport); + } + } + return pyImports; + } + + @Override + public Map postProcessSupportingFileData(Map objs) { + generateYAMLSpecFile(objs); + return objs; + } + + @Override + public String apiFileFolder() { + return outputFolder + File.separator + SRC_DIR + File.separator + apiPackage().replace('.', File.separatorChar); + } + + @Override + public String modelFileFolder() { + return outputFolder + File.separator + SRC_DIR + File.separator + modelPackage().replace('.', File.separatorChar); + } +} diff --git a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig index 9d6b52d6fc3..a213327b3f7 100644 --- a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig +++ b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig @@ -97,6 +97,7 @@ org.openapitools.codegen.languages.PowerShellClientCodegen org.openapitools.codegen.languages.ProtobufSchemaCodegen org.openapitools.codegen.languages.PythonLegacyClientCodegen org.openapitools.codegen.languages.PythonClientCodegen +org.openapitools.codegen.languages.PythonFastAPIServerCodegen org.openapitools.codegen.languages.PythonFlaskConnexionServerCodegen org.openapitools.codegen.languages.PythonAiohttpConnexionServerCodegen org.openapitools.codegen.languages.PythonBluePlanetServerCodegen diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/Dockerfile.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/Dockerfile.mustache new file mode 100644 index 00000000000..395fed380e6 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/Dockerfile.mustache @@ -0,0 +1,30 @@ +FROM python:3.6 AS builder + +WORKDIR /usr/src/app + +RUN python3 -m venv /venv +ENV PATH="/venv/bin:$PATH" + +RUN pip install --upgrade pip + +COPY . . +RUN pip install --no-cache-dir . + + +FROM python:3.6 AS test_runner +WORKDIR /tmp +COPY --from=builder /venv /venv +COPY --from=builder /usr/src/app/tests tests +ENV PATH=/venv/bin:$PATH + +# install test dependencies +RUN pip install pytest + +# run tests +RUN pytest tests + + +FROM python:3.6 AS service +WORKDIR /root/app/site-packages +COPY --from=test_runner /venv /venv +ENV PATH=/venv/bin:$PATH diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/README.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/README.mustache new file mode 100644 index 00000000000..6528c792026 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/README.mustache @@ -0,0 +1,32 @@ +# OpenAPI generated FastAPI server + +This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: + +- API version: {{appVersion}} +{{^hideGenerationTimestamp}} +- Build date: {{generatedDate}} +{{/hideGenerationTimestamp}} +- Build package: {{generatorClass}} + +## Requirements. + +Python >= 3.6 + +## Installation & Usage + +To run the server, please execute the following from the root directory: + +``` + pip3 install -r requirements.txt + uvicorn main:app --host 0.0.0.0 --port {{serverPort}} +``` + +and open your browser at `http://localhost:{{serverPort}}/docs/` to see the docs. + +## Running with Docker + +To run the server on a Docker container, please execute the following from the root directory: + +```bash +docker-compose up --build +``` diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/__init__.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/__init__.mustache new file mode 100644 index 00000000000..e69de29bb2d diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/api.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/api.mustache new file mode 100644 index 00000000000..21c091251ad --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/api.mustache @@ -0,0 +1,64 @@ +# coding: utf-8 + +from typing import Dict, List + +from fastapi import ( + APIRouter, + Body, + Cookie, + Depends, + Form, + Header, + Path, + Query, + Response, + Security, + status, +) + +from {{modelPackage}}.extra_models import TokenModel +{{#imports}} +{{import}} +{{/imports}} +{{#securityImports.0}}from {{packageName}}.security_api import {{#securityImports}}get_token_{{.}}{{^-last}}, {{/-last}}{{/securityImports}}{{/securityImports.0}} + +router = APIRouter() + + +{{#operations}} +{{#operation}} +@router.{{#lambda.lowercase}}{{httpMethod}}{{/lambda.lowercase}}( + "{{path}}", + responses={ + {{#responses}} + {{code}}: {{=<% %>=}}{<%#dataType%>"model": <%dataType%>, "description": "<%message%>"<%/dataType%><%^dataType%>"description": "<%message%>"<%/dataType%>}<%={{ }}=%>, + {{/responses}} + }, + tags=[{{#tags}}"{{name}}"{{^-last}},{{/-last}}{{/tags}}], + {{#summary}} + summary="{{summary}}", + {{/summary}} + {{#description}} + description = "{{description}}", + {{/description}} +) +async def {{operationId}}( + {{#allParams}} + {{>endpoint_argument_definition}}, + {{/allParams}} + {{#hasAuthMethods}} + {{#authMethods}} + token_{{name}}: TokenModel = Security( + get_token_{{name}}{{#isOAuth}}, scopes=[{{#scopes}}"{{scope}}"{{^-last}}, {{/-last}}{{/scopes}}]{{/isOAuth}} + ), + {{/authMethods}} + {{/hasAuthMethods}} +) -> {{#returnType}}{{.}}{{/returnType}}{{^returnType}}None{{/returnType}}: # noqa: E501 + {{#notes}}"""{{.}}""" + ...{{/notes}}{{^notes}}...{{/notes}} +{{^-last}} + + +{{/-last}} +{{/operation}} +{{/operations}} diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/api_test.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/api_test.mustache new file mode 100644 index 00000000000..a3470a2323e --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/api_test.mustache @@ -0,0 +1,53 @@ +# coding: utf-8 + +from fastapi.testclient import TestClient + +import json +import pytest + +{{#imports}}{{import}} +{{/imports}} + +{{#operations}} +{{#operation}} + +{{#vendorExtensions.x-skip-test}} +@pytest.mark.skip("{{reason}}") +{{/vendorExtensions.x-skip-test}} +def test_{{operationId}}(client: TestClient): + """Test case for {{{operationId}}} + + {{{summary}}} + """ + {{#bodyParam}} + {{paramName}} = {{#isContainer}}[{{/isContainer}}{{{example}}}{{#isContainer}}]{{/isContainer}} + {{/bodyParam}} + {{#queryParams}} + {{#-first}}params = [{{/-first}}{{^-first}} {{/-first}}("{{paramName}}", {{{example}}}){{^-last}},{{/-last}}{{#-last}}]{{/-last}} + {{/queryParams}} + headers = { {{#headerParams}} + '{{paramName}}': {{{example}}},{{/headerParams}}{{#authMethods}} + {{#isOAuth}}'Authorization': 'Bearer special-key',{{/isOAuth}}{{#isApiKey}}'{{name}}': 'special-key',{{/isApiKey}}{{#isBasicBasic}}'Authorization': 'BasicZm9vOmJhcg==',{{/isBasicBasic}}{{#isBasicBearer}}'Authorization': 'Bearer special-key',{{/isBasicBearer}}{{/authMethods}} + } + {{#formParams}} + {{#-first}} + data = { + {{/-first}} + '{{paramName}}': {{{example}}}{{^-last}},{{/-last}} + {{#-last}} + } + {{/-last}} + {{/formParams}} + response = client.request( + '{{httpMethod}}', + '{{{path}}}'{{#pathParams}}{{#-first}}.format({{/-first}}{{baseName}}={{{example}}}{{^-last}}, {{/-last}}{{#-last}}){{/-last}}{{/pathParams}}, + headers=headers,{{#bodyParam}} + json={{paramName}},{{/bodyParam}}{{#formParams}}{{#-first}} + data=data,{{/-first}}{{/formParams}}{{#queryParams}}{{#-first}} + params=params,{{/-first}}{{/queryParams}} + ) + + assert response.status_code == 200 + +{{/operation}} +{{/operations}} diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/conftest.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/conftest.mustache new file mode 100644 index 00000000000..357ea48c3ab --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/conftest.mustache @@ -0,0 +1,20 @@ +import contextlib +from typing import Any + +import pytest +from fastapi import FastAPI +from fastapi.testclient import TestClient + +from {{packageName}}.main import app as application + + +@pytest.fixture +def app() -> FastAPI: + application.dependency_overrides = {} + + return application + + +@pytest.fixture +def client(app) -> TestClient: + return TestClient(app) diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/docker-compose.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/docker-compose.mustache new file mode 100644 index 00000000000..b4ffa002917 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/docker-compose.mustache @@ -0,0 +1,9 @@ +version: '3.6' +services: + service: + build: + context: . + target: service + ports: + - "{{serverPort}}:{{serverPort}}" + command: uvicorn {{packageName}}.main:app --host 0.0.0.0 --port {{serverPort}} diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/endpoint_argument_definition.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/endpoint_argument_definition.mustache new file mode 100644 index 00000000000..939bfda10a6 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/endpoint_argument_definition.mustache @@ -0,0 +1 @@ +{{#isPathParam}}{{baseName}}{{/isPathParam}}{{^isPathParam}}{{paramName}}{{/isPathParam}}: {{>param_type}} = {{#isPathParam}}Path{{/isPathParam}}{{#isHeaderParam}}Header{{/isHeaderParam}}{{#isFormParam}}Form{{/isFormParam}}{{#isQueryParam}}Query{{/isQueryParam}}{{#isCookieParam}}Cookie{{/isCookieParam}}{{#isBodyParam}}Body{{/isBodyParam}}(None, description="{{description}}") diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/extra_models.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/extra_models.mustache new file mode 100644 index 00000000000..a3a283fb842 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/extra_models.mustache @@ -0,0 +1,8 @@ +# coding: utf-8 + +from pydantic import BaseModel + +class TokenModel(BaseModel): + """Defines a token model.""" + + sub: str diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/gitignore.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/gitignore.mustache new file mode 100644 index 00000000000..a81c8ee1219 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/gitignore.mustache @@ -0,0 +1,138 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/main.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/main.mustache new file mode 100644 index 00000000000..7112b271978 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/main.mustache @@ -0,0 +1,23 @@ +# coding: utf-8 + +{{>partial_header}} + +from fastapi import FastAPI + +{{#apiInfo}} +{{#apis}} +from {{apiPackage}}.{{classFilename}} import router as {{classname}}Router +{{/apis}} +{{/apiInfo}} + +app = FastAPI( + title="{{appName}}", + description="{{appDescription}}", + version="{{appVersion}}", +) + +{{#apiInfo}} +{{#apis}} +app.include_router({{classname}}Router) +{{/apis}} +{{/apiInfo}} diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/model.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/model.mustache new file mode 100644 index 00000000000..f6a15877fa4 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/model.mustache @@ -0,0 +1,35 @@ +# coding: utf-8 + +from datetime import date, datetime + +from typing import Dict, List, Optional + +from pydantic import BaseModel, EmailStr, validator +{{#models}} +{{#model}} +{{#pyImports}} +{{import}} +{{/pyImports}} +{{/model}} +{{/models}} + + +{{#models}} +{{#model}} +class {{classname}}(BaseModel): + """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + + Do not edit the class manually. + + {{classname}} - a model defined in OpenAPI + + {{#vars}} + {{name}}: The {{name}} of this {{classname}}{{^required}} [Optional]{{/required}}. + {{/vars}} + """ + +{{#vars}} + {{name}}: {{#required}}{{dataType}}{{/required}}{{^required}}Optional[{{dataType}}] = None{{/required}} +{{/vars}} +{{/model}} +{{/models}} diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/openapi.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/openapi.mustache new file mode 100644 index 00000000000..51ebafb0187 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/openapi.mustache @@ -0,0 +1 @@ +{{{openapi-yaml}}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/param_type.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/param_type.mustache new file mode 100644 index 00000000000..d97c018015f --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/param_type.mustache @@ -0,0 +1 @@ +{{#isString}}str{{/isString}}{{#isInteger}}int{{/isInteger}}{{#isLong}}int{{/isLong}}{{#isFloat}}float{{/isFloat}}{{#isDouble}}float{{/isDouble}}{{#isByteArray}}str{{/isByteArray}}{{#isBinary}}str{{/isBinary}}{{#isBoolean}}bool{{/isBoolean}}{{#isDate}}str{{/isDate}}{{#isDateTime}}str{{/isDateTime}}{{#isModel}}{{dataType}}{{/isModel}}{{#isContainer}}{{dataType}}{{/isContainer}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/partial_header.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/partial_header.mustache new file mode 100644 index 00000000000..62e28acde9b --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/partial_header.mustache @@ -0,0 +1,17 @@ +""" +{{#appName}} + {{{appName}}} +{{/appName}} + +{{#appDescription}} + {{{appDescription}}} +{{/appDescription}} + + {{#version}} + The version of the OpenAPI document: {{{version}}} + {{/version}} + {{#infoEmail}} + Contact: {{{infoEmail}}} + {{/infoEmail}} + Generated by: https://openapi-generator.tech +""" diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/pyproject_toml.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/pyproject_toml.mustache new file mode 100644 index 00000000000..c2826df3020 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/pyproject_toml.mustache @@ -0,0 +1,30 @@ +[build-system] +requires = ["setuptools", "wheel"] +build-backend = "setuptools.build_meta" + +[tool.black] +line-length = 88 +exclude = ''' +( + /( + \.eggs # exclude a few common directories in the + | \.git # root of the project + | \.hg + | \.mypy_cache + | \.tox + | \.venv + | _build + | buck-out + | build + | dist + )/ +) +''' + +[tool.isort] +profile = "black" +skip = [ + '.eggs', '.git', '.hg', '.mypy_cache', '.nox', '.pants.d', '.tox', + '.venv', '_build', 'buck-out', 'build', 'dist', 'node_modules', 'venv', +] +skip_gitignore = true diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/requirements.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/requirements.mustache new file mode 100644 index 00000000000..ce66f96d42c --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/requirements.mustache @@ -0,0 +1,36 @@ +aiofiles==0.5.0 +aniso8601==7.0.0 +async-exit-stack==1.0.1 +async-generator==1.10 +certifi==2020.12.5 +chardet==4.0.0 +click==7.1.2 +dnspython==2.1.0 +email-validator==1.1.2 +fastapi==0.65.1 +graphene==2.1.8 +graphql-core==2.3.2 +graphql-relay==2.0.1 +h11==0.12.0 +httptools==0.1.2 +idna==2.10 +itsdangerous==1.1.0 +Jinja2==2.11.3 +MarkupSafe==2.0.1 +orjson==3.5.2 +promise==2.3 +pydantic==1.8.2 +python-dotenv==0.17.1 +python-multipart==0.0.5 +PyYAML==5.4.1 +requests==2.25.1 +Rx==1.6.1 +six==1.16.0 +starlette==0.14.2 +typing-extensions==3.10.0.0 +ujson==4.0.2 +urllib3==1.26.4 +uvicorn==0.13.4 +uvloop==0.14.0 +watchgod==0.7 +websockets==8.1 diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/security_api.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/security_api.mustache new file mode 100644 index 00000000000..f925edad438 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/security_api.mustache @@ -0,0 +1,157 @@ +# coding: utf-8 + +from typing import List + +from fastapi import APIRouter, Depends, Response, Security, status +from fastapi.openapi.models import OAuthFlowImplicit, OAuthFlows +from fastapi.security import ( + HTTPAuthorizationCredentials, + HTTPBasic, + HTTPBasicCredentials, + HTTPBearer, + OAuth2, + OAuth2AuthorizationCodeBearer, + OAuth2PasswordBearer, + SecurityScopes, +) +from fastapi.security.api_key import APIKey, APIKeyCookie, APIKeyHeader, APIKeyQuery + +from {{modelPackage}}.extra_models import TokenModel + +{{#authMethods}} +{{#isOAuth}} +{{#isPassword}} +oauth2_password = OAuth2PasswordBearer( + tokenUrl="{{tokenUrl}}", + scopes={ +{{#scopes}} + "{{scope}}": "{{description}}", +{{/scopes}} + } +) +{{/isPassword}} +{{#isCode}} +oauth2_code = OAuth2AuthorizationCodeBearer( + authorizationUrl="{{authorizationUrl}}", + tokenUrl="{{tokenUrl}}", + refreshUrlUrl="{{refreshUrl}}", + scopes={ +{{#scopes}} + "{{scope}}": "{{description}}", +{{/scopes}} + } +) +{{/isCode}} +{{#isImplicit}} +oauth2_implicit = OAuth2( + flows=OAuthFlows( + implicit=OAuthFlowImplicit( + authorizationUrl="{{authorizationUrl}}", + scopes={ +{{#scopes}} + "{{scope}}": "{{description}}", +{{/scopes}} + } + ) + ) +) +{{/isImplicit}} + + +def get_token_{{name}}( + security_scopes: SecurityScopes, token: str = Depends(oauth2_{{#isPassword}}password{{/isPassword}}{{#isCode}}code{{/isCode}}{{#isImplicit}}implicit{{/isImplicit}}) +) -> TokenModel: + """ + Validate and decode token. + + :param token Token provided by Authorization header + :type token: str + :return: Decoded token information or None if token is invalid + :rtype: TokenModel | None + """ + + ... + + +def validate_scope_{{name}}( + required_scopes: SecurityScopes, token_scopes: List[str] +) -> bool: + """ + Validate required scopes are included in token scope + + :param required_scopes Required scope to access called API + :type required_scopes: List[str] + :param token_scopes Scope present in token + :type token_scopes: List[str] + :return: True if access to called API is allowed + :rtype: bool + """ + + return False + +{{/isOAuth}} +{{#isApiKey}} + +def get_token_{{name}}( + {{#isKeyInHeader}}token_api_key_header: str = Security( + APIKeyHeader(name="{{keyParamName}}", auto_error=False) + ),{{/isKeyInHeader}}{{#isKeyInCookie}} + token_api_key_cookie: str = Security( + APIKeyCookie(name="{{keyParamName}}", auto_error=False) + ),{{/isKeyInCookie}}{{#isKeyInQuery}} + token_api_key_query: str = Security( + APIKeyQuery(name="{{keyParamName}}", auto_error=False) + ),{{/isKeyInQuery}} +) -> TokenModel: + """ + Check and retrieve authentication information from api_key. + + {{#isKeyInHeader}}:param token_api_key_header API key provided by Authorization[{{keyParamName}}] header{{/isKeyInHeader}} + {{#isKeyInCookie}}:param token_api_key_cookie API key provided by Authorization[{{keyParamName}}] cookie{{/isKeyInCookie}} + {{#isKeyInQuery}}:param token_api_key_query API key provided by [{{keyParamName}}] query{{/isKeyInQuery}} + :type token_api_key_{{#isKeyInHeader}}header{{/isKeyInHeader}}{{#isKeyInCookie}}cookie{{/isKeyInCookie}}{{#isKeyInQuery}}query{{/isKeyInQuery}}: str + :return: Information attached to provided api_key or None if api_key is invalid or does not allow access to called API + :rtype: TokenModel | None + """ + + ... + +{{/isApiKey}} +{{#isBasicBasic}} + +basic_auth = HTTPBasic() + + +def get_token_{{name}}( + credentials: HTTPBasicCredentials = Depends(basic_auth) +) -> TokenModel: + """ + Check and retrieve authentication information from basic auth. + + :param credentials Credentials provided by Authorization header + :type credentials: HTTPBasicCredentials + :rtype: TokenModel | None + """ + + ... + +{{/isBasicBasic}} +{{#isBasicBearer}} + +bearer_auth = HTTPBearer() + + +def get_token_{{name}}(credentials: HTTPAuthorizationCredentials = Depends(bearer_auth)) -> TokenModel: + """ + Check and retrieve authentication information from custom bearer token. + + :param credentials Credentials provided by Authorization header + :type credentials: HTTPAuthorizationCredentials + :return: Decoded token information or None if token is invalid + :rtype: TokenModel | None + """ + + ... + +{{/isBasicBearer}} +{{/authMethods}} diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/setup_cfg.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/setup_cfg.mustache new file mode 100644 index 00000000000..ff5cfe968e0 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/setup_cfg.mustache @@ -0,0 +1,23 @@ +[metadata] +name = {{packageName}} +version = {{appVersion}} +description = {{appDescription}} +long_description = file: README.md +keywords = OpenAPI {{appName}} +python_requires = >= 3.6.* +classifiers = + Operating System :: OS Independent + Programming Language :: Python :: 3 + Programming Language :: Python :: 3.6 + +[options] +install_requires = + fastapi[all] +setup_requires = + setuptools +package_dir= + =src +packages=find_namespace: + +[options.packages.find] +where=src diff --git a/samples/server/petstore/python-fastapi/.gitignore b/samples/server/petstore/python-fastapi/.gitignore new file mode 100644 index 00000000000..a81c8ee1219 --- /dev/null +++ b/samples/server/petstore/python-fastapi/.gitignore @@ -0,0 +1,138 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ diff --git a/samples/server/petstore/python-fastapi/.openapi-generator-ignore b/samples/server/petstore/python-fastapi/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/server/petstore/python-fastapi/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/server/petstore/python-fastapi/.openapi-generator/FILES b/samples/server/petstore/python-fastapi/.openapi-generator/FILES new file mode 100644 index 00000000000..247e0d50f67 --- /dev/null +++ b/samples/server/petstore/python-fastapi/.openapi-generator/FILES @@ -0,0 +1,23 @@ +.gitignore +Dockerfile +README.md +docker-compose.yaml +openapi.yaml +pyproject.toml +requirements.txt +setup.cfg +src/openapi_server/apis/__init__.py +src/openapi_server/apis/pet_api.py +src/openapi_server/apis/store_api.py +src/openapi_server/apis/user_api.py +src/openapi_server/main.py +src/openapi_server/models/__init__.py +src/openapi_server/models/api_response.py +src/openapi_server/models/category.py +src/openapi_server/models/extra_models.py +src/openapi_server/models/order.py +src/openapi_server/models/pet.py +src/openapi_server/models/tag.py +src/openapi_server/models/user.py +src/openapi_server/security_api.py +tests/conftest.py diff --git a/samples/server/petstore/python-fastapi/.openapi-generator/VERSION b/samples/server/petstore/python-fastapi/.openapi-generator/VERSION new file mode 100644 index 00000000000..6555596f931 --- /dev/null +++ b/samples/server/petstore/python-fastapi/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-fastapi/Dockerfile b/samples/server/petstore/python-fastapi/Dockerfile new file mode 100644 index 00000000000..395fed380e6 --- /dev/null +++ b/samples/server/petstore/python-fastapi/Dockerfile @@ -0,0 +1,30 @@ +FROM python:3.6 AS builder + +WORKDIR /usr/src/app + +RUN python3 -m venv /venv +ENV PATH="/venv/bin:$PATH" + +RUN pip install --upgrade pip + +COPY . . +RUN pip install --no-cache-dir . + + +FROM python:3.6 AS test_runner +WORKDIR /tmp +COPY --from=builder /venv /venv +COPY --from=builder /usr/src/app/tests tests +ENV PATH=/venv/bin:$PATH + +# install test dependencies +RUN pip install pytest + +# run tests +RUN pytest tests + + +FROM python:3.6 AS service +WORKDIR /root/app/site-packages +COPY --from=test_runner /venv /venv +ENV PATH=/venv/bin:$PATH diff --git a/samples/server/petstore/python-fastapi/README.md b/samples/server/petstore/python-fastapi/README.md new file mode 100644 index 00000000000..3dacf6e790e --- /dev/null +++ b/samples/server/petstore/python-fastapi/README.md @@ -0,0 +1,29 @@ +# OpenAPI generated FastAPI server + +This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: + +- API version: 1.0.0 +- Build package: org.openapitools.codegen.languages.PythonFastAPIServerCodegen + +## Requirements. + +Python >= 3.6 + +## Installation & Usage + +To run the server, please execute the following from the root directory: + +``` + pip3 install -r requirements.txt + uvicorn main:app --host 0.0.0.0 --port 8080 +``` + +and open your browser at `http://localhost:8080/docs/` to see the docs. + +## Running with Docker + +To run the server on a Docker container, please execute the following from the root directory: + +```bash +docker-compose up --build +``` diff --git a/samples/server/petstore/python-fastapi/docker-compose.yaml b/samples/server/petstore/python-fastapi/docker-compose.yaml new file mode 100644 index 00000000000..638e4e00d34 --- /dev/null +++ b/samples/server/petstore/python-fastapi/docker-compose.yaml @@ -0,0 +1,9 @@ +version: '3.6' +services: + service: + build: + context: . + target: service + ports: + - "8080:8080" + command: uvicorn openapi_server.main:app --host 0.0.0.0 --port 8080 diff --git a/samples/server/petstore/python-fastapi/openapi.yaml b/samples/server/petstore/python-fastapi/openapi.yaml new file mode 100644 index 00000000000..e8e287f9991 --- /dev/null +++ b/samples/server/petstore/python-fastapi/openapi.yaml @@ -0,0 +1,843 @@ +openapi: 3.0.0 +info: + description: This is a sample server Petstore server. For this sample, you can use + the api key `special-key` to test the authorization filters. + license: + name: Apache-2.0 + url: https://www.apache.org/licenses/LICENSE-2.0.html + title: OpenAPI Petstore + version: 1.0.0 +externalDocs: + description: Find out more about Swagger + url: http://swagger.io +servers: +- url: http://petstore.swagger.io/v2 +tags: +- description: Everything about your Pets + name: pet +- description: Access to Petstore orders + name: store +- description: Operations about user + name: user +paths: + /pet: + post: + operationId: addPet + requestBody: + $ref: '#/components/requestBodies/Pet' + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/json: + schema: + $ref: '#/components/schemas/Pet' + description: successful operation + "405": + description: Invalid input + security: + - petstore_auth: + - write:pets + - read:pets + summary: Add a new pet to the store + tags: + - pet + put: + operationId: updatePet + requestBody: + $ref: '#/components/requestBodies/Pet' + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/json: + schema: + $ref: '#/components/schemas/Pet' + description: successful operation + "400": + description: Invalid ID supplied + "404": + description: Pet not found + "405": + description: Validation exception + security: + - petstore_auth: + - write:pets + - read:pets + summary: Update an existing pet + tags: + - pet + /pet/findByStatus: + get: + description: Multiple status values can be provided with comma separated strings + operationId: findPetsByStatus + parameters: + - description: Status values that need to be considered for filter + explode: false + in: query + name: status + required: true + schema: + items: + default: available + enum: + - available + - pending + - sold + type: string + type: array + style: form + responses: + "200": + content: + application/xml: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + application/json: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + description: successful operation + "400": + description: Invalid status value + security: + - petstore_auth: + - read:pets + summary: Finds Pets by status + tags: + - pet + /pet/findByTags: + get: + deprecated: true + description: Multiple tags can be provided with comma separated strings. Use + tag1, tag2, tag3 for testing. + operationId: findPetsByTags + parameters: + - description: Tags to filter by + explode: false + in: query + name: tags + required: true + schema: + items: + type: string + type: array + style: form + responses: + "200": + content: + application/xml: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + application/json: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + description: successful operation + "400": + description: Invalid tag value + security: + - petstore_auth: + - read:pets + summary: Finds Pets by tags + tags: + - pet + /pet/{petId}: + delete: + operationId: deletePet + parameters: + - explode: false + in: header + name: api_key + required: false + schema: + type: string + style: simple + - description: Pet id to delete + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + responses: + "400": + description: Invalid pet value + security: + - petstore_auth: + - write:pets + - read:pets + summary: Deletes a pet + tags: + - pet + get: + description: Returns a single pet + operationId: getPetById + parameters: + - description: ID of pet to return + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/json: + schema: + $ref: '#/components/schemas/Pet' + description: successful operation + "400": + description: Invalid ID supplied + "404": + description: Pet not found + security: + - api_key: [] + summary: Find pet by ID + tags: + - pet + post: + operationId: updatePetWithForm + parameters: + - description: ID of pet that needs to be updated + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + requestBody: + $ref: '#/components/requestBodies/inline_object' + content: + application/x-www-form-urlencoded: + schema: + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + type: object + responses: + "405": + description: Invalid input + security: + - petstore_auth: + - write:pets + - read:pets + summary: Updates a pet in the store with form data + tags: + - pet + /pet/{petId}/uploadImage: + post: + operationId: uploadFile + parameters: + - description: ID of pet to update + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + requestBody: + $ref: '#/components/requestBodies/inline_object_1' + content: + multipart/form-data: + schema: + properties: + additionalMetadata: + description: Additional data to pass to server + type: string + file: + description: file to upload + format: binary + type: string + type: object + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + description: successful operation + security: + - petstore_auth: + - write:pets + - read:pets + summary: uploads an image + tags: + - pet + /store/inventory: + get: + description: Returns a map of status codes to quantities + operationId: getInventory + responses: + "200": + content: + application/json: + schema: + additionalProperties: + format: int32 + type: integer + type: object + description: successful operation + security: + - api_key: [] + summary: Returns pet inventories by status + tags: + - store + /store/order: + post: + operationId: placeOrder + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + description: order placed for purchasing the pet + required: true + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + description: successful operation + "400": + description: Invalid Order + summary: Place an order for a pet + tags: + - store + /store/order/{orderId}: + delete: + description: For valid response try integer IDs with value < 1000. Anything + above 1000 or nonintegers will generate API errors + operationId: deleteOrder + parameters: + - description: ID of the order that needs to be deleted + explode: false + in: path + name: orderId + required: true + schema: + type: string + style: simple + responses: + "400": + description: Invalid ID supplied + "404": + description: Order not found + summary: Delete purchase order by ID + tags: + - store + get: + description: For valid response try integer IDs with value <= 5 or > 10. Other + values will generated exceptions + operationId: getOrderById + parameters: + - description: ID of pet that needs to be fetched + explode: false + in: path + name: orderId + required: true + schema: + format: int64 + maximum: 5 + minimum: 1 + type: integer + style: simple + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + description: successful operation + "400": + description: Invalid ID supplied + "404": + description: Order not found + summary: Find purchase order by ID + tags: + - store + /user: + post: + description: This can only be done by the logged in user. + operationId: createUser + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Created user object + required: true + responses: + default: + description: successful operation + security: + - api_key: [] + summary: Create user + tags: + - user + /user/createWithArray: + post: + operationId: createUsersWithArrayInput + requestBody: + $ref: '#/components/requestBodies/UserArray' + responses: + default: + description: successful operation + security: + - api_key: [] + summary: Creates list of users with given input array + tags: + - user + /user/createWithList: + post: + operationId: createUsersWithListInput + requestBody: + $ref: '#/components/requestBodies/UserArray' + responses: + default: + description: successful operation + security: + - api_key: [] + summary: Creates list of users with given input array + tags: + - user + /user/login: + get: + operationId: loginUser + parameters: + - description: The user name for login + explode: true + in: query + name: username + required: true + schema: + pattern: ^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$ + type: string + style: form + - description: The password for login in clear text + explode: true + in: query + name: password + required: true + schema: + type: string + style: form + responses: + "200": + content: + application/xml: + schema: + type: string + application/json: + schema: + type: string + description: successful operation + headers: + Set-Cookie: + description: Cookie authentication key for use with the `api_key` apiKey + authentication. + explode: false + schema: + example: AUTH_KEY=abcde12345; Path=/; HttpOnly + type: string + style: simple + X-Rate-Limit: + description: calls per hour allowed by the user + explode: false + schema: + format: int32 + type: integer + style: simple + X-Expires-After: + description: date in UTC when toekn expires + explode: false + schema: + format: date-time + type: string + style: simple + "400": + description: Invalid username/password supplied + summary: Logs user into the system + tags: + - user + /user/logout: + get: + operationId: logoutUser + responses: + default: + description: successful operation + security: + - api_key: [] + summary: Logs out current logged in user session + tags: + - user + /user/{username}: + delete: + description: This can only be done by the logged in user. + operationId: deleteUser + parameters: + - description: The name that needs to be deleted + explode: false + in: path + name: username + required: true + schema: + type: string + style: simple + responses: + "400": + description: Invalid username supplied + "404": + description: User not found + security: + - api_key: [] + summary: Delete user + tags: + - user + get: + operationId: getUserByName + parameters: + - description: The name that needs to be fetched. Use user1 for testing. + explode: false + in: path + name: username + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/User' + application/json: + schema: + $ref: '#/components/schemas/User' + description: successful operation + "400": + description: Invalid username supplied + "404": + description: User not found + summary: Get user by user name + tags: + - user + put: + description: This can only be done by the logged in user. + operationId: updateUser + parameters: + - description: name that need to be deleted + explode: false + in: path + name: username + required: true + schema: + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Updated user object + required: true + responses: + "400": + description: Invalid user supplied + "404": + description: User not found + security: + - api_key: [] + summary: Updated user + tags: + - user +components: + requestBodies: + UserArray: + content: + application/json: + schema: + items: + $ref: '#/components/schemas/User' + type: array + description: List of user object + required: true + Pet: + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + description: Pet object that needs to be added to the store + required: true + inline_object: + content: + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/inline_object' + inline_object_1: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/inline_object_1' + schemas: + Order: + description: An order for a pets from the pet store + example: + petId: 6 + quantity: 1 + id: 0 + shipDate: 2000-01-23T04:56:07.000+00:00 + complete: false + status: placed + properties: + id: + format: int64 + title: id + type: integer + petId: + format: int64 + title: petId + type: integer + quantity: + format: int32 + title: quantity + type: integer + shipDate: + format: date-time + title: shipDate + type: string + status: + description: Order Status + enum: + - placed + - approved + - delivered + title: status + type: string + complete: + default: false + title: complete + type: boolean + title: Pet Order + type: object + xml: + name: Order + Category: + description: A category for a pet + example: + name: name + id: 6 + properties: + id: + format: int64 + title: id + type: integer + name: + pattern: ^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$ + title: name + type: string + title: Pet category + type: object + xml: + name: Category + User: + description: A User who is purchasing from the pet store + example: + firstName: firstName + lastName: lastName + password: password + userStatus: 6 + phone: phone + id: 0 + email: email + username: username + properties: + id: + format: int64 + type: integer + username: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + password: + type: string + phone: + type: string + userStatus: + description: User Status + format: int32 + type: integer + title: a User + type: object + xml: + name: User + Tag: + description: A tag for a pet + example: + name: name + id: 1 + properties: + id: + format: int64 + title: id + type: integer + name: + title: name + type: string + title: Pet Tag + type: object + xml: + name: Tag + Pet: + description: A pet for sale in the pet store + example: + photoUrls: + - photoUrls + - photoUrls + name: doggie + id: 0 + category: + name: name + id: 6 + tags: + - name: name + id: 1 + - name: name + id: 1 + status: available + properties: + id: + format: int64 + title: id + type: integer + category: + $ref: '#/components/schemas/Category' + name: + example: doggie + title: name + type: string + photoUrls: + items: + type: string + title: photoUrls + type: array + xml: + name: photoUrl + wrapped: true + tags: + items: + $ref: '#/components/schemas/Tag' + title: tags + type: array + xml: + name: tag + wrapped: true + status: + description: pet status in the store + enum: + - available + - pending + - sold + title: status + type: string + required: + - name + - photoUrls + title: a Pet + type: object + xml: + name: Pet + ApiResponse: + description: Describes the result of uploading an image resource + example: + code: 0 + type: type + message: message + properties: + code: + format: int32 + title: code + type: integer + type: + title: type + type: string + message: + title: message + type: string + title: An uploaded response + type: object + inline_object: + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + type: object + inline_object_1: + properties: + additionalMetadata: + description: Additional data to pass to server + type: string + file: + description: file to upload + format: binary + type: string + type: object + securitySchemes: + petstore_auth: + flows: + implicit: + authorizationUrl: http://petstore.swagger.io/api/oauth/dialog + scopes: + write:pets: modify pets in your account + read:pets: read your pets + type: oauth2 + x-tokenInfoFunc: .security_controller_.info_from_petstore_auth + x-scopeValidateFunc: .security_controller_.validate_scope_petstore_auth + api_key: + in: header + name: api_key + type: apiKey + x-apikeyInfoFunc: .security_controller_.info_from_api_key diff --git a/samples/server/petstore/python-fastapi/pyproject.toml b/samples/server/petstore/python-fastapi/pyproject.toml new file mode 100644 index 00000000000..c2826df3020 --- /dev/null +++ b/samples/server/petstore/python-fastapi/pyproject.toml @@ -0,0 +1,30 @@ +[build-system] +requires = ["setuptools", "wheel"] +build-backend = "setuptools.build_meta" + +[tool.black] +line-length = 88 +exclude = ''' +( + /( + \.eggs # exclude a few common directories in the + | \.git # root of the project + | \.hg + | \.mypy_cache + | \.tox + | \.venv + | _build + | buck-out + | build + | dist + )/ +) +''' + +[tool.isort] +profile = "black" +skip = [ + '.eggs', '.git', '.hg', '.mypy_cache', '.nox', '.pants.d', '.tox', + '.venv', '_build', 'buck-out', 'build', 'dist', 'node_modules', 'venv', +] +skip_gitignore = true diff --git a/samples/server/petstore/python-fastapi/requirements.txt b/samples/server/petstore/python-fastapi/requirements.txt new file mode 100644 index 00000000000..ce66f96d42c --- /dev/null +++ b/samples/server/petstore/python-fastapi/requirements.txt @@ -0,0 +1,36 @@ +aiofiles==0.5.0 +aniso8601==7.0.0 +async-exit-stack==1.0.1 +async-generator==1.10 +certifi==2020.12.5 +chardet==4.0.0 +click==7.1.2 +dnspython==2.1.0 +email-validator==1.1.2 +fastapi==0.65.1 +graphene==2.1.8 +graphql-core==2.3.2 +graphql-relay==2.0.1 +h11==0.12.0 +httptools==0.1.2 +idna==2.10 +itsdangerous==1.1.0 +Jinja2==2.11.3 +MarkupSafe==2.0.1 +orjson==3.5.2 +promise==2.3 +pydantic==1.8.2 +python-dotenv==0.17.1 +python-multipart==0.0.5 +PyYAML==5.4.1 +requests==2.25.1 +Rx==1.6.1 +six==1.16.0 +starlette==0.14.2 +typing-extensions==3.10.0.0 +ujson==4.0.2 +urllib3==1.26.4 +uvicorn==0.13.4 +uvloop==0.14.0 +watchgod==0.7 +websockets==8.1 diff --git a/samples/server/petstore/python-fastapi/setup.cfg b/samples/server/petstore/python-fastapi/setup.cfg new file mode 100644 index 00000000000..bc0f0d452d9 --- /dev/null +++ b/samples/server/petstore/python-fastapi/setup.cfg @@ -0,0 +1,23 @@ +[metadata] +name = openapi_server +version = 1.0.0 +description = This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +long_description = file: README.md +keywords = OpenAPI OpenAPI Petstore +python_requires = >= 3.6.* +classifiers = + Operating System :: OS Independent + Programming Language :: Python :: 3 + Programming Language :: Python :: 3.6 + +[options] +install_requires = + fastapi[all] +setup_requires = + setuptools +package_dir= + =src +packages=find_namespace: + +[options.packages.find] +where=src diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/apis/__init__.py b/samples/server/petstore/python-fastapi/src/openapi_server/apis/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/apis/pet_api.py b/samples/server/petstore/python-fastapi/src/openapi_server/apis/pet_api.py new file mode 100644 index 00000000000..d4dfa357c30 --- /dev/null +++ b/samples/server/petstore/python-fastapi/src/openapi_server/apis/pet_api.py @@ -0,0 +1,189 @@ +# coding: utf-8 + +from typing import Dict, List + +from fastapi import ( + APIRouter, + Body, + Cookie, + Depends, + Form, + Header, + Path, + Query, + Response, + Security, + status, +) + +from openapi_server.models.extra_models import TokenModel +from openapi_server.models.api_response import ApiResponse +from openapi_server.models.pet import Pet +from openapi_server.security_api import get_token_petstore_auth, get_token_api_key + +router = APIRouter() + + +@router.post( + "/pet", + responses={ + 200: {"model": Pet, "description": "successful operation"}, + 405: {"description": "Invalid input"}, + }, + tags=["pet"], + summary="Add a new pet to the store", +) +async def add_pet( + pet: Pet = Body(None, description="Pet object that needs to be added to the store") +, + token_petstore_auth: TokenModel = Security( + get_token_petstore_auth, scopes=["write:pets", "read:pets"] + ), +) -> Pet: # noqa: E501 + ... + + +@router.delete( + "/pet/{petId}", + responses={ + 400: {"description": "Invalid pet value"}, + }, + tags=["pet"], + summary="Deletes a pet", +) +async def delete_pet( + petId: int = Path(None, description="Pet id to delete") +, + api_key: str = Header(None, description="") +, + token_petstore_auth: TokenModel = Security( + get_token_petstore_auth, scopes=["write:pets", "read:pets"] + ), +) -> None: # noqa: E501 + ... + + +@router.get( + "/pet/findByStatus", + responses={ + 200: {"model": List[Pet], "description": "successful operation"}, + 400: {"description": "Invalid status value"}, + }, + tags=["pet"], + summary="Finds Pets by status", +) +async def find_pets_by_status( + status: List[str] = Query(None, description="Status values that need to be considered for filter") +, + token_petstore_auth: TokenModel = Security( + get_token_petstore_auth, scopes=["read:pets"] + ), +) -> List[Pet]: # noqa: E501 + """Multiple status values can be provided with comma separated strings""" + ... + + +@router.get( + "/pet/findByTags", + responses={ + 200: {"model": List[Pet], "description": "successful operation"}, + 400: {"description": "Invalid tag value"}, + }, + tags=["pet"], + summary="Finds Pets by tags", +) +async def find_pets_by_tags( + tags: List[str] = Query(None, description="Tags to filter by") +, + token_petstore_auth: TokenModel = Security( + get_token_petstore_auth, scopes=["read:pets"] + ), +) -> List[Pet]: # noqa: E501 + """Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.""" + ... + + +@router.get( + "/pet/{petId}", + responses={ + 200: {"model": Pet, "description": "successful operation"}, + 400: {"description": "Invalid ID supplied"}, + 404: {"description": "Pet not found"}, + }, + tags=["pet"], + summary="Find pet by ID", +) +async def get_pet_by_id( + petId: int = Path(None, description="ID of pet to return") +, + token_api_key: TokenModel = Security( + get_token_api_key + ), +) -> Pet: # noqa: E501 + """Returns a single pet""" + ... + + +@router.put( + "/pet", + responses={ + 200: {"model": Pet, "description": "successful operation"}, + 400: {"description": "Invalid ID supplied"}, + 404: {"description": "Pet not found"}, + 405: {"description": "Validation exception"}, + }, + tags=["pet"], + summary="Update an existing pet", +) +async def update_pet( + pet: Pet = Body(None, description="Pet object that needs to be added to the store") +, + token_petstore_auth: TokenModel = Security( + get_token_petstore_auth, scopes=["write:pets", "read:pets"] + ), +) -> Pet: # noqa: E501 + ... + + +@router.post( + "/pet/{petId}", + responses={ + 405: {"description": "Invalid input"}, + }, + tags=["pet"], + summary="Updates a pet in the store with form data", +) +async def update_pet_with_form( + petId: int = Path(None, description="ID of pet that needs to be updated") +, + name: str = Form(None, description="Updated name of the pet") +, + status: str = Form(None, description="Updated status of the pet") +, + token_petstore_auth: TokenModel = Security( + get_token_petstore_auth, scopes=["write:pets", "read:pets"] + ), +) -> None: # noqa: E501 + ... + + +@router.post( + "/pet/{petId}/uploadImage", + responses={ + 200: {"model": ApiResponse, "description": "successful operation"}, + }, + tags=["pet"], + summary="uploads an image", +) +async def upload_file( + petId: int = Path(None, description="ID of pet to update") +, + additional_metadata: str = Form(None, description="Additional data to pass to server") +, + file: str = Form(None, description="file to upload") +, + token_petstore_auth: TokenModel = Security( + get_token_petstore_auth, scopes=["write:pets", "read:pets"] + ), +) -> ApiResponse: # noqa: E501 + ... diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/apis/store_api.py b/samples/server/petstore/python-fastapi/src/openapi_server/apis/store_api.py new file mode 100644 index 00000000000..dd7a484d3db --- /dev/null +++ b/samples/server/petstore/python-fastapi/src/openapi_server/apis/store_api.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +from typing import Dict, List + +from fastapi import ( + APIRouter, + Body, + Cookie, + Depends, + Form, + Header, + Path, + Query, + Response, + Security, + status, +) + +from openapi_server.models.extra_models import TokenModel +from openapi_server.models.order import Order +from openapi_server.security_api import get_token_api_key + +router = APIRouter() + + +@router.delete( + "/store/order/{orderId}", + responses={ + 400: {"description": "Invalid ID supplied"}, + 404: {"description": "Order not found"}, + }, + tags=["store"], + summary="Delete purchase order by ID", +) +async def delete_order( + orderId: str = Path(None, description="ID of the order that needs to be deleted") +, +) -> None: # noqa: E501 + """For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors""" + ... + + +@router.get( + "/store/inventory", + responses={ + 200: {"model": Dict[str, int], "description": "successful operation"}, + }, + tags=["store"], + summary="Returns pet inventories by status", +) +async def get_inventory( + token_api_key: TokenModel = Security( + get_token_api_key + ), +) -> Dict[str, int]: # noqa: E501 + """Returns a map of status codes to quantities""" + ... + + +@router.get( + "/store/order/{orderId}", + responses={ + 200: {"model": Order, "description": "successful operation"}, + 400: {"description": "Invalid ID supplied"}, + 404: {"description": "Order not found"}, + }, + tags=["store"], + summary="Find purchase order by ID", +) +async def get_order_by_id( + orderId: int = Path(None, description="ID of pet that needs to be fetched") +, +) -> Order: # noqa: E501 + """For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions""" + ... + + +@router.post( + "/store/order", + responses={ + 200: {"model": Order, "description": "successful operation"}, + 400: {"description": "Invalid Order"}, + }, + tags=["store"], + summary="Place an order for a pet", +) +async def place_order( + order: Order = Body(None, description="order placed for purchasing the pet") +, +) -> Order: # noqa: E501 + ... diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/apis/user_api.py b/samples/server/petstore/python-fastapi/src/openapi_server/apis/user_api.py new file mode 100644 index 00000000000..d6370178cd9 --- /dev/null +++ b/samples/server/petstore/python-fastapi/src/openapi_server/apis/user_api.py @@ -0,0 +1,171 @@ +# coding: utf-8 + +from typing import Dict, List + +from fastapi import ( + APIRouter, + Body, + Cookie, + Depends, + Form, + Header, + Path, + Query, + Response, + Security, + status, +) + +from openapi_server.models.extra_models import TokenModel +from openapi_server.models.user import User +from openapi_server.security_api import get_token_api_key + +router = APIRouter() + + +@router.post( + "/user", + responses={ + 200: {"description": "successful operation"}, + }, + tags=["user"], + summary="Create user", +) +async def create_user( + user: User = Body(None, description="Created user object") +, + token_api_key: TokenModel = Security( + get_token_api_key + ), +) -> None: # noqa: E501 + """This can only be done by the logged in user.""" + ... + + +@router.post( + "/user/createWithArray", + responses={ + 200: {"description": "successful operation"}, + }, + tags=["user"], + summary="Creates list of users with given input array", +) +async def create_users_with_array_input( + user: List[User] = Body(None, description="List of user object") +, + token_api_key: TokenModel = Security( + get_token_api_key + ), +) -> None: # noqa: E501 + ... + + +@router.post( + "/user/createWithList", + responses={ + 200: {"description": "successful operation"}, + }, + tags=["user"], + summary="Creates list of users with given input array", +) +async def create_users_with_list_input( + user: List[User] = Body(None, description="List of user object") +, + token_api_key: TokenModel = Security( + get_token_api_key + ), +) -> None: # noqa: E501 + ... + + +@router.delete( + "/user/{username}", + responses={ + 400: {"description": "Invalid username supplied"}, + 404: {"description": "User not found"}, + }, + tags=["user"], + summary="Delete user", +) +async def delete_user( + username: str = Path(None, description="The name that needs to be deleted") +, + token_api_key: TokenModel = Security( + get_token_api_key + ), +) -> None: # noqa: E501 + """This can only be done by the logged in user.""" + ... + + +@router.get( + "/user/{username}", + responses={ + 200: {"model": User, "description": "successful operation"}, + 400: {"description": "Invalid username supplied"}, + 404: {"description": "User not found"}, + }, + tags=["user"], + summary="Get user by user name", +) +async def get_user_by_name( + username: str = Path(None, description="The name that needs to be fetched. Use user1 for testing.") +, +) -> User: # noqa: E501 + ... + + +@router.get( + "/user/login", + responses={ + 200: {"model": str, "description": "successful operation"}, + 400: {"description": "Invalid username/password supplied"}, + }, + tags=["user"], + summary="Logs user into the system", +) +async def login_user( + username: str = Query(None, description="The user name for login") +, + password: str = Query(None, description="The password for login in clear text") +, +) -> str: # noqa: E501 + ... + + +@router.get( + "/user/logout", + responses={ + 200: {"description": "successful operation"}, + }, + tags=["user"], + summary="Logs out current logged in user session", +) +async def logout_user( + token_api_key: TokenModel = Security( + get_token_api_key + ), +) -> None: # noqa: E501 + ... + + +@router.put( + "/user/{username}", + responses={ + 400: {"description": "Invalid user supplied"}, + 404: {"description": "User not found"}, + }, + tags=["user"], + summary="Updated user", +) +async def update_user( + username: str = Path(None, description="name that need to be deleted") +, + user: User = Body(None, description="Updated user object") +, + token_api_key: TokenModel = Security( + get_token_api_key + ), +) -> None: # noqa: E501 + """This can only be done by the logged in user.""" + ... diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/main.py b/samples/server/petstore/python-fastapi/src/openapi_server/main.py new file mode 100644 index 00000000000..eec13ca5eba --- /dev/null +++ b/samples/server/petstore/python-fastapi/src/openapi_server/main.py @@ -0,0 +1,27 @@ +# coding: utf-8 + +""" + 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 +""" + + +from fastapi import FastAPI + +from openapi_server.apis.pet_api import router as PetApiRouter +from openapi_server.apis.store_api import router as StoreApiRouter +from openapi_server.apis.user_api import router as UserApiRouter + +app = FastAPI( + title="OpenAPI Petstore", + description="This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.", + version="1.0.0", +) + +app.include_router(PetApiRouter) +app.include_router(StoreApiRouter) +app.include_router(UserApiRouter) diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/__init__.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/api_response.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/api_response.py new file mode 100644 index 00000000000..49926a6a14d --- /dev/null +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/api_response.py @@ -0,0 +1,24 @@ +# coding: utf-8 + +from datetime import date, datetime + +from typing import Dict, List, Optional + +from pydantic import BaseModel, EmailStr, validator + + +class ApiResponse(BaseModel): + """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + + Do not edit the class manually. + + ApiResponse - a model defined in OpenAPI + + code: The code of this ApiResponse [Optional]. + type: The type of this ApiResponse [Optional]. + message: The message of this ApiResponse [Optional]. + """ + + code: Optional[int] = None + type: Optional[str] = None + message: Optional[str] = None diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/category.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/category.py new file mode 100644 index 00000000000..cba9aece542 --- /dev/null +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/category.py @@ -0,0 +1,22 @@ +# coding: utf-8 + +from datetime import date, datetime + +from typing import Dict, List, Optional + +from pydantic import BaseModel, EmailStr, validator + + +class Category(BaseModel): + """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + + Do not edit the class manually. + + Category - a model defined in OpenAPI + + id: The id of this Category [Optional]. + name: The name of this Category [Optional]. + """ + + id: Optional[int] = None + name: Optional[str] = None diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/extra_models.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/extra_models.py new file mode 100644 index 00000000000..a3a283fb842 --- /dev/null +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/extra_models.py @@ -0,0 +1,8 @@ +# coding: utf-8 + +from pydantic import BaseModel + +class TokenModel(BaseModel): + """Defines a token model.""" + + sub: str diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/order.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/order.py new file mode 100644 index 00000000000..b129842ad2c --- /dev/null +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/order.py @@ -0,0 +1,30 @@ +# coding: utf-8 + +from datetime import date, datetime + +from typing import Dict, List, Optional + +from pydantic import BaseModel, EmailStr, validator + + +class Order(BaseModel): + """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + + Do not edit the class manually. + + Order - a model defined in OpenAPI + + id: The id of this Order [Optional]. + pet_id: The pet_id of this Order [Optional]. + quantity: The quantity of this Order [Optional]. + ship_date: The ship_date of this Order [Optional]. + status: The status of this Order [Optional]. + complete: The complete of this Order [Optional]. + """ + + id: Optional[int] = None + pet_id: Optional[int] = None + quantity: Optional[int] = None + ship_date: Optional[datetime] = None + status: Optional[str] = None + complete: Optional[bool] = None diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/pet.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/pet.py new file mode 100644 index 00000000000..c4e8c3fa4bf --- /dev/null +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/pet.py @@ -0,0 +1,32 @@ +# coding: utf-8 + +from datetime import date, datetime + +from typing import Dict, List, Optional + +from pydantic import BaseModel, EmailStr, validator +from openapi_server.models.category import Category +from openapi_server.models.tag import Tag + + +class Pet(BaseModel): + """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + + Do not edit the class manually. + + Pet - a model defined in OpenAPI + + id: The id of this Pet [Optional]. + category: The category of this Pet [Optional]. + name: The name of this Pet. + photo_urls: The photo_urls of this Pet. + tags: The tags of this Pet [Optional]. + status: The status of this Pet [Optional]. + """ + + id: Optional[int] = None + category: Optional[Category] = None + name: str + photo_urls: List[str] + tags: Optional[List[Tag]] = None + status: Optional[str] = None diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/tag.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/tag.py new file mode 100644 index 00000000000..6c2ab695415 --- /dev/null +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/tag.py @@ -0,0 +1,22 @@ +# coding: utf-8 + +from datetime import date, datetime + +from typing import Dict, List, Optional + +from pydantic import BaseModel, EmailStr, validator + + +class Tag(BaseModel): + """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + + Do not edit the class manually. + + Tag - a model defined in OpenAPI + + id: The id of this Tag [Optional]. + name: The name of this Tag [Optional]. + """ + + id: Optional[int] = None + name: Optional[str] = None diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/user.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/user.py new file mode 100644 index 00000000000..dd173677ce9 --- /dev/null +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/user.py @@ -0,0 +1,34 @@ +# coding: utf-8 + +from datetime import date, datetime + +from typing import Dict, List, Optional + +from pydantic import BaseModel, EmailStr, validator + + +class User(BaseModel): + """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + + Do not edit the class manually. + + User - a model defined in OpenAPI + + id: The id of this User [Optional]. + username: The username of this User [Optional]. + first_name: The first_name of this User [Optional]. + last_name: The last_name of this User [Optional]. + email: The email of this User [Optional]. + password: The password of this User [Optional]. + phone: The phone of this User [Optional]. + user_status: The user_status of this User [Optional]. + """ + + id: Optional[int] = None + username: Optional[str] = None + first_name: Optional[str] = None + last_name: Optional[str] = None + email: Optional[str] = None + password: Optional[str] = None + phone: Optional[str] = None + user_status: Optional[int] = None diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/security_api.py b/samples/server/petstore/python-fastapi/src/openapi_server/security_api.py new file mode 100644 index 00000000000..1c2f51e30a5 --- /dev/null +++ b/samples/server/petstore/python-fastapi/src/openapi_server/security_api.py @@ -0,0 +1,83 @@ +# coding: utf-8 + +from typing import List + +from fastapi import APIRouter, Depends, Response, Security, status +from fastapi.openapi.models import OAuthFlowImplicit, OAuthFlows +from fastapi.security import ( + HTTPAuthorizationCredentials, + HTTPBasic, + HTTPBasicCredentials, + HTTPBearer, + OAuth2, + OAuth2AuthorizationCodeBearer, + OAuth2PasswordBearer, + SecurityScopes, +) +from fastapi.security.api_key import APIKey, APIKeyCookie, APIKeyHeader, APIKeyQuery + +from openapi_server.models.extra_models import TokenModel + + +def get_token_api_key( + token_api_key_header: str = Security( + APIKeyHeader(name="api_key", auto_error=False) + ), +) -> TokenModel: + """ + Check and retrieve authentication information from api_key. + + :param token_api_key_header API key provided by Authorization[api_key] header + + + :type token_api_key_header: str + :return: Information attached to provided api_key or None if api_key is invalid or does not allow access to called API + :rtype: TokenModel | None + """ + + ... + +oauth2_implicit = OAuth2( + flows=OAuthFlows( + implicit=OAuthFlowImplicit( + authorizationUrl="http://petstore.swagger.io/api/oauth/dialog", + scopes={ + "write:pets": "modify pets in your account", + "read:pets": "read your pets", + } + ) + ) +) + + +def get_token_petstore_auth( + security_scopes: SecurityScopes, token: str = Depends(oauth2_implicit) +) -> TokenModel: + """ + Validate and decode token. + + :param token Token provided by Authorization header + :type token: str + :return: Decoded token information or None if token is invalid + :rtype: TokenModel | None + """ + + ... + + +def validate_scope_petstore_auth( + required_scopes: SecurityScopes, token_scopes: List[str] +) -> bool: + """ + Validate required scopes are included in token scope + + :param required_scopes Required scope to access called API + :type required_scopes: List[str] + :param token_scopes Scope present in token + :type token_scopes: List[str] + :return: True if access to called API is allowed + :rtype: bool + """ + + return False + diff --git a/samples/server/petstore/python-fastapi/tests/conftest.py b/samples/server/petstore/python-fastapi/tests/conftest.py new file mode 100644 index 00000000000..0f1845c6041 --- /dev/null +++ b/samples/server/petstore/python-fastapi/tests/conftest.py @@ -0,0 +1,20 @@ +import contextlib +from typing import Any + +import pytest +from fastapi import FastAPI +from fastapi.testclient import TestClient + +from openapi_server.main import app as application + + +@pytest.fixture +def app() -> FastAPI: + application.dependency_overrides = {} + + return application + + +@pytest.fixture +def client(app) -> TestClient: + return TestClient(app) diff --git a/samples/server/petstore/python-fastapi/tests/test_pet_api.py b/samples/server/petstore/python-fastapi/tests/test_pet_api.py new file mode 100644 index 00000000000..5124a86bc91 --- /dev/null +++ b/samples/server/petstore/python-fastapi/tests/test_pet_api.py @@ -0,0 +1,165 @@ +# coding: utf-8 + +from fastapi.testclient import TestClient + +import json +import pytest + +from openapi_server.models.api_response import ApiResponse +from openapi_server.models.pet import Pet + + +def test_add_pet(client: TestClient): + """Test case for add_pet + + Add a new pet to the store + """ + pet = {"photo_urls":["photoUrls","photoUrls"],"name":"doggie","id":0,"category":{"name":"name","id":6},"tags":[{"name":"name","id":1},{"name":"name","id":1}],"status":"available"} + headers = { + 'Authorization': 'Bearer special-key', + } + response = client.request( + 'POST', + '/pet', + headers=headers, + json=pet, + ) + + assert response.status_code == 200 + + +def test_delete_pet(client: TestClient): + """Test case for delete_pet + + Deletes a pet + """ + headers = { + 'api_key': 'api_key_example', + 'Authorization': 'Bearer special-key', + } + response = client.request( + 'DELETE', + '/pet/{petId}'.format(petId=56), + headers=headers, + ) + + assert response.status_code == 200 + + +def test_find_pets_by_status(client: TestClient): + """Test case for find_pets_by_status + + Finds Pets by status + """ + params = [("status", ['status_example'])] + headers = { + 'Authorization': 'Bearer special-key', + } + response = client.request( + 'GET', + '/pet/findByStatus', + headers=headers, + params=params, + ) + + assert response.status_code == 200 + + +def test_find_pets_by_tags(client: TestClient): + """Test case for find_pets_by_tags + + Finds Pets by tags + """ + params = [("tags", ['tags_example'])] + headers = { + 'Authorization': 'Bearer special-key', + } + response = client.request( + 'GET', + '/pet/findByTags', + headers=headers, + params=params, + ) + + assert response.status_code == 200 + + +def test_get_pet_by_id(client: TestClient): + """Test case for get_pet_by_id + + Find pet by ID + """ + headers = { + 'api_key': 'special-key', + } + response = client.request( + 'GET', + '/pet/{petId}'.format(petId=56), + headers=headers, + ) + + assert response.status_code == 200 + + +def test_update_pet(client: TestClient): + """Test case for update_pet + + Update an existing pet + """ + pet = {"photo_urls":["photoUrls","photoUrls"],"name":"doggie","id":0,"category":{"name":"name","id":6},"tags":[{"name":"name","id":1},{"name":"name","id":1}],"status":"available"} + headers = { + 'Authorization': 'Bearer special-key', + } + response = client.request( + 'PUT', + '/pet', + headers=headers, + json=pet, + ) + + assert response.status_code == 200 + + +def test_update_pet_with_form(client: TestClient): + """Test case for update_pet_with_form + + Updates a pet in the store with form data + """ + headers = { + 'Authorization': 'Bearer special-key', + } + data = { + 'name': 'name_example', + 'status': 'status_example' + } + response = client.request( + 'POST', + '/pet/{petId}'.format(petId=56), + headers=headers, + data=data, + ) + + assert response.status_code == 200 + + +def test_upload_file(client: TestClient): + """Test case for upload_file + + uploads an image + """ + headers = { + 'Authorization': 'Bearer special-key', + } + data = { + 'additional_metadata': 'additional_metadata_example', + 'file': '/path/to/file' + } + response = client.request( + 'POST', + '/pet/{petId}/uploadImage'.format(petId=56), + headers=headers, + data=data, + ) + + assert response.status_code == 200 + diff --git a/samples/server/petstore/python-fastapi/tests/test_store_api.py b/samples/server/petstore/python-fastapi/tests/test_store_api.py new file mode 100644 index 00000000000..8cd5effb77e --- /dev/null +++ b/samples/server/petstore/python-fastapi/tests/test_store_api.py @@ -0,0 +1,76 @@ +# coding: utf-8 + +from fastapi.testclient import TestClient + +import json +import pytest + +from openapi_server.models.order import Order + + +def test_delete_order(client: TestClient): + """Test case for delete_order + + Delete purchase order by ID + """ + headers = { + } + response = client.request( + 'DELETE', + '/store/order/{orderId}'.format(orderId='order_id_example'), + headers=headers, + ) + + assert response.status_code == 200 + + +def test_get_inventory(client: TestClient): + """Test case for get_inventory + + Returns pet inventories by status + """ + headers = { + 'api_key': 'special-key', + } + response = client.request( + 'GET', + '/store/inventory', + headers=headers, + ) + + assert response.status_code == 200 + + +def test_get_order_by_id(client: TestClient): + """Test case for get_order_by_id + + Find purchase order by ID + """ + headers = { + } + response = client.request( + 'GET', + '/store/order/{orderId}'.format(orderId=56), + headers=headers, + ) + + assert response.status_code == 200 + + +def test_place_order(client: TestClient): + """Test case for place_order + + Place an order for a pet + """ + order = {"pet_id":6,"quantity":1,"id":0,"ship_date":"2000-01-23T04:56:07.000+00:00","complete":0,"status":"placed"} + headers = { + } + response = client.request( + 'POST', + '/store/order', + headers=headers, + json=order, + ) + + assert response.status_code == 200 + diff --git a/samples/server/petstore/python-fastapi/tests/test_user_api.py b/samples/server/petstore/python-fastapi/tests/test_user_api.py new file mode 100644 index 00000000000..537696ef975 --- /dev/null +++ b/samples/server/petstore/python-fastapi/tests/test_user_api.py @@ -0,0 +1,154 @@ +# coding: utf-8 + +from fastapi.testclient import TestClient + +import json +import pytest + +from openapi_server.models.user import User + + +def test_create_user(client: TestClient): + """Test case for create_user + + Create user + """ + user = {"first_name":"firstName","last_name":"lastName","password":"password","user_status":6,"phone":"phone","id":0,"email":"email","username":"username"} + headers = { + 'api_key': 'special-key', + } + response = client.request( + 'POST', + '/user', + headers=headers, + json=user, + ) + + assert response.status_code == 200 + + +def test_create_users_with_array_input(client: TestClient): + """Test case for create_users_with_array_input + + Creates list of users with given input array + """ + user = [{"first_name":"firstName","last_name":"lastName","password":"password","user_status":6,"phone":"phone","id":0,"email":"email","username":"username"}] + headers = { + 'api_key': 'special-key', + } + response = client.request( + 'POST', + '/user/createWithArray', + headers=headers, + json=user, + ) + + assert response.status_code == 200 + + +def test_create_users_with_list_input(client: TestClient): + """Test case for create_users_with_list_input + + Creates list of users with given input array + """ + user = [{"first_name":"firstName","last_name":"lastName","password":"password","user_status":6,"phone":"phone","id":0,"email":"email","username":"username"}] + headers = { + 'api_key': 'special-key', + } + response = client.request( + 'POST', + '/user/createWithList', + headers=headers, + json=user, + ) + + assert response.status_code == 200 + + +def test_delete_user(client: TestClient): + """Test case for delete_user + + Delete user + """ + headers = { + 'api_key': 'special-key', + } + response = client.request( + 'DELETE', + '/user/{username}'.format(username='username_example'), + headers=headers, + ) + + assert response.status_code == 200 + + +def test_get_user_by_name(client: TestClient): + """Test case for get_user_by_name + + Get user by user name + """ + headers = { + } + response = client.request( + 'GET', + '/user/{username}'.format(username='username_example'), + headers=headers, + ) + + assert response.status_code == 200 + + +def test_login_user(client: TestClient): + """Test case for login_user + + Logs user into the system + """ + params = [("username", 'username_example'), + ("password", 'password_example')] + headers = { + } + response = client.request( + 'GET', + '/user/login', + headers=headers, + params=params, + ) + + assert response.status_code == 200 + + +def test_logout_user(client: TestClient): + """Test case for logout_user + + Logs out current logged in user session + """ + headers = { + 'api_key': 'special-key', + } + response = client.request( + 'GET', + '/user/logout', + headers=headers, + ) + + assert response.status_code == 200 + + +def test_update_user(client: TestClient): + """Test case for update_user + + Updated user + """ + user = {"first_name":"firstName","last_name":"lastName","password":"password","user_status":6,"phone":"phone","id":0,"email":"email","username":"username"} + headers = { + 'api_key': 'special-key', + } + response = client.request( + 'PUT', + '/user/{username}'.format(username='username_example'), + headers=headers, + json=user, + ) + + assert response.status_code == 200 + From afd65b3cb0beb6890a876705ecdbeca8d9b0286d Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Sun, 30 May 2021 11:45:38 +0200 Subject: [PATCH 066/192] Update query parameter sample to include pipe delimiter (#9590) --- ...store-with-fake-endpoints-models-for-testing.yaml | 1 + .../src/Org.OpenAPITools/Api/FakeApi.cs | 4 ++-- .../petstore/javascript-es6/src/api/FakeApi.js | 2 +- .../javascript-promise-es6/src/api/FakeApi.js | 2 +- .../php/OpenAPIClient-php/lib/Api/FakeApi.php | 12 ++++-------- .../ruby-faraday/lib/petstore/api/fake_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/fake_api.rb | 2 +- .../builds/default-v3.0/apis/FakeApi.ts | 2 +- .../petstore_client_lib_fake/lib/api/fake_api.dart | 2 +- .../lib/api/fake_api.dart | 2 +- .../python-legacy/petstore_api/api/fake_api.py | 2 +- 11 files changed, 15 insertions(+), 18 deletions(-) diff --git a/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml b/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml index 05b9fd5f542..9dac77c2fa4 100644 --- a/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml @@ -1049,6 +1049,7 @@ paths: - name: pipe in: query required: true + style: pipeDelimited schema: type: array items: diff --git a/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools/Api/FakeApi.cs index c01c18e2f8c..f9f9e77ca7e 100644 --- a/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools/Api/FakeApi.cs @@ -3585,7 +3585,7 @@ namespace Org.OpenAPITools.Api if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (pipe != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("multi", "pipe", pipe)); // query parameter + if (pipe != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("pipes", "pipe", pipe)); // query parameter if (ioutil != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("csv", "ioutil", ioutil)); // query parameter if (http != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("ssv", "http", http)); // query parameter if (url != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("csv", "url", url)); // query parameter @@ -3676,7 +3676,7 @@ namespace Org.OpenAPITools.Api if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (pipe != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("multi", "pipe", pipe)); // query parameter + if (pipe != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("pipes", "pipe", pipe)); // query parameter if (ioutil != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("csv", "ioutil", ioutil)); // query parameter if (http != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("ssv", "http", http)); // query parameter if (url != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("csv", "url", url)); // query parameter diff --git a/samples/client/petstore/javascript-es6/src/api/FakeApi.js b/samples/client/petstore/javascript-es6/src/api/FakeApi.js index df52f7e836c..3b9e1509cef 100644 --- a/samples/client/petstore/javascript-es6/src/api/FakeApi.js +++ b/samples/client/petstore/javascript-es6/src/api/FakeApi.js @@ -814,7 +814,7 @@ export default class FakeApi { let pathParams = { }; let queryParams = { - 'pipe': this.apiClient.buildCollectionParam(pipe, 'multi'), + 'pipe': this.apiClient.buildCollectionParam(pipe, 'pipes'), 'ioutil': this.apiClient.buildCollectionParam(ioutil, 'csv'), 'http': this.apiClient.buildCollectionParam(http, 'ssv'), 'url': this.apiClient.buildCollectionParam(url, 'csv'), diff --git a/samples/client/petstore/javascript-promise-es6/src/api/FakeApi.js b/samples/client/petstore/javascript-promise-es6/src/api/FakeApi.js index dc949777c5b..e635c42692c 100644 --- a/samples/client/petstore/javascript-promise-es6/src/api/FakeApi.js +++ b/samples/client/petstore/javascript-promise-es6/src/api/FakeApi.js @@ -919,7 +919,7 @@ export default class FakeApi { let pathParams = { }; let queryParams = { - 'pipe': this.apiClient.buildCollectionParam(pipe, 'multi'), + 'pipe': this.apiClient.buildCollectionParam(pipe, 'pipes'), 'ioutil': this.apiClient.buildCollectionParam(ioutil, 'csv'), 'http': this.apiClient.buildCollectionParam(http, 'ssv'), 'url': this.apiClient.buildCollectionParam(url, 'csv'), diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php index 93aeaacf9c9..0fe7bd9aa07 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -4426,15 +4426,11 @@ class FakeApi $multipart = false; // query params + if (is_array($pipe)) { + $pipe = ObjectSerializer::serializeCollection($pipe, 'pipeDelimited', true); + } if ($pipe !== null) { - if('form' === 'form' && is_array($pipe)) { - foreach($pipe as $key => $value) { - $queryParams[$key] = $value; - } - } - else { - $queryParams['pipe'] = $pipe; - } + $queryParams['pipe'] = $pipe; } // query params if (is_array($ioutil)) { diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb index eed4d7da429..50a336275d7 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb @@ -1236,7 +1236,7 @@ module Petstore # query parameters query_params = opts[:query_params] || {} - query_params[:'pipe'] = @api_client.build_collection_param(pipe, :multi) + query_params[:'pipe'] = @api_client.build_collection_param(pipe, :pipes) query_params[:'ioutil'] = @api_client.build_collection_param(ioutil, :csv) query_params[:'http'] = @api_client.build_collection_param(http, :ssv) query_params[:'url'] = @api_client.build_collection_param(url, :csv) diff --git a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb index eed4d7da429..50a336275d7 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb @@ -1236,7 +1236,7 @@ module Petstore # query parameters query_params = opts[:query_params] || {} - query_params[:'pipe'] = @api_client.build_collection_param(pipe, :multi) + query_params[:'pipe'] = @api_client.build_collection_param(pipe, :pipes) query_params[:'ioutil'] = @api_client.build_collection_param(ioutil, :csv) query_params[:'http'] = @api_client.build_collection_param(http, :ssv) query_params[:'url'] = @api_client.build_collection_param(url, :csv) diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/FakeApi.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/FakeApi.ts index a1f992e866c..5985139ab23 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/FakeApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/FakeApi.ts @@ -871,7 +871,7 @@ export class FakeApi extends runtime.BaseAPI { const queryParameters: any = {}; if (requestParameters.pipe) { - queryParameters['pipe'] = requestParameters.pipe; + queryParameters['pipe'] = requestParameters.pipe.join(runtime.COLLECTION_FORMATS["pipes"]); } if (requestParameters.ioutil) { diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart index 03731c1bf00..07742e02082 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api/fake_api.dart @@ -1202,7 +1202,7 @@ class FakeApi { final headerParams = {}; final formParams = {}; - queryParams.addAll(_convertParametersForCollectionFormat('multi', 'pipe', pipe)); + queryParams.addAll(_convertParametersForCollectionFormat('pipes', 'pipe', pipe)); queryParams.addAll(_convertParametersForCollectionFormat('csv', 'ioutil', ioutil)); queryParams.addAll(_convertParametersForCollectionFormat('ssv', 'http', http)); queryParams.addAll(_convertParametersForCollectionFormat('csv', 'url', url)); diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart index 9790ef7222c..30111f17ac2 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api/fake_api.dart @@ -1209,7 +1209,7 @@ class FakeApi { final headerParams = {}; final formParams = {}; - queryParams.addAll(_convertParametersForCollectionFormat('multi', 'pipe', pipe)); + queryParams.addAll(_convertParametersForCollectionFormat('pipes', 'pipe', pipe)); queryParams.addAll(_convertParametersForCollectionFormat('csv', 'ioutil', ioutil)); queryParams.addAll(_convertParametersForCollectionFormat('ssv', 'http', http)); queryParams.addAll(_convertParametersForCollectionFormat('csv', 'url', url)); diff --git a/samples/openapi3/client/petstore/python-legacy/petstore_api/api/fake_api.py b/samples/openapi3/client/petstore/python-legacy/petstore_api/api/fake_api.py index d81dc4866d9..f2bf00824f9 100755 --- a/samples/openapi3/client/petstore/python-legacy/petstore_api/api/fake_api.py +++ b/samples/openapi3/client/petstore/python-legacy/petstore_api/api/fake_api.py @@ -2551,7 +2551,7 @@ class FakeApi(object): query_params = [] if 'pipe' in local_var_params and local_var_params['pipe'] is not None: # noqa: E501 query_params.append(('pipe', local_var_params['pipe'])) # noqa: E501 - collection_formats['pipe'] = 'multi' # noqa: E501 + collection_formats['pipe'] = 'pipes' # noqa: E501 if 'ioutil' in local_var_params and local_var_params['ioutil'] is not None: # noqa: E501 query_params.append(('ioutil', local_var_params['ioutil'])) # noqa: E501 collection_formats['ioutil'] = 'csv' # noqa: E501 From 88f279ead3d3c9ae5e0edb2ccff67dda62831897 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Mon, 31 May 2021 03:56:05 +0200 Subject: [PATCH 067/192] [ci] Build kotlin samples via github (#9609) --- .github/workflows/samples-kotlin.yaml | 64 +++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 .github/workflows/samples-kotlin.yaml diff --git a/.github/workflows/samples-kotlin.yaml b/.github/workflows/samples-kotlin.yaml new file mode 100644 index 00000000000..faa5062c553 --- /dev/null +++ b/.github/workflows/samples-kotlin.yaml @@ -0,0 +1,64 @@ +name: Samples Kotlin + +on: + push: + branches: + - master + - '[5-9]+.[0-9]+.x' + pull_request: + branches: + - master + - '[5-9]+.[0-9]+.x' + +env: + GRADLE_VERSION: 6.9 + +jobs: + build: + name: Build Kotlin + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + sample: + - samples/client/petstore/kotlin + - samples/client/petstore/kotlin-gson + - samples/client/petstore/kotlin-jackson + # needs Android configured + #- samples/client/petstore/kotlin-json-request-string + - samples/client/petstore/kotlin-jvm-okhttp4-coroutines + - samples/client/petstore/kotlin-moshi-codegen + # need some special setup + #- samples/client/petstore/kotlin-multiplatform + - samples/client/petstore/kotlin-nonpublic + - samples/client/petstore/kotlin-nullable + - samples/client/petstore/kotlin-okhttp3 + - samples/client/petstore/kotlin-retrofit2 + - samples/client/petstore/kotlin-retrofit2-kotlinx_serialization + - samples/client/petstore/kotlin-retrofit2-rx3 + - samples/client/petstore/kotlin-string + - samples/client/petstore/kotlin-threetenbp + - samples/client/petstore/kotlin-uppercase-enum + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: 8 + - name: Cache maven dependencies + uses: actions/cache@v2 + env: + cache-name: maven-repository + with: + path: | + ~/.gradle + key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} + - name: Install Gradle wrapper + uses: eskatos/gradle-command-action@v1 + with: + gradle-version: ${{ env.GRADLE_VERSION }} + build-root-directory: ${{ matrix.sample }} + arguments: wrapper + - name: Build + working-directory: ${{ matrix.sample }} + run: ./gradlew build -x test From c4df343052deb51d8856fde636be0b9e49e2fade Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Sun, 30 May 2021 22:37:14 -0400 Subject: [PATCH 068/192] [Swift5] Add useClasses cli option (#9608) * [swift5] Add useClasses cliOption * Update swift docs --- docs/generators/swift5.md | 1 + .../codegen/languages/Swift5ClientCodegen.java | 13 +++++++++++++ .../codegen/options/Swift5OptionsProvider.java | 1 + 3 files changed, 15 insertions(+) diff --git a/docs/generators/swift5.md b/docs/generators/swift5.md index bace7f1f049..51dc7529358 100644 --- a/docs/generators/swift5.md +++ b/docs/generators/swift5.md @@ -39,6 +39,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |swiftPackagePath|Set a custom source path instead of OpenAPIClient/Classes/OpenAPIs.| |null| |swiftUseApiNamespace|Flag to make all the API classes inner-class of {{projectName}}API| |null| |useBacktickEscapes|Escape reserved words using backticks (default: false)| |false| +|useClasses|Use final classes for models instead of structs (default: false)| |false| |useSPMFileStructure|Use SPM file structure and set the source path to Sources/{{projectName}} (default: false).| |null| ## IMPORT MAPPING diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index 273762e830d..d44d34ca039 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -63,6 +63,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig public static final String LENIENT_TYPE_CAST = "lenientTypeCast"; public static final String USE_SPM_FILE_STRUCTURE = "useSPMFileStructure"; public static final String SWIFT_PACKAGE_PATH = "swiftPackagePath"; + public static final String USE_CLASSES = "useClasses"; public static final String USE_BACKTICK_ESCAPES = "useBacktickEscapes"; public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES = "generateModelAdditionalProperties"; public static final String HASHABLE_MODELS = "hashableModels"; @@ -82,6 +83,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig protected boolean swiftUseApiNamespace = false; protected boolean useSPMFileStructure = false; protected String swiftPackagePath = "Classes" + File.separator + "OpenAPIs"; + protected boolean useClasses = false; protected boolean useBacktickEscapes = false; protected boolean generateModelAdditionalProperties = true; protected boolean hashableModels = true; @@ -282,6 +284,8 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig + " and set the source path to Sources" + File.separator + "{{projectName}} (default: false).")); cliOptions.add(new CliOption(SWIFT_PACKAGE_PATH, "Set a custom source path instead of " + projectName + File.separator + "Classes" + File.separator + "OpenAPIs" + ".")); + cliOptions.add(new CliOption(USE_CLASSES, "Use final classes for models instead of structs (default: false)") + .defaultValue(Boolean.FALSE.toString())); cliOptions.add(new CliOption(HASHABLE_MODELS, "Make hashable models (default: true)") @@ -484,6 +488,11 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig typeMapping.put("binary", "Data"); } + if (additionalProperties.containsKey(USE_CLASSES)) { + setUseClasses(convertPropertyToBooleanAndWriteBack(USE_CLASSES)); + } + additionalProperties.put(USE_CLASSES, useClasses); + setLenientTypeCast(convertPropertyToBooleanAndWriteBack(LENIENT_TYPE_CAST)); // make api and model doc path available in mustache template @@ -904,6 +913,10 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig this.swiftPackagePath = swiftPackagePath; } + public void setUseClasses(boolean useClasses) { + this.useClasses = useClasses; + } + public void setUseBacktickEscapes(boolean useBacktickEscapes) { this.useBacktickEscapes = useBacktickEscapes; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java index 6e5f48ca377..fa562df6d7f 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java @@ -96,6 +96,7 @@ public class Swift5OptionsProvider implements OptionsProvider { .put(Swift5ClientCodegen.GENERATE_MODEL_ADDITIONAL_PROPERTIES, GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE) .put(Swift5ClientCodegen.HASHABLE_MODELS, HASHABLE_MODELS_VALUE) .put(Swift5ClientCodegen.MAP_FILE_BINARY_TO_DATA, "false") + .put(Swift5ClientCodegen.USE_CLASSES, "false") .build(); } From 32a045060e3b243c06c9cbb0951321b58100c52f Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 31 May 2021 17:00:23 +0800 Subject: [PATCH 069/192] [ python-fastapi] minor improvements (#9622) * minor python-fastapi improvements * update doc * fix refreshUrl --- README.md | 3 +- docs/generators.md | 1 + .../languages/PythonFastAPIServerCodegen.java | 32 ++++++++++++++++--- .../python-fastapi/security_api.mustache | 2 +- .../petstore/python-fastapi/openapi.yaml | 3 -- 5 files changed, 32 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index ff47c88ff23..f02a8ada352 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ OpenAPI Generator allows generation of API client libraries (SDK generation), se | | Languages/Frameworks | | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later, .NET Standard 1.3 - 2.0, .NET Core 2.0, .NET 5.0. Libraries: RestSharp, HttpClient), **C++** (Arduino, cpp-restsdk, Qt5, Tizen, Unreal Engine 4), **Clojure**, **Crystal**, **Dart**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client, MicroProfile Rest Client), **k6**, **Kotlin**, **Lua**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types, Apollo GraphQL DataStore), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (hyper, reqwest, rust-server), **Scala** (akka, http4s, scalaz, sttp, swagger-async-httpclient), **Swift** (2.x, 3.x, 4.x, 5.x), **Typescript** (AngularJS, Angular (2.x - 11.x), Aurelia, Axios, Fetch, Inversify, jQuery, Nestjs, Node, redux-query, Rxjs) | -| **Server stubs** | **Ada**, **C#** (ASP.NET Core, NancyFx), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin, Echo), **Haskell** (Servant), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/)), **Kotlin** (Spring Boot, Ktor, Vertx), **PHP** (Laravel, Lumen, Slim, Silex, [Symfony](https://symfony.com/), [Zend Expressive](https://github.com/zendframework/zend-expressive)), **Python** (Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** (rust-server), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), Scalatra) | +| **Server stubs** | **Ada**, **C#** (ASP.NET Core, NancyFx), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin, Echo), **Haskell** (Servant), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/)), **Kotlin** (Spring Boot, Ktor, Vertx), **PHP** (Laravel, Lumen, Slim, Silex, [Symfony](https://symfony.com/), [Zend Expressive](https://github.com/zendframework/zend-expressive)), **Python** (FastAPI, Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** (rust-server), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), Scalatra) | | **API documentation generators** | **HTML**, **Confluence Wiki**, **Asciidoc**, **Markdown**, **PlantUML** | | **Configuration files** | [**Apache2**](https://httpd.apache.org/) | | **Others** | **GraphQL**, **JMeter**, **Ktorm**, **MySQL Schema**, **Protocol Buffer**, **WSDL** | @@ -951,6 +951,7 @@ Here is a list of template creators: * PHP Slim: @jfastnacht * PHP Symfony: @ksm2 * PHP Zend Expressive (with Path Handler): @Articus + * Python FastAPI: @krjakbrjak * Python AIOHTTP: @Jyhess * Ruby on Rails 5: @zlx * Rust (rust-server): @metaswitch diff --git a/docs/generators.md b/docs/generators.md index f1cec8c6687..2531acc9e67 100644 --- a/docs/generators.md +++ b/docs/generators.md @@ -120,6 +120,7 @@ The following generators are available: * [php-symfony](generators/php-symfony.md) * [python-aiohttp](generators/python-aiohttp.md) * [python-blueplanet](generators/python-blueplanet.md) +* [python-fastapi (beta)](generators/python-fastapi.md) * [python-flask](generators/python-flask.md) * [ruby-on-rails](generators/ruby-on-rails.md) * [ruby-sinatra](generators/ruby-sinatra.md) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java index f4e69664724..f973a6f2609 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java @@ -1,3 +1,19 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.openapitools.codegen.languages; import com.fasterxml.jackson.core.JsonGenerator; @@ -10,6 +26,9 @@ import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; +import org.openapitools.codegen.meta.GeneratorMetadata; +import org.openapitools.codegen.meta.Stability; +import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,12 +72,16 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { @Override public String getHelp() { - return "Generates a python server (FastAPI)."; + return "Generates a Python FastAPI server (beta)."; } public PythonFastAPIServerCodegen() { super(); + generatorMetadata = GeneratorMetadata.newBuilder(generatorMetadata) + .stability(Stability.BETA) + .build(); + SimpleModule simpleModule = new SimpleModule(); simpleModule.addKeySerializer(String.class, new SnakeCaseKeySerializer()); simpleModule.addSerializer(Boolean.class, new PythonBooleanSerializer()); @@ -115,7 +138,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { // Add __init__.py to all sub-folders under namespace pkg StringBuilder namespacePackagePath = new StringBuilder(SRC_DIR + File.separator + StringUtils.substringBefore(packageName, ".")); - for (String tmp: StringUtils.split(StringUtils.substringAfter(packageName, "."), '.')) { + for (String tmp : StringUtils.split(StringUtils.substringAfter(packageName, "."), '.')) { namespacePackagePath.append(File.separator).append(tmp); supportingFiles.add(new SupportingFile("__init__.mustache", namespacePackagePath.toString(), "__init__.py")); } @@ -181,7 +204,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { } List securityMethods = operation.authMethods; if (securityMethods != null) { - for (final CodegenSecurity securityMethod: securityMethods) { + for (final CodegenSecurity securityMethod : securityMethods) { securityImports.add(securityMethod.name); } } @@ -193,7 +216,8 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { // If fails, use the original string. try { Map result = MAPPER.readValue(example.get("example"), - new TypeReference>(){}); + new TypeReference>() { + }); operation.bodyParam.example = MAPPER.writeValueAsString(result); } catch (IOException e) { operation.bodyParam.example = example.get("example"); diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/security_api.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/security_api.mustache index f925edad438..77bceb11cfa 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/security_api.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/security_api.mustache @@ -34,7 +34,7 @@ oauth2_password = OAuth2PasswordBearer( oauth2_code = OAuth2AuthorizationCodeBearer( authorizationUrl="{{authorizationUrl}}", tokenUrl="{{tokenUrl}}", - refreshUrlUrl="{{refreshUrl}}", + refreshUrl="{{refreshUrl}}", scopes={ {{#scopes}} "{{scope}}": "{{description}}", diff --git a/samples/server/petstore/python-fastapi/openapi.yaml b/samples/server/petstore/python-fastapi/openapi.yaml index e8e287f9991..477694ade00 100644 --- a/samples/server/petstore/python-fastapi/openapi.yaml +++ b/samples/server/petstore/python-fastapi/openapi.yaml @@ -834,10 +834,7 @@ components: write:pets: modify pets in your account read:pets: read your pets type: oauth2 - x-tokenInfoFunc: .security_controller_.info_from_petstore_auth - x-scopeValidateFunc: .security_controller_.validate_scope_petstore_auth api_key: in: header name: api_key type: apiKey - x-apikeyInfoFunc: .security_controller_.info_from_api_key From 173a349e04880b4fbf27224a9a8e6632f528d681 Mon Sep 17 00:00:00 2001 From: Sascha Peilicke Date: Mon, 31 May 2021 15:48:39 +0200 Subject: [PATCH 070/192] Kotlin: Fix kotlinx_serialization code generation (#9576) And update to Kotlin 1.5.0 and kotlinx.serialization 1.2.1. Fix nested enum annotation '@Serializable' instead of '@KSerializable' when 'kotlinx_serialization' is used. Fix missing JsonMediaType in ApiClient.kt (#9242). Add 'kotlinx_serialization' serialization library to documentation. Use explicity type in RequestConfig to keep type information for JSON serialization. Resolves #9242 --- .../kotlin-client/build.gradle.mustache | 4 +- .../kotlin-client/data_class.mustache | 2 +- .../kotlin-client/enum_class.mustache | 2 +- .../infrastructure/RequestConfig.kt.mustache | 4 +- .../libraries/jvm-okhttp/api.mustache | 12 +-- .../infrastructure/ApiClient.kt.mustache | 100 ++++++++---------- .../infrastructure/ApiClient.kt.mustache | 2 +- .../client/petstore/kotlin-gson/build.gradle | 2 +- .../org/openapitools/client/apis/PetApi.kt | 96 +++++++---------- .../org/openapitools/client/apis/StoreApi.kt | 48 ++++----- .../org/openapitools/client/apis/UserApi.kt | 96 +++++++---------- .../client/infrastructure/ApiClient.kt | 86 +++++++-------- .../client/infrastructure/RequestConfig.kt | 4 +- .../petstore/kotlin-jackson/build.gradle | 2 +- .../org/openapitools/client/apis/PetApi.kt | 96 +++++++---------- .../org/openapitools/client/apis/StoreApi.kt | 48 ++++----- .../org/openapitools/client/apis/UserApi.kt | 96 +++++++---------- .../client/infrastructure/ApiClient.kt | 86 +++++++-------- .../client/infrastructure/RequestConfig.kt | 4 +- .../kotlin-json-request-string/build.gradle | 2 +- .../org/openapitools/client/apis/PetApi.kt | 96 +++++++---------- .../org/openapitools/client/apis/StoreApi.kt | 48 ++++----- .../org/openapitools/client/apis/UserApi.kt | 96 +++++++---------- .../client/infrastructure/ApiClient.kt | 86 +++++++-------- .../client/infrastructure/RequestConfig.kt | 4 +- .../build.gradle | 2 +- .../org/openapitools/client/apis/PetApi.kt | 96 +++++++---------- .../org/openapitools/client/apis/StoreApi.kt | 48 ++++----- .../org/openapitools/client/apis/UserApi.kt | 96 +++++++---------- .../client/infrastructure/ApiClient.kt | 86 +++++++-------- .../client/infrastructure/RequestConfig.kt | 4 +- .../kotlin-moshi-codegen/build.gradle | 2 +- .../org/openapitools/client/apis/PetApi.kt | 96 +++++++---------- .../org/openapitools/client/apis/StoreApi.kt | 48 ++++----- .../org/openapitools/client/apis/UserApi.kt | 96 +++++++---------- .../client/infrastructure/ApiClient.kt | 86 +++++++-------- .../client/infrastructure/RequestConfig.kt | 4 +- .../client/infrastructure/ApiClient.kt | 2 +- .../client/infrastructure/RequestConfig.kt | 4 +- .../petstore/kotlin-nonpublic/build.gradle | 2 +- .../org/openapitools/client/apis/PetApi.kt | 96 +++++++---------- .../org/openapitools/client/apis/StoreApi.kt | 48 ++++----- .../org/openapitools/client/apis/UserApi.kt | 96 +++++++---------- .../client/infrastructure/ApiClient.kt | 86 +++++++-------- .../client/infrastructure/RequestConfig.kt | 4 +- .../petstore/kotlin-nullable/build.gradle | 2 +- .../org/openapitools/client/apis/PetApi.kt | 96 +++++++---------- .../org/openapitools/client/apis/StoreApi.kt | 48 ++++----- .../org/openapitools/client/apis/UserApi.kt | 96 +++++++---------- .../client/infrastructure/ApiClient.kt | 86 +++++++-------- .../client/infrastructure/RequestConfig.kt | 4 +- .../petstore/kotlin-okhttp3/build.gradle | 2 +- .../org/openapitools/client/apis/PetApi.kt | 96 +++++++---------- .../org/openapitools/client/apis/StoreApi.kt | 48 ++++----- .../org/openapitools/client/apis/UserApi.kt | 96 +++++++---------- .../client/infrastructure/ApiClient.kt | 86 +++++++-------- .../client/infrastructure/RequestConfig.kt | 4 +- .../build.gradle | 4 +- .../kotlin-retrofit2-rx3/build.gradle | 2 +- .../petstore/kotlin-retrofit2/build.gradle | 2 +- .../petstore/kotlin-string/build.gradle | 2 +- .../org/openapitools/client/apis/PetApi.kt | 96 +++++++---------- .../org/openapitools/client/apis/StoreApi.kt | 48 ++++----- .../org/openapitools/client/apis/UserApi.kt | 96 +++++++---------- .../client/infrastructure/ApiClient.kt | 86 +++++++-------- .../client/infrastructure/RequestConfig.kt | 4 +- .../petstore/kotlin-threetenbp/build.gradle | 2 +- .../org/openapitools/client/apis/PetApi.kt | 96 +++++++---------- .../org/openapitools/client/apis/StoreApi.kt | 48 ++++----- .../org/openapitools/client/apis/UserApi.kt | 96 +++++++---------- .../client/infrastructure/ApiClient.kt | 84 +++++++-------- .../client/infrastructure/RequestConfig.kt | 4 +- .../kotlin-uppercase-enum/build.gradle | 2 +- .../org/openapitools/client/apis/EnumApi.kt | 12 +-- .../client/infrastructure/ApiClient.kt | 84 +++++++-------- .../client/infrastructure/RequestConfig.kt | 4 +- samples/client/petstore/kotlin/build.gradle | 2 +- .../org/openapitools/client/apis/PetApi.kt | 96 +++++++---------- .../org/openapitools/client/apis/StoreApi.kt | 48 ++++----- .../org/openapitools/client/apis/UserApi.kt | 96 +++++++---------- .../client/infrastructure/ApiClient.kt | 86 +++++++-------- .../client/infrastructure/RequestConfig.kt | 4 +- 82 files changed, 1647 insertions(+), 2245 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache index 1f58112db53..18f64464c8e 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' {{#jvm-retrofit2}} ext.retrofitVersion = '2.7.2' {{/jvm-retrofit2}} @@ -72,7 +72,7 @@ dependencies { compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.1" {{/jackson}} {{#kotlinx_serialization}} - compile "org.jetbrains.kotlinx:kotlinx-serialization-json:1.1.0" + compile "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1" {{/kotlinx_serialization}} {{#jvm-okhttp3}} compile "com.squareup.okhttp3:okhttp:3.12.13" diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache index 216df66eeac..f840db6e394 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache @@ -70,7 +70,7 @@ import java.io.Serializable * Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} */ {{#kotlinx_serialization}} - @KSerializable + {{#serializableModel}}@KSerializable{{/serializableModel}}{{^serializableModel}}@Serializable{{/serializableModel}} {{/kotlinx_serialization}} {{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{{nameInCamelCase}}}(val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) { {{#allowableValues}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/enum_class.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/enum_class.mustache index 88d6c278ea2..2071a6b537a 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/enum_class.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/enum_class.mustache @@ -22,7 +22,7 @@ import kotlinx.serialization.internal.CommonEnumSerializer * {{{description}}} * Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} */ -{{#multiplatform}}@Serializable(with = {{classname}}.Serializer::class){{/multiplatform}}{{#kotlinx_serialization}}@Serializable(with = {{classname}}.Serializer::class){{/kotlinx_serialization}} +{{#multiplatform}}@Serializable(with = {{classname}}.Serializer::class){{/multiplatform}}{{#kotlinx_serialization}}@Serializable{{/kotlinx_serialization}} {{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{classname}}(val value: {{{dataType}}}) { {{#allowableValues}}{{#enumVars}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/infrastructure/RequestConfig.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/infrastructure/RequestConfig.kt.mustache index 61677c22aff..ef1b0517e78 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/infrastructure/RequestConfig.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/infrastructure/RequestConfig.kt.mustache @@ -8,10 +8,10 @@ package {{packageName}}.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -{{#nonPublicApi}}internal {{/nonPublicApi}}data class RequestConfig( +{{#nonPublicApi}}internal {{/nonPublicApi}}data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/api.mustache index 7745b52249a..c31f0c2211b 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/api.mustache @@ -43,7 +43,7 @@ import {{packageName}}.infrastructure.toMultiValue {{^doNotUseRxAndCoroutines}}{{#useCoroutines}}suspend {{/useCoroutines}}{{/doNotUseRxAndCoroutines}}fun {{operationId}}({{#allParams}}{{{paramName}}}: {{{dataType}}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : {{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}} { val localVariableConfig = {{operationId}}RequestConfig({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}}) - val localVarResponse = request<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Any?{{/returnType}}>( + val localVarResponse = request<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map{{/hasFormParams}}{{/hasBodyParam}}, {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Unit{{/returnType}}>( localVariableConfig ) @@ -71,8 +71,8 @@ import {{packageName}}.infrastructure.toMultiValue {{#isDeprecated}} @Deprecated(message = "This operation is deprecated.") {{/isDeprecated}} - fun {{operationId}}RequestConfig({{#allParams}}{{{paramName}}}: {{{dataType}}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : RequestConfig { - val localVariableBody: kotlin.Any? = {{#hasBodyParam}}{{#bodyParams}}{{{paramName}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}null{{/hasFormParams}}{{#hasFormParams}}mapOf({{#formParams}}"{{{baseName}}}" to {{{paramName}}}{{^-last}}, {{/-last}}{{/formParams}}){{/hasFormParams}}{{/hasBodyParam}} + fun {{operationId}}RequestConfig({{#allParams}}{{{paramName}}}: {{{dataType}}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : RequestConfig<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map{{/hasFormParams}}{{/hasBodyParam}}> { + val localVariableBody = {{#hasBodyParam}}{{#bodyParams}}{{{paramName}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}null{{/hasFormParams}}{{#hasFormParams}}mapOf({{#formParams}}"{{{baseName}}}" to {{{paramName}}}{{^-last}}, {{/-last}}{{/formParams}}){{/hasFormParams}}{{/hasBodyParam}} val localVariableQuery: MultiValueMap = {{^hasQueryParams}}mutableMapOf() {{/hasQueryParams}}{{#hasQueryParams}}mutableMapOf>() .apply { @@ -99,16 +99,14 @@ import {{packageName}}.infrastructure.toMultiValue {{#headerParams}} {{{paramName}}}{{^required}}?{{/required}}.apply { localVariableHeaders["{{baseName}}"] = {{#isContainer}}this.joinToString(separator = collectionDelimiter("{{collectionFormat}}")){{/isContainer}}{{^isContainer}}this.toString(){{/isContainer}} } {{/headerParams}} - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.{{httpMethod}}, path = "{{path}}"{{#pathParams}}.replace("{"+"{{baseName}}"+"}", "${{{paramName}}}"){{/pathParams}}, query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } {{/operation}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache index b470beae2e5..2c0c8d8930a 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache @@ -27,11 +27,10 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection -import java.util.Date {{^threetenbp}} import java.time.LocalDate import java.time.LocalDateTime @@ -39,6 +38,12 @@ import java.time.LocalTime import java.time.OffsetDateTime import java.time.OffsetTime {{/threetenbp}} +import java.util.Date +import java.util.Locale +{{#kotlinx_serialization}} +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.encodeToString +{{/kotlinx_serialization}} {{#threetenbp}} import org.threeten.bp.LocalDate import org.threeten.bp.LocalDateTime @@ -86,14 +91,10 @@ import org.threeten.bp.OffsetTime protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { {{#jvm-okhttp3}} - content is File -> RequestBody.create( - MediaType.parse(mediaType), content - ) + content is File -> RequestBody.create(MediaType.parse(mediaType), content) {{/jvm-okhttp3}} {{#jvm-okhttp4}} - content is File -> content.asRequestBody( - mediaType.toMediaTypeOrNull() - ) + content is File -> content.asRequestBody(mediaType.toMediaTypeOrNull()) {{/jvm-okhttp4}} mediaType == FormDataMediaType -> { MultipartBody.Builder() @@ -154,12 +155,12 @@ import org.threeten.bp.OffsetTime MediaType.parse(mediaType), Serializer.jacksonObjectMapper.writeValueAsString(content) {{/jackson}} {{#kotlinx_serialization}} - MediaType.parse(mediaType), Serializer.jvmJson.decodeFromString(content) + MediaType.parse(mediaType), Serializer.jvmJson.encodeToString(content) {{/kotlinx_serialization}} ) {{/jvm-okhttp3}} {{#jvm-okhttp4}} - mediaType == JsonMediaType -> {{#moshi}}Serializer.moshi.adapter(T::class.java).toJson(content){{/moshi}}{{#gson}}Serializer.gson.toJson(content, T::class.java){{/gson}}{{#jackson}}Serializer.jacksonObjectMapper.writeValueAsString(content){{/jackson}}{{#kotlinx_serialization}}Serializer.jvmJson.decodeFromString(content){{/kotlinx_serialization}}.toRequestBody( + mediaType == JsonMediaType -> {{#moshi}}Serializer.moshi.adapter(T::class.java).toJson(content){{/moshi}}{{#gson}}Serializer.gson.toJson(content, T::class.java){{/gson}}{{#jackson}}Serializer.jacksonObjectMapper.writeValueAsString(content){{/jackson}}{{#kotlinx_serialization}}Serializer.jvmJson.encodeToString(content){{/kotlinx_serialization}}.toRequestBody( mediaType.toMediaTypeOrNull() ) {{/jvm-okhttp4}} @@ -196,13 +197,13 @@ import org.threeten.bp.OffsetTime return f as T } return when(mediaType) { - JsonMediaType -> {{#moshi}}Serializer.moshi.adapter(T::class.java).fromJson(bodyContent){{/moshi}}{{#gson}}Serializer.gson.fromJson(bodyContent, T::class.java){{/gson}}{{#jackson}}Serializer.jacksonObjectMapper.readValue(bodyContent, T::class.java){{/jackson}} + JsonMediaType -> {{#moshi}}Serializer.moshi.adapter(T::class.java).fromJson(bodyContent){{/moshi}}{{#gson}}Serializer.gson.fromJson(bodyContent, T::class.java){{/gson}}{{#jackson}}Serializer.jacksonObjectMapper.readValue(bodyContent, T::class.java){{/jackson}}{{#kotlinx_serialization}}Serializer.jvmJson.decodeFromString(bodyContent){{/kotlinx_serialization}} else -> throw UnsupportedOperationException("responseBody currently only supports JSON body.") } } {{#hasAuthMethods}} - protected fun updateAuthParams(requestConfig: RequestConfig) { + protected fun updateAuthParams(requestConfig: RequestConfig) { {{#authMethods}} {{#isApiKey}} {{#isKeyInHeader}} @@ -259,7 +260,7 @@ import org.threeten.bp.OffsetTime } {{/hasAuthMethods}} - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { {{#jvm-okhttp3}} val httpUrl = HttpUrl.parse(baseUrl) ?: throw IllegalStateException("baseUrl is invalid.") {{/jvm-okhttp3}} @@ -300,7 +301,7 @@ import org.threeten.bp.OffsetTime } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -315,57 +316,46 @@ import org.threeten.bp.OffsetTime }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, - response.headers{{#jvm-okhttp3}}(){{/jvm-okhttp3}}.toMultimap() + return when { + response.isRedirect -> Redirection( + response.code{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, + response.headers{{#jvm-okhttp3}}(){{/jvm-okhttp3}}.toMultimap() ) - response.isInformational -> return Informational( - response.message{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, - response.code{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, - response.headers{{#jvm-okhttp3}}(){{/jvm-okhttp3}}.toMultimap() + response.isInformational -> Informational( + response.message{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, + response.code{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, + response.headers{{#jvm-okhttp3}}(){{/jvm-okhttp3}}.toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, accept), - response.code{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, - response.headers{{#jvm-okhttp3}}(){{/jvm-okhttp3}}.toMultimap() + response.isSuccessful -> Success( + responseBody(response.body{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, accept), + response.code{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, + response.headers{{#jvm-okhttp3}}(){{/jvm-okhttp3}}.toMultimap() ) - response.isClientError -> return ClientError( - response.message{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, - response.body{{#jvm-okhttp3}}(){{/jvm-okhttp3}}?.string(), - response.code{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, - response.headers{{#jvm-okhttp3}}(){{/jvm-okhttp3}}.toMultimap() + response.isClientError -> ClientError( + response.message{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, + response.body{{#jvm-okhttp3}}(){{/jvm-okhttp3}}?.string(), + response.code{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, + response.headers{{#jvm-okhttp3}}(){{/jvm-okhttp3}}.toMultimap() ) - else -> return ServerError( - response.message{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, - response.body{{#jvm-okhttp3}}(){{/jvm-okhttp3}}?.string(), - response.code{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, - response.headers{{#jvm-okhttp3}}(){{/jvm-okhttp3}}.toMultimap() + else -> ServerError( + response.message{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, + response.body{{#jvm-okhttp3}}(){{/jvm-okhttp3}}?.string(), + response.code{{#jvm-okhttp3}}(){{/jvm-okhttp3}}, + response.headers{{#jvm-okhttp3}}(){{/jvm-okhttp3}}.toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache index 91185a97a56..b1cf9583bdb 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache @@ -155,7 +155,7 @@ import {{packageName}}.auth.* else request(requestConfig, authNames = authNames) } - protected suspend fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { + protected suspend inline fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { requestConfig.updateForAuth(authNames) val headers = requestConfig.headers diff --git a/samples/client/petstore/kotlin-gson/build.gradle b/samples/client/petstore/kotlin-gson/build.gradle index ae150592cbb..a99b1cf2af2 100644 --- a/samples/client/petstore/kotlin-gson/build.gradle +++ b/samples/client/petstore/kotlin-gson/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index c8b93b33bf6..28273cdf35d 100644 --- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -47,7 +47,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun addPet(body: Pet) : Unit { val localVariableConfig = addPetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -72,20 +72,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun addPetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun addPetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -102,7 +100,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?) : Unit { val localVariableConfig = deletePetRequestConfig(petId = petId, apiKey = apiKey) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -128,21 +126,19 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param apiKey (optional) * @return RequestConfig */ - fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() apiKey?.apply { localVariableHeaders["api_key"] = this.toString() } - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -159,7 +155,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByStatus(status: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByStatusRequestConfig(status = status) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -184,23 +180,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Status values that need to be considered for filter * @return RequestConfig */ - fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("status", toMultiValue(status.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByStatus", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -218,7 +212,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -244,23 +238,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @return RequestConfig */ @Deprecated(message = "This operation is deprecated.") - fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("tags", toMultiValue(tags.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByTags", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -277,7 +269,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getPetById(petId: kotlin.Long) : Pet { val localVariableConfig = getPetByIdRequestConfig(petId = petId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -302,20 +294,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param petId ID of pet to return * @return RequestConfig */ - fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -331,7 +321,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePet(body: Pet) : Unit { val localVariableConfig = updatePetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -356,20 +346,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun updatePetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updatePetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -387,7 +375,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Unit { val localVariableConfig = updatePetWithFormRequestConfig(petId = petId, name = name, status = status) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -414,20 +402,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Updated status of the pet (optional) * @return RequestConfig */ - fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("name" to name, "status" to status) + fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig> { + val localVariableBody = mapOf("name" to name, "status" to status) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "application/x-www-form-urlencoded") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -446,7 +432,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : ApiResponse { val localVariableConfig = uploadFileRequestConfig(petId = petId, additionalMetadata = additionalMetadata, file = file) - val localVarResponse = request( + val localVarResponse = request, ApiResponse>( localVariableConfig ) @@ -473,20 +459,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param file file to upload (optional) * @return RequestConfig */ - fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to additionalMetadata, "file" to file) + fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig> { + val localVariableBody = mapOf("additionalMetadata" to additionalMetadata, "file" to file) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "multipart/form-data") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 215ed63420c..56a23202f82 100644 --- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -46,7 +46,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun deleteOrder(orderId: kotlin.String) : Unit { val localVariableConfig = deleteOrderRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of the order that needs to be deleted * @return RequestConfig */ - fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getInventory() : kotlin.collections.Map { val localVariableConfig = getInventoryRequestConfig() - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -124,20 +122,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * * @return RequestConfig */ - fun getInventoryRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getInventoryRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/inventory", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getOrderById(orderId: kotlin.Long) : Order { val localVariableConfig = getOrderByIdRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -179,20 +175,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of pet that needs to be fetched * @return RequestConfig */ - fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -209,7 +203,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun placeOrder(body: Order) : Order { val localVariableConfig = placeOrderRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -234,20 +228,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param body order placed for purchasing the pet * @return RequestConfig */ - fun placeOrderRequestConfig(body: Order) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun placeOrderRequestConfig(body: Order) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/store/order", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 53748b93463..9f93e853a12 100644 --- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -46,7 +46,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUser(body: User) : Unit { val localVariableConfig = createUserRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Created user object * @return RequestConfig */ - fun createUserRequestConfig(body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUserRequestConfig(body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithArrayInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithArrayInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -125,20 +123,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithArray", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithListInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithListInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -179,20 +175,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithList", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -208,7 +202,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deleteUser(username: kotlin.String) : Unit { val localVariableConfig = deleteUserRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -233,20 +227,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be deleted * @return RequestConfig */ - fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -263,7 +255,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getUserByName(username: kotlin.String) : User { val localVariableConfig = getUserByNameRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -288,20 +280,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be fetched. Use user1 for testing. * @return RequestConfig */ - fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -319,7 +309,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String { val localVariableConfig = loginUserRequestConfig(username = username, password = password) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -345,24 +335,22 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param password The password for login in clear text * @return RequestConfig */ - fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("username", listOf(username.toString())) put("password", listOf(password.toString())) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/login", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -377,7 +365,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun logoutUser() : Unit { val localVariableConfig = logoutUserRequestConfig() - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -401,20 +389,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * * @return RequestConfig */ - fun logoutUserRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun logoutUserRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/logout", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -431,7 +417,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updateUser(username: kotlin.String, body: User) : Unit { val localVariableConfig = updateUserRequestConfig(username = username, body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -457,20 +443,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Updated user object * @return RequestConfig */ - fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index a1c98200ac4..e8c4090e067 100644 --- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -12,16 +12,17 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection -import java.util.Date import java.time.LocalDate import java.time.LocalDateTime import java.time.LocalTime import java.time.OffsetDateTime import java.time.OffsetTime +import java.util.Date +import java.util.Locale open class ApiClient(val baseUrl: String) { companion object { @@ -61,9 +62,7 @@ open class ApiClient(val baseUrl: String) { protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { - content is File -> content.asRequestBody( - mediaType.toMediaTypeOrNull() - ) + content is File -> content.asRequestBody(mediaType.toMediaTypeOrNull()) mediaType == FormDataMediaType -> { MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -131,7 +130,7 @@ open class ApiClient(val baseUrl: String) { } } - protected fun updateAuthParams(requestConfig: RequestConfig) { + protected fun updateAuthParams(requestConfig: RequestConfig) { if (requestConfig.headers["api_key"].isNullOrEmpty()) { if (apiKey["api_key"] != null) { if (apiKeyPrefix["api_key"] != null) { @@ -148,7 +147,7 @@ open class ApiClient(val baseUrl: String) { } } - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { val httpUrl = baseUrl.toHttpUrlOrNull() ?: throw IllegalStateException("baseUrl is invalid.") // take authMethod from operation @@ -182,7 +181,7 @@ open class ApiClient(val baseUrl: String) { } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -197,57 +196,46 @@ open class ApiClient(val baseUrl: String) { }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code, - response.headers.toMultimap() + return when { + response.isRedirect -> Redirection( + response.code, + response.headers.toMultimap() ) - response.isInformational -> return Informational( - response.message, - response.code, - response.headers.toMultimap() + response.isInformational -> Informational( + response.message, + response.code, + response.headers.toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body, accept), - response.code, - response.headers.toMultimap() + response.isSuccessful -> Success( + responseBody(response.body, accept), + response.code, + response.headers.toMultimap() ) - response.isClientError -> return ClientError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + response.isClientError -> ClientError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) - else -> return ServerError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + else -> ServerError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 0f2790f370e..7e948e1dd07 100644 --- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -data class RequestConfig( +data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/samples/client/petstore/kotlin-jackson/build.gradle b/samples/client/petstore/kotlin-jackson/build.gradle index 49a346f1cf9..0429e1f7c30 100644 --- a/samples/client/petstore/kotlin-jackson/build.gradle +++ b/samples/client/petstore/kotlin-jackson/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index c8b93b33bf6..28273cdf35d 100644 --- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -47,7 +47,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun addPet(body: Pet) : Unit { val localVariableConfig = addPetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -72,20 +72,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun addPetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun addPetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -102,7 +100,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?) : Unit { val localVariableConfig = deletePetRequestConfig(petId = petId, apiKey = apiKey) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -128,21 +126,19 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param apiKey (optional) * @return RequestConfig */ - fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() apiKey?.apply { localVariableHeaders["api_key"] = this.toString() } - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -159,7 +155,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByStatus(status: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByStatusRequestConfig(status = status) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -184,23 +180,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Status values that need to be considered for filter * @return RequestConfig */ - fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("status", toMultiValue(status.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByStatus", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -218,7 +212,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -244,23 +238,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @return RequestConfig */ @Deprecated(message = "This operation is deprecated.") - fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("tags", toMultiValue(tags.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByTags", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -277,7 +269,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getPetById(petId: kotlin.Long) : Pet { val localVariableConfig = getPetByIdRequestConfig(petId = petId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -302,20 +294,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param petId ID of pet to return * @return RequestConfig */ - fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -331,7 +321,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePet(body: Pet) : Unit { val localVariableConfig = updatePetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -356,20 +346,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun updatePetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updatePetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -387,7 +375,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Unit { val localVariableConfig = updatePetWithFormRequestConfig(petId = petId, name = name, status = status) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -414,20 +402,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Updated status of the pet (optional) * @return RequestConfig */ - fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("name" to name, "status" to status) + fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig> { + val localVariableBody = mapOf("name" to name, "status" to status) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "application/x-www-form-urlencoded") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -446,7 +432,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : ApiResponse { val localVariableConfig = uploadFileRequestConfig(petId = petId, additionalMetadata = additionalMetadata, file = file) - val localVarResponse = request( + val localVarResponse = request, ApiResponse>( localVariableConfig ) @@ -473,20 +459,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param file file to upload (optional) * @return RequestConfig */ - fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to additionalMetadata, "file" to file) + fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig> { + val localVariableBody = mapOf("additionalMetadata" to additionalMetadata, "file" to file) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "multipart/form-data") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 215ed63420c..56a23202f82 100644 --- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -46,7 +46,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun deleteOrder(orderId: kotlin.String) : Unit { val localVariableConfig = deleteOrderRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of the order that needs to be deleted * @return RequestConfig */ - fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getInventory() : kotlin.collections.Map { val localVariableConfig = getInventoryRequestConfig() - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -124,20 +122,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * * @return RequestConfig */ - fun getInventoryRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getInventoryRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/inventory", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getOrderById(orderId: kotlin.Long) : Order { val localVariableConfig = getOrderByIdRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -179,20 +175,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of pet that needs to be fetched * @return RequestConfig */ - fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -209,7 +203,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun placeOrder(body: Order) : Order { val localVariableConfig = placeOrderRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -234,20 +228,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param body order placed for purchasing the pet * @return RequestConfig */ - fun placeOrderRequestConfig(body: Order) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun placeOrderRequestConfig(body: Order) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/store/order", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 53748b93463..9f93e853a12 100644 --- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -46,7 +46,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUser(body: User) : Unit { val localVariableConfig = createUserRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Created user object * @return RequestConfig */ - fun createUserRequestConfig(body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUserRequestConfig(body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithArrayInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithArrayInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -125,20 +123,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithArray", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithListInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithListInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -179,20 +175,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithList", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -208,7 +202,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deleteUser(username: kotlin.String) : Unit { val localVariableConfig = deleteUserRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -233,20 +227,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be deleted * @return RequestConfig */ - fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -263,7 +255,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getUserByName(username: kotlin.String) : User { val localVariableConfig = getUserByNameRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -288,20 +280,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be fetched. Use user1 for testing. * @return RequestConfig */ - fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -319,7 +309,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String { val localVariableConfig = loginUserRequestConfig(username = username, password = password) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -345,24 +335,22 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param password The password for login in clear text * @return RequestConfig */ - fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("username", listOf(username.toString())) put("password", listOf(password.toString())) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/login", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -377,7 +365,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun logoutUser() : Unit { val localVariableConfig = logoutUserRequestConfig() - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -401,20 +389,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * * @return RequestConfig */ - fun logoutUserRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun logoutUserRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/logout", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -431,7 +417,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updateUser(username: kotlin.String, body: User) : Unit { val localVariableConfig = updateUserRequestConfig(username = username, body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -457,20 +443,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Updated user object * @return RequestConfig */ - fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index e9bcbc7981c..0c29beb9558 100644 --- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -12,16 +12,17 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection -import java.util.Date import java.time.LocalDate import java.time.LocalDateTime import java.time.LocalTime import java.time.OffsetDateTime import java.time.OffsetTime +import java.util.Date +import java.util.Locale open class ApiClient(val baseUrl: String) { companion object { @@ -61,9 +62,7 @@ open class ApiClient(val baseUrl: String) { protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { - content is File -> content.asRequestBody( - mediaType.toMediaTypeOrNull() - ) + content is File -> content.asRequestBody(mediaType.toMediaTypeOrNull()) mediaType == FormDataMediaType -> { MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -131,7 +130,7 @@ open class ApiClient(val baseUrl: String) { } } - protected fun updateAuthParams(requestConfig: RequestConfig) { + protected fun updateAuthParams(requestConfig: RequestConfig) { if (requestConfig.headers["api_key"].isNullOrEmpty()) { if (apiKey["api_key"] != null) { if (apiKeyPrefix["api_key"] != null) { @@ -148,7 +147,7 @@ open class ApiClient(val baseUrl: String) { } } - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { val httpUrl = baseUrl.toHttpUrlOrNull() ?: throw IllegalStateException("baseUrl is invalid.") // take authMethod from operation @@ -182,7 +181,7 @@ open class ApiClient(val baseUrl: String) { } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -197,57 +196,46 @@ open class ApiClient(val baseUrl: String) { }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code, - response.headers.toMultimap() + return when { + response.isRedirect -> Redirection( + response.code, + response.headers.toMultimap() ) - response.isInformational -> return Informational( - response.message, - response.code, - response.headers.toMultimap() + response.isInformational -> Informational( + response.message, + response.code, + response.headers.toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body, accept), - response.code, - response.headers.toMultimap() + response.isSuccessful -> Success( + responseBody(response.body, accept), + response.code, + response.headers.toMultimap() ) - response.isClientError -> return ClientError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + response.isClientError -> ClientError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) - else -> return ServerError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + else -> ServerError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 0f2790f370e..7e948e1dd07 100644 --- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -data class RequestConfig( +data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/samples/client/petstore/kotlin-json-request-string/build.gradle b/samples/client/petstore/kotlin-json-request-string/build.gradle index 4e47e29cc51..378951fb75a 100644 --- a/samples/client/petstore/kotlin-json-request-string/build.gradle +++ b/samples/client/petstore/kotlin-json-request-string/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index d939e3d5a43..5197d04b8df 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -47,7 +47,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun addPet(body: Pet) : Unit { val localVariableConfig = addPetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -72,20 +72,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun addPetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun addPetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -102,7 +100,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?) : Unit { val localVariableConfig = deletePetRequestConfig(petId = petId, apiKey = apiKey) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -128,21 +126,19 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param apiKey (optional) * @return RequestConfig */ - fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() apiKey?.apply { localVariableHeaders["api_key"] = this.toString() } - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -160,7 +156,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -186,23 +182,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @return RequestConfig */ @Deprecated(message = "This operation is deprecated.") - fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("tags", toMultiValue(tags.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByTags", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -219,7 +213,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getAllPets(lastUpdated: java.time.OffsetDateTime?) : kotlin.collections.List { val localVariableConfig = getAllPetsRequestConfig(lastUpdated = lastUpdated) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -244,8 +238,8 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param lastUpdated When this endpoint was hit last to help indentify if the client already has the latest copy. (optional) * @return RequestConfig */ - fun getAllPetsRequestConfig(lastUpdated: java.time.OffsetDateTime?) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getAllPetsRequestConfig(lastUpdated: java.time.OffsetDateTime?) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { if (lastUpdated != null) { @@ -253,16 +247,14 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { } } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/getAll", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -279,7 +271,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getPetById(petId: kotlin.Long) : Pet { val localVariableConfig = getPetByIdRequestConfig(petId = petId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -304,20 +296,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param petId ID of pet to return * @return RequestConfig */ - fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -333,7 +323,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePet(body: Pet) : Unit { val localVariableConfig = updatePetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -358,20 +348,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun updatePetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updatePetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -389,7 +377,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Unit { val localVariableConfig = updatePetWithFormRequestConfig(petId = petId, name = name, status = status) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -416,20 +404,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Updated status of the pet (optional) * @return RequestConfig */ - fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("name" to name, "status" to status) + fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig> { + val localVariableBody = mapOf("name" to name, "status" to status) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "application/x-www-form-urlencoded") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -448,7 +434,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : ApiResponse { val localVariableConfig = uploadFileRequestConfig(petId = petId, additionalMetadata = additionalMetadata, file = file) - val localVarResponse = request( + val localVarResponse = request, ApiResponse>( localVariableConfig ) @@ -475,20 +461,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param file file to upload (optional) * @return RequestConfig */ - fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to additionalMetadata, "file" to file) + fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig> { + val localVariableBody = mapOf("additionalMetadata" to additionalMetadata, "file" to file) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "multipart/form-data") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 215ed63420c..56a23202f82 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -46,7 +46,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun deleteOrder(orderId: kotlin.String) : Unit { val localVariableConfig = deleteOrderRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of the order that needs to be deleted * @return RequestConfig */ - fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getInventory() : kotlin.collections.Map { val localVariableConfig = getInventoryRequestConfig() - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -124,20 +122,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * * @return RequestConfig */ - fun getInventoryRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getInventoryRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/inventory", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getOrderById(orderId: kotlin.Long) : Order { val localVariableConfig = getOrderByIdRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -179,20 +175,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of pet that needs to be fetched * @return RequestConfig */ - fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -209,7 +203,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun placeOrder(body: Order) : Order { val localVariableConfig = placeOrderRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -234,20 +228,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param body order placed for purchasing the pet * @return RequestConfig */ - fun placeOrderRequestConfig(body: Order) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun placeOrderRequestConfig(body: Order) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/store/order", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 53748b93463..9f93e853a12 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -46,7 +46,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUser(body: User) : Unit { val localVariableConfig = createUserRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Created user object * @return RequestConfig */ - fun createUserRequestConfig(body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUserRequestConfig(body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithArrayInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithArrayInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -125,20 +123,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithArray", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithListInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithListInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -179,20 +175,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithList", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -208,7 +202,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deleteUser(username: kotlin.String) : Unit { val localVariableConfig = deleteUserRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -233,20 +227,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be deleted * @return RequestConfig */ - fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -263,7 +255,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getUserByName(username: kotlin.String) : User { val localVariableConfig = getUserByNameRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -288,20 +280,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be fetched. Use user1 for testing. * @return RequestConfig */ - fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -319,7 +309,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String { val localVariableConfig = loginUserRequestConfig(username = username, password = password) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -345,24 +335,22 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param password The password for login in clear text * @return RequestConfig */ - fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("username", listOf(username.toString())) put("password", listOf(password.toString())) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/login", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -377,7 +365,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun logoutUser() : Unit { val localVariableConfig = logoutUserRequestConfig() - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -401,20 +389,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * * @return RequestConfig */ - fun logoutUserRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun logoutUserRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/logout", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -431,7 +417,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updateUser(username: kotlin.String, body: User) : Unit { val localVariableConfig = updateUserRequestConfig(username = username, body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -457,20 +443,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Updated user object * @return RequestConfig */ - fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index a9fe6b46d77..ea327d4b6a4 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -13,16 +13,17 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection -import java.util.Date import java.time.LocalDate import java.time.LocalDateTime import java.time.LocalTime import java.time.OffsetDateTime import java.time.OffsetTime +import java.util.Date +import java.util.Locale open class ApiClient(val baseUrl: String) { companion object { @@ -62,9 +63,7 @@ open class ApiClient(val baseUrl: String) { protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { - content is File -> content.asRequestBody( - mediaType.toMediaTypeOrNull() - ) + content is File -> content.asRequestBody(mediaType.toMediaTypeOrNull()) mediaType == FormDataMediaType -> { MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -137,7 +136,7 @@ open class ApiClient(val baseUrl: String) { } } - protected fun updateAuthParams(requestConfig: RequestConfig) { + protected fun updateAuthParams(requestConfig: RequestConfig) { if (requestConfig.headers["api_key"].isNullOrEmpty()) { if (apiKey["api_key"] != null) { if (apiKeyPrefix["api_key"] != null) { @@ -154,7 +153,7 @@ open class ApiClient(val baseUrl: String) { } } - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { val httpUrl = baseUrl.toHttpUrlOrNull() ?: throw IllegalStateException("baseUrl is invalid.") // take authMethod from operation @@ -188,7 +187,7 @@ open class ApiClient(val baseUrl: String) { } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -203,57 +202,46 @@ open class ApiClient(val baseUrl: String) { }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code, - response.headers.toMultimap() + return when { + response.isRedirect -> Redirection( + response.code, + response.headers.toMultimap() ) - response.isInformational -> return Informational( - response.message, - response.code, - response.headers.toMultimap() + response.isInformational -> Informational( + response.message, + response.code, + response.headers.toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body, accept), - response.code, - response.headers.toMultimap() + response.isSuccessful -> Success( + responseBody(response.body, accept), + response.code, + response.headers.toMultimap() ) - response.isClientError -> return ClientError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + response.isClientError -> ClientError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) - else -> return ServerError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + else -> ServerError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 0f2790f370e..7e948e1dd07 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -data class RequestConfig( +data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle index ae150592cbb..a99b1cf2af2 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 78223583f64..1e40497d817 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -47,7 +47,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun addPet(body: Pet) : Unit { val localVariableConfig = addPetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -72,20 +72,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun addPetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun addPetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -102,7 +100,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?) : Unit { val localVariableConfig = deletePetRequestConfig(petId = petId, apiKey = apiKey) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -128,21 +126,19 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param apiKey (optional) * @return RequestConfig */ - fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() apiKey?.apply { localVariableHeaders["api_key"] = this.toString() } - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -159,7 +155,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun findPetsByStatus(status: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByStatusRequestConfig(status = status) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -184,23 +180,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Status values that need to be considered for filter * @return RequestConfig */ - fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("status", toMultiValue(status.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByStatus", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -218,7 +212,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -244,23 +238,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @return RequestConfig */ @Deprecated(message = "This operation is deprecated.") - fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("tags", toMultiValue(tags.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByTags", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -277,7 +269,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun getPetById(petId: kotlin.Long) : Pet { val localVariableConfig = getPetByIdRequestConfig(petId = petId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -302,20 +294,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param petId ID of pet to return * @return RequestConfig */ - fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -331,7 +321,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun updatePet(body: Pet) : Unit { val localVariableConfig = updatePetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -356,20 +346,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun updatePetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updatePetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -387,7 +375,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Unit { val localVariableConfig = updatePetWithFormRequestConfig(petId = petId, name = name, status = status) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -414,20 +402,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Updated status of the pet (optional) * @return RequestConfig */ - fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("name" to name, "status" to status) + fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig> { + val localVariableBody = mapOf("name" to name, "status" to status) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "application/x-www-form-urlencoded") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -446,7 +432,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : ApiResponse { val localVariableConfig = uploadFileRequestConfig(petId = petId, additionalMetadata = additionalMetadata, file = file) - val localVarResponse = request( + val localVarResponse = request, ApiResponse>( localVariableConfig ) @@ -473,20 +459,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param file file to upload (optional) * @return RequestConfig */ - fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to additionalMetadata, "file" to file) + fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig> { + val localVariableBody = mapOf("additionalMetadata" to additionalMetadata, "file" to file) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "multipart/form-data") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 4ab794d6608..e4ed2245f6f 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -46,7 +46,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) suspend fun deleteOrder(orderId: kotlin.String) : Unit { val localVariableConfig = deleteOrderRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of the order that needs to be deleted * @return RequestConfig */ - fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) suspend fun getInventory() : kotlin.collections.Map { val localVariableConfig = getInventoryRequestConfig() - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -124,20 +122,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * * @return RequestConfig */ - fun getInventoryRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getInventoryRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/inventory", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) suspend fun getOrderById(orderId: kotlin.Long) : Order { val localVariableConfig = getOrderByIdRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -179,20 +175,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of pet that needs to be fetched * @return RequestConfig */ - fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -209,7 +203,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) suspend fun placeOrder(body: Order) : Order { val localVariableConfig = placeOrderRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -234,20 +228,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param body order placed for purchasing the pet * @return RequestConfig */ - fun placeOrderRequestConfig(body: Order) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun placeOrderRequestConfig(body: Order) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/store/order", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 911bbee5b6b..44f24c941f8 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -46,7 +46,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun createUser(body: User) : Unit { val localVariableConfig = createUserRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Created user object * @return RequestConfig */ - fun createUserRequestConfig(body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUserRequestConfig(body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun createUsersWithArrayInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithArrayInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -125,20 +123,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithArray", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun createUsersWithListInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithListInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -179,20 +175,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithList", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -208,7 +202,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun deleteUser(username: kotlin.String) : Unit { val localVariableConfig = deleteUserRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -233,20 +227,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be deleted * @return RequestConfig */ - fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -263,7 +255,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun getUserByName(username: kotlin.String) : User { val localVariableConfig = getUserByNameRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -288,20 +280,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be fetched. Use user1 for testing. * @return RequestConfig */ - fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -319,7 +309,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String { val localVariableConfig = loginUserRequestConfig(username = username, password = password) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -345,24 +335,22 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param password The password for login in clear text * @return RequestConfig */ - fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("username", listOf(username.toString())) put("password", listOf(password.toString())) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/login", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -377,7 +365,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun logoutUser() : Unit { val localVariableConfig = logoutUserRequestConfig() - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -401,20 +389,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * * @return RequestConfig */ - fun logoutUserRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun logoutUserRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/logout", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -431,7 +417,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { suspend fun updateUser(username: kotlin.String, body: User) : Unit { val localVariableConfig = updateUserRequestConfig(username = username, body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -457,20 +443,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Updated user object * @return RequestConfig */ - fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index a1c98200ac4..e8c4090e067 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -12,16 +12,17 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection -import java.util.Date import java.time.LocalDate import java.time.LocalDateTime import java.time.LocalTime import java.time.OffsetDateTime import java.time.OffsetTime +import java.util.Date +import java.util.Locale open class ApiClient(val baseUrl: String) { companion object { @@ -61,9 +62,7 @@ open class ApiClient(val baseUrl: String) { protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { - content is File -> content.asRequestBody( - mediaType.toMediaTypeOrNull() - ) + content is File -> content.asRequestBody(mediaType.toMediaTypeOrNull()) mediaType == FormDataMediaType -> { MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -131,7 +130,7 @@ open class ApiClient(val baseUrl: String) { } } - protected fun updateAuthParams(requestConfig: RequestConfig) { + protected fun updateAuthParams(requestConfig: RequestConfig) { if (requestConfig.headers["api_key"].isNullOrEmpty()) { if (apiKey["api_key"] != null) { if (apiKeyPrefix["api_key"] != null) { @@ -148,7 +147,7 @@ open class ApiClient(val baseUrl: String) { } } - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { val httpUrl = baseUrl.toHttpUrlOrNull() ?: throw IllegalStateException("baseUrl is invalid.") // take authMethod from operation @@ -182,7 +181,7 @@ open class ApiClient(val baseUrl: String) { } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -197,57 +196,46 @@ open class ApiClient(val baseUrl: String) { }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code, - response.headers.toMultimap() + return when { + response.isRedirect -> Redirection( + response.code, + response.headers.toMultimap() ) - response.isInformational -> return Informational( - response.message, - response.code, - response.headers.toMultimap() + response.isInformational -> Informational( + response.message, + response.code, + response.headers.toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body, accept), - response.code, - response.headers.toMultimap() + response.isSuccessful -> Success( + responseBody(response.body, accept), + response.code, + response.headers.toMultimap() ) - response.isClientError -> return ClientError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + response.isClientError -> ClientError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) - else -> return ServerError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + else -> ServerError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 0f2790f370e..7e948e1dd07 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -data class RequestConfig( +data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/samples/client/petstore/kotlin-moshi-codegen/build.gradle b/samples/client/petstore/kotlin-moshi-codegen/build.gradle index 5e86b0b1a36..7fec302dc5a 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/build.gradle +++ b/samples/client/petstore/kotlin-moshi-codegen/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index c8b93b33bf6..28273cdf35d 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -47,7 +47,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun addPet(body: Pet) : Unit { val localVariableConfig = addPetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -72,20 +72,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun addPetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun addPetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -102,7 +100,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?) : Unit { val localVariableConfig = deletePetRequestConfig(petId = petId, apiKey = apiKey) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -128,21 +126,19 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param apiKey (optional) * @return RequestConfig */ - fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() apiKey?.apply { localVariableHeaders["api_key"] = this.toString() } - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -159,7 +155,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByStatus(status: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByStatusRequestConfig(status = status) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -184,23 +180,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Status values that need to be considered for filter * @return RequestConfig */ - fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("status", toMultiValue(status.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByStatus", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -218,7 +212,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -244,23 +238,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @return RequestConfig */ @Deprecated(message = "This operation is deprecated.") - fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("tags", toMultiValue(tags.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByTags", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -277,7 +269,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getPetById(petId: kotlin.Long) : Pet { val localVariableConfig = getPetByIdRequestConfig(petId = petId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -302,20 +294,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param petId ID of pet to return * @return RequestConfig */ - fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -331,7 +321,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePet(body: Pet) : Unit { val localVariableConfig = updatePetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -356,20 +346,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun updatePetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updatePetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -387,7 +375,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Unit { val localVariableConfig = updatePetWithFormRequestConfig(petId = petId, name = name, status = status) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -414,20 +402,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Updated status of the pet (optional) * @return RequestConfig */ - fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("name" to name, "status" to status) + fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig> { + val localVariableBody = mapOf("name" to name, "status" to status) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "application/x-www-form-urlencoded") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -446,7 +432,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : ApiResponse { val localVariableConfig = uploadFileRequestConfig(petId = petId, additionalMetadata = additionalMetadata, file = file) - val localVarResponse = request( + val localVarResponse = request, ApiResponse>( localVariableConfig ) @@ -473,20 +459,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param file file to upload (optional) * @return RequestConfig */ - fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to additionalMetadata, "file" to file) + fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig> { + val localVariableBody = mapOf("additionalMetadata" to additionalMetadata, "file" to file) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "multipart/form-data") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 215ed63420c..56a23202f82 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -46,7 +46,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun deleteOrder(orderId: kotlin.String) : Unit { val localVariableConfig = deleteOrderRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of the order that needs to be deleted * @return RequestConfig */ - fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getInventory() : kotlin.collections.Map { val localVariableConfig = getInventoryRequestConfig() - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -124,20 +122,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * * @return RequestConfig */ - fun getInventoryRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getInventoryRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/inventory", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getOrderById(orderId: kotlin.Long) : Order { val localVariableConfig = getOrderByIdRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -179,20 +175,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of pet that needs to be fetched * @return RequestConfig */ - fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -209,7 +203,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun placeOrder(body: Order) : Order { val localVariableConfig = placeOrderRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -234,20 +228,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param body order placed for purchasing the pet * @return RequestConfig */ - fun placeOrderRequestConfig(body: Order) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun placeOrderRequestConfig(body: Order) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/store/order", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 53748b93463..9f93e853a12 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -46,7 +46,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUser(body: User) : Unit { val localVariableConfig = createUserRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Created user object * @return RequestConfig */ - fun createUserRequestConfig(body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUserRequestConfig(body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithArrayInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithArrayInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -125,20 +123,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithArray", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithListInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithListInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -179,20 +175,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithList", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -208,7 +202,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deleteUser(username: kotlin.String) : Unit { val localVariableConfig = deleteUserRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -233,20 +227,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be deleted * @return RequestConfig */ - fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -263,7 +255,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getUserByName(username: kotlin.String) : User { val localVariableConfig = getUserByNameRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -288,20 +280,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be fetched. Use user1 for testing. * @return RequestConfig */ - fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -319,7 +309,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String { val localVariableConfig = loginUserRequestConfig(username = username, password = password) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -345,24 +335,22 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param password The password for login in clear text * @return RequestConfig */ - fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("username", listOf(username.toString())) put("password", listOf(password.toString())) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/login", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -377,7 +365,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun logoutUser() : Unit { val localVariableConfig = logoutUserRequestConfig() - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -401,20 +389,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * * @return RequestConfig */ - fun logoutUserRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun logoutUserRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/logout", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -431,7 +417,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updateUser(username: kotlin.String, body: User) : Unit { val localVariableConfig = updateUserRequestConfig(username = username, body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -457,20 +443,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Updated user object * @return RequestConfig */ - fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index c548762e28b..0961cf760c6 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -12,16 +12,17 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection -import java.util.Date import java.time.LocalDate import java.time.LocalDateTime import java.time.LocalTime import java.time.OffsetDateTime import java.time.OffsetTime +import java.util.Date +import java.util.Locale open class ApiClient(val baseUrl: String) { companion object { @@ -61,9 +62,7 @@ open class ApiClient(val baseUrl: String) { protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { - content is File -> content.asRequestBody( - mediaType.toMediaTypeOrNull() - ) + content is File -> content.asRequestBody(mediaType.toMediaTypeOrNull()) mediaType == FormDataMediaType -> { MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -131,7 +130,7 @@ open class ApiClient(val baseUrl: String) { } } - protected fun updateAuthParams(requestConfig: RequestConfig) { + protected fun updateAuthParams(requestConfig: RequestConfig) { if (requestConfig.headers["api_key"].isNullOrEmpty()) { if (apiKey["api_key"] != null) { if (apiKeyPrefix["api_key"] != null) { @@ -148,7 +147,7 @@ open class ApiClient(val baseUrl: String) { } } - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { val httpUrl = baseUrl.toHttpUrlOrNull() ?: throw IllegalStateException("baseUrl is invalid.") // take authMethod from operation @@ -182,7 +181,7 @@ open class ApiClient(val baseUrl: String) { } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -197,57 +196,46 @@ open class ApiClient(val baseUrl: String) { }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code, - response.headers.toMultimap() + return when { + response.isRedirect -> Redirection( + response.code, + response.headers.toMultimap() ) - response.isInformational -> return Informational( - response.message, - response.code, - response.headers.toMultimap() + response.isInformational -> Informational( + response.message, + response.code, + response.headers.toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body, accept), - response.code, - response.headers.toMultimap() + response.isSuccessful -> Success( + responseBody(response.body, accept), + response.code, + response.headers.toMultimap() ) - response.isClientError -> return ClientError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + response.isClientError -> ClientError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) - else -> return ServerError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + else -> ServerError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 0f2790f370e..7e948e1dd07 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -data class RequestConfig( +data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index fe8434be210..42d2a68d5b4 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -155,7 +155,7 @@ open class ApiClient( else request(requestConfig, authNames = authNames) } - protected suspend fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { + protected suspend inline fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { requestConfig.updateForAuth(authNames) val headers = requestConfig.headers diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 0f2790f370e..7e948e1dd07 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -data class RequestConfig( +data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/samples/client/petstore/kotlin-nonpublic/build.gradle b/samples/client/petstore/kotlin-nonpublic/build.gradle index 60e5056e031..260bd6bda6e 100644 --- a/samples/client/petstore/kotlin-nonpublic/build.gradle +++ b/samples/client/petstore/kotlin-nonpublic/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index b6b38fa42f3..aa38ba8d691 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -47,7 +47,7 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas fun addPet(body: Pet) : Unit { val localVariableConfig = addPetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -72,20 +72,18 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun addPetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun addPetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -102,7 +100,7 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?) : Unit { val localVariableConfig = deletePetRequestConfig(petId = petId, apiKey = apiKey) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -128,21 +126,19 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas * @param apiKey (optional) * @return RequestConfig */ - fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() apiKey?.apply { localVariableHeaders["api_key"] = this.toString() } - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -159,7 +155,7 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas fun findPetsByStatus(status: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByStatusRequestConfig(status = status) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -184,23 +180,21 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas * @param status Status values that need to be considered for filter * @return RequestConfig */ - fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("status", toMultiValue(status.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByStatus", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -218,7 +212,7 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -244,23 +238,21 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas * @return RequestConfig */ @Deprecated(message = "This operation is deprecated.") - fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("tags", toMultiValue(tags.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByTags", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -277,7 +269,7 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas fun getPetById(petId: kotlin.Long) : Pet { val localVariableConfig = getPetByIdRequestConfig(petId = petId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -302,20 +294,18 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas * @param petId ID of pet to return * @return RequestConfig */ - fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -331,7 +321,7 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas fun updatePet(body: Pet) : Unit { val localVariableConfig = updatePetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -356,20 +346,18 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun updatePetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updatePetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -387,7 +375,7 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Unit { val localVariableConfig = updatePetWithFormRequestConfig(petId = petId, name = name, status = status) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -414,20 +402,18 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas * @param status Updated status of the pet (optional) * @return RequestConfig */ - fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("name" to name, "status" to status) + fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig> { + val localVariableBody = mapOf("name" to name, "status" to status) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "application/x-www-form-urlencoded") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -446,7 +432,7 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : ApiResponse { val localVariableConfig = uploadFileRequestConfig(petId = petId, additionalMetadata = additionalMetadata, file = file) - val localVarResponse = request( + val localVarResponse = request, ApiResponse>( localVariableConfig ) @@ -473,20 +459,18 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas * @param file file to upload (optional) * @return RequestConfig */ - fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to additionalMetadata, "file" to file) + fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig> { + val localVariableBody = mapOf("additionalMetadata" to additionalMetadata, "file" to file) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "multipart/form-data") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 19b7acdbd31..10e2b946005 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -46,7 +46,7 @@ internal class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(b fun deleteOrder(orderId: kotlin.String) : Unit { val localVariableConfig = deleteOrderRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ internal class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(b * @param orderId ID of the order that needs to be deleted * @return RequestConfig */ - fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ internal class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(b fun getInventory() : kotlin.collections.Map { val localVariableConfig = getInventoryRequestConfig() - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -124,20 +122,18 @@ internal class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(b * * @return RequestConfig */ - fun getInventoryRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getInventoryRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/inventory", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ internal class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(b fun getOrderById(orderId: kotlin.Long) : Order { val localVariableConfig = getOrderByIdRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -179,20 +175,18 @@ internal class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(b * @param orderId ID of pet that needs to be fetched * @return RequestConfig */ - fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -209,7 +203,7 @@ internal class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(b fun placeOrder(body: Order) : Order { val localVariableConfig = placeOrderRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -234,20 +228,18 @@ internal class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(b * @param body order placed for purchasing the pet * @return RequestConfig */ - fun placeOrderRequestConfig(body: Order) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun placeOrderRequestConfig(body: Order) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/store/order", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 979bb1b81f8..4983dc73feb 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -46,7 +46,7 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba fun createUser(body: User) : Unit { val localVariableConfig = createUserRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba * @param body Created user object * @return RequestConfig */ - fun createUserRequestConfig(body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUserRequestConfig(body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba fun createUsersWithArrayInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithArrayInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -125,20 +123,18 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba * @param body List of user object * @return RequestConfig */ - fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithArray", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba fun createUsersWithListInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithListInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -179,20 +175,18 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba * @param body List of user object * @return RequestConfig */ - fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithList", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -208,7 +202,7 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba fun deleteUser(username: kotlin.String) : Unit { val localVariableConfig = deleteUserRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -233,20 +227,18 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba * @param username The name that needs to be deleted * @return RequestConfig */ - fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -263,7 +255,7 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba fun getUserByName(username: kotlin.String) : User { val localVariableConfig = getUserByNameRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -288,20 +280,18 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba * @param username The name that needs to be fetched. Use user1 for testing. * @return RequestConfig */ - fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -319,7 +309,7 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String { val localVariableConfig = loginUserRequestConfig(username = username, password = password) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -345,24 +335,22 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba * @param password The password for login in clear text * @return RequestConfig */ - fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("username", listOf(username.toString())) put("password", listOf(password.toString())) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/login", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -377,7 +365,7 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba fun logoutUser() : Unit { val localVariableConfig = logoutUserRequestConfig() - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -401,20 +389,18 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba * * @return RequestConfig */ - fun logoutUserRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun logoutUserRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/logout", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -431,7 +417,7 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba fun updateUser(username: kotlin.String, body: User) : Unit { val localVariableConfig = updateUserRequestConfig(username = username, body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -457,20 +443,18 @@ internal class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(ba * @param body Updated user object * @return RequestConfig */ - fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 98b12a97150..d4fccce2715 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -12,16 +12,17 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection -import java.util.Date import java.time.LocalDate import java.time.LocalDateTime import java.time.LocalTime import java.time.OffsetDateTime import java.time.OffsetTime +import java.util.Date +import java.util.Locale internal open class ApiClient(val baseUrl: String) { internal companion object { @@ -61,9 +62,7 @@ internal open class ApiClient(val baseUrl: String) { protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { - content is File -> content.asRequestBody( - mediaType.toMediaTypeOrNull() - ) + content is File -> content.asRequestBody(mediaType.toMediaTypeOrNull()) mediaType == FormDataMediaType -> { MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -131,7 +130,7 @@ internal open class ApiClient(val baseUrl: String) { } } - protected fun updateAuthParams(requestConfig: RequestConfig) { + protected fun updateAuthParams(requestConfig: RequestConfig) { if (requestConfig.headers["api_key"].isNullOrEmpty()) { if (apiKey["api_key"] != null) { if (apiKeyPrefix["api_key"] != null) { @@ -148,7 +147,7 @@ internal open class ApiClient(val baseUrl: String) { } } - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { val httpUrl = baseUrl.toHttpUrlOrNull() ?: throw IllegalStateException("baseUrl is invalid.") // take authMethod from operation @@ -182,7 +181,7 @@ internal open class ApiClient(val baseUrl: String) { } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -197,57 +196,46 @@ internal open class ApiClient(val baseUrl: String) { }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code, - response.headers.toMultimap() + return when { + response.isRedirect -> Redirection( + response.code, + response.headers.toMultimap() ) - response.isInformational -> return Informational( - response.message, - response.code, - response.headers.toMultimap() + response.isInformational -> Informational( + response.message, + response.code, + response.headers.toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body, accept), - response.code, - response.headers.toMultimap() + response.isSuccessful -> Success( + responseBody(response.body, accept), + response.code, + response.headers.toMultimap() ) - response.isClientError -> return ClientError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + response.isClientError -> ClientError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) - else -> return ServerError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + else -> ServerError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 68f41c5497d..70cb0b04615 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -internal data class RequestConfig( +internal data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/samples/client/petstore/kotlin-nullable/build.gradle b/samples/client/petstore/kotlin-nullable/build.gradle index 60e5056e031..260bd6bda6e 100644 --- a/samples/client/petstore/kotlin-nullable/build.gradle +++ b/samples/client/petstore/kotlin-nullable/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 95f695cb9f4..5954c156bcd 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -47,7 +47,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun addPet(body: Pet) : Unit { val localVariableConfig = addPetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -72,20 +72,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun addPetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun addPetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -102,7 +100,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?) : Unit { val localVariableConfig = deletePetRequestConfig(petId = petId, apiKey = apiKey) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -128,21 +126,19 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param apiKey (optional) * @return RequestConfig */ - fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() apiKey?.apply { localVariableHeaders["api_key"] = this.toString() } - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -159,7 +155,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByStatus(status: kotlin.collections.List) : kotlin.collections.List? { val localVariableConfig = findPetsByStatusRequestConfig(status = status) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -184,23 +180,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Status values that need to be considered for filter * @return RequestConfig */ - fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("status", toMultiValue(status.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByStatus", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -218,7 +212,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List? { val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -244,23 +238,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @return RequestConfig */ @Deprecated(message = "This operation is deprecated.") - fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("tags", toMultiValue(tags.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByTags", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -277,7 +269,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getPetById(petId: kotlin.Long) : Pet? { val localVariableConfig = getPetByIdRequestConfig(petId = petId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -302,20 +294,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param petId ID of pet to return * @return RequestConfig */ - fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -331,7 +321,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePet(body: Pet) : Unit { val localVariableConfig = updatePetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -356,20 +346,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun updatePetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updatePetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -387,7 +375,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Unit { val localVariableConfig = updatePetWithFormRequestConfig(petId = petId, name = name, status = status) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -414,20 +402,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Updated status of the pet (optional) * @return RequestConfig */ - fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("name" to name, "status" to status) + fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig> { + val localVariableBody = mapOf("name" to name, "status" to status) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "application/x-www-form-urlencoded") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -446,7 +432,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : ApiResponse? { val localVariableConfig = uploadFileRequestConfig(petId = petId, additionalMetadata = additionalMetadata, file = file) - val localVarResponse = request( + val localVarResponse = request, ApiResponse>( localVariableConfig ) @@ -473,20 +459,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param file file to upload (optional) * @return RequestConfig */ - fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to additionalMetadata, "file" to file) + fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig> { + val localVariableBody = mapOf("additionalMetadata" to additionalMetadata, "file" to file) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "multipart/form-data") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index c442f866100..d8b1ad578f5 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -46,7 +46,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun deleteOrder(orderId: kotlin.String) : Unit { val localVariableConfig = deleteOrderRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of the order that needs to be deleted * @return RequestConfig */ - fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getInventory() : kotlin.collections.Map? { val localVariableConfig = getInventoryRequestConfig() - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -124,20 +122,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * * @return RequestConfig */ - fun getInventoryRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getInventoryRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/inventory", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getOrderById(orderId: kotlin.Long) : Order? { val localVariableConfig = getOrderByIdRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -179,20 +175,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of pet that needs to be fetched * @return RequestConfig */ - fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -209,7 +203,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun placeOrder(body: Order) : Order? { val localVariableConfig = placeOrderRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -234,20 +228,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param body order placed for purchasing the pet * @return RequestConfig */ - fun placeOrderRequestConfig(body: Order) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun placeOrderRequestConfig(body: Order) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/store/order", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 6e6c329144c..a8848130116 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -46,7 +46,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUser(body: User) : Unit { val localVariableConfig = createUserRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Created user object * @return RequestConfig */ - fun createUserRequestConfig(body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUserRequestConfig(body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithArrayInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithArrayInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -125,20 +123,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithArray", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithListInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithListInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -179,20 +175,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithList", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -208,7 +202,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deleteUser(username: kotlin.String) : Unit { val localVariableConfig = deleteUserRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -233,20 +227,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be deleted * @return RequestConfig */ - fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -263,7 +255,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getUserByName(username: kotlin.String) : User? { val localVariableConfig = getUserByNameRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -288,20 +280,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be fetched. Use user1 for testing. * @return RequestConfig */ - fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -319,7 +309,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String? { val localVariableConfig = loginUserRequestConfig(username = username, password = password) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -345,24 +335,22 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param password The password for login in clear text * @return RequestConfig */ - fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("username", listOf(username.toString())) put("password", listOf(password.toString())) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/login", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -377,7 +365,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun logoutUser() : Unit { val localVariableConfig = logoutUserRequestConfig() - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -401,20 +389,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * * @return RequestConfig */ - fun logoutUserRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun logoutUserRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/logout", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -431,7 +417,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updateUser(username: kotlin.String, body: User) : Unit { val localVariableConfig = updateUserRequestConfig(username = username, body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -457,20 +443,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Updated user object * @return RequestConfig */ - fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index c548762e28b..0961cf760c6 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -12,16 +12,17 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection -import java.util.Date import java.time.LocalDate import java.time.LocalDateTime import java.time.LocalTime import java.time.OffsetDateTime import java.time.OffsetTime +import java.util.Date +import java.util.Locale open class ApiClient(val baseUrl: String) { companion object { @@ -61,9 +62,7 @@ open class ApiClient(val baseUrl: String) { protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { - content is File -> content.asRequestBody( - mediaType.toMediaTypeOrNull() - ) + content is File -> content.asRequestBody(mediaType.toMediaTypeOrNull()) mediaType == FormDataMediaType -> { MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -131,7 +130,7 @@ open class ApiClient(val baseUrl: String) { } } - protected fun updateAuthParams(requestConfig: RequestConfig) { + protected fun updateAuthParams(requestConfig: RequestConfig) { if (requestConfig.headers["api_key"].isNullOrEmpty()) { if (apiKey["api_key"] != null) { if (apiKeyPrefix["api_key"] != null) { @@ -148,7 +147,7 @@ open class ApiClient(val baseUrl: String) { } } - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { val httpUrl = baseUrl.toHttpUrlOrNull() ?: throw IllegalStateException("baseUrl is invalid.") // take authMethod from operation @@ -182,7 +181,7 @@ open class ApiClient(val baseUrl: String) { } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -197,57 +196,46 @@ open class ApiClient(val baseUrl: String) { }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code, - response.headers.toMultimap() + return when { + response.isRedirect -> Redirection( + response.code, + response.headers.toMultimap() ) - response.isInformational -> return Informational( - response.message, - response.code, - response.headers.toMultimap() + response.isInformational -> Informational( + response.message, + response.code, + response.headers.toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body, accept), - response.code, - response.headers.toMultimap() + response.isSuccessful -> Success( + responseBody(response.body, accept), + response.code, + response.headers.toMultimap() ) - response.isClientError -> return ClientError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + response.isClientError -> ClientError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) - else -> return ServerError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + else -> ServerError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 0f2790f370e..7e948e1dd07 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -data class RequestConfig( +data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/samples/client/petstore/kotlin-okhttp3/build.gradle b/samples/client/petstore/kotlin-okhttp3/build.gradle index 1da4409df35..e872269b3fb 100644 --- a/samples/client/petstore/kotlin-okhttp3/build.gradle +++ b/samples/client/petstore/kotlin-okhttp3/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index c8b93b33bf6..28273cdf35d 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -47,7 +47,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun addPet(body: Pet) : Unit { val localVariableConfig = addPetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -72,20 +72,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun addPetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun addPetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -102,7 +100,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?) : Unit { val localVariableConfig = deletePetRequestConfig(petId = petId, apiKey = apiKey) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -128,21 +126,19 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param apiKey (optional) * @return RequestConfig */ - fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() apiKey?.apply { localVariableHeaders["api_key"] = this.toString() } - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -159,7 +155,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByStatus(status: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByStatusRequestConfig(status = status) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -184,23 +180,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Status values that need to be considered for filter * @return RequestConfig */ - fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("status", toMultiValue(status.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByStatus", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -218,7 +212,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -244,23 +238,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @return RequestConfig */ @Deprecated(message = "This operation is deprecated.") - fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("tags", toMultiValue(tags.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByTags", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -277,7 +269,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getPetById(petId: kotlin.Long) : Pet { val localVariableConfig = getPetByIdRequestConfig(petId = petId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -302,20 +294,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param petId ID of pet to return * @return RequestConfig */ - fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -331,7 +321,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePet(body: Pet) : Unit { val localVariableConfig = updatePetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -356,20 +346,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun updatePetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updatePetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -387,7 +375,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Unit { val localVariableConfig = updatePetWithFormRequestConfig(petId = petId, name = name, status = status) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -414,20 +402,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Updated status of the pet (optional) * @return RequestConfig */ - fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("name" to name, "status" to status) + fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig> { + val localVariableBody = mapOf("name" to name, "status" to status) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "application/x-www-form-urlencoded") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -446,7 +432,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : ApiResponse { val localVariableConfig = uploadFileRequestConfig(petId = petId, additionalMetadata = additionalMetadata, file = file) - val localVarResponse = request( + val localVarResponse = request, ApiResponse>( localVariableConfig ) @@ -473,20 +459,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param file file to upload (optional) * @return RequestConfig */ - fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to additionalMetadata, "file" to file) + fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig> { + val localVariableBody = mapOf("additionalMetadata" to additionalMetadata, "file" to file) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "multipart/form-data") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 215ed63420c..56a23202f82 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -46,7 +46,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun deleteOrder(orderId: kotlin.String) : Unit { val localVariableConfig = deleteOrderRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of the order that needs to be deleted * @return RequestConfig */ - fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getInventory() : kotlin.collections.Map { val localVariableConfig = getInventoryRequestConfig() - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -124,20 +122,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * * @return RequestConfig */ - fun getInventoryRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getInventoryRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/inventory", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getOrderById(orderId: kotlin.Long) : Order { val localVariableConfig = getOrderByIdRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -179,20 +175,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of pet that needs to be fetched * @return RequestConfig */ - fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -209,7 +203,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun placeOrder(body: Order) : Order { val localVariableConfig = placeOrderRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -234,20 +228,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param body order placed for purchasing the pet * @return RequestConfig */ - fun placeOrderRequestConfig(body: Order) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun placeOrderRequestConfig(body: Order) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/store/order", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 53748b93463..9f93e853a12 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -46,7 +46,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUser(body: User) : Unit { val localVariableConfig = createUserRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Created user object * @return RequestConfig */ - fun createUserRequestConfig(body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUserRequestConfig(body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithArrayInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithArrayInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -125,20 +123,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithArray", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithListInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithListInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -179,20 +175,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithList", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -208,7 +202,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deleteUser(username: kotlin.String) : Unit { val localVariableConfig = deleteUserRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -233,20 +227,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be deleted * @return RequestConfig */ - fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -263,7 +255,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getUserByName(username: kotlin.String) : User { val localVariableConfig = getUserByNameRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -288,20 +280,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be fetched. Use user1 for testing. * @return RequestConfig */ - fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -319,7 +309,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String { val localVariableConfig = loginUserRequestConfig(username = username, password = password) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -345,24 +335,22 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param password The password for login in clear text * @return RequestConfig */ - fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("username", listOf(username.toString())) put("password", listOf(password.toString())) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/login", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -377,7 +365,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun logoutUser() : Unit { val localVariableConfig = logoutUserRequestConfig() - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -401,20 +389,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * * @return RequestConfig */ - fun logoutUserRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun logoutUserRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/logout", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -431,7 +417,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updateUser(username: kotlin.String, body: User) : Unit { val localVariableConfig = updateUserRequestConfig(username = username, body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -457,20 +443,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Updated user object * @return RequestConfig */ - fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 72929a5dc0f..49cf4c675b7 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -10,16 +10,17 @@ import okhttp3.ResponseBody import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection -import java.util.Date import java.time.LocalDate import java.time.LocalDateTime import java.time.LocalTime import java.time.OffsetDateTime import java.time.OffsetTime +import java.util.Date +import java.util.Locale open class ApiClient(val baseUrl: String) { companion object { @@ -59,9 +60,7 @@ open class ApiClient(val baseUrl: String) { protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { - content is File -> RequestBody.create( - MediaType.parse(mediaType), content - ) + content is File -> RequestBody.create(MediaType.parse(mediaType), content) mediaType == FormDataMediaType -> { MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -129,7 +128,7 @@ open class ApiClient(val baseUrl: String) { } } - protected fun updateAuthParams(requestConfig: RequestConfig) { + protected fun updateAuthParams(requestConfig: RequestConfig) { if (requestConfig.headers["api_key"].isNullOrEmpty()) { if (apiKey["api_key"] != null) { if (apiKeyPrefix["api_key"] != null) { @@ -146,7 +145,7 @@ open class ApiClient(val baseUrl: String) { } } - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { val httpUrl = HttpUrl.parse(baseUrl) ?: throw IllegalStateException("baseUrl is invalid.") // take authMethod from operation @@ -180,7 +179,7 @@ open class ApiClient(val baseUrl: String) { } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -195,57 +194,46 @@ open class ApiClient(val baseUrl: String) { }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code(), - response.headers().toMultimap() + return when { + response.isRedirect -> Redirection( + response.code(), + response.headers().toMultimap() ) - response.isInformational -> return Informational( - response.message(), - response.code(), - response.headers().toMultimap() + response.isInformational -> Informational( + response.message(), + response.code(), + response.headers().toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body(), accept), - response.code(), - response.headers().toMultimap() + response.isSuccessful -> Success( + responseBody(response.body(), accept), + response.code(), + response.headers().toMultimap() ) - response.isClientError -> return ClientError( - response.message(), - response.body()?.string(), - response.code(), - response.headers().toMultimap() + response.isClientError -> ClientError( + response.message(), + response.body()?.string(), + response.code(), + response.headers().toMultimap() ) - else -> return ServerError( - response.message(), - response.body()?.string(), - response.code(), - response.headers().toMultimap() + else -> ServerError( + response.message(), + response.body()?.string(), + response.code(), + response.headers().toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 0f2790f370e..7e948e1dd07 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -data class RequestConfig( +data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle index dce987e0201..f7a6d02171e 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' ext.retrofitVersion = '2.7.2' repositories { @@ -32,7 +32,7 @@ test { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlinx:kotlinx-serialization-json:1.1.0" + compile "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1" compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" compile "com.squareup.okhttp3:logging-interceptor:4.9.0" compile "com.squareup.retrofit2:retrofit:$retrofitVersion" diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle b/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle index b55dfb35245..3ddd8d97e8f 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle +++ b/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' ext.retrofitVersion = '2.7.2' ext.rxJava3Version = '3.0.10' diff --git a/samples/client/petstore/kotlin-retrofit2/build.gradle b/samples/client/petstore/kotlin-retrofit2/build.gradle index 109eb2ca069..6674970e550 100644 --- a/samples/client/petstore/kotlin-retrofit2/build.gradle +++ b/samples/client/petstore/kotlin-retrofit2/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' ext.retrofitVersion = '2.7.2' repositories { diff --git a/samples/client/petstore/kotlin-string/build.gradle b/samples/client/petstore/kotlin-string/build.gradle index 60e5056e031..260bd6bda6e 100644 --- a/samples/client/petstore/kotlin-string/build.gradle +++ b/samples/client/petstore/kotlin-string/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 4fbeccdbc00..de97218c9e8 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -47,7 +47,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun addPet(body: Pet) : Unit { val localVariableConfig = addPetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -72,20 +72,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun addPetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun addPetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -102,7 +100,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deletePet(apiKey: kotlin.String?, petId: kotlin.Long) : Unit { val localVariableConfig = deletePetRequestConfig(apiKey = apiKey, petId = petId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -128,21 +126,19 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param petId Pet id to delete * @return RequestConfig */ - fun deletePetRequestConfig(apiKey: kotlin.String?, petId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deletePetRequestConfig(apiKey: kotlin.String?, petId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() apiKey?.apply { localVariableHeaders["api_key"] = this.toString() } - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -159,7 +155,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByStatus(status: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByStatusRequestConfig(status = status) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -184,23 +180,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Status values that need to be considered for filter * @return RequestConfig */ - fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("status", toMultiValue(status.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByStatus", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -218,7 +212,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -244,23 +238,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @return RequestConfig */ @Deprecated(message = "This operation is deprecated.") - fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("tags", toMultiValue(tags.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByTags", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -277,7 +269,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getPetById(petId: kotlin.Long) : Pet { val localVariableConfig = getPetByIdRequestConfig(petId = petId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -302,20 +294,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param petId ID of pet to return * @return RequestConfig */ - fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -331,7 +321,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePet(body: Pet) : Unit { val localVariableConfig = updatePetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -356,20 +346,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun updatePetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updatePetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -387,7 +375,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Unit { val localVariableConfig = updatePetWithFormRequestConfig(petId = petId, name = name, status = status) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -414,20 +402,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Updated status of the pet (optional) * @return RequestConfig */ - fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("name" to name, "status" to status) + fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig> { + val localVariableBody = mapOf("name" to name, "status" to status) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "application/x-www-form-urlencoded") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -446,7 +432,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : ApiResponse { val localVariableConfig = uploadFileRequestConfig(petId = petId, additionalMetadata = additionalMetadata, file = file) - val localVarResponse = request( + val localVarResponse = request, ApiResponse>( localVariableConfig ) @@ -473,20 +459,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param file file to upload (optional) * @return RequestConfig */ - fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to additionalMetadata, "file" to file) + fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig> { + val localVariableBody = mapOf("additionalMetadata" to additionalMetadata, "file" to file) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "multipart/form-data") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 215ed63420c..56a23202f82 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -46,7 +46,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun deleteOrder(orderId: kotlin.String) : Unit { val localVariableConfig = deleteOrderRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of the order that needs to be deleted * @return RequestConfig */ - fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getInventory() : kotlin.collections.Map { val localVariableConfig = getInventoryRequestConfig() - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -124,20 +122,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * * @return RequestConfig */ - fun getInventoryRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getInventoryRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/inventory", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getOrderById(orderId: kotlin.Long) : Order { val localVariableConfig = getOrderByIdRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -179,20 +175,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of pet that needs to be fetched * @return RequestConfig */ - fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -209,7 +203,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun placeOrder(body: Order) : Order { val localVariableConfig = placeOrderRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -234,20 +228,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param body order placed for purchasing the pet * @return RequestConfig */ - fun placeOrderRequestConfig(body: Order) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun placeOrderRequestConfig(body: Order) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/store/order", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 53748b93463..9f93e853a12 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -46,7 +46,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUser(body: User) : Unit { val localVariableConfig = createUserRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Created user object * @return RequestConfig */ - fun createUserRequestConfig(body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUserRequestConfig(body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithArrayInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithArrayInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -125,20 +123,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithArray", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithListInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithListInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -179,20 +175,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithList", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -208,7 +202,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deleteUser(username: kotlin.String) : Unit { val localVariableConfig = deleteUserRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -233,20 +227,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be deleted * @return RequestConfig */ - fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -263,7 +255,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getUserByName(username: kotlin.String) : User { val localVariableConfig = getUserByNameRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -288,20 +280,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be fetched. Use user1 for testing. * @return RequestConfig */ - fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -319,7 +309,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String { val localVariableConfig = loginUserRequestConfig(username = username, password = password) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -345,24 +335,22 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param password The password for login in clear text * @return RequestConfig */ - fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("username", listOf(username.toString())) put("password", listOf(password.toString())) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/login", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -377,7 +365,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun logoutUser() : Unit { val localVariableConfig = logoutUserRequestConfig() - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -401,20 +389,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * * @return RequestConfig */ - fun logoutUserRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun logoutUserRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/logout", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -431,7 +417,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updateUser(username: kotlin.String, body: User) : Unit { val localVariableConfig = updateUserRequestConfig(username = username, body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -457,20 +443,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Updated user object * @return RequestConfig */ - fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index c548762e28b..0961cf760c6 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -12,16 +12,17 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection -import java.util.Date import java.time.LocalDate import java.time.LocalDateTime import java.time.LocalTime import java.time.OffsetDateTime import java.time.OffsetTime +import java.util.Date +import java.util.Locale open class ApiClient(val baseUrl: String) { companion object { @@ -61,9 +62,7 @@ open class ApiClient(val baseUrl: String) { protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { - content is File -> content.asRequestBody( - mediaType.toMediaTypeOrNull() - ) + content is File -> content.asRequestBody(mediaType.toMediaTypeOrNull()) mediaType == FormDataMediaType -> { MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -131,7 +130,7 @@ open class ApiClient(val baseUrl: String) { } } - protected fun updateAuthParams(requestConfig: RequestConfig) { + protected fun updateAuthParams(requestConfig: RequestConfig) { if (requestConfig.headers["api_key"].isNullOrEmpty()) { if (apiKey["api_key"] != null) { if (apiKeyPrefix["api_key"] != null) { @@ -148,7 +147,7 @@ open class ApiClient(val baseUrl: String) { } } - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { val httpUrl = baseUrl.toHttpUrlOrNull() ?: throw IllegalStateException("baseUrl is invalid.") // take authMethod from operation @@ -182,7 +181,7 @@ open class ApiClient(val baseUrl: String) { } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -197,57 +196,46 @@ open class ApiClient(val baseUrl: String) { }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code, - response.headers.toMultimap() + return when { + response.isRedirect -> Redirection( + response.code, + response.headers.toMultimap() ) - response.isInformational -> return Informational( - response.message, - response.code, - response.headers.toMultimap() + response.isInformational -> Informational( + response.message, + response.code, + response.headers.toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body, accept), - response.code, - response.headers.toMultimap() + response.isSuccessful -> Success( + responseBody(response.body, accept), + response.code, + response.headers.toMultimap() ) - response.isClientError -> return ClientError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + response.isClientError -> ClientError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) - else -> return ServerError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + else -> ServerError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 0f2790f370e..7e948e1dd07 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -data class RequestConfig( +data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/samples/client/petstore/kotlin-threetenbp/build.gradle b/samples/client/petstore/kotlin-threetenbp/build.gradle index 87605daa9d2..1d988072386 100644 --- a/samples/client/petstore/kotlin-threetenbp/build.gradle +++ b/samples/client/petstore/kotlin-threetenbp/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index c8b93b33bf6..28273cdf35d 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -47,7 +47,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun addPet(body: Pet) : Unit { val localVariableConfig = addPetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -72,20 +72,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun addPetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun addPetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -102,7 +100,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?) : Unit { val localVariableConfig = deletePetRequestConfig(petId = petId, apiKey = apiKey) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -128,21 +126,19 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param apiKey (optional) * @return RequestConfig */ - fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() apiKey?.apply { localVariableHeaders["api_key"] = this.toString() } - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -159,7 +155,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByStatus(status: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByStatusRequestConfig(status = status) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -184,23 +180,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Status values that need to be considered for filter * @return RequestConfig */ - fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("status", toMultiValue(status.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByStatus", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -218,7 +212,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -244,23 +238,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @return RequestConfig */ @Deprecated(message = "This operation is deprecated.") - fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("tags", toMultiValue(tags.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByTags", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -277,7 +269,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getPetById(petId: kotlin.Long) : Pet { val localVariableConfig = getPetByIdRequestConfig(petId = petId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -302,20 +294,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param petId ID of pet to return * @return RequestConfig */ - fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -331,7 +321,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePet(body: Pet) : Unit { val localVariableConfig = updatePetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -356,20 +346,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun updatePetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updatePetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -387,7 +375,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Unit { val localVariableConfig = updatePetWithFormRequestConfig(petId = petId, name = name, status = status) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -414,20 +402,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Updated status of the pet (optional) * @return RequestConfig */ - fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("name" to name, "status" to status) + fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig> { + val localVariableBody = mapOf("name" to name, "status" to status) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "application/x-www-form-urlencoded") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -446,7 +432,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : ApiResponse { val localVariableConfig = uploadFileRequestConfig(petId = petId, additionalMetadata = additionalMetadata, file = file) - val localVarResponse = request( + val localVarResponse = request, ApiResponse>( localVariableConfig ) @@ -473,20 +459,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param file file to upload (optional) * @return RequestConfig */ - fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to additionalMetadata, "file" to file) + fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig> { + val localVariableBody = mapOf("additionalMetadata" to additionalMetadata, "file" to file) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "multipart/form-data") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 215ed63420c..56a23202f82 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -46,7 +46,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun deleteOrder(orderId: kotlin.String) : Unit { val localVariableConfig = deleteOrderRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of the order that needs to be deleted * @return RequestConfig */ - fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getInventory() : kotlin.collections.Map { val localVariableConfig = getInventoryRequestConfig() - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -124,20 +122,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * * @return RequestConfig */ - fun getInventoryRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getInventoryRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/inventory", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getOrderById(orderId: kotlin.Long) : Order { val localVariableConfig = getOrderByIdRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -179,20 +175,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of pet that needs to be fetched * @return RequestConfig */ - fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -209,7 +203,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun placeOrder(body: Order) : Order { val localVariableConfig = placeOrderRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -234,20 +228,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param body order placed for purchasing the pet * @return RequestConfig */ - fun placeOrderRequestConfig(body: Order) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun placeOrderRequestConfig(body: Order) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/store/order", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 53748b93463..9f93e853a12 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -46,7 +46,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUser(body: User) : Unit { val localVariableConfig = createUserRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Created user object * @return RequestConfig */ - fun createUserRequestConfig(body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUserRequestConfig(body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithArrayInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithArrayInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -125,20 +123,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithArray", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithListInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithListInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -179,20 +175,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithList", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -208,7 +202,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deleteUser(username: kotlin.String) : Unit { val localVariableConfig = deleteUserRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -233,20 +227,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be deleted * @return RequestConfig */ - fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -263,7 +255,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getUserByName(username: kotlin.String) : User { val localVariableConfig = getUserByNameRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -288,20 +280,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be fetched. Use user1 for testing. * @return RequestConfig */ - fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -319,7 +309,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String { val localVariableConfig = loginUserRequestConfig(username = username, password = password) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -345,24 +335,22 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param password The password for login in clear text * @return RequestConfig */ - fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("username", listOf(username.toString())) put("password", listOf(password.toString())) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/login", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -377,7 +365,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun logoutUser() : Unit { val localVariableConfig = logoutUserRequestConfig() - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -401,20 +389,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * * @return RequestConfig */ - fun logoutUserRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun logoutUserRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/logout", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -431,7 +417,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updateUser(username: kotlin.String, body: User) : Unit { val localVariableConfig = updateUserRequestConfig(username = username, body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -457,20 +443,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Updated user object * @return RequestConfig */ - fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 12ea3e7c065..27297844d60 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -12,11 +12,12 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection import java.util.Date +import java.util.Locale import org.threeten.bp.LocalDate import org.threeten.bp.LocalDateTime import org.threeten.bp.LocalTime @@ -61,9 +62,7 @@ open class ApiClient(val baseUrl: String) { protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { - content is File -> content.asRequestBody( - mediaType.toMediaTypeOrNull() - ) + content is File -> content.asRequestBody(mediaType.toMediaTypeOrNull()) mediaType == FormDataMediaType -> { MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -131,7 +130,7 @@ open class ApiClient(val baseUrl: String) { } } - protected fun updateAuthParams(requestConfig: RequestConfig) { + protected fun updateAuthParams(requestConfig: RequestConfig) { if (requestConfig.headers["api_key"].isNullOrEmpty()) { if (apiKey["api_key"] != null) { if (apiKeyPrefix["api_key"] != null) { @@ -148,7 +147,7 @@ open class ApiClient(val baseUrl: String) { } } - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { val httpUrl = baseUrl.toHttpUrlOrNull() ?: throw IllegalStateException("baseUrl is invalid.") // take authMethod from operation @@ -182,7 +181,7 @@ open class ApiClient(val baseUrl: String) { } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -197,57 +196,46 @@ open class ApiClient(val baseUrl: String) { }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code, - response.headers.toMultimap() + return when { + response.isRedirect -> Redirection( + response.code, + response.headers.toMultimap() ) - response.isInformational -> return Informational( - response.message, - response.code, - response.headers.toMultimap() + response.isInformational -> Informational( + response.message, + response.code, + response.headers.toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body, accept), - response.code, - response.headers.toMultimap() + response.isSuccessful -> Success( + responseBody(response.body, accept), + response.code, + response.headers.toMultimap() ) - response.isClientError -> return ClientError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + response.isClientError -> ClientError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) - else -> return ServerError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + else -> ServerError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 0f2790f370e..7e948e1dd07 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -data class RequestConfig( +data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/samples/client/petstore/kotlin-uppercase-enum/build.gradle b/samples/client/petstore/kotlin-uppercase-enum/build.gradle index 60e5056e031..260bd6bda6e 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/build.gradle +++ b/samples/client/petstore/kotlin-uppercase-enum/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt index e504c876ce6..59cebc5d4b9 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt +++ b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/apis/EnumApi.kt @@ -46,7 +46,7 @@ class EnumApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getEnum() : PetEnum { val localVariableConfig = getEnumRequestConfig() - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -70,20 +70,18 @@ class EnumApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * * @return RequestConfig */ - fun getEnumRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getEnumRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/enum", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 9da041200e1..0dad05161fa 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -12,16 +12,17 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection -import java.util.Date import java.time.LocalDate import java.time.LocalDateTime import java.time.LocalTime import java.time.OffsetDateTime import java.time.OffsetTime +import java.util.Date +import java.util.Locale open class ApiClient(val baseUrl: String) { companion object { @@ -61,9 +62,7 @@ open class ApiClient(val baseUrl: String) { protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { - content is File -> content.asRequestBody( - mediaType.toMediaTypeOrNull() - ) + content is File -> content.asRequestBody(mediaType.toMediaTypeOrNull()) mediaType == FormDataMediaType -> { MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -132,7 +131,7 @@ open class ApiClient(val baseUrl: String) { } - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { val httpUrl = baseUrl.toHttpUrlOrNull() ?: throw IllegalStateException("baseUrl is invalid.") val url = httpUrl.newBuilder() @@ -163,7 +162,7 @@ open class ApiClient(val baseUrl: String) { } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -178,57 +177,46 @@ open class ApiClient(val baseUrl: String) { }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code, - response.headers.toMultimap() + return when { + response.isRedirect -> Redirection( + response.code, + response.headers.toMultimap() ) - response.isInformational -> return Informational( - response.message, - response.code, - response.headers.toMultimap() + response.isInformational -> Informational( + response.message, + response.code, + response.headers.toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body, accept), - response.code, - response.headers.toMultimap() + response.isSuccessful -> Success( + responseBody(response.body, accept), + response.code, + response.headers.toMultimap() ) - response.isClientError -> return ClientError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + response.isClientError -> ClientError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) - else -> return ServerError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + else -> ServerError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 0f2790f370e..7e948e1dd07 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -data class RequestConfig( +data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file diff --git a/samples/client/petstore/kotlin/build.gradle b/samples/client/petstore/kotlin/build.gradle index 60e5056e031..260bd6bda6e 100644 --- a/samples/client/petstore/kotlin/build.gradle +++ b/samples/client/petstore/kotlin/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.0' repositories { maven { url "https://repo1.maven.org/maven2" } diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index c8b93b33bf6..28273cdf35d 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -47,7 +47,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun addPet(body: Pet) : Unit { val localVariableConfig = addPetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -72,20 +72,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun addPetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun addPetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -102,7 +100,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?) : Unit { val localVariableConfig = deletePetRequestConfig(petId = petId, apiKey = apiKey) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -128,21 +126,19 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param apiKey (optional) * @return RequestConfig */ - fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deletePetRequestConfig(petId: kotlin.Long, apiKey: kotlin.String?) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() apiKey?.apply { localVariableHeaders["api_key"] = this.toString() } - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -159,7 +155,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByStatus(status: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByStatusRequestConfig(status = status) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -184,23 +180,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Status values that need to be considered for filter * @return RequestConfig */ - fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByStatusRequestConfig(status: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("status", toMultiValue(status.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByStatus", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -218,7 +212,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -244,23 +238,21 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @return RequestConfig */ @Deprecated(message = "This operation is deprecated.") - fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun findPetsByTagsRequestConfig(tags: kotlin.collections.List) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("tags", toMultiValue(tags.toList(), "csv")) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/findByTags", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -277,7 +269,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getPetById(petId: kotlin.Long) : Pet { val localVariableConfig = getPetByIdRequestConfig(petId = petId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -302,20 +294,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param petId ID of pet to return * @return RequestConfig */ - fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getPetByIdRequestConfig(petId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -331,7 +321,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePet(body: Pet) : Unit { val localVariableConfig = updatePetRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -356,20 +346,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Pet object that needs to be added to the store * @return RequestConfig */ - fun updatePetRequestConfig(body: Pet) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updatePetRequestConfig(body: Pet) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/pet", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -387,7 +375,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Unit { val localVariableConfig = updatePetWithFormRequestConfig(petId = petId, name = name, status = status) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -414,20 +402,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param status Updated status of the pet (optional) * @return RequestConfig */ - fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("name" to name, "status" to status) + fun updatePetWithFormRequestConfig(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : RequestConfig> { + val localVariableBody = mapOf("name" to name, "status" to status) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "application/x-www-form-urlencoded") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -446,7 +432,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : ApiResponse { val localVariableConfig = uploadFileRequestConfig(petId = petId, additionalMetadata = additionalMetadata, file = file) - val localVarResponse = request( + val localVarResponse = request, ApiResponse>( localVariableConfig ) @@ -473,20 +459,18 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param file file to upload (optional) * @return RequestConfig */ - fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig { - val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to additionalMetadata, "file" to file) + fun uploadFileRequestConfig(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : RequestConfig> { + val localVariableBody = mapOf("additionalMetadata" to additionalMetadata, "file" to file) val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "multipart/form-data") - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt index 215ed63420c..56a23202f82 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -46,7 +46,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun deleteOrder(orderId: kotlin.String) : Unit { val localVariableConfig = deleteOrderRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of the order that needs to be deleted * @return RequestConfig */ - fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteOrderRequestConfig(orderId: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getInventory() : kotlin.collections.Map { val localVariableConfig = getInventoryRequestConfig() - val localVarResponse = request>( + val localVarResponse = request>( localVariableConfig ) @@ -124,20 +122,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * * @return RequestConfig */ - fun getInventoryRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getInventoryRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/inventory", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun getOrderById(orderId: kotlin.Long) : Order { val localVariableConfig = getOrderByIdRequestConfig(orderId = orderId) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -179,20 +175,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param orderId ID of pet that needs to be fetched * @return RequestConfig */ - fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getOrderByIdRequestConfig(orderId: kotlin.Long) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -209,7 +203,7 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) fun placeOrder(body: Order) : Order { val localVariableConfig = placeOrderRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -234,20 +228,18 @@ class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) * @param body order placed for purchasing the pet * @return RequestConfig */ - fun placeOrderRequestConfig(body: Order) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun placeOrderRequestConfig(body: Order) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/store/order", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/UserApi.kt index 53748b93463..9f93e853a12 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/UserApi.kt @@ -46,7 +46,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUser(body: User) : Unit { val localVariableConfig = createUserRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -71,20 +71,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Created user object * @return RequestConfig */ - fun createUserRequestConfig(body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUserRequestConfig(body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -100,7 +98,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithArrayInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithArrayInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -125,20 +123,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithArrayInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithArray", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -154,7 +150,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun createUsersWithListInput(body: kotlin.collections.List) : Unit { val localVariableConfig = createUsersWithListInputRequestConfig(body = body) - val localVarResponse = request( + val localVarResponse = request, Unit>( localVariableConfig ) @@ -179,20 +175,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body List of user object * @return RequestConfig */ - fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun createUsersWithListInputRequestConfig(body: kotlin.collections.List) : RequestConfig> { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.POST, path = "/user/createWithList", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -208,7 +202,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun deleteUser(username: kotlin.String) : Unit { val localVariableConfig = deleteUserRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -233,20 +227,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be deleted * @return RequestConfig */ - fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun deleteUserRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.DELETE, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -263,7 +255,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun getUserByName(username: kotlin.String) : User { val localVariableConfig = getUserByNameRequestConfig(username = username) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -288,20 +280,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param username The name that needs to be fetched. Use user1 for testing. * @return RequestConfig */ - fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun getUserByNameRequestConfig(username: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -319,7 +309,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String { val localVariableConfig = loginUserRequestConfig(username = username, password = password) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -345,24 +335,22 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param password The password for login in clear text * @return RequestConfig */ - fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun loginUserRequestConfig(username: kotlin.String, password: kotlin.String) : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf>() .apply { put("username", listOf(username.toString())) put("password", listOf(password.toString())) } val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/login", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -377,7 +365,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun logoutUser() : Unit { val localVariableConfig = logoutUserRequestConfig() - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -401,20 +389,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * * @return RequestConfig */ - fun logoutUserRequestConfig() : RequestConfig { - val localVariableBody: kotlin.Any? = null + fun logoutUserRequestConfig() : RequestConfig { + val localVariableBody = null val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.GET, path = "/user/logout", query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } /** @@ -431,7 +417,7 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { fun updateUser(username: kotlin.String, body: User) : Unit { val localVariableConfig = updateUserRequestConfig(username = username, body = body) - val localVarResponse = request( + val localVarResponse = request( localVariableConfig ) @@ -457,20 +443,18 @@ class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { * @param body Updated user object * @return RequestConfig */ - fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { - val localVariableBody: kotlin.Any? = body + fun updateUserRequestConfig(username: kotlin.String, body: User) : RequestConfig { + val localVariableBody = body val localVariableQuery: MultiValueMap = mutableMapOf() val localVariableHeaders: MutableMap = mutableMapOf() - - val localVariableConfig = RequestConfig( + + return RequestConfig( method = RequestMethod.PUT, path = "/user/{username}".replace("{"+"username"+"}", "$username"), query = localVariableQuery, headers = localVariableHeaders, body = localVariableBody ) - - return localVariableConfig } } diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index c548762e28b..0961cf760c6 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -12,16 +12,17 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.Headers import okhttp3.MultipartBody -import java.io.File import java.io.BufferedWriter +import java.io.File import java.io.FileWriter import java.net.URLConnection -import java.util.Date import java.time.LocalDate import java.time.LocalDateTime import java.time.LocalTime import java.time.OffsetDateTime import java.time.OffsetTime +import java.util.Date +import java.util.Locale open class ApiClient(val baseUrl: String) { companion object { @@ -61,9 +62,7 @@ open class ApiClient(val baseUrl: String) { protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody = when { - content is File -> content.asRequestBody( - mediaType.toMediaTypeOrNull() - ) + content is File -> content.asRequestBody(mediaType.toMediaTypeOrNull()) mediaType == FormDataMediaType -> { MultipartBody.Builder() .setType(MultipartBody.FORM) @@ -131,7 +130,7 @@ open class ApiClient(val baseUrl: String) { } } - protected fun updateAuthParams(requestConfig: RequestConfig) { + protected fun updateAuthParams(requestConfig: RequestConfig) { if (requestConfig.headers["api_key"].isNullOrEmpty()) { if (apiKey["api_key"] != null) { if (apiKeyPrefix["api_key"] != null) { @@ -148,7 +147,7 @@ open class ApiClient(val baseUrl: String) { } } - protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { + protected inline fun request(requestConfig: RequestConfig): ApiInfrastructureResponse { val httpUrl = baseUrl.toHttpUrlOrNull() ?: throw IllegalStateException("baseUrl is invalid.") // take authMethod from operation @@ -182,7 +181,7 @@ open class ApiClient(val baseUrl: String) { } // TODO: support multiple contentType options here. - val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase() + val contentType = (headers[ContentType] as String).substringBefore(";").lowercase(Locale.getDefault()) val request = when (requestConfig.method) { RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(requestConfig.body, contentType)) @@ -197,57 +196,46 @@ open class ApiClient(val baseUrl: String) { }.build() val response = client.newCall(request).execute() - val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase() + val accept = response.header(ContentType)?.substringBefore(";")?.lowercase(Locale.getDefault()) // TODO: handle specific mapping types. e.g. Map> - when { - response.isRedirect -> return Redirection( - response.code, - response.headers.toMultimap() + return when { + response.isRedirect -> Redirection( + response.code, + response.headers.toMultimap() ) - response.isInformational -> return Informational( - response.message, - response.code, - response.headers.toMultimap() + response.isInformational -> Informational( + response.message, + response.code, + response.headers.toMultimap() ) - response.isSuccessful -> return Success( - responseBody(response.body, accept), - response.code, - response.headers.toMultimap() + response.isSuccessful -> Success( + responseBody(response.body, accept), + response.code, + response.headers.toMultimap() ) - response.isClientError -> return ClientError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + response.isClientError -> ClientError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) - else -> return ServerError( - response.message, - response.body?.string(), - response.code, - response.headers.toMultimap() + else -> ServerError( + response.message, + response.body?.string(), + response.code, + response.headers.toMultimap() ) } } - protected fun parameterToString(value: Any?): String { - when (value) { - null -> { - return "" - } - is Array<*> -> { - return toMultiValue(value, "csv").toString() - } - is Iterable<*> -> { - return toMultiValue(value, "csv").toString() - } - is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> { - return parseDateToQueryString(value) - } - else -> { - return value.toString() - } - } + protected fun parameterToString(value: Any?): String = when (value) { + null -> "" + is Array<*> -> toMultiValue(value, "csv").toString() + is Iterable<*> -> toMultiValue(value, "csv").toString() + is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> + parseDateToQueryString(value) + else -> value.toString() } protected inline fun parseDateToQueryString(value : T): String { diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt index 0f2790f370e..7e948e1dd07 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt @@ -8,10 +8,10 @@ package org.openapitools.client.infrastructure * NOTE: Headers is a Map because rfc2616 defines * multi-valued headers as csv-only. */ -data class RequestConfig( +data class RequestConfig( val method: RequestMethod, val path: String, val headers: MutableMap = mutableMapOf(), val query: MutableMap> = mutableMapOf(), - val body: kotlin.Any? = null + val body: T? = null ) \ No newline at end of file From 6cf48432495f866276023bc983c3484cb498a61c Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Tue, 1 Jun 2021 03:09:22 +0100 Subject: [PATCH 071/192] [swift5][client] update dependencies (#9633) * [swift5][client] update dependencies * [swift5][client] update sample projects * [swift5][client] update dependencies in Carthage --- .../main/resources/swift5/Cartfile.mustache | 6 +- .../main/resources/swift5/Extensions.mustache | 43 ------ .../resources/swift5/Package.swift.mustache | 6 +- .../main/resources/swift5/Podspec.mustache | 6 +- .../petstore/swift5/alamofireLibrary/Cartfile | 2 +- .../swift5/alamofireLibrary/Package.resolved | 9 ++ .../swift5/alamofireLibrary/Package.swift | 2 +- .../alamofireLibrary/PetstoreClient.podspec | 2 +- .../Classes/OpenAPIs/Extensions.swift | 43 ------ .../SwaggerClientTests/Podfile | 13 -- .../SwaggerClientTests/Podfile.lock | 23 --- .../SwaggerClient.xcodeproj/project.pbxproj | 137 ++++-------------- .../contents.xcworkspacedata | 4 +- .../xcshareddata/swiftpm/Package.resolved | 25 ++++ .../petstore/swift5/combineLibrary/Cartfile | 2 +- .../swift5/combineLibrary/Package.resolved | 16 ++ .../swift5/combineLibrary/Package.swift | 2 +- .../combineLibrary/PetstoreClient.podspec | 2 +- .../Classes/OpenAPIs/Extensions.swift | 43 ------ .../combineLibrary/SwaggerClientTests/Podfile | 13 -- .../SwaggerClientTests/Podfile.lock | 16 -- .../SwaggerClient.xcodeproj/project.pbxproj | 131 +++++------------ .../contents.xcworkspacedata | 4 +- .../xcshareddata/swiftpm/Package.resolved | 16 ++ .../client/petstore/swift5/default/Cartfile | 2 +- .../petstore/swift5/default/Package.resolved | 4 +- .../petstore/swift5/default/Package.swift | 2 +- .../swift5/default/PetstoreClient.podspec | 2 +- .../Classes/OpenAPIs/Extensions.swift | 43 ------ .../swift5/default/SwaggerClientTests/Podfile | 13 -- .../default/SwaggerClientTests/Podfile.lock | 16 -- .../SwaggerClient.xcodeproj/project.pbxproj | 134 ++++------------- .../contents.xcworkspacedata | 4 +- .../xcshareddata/swiftpm/Package.resolved | 16 ++ .../petstore/swift5/deprecated/Cartfile | 2 +- .../swift5/deprecated/Package.resolved | 16 ++ .../petstore/swift5/deprecated/Package.swift | 2 +- .../swift5/deprecated/PetstoreClient.podspec | 2 +- .../Classes/OpenAPIs/Extensions.swift | 43 ------ .../petstore/swift5/nonPublicApi/Cartfile | 2 +- .../swift5/nonPublicApi/Package.resolved | 16 ++ .../swift5/nonPublicApi/Package.swift | 2 +- .../nonPublicApi/PetstoreClient.podspec | 2 +- .../Classes/OpenAPIs/Extensions.swift | 43 ------ .../petstore/swift5/objcCompatible/Cartfile | 2 +- .../swift5/objcCompatible/Package.resolved | 16 ++ .../swift5/objcCompatible/Package.swift | 2 +- .../objcCompatible/PetstoreClient.podspec | 2 +- .../Classes/OpenAPIs/Extensions.swift | 43 ------ samples/client/petstore/swift5/oneOf/Cartfile | 2 +- .../petstore/swift5/oneOf/Package.swift | 2 +- .../swift5/oneOf/PetstoreClient.podspec | 2 +- .../Classes/OpenAPIs/Extensions.swift | 43 ------ .../swift5/promisekitLibrary/Cartfile | 4 +- .../swift5/promisekitLibrary/Package.resolved | 13 +- .../swift5/promisekitLibrary/Package.swift | 4 +- .../promisekitLibrary/PetstoreClient.podspec | 4 +- .../Classes/OpenAPIs/Extensions.swift | 43 ------ .../SwaggerClientTests/Podfile | 13 -- .../SwaggerClientTests/Podfile.lock | 23 --- .../SwaggerClient.xcodeproj/project.pbxproj | 131 +++++------------ .../contents.xcworkspacedata | 4 +- .../xcshareddata/swiftpm/Package.resolved | 25 ++++ .../swift5/readonlyProperties/Cartfile | 2 +- .../swift5/readonlyProperties/Package.swift | 2 +- .../readonlyProperties/PetstoreClient.podspec | 2 +- .../Classes/OpenAPIs/Extensions.swift | 43 ------ .../petstore/swift5/resultLibrary/Cartfile | 2 +- .../swift5/resultLibrary/Package.resolved | 16 ++ .../swift5/resultLibrary/Package.swift | 2 +- .../resultLibrary/PetstoreClient.podspec | 2 +- .../Classes/OpenAPIs/Extensions.swift | 43 ------ .../contents.xcworkspacedata | 7 + .../petstore/swift5/rxswiftLibrary/Cartfile | 4 +- .../swift5/rxswiftLibrary/Package.resolved | 13 +- .../swift5/rxswiftLibrary/Package.swift | 4 +- .../rxswiftLibrary/PetstoreClient.podspec | 4 +- .../Classes/OpenAPIs/Extensions.swift | 43 ------ .../rxswiftLibrary/SwaggerClientTests/Podfile | 13 -- .../SwaggerClientTests/Podfile.lock | 23 --- .../SwaggerClient.xcodeproj/project.pbxproj | 133 +++++------------ .../contents.xcworkspacedata | 4 +- .../xcshareddata/swiftpm/Package.resolved | 25 ++++ .../SwaggerClientTests/PetAPITests.swift | 2 +- .../swift5/urlsessionLibrary/Cartfile | 2 +- .../swift5/urlsessionLibrary/Package.resolved | 16 ++ .../swift5/urlsessionLibrary/Package.swift | 2 +- .../urlsessionLibrary/PetstoreClient.podspec | 2 +- .../Sources/PetstoreClient/Extensions.swift | 43 ------ .../SwaggerClientTests/Podfile | 13 -- .../SwaggerClientTests/Podfile.lock | 16 -- .../SwaggerClient.xcodeproj/project.pbxproj | 134 ++++------------- .../contents.xcworkspacedata | 4 +- .../xcshareddata/swiftpm/Package.resolved | 16 ++ .../petstore/swift5/x-swift-hashable/Cartfile | 2 +- .../swift5/x-swift-hashable/Package.swift | 2 +- .../x-swift-hashable/PetstoreClient.podspec | 2 +- .../Classes/OpenAPIs/Extensions.swift | 43 ------ 98 files changed, 522 insertions(+), 1474 deletions(-) delete mode 100644 samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/Podfile delete mode 100644 samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/Podfile.lock create mode 100644 samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 samples/client/petstore/swift5/combineLibrary/Package.resolved delete mode 100644 samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/Podfile delete mode 100644 samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/Podfile.lock create mode 100644 samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved delete mode 100644 samples/client/petstore/swift5/default/SwaggerClientTests/Podfile delete mode 100644 samples/client/petstore/swift5/default/SwaggerClientTests/Podfile.lock create mode 100644 samples/client/petstore/swift5/default/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 samples/client/petstore/swift5/deprecated/Package.resolved create mode 100644 samples/client/petstore/swift5/nonPublicApi/Package.resolved create mode 100644 samples/client/petstore/swift5/objcCompatible/Package.resolved delete mode 100644 samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/Podfile delete mode 100644 samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/Podfile.lock create mode 100644 samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 samples/client/petstore/swift5/resultLibrary/Package.resolved create mode 100644 samples/client/petstore/swift5/rxswiftLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata delete mode 100644 samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/Podfile delete mode 100644 samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/Podfile.lock create mode 100644 samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Package.resolved delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/Podfile delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/Podfile.lock create mode 100644 samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/modules/openapi-generator/src/main/resources/swift5/Cartfile.mustache b/modules/openapi-generator/src/main/resources/swift5/Cartfile.mustache index 64dac06473e..5dbbc457720 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Cartfile.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Cartfile.mustache @@ -1,4 +1,4 @@ {{#useAlamofire}}github "Alamofire/Alamofire" ~> 4.9.1{{/useAlamofire}}{{#usePromiseKit}} -github "mxcl/PromiseKit" ~> 6.13.1{{/usePromiseKit}}{{#useRxSwift}} -github "ReactiveX/RxSwift" ~> 5.1.1{{/useRxSwift}} -github "Flight-School/AnyCodable" ~> 0.4.0 +github "mxcl/PromiseKit" ~> 6.15.3{{/usePromiseKit}}{{#useRxSwift}} +github "ReactiveX/RxSwift" ~> 6.2.0{{/useRxSwift}} +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache b/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache index e3b069f432c..a4d5dd4b305 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache @@ -202,46 +202,3 @@ extension RequestBuilder { return deferred.promise } }{{/usePromiseKit}} - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/modules/openapi-generator/src/main/resources/swift5/Package.swift.mustache b/modules/openapi-generator/src/main/resources/swift5/Package.swift.mustache index 353c6e9f341..5dc55ffef83 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Package.swift.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Package.swift.mustache @@ -19,15 +19,15 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), {{#useAlamofire}} .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.9.1"), {{/useAlamofire}} {{#usePromiseKit}} - .package(url: "https://github.com/mxcl/PromiseKit.git", from: "6.12.0"), + .package(url: "https://github.com/mxcl/PromiseKit.git", from: "6.15.3"), {{/usePromiseKit}} {{#useRxSwift}} - .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "5.0.0"), + .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "6.2.0"), {{/useRxSwift}} ], targets: [ diff --git a/modules/openapi-generator/src/main/resources/swift5/Podspec.mustache b/modules/openapi-generator/src/main/resources/swift5/Podspec.mustache index 09f07162c03..7ad13354aac 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Podspec.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Podspec.mustache @@ -27,13 +27,13 @@ Pod::Spec.new do |s| {{/podDocumentationURL}} s.source_files = '{{#swiftPackagePath}}{{swiftPackagePath}}{{/swiftPackagePath}}{{^swiftPackagePath}}{{#useSPMFileStructure}}Sources/{{projectName}}{{/useSPMFileStructure}}{{^useSPMFileStructure}}{{projectName}}/Classes{{/useSPMFileStructure}}{{/swiftPackagePath}}/**/*.swift' {{#usePromiseKit}} - s.dependency 'PromiseKit/CorePromise', '~> 6.13.1' + s.dependency 'PromiseKit/CorePromise', '~> 6.15.3' {{/usePromiseKit}} {{#useRxSwift}} - s.dependency 'RxSwift', '~> 5.1.1' + s.dependency 'RxSwift', '~> 6.2.0' {{/useRxSwift}} {{#useAlamofire}} s.dependency 'Alamofire', '~> 4.9.1' {{/useAlamofire}} - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/alamofireLibrary/Cartfile b/samples/client/petstore/swift5/alamofireLibrary/Cartfile index cf67badb850..01ae988a6d4 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/Cartfile +++ b/samples/client/petstore/swift5/alamofireLibrary/Cartfile @@ -1,2 +1,2 @@ github "Alamofire/Alamofire" ~> 4.9.1 -github "Flight-School/AnyCodable" ~> 0.4.0 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/alamofireLibrary/Package.resolved b/samples/client/petstore/swift5/alamofireLibrary/Package.resolved index ca6137050eb..4c8626cac13 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/Package.resolved +++ b/samples/client/petstore/swift5/alamofireLibrary/Package.resolved @@ -9,6 +9,15 @@ "revision": "747c8db8d57b68d5e35275f10c92d55f982adbd4", "version": "4.9.1" } + }, + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } } ] }, diff --git a/samples/client/petstore/swift5/alamofireLibrary/Package.swift b/samples/client/petstore/swift5/alamofireLibrary/Package.swift index 41b3c7aba32..153013e9e93 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/Package.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.9.1"), ], targets: [ diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient.podspec b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient.podspec index 23fbf094106..dbe8000cc21 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient.podspec @@ -12,5 +12,5 @@ Pod::Spec.new do |s| s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' s.dependency 'Alamofire', '~> 4.9.1' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 11e807937bd..e23035dde30 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -186,46 +186,3 @@ extension HTTPURLResponse { return Array(200 ..< 300).contains(statusCode) } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/Podfile b/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/Podfile deleted file mode 100644 index 77432f9eee9..00000000000 --- a/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/Podfile +++ /dev/null @@ -1,13 +0,0 @@ -platform :ios, '9.0' - -source 'https://cdn.cocoapods.org/' - -use_frameworks! - -target 'SwaggerClient' do - pod "PetstoreClient", :path => "../" - - target 'SwaggerClientTests' do - inherit! :search_paths - end -end diff --git a/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/Podfile.lock b/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/Podfile.lock deleted file mode 100644 index 30f84a6b9c3..00000000000 --- a/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/Podfile.lock +++ /dev/null @@ -1,23 +0,0 @@ -PODS: - - Alamofire (4.9.1) - - PetstoreClient (1.0.0): - - Alamofire (~> 4.9.1) - -DEPENDENCIES: - - PetstoreClient (from `../`) - -SPEC REPOS: - trunk: - - Alamofire - -EXTERNAL SOURCES: - PetstoreClient: - :path: "../" - -SPEC CHECKSUMS: - Alamofire: 85e8a02c69d6020a0d734f6054870d7ecb75cf18 - PetstoreClient: bc687d8c4d0c762098d72690e220cae37e281311 - -PODFILE CHECKSUM: 509bec696cc1d8641751b52e4fe4bef04ac4542c - -COCOAPODS: 1.10.0 diff --git a/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj index 901182fb107..03aed8e5f82 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj +++ b/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj @@ -3,11 +3,10 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ - 198019EEC6E3CB01FC884C7A /* Pods_SwaggerClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D829DFE4E137D91D6174D75A /* Pods_SwaggerClientTests.framework */; }; 1A501F48219C3DC600F372F6 /* DateFormatTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A501F47219C3DC600F372F6 /* DateFormatTests.swift */; }; 6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */; }; 6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB961C692C6300B96B06 /* ViewController.swift */; }; @@ -18,9 +17,9 @@ 6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */; }; 6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */; }; A5465873259E306E00C3929B /* BearerDecodableRequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5465872259E306E00C3929B /* BearerDecodableRequestBuilder.swift */; }; + A5782C6D2664F91D00CAA106 /* PetstoreClient in Frameworks */ = {isa = PBXBuildFile; productRef = A5782C6C2664F91D00CAA106 /* PetstoreClient */; }; A5EA12542419387200E30FC3 /* FileUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA12522419387100E30FC3 /* FileUtils.swift */; }; A5EA12552419387200E30FC3 /* UIImage+Extras.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA12532419387100E30FC3 /* UIImage+Extras.swift */; }; - B68489033454646C60C16C88 /* Pods_SwaggerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79549D5237E5E83F567030EC /* Pods_SwaggerClient.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -35,7 +34,6 @@ /* Begin PBXFileReference section */ 1A501F47219C3DC600F372F6 /* DateFormatTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateFormatTests.swift; sourceTree = ""; }; - 32ED0E88E0B89A537075D9C9 /* Pods-SwaggerClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.debug.xcconfig"; path = "Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig"; sourceTree = ""; }; 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient.app; sourceTree = BUILT_PRODUCTS_DIR; }; 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 6D4EFB961C692C6300B96B06 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -48,15 +46,9 @@ 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = ""; }; 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = ""; }; 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = ""; }; - 74246FD63841F7C179AD697F /* Pods-SwaggerClientTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.debug.xcconfig"; path = "Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig"; sourceTree = ""; }; - 79549D5237E5E83F567030EC /* Pods_SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8ABA6AE59F792DAA1F79C48F /* Pods-SwaggerClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.release.xcconfig"; path = "Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig"; sourceTree = ""; }; A5465872259E306E00C3929B /* BearerDecodableRequestBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BearerDecodableRequestBuilder.swift; sourceTree = ""; }; A5EA12522419387100E30FC3 /* FileUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileUtils.swift; sourceTree = ""; }; A5EA12532419387100E30FC3 /* UIImage+Extras.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+Extras.swift"; sourceTree = ""; }; - C07EC0A94AA0F86D60668B32 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D829DFE4E137D91D6174D75A /* Pods_SwaggerClientTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClientTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FB503FF47F354A87D697DD0A /* Pods-SwaggerClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.release.xcconfig"; path = "Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -64,7 +56,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B68489033454646C60C16C88 /* Pods_SwaggerClient.framework in Frameworks */, + A5782C6D2664F91D00CAA106 /* PetstoreClient in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -72,7 +64,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 198019EEC6E3CB01FC884C7A /* Pods_SwaggerClientTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -82,9 +73,6 @@ 3FABC56EC0BA84CBF4F99564 /* Frameworks */ = { isa = PBXGroup; children = ( - C07EC0A94AA0F86D60668B32 /* Pods.framework */, - 79549D5237E5E83F567030EC /* Pods_SwaggerClient.framework */, - D829DFE4E137D91D6174D75A /* Pods_SwaggerClientTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -96,7 +84,6 @@ 6D4EFBA81C692C6300B96B06 /* SwaggerClientTests */, 6D4EFB921C692C6300B96B06 /* Products */, 3FABC56EC0BA84CBF4F99564 /* Frameworks */, - AC485EA5DC51CA28F3F7FECF /* Pods */, ); sourceTree = ""; }; @@ -137,18 +124,6 @@ path = SwaggerClientTests; sourceTree = ""; }; - AC485EA5DC51CA28F3F7FECF /* Pods */ = { - isa = PBXGroup; - children = ( - 32ED0E88E0B89A537075D9C9 /* Pods-SwaggerClient.debug.xcconfig */, - FB503FF47F354A87D697DD0A /* Pods-SwaggerClient.release.xcconfig */, - 74246FD63841F7C179AD697F /* Pods-SwaggerClientTests.debug.xcconfig */, - 8ABA6AE59F792DAA1F79C48F /* Pods-SwaggerClientTests.release.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -156,17 +131,18 @@ isa = PBXNativeTarget; buildConfigurationList = 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */; buildPhases = ( - 53EC90CFFB0E0FABA75F972D /* [CP] Check Pods Manifest.lock */, 6D4EFB8D1C692C6300B96B06 /* Sources */, 6D4EFB8E1C692C6300B96B06 /* Frameworks */, 6D4EFB8F1C692C6300B96B06 /* Resources */, - 3E0F8DF721D95AAFC75864D4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( ); name = SwaggerClient; + packageProductDependencies = ( + A5782C6C2664F91D00CAA106 /* PetstoreClient */, + ); productName = SwaggerClient; productReference = 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */; productType = "com.apple.product-type.application"; @@ -175,7 +151,6 @@ isa = PBXNativeTarget; buildConfigurationList = 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */; buildPhases = ( - 89F684025365A60C007C7DA9 /* [CP] Check Pods Manifest.lock */, 6D4EFBA11C692C6300B96B06 /* Sources */, 6D4EFBA21C692C6300B96B06 /* Frameworks */, 6D4EFBA31C692C6300B96B06 /* Resources */, @@ -250,73 +225,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 3E0F8DF721D95AAFC75864D4 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", - "${BUILT_PRODUCTS_DIR}/PetstoreClient/PetstoreClient.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PetstoreClient.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 53EC90CFFB0E0FABA75F972D /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SwaggerClient-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 89F684025365A60C007C7DA9 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SwaggerClientTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ 6D4EFB8D1C692C6300B96B06 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -481,11 +389,13 @@ }; 6D4EFBAF1C692C6300B96B06 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 32ED0E88E0B89A537075D9C9 /* Pods-SwaggerClient.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = SwaggerClient/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -494,11 +404,13 @@ }; 6D4EFBB01C692C6300B96B06 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FB503FF47F354A87D697DD0A /* Pods-SwaggerClient.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = SwaggerClient/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -507,11 +419,14 @@ }; 6D4EFBB21C692C6300B96B06 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 74246FD63841F7C179AD697F /* Pods-SwaggerClientTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; INFOPLIST_FILE = SwaggerClientTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -521,11 +436,14 @@ }; 6D4EFBB31C692C6300B96B06 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8ABA6AE59F792DAA1F79C48F /* Pods-SwaggerClientTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; INFOPLIST_FILE = SwaggerClientTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -564,6 +482,13 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCSwiftPackageProductDependency section */ + A5782C6C2664F91D00CAA106 /* PetstoreClient */ = { + isa = XCSwiftPackageProductDependency; + productName = PetstoreClient; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 6D4EFB891C692C6300B96B06 /* Project object */; } diff --git a/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata index 9b3fa18954f..00ec9b53a7f 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata +++ b/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata @@ -2,9 +2,9 @@ + location = "group:.."> + location = "group:SwaggerClient.xcodeproj"> diff --git a/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved b/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000000..4c8626cac13 --- /dev/null +++ b/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,25 @@ +{ + "object": { + "pins": [ + { + "package": "Alamofire", + "repositoryURL": "https://github.com/Alamofire/Alamofire.git", + "state": { + "branch": null, + "revision": "747c8db8d57b68d5e35275f10c92d55f982adbd4", + "version": "4.9.1" + } + }, + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/combineLibrary/Cartfile b/samples/client/petstore/swift5/combineLibrary/Cartfile index 84aaa61ef2d..843f7adc779 100644 --- a/samples/client/petstore/swift5/combineLibrary/Cartfile +++ b/samples/client/petstore/swift5/combineLibrary/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.4.0 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/combineLibrary/Package.resolved b/samples/client/petstore/swift5/combineLibrary/Package.resolved new file mode 100644 index 00000000000..d384b276b4b --- /dev/null +++ b/samples/client/petstore/swift5/combineLibrary/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/combineLibrary/Package.swift b/samples/client/petstore/swift5/combineLibrary/Package.swift index b724838fe8d..5cde507bdcf 100644 --- a/samples/client/petstore/swift5/combineLibrary/Package.swift +++ b/samples/client/petstore/swift5/combineLibrary/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient.podspec b/samples/client/petstore/swift5/combineLibrary/PetstoreClient.podspec index de06558efbd..60f05891b24 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 11e807937bd..e23035dde30 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -186,46 +186,3 @@ extension HTTPURLResponse { return Array(200 ..< 300).contains(statusCode) } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/Podfile b/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/Podfile deleted file mode 100644 index 77432f9eee9..00000000000 --- a/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/Podfile +++ /dev/null @@ -1,13 +0,0 @@ -platform :ios, '9.0' - -source 'https://cdn.cocoapods.org/' - -use_frameworks! - -target 'SwaggerClient' do - pod "PetstoreClient", :path => "../" - - target 'SwaggerClientTests' do - inherit! :search_paths - end -end diff --git a/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/Podfile.lock b/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/Podfile.lock deleted file mode 100644 index a621fdeec88..00000000000 --- a/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/Podfile.lock +++ /dev/null @@ -1,16 +0,0 @@ -PODS: - - PetstoreClient (1.0.0) - -DEPENDENCIES: - - PetstoreClient (from `../`) - -EXTERNAL SOURCES: - PetstoreClient: - :path: "../" - -SPEC CHECKSUMS: - PetstoreClient: b26b235a3ece06dbf1da99dc67e48aa201659f21 - -PODFILE CHECKSUM: 509bec696cc1d8641751b52e4fe4bef04ac4542c - -COCOAPODS: 1.9.0 diff --git a/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj index 0be50e9f6f1..84e7599d4d3 100644 --- a/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj +++ b/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj @@ -3,14 +3,13 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ + A5782C732664FABF00CAA106 /* PetstoreClient in Frameworks */ = {isa = PBXBuildFile; productRef = A5782C722664FABF00CAA106 /* PetstoreClient */; }; A5EA12582419390400E30FC3 /* FileUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA12562419390400E30FC3 /* FileUtils.swift */; }; A5EA12592419390400E30FC3 /* UIImage+Extras.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA12572419390400E30FC3 /* UIImage+Extras.swift */; }; - B024164FBFF71BF644D4419A /* Pods_SwaggerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177A58DD5CF63F2989335DCC /* Pods_SwaggerClient.framework */; }; - B1D0246C8960F47A60098F37 /* Pods_SwaggerClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F96A0131101344CC5406CB3 /* Pods_SwaggerClientTests.framework */; }; B596E4BD205657A500B46F03 /* APIHelperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B596E4BC205657A500B46F03 /* APIHelperTests.swift */; }; EAEC0BC21D4E30CE00C908A3 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BC11D4E30CE00C908A3 /* AppDelegate.swift */; }; EAEC0BC41D4E30CE00C908A3 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BC31D4E30CE00C908A3 /* ViewController.swift */; }; @@ -33,11 +32,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 177A58DD5CF63F2989335DCC /* Pods_SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2DEFA8828BD4E38FA5262F53 /* Pods-SwaggerClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig"; sourceTree = ""; }; - 4EF2021609D112A6F5AE0F55 /* Pods-SwaggerClientTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig"; sourceTree = ""; }; - 6F96A0131101344CC5406CB3 /* Pods_SwaggerClientTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClientTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D99518E8E05FD856A952698 /* Pods-SwaggerClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig"; sourceTree = ""; }; A5EA12562419390400E30FC3 /* FileUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileUtils.swift; sourceTree = ""; }; A5EA12572419390400E30FC3 /* UIImage+Extras.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+Extras.swift"; sourceTree = ""; }; B596E4BC205657A500B46F03 /* APIHelperTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIHelperTests.swift; sourceTree = ""; }; @@ -53,7 +47,6 @@ EAEC0BE31D4E330700C908A3 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = ""; }; EAEC0BE51D4E379000C908A3 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = ""; }; EAEC0BE71D4E38CB00C908A3 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = ""; }; - EFD8AB05F53C74985527D117 /* Pods-SwaggerClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -61,7 +54,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B024164FBFF71BF644D4419A /* Pods_SwaggerClient.framework in Frameworks */, + A5782C732664FABF00CAA106 /* PetstoreClient in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -69,41 +62,26 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B1D0246C8960F47A60098F37 /* Pods_SwaggerClientTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 55DC454FF5FFEF8A9CBC1CA3 /* Frameworks */ = { + A5782C712664FABE00CAA106 /* Frameworks */ = { isa = PBXGroup; children = ( - 177A58DD5CF63F2989335DCC /* Pods_SwaggerClient.framework */, - 6F96A0131101344CC5406CB3 /* Pods_SwaggerClientTests.framework */, ); name = Frameworks; sourceTree = ""; }; - CB19142D951AB5DD885404A8 /* Pods */ = { - isa = PBXGroup; - children = ( - 8D99518E8E05FD856A952698 /* Pods-SwaggerClient.debug.xcconfig */, - 2DEFA8828BD4E38FA5262F53 /* Pods-SwaggerClient.release.xcconfig */, - 4EF2021609D112A6F5AE0F55 /* Pods-SwaggerClientTests.debug.xcconfig */, - EFD8AB05F53C74985527D117 /* Pods-SwaggerClientTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; EAEC0BB51D4E30CE00C908A3 = { isa = PBXGroup; children = ( EAEC0BC01D4E30CE00C908A3 /* SwaggerClient */, EAEC0BD51D4E30CE00C908A3 /* SwaggerClientTests */, EAEC0BBF1D4E30CE00C908A3 /* Products */, - CB19142D951AB5DD885404A8 /* Pods */, - 55DC454FF5FFEF8A9CBC1CA3 /* Frameworks */, + A5782C712664FABE00CAA106 /* Frameworks */, ); sourceTree = ""; }; @@ -150,17 +128,18 @@ isa = PBXNativeTarget; buildConfigurationList = EAEC0BDB1D4E30CE00C908A3 /* Build configuration list for PBXNativeTarget "SwaggerClient" */; buildPhases = ( - 898E536ECC2C4811DDDF67C1 /* [CP] Check Pods Manifest.lock */, EAEC0BBA1D4E30CE00C908A3 /* Sources */, EAEC0BBB1D4E30CE00C908A3 /* Frameworks */, EAEC0BBC1D4E30CE00C908A3 /* Resources */, - 8A7961360961F06AADAF17C9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( ); name = SwaggerClient; + packageProductDependencies = ( + A5782C722664FABF00CAA106 /* PetstoreClient */, + ); productName = SwaggerClient; productReference = EAEC0BBE1D4E30CE00C908A3 /* SwaggerClient.app */; productType = "com.apple.product-type.application"; @@ -169,7 +148,6 @@ isa = PBXNativeTarget; buildConfigurationList = EAEC0BDE1D4E30CE00C908A3 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */; buildPhases = ( - 82CB35D52E274C6177DAC0DD /* [CP] Check Pods Manifest.lock */, EAEC0BCE1D4E30CE00C908A3 /* Sources */, EAEC0BCF1D4E30CE00C908A3 /* Frameworks */, EAEC0BD01D4E30CE00C908A3 /* Resources */, @@ -244,63 +222,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 82CB35D52E274C6177DAC0DD /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SwaggerClientTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 898E536ECC2C4811DDDF67C1 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SwaggerClient-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 8A7961360961F06AADAF17C9 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/PetstoreClient/PetstoreClient.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PetstoreClient.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ EAEC0BBA1D4E30CE00C908A3 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -456,7 +377,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.3; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 4.2; VALIDATE_PRODUCT = YES; }; @@ -464,11 +386,13 @@ }; EAEC0BDC1D4E30CE00C908A3 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8D99518E8E05FD856A952698 /* Pods-SwaggerClient.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = SwaggerClient/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -478,11 +402,13 @@ }; EAEC0BDD1D4E30CE00C908A3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2DEFA8828BD4E38FA5262F53 /* Pods-SwaggerClient.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = SwaggerClient/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -492,12 +418,15 @@ }; EAEC0BDF1D4E30CE00C908A3 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4EF2021609D112A6F5AE0F55 /* Pods-SwaggerClientTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = SwaggerClientTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -508,12 +437,15 @@ }; EAEC0BE01D4E30CE00C908A3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EFD8AB05F53C74985527D117 /* Pods-SwaggerClientTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = SwaggerClientTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -552,6 +484,13 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCSwiftPackageProductDependency section */ + A5782C722664FABF00CAA106 /* PetstoreClient */ = { + isa = XCSwiftPackageProductDependency; + productName = PetstoreClient; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = EAEC0BB61D4E30CE00C908A3 /* Project object */; } diff --git a/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata index 9b3fa18954f..00ec9b53a7f 100644 --- a/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata +++ b/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata @@ -2,9 +2,9 @@ + location = "group:.."> + location = "group:SwaggerClient.xcodeproj"> diff --git a/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved b/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000000..d384b276b4b --- /dev/null +++ b/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/default/Cartfile b/samples/client/petstore/swift5/default/Cartfile index 84aaa61ef2d..843f7adc779 100644 --- a/samples/client/petstore/swift5/default/Cartfile +++ b/samples/client/petstore/swift5/default/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.4.0 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/default/Package.resolved b/samples/client/petstore/swift5/default/Package.resolved index 85bb93ced12..d384b276b4b 100644 --- a/samples/client/petstore/swift5/default/Package.resolved +++ b/samples/client/petstore/swift5/default/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "38b05fc9f86501ef8018aa90cf3d83bd97f74067", - "version": "0.4.0" + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" } } ] diff --git a/samples/client/petstore/swift5/default/Package.swift b/samples/client/petstore/swift5/default/Package.swift index b724838fe8d..5cde507bdcf 100644 --- a/samples/client/petstore/swift5/default/Package.swift +++ b/samples/client/petstore/swift5/default/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/default/PetstoreClient.podspec b/samples/client/petstore/swift5/default/PetstoreClient.podspec index de06558efbd..60f05891b24 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/default/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 11e807937bd..e23035dde30 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -186,46 +186,3 @@ extension HTTPURLResponse { return Array(200 ..< 300).contains(statusCode) } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/samples/client/petstore/swift5/default/SwaggerClientTests/Podfile b/samples/client/petstore/swift5/default/SwaggerClientTests/Podfile deleted file mode 100644 index 77432f9eee9..00000000000 --- a/samples/client/petstore/swift5/default/SwaggerClientTests/Podfile +++ /dev/null @@ -1,13 +0,0 @@ -platform :ios, '9.0' - -source 'https://cdn.cocoapods.org/' - -use_frameworks! - -target 'SwaggerClient' do - pod "PetstoreClient", :path => "../" - - target 'SwaggerClientTests' do - inherit! :search_paths - end -end diff --git a/samples/client/petstore/swift5/default/SwaggerClientTests/Podfile.lock b/samples/client/petstore/swift5/default/SwaggerClientTests/Podfile.lock deleted file mode 100644 index 11d11529e9e..00000000000 --- a/samples/client/petstore/swift5/default/SwaggerClientTests/Podfile.lock +++ /dev/null @@ -1,16 +0,0 @@ -PODS: - - PetstoreClient (1.0.0) - -DEPENDENCIES: - - PetstoreClient (from `../`) - -EXTERNAL SOURCES: - PetstoreClient: - :path: "../" - -SPEC CHECKSUMS: - PetstoreClient: b26b235a3ece06dbf1da99dc67e48aa201659f21 - -PODFILE CHECKSUM: 509bec696cc1d8641751b52e4fe4bef04ac4542c - -COCOAPODS: 1.10.0 diff --git a/samples/client/petstore/swift5/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/samples/client/petstore/swift5/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj index ca2ec05d5dc..7d9d50e1fff 100644 --- a/samples/client/petstore/swift5/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj +++ b/samples/client/petstore/swift5/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj @@ -3,12 +3,11 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ 1A501F48219C3DC600F372F6 /* DateFormatTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A501F47219C3DC600F372F6 /* DateFormatTests.swift */; }; - 23B2E76564651097BE2FE501 /* Pods_SwaggerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F98CC8B18E5FA9213F6A68D /* Pods_SwaggerClient.framework */; }; 6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */; }; 6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB961C692C6300B96B06 /* ViewController.swift */; }; 6D4EFB9A1C692C6300B96B06 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB981C692C6300B96B06 /* Main.storyboard */; }; @@ -17,9 +16,9 @@ 6D4EFBB51C693BE200B96B06 /* PetAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */; }; 6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */; }; 6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */; }; + A5782C752664FB6500CAA106 /* PetstoreClient in Frameworks */ = {isa = PBXBuildFile; productRef = A5782C742664FB6500CAA106 /* PetstoreClient */; }; A5EA124F241901AA00E30FC3 /* UIImage+Extras.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA124E241901AA00E30FC3 /* UIImage+Extras.swift */; }; A5EA1251241905F000E30FC3 /* FileUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA1250241905F000E30FC3 /* FileUtils.swift */; }; - FB5CCC7EFA680BB2746B695B /* Pods_SwaggerClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83FDC034BBA2A07AE9975250 /* Pods_SwaggerClientTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -33,7 +32,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 081E9B893DEB1589CB807EA7 /* Pods-SwaggerClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig"; sourceTree = ""; }; 1A501F47219C3DC600F372F6 /* DateFormatTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateFormatTests.swift; sourceTree = ""; }; 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient.app; sourceTree = BUILT_PRODUCTS_DIR; }; 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -47,14 +45,8 @@ 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = ""; }; 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = ""; }; 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = ""; }; - 7F98CC8B18E5FA9213F6A68D /* Pods_SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 83FDC034BBA2A07AE9975250 /* Pods_SwaggerClientTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClientTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A5EA124E241901AA00E30FC3 /* UIImage+Extras.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Extras.swift"; sourceTree = ""; }; A5EA1250241905F000E30FC3 /* FileUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileUtils.swift; sourceTree = ""; }; - ACB80AC61FA8D8916D4559AA /* Pods-SwaggerClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig"; sourceTree = ""; }; - C07EC0A94AA0F86D60668B32 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E43FC34A9681D65ED44EE914 /* Pods-SwaggerClientTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig"; sourceTree = ""; }; - ED8576754DBB828CAE63EA87 /* Pods-SwaggerClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -62,7 +54,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 23B2E76564651097BE2FE501 /* Pods_SwaggerClient.framework in Frameworks */, + A5782C752664FB6500CAA106 /* PetstoreClient in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -70,30 +62,15 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FB5CCC7EFA680BB2746B695B /* Pods_SwaggerClientTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 203D4495376E4EB72474B091 /* Pods */ = { - isa = PBXGroup; - children = ( - 081E9B893DEB1589CB807EA7 /* Pods-SwaggerClient.debug.xcconfig */, - ACB80AC61FA8D8916D4559AA /* Pods-SwaggerClient.release.xcconfig */, - E43FC34A9681D65ED44EE914 /* Pods-SwaggerClientTests.debug.xcconfig */, - ED8576754DBB828CAE63EA87 /* Pods-SwaggerClientTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; 3FABC56EC0BA84CBF4F99564 /* Frameworks */ = { isa = PBXGroup; children = ( - C07EC0A94AA0F86D60668B32 /* Pods.framework */, - 7F98CC8B18E5FA9213F6A68D /* Pods_SwaggerClient.framework */, - 83FDC034BBA2A07AE9975250 /* Pods_SwaggerClientTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -105,7 +82,6 @@ 6D4EFBA81C692C6300B96B06 /* SwaggerClientTests */, 6D4EFB921C692C6300B96B06 /* Products */, 3FABC56EC0BA84CBF4F99564 /* Frameworks */, - 203D4495376E4EB72474B091 /* Pods */, ); sourceTree = ""; }; @@ -152,17 +128,18 @@ isa = PBXNativeTarget; buildConfigurationList = 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */; buildPhases = ( - 5BC9214E8D9BA5A427A3775B /* [CP] Check Pods Manifest.lock */, 6D4EFB8D1C692C6300B96B06 /* Sources */, 6D4EFB8E1C692C6300B96B06 /* Frameworks */, 6D4EFB8F1C692C6300B96B06 /* Resources */, - FDCA0F14611FE114BFEBA8BB /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( ); name = SwaggerClient; + packageProductDependencies = ( + A5782C742664FB6500CAA106 /* PetstoreClient */, + ); productName = SwaggerClient; productReference = 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */; productType = "com.apple.product-type.application"; @@ -171,7 +148,6 @@ isa = PBXNativeTarget; buildConfigurationList = 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */; buildPhases = ( - EEDC5E683F9569976B7C1192 /* [CP] Check Pods Manifest.lock */, 6D4EFBA11C692C6300B96B06 /* Sources */, 6D4EFBA21C692C6300B96B06 /* Frameworks */, 6D4EFBA31C692C6300B96B06 /* Resources */, @@ -246,71 +222,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 5BC9214E8D9BA5A427A3775B /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SwaggerClient-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - EEDC5E683F9569976B7C1192 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SwaggerClientTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - FDCA0F14611FE114BFEBA8BB /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/PetstoreClient/PetstoreClient.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PetstoreClient.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ 6D4EFB8D1C692C6300B96B06 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -474,11 +385,13 @@ }; 6D4EFBAF1C692C6300B96B06 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 081E9B893DEB1589CB807EA7 /* Pods-SwaggerClient.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = SwaggerClient/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -487,11 +400,13 @@ }; 6D4EFBB01C692C6300B96B06 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ACB80AC61FA8D8916D4559AA /* Pods-SwaggerClient.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = SwaggerClient/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -500,11 +415,14 @@ }; 6D4EFBB21C692C6300B96B06 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E43FC34A9681D65ED44EE914 /* Pods-SwaggerClientTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; INFOPLIST_FILE = SwaggerClientTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -514,11 +432,14 @@ }; 6D4EFBB31C692C6300B96B06 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ED8576754DBB828CAE63EA87 /* Pods-SwaggerClientTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; INFOPLIST_FILE = SwaggerClientTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -557,6 +478,13 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCSwiftPackageProductDependency section */ + A5782C742664FB6500CAA106 /* PetstoreClient */ = { + isa = XCSwiftPackageProductDependency; + productName = PetstoreClient; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 6D4EFB891C692C6300B96B06 /* Project object */; } diff --git a/samples/client/petstore/swift5/default/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift5/default/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata index 9b3fa18954f..00ec9b53a7f 100644 --- a/samples/client/petstore/swift5/default/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata +++ b/samples/client/petstore/swift5/default/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata @@ -2,9 +2,9 @@ + location = "group:.."> + location = "group:SwaggerClient.xcodeproj"> diff --git a/samples/client/petstore/swift5/default/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved b/samples/client/petstore/swift5/default/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000000..d384b276b4b --- /dev/null +++ b/samples/client/petstore/swift5/default/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/deprecated/Cartfile b/samples/client/petstore/swift5/deprecated/Cartfile index 84aaa61ef2d..843f7adc779 100644 --- a/samples/client/petstore/swift5/deprecated/Cartfile +++ b/samples/client/petstore/swift5/deprecated/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.4.0 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/deprecated/Package.resolved b/samples/client/petstore/swift5/deprecated/Package.resolved new file mode 100644 index 00000000000..d384b276b4b --- /dev/null +++ b/samples/client/petstore/swift5/deprecated/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/deprecated/Package.swift b/samples/client/petstore/swift5/deprecated/Package.swift index b724838fe8d..5cde507bdcf 100644 --- a/samples/client/petstore/swift5/deprecated/Package.swift +++ b/samples/client/petstore/swift5/deprecated/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient.podspec b/samples/client/petstore/swift5/deprecated/PetstoreClient.podspec index de06558efbd..60f05891b24 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 11e807937bd..e23035dde30 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -186,46 +186,3 @@ extension HTTPURLResponse { return Array(200 ..< 300).contains(statusCode) } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/samples/client/petstore/swift5/nonPublicApi/Cartfile b/samples/client/petstore/swift5/nonPublicApi/Cartfile index 84aaa61ef2d..843f7adc779 100644 --- a/samples/client/petstore/swift5/nonPublicApi/Cartfile +++ b/samples/client/petstore/swift5/nonPublicApi/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.4.0 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/nonPublicApi/Package.resolved b/samples/client/petstore/swift5/nonPublicApi/Package.resolved new file mode 100644 index 00000000000..d384b276b4b --- /dev/null +++ b/samples/client/petstore/swift5/nonPublicApi/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/nonPublicApi/Package.swift b/samples/client/petstore/swift5/nonPublicApi/Package.swift index b724838fe8d..5cde507bdcf 100644 --- a/samples/client/petstore/swift5/nonPublicApi/Package.swift +++ b/samples/client/petstore/swift5/nonPublicApi/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient.podspec b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient.podspec index de06558efbd..60f05891b24 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 481f3ce95ce..65ae1c6c642 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -186,46 +186,3 @@ extension HTTPURLResponse { return Array(200 ..< 300).contains(statusCode) } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/samples/client/petstore/swift5/objcCompatible/Cartfile b/samples/client/petstore/swift5/objcCompatible/Cartfile index 84aaa61ef2d..843f7adc779 100644 --- a/samples/client/petstore/swift5/objcCompatible/Cartfile +++ b/samples/client/petstore/swift5/objcCompatible/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.4.0 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/objcCompatible/Package.resolved b/samples/client/petstore/swift5/objcCompatible/Package.resolved new file mode 100644 index 00000000000..d384b276b4b --- /dev/null +++ b/samples/client/petstore/swift5/objcCompatible/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/objcCompatible/Package.swift b/samples/client/petstore/swift5/objcCompatible/Package.swift index b724838fe8d..5cde507bdcf 100644 --- a/samples/client/petstore/swift5/objcCompatible/Package.swift +++ b/samples/client/petstore/swift5/objcCompatible/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient.podspec b/samples/client/petstore/swift5/objcCompatible/PetstoreClient.podspec index de06558efbd..60f05891b24 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 11e807937bd..e23035dde30 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -186,46 +186,3 @@ extension HTTPURLResponse { return Array(200 ..< 300).contains(statusCode) } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/samples/client/petstore/swift5/oneOf/Cartfile b/samples/client/petstore/swift5/oneOf/Cartfile index 84aaa61ef2d..843f7adc779 100644 --- a/samples/client/petstore/swift5/oneOf/Cartfile +++ b/samples/client/petstore/swift5/oneOf/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.4.0 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/oneOf/Package.swift b/samples/client/petstore/swift5/oneOf/Package.swift index b724838fe8d..5cde507bdcf 100644 --- a/samples/client/petstore/swift5/oneOf/Package.swift +++ b/samples/client/petstore/swift5/oneOf/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient.podspec b/samples/client/petstore/swift5/oneOf/PetstoreClient.podspec index 5999bbadb38..8355c5f50e6 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 11e807937bd..e23035dde30 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -186,46 +186,3 @@ extension HTTPURLResponse { return Array(200 ..< 300).contains(statusCode) } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/samples/client/petstore/swift5/promisekitLibrary/Cartfile b/samples/client/petstore/swift5/promisekitLibrary/Cartfile index 84476a72b7c..e8692e8c204 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/Cartfile +++ b/samples/client/petstore/swift5/promisekitLibrary/Cartfile @@ -1,3 +1,3 @@ -github "mxcl/PromiseKit" ~> 6.13.1 -github "Flight-School/AnyCodable" ~> 0.4.0 +github "mxcl/PromiseKit" ~> 6.15.3 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/promisekitLibrary/Package.resolved b/samples/client/petstore/swift5/promisekitLibrary/Package.resolved index b74611fc3d6..63ce26f05eb 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/Package.resolved +++ b/samples/client/petstore/swift5/promisekitLibrary/Package.resolved @@ -1,13 +1,22 @@ { "object": { "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + }, { "package": "PromiseKit", "repositoryURL": "https://github.com/mxcl/PromiseKit.git", "state": { "branch": null, - "revision": "80963d4317bcdc03891e0fbaa744f20511d1bc08", - "version": "6.12.0" + "revision": "d2f7ba14bcdc45e18f4f60ad9df883fb9055f081", + "version": "6.15.3" } } ] diff --git a/samples/client/petstore/swift5/promisekitLibrary/Package.swift b/samples/client/petstore/swift5/promisekitLibrary/Package.swift index d88580abc72..831b4d0a740 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/Package.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/Package.swift @@ -19,8 +19,8 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), - .package(url: "https://github.com/mxcl/PromiseKit.git", from: "6.12.0"), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/mxcl/PromiseKit.git", from: "6.15.3"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient.podspec b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient.podspec index 44b020f516e..5e3450043c0 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient.podspec @@ -11,6 +11,6 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'PromiseKit/CorePromise', '~> 6.13.1' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'PromiseKit/CorePromise', '~> 6.15.3' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index e03e70ec768..68c3c6ee7e4 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -202,46 +202,3 @@ extension RequestBuilder { return deferred.promise } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/Podfile b/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/Podfile deleted file mode 100644 index 77432f9eee9..00000000000 --- a/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/Podfile +++ /dev/null @@ -1,13 +0,0 @@ -platform :ios, '9.0' - -source 'https://cdn.cocoapods.org/' - -use_frameworks! - -target 'SwaggerClient' do - pod "PetstoreClient", :path => "../" - - target 'SwaggerClientTests' do - inherit! :search_paths - end -end diff --git a/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/Podfile.lock b/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/Podfile.lock deleted file mode 100644 index c75f76b2fb8..00000000000 --- a/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/Podfile.lock +++ /dev/null @@ -1,23 +0,0 @@ -PODS: - - PetstoreClient (1.0.0): - - PromiseKit/CorePromise (~> 6.13.1) - - PromiseKit/CorePromise (6.13.1) - -DEPENDENCIES: - - PetstoreClient (from `../`) - -SPEC REPOS: - trunk: - - PromiseKit - -EXTERNAL SOURCES: - PetstoreClient: - :path: "../" - -SPEC CHECKSUMS: - PetstoreClient: bf095c434cf89014d1b574779fcc7701a551fcce - PromiseKit: 28fda91c973cc377875d8c0ea4f973013c05b6db - -PODFILE CHECKSUM: 509bec696cc1d8641751b52e4fe4bef04ac4542c - -COCOAPODS: 1.10.0 diff --git a/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj index 47fa20866ce..6013383e0d1 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj +++ b/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj @@ -3,11 +3,10 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ - 54DA06C1D70D78EC0EC72B61 /* Pods_SwaggerClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F65B6638217EDDC99D103B16 /* Pods_SwaggerClientTests.framework */; }; 6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */; }; 6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB961C692C6300B96B06 /* ViewController.swift */; }; 6D4EFB9A1C692C6300B96B06 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB981C692C6300B96B06 /* Main.storyboard */; }; @@ -16,7 +15,7 @@ 6D4EFBB51C693BE200B96B06 /* PetAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */; }; 6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */; }; 6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */; }; - 751C65B82F596107A3DC8ED9 /* Pods_SwaggerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F60AECFF321A25553B6A5B0 /* Pods_SwaggerClient.framework */; }; + A5782C6B2664F87200CAA106 /* PetstoreClient in Frameworks */ = {isa = PBXBuildFile; productRef = A5782C6A2664F87200CAA106 /* PetstoreClient */; }; A5EA125C2419398500E30FC3 /* UIImage+Extras.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA125A2419398500E30FC3 /* UIImage+Extras.swift */; }; A5EA125D2419398500E30FC3 /* FileUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA125B2419398500E30FC3 /* FileUtils.swift */; }; /* End PBXBuildFile section */ @@ -32,7 +31,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 289E8A9E9C0BB66AD190C7C6 /* Pods-SwaggerClientTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig"; sourceTree = ""; }; 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient.app; sourceTree = BUILT_PRODUCTS_DIR; }; 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 6D4EFB961C692C6300B96B06 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -45,14 +43,8 @@ 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = ""; }; 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = ""; }; 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = ""; }; - 8F60AECFF321A25553B6A5B0 /* Pods_SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A5EA125A2419398500E30FC3 /* UIImage+Extras.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+Extras.swift"; sourceTree = ""; }; A5EA125B2419398500E30FC3 /* FileUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileUtils.swift; sourceTree = ""; }; - A638467ACFB30852DEA51F7A /* Pods-SwaggerClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig"; sourceTree = ""; }; - B4B2BEC2ECA535C616F2F3FE /* Pods-SwaggerClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig"; sourceTree = ""; }; - C07EC0A94AA0F86D60668B32 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F65B6638217EDDC99D103B16 /* Pods_SwaggerClientTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClientTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FC60BDC7328C2AA916F25840 /* Pods-SwaggerClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -60,7 +52,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 751C65B82F596107A3DC8ED9 /* Pods_SwaggerClient.framework in Frameworks */, + A5782C6B2664F87200CAA106 /* PetstoreClient in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -68,30 +60,15 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 54DA06C1D70D78EC0EC72B61 /* Pods_SwaggerClientTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0CAA98BEFA303B94D3664C7D /* Pods */ = { - isa = PBXGroup; - children = ( - A638467ACFB30852DEA51F7A /* Pods-SwaggerClient.debug.xcconfig */, - FC60BDC7328C2AA916F25840 /* Pods-SwaggerClient.release.xcconfig */, - 289E8A9E9C0BB66AD190C7C6 /* Pods-SwaggerClientTests.debug.xcconfig */, - B4B2BEC2ECA535C616F2F3FE /* Pods-SwaggerClientTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; 3FABC56EC0BA84CBF4F99564 /* Frameworks */ = { isa = PBXGroup; children = ( - C07EC0A94AA0F86D60668B32 /* Pods.framework */, - 8F60AECFF321A25553B6A5B0 /* Pods_SwaggerClient.framework */, - F65B6638217EDDC99D103B16 /* Pods_SwaggerClientTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -103,7 +80,6 @@ 6D4EFBA81C692C6300B96B06 /* SwaggerClientTests */, 6D4EFB921C692C6300B96B06 /* Products */, 3FABC56EC0BA84CBF4F99564 /* Frameworks */, - 0CAA98BEFA303B94D3664C7D /* Pods */, ); sourceTree = ""; }; @@ -149,17 +125,18 @@ isa = PBXNativeTarget; buildConfigurationList = 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */; buildPhases = ( - 1F03F780DC2D9727E5E64BA9 /* [CP] Check Pods Manifest.lock */, 6D4EFB8D1C692C6300B96B06 /* Sources */, 6D4EFB8E1C692C6300B96B06 /* Frameworks */, 6D4EFB8F1C692C6300B96B06 /* Resources */, - 4485A75250058E2D5BBDF63F /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( ); name = SwaggerClient; + packageProductDependencies = ( + A5782C6A2664F87200CAA106 /* PetstoreClient */, + ); productName = SwaggerClient; productReference = 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */; productType = "com.apple.product-type.application"; @@ -168,7 +145,6 @@ isa = PBXNativeTarget; buildConfigurationList = 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */; buildPhases = ( - 79FE27B09B2DD354C831BD49 /* [CP] Check Pods Manifest.lock */, 6D4EFBA11C692C6300B96B06 /* Sources */, 6D4EFBA21C692C6300B96B06 /* Frameworks */, 6D4EFBA31C692C6300B96B06 /* Resources */, @@ -243,65 +219,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 1F03F780DC2D9727E5E64BA9 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SwaggerClient-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 4485A75250058E2D5BBDF63F /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/PetstoreClient/PetstoreClient.framework", - "${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PetstoreClient.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PromiseKit.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 79FE27B09B2DD354C831BD49 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SwaggerClientTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ 6D4EFB8D1C692C6300B96B06 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -455,7 +372,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.2; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; @@ -464,11 +382,13 @@ }; 6D4EFBAF1C692C6300B96B06 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A638467ACFB30852DEA51F7A /* Pods-SwaggerClient.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = SwaggerClient/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -477,11 +397,13 @@ }; 6D4EFBB01C692C6300B96B06 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FC60BDC7328C2AA916F25840 /* Pods-SwaggerClient.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = SwaggerClient/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -490,11 +412,14 @@ }; 6D4EFBB21C692C6300B96B06 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 289E8A9E9C0BB66AD190C7C6 /* Pods-SwaggerClientTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; INFOPLIST_FILE = SwaggerClientTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -504,11 +429,14 @@ }; 6D4EFBB31C692C6300B96B06 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4B2BEC2ECA535C616F2F3FE /* Pods-SwaggerClientTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; INFOPLIST_FILE = SwaggerClientTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -547,6 +475,13 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCSwiftPackageProductDependency section */ + A5782C6A2664F87200CAA106 /* PetstoreClient */ = { + isa = XCSwiftPackageProductDependency; + productName = PetstoreClient; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 6D4EFB891C692C6300B96B06 /* Project object */; } diff --git a/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata index 9b3fa18954f..00ec9b53a7f 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata +++ b/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata @@ -2,9 +2,9 @@ + location = "group:.."> + location = "group:SwaggerClient.xcodeproj"> diff --git a/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved b/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000000..63ce26f05eb --- /dev/null +++ b/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,25 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + }, + { + "package": "PromiseKit", + "repositoryURL": "https://github.com/mxcl/PromiseKit.git", + "state": { + "branch": null, + "revision": "d2f7ba14bcdc45e18f4f60ad9df883fb9055f081", + "version": "6.15.3" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/readonlyProperties/Cartfile b/samples/client/petstore/swift5/readonlyProperties/Cartfile index 84aaa61ef2d..843f7adc779 100644 --- a/samples/client/petstore/swift5/readonlyProperties/Cartfile +++ b/samples/client/petstore/swift5/readonlyProperties/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.4.0 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/readonlyProperties/Package.swift b/samples/client/petstore/swift5/readonlyProperties/Package.swift index b724838fe8d..5cde507bdcf 100644 --- a/samples/client/petstore/swift5/readonlyProperties/Package.swift +++ b/samples/client/petstore/swift5/readonlyProperties/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient.podspec b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient.podspec index de06558efbd..60f05891b24 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 11e807937bd..e23035dde30 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -186,46 +186,3 @@ extension HTTPURLResponse { return Array(200 ..< 300).contains(statusCode) } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/samples/client/petstore/swift5/resultLibrary/Cartfile b/samples/client/petstore/swift5/resultLibrary/Cartfile index 84aaa61ef2d..843f7adc779 100644 --- a/samples/client/petstore/swift5/resultLibrary/Cartfile +++ b/samples/client/petstore/swift5/resultLibrary/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.4.0 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/resultLibrary/Package.resolved b/samples/client/petstore/swift5/resultLibrary/Package.resolved new file mode 100644 index 00000000000..d384b276b4b --- /dev/null +++ b/samples/client/petstore/swift5/resultLibrary/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/resultLibrary/Package.swift b/samples/client/petstore/swift5/resultLibrary/Package.swift index b724838fe8d..5cde507bdcf 100644 --- a/samples/client/petstore/swift5/resultLibrary/Package.swift +++ b/samples/client/petstore/swift5/resultLibrary/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient.podspec b/samples/client/petstore/swift5/resultLibrary/PetstoreClient.podspec index de06558efbd..60f05891b24 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 11e807937bd..e23035dde30 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -186,46 +186,3 @@ extension HTTPURLResponse { return Array(200 ..< 300).contains(statusCode) } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/samples/client/petstore/swift5/rxswiftLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift5/rxswiftLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/samples/client/petstore/swift5/rxswiftLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/Cartfile b/samples/client/petstore/swift5/rxswiftLibrary/Cartfile index 2fd5cfcce54..a49f6c9da03 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/Cartfile +++ b/samples/client/petstore/swift5/rxswiftLibrary/Cartfile @@ -1,3 +1,3 @@ -github "ReactiveX/RxSwift" ~> 5.1.1 -github "Flight-School/AnyCodable" ~> 0.4.0 +github "ReactiveX/RxSwift" ~> 6.2.0 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/rxswiftLibrary/Package.resolved b/samples/client/petstore/swift5/rxswiftLibrary/Package.resolved index e3afef806b8..231d8536967 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/Package.resolved +++ b/samples/client/petstore/swift5/rxswiftLibrary/Package.resolved @@ -1,13 +1,22 @@ { "object": { "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + }, { "package": "RxSwift", "repositoryURL": "https://github.com/ReactiveX/RxSwift.git", "state": { "branch": null, - "revision": "b3e888b4972d9bc76495dd74d30a8c7fad4b9395", - "version": "5.0.1" + "revision": "7c17a6ccca06b5c107cfa4284e634562ddaf5951", + "version": "6.2.0" } } ] diff --git a/samples/client/petstore/swift5/rxswiftLibrary/Package.swift b/samples/client/petstore/swift5/rxswiftLibrary/Package.swift index f3bcac26bb0..36541008daa 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/Package.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/Package.swift @@ -19,8 +19,8 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), - .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "5.0.0"), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "6.2.0"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient.podspec b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient.podspec index 2cd68666098..32a1ff8ae6f 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient.podspec @@ -11,6 +11,6 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'RxSwift', '~> 5.1.1' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'RxSwift', '~> 6.2.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 71e752b2e9f..dc0913d093f 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -100,46 +100,3 @@ extension HTTPURLResponse { return Array(200 ..< 300).contains(statusCode) } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/Podfile b/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/Podfile deleted file mode 100644 index 77432f9eee9..00000000000 --- a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/Podfile +++ /dev/null @@ -1,13 +0,0 @@ -platform :ios, '9.0' - -source 'https://cdn.cocoapods.org/' - -use_frameworks! - -target 'SwaggerClient' do - pod "PetstoreClient", :path => "../" - - target 'SwaggerClientTests' do - inherit! :search_paths - end -end diff --git a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/Podfile.lock b/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/Podfile.lock deleted file mode 100644 index be3757ec1f4..00000000000 --- a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/Podfile.lock +++ /dev/null @@ -1,23 +0,0 @@ -PODS: - - PetstoreClient (1.0.0): - - RxSwift (~> 5.1.1) - - RxSwift (5.1.1) - -DEPENDENCIES: - - PetstoreClient (from `../`) - -SPEC REPOS: - trunk: - - RxSwift - -EXTERNAL SOURCES: - PetstoreClient: - :path: "../" - -SPEC CHECKSUMS: - PetstoreClient: f3d073d9543d90440a155feec649c16b98d84c31 - RxSwift: 81470a2074fa8780320ea5fe4102807cb7118178 - -PODFILE CHECKSUM: 509bec696cc1d8641751b52e4fe4bef04ac4542c - -COCOAPODS: 1.10.0 diff --git a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj index f04b8be9b6a..a9c4af1c818 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj +++ b/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj @@ -3,14 +3,13 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ + A5782C702664FA2300CAA106 /* PetstoreClient in Frameworks */ = {isa = PBXBuildFile; productRef = A5782C6F2664FA2300CAA106 /* PetstoreClient */; }; A5EA1260241941BE00E30FC3 /* FileUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA125E241941BE00E30FC3 /* FileUtils.swift */; }; A5EA1261241941BE00E30FC3 /* UIImage+Extras.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA125F241941BE00E30FC3 /* UIImage+Extras.swift */; }; - B024164FBFF71BF644D4419A /* Pods_SwaggerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177A58DD5CF63F2989335DCC /* Pods_SwaggerClient.framework */; }; - B1D0246C8960F47A60098F37 /* Pods_SwaggerClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F96A0131101344CC5406CB3 /* Pods_SwaggerClientTests.framework */; }; B596E4BD205657A500B46F03 /* APIHelperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B596E4BC205657A500B46F03 /* APIHelperTests.swift */; }; EAEC0BC21D4E30CE00C908A3 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BC11D4E30CE00C908A3 /* AppDelegate.swift */; }; EAEC0BC41D4E30CE00C908A3 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BC31D4E30CE00C908A3 /* ViewController.swift */; }; @@ -33,11 +32,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 177A58DD5CF63F2989335DCC /* Pods_SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2DEFA8828BD4E38FA5262F53 /* Pods-SwaggerClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig"; sourceTree = ""; }; - 4EF2021609D112A6F5AE0F55 /* Pods-SwaggerClientTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig"; sourceTree = ""; }; - 6F96A0131101344CC5406CB3 /* Pods_SwaggerClientTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClientTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D99518E8E05FD856A952698 /* Pods-SwaggerClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig"; sourceTree = ""; }; A5EA125E241941BE00E30FC3 /* FileUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileUtils.swift; sourceTree = ""; }; A5EA125F241941BE00E30FC3 /* UIImage+Extras.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+Extras.swift"; sourceTree = ""; }; B596E4BC205657A500B46F03 /* APIHelperTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIHelperTests.swift; sourceTree = ""; }; @@ -53,7 +47,6 @@ EAEC0BE31D4E330700C908A3 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = ""; }; EAEC0BE51D4E379000C908A3 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = ""; }; EAEC0BE71D4E38CB00C908A3 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = ""; }; - EFD8AB05F53C74985527D117 /* Pods-SwaggerClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -61,7 +54,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B024164FBFF71BF644D4419A /* Pods_SwaggerClient.framework in Frameworks */, + A5782C702664FA2300CAA106 /* PetstoreClient in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -69,41 +62,26 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B1D0246C8960F47A60098F37 /* Pods_SwaggerClientTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 55DC454FF5FFEF8A9CBC1CA3 /* Frameworks */ = { + A5782C6E2664FA2300CAA106 /* Frameworks */ = { isa = PBXGroup; children = ( - 177A58DD5CF63F2989335DCC /* Pods_SwaggerClient.framework */, - 6F96A0131101344CC5406CB3 /* Pods_SwaggerClientTests.framework */, ); name = Frameworks; sourceTree = ""; }; - CB19142D951AB5DD885404A8 /* Pods */ = { - isa = PBXGroup; - children = ( - 8D99518E8E05FD856A952698 /* Pods-SwaggerClient.debug.xcconfig */, - 2DEFA8828BD4E38FA5262F53 /* Pods-SwaggerClient.release.xcconfig */, - 4EF2021609D112A6F5AE0F55 /* Pods-SwaggerClientTests.debug.xcconfig */, - EFD8AB05F53C74985527D117 /* Pods-SwaggerClientTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; EAEC0BB51D4E30CE00C908A3 = { isa = PBXGroup; children = ( EAEC0BC01D4E30CE00C908A3 /* SwaggerClient */, EAEC0BD51D4E30CE00C908A3 /* SwaggerClientTests */, EAEC0BBF1D4E30CE00C908A3 /* Products */, - CB19142D951AB5DD885404A8 /* Pods */, - 55DC454FF5FFEF8A9CBC1CA3 /* Frameworks */, + A5782C6E2664FA2300CAA106 /* Frameworks */, ); sourceTree = ""; }; @@ -150,17 +128,18 @@ isa = PBXNativeTarget; buildConfigurationList = EAEC0BDB1D4E30CE00C908A3 /* Build configuration list for PBXNativeTarget "SwaggerClient" */; buildPhases = ( - 898E536ECC2C4811DDDF67C1 /* [CP] Check Pods Manifest.lock */, EAEC0BBA1D4E30CE00C908A3 /* Sources */, EAEC0BBB1D4E30CE00C908A3 /* Frameworks */, EAEC0BBC1D4E30CE00C908A3 /* Resources */, - 8A7961360961F06AADAF17C9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( ); name = SwaggerClient; + packageProductDependencies = ( + A5782C6F2664FA2300CAA106 /* PetstoreClient */, + ); productName = SwaggerClient; productReference = EAEC0BBE1D4E30CE00C908A3 /* SwaggerClient.app */; productType = "com.apple.product-type.application"; @@ -169,7 +148,6 @@ isa = PBXNativeTarget; buildConfigurationList = EAEC0BDE1D4E30CE00C908A3 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */; buildPhases = ( - 82CB35D52E274C6177DAC0DD /* [CP] Check Pods Manifest.lock */, EAEC0BCE1D4E30CE00C908A3 /* Sources */, EAEC0BCF1D4E30CE00C908A3 /* Frameworks */, EAEC0BD01D4E30CE00C908A3 /* Resources */, @@ -244,65 +222,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 82CB35D52E274C6177DAC0DD /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SwaggerClientTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 898E536ECC2C4811DDDF67C1 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SwaggerClient-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 8A7961360961F06AADAF17C9 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/PetstoreClient/PetstoreClient.framework", - "${BUILT_PRODUCTS_DIR}/RxSwift/RxSwift.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PetstoreClient.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxSwift.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ EAEC0BBA1D4E30CE00C908A3 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -458,7 +377,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.3; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 4.2; VALIDATE_PRODUCT = YES; }; @@ -466,11 +386,13 @@ }; EAEC0BDC1D4E30CE00C908A3 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8D99518E8E05FD856A952698 /* Pods-SwaggerClient.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = SwaggerClient/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -480,11 +402,13 @@ }; EAEC0BDD1D4E30CE00C908A3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2DEFA8828BD4E38FA5262F53 /* Pods-SwaggerClient.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = SwaggerClient/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -494,12 +418,15 @@ }; EAEC0BDF1D4E30CE00C908A3 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4EF2021609D112A6F5AE0F55 /* Pods-SwaggerClientTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = SwaggerClientTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -510,12 +437,15 @@ }; EAEC0BE01D4E30CE00C908A3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EFD8AB05F53C74985527D117 /* Pods-SwaggerClientTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = SwaggerClientTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -554,6 +484,13 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCSwiftPackageProductDependency section */ + A5782C6F2664FA2300CAA106 /* PetstoreClient */ = { + isa = XCSwiftPackageProductDependency; + productName = PetstoreClient; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = EAEC0BB61D4E30CE00C908A3 /* Project object */; } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata index 9b3fa18954f..00ec9b53a7f 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata +++ b/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata @@ -2,9 +2,9 @@ + location = "group:.."> + location = "group:SwaggerClient.xcodeproj"> diff --git a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved b/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000000..231d8536967 --- /dev/null +++ b/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,25 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + }, + { + "package": "RxSwift", + "repositoryURL": "https://github.com/ReactiveX/RxSwift.git", + "state": { + "branch": null, + "revision": "7c17a6ccca06b5c107cfa4284e634562ddaf5951", + "version": "6.2.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift b/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift index fb68168b697..db7609caf07 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift @@ -62,7 +62,7 @@ class PetAPITests: XCTestCase { expectation.fulfill() }, onError: { _ in XCTFail("error getting pet") - }).disposed(by: disposeBag) + }).disposed(by: disposeBag) self.waitForExpectations(timeout: testTimeout, handler: nil) } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Cartfile b/samples/client/petstore/swift5/urlsessionLibrary/Cartfile index 84aaa61ef2d..843f7adc779 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Cartfile +++ b/samples/client/petstore/swift5/urlsessionLibrary/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.4.0 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Package.resolved b/samples/client/petstore/swift5/urlsessionLibrary/Package.resolved new file mode 100644 index 00000000000..d384b276b4b --- /dev/null +++ b/samples/client/petstore/swift5/urlsessionLibrary/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Package.swift b/samples/client/petstore/swift5/urlsessionLibrary/Package.swift index 99e2642257a..eea99ce549e 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Package.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/urlsessionLibrary/PetstoreClient.podspec b/samples/client/petstore/swift5/urlsessionLibrary/PetstoreClient.podspec index 66ef37061f8..350282d85ae 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/urlsessionLibrary/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'Sources/PetstoreClient/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Extensions.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Extensions.swift index 11e807937bd..e23035dde30 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Extensions.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Extensions.swift @@ -186,46 +186,3 @@ extension HTTPURLResponse { return Array(200 ..< 300).contains(statusCode) } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif diff --git a/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/Podfile b/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/Podfile deleted file mode 100644 index 77432f9eee9..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/Podfile +++ /dev/null @@ -1,13 +0,0 @@ -platform :ios, '9.0' - -source 'https://cdn.cocoapods.org/' - -use_frameworks! - -target 'SwaggerClient' do - pod "PetstoreClient", :path => "../" - - target 'SwaggerClientTests' do - inherit! :search_paths - end -end diff --git a/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/Podfile.lock b/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/Podfile.lock deleted file mode 100644 index a621fdeec88..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/Podfile.lock +++ /dev/null @@ -1,16 +0,0 @@ -PODS: - - PetstoreClient (1.0.0) - -DEPENDENCIES: - - PetstoreClient (from `../`) - -EXTERNAL SOURCES: - PetstoreClient: - :path: "../" - -SPEC CHECKSUMS: - PetstoreClient: b26b235a3ece06dbf1da99dc67e48aa201659f21 - -PODFILE CHECKSUM: 509bec696cc1d8641751b52e4fe4bef04ac4542c - -COCOAPODS: 1.9.0 diff --git a/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj index 9c371f929db..aab810debd0 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj +++ b/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj @@ -3,12 +3,11 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ 1A501F48219C3DC600F372F6 /* DateFormatTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A501F47219C3DC600F372F6 /* DateFormatTests.swift */; }; - 23B2E76564651097BE2FE501 /* Pods_SwaggerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F98CC8B18E5FA9213F6A68D /* Pods_SwaggerClient.framework */; }; 6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */; }; 6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB961C692C6300B96B06 /* ViewController.swift */; }; 6D4EFB9A1C692C6300B96B06 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB981C692C6300B96B06 /* Main.storyboard */; }; @@ -18,9 +17,9 @@ 6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */; }; 6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */; }; A5465867259E09C600C3929B /* BearerDecodableRequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5465866259E09C600C3929B /* BearerDecodableRequestBuilder.swift */; }; + A5782C772664FBA800CAA106 /* PetstoreClient in Frameworks */ = {isa = PBXBuildFile; productRef = A5782C762664FBA800CAA106 /* PetstoreClient */; }; A5EA12642419439700E30FC3 /* FileUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA12622419439700E30FC3 /* FileUtils.swift */; }; A5EA12652419439700E30FC3 /* UIImage+Extras.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5EA12632419439700E30FC3 /* UIImage+Extras.swift */; }; - FB5CCC7EFA680BB2746B695B /* Pods_SwaggerClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83FDC034BBA2A07AE9975250 /* Pods_SwaggerClientTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -34,7 +33,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 081E9B893DEB1589CB807EA7 /* Pods-SwaggerClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig"; sourceTree = ""; }; 1A501F47219C3DC600F372F6 /* DateFormatTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateFormatTests.swift; sourceTree = ""; }; 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient.app; sourceTree = BUILT_PRODUCTS_DIR; }; 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -48,15 +46,9 @@ 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = ""; }; 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = ""; }; 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = ""; }; - 7F98CC8B18E5FA9213F6A68D /* Pods_SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 83FDC034BBA2A07AE9975250 /* Pods_SwaggerClientTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClientTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A5465866259E09C600C3929B /* BearerDecodableRequestBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BearerDecodableRequestBuilder.swift; sourceTree = ""; }; A5EA12622419439700E30FC3 /* FileUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileUtils.swift; sourceTree = ""; }; A5EA12632419439700E30FC3 /* UIImage+Extras.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+Extras.swift"; sourceTree = ""; }; - ACB80AC61FA8D8916D4559AA /* Pods-SwaggerClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig"; sourceTree = ""; }; - C07EC0A94AA0F86D60668B32 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E43FC34A9681D65ED44EE914 /* Pods-SwaggerClientTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig"; sourceTree = ""; }; - ED8576754DBB828CAE63EA87 /* Pods-SwaggerClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -64,7 +56,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 23B2E76564651097BE2FE501 /* Pods_SwaggerClient.framework in Frameworks */, + A5782C772664FBA800CAA106 /* PetstoreClient in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -72,30 +64,15 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FB5CCC7EFA680BB2746B695B /* Pods_SwaggerClientTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 203D4495376E4EB72474B091 /* Pods */ = { - isa = PBXGroup; - children = ( - 081E9B893DEB1589CB807EA7 /* Pods-SwaggerClient.debug.xcconfig */, - ACB80AC61FA8D8916D4559AA /* Pods-SwaggerClient.release.xcconfig */, - E43FC34A9681D65ED44EE914 /* Pods-SwaggerClientTests.debug.xcconfig */, - ED8576754DBB828CAE63EA87 /* Pods-SwaggerClientTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; 3FABC56EC0BA84CBF4F99564 /* Frameworks */ = { isa = PBXGroup; children = ( - C07EC0A94AA0F86D60668B32 /* Pods.framework */, - 7F98CC8B18E5FA9213F6A68D /* Pods_SwaggerClient.framework */, - 83FDC034BBA2A07AE9975250 /* Pods_SwaggerClientTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -107,7 +84,6 @@ 6D4EFBA81C692C6300B96B06 /* SwaggerClientTests */, 6D4EFB921C692C6300B96B06 /* Products */, 3FABC56EC0BA84CBF4F99564 /* Frameworks */, - 203D4495376E4EB72474B091 /* Pods */, ); sourceTree = ""; }; @@ -155,17 +131,18 @@ isa = PBXNativeTarget; buildConfigurationList = 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */; buildPhases = ( - 5BC9214E8D9BA5A427A3775B /* [CP] Check Pods Manifest.lock */, 6D4EFB8D1C692C6300B96B06 /* Sources */, 6D4EFB8E1C692C6300B96B06 /* Frameworks */, 6D4EFB8F1C692C6300B96B06 /* Resources */, - FDCA0F14611FE114BFEBA8BB /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( ); name = SwaggerClient; + packageProductDependencies = ( + A5782C762664FBA800CAA106 /* PetstoreClient */, + ); productName = SwaggerClient; productReference = 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */; productType = "com.apple.product-type.application"; @@ -174,7 +151,6 @@ isa = PBXNativeTarget; buildConfigurationList = 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */; buildPhases = ( - EEDC5E683F9569976B7C1192 /* [CP] Check Pods Manifest.lock */, 6D4EFBA11C692C6300B96B06 /* Sources */, 6D4EFBA21C692C6300B96B06 /* Frameworks */, 6D4EFBA31C692C6300B96B06 /* Resources */, @@ -249,71 +225,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 5BC9214E8D9BA5A427A3775B /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SwaggerClient-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - EEDC5E683F9569976B7C1192 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-SwaggerClientTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - FDCA0F14611FE114BFEBA8BB /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/PetstoreClient/PetstoreClient.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PetstoreClient.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ 6D4EFB8D1C692C6300B96B06 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -478,11 +389,13 @@ }; 6D4EFBAF1C692C6300B96B06 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 081E9B893DEB1589CB807EA7 /* Pods-SwaggerClient.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = SwaggerClient/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -491,11 +404,13 @@ }; 6D4EFBB01C692C6300B96B06 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ACB80AC61FA8D8916D4559AA /* Pods-SwaggerClient.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = SwaggerClient/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -504,11 +419,14 @@ }; 6D4EFBB21C692C6300B96B06 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E43FC34A9681D65ED44EE914 /* Pods-SwaggerClientTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; INFOPLIST_FILE = SwaggerClientTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -518,11 +436,14 @@ }; 6D4EFBB31C692C6300B96B06 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ED8576754DBB828CAE63EA87 /* Pods-SwaggerClientTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; INFOPLIST_FILE = SwaggerClientTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -561,6 +482,13 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCSwiftPackageProductDependency section */ + A5782C762664FBA800CAA106 /* PetstoreClient */ = { + isa = XCSwiftPackageProductDependency; + productName = PetstoreClient; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 6D4EFB891C692C6300B96B06 /* Project object */; } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata index 9b3fa18954f..00ec9b53a7f 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata +++ b/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata @@ -2,9 +2,9 @@ + location = "group:.."> + location = "group:SwaggerClient.xcodeproj"> diff --git a/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved b/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000000..d384b276b4b --- /dev/null +++ b/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/SwaggerClient.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/x-swift-hashable/Cartfile b/samples/client/petstore/swift5/x-swift-hashable/Cartfile index 84aaa61ef2d..843f7adc779 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/Cartfile +++ b/samples/client/petstore/swift5/x-swift-hashable/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.4.0 +github "Flight-School/AnyCodable" ~> 0.6.0 diff --git a/samples/client/petstore/swift5/x-swift-hashable/Package.swift b/samples/client/petstore/swift5/x-swift-hashable/Package.swift index b724838fe8d..5cde507bdcf 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/Package.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.4.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient.podspec b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient.podspec index de06558efbd..60f05891b24 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.4.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' end diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Extensions.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Extensions.swift index 11e807937bd..e23035dde30 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Extensions.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Extensions.swift @@ -186,46 +186,3 @@ extension HTTPURLResponse { return Array(200 ..< 300).contains(statusCode) } } - -#if canImport(AnyCodable) -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} -#endif From 463ae10c4a52622bdb62f1bc247fa541ccad2843 Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Tue, 1 Jun 2021 03:09:48 +0100 Subject: [PATCH 072/192] [kotlin][client] update dependencies (#9629) * [kotlin][client] update dependencies * [kotlin][client] update sample projects * [kotlin][client] fix update dependencies --- .../kotlin-client/build.gradle.mustache | 62 +++++++++---------- .../auth/OAuthOkHttpClient.kt.mustache | 8 +-- .../client/petstore/kotlin-gson/build.gradle | 10 +-- .../petstore/kotlin-jackson/build.gradle | 14 ++--- .../kotlin-json-request-string/build.gradle | 12 ++-- .../build.gradle | 10 +-- .../kotlin-moshi-codegen/build.gradle | 12 ++-- .../petstore/kotlin-nonpublic/build.gradle | 12 ++-- .../petstore/kotlin-nullable/build.gradle | 12 ++-- .../petstore/kotlin-okhttp3/build.gradle | 12 ++-- .../build.gradle | 20 +++--- .../client/auth/OAuthOkHttpClient.kt | 8 +-- .../kotlin-retrofit2-rx3/build.gradle | 28 ++++----- .../client/auth/OAuthOkHttpClient.kt | 8 +-- .../petstore/kotlin-retrofit2/build.gradle | 22 +++---- .../client/auth/OAuthOkHttpClient.kt | 8 +-- .../petstore/kotlin-string/build.gradle | 12 ++-- .../petstore/kotlin-threetenbp/build.gradle | 14 ++--- .../kotlin-uppercase-enum/build.gradle | 12 ++-- samples/client/petstore/kotlin/build.gradle | 12 ++-- 20 files changed, 154 insertions(+), 154 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache index 18f64464c8e..c5d0f13b5e1 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache @@ -7,18 +7,18 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' {{#jvm-retrofit2}} - ext.retrofitVersion = '2.7.2' + ext.retrofitVersion = '2.9.0' {{/jvm-retrofit2}} {{#useRxJava}} ext.rxJavaVersion = '1.3.8' {{/useRxJava}} {{#useRxJava2}} - ext.rxJava2Version = '2.2.20' + ext.rxJava2Version = '2.2.21' {{/useRxJava2}} {{#useRxJava3}} - ext.rxJava3Version = '3.0.10' + ext.rxJava3Version = '3.0.12' {{/useRxJava3}} repositories { @@ -52,67 +52,67 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" {{#moshi}} {{^moshiCodeGen}} - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.squareup.moshi:moshi-kotlin:1.11.0" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.squareup.moshi:moshi-kotlin:1.12.0" {{/moshiCodeGen}} {{#moshiCodeGen}} - compile "com.squareup.moshi:moshi:1.11.0" - kapt "com.squareup.moshi:moshi-kotlin-codegen:1.11.0" + implementation "com.squareup.moshi:moshi:1.12.0" + kapt "com.squareup.moshi:moshi-kotlin-codegen:1.12.0" {{/moshiCodeGen}} {{/moshi}} {{#gson}} - compile "com.google.code.gson:gson:2.8.6" + implementation "com.google.code.gson:gson:2.8.7" {{/gson}} {{#jackson}} - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.1" - compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.1" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.3" + implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.3" {{/jackson}} {{#kotlinx_serialization}} - compile "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1" {{/kotlinx_serialization}} {{#jvm-okhttp3}} - compile "com.squareup.okhttp3:okhttp:3.12.13" + implementation "com.squareup.okhttp3:okhttp:3.12.13" {{/jvm-okhttp3}} {{#jvm-okhttp4}} - compile "com.squareup.okhttp3:okhttp:4.9.0" + implementation "com.squareup.okhttp3:okhttp:4.9.1" {{/jvm-okhttp4}} {{#threetenbp}} - compile "org.threeten:threetenbp:1.5.0" + implementation "org.threeten:threetenbp:1.5.1" {{/threetenbp}} {{#jvm-retrofit2}} {{#hasOAuthMethods}} - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" + implementation "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.2" {{/hasOAuthMethods}} - compile "com.squareup.okhttp3:logging-interceptor:4.9.0" + implementation "com.squareup.okhttp3:logging-interceptor:4.9.1" {{#useRxJava}} - compile "io.reactivex:rxjava:$rxJavaVersion" - compile "com.squareup.retrofit2:adapter-rxjava:$retrofitVersion" + implementation "io.reactivex:rxjava:$rxJavaVersion" + implementation "com.squareup.retrofit2:adapter-rxjava:$retrofitVersion" {{/useRxJava}} {{#useRxJava2}} - compile "io.reactivex.rxjava2:rxjava:$rxJava2Version" - compile "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion" + implementation "io.reactivex.rxjava2:rxjava:$rxJava2Version" + implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion" {{/useRxJava2}} {{#useRxJava3}} - compile "io.reactivex.rxjava3:rxjava:$rxJava3Version" - compile "com.squareup.retrofit2:adapter-rxjava3:2.9.0" + implementation "io.reactivex.rxjava3:rxjava:$rxJava3Version" + implementation "com.squareup.retrofit2:adapter-rxjava3:2.9.0" {{/useRxJava3}} - compile "com.squareup.retrofit2:retrofit:$retrofitVersion" + implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" {{#gson}} - compile "com.squareup.retrofit2:converter-gson:$retrofitVersion" + implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion" {{/gson}} {{#moshi}} - compile "com.squareup.retrofit2:converter-moshi:$retrofitVersion" + implementation "com.squareup.retrofit2:converter-moshi:$retrofitVersion" {{/moshi}} {{#kotlinx_serialization}} - compile "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0" + implementation "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0" {{/kotlinx_serialization}} - compile "com.squareup.retrofit2:converter-scalars:$retrofitVersion" + implementation "com.squareup.retrofit2:converter-scalars:$retrofitVersion" {{/jvm-retrofit2}} - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } {{#kotlinx_serialization}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthOkHttpClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthOkHttpClient.kt.mustache index 106b0581994..5c30002e94b 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthOkHttpClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/auth/OAuthOkHttpClient.kt.mustache @@ -13,14 +13,13 @@ import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody class OAuthOkHttpClient( - private var client: OkHttpClient + private var client: OkHttpClient = OkHttpClient() ) : HttpClient { - constructor() : this(OkHttpClient()) - @Throws(OAuthSystemException::class, OAuthProblemException::class) override fun execute( request: OAuthClientRequest, @@ -39,7 +38,7 @@ class OAuthOkHttpClient( } } - val body: RequestBody? = if (request.body != null) RequestBody.create(mediaType, request.body) else null + val body: RequestBody? = if (request.body != null) request.body.toRequestBody(mediaType) else null requestBuilder.method(requestMethod, body) try { @@ -48,6 +47,7 @@ class OAuthOkHttpClient( response.body?.string(), response.body?.contentType()?.toString(), response.code, + response.headers.toMultimap(), responseClass) } catch (e: IOException) { throw OAuthSystemException(e) diff --git a/samples/client/petstore/kotlin-gson/build.gradle b/samples/client/petstore/kotlin-gson/build.gradle index a99b1cf2af2..5cad8581cb6 100644 --- a/samples/client/petstore/kotlin-gson/build.gradle +++ b/samples/client/petstore/kotlin-gson/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -28,8 +28,8 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "com.google.code.gson:gson:2.8.6" - compile "com.squareup.okhttp3:okhttp:4.9.0" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "com.google.code.gson:gson:2.8.7" + implementation "com.squareup.okhttp3:okhttp:4.9.1" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-jackson/build.gradle b/samples/client/petstore/kotlin-jackson/build.gradle index 0429e1f7c30..5cbe1fb014f 100644 --- a/samples/client/petstore/kotlin-jackson/build.gradle +++ b/samples/client/petstore/kotlin-jackson/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -28,10 +28,10 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.1" - compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.1" - compile "com.squareup.okhttp3:okhttp:4.9.0" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.3" + implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.3" + implementation "com.squareup.okhttp3:okhttp:4.9.1" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-json-request-string/build.gradle b/samples/client/petstore/kotlin-json-request-string/build.gradle index 378951fb75a..189e54f8195 100644 --- a/samples/client/petstore/kotlin-json-request-string/build.gradle +++ b/samples/client/petstore/kotlin-json-request-string/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -29,9 +29,9 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.squareup.moshi:moshi-kotlin:1.11.0" - compile "com.squareup.okhttp3:okhttp:4.9.0" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.squareup.moshi:moshi-kotlin:1.12.0" + implementation "com.squareup.okhttp3:okhttp:4.9.1" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle index a99b1cf2af2..5cad8581cb6 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -28,8 +28,8 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "com.google.code.gson:gson:2.8.6" - compile "com.squareup.okhttp3:okhttp:4.9.0" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "com.google.code.gson:gson:2.8.7" + implementation "com.squareup.okhttp3:okhttp:4.9.1" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-moshi-codegen/build.gradle b/samples/client/petstore/kotlin-moshi-codegen/build.gradle index 7fec302dc5a..ff73803f4b6 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/build.gradle +++ b/samples/client/petstore/kotlin-moshi-codegen/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -29,9 +29,9 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "com.squareup.moshi:moshi:1.11.0" - kapt "com.squareup.moshi:moshi-kotlin-codegen:1.11.0" - compile "com.squareup.okhttp3:okhttp:4.9.0" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "com.squareup.moshi:moshi:1.12.0" + kapt "com.squareup.moshi:moshi-kotlin-codegen:1.12.0" + implementation "com.squareup.okhttp3:okhttp:4.9.1" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-nonpublic/build.gradle b/samples/client/petstore/kotlin-nonpublic/build.gradle index 260bd6bda6e..bb575e6e4bf 100644 --- a/samples/client/petstore/kotlin-nonpublic/build.gradle +++ b/samples/client/petstore/kotlin-nonpublic/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -28,9 +28,9 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.squareup.moshi:moshi-kotlin:1.11.0" - compile "com.squareup.okhttp3:okhttp:4.9.0" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.squareup.moshi:moshi-kotlin:1.12.0" + implementation "com.squareup.okhttp3:okhttp:4.9.1" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-nullable/build.gradle b/samples/client/petstore/kotlin-nullable/build.gradle index 260bd6bda6e..bb575e6e4bf 100644 --- a/samples/client/petstore/kotlin-nullable/build.gradle +++ b/samples/client/petstore/kotlin-nullable/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -28,9 +28,9 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.squareup.moshi:moshi-kotlin:1.11.0" - compile "com.squareup.okhttp3:okhttp:4.9.0" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.squareup.moshi:moshi-kotlin:1.12.0" + implementation "com.squareup.okhttp3:okhttp:4.9.1" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-okhttp3/build.gradle b/samples/client/petstore/kotlin-okhttp3/build.gradle index e872269b3fb..4d9f2f630d4 100644 --- a/samples/client/petstore/kotlin-okhttp3/build.gradle +++ b/samples/client/petstore/kotlin-okhttp3/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -28,9 +28,9 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.squareup.moshi:moshi-kotlin:1.11.0" - compile "com.squareup.okhttp3:okhttp:3.12.13" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.squareup.moshi:moshi-kotlin:1.12.0" + implementation "com.squareup.okhttp3:okhttp:3.12.13" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle index f7a6d02171e..60257e31601 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/build.gradle @@ -7,8 +7,8 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' - ext.retrofitVersion = '2.7.2' + ext.kotlin_version = '1.5.10' + ext.retrofitVersion = '2.9.0' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -31,14 +31,14 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" - compile "com.squareup.okhttp3:logging-interceptor:4.9.0" - compile "com.squareup.retrofit2:retrofit:$retrofitVersion" - compile "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0" - compile "com.squareup.retrofit2:converter-scalars:$retrofitVersion" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1" + implementation "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.2" + implementation "com.squareup.okhttp3:logging-interceptor:4.9.1" + implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" + implementation "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0" + implementation "com.squareup.retrofit2:converter-scalars:$retrofitVersion" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt index 93adbda3fc9..aa70ca9d2f1 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt @@ -13,14 +13,13 @@ import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody class OAuthOkHttpClient( - private var client: OkHttpClient + private var client: OkHttpClient = OkHttpClient() ) : HttpClient { - constructor() : this(OkHttpClient()) - @Throws(OAuthSystemException::class, OAuthProblemException::class) override fun execute( request: OAuthClientRequest, @@ -39,7 +38,7 @@ class OAuthOkHttpClient( } } - val body: RequestBody? = if (request.body != null) RequestBody.create(mediaType, request.body) else null + val body: RequestBody? = if (request.body != null) request.body.toRequestBody(mediaType) else null requestBuilder.method(requestMethod, body) try { @@ -48,6 +47,7 @@ class OAuthOkHttpClient( response.body?.string(), response.body?.contentType()?.toString(), response.code, + response.headers.toMultimap(), responseClass) } catch (e: IOException) { throw OAuthSystemException(e) diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle b/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle index 3ddd8d97e8f..2f5e94a4fcd 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle +++ b/samples/client/petstore/kotlin-retrofit2-rx3/build.gradle @@ -7,9 +7,9 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' - ext.retrofitVersion = '2.7.2' - ext.rxJava3Version = '3.0.10' + ext.kotlin_version = '1.5.10' + ext.retrofitVersion = '2.9.0' + ext.rxJava3Version = '3.0.12' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -30,15 +30,15 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.squareup.moshi:moshi-kotlin:1.11.0" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" - compile "com.squareup.okhttp3:logging-interceptor:4.9.0" - compile "io.reactivex.rxjava3:rxjava:$rxJava3Version" - compile "com.squareup.retrofit2:adapter-rxjava3:2.9.0" - compile "com.squareup.retrofit2:retrofit:$retrofitVersion" - compile "com.squareup.retrofit2:converter-moshi:$retrofitVersion" - compile "com.squareup.retrofit2:converter-scalars:$retrofitVersion" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.squareup.moshi:moshi-kotlin:1.12.0" + implementation "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.2" + implementation "com.squareup.okhttp3:logging-interceptor:4.9.1" + implementation "io.reactivex.rxjava3:rxjava:$rxJava3Version" + implementation "com.squareup.retrofit2:adapter-rxjava3:2.9.0" + implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" + implementation "com.squareup.retrofit2:converter-moshi:$retrofitVersion" + implementation "com.squareup.retrofit2:converter-scalars:$retrofitVersion" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt index 93adbda3fc9..aa70ca9d2f1 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt +++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt @@ -13,14 +13,13 @@ import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody class OAuthOkHttpClient( - private var client: OkHttpClient + private var client: OkHttpClient = OkHttpClient() ) : HttpClient { - constructor() : this(OkHttpClient()) - @Throws(OAuthSystemException::class, OAuthProblemException::class) override fun execute( request: OAuthClientRequest, @@ -39,7 +38,7 @@ class OAuthOkHttpClient( } } - val body: RequestBody? = if (request.body != null) RequestBody.create(mediaType, request.body) else null + val body: RequestBody? = if (request.body != null) request.body.toRequestBody(mediaType) else null requestBuilder.method(requestMethod, body) try { @@ -48,6 +47,7 @@ class OAuthOkHttpClient( response.body?.string(), response.body?.contentType()?.toString(), response.code, + response.headers.toMultimap(), responseClass) } catch (e: IOException) { throw OAuthSystemException(e) diff --git a/samples/client/petstore/kotlin-retrofit2/build.gradle b/samples/client/petstore/kotlin-retrofit2/build.gradle index 6674970e550..ec9a8e9ac24 100644 --- a/samples/client/petstore/kotlin-retrofit2/build.gradle +++ b/samples/client/petstore/kotlin-retrofit2/build.gradle @@ -7,8 +7,8 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' - ext.retrofitVersion = '2.7.2' + ext.kotlin_version = '1.5.10' + ext.retrofitVersion = '2.9.0' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -29,13 +29,13 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.squareup.moshi:moshi-kotlin:1.11.0" - compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.0" - compile "com.squareup.okhttp3:logging-interceptor:4.9.0" - compile "com.squareup.retrofit2:retrofit:$retrofitVersion" - compile "com.squareup.retrofit2:converter-moshi:$retrofitVersion" - compile "com.squareup.retrofit2:converter-scalars:$retrofitVersion" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.squareup.moshi:moshi-kotlin:1.12.0" + implementation "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.2" + implementation "com.squareup.okhttp3:logging-interceptor:4.9.1" + implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" + implementation "com.squareup.retrofit2:converter-moshi:$retrofitVersion" + implementation "com.squareup.retrofit2:converter-scalars:$retrofitVersion" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt index 93adbda3fc9..aa70ca9d2f1 100644 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt +++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/auth/OAuthOkHttpClient.kt @@ -13,14 +13,13 @@ import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody class OAuthOkHttpClient( - private var client: OkHttpClient + private var client: OkHttpClient = OkHttpClient() ) : HttpClient { - constructor() : this(OkHttpClient()) - @Throws(OAuthSystemException::class, OAuthProblemException::class) override fun execute( request: OAuthClientRequest, @@ -39,7 +38,7 @@ class OAuthOkHttpClient( } } - val body: RequestBody? = if (request.body != null) RequestBody.create(mediaType, request.body) else null + val body: RequestBody? = if (request.body != null) request.body.toRequestBody(mediaType) else null requestBuilder.method(requestMethod, body) try { @@ -48,6 +47,7 @@ class OAuthOkHttpClient( response.body?.string(), response.body?.contentType()?.toString(), response.code, + response.headers.toMultimap(), responseClass) } catch (e: IOException) { throw OAuthSystemException(e) diff --git a/samples/client/petstore/kotlin-string/build.gradle b/samples/client/petstore/kotlin-string/build.gradle index 260bd6bda6e..bb575e6e4bf 100644 --- a/samples/client/petstore/kotlin-string/build.gradle +++ b/samples/client/petstore/kotlin-string/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -28,9 +28,9 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.squareup.moshi:moshi-kotlin:1.11.0" - compile "com.squareup.okhttp3:okhttp:4.9.0" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.squareup.moshi:moshi-kotlin:1.12.0" + implementation "com.squareup.okhttp3:okhttp:4.9.1" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-threetenbp/build.gradle b/samples/client/petstore/kotlin-threetenbp/build.gradle index 1d988072386..b4e0d0acc7a 100644 --- a/samples/client/petstore/kotlin-threetenbp/build.gradle +++ b/samples/client/petstore/kotlin-threetenbp/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -28,10 +28,10 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.squareup.moshi:moshi-kotlin:1.11.0" - compile "com.squareup.okhttp3:okhttp:4.9.0" - compile "org.threeten:threetenbp:1.5.0" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.squareup.moshi:moshi-kotlin:1.12.0" + implementation "com.squareup.okhttp3:okhttp:4.9.1" + implementation "org.threeten:threetenbp:1.5.1" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin-uppercase-enum/build.gradle b/samples/client/petstore/kotlin-uppercase-enum/build.gradle index 260bd6bda6e..bb575e6e4bf 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/build.gradle +++ b/samples/client/petstore/kotlin-uppercase-enum/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -28,9 +28,9 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.squareup.moshi:moshi-kotlin:1.11.0" - compile "com.squareup.okhttp3:okhttp:4.9.0" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.squareup.moshi:moshi-kotlin:1.12.0" + implementation "com.squareup.okhttp3:okhttp:4.9.1" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } diff --git a/samples/client/petstore/kotlin/build.gradle b/samples/client/petstore/kotlin/build.gradle index 260bd6bda6e..bb575e6e4bf 100644 --- a/samples/client/petstore/kotlin/build.gradle +++ b/samples/client/petstore/kotlin/build.gradle @@ -7,7 +7,7 @@ wrapper { } buildscript { - ext.kotlin_version = '1.5.0' + ext.kotlin_version = '1.5.10' repositories { maven { url "https://repo1.maven.org/maven2" } @@ -28,9 +28,9 @@ test { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile "com.squareup.moshi:moshi-kotlin:1.11.0" - compile "com.squareup.okhttp3:okhttp:4.9.0" - testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" + implementation "com.squareup.moshi:moshi-kotlin:1.12.0" + implementation "com.squareup.okhttp3:okhttp:4.9.1" + testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2" } From ae0cce0481aa5850a363d456e85dc1c996737777 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 1 Jun 2021 11:26:15 +0800 Subject: [PATCH 073/192] add sponsor message to python fastapi (#9637) --- .../languages/PythonFastAPIServerCodegen.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java index f973a6f2609..5cf315ab135 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java @@ -275,4 +275,16 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { public String modelFileFolder() { return outputFolder + File.separator + SRC_DIR + File.separator + modelPackage().replace('.', File.separatorChar); } + + @Override + public void postProcess() { + System.out.println("################################################################################"); + System.out.println("# Thanks for using OpenAPI Generator. #"); + System.out.println("# Please consider donation to help us maintain this project \uD83D\uDE4F #"); + System.out.println("# https://opencollective.com/openapi_generator/donate #"); + System.out.println("# #"); + System.out.println("# This generator's contributed by Nikita Vakula (https://github.com/krjakbrjak)#"); + System.out.println("# Please support his work directly via https://paypal.me/krjakbrjaki \uD83D\uDE4F #"); + System.out.println("################################################################################"); + } } From 9bce71656c37e5968c33258f0d3a69e4882135a3 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Tue, 1 Jun 2021 12:45:01 -0400 Subject: [PATCH 074/192] Swift5 namespace changes (#9624) * [swift5] Rename the API class to {{projectName}} Instead of {{projectName}}API. This removes some unnecessary naming complexity. * [swift5] Define models and Configuration classes under namespace When swiftUseApiNamespace is set, API classes get defined under the projectName namespace. This does the same for models and the Configuration class. Plus adding a deprecation warning when using the un-namespaced variants. * [swift5] Use CodingKeys in model decoder Fixes: 0f5e7d1e3cb9 ("Swift5 models improvements (#9205)") * [swift5] Add swiftUseApiNamespace to urlsessionLibrary config * Update samples * Try to reduce model changes Co-authored-by: Bruno Coelho <4brunu@gmail.com> --- bin/configs/swift5-urlsessionLibrary.yaml | 1 + .../languages/Swift5ClientCodegen.java | 2 +- .../src/main/resources/swift5/APIs.mustache | 11 +- .../resources/swift5/Configuration.mustache | 9 + .../src/main/resources/swift5/api.mustache | 16 +- .../AlamofireImplementations.mustache | 2 +- .../URLSessionImplementations.mustache | 4 +- .../src/main/resources/swift5/model.mustache | 10 + .../resources/swift5/modelObject.mustache | 7 +- .../Classes/OpenAPIs/APIs.swift | 11 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 6 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 72 +- .../APIs/FakeClassnameTags123API.swift | 6 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 54 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 24 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 48 +- .../OpenAPIs/AlamofireImplementations.swift | 2 +- .../OpenAPIs/Models/StringBooleanMap.swift | 5 +- .../Classes/OpenAPIs/APIs.swift | 11 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 6 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 72 +- .../APIs/FakeClassnameTags123API.swift | 6 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 54 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 24 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 48 +- .../OpenAPIs/Models/StringBooleanMap.swift | 5 +- .../OpenAPIs/URLSessionImplementations.swift | 4 +- .../Classes/OpenAPIs/APIs.swift | 11 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 6 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 84 +-- .../APIs/FakeClassnameTags123API.swift | 6 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 54 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 24 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 48 +- .../Models/AdditionalPropertiesAnyType.swift | 7 +- .../Models/AdditionalPropertiesArray.swift | 7 +- .../Models/AdditionalPropertiesBoolean.swift | 7 +- .../Models/AdditionalPropertiesInteger.swift | 7 +- .../Models/AdditionalPropertiesNumber.swift | 7 +- .../Models/AdditionalPropertiesObject.swift | 7 +- .../Models/AdditionalPropertiesString.swift | 7 +- .../OpenAPIs/Models/StringBooleanMap.swift | 5 +- .../OpenAPIs/URLSessionImplementations.swift | 4 +- .../Classes/OpenAPIs/APIs.swift | 11 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 48 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 24 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 48 +- .../OpenAPIs/URLSessionImplementations.swift | 4 +- .../Classes/OpenAPIs/APIs.swift | 11 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 6 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 72 +- .../APIs/FakeClassnameTags123API.swift | 6 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 54 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 24 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 48 +- .../OpenAPIs/Models/StringBooleanMap.swift | 5 +- .../OpenAPIs/URLSessionImplementations.swift | 4 +- .../Classes/OpenAPIs/APIs.swift | 11 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 6 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 72 +- .../APIs/FakeClassnameTags123API.swift | 6 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 54 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 24 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 48 +- .../OpenAPIs/Models/StringBooleanMap.swift | 5 +- .../OpenAPIs/URLSessionImplementations.swift | 4 +- .../Classes/OpenAPIs/APIs.swift | 11 +- .../Classes/OpenAPIs/APIs/DefaultAPI.swift | 6 +- .../OpenAPIs/URLSessionImplementations.swift | 4 +- .../Classes/OpenAPIs/APIs.swift | 11 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 6 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 72 +- .../APIs/FakeClassnameTags123API.swift | 6 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 54 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 24 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 48 +- .../OpenAPIs/Models/StringBooleanMap.swift | 5 +- .../OpenAPIs/URLSessionImplementations.swift | 4 +- .../Classes/OpenAPIs/APIs.swift | 11 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 6 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 72 +- .../APIs/FakeClassnameTags123API.swift | 6 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 54 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 24 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 48 +- .../OpenAPIs/Models/StringBooleanMap.swift | 5 +- .../OpenAPIs/URLSessionImplementations.swift | 4 +- .../Classes/OpenAPIs/APIs.swift | 11 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 6 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 72 +- .../APIs/FakeClassnameTags123API.swift | 6 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 54 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 24 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 48 +- .../OpenAPIs/Models/StringBooleanMap.swift | 5 +- .../OpenAPIs/URLSessionImplementations.swift | 4 +- .../Classes/OpenAPIs/APIs.swift | 11 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 6 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 72 +- .../APIs/FakeClassnameTags123API.swift | 6 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 54 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 24 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 48 +- .../OpenAPIs/URLSessionImplementations.swift | 4 +- .../contents.xcworkspacedata | 7 + .../urlsessionLibrary/Sources/APIHelper.swift | 71 -- .../urlsessionLibrary/Sources/APIs.swift | 62 -- .../Sources/APIs/AnotherFakeAPI.swift | 54 -- .../Sources/APIs/FakeAPI.swift | 684 ------------------ .../APIs/FakeClassnameTags123API.swift | 57 -- .../Sources/APIs/PetAPI.swift | 483 ------------- .../Sources/APIs/StoreAPI.swift | 189 ----- .../Sources/APIs/UserAPI.swift | 366 ---------- .../Sources/CodableHelper.swift | 49 -- .../Sources/Configuration.swift | 14 - .../Sources/Extensions.swift | 227 ------ .../Sources/JSONDataEncoding.swift | 53 -- .../Sources/JSONEncodingHelper.swift | 45 -- .../urlsessionLibrary/Sources/Models.swift | 54 -- .../Models/AdditionalPropertiesClass.swift | 47 -- .../Sources/Models/Animal.swift | 47 -- .../Sources/Models/AnimalFarm.swift | 11 - .../Sources/Models/ApiResponse.swift | 53 -- .../Models/ArrayOfArrayOfNumberOnly.swift | 41 -- .../Sources/Models/ArrayOfNumberOnly.swift | 41 -- .../Sources/Models/ArrayTest.swift | 53 -- .../Sources/Models/Capitalization.swift | 72 -- .../Sources/Models/Cat.swift | 53 -- .../Sources/Models/CatAllOf.swift | 41 -- .../Sources/Models/Category.swift | 47 -- .../Sources/Models/ClassModel.swift | 23 - .../Sources/Models/Client.swift | 41 -- .../Sources/Models/Dog.swift | 53 -- .../Sources/Models/DogAllOf.swift | 41 -- .../Sources/Models/EnumArrays.swift | 55 -- .../Sources/Models/EnumClass.swift | 15 - .../Sources/Models/EnumTest.swift | 83 --- .../Sources/Models/File.swift | 43 -- .../Sources/Models/FileSchemaTestClass.swift | 47 -- .../Sources/Models/FormatTest.swift | 113 --- .../Sources/Models/HasOnlyReadOnly.swift | 47 -- .../Sources/Models/List.swift | 41 -- .../Sources/Models/MapTest.swift | 63 -- ...opertiesAndAdditionalPropertiesClass.swift | 53 -- .../Sources/Models/Model200Response.swift | 26 - .../Sources/Models/Name.swift | 60 -- .../Sources/Models/NumberOnly.swift | 41 -- .../Sources/Models/Order.swift | 77 -- .../Sources/Models/OuterComposite.swift | 53 -- .../Sources/Models/OuterEnum.swift | 15 - .../Sources/Models/Pet.swift | 77 -- .../Sources/Models/ReadOnlyFirst.swift | 47 -- .../Sources/Models/Return.swift | 23 - .../Sources/Models/SpecialModelName.swift | 41 -- .../Sources/Models/StringBooleanMap.swift | 56 -- .../Sources/Models/Tag.swift | 47 -- .../Sources/Models/TypeHolderDefault.swift | 65 -- .../Sources/Models/TypeHolderExample.swift | 65 -- .../Sources/Models/User.swift | 84 --- .../Sources/OpenISO8601DateFormatter.swift | 44 -- .../Sources/PetstoreClient/APIs.swift | 11 +- .../PetstoreClient/APIs/AnotherFakeAPI.swift | 10 +- .../Sources/PetstoreClient/APIs/FakeAPI.swift | 76 +- .../APIs/FakeClassnameTags123API.swift | 10 +- .../Sources/PetstoreClient/APIs/PetAPI.swift | 58 +- .../PetstoreClient/APIs/StoreAPI.swift | 28 +- .../Sources/PetstoreClient/APIs/UserAPI.swift | 52 +- .../PetstoreClient/Configuration.swift | 5 + .../Models/AdditionalPropertiesClass.swift | 6 + .../PetstoreClient/Models/Animal.swift | 6 + .../PetstoreClient/Models/AnimalFarm.swift | 6 + .../PetstoreClient/Models/ApiResponse.swift | 6 + .../Models/ArrayOfArrayOfNumberOnly.swift | 6 + .../Models/ArrayOfNumberOnly.swift | 6 + .../PetstoreClient/Models/ArrayTest.swift | 6 + .../Models/Capitalization.swift | 6 + .../Sources/PetstoreClient/Models/Cat.swift | 6 + .../PetstoreClient/Models/CatAllOf.swift | 6 + .../PetstoreClient/Models/Category.swift | 6 + .../PetstoreClient/Models/ClassModel.swift | 6 + .../PetstoreClient/Models/Client.swift | 6 + .../Sources/PetstoreClient/Models/Dog.swift | 6 + .../PetstoreClient/Models/DogAllOf.swift | 6 + .../PetstoreClient/Models/EnumArrays.swift | 6 + .../PetstoreClient/Models/EnumClass.swift | 6 + .../PetstoreClient/Models/EnumTest.swift | 6 + .../Sources/PetstoreClient/Models/File.swift | 6 + .../Models/FileSchemaTestClass.swift | 6 + .../PetstoreClient/Models/FormatTest.swift | 6 + .../Models/HasOnlyReadOnly.swift | 6 + .../Sources/PetstoreClient/Models/List.swift | 6 + .../PetstoreClient/Models/MapTest.swift | 6 + ...opertiesAndAdditionalPropertiesClass.swift | 6 + .../Models/Model200Response.swift | 6 + .../Sources/PetstoreClient/Models/Name.swift | 6 + .../PetstoreClient/Models/NumberOnly.swift | 6 + .../Sources/PetstoreClient/Models/Order.swift | 6 + .../Models/OuterComposite.swift | 6 + .../PetstoreClient/Models/OuterEnum.swift | 6 + .../Sources/PetstoreClient/Models/Pet.swift | 6 + .../PetstoreClient/Models/ReadOnlyFirst.swift | 6 + .../PetstoreClient/Models/Return.swift | 6 + .../Models/SpecialModelName.swift | 6 + .../Models/StringBooleanMap.swift | 11 +- .../Sources/PetstoreClient/Models/Tag.swift | 6 + .../Models/TypeHolderDefault.swift | 6 + .../Models/TypeHolderExample.swift | 6 + .../Sources/PetstoreClient/Models/User.swift | 6 + .../URLSessionImplementations.swift | 4 +- .../Sources/SynchronizedDictionary.swift | 36 - .../Sources/URLSessionImplementations.swift | 606 ---------------- .../Classes/OpenAPIs/APIs.swift | 11 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 6 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 72 +- .../APIs/FakeClassnameTags123API.swift | 6 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 54 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 24 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 48 +- .../OpenAPIs/Models/StringBooleanMap.swift | 5 +- .../OpenAPIs/URLSessionImplementations.swift | 4 +- 220 files changed, 1717 insertions(+), 6456 deletions(-) create mode 100644 samples/client/petstore/swift5/urlsessionLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/APIHelper.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/AnotherFakeAPI.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/FakeAPI.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/FakeClassnameTags123API.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/PetAPI.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/StoreAPI.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/UserAPI.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/CodableHelper.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Configuration.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Extensions.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/JSONDataEncoding.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/JSONEncodingHelper.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/AdditionalPropertiesClass.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Animal.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/AnimalFarm.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ApiResponse.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ArrayOfArrayOfNumberOnly.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ArrayOfNumberOnly.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ArrayTest.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Capitalization.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Cat.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/CatAllOf.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Category.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ClassModel.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Client.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Dog.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/DogAllOf.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/EnumArrays.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/EnumClass.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/EnumTest.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/File.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/FileSchemaTestClass.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/FormatTest.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/HasOnlyReadOnly.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/List.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/MapTest.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/MixedPropertiesAndAdditionalPropertiesClass.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Model200Response.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Name.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/NumberOnly.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Order.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/OuterComposite.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/OuterEnum.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Pet.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ReadOnlyFirst.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Return.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/SpecialModelName.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/StringBooleanMap.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Tag.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/TypeHolderDefault.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/TypeHolderExample.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/User.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/OpenISO8601DateFormatter.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/SynchronizedDictionary.swift delete mode 100644 samples/client/petstore/swift5/urlsessionLibrary/Sources/URLSessionImplementations.swift diff --git a/bin/configs/swift5-urlsessionLibrary.yaml b/bin/configs/swift5-urlsessionLibrary.yaml index b260611e602..1520a7c1ea9 100644 --- a/bin/configs/swift5-urlsessionLibrary.yaml +++ b/bin/configs/swift5-urlsessionLibrary.yaml @@ -11,3 +11,4 @@ additionalProperties: podHomepage: https://github.com/openapitools/openapi-generator useSPMFileStructure: true useClasses: true + swiftUseApiNamespace: true diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index d44d34ca039..f06bbd057c6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -446,7 +446,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig additionalProperties.put(READONLY_PROPERTIES, readonlyProperties); // Setup swiftUseApiNamespace option, which makes all the API - // classes inner-class of {{projectName}}API + // classes inner-class of {{projectName}} if (additionalProperties.containsKey(SWIFT_USE_API_NAMESPACE)) { setSwiftUseApiNamespace(convertPropertyToBooleanAndWriteBack(SWIFT_USE_API_NAMESPACE)); } diff --git a/modules/openapi-generator/src/main/resources/swift5/APIs.mustache b/modules/openapi-generator/src/main/resources/swift5/APIs.mustache index 42bdf74007f..b05f0630179 100644 --- a/modules/openapi-generator/src/main/resources/swift5/APIs.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/APIs.mustache @@ -6,7 +6,10 @@ import Foundation -{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class {{projectName}}API { +@available(*, deprecated, renamed: "{{projectName}}") +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias {{projectName}}API = {{projectName}} + +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class {{projectName}} { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var basePath = "{{{basePath}}}" {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var credential: URLCredential? {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var customHeaders: [String: String] = [:]{{#useAlamofire}} @@ -33,7 +36,7 @@ import Foundation self.parameters = parameters self.headers = headers - addHeaders({{projectName}}API.customHeaders) + addHeaders({{projectName}}.customHeaders) } {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func addHeaders(_ aHeaders: [String: String]) { @@ -42,7 +45,7 @@ import Foundation } } - {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -52,7 +55,7 @@ import Foundation } {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func addCredential() -> Self { - credential = {{projectName}}API.credential + credential = {{projectName}}.credential return self } } diff --git a/modules/openapi-generator/src/main/resources/swift5/Configuration.mustache b/modules/openapi-generator/src/main/resources/swift5/Configuration.mustache index 78f54279711..a154850602e 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Configuration.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Configuration.mustache @@ -6,9 +6,18 @@ import Foundation +{{#swiftUseApiNamespace}} +@available(*, deprecated, renamed: "{{projectName}}.Configuration") +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias Configuration = {{projectName}}.Configuration + +extension {{projectName}} { +{{/swiftUseApiNamespace}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class Configuration { // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" } +{{#swiftUseApiNamespace}} +} +{{/swiftUseApiNamespace}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/swift5/api.mustache b/modules/openapi-generator/src/main/resources/swift5/api.mustache index ac3b4b3d954..92643fdf268 100644 --- a/modules/openapi-generator/src/main/resources/swift5/api.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/api.mustache @@ -12,7 +12,7 @@ import RxSwift{{/useRxSwift}}{{#useCombine}} import Combine #endif{{/useCombine}}{{#swiftUseApiNamespace}} -extension {{projectName}}API { +extension {{projectName}} { {{/swiftUseApiNamespace}} {{#description}} @@ -49,7 +49,7 @@ extension {{projectName}}API { {{#isDeprecated}} @available(*, deprecated, message: "This operation is deprecated.") {{/isDeprecated}} - {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, completion: @escaping ((_ data: {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}?, _ error: Error?) -> Void)) { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue, completion: @escaping ((_ data: {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}?, _ error: Error?) -> Void)) { {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in switch result { {{#returnType}} @@ -81,7 +81,7 @@ extension {{projectName}}API { {{#isDeprecated}} @available(*, deprecated, message: "This operation is deprecated.") {{/isDeprecated}} - {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}} {{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue) -> Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}} {{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue) -> Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> { let deferred = Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.pending() {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in switch result { @@ -112,7 +112,7 @@ extension {{projectName}}API { {{#isDeprecated}} @available(*, deprecated, message: "This operation is deprecated.") {{/isDeprecated}} - {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue) -> Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue) -> Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> { return Observable.create { observer -> Disposable in {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in switch result { @@ -147,7 +147,7 @@ extension {{projectName}}API { @available(*, deprecated, message: "This operation is deprecated.") {{/isDeprecated}} @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue) -> AnyPublisher<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}, Error> { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue) -> AnyPublisher<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}, Error> { return Future<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}, Error>.init { promise in {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in switch result { @@ -179,7 +179,7 @@ extension {{projectName}}API { {{#isDeprecated}} @available(*, deprecated, message: "This operation is deprecated.") {{/isDeprecated}} - open class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, completion: @escaping ((_ result: Swift.Result<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}, Error>) -> Void)) { + open class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue, completion: @escaping ((_ result: Swift.Result<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}, Error>) -> Void)) { {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in switch result { {{#returnType}} @@ -229,7 +229,7 @@ extension {{projectName}}API { let {{paramName}}PreEscape = "\({{#isEnum}}{{paramName}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}.rawValue{{/isContainer}}{{/isEnum}}{{^isEnum}}APIHelper.mapValueToPathItem({{paramName}}){{/isEnum}})" let {{paramName}}PostEscape = {{paramName}}PreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}} - let URLString = {{projectName}}API.basePath + path + let URLString = {{projectName}}.basePath + path {{#bodyParam}} let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: {{paramName}}) {{/bodyParam}} @@ -264,7 +264,7 @@ extension {{projectName}}API { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.Type = {{projectName}}API.requestBuilderFactory.{{#returnType}}getBuilder(){{/returnType}}{{^returnType}}getNonDecodableBuilder(){{/returnType}} + let requestBuilder: RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.Type = {{projectName}}.requestBuilderFactory.{{#returnType}}getBuilder(){{/returnType}}{{^returnType}}getNonDecodableBuilder(){{/returnType}} return requestBuilder.init(method: "{{httpMethod}}", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache b/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache index b7aac0d8ef1..b336fa9a7a6 100644 --- a/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache @@ -76,7 +76,7 @@ private var managerStore = SynchronizedDictionary, Error>) -> Void) { + override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let managerId = UUID().uuidString // Create a new manager for each request to customize its request header let manager = createSessionManager() diff --git a/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache b/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache index 931de1b954a..d77fead4b31 100644 --- a/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache @@ -93,7 +93,7 @@ private var urlSessionStore = SynchronizedDictionary() return modifiedRequest } - override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ private var urlSessionStore = SynchronizedDictionary() for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in {{projectName}}API.customHeaders { + for (key, value) in {{projectName}}.customHeaders { httpHeaders[key] = value } return httpHeaders diff --git a/modules/openapi-generator/src/main/resources/swift5/model.mustache b/modules/openapi-generator/src/main/resources/swift5/model.mustache index 53892df270e..f9107398cfa 100644 --- a/modules/openapi-generator/src/main/resources/swift5/model.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/model.mustache @@ -9,6 +9,13 @@ import Foundation #if canImport(AnyCodable) import AnyCodable #endif +{{#swiftUseApiNamespace}} + +@available(*, deprecated, renamed: "{{projectName}}.{{classname}}") +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias {{classname}} = {{projectName}}.{{classname}} + +extension {{projectName}} { +{{/swiftUseApiNamespace}} {{#description}} /** {{description}} */{{/description}}{{#isDeprecated}} @@ -17,3 +24,6 @@ import AnyCodable {{> modelArray}}{{/isArray}}{{^isArray}}{{#isEnum}} {{> modelEnum}}{{/isEnum}}{{^isEnum}} {{> modelObject}}{{/isEnum}}{{/isArray}}{{/vendorExtensions.x-is-one-of-interface}}{{/model}}{{/models}} +{{#swiftUseApiNamespace}} +} +{{/swiftUseApiNamespace}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache b/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache index 336ee3467c8..da0d44247fc 100644 --- a/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache @@ -76,16 +76,17 @@ // Decodable protocol methods {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}}{{#objcCompatible}} required{{/objcCompatible}} init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) {{#allVars}} - {{{name}}} = try container.decode{{#required}}{{#isNullable}}IfPresent{{/isNullable}}{{/required}}{{^required}}IfPresent{{/required}}({{{datatypeWithEnum}}}.self, forKey: "{{{baseName}}}") + {{{name}}} = try container.decode{{#required}}{{#isNullable}}IfPresent{{/isNullable}}{{/required}}{{^required}}IfPresent{{/required}}({{{datatypeWithEnum}}}.self, forKey: .{{{name}}}) {{/allVars}} var nonAdditionalPropertyKeys = Set() {{#allVars}} nonAdditionalPropertyKeys.insert("{{{baseName}}}") {{/allVars}} - additionalProperties = try container.decodeMap({{{additionalPropertiesType}}}.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap({{{additionalPropertiesType}}}.self, excludedKeys: nonAdditionalPropertyKeys) }{{/additionalPropertiesType}}{{/generateModelAdditionalProperties}}{{^objcCompatible}}{{#useClasses}}{{#vendorExtensions.x-swift-hashable}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func == (lhs: {{classname}}, rhs: {{classname}}) -> Bool { diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift index c6beeedf9a4..85346c2896e 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -6,7 +6,10 @@ import Foundation -open class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] @@ -30,7 +33,7 @@ open class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } open func addHeaders(_ aHeaders: [String: String]) { @@ -39,7 +42,7 @@ open class RequestBuilder { } } - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } public func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -49,7 +52,7 @@ open class RequestBuilder { } open func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 72b89640eeb..542fb6f69ba 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -15,7 +15,7 @@ open class AnotherFakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -35,7 +35,7 @@ open class AnotherFakeAPI { */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/another-fake/dummy" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ open class AnotherFakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index cf92424d9cc..9b75edc92ee 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -14,7 +14,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { + open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -33,7 +33,7 @@ open class FakeAPI { */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { let path = "/fake/outer/boolean" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -44,7 +44,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -55,7 +55,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -74,7 +74,7 @@ open class FakeAPI { */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { let path = "/fake/outer/composite" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -85,7 +85,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -96,7 +96,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { + open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -115,7 +115,7 @@ open class FakeAPI { */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { let path = "/fake/outer/number" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -126,7 +126,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -137,7 +137,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -156,7 +156,7 @@ open class FakeAPI { */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { let path = "/fake/outer/string" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -167,7 +167,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -178,7 +178,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -197,7 +197,7 @@ open class FakeAPI { */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { let path = "/fake/body-with-file-schema" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -208,7 +208,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -220,7 +220,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -239,7 +239,7 @@ open class FakeAPI { */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { let path = "/fake/body-with-query-params" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) var urlComponents = URLComponents(string: URLString) @@ -253,7 +253,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -265,7 +265,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -285,7 +285,7 @@ open class FakeAPI { */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -296,7 +296,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -321,7 +321,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -357,7 +357,7 @@ open class FakeAPI { */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), @@ -386,7 +386,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -472,7 +472,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -499,7 +499,7 @@ open class FakeAPI { */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), @@ -524,7 +524,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -541,7 +541,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -566,7 +566,7 @@ open class FakeAPI { */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -584,7 +584,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -596,7 +596,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -615,7 +615,7 @@ open class FakeAPI { */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) let urlComponents = URLComponents(string: URLString) @@ -626,7 +626,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -639,7 +639,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -659,7 +659,7 @@ open class FakeAPI { */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { let path = "/fake/jsonFormData" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), @@ -676,7 +676,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index d4d65166496..fd7d845d340 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -15,7 +15,7 @@ open class FakeClassnameTags123API { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -38,7 +38,7 @@ open class FakeClassnameTags123API { */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake_classname_test" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class FakeClassnameTags123API { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index a1fe0d12b1d..d7d5bdfa2ea 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -15,7 +15,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -37,7 +37,7 @@ open class PetAPI { */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -48,7 +48,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -61,7 +61,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -87,7 +87,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -98,7 +98,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -119,7 +119,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -142,7 +142,7 @@ open class PetAPI { */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -156,7 +156,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -169,7 +169,7 @@ open class PetAPI { - parameter completion: completion handler to receive the data and the error objects */ @available(*, deprecated, message: "This operation is deprecated.") - open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -193,7 +193,7 @@ open class PetAPI { @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -207,7 +207,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -219,7 +219,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { + open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -245,7 +245,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -256,7 +256,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -268,7 +268,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -290,7 +290,7 @@ open class PetAPI { */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -301,7 +301,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -315,7 +315,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -342,7 +342,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), @@ -359,7 +359,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -373,7 +373,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -400,7 +400,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), @@ -417,7 +417,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -431,7 +431,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -458,7 +458,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), @@ -475,7 +475,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 501f11f5f21..c80d4286b53 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -15,7 +15,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -38,7 +38,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -60,7 +60,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { + open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -82,7 +82,7 @@ open class StoreAPI { */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -93,7 +93,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -105,7 +105,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -128,7 +128,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -139,7 +139,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -151,7 +151,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -170,7 +170,7 @@ open class StoreAPI { */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -181,7 +181,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 254474014d3..542dc212bd1 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -15,7 +15,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -35,7 +35,7 @@ open class UserAPI { */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { let path = "/user" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -58,7 +58,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -77,7 +77,7 @@ open class UserAPI { */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -88,7 +88,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -100,7 +100,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -119,7 +119,7 @@ open class UserAPI { */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -130,7 +130,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -142,7 +142,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -165,7 +165,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -176,7 +176,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -188,7 +188,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { + open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -210,7 +210,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -221,7 +221,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -234,7 +234,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -255,7 +255,7 @@ open class UserAPI { */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -270,7 +270,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -281,7 +281,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -299,7 +299,7 @@ open class UserAPI { */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -310,7 +310,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -323,7 +323,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -347,7 +347,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -358,7 +358,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift index 8b73fa8aaf6..c5bab793d7b 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift @@ -76,7 +76,7 @@ open class AlamofireRequestBuilder: RequestBuilder { return manager.request(URLString, method: method, parameters: parameters, encoding: encoding, headers: headers) } - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let managerId = UUID().uuidString // Create a new manager for each request to customize its request header let manager = createSessionManager() diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index d3b2bda9b77..f575c9df65c 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -42,9 +42,10 @@ public struct StringBooleanMap: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) var nonAdditionalPropertyKeys = Set() - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift index dbdab491ff7..01bc6ff0d8d 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -6,7 +6,10 @@ import Foundation -open class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] @@ -32,7 +35,7 @@ open class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } open func addHeaders(_ aHeaders: [String: String]) { @@ -41,7 +44,7 @@ open class RequestBuilder { } } - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } public func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -51,7 +54,7 @@ open class RequestBuilder { } open func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 9db7ad8a0d3..f7f14df25d3 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -20,7 +20,7 @@ open class AnotherFakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -43,7 +43,7 @@ open class AnotherFakeAPI { */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/another-fake/dummy" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -54,7 +54,7 @@ open class AnotherFakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 20e0b55d9e8..c2587336354 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -19,7 +19,7 @@ open class FakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -41,7 +41,7 @@ open class FakeAPI { */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { let path = "/fake/outer/boolean" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -52,7 +52,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -65,7 +65,7 @@ open class FakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -87,7 +87,7 @@ open class FakeAPI { */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { let path = "/fake/outer/composite" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -98,7 +98,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -111,7 +111,7 @@ open class FakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -133,7 +133,7 @@ open class FakeAPI { */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { let path = "/fake/outer/number" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -144,7 +144,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -157,7 +157,7 @@ open class FakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -179,7 +179,7 @@ open class FakeAPI { */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { let path = "/fake/outer/string" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -190,7 +190,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -203,7 +203,7 @@ open class FakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -225,7 +225,7 @@ open class FakeAPI { */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { let path = "/fake/body-with-file-schema" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -236,7 +236,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -250,7 +250,7 @@ open class FakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -272,7 +272,7 @@ open class FakeAPI { */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { let path = "/fake/body-with-query-params" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) var urlComponents = URLComponents(string: URLString) @@ -286,7 +286,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -300,7 +300,7 @@ open class FakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -323,7 +323,7 @@ open class FakeAPI { */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -334,7 +334,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -361,7 +361,7 @@ open class FakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in switch result { @@ -400,7 +400,7 @@ open class FakeAPI { */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), @@ -429,7 +429,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -517,7 +517,7 @@ open class FakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in switch result { @@ -547,7 +547,7 @@ open class FakeAPI { */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), @@ -572,7 +572,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -591,7 +591,7 @@ open class FakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in switch result { @@ -619,7 +619,7 @@ open class FakeAPI { */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -637,7 +637,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -651,7 +651,7 @@ open class FakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in switch result { @@ -673,7 +673,7 @@ open class FakeAPI { */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) let urlComponents = URLComponents(string: URLString) @@ -684,7 +684,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -699,7 +699,7 @@ open class FakeAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in switch result { @@ -722,7 +722,7 @@ open class FakeAPI { */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { let path = "/fake/jsonFormData" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), @@ -739,7 +739,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 85eab81386f..094b75647ae 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -20,7 +20,7 @@ open class FakeClassnameTags123API { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -46,7 +46,7 @@ open class FakeClassnameTags123API { */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake_classname_test" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -57,7 +57,7 @@ open class FakeClassnameTags123API { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 10ce86076cf..b1d495832c6 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -20,7 +20,7 @@ open class PetAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -45,7 +45,7 @@ open class PetAPI { */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -56,7 +56,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -71,7 +71,7 @@ open class PetAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in switch result { @@ -100,7 +100,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -111,7 +111,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -134,7 +134,7 @@ open class PetAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher<[Pet], Error> { + open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher<[Pet], Error> { return Future<[Pet], Error>.init { promise in findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in switch result { @@ -160,7 +160,7 @@ open class PetAPI { */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -174,7 +174,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -189,7 +189,7 @@ open class PetAPI { #if canImport(Combine) @available(*, deprecated, message: "This operation is deprecated.") @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher<[Pet], Error> { + open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher<[Pet], Error> { return Future<[Pet], Error>.init { promise in findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in switch result { @@ -216,7 +216,7 @@ open class PetAPI { @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -230,7 +230,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -244,7 +244,7 @@ open class PetAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in switch result { @@ -273,7 +273,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -284,7 +284,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -298,7 +298,7 @@ open class PetAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -323,7 +323,7 @@ open class PetAPI { */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -334,7 +334,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -350,7 +350,7 @@ open class PetAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in switch result { @@ -380,7 +380,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), @@ -397,7 +397,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -413,7 +413,7 @@ open class PetAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in switch result { @@ -443,7 +443,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), @@ -460,7 +460,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -476,7 +476,7 @@ open class PetAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in switch result { @@ -506,7 +506,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), @@ -523,7 +523,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 12a0d5688d5..9e4aa781716 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -20,7 +20,7 @@ open class StoreAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { @@ -46,7 +46,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -57,7 +57,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -70,7 +70,7 @@ open class StoreAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher<[String: Int], Error> { + open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher<[String: Int], Error> { return Future<[String: Int], Error>.init { promise in getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { @@ -95,7 +95,7 @@ open class StoreAPI { */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -106,7 +106,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -120,7 +120,7 @@ open class StoreAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { @@ -146,7 +146,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -157,7 +157,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -171,7 +171,7 @@ open class StoreAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -193,7 +193,7 @@ open class StoreAPI { */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -204,7 +204,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index cbee9448a00..fa260d3e83a 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -20,7 +20,7 @@ open class UserAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -43,7 +43,7 @@ open class UserAPI { */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { let path = "/user" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -54,7 +54,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -68,7 +68,7 @@ open class UserAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -90,7 +90,7 @@ open class UserAPI { */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -101,7 +101,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -115,7 +115,7 @@ open class UserAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -137,7 +137,7 @@ open class UserAPI { */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -148,7 +148,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -162,7 +162,7 @@ open class UserAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { @@ -188,7 +188,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -199,7 +199,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -213,7 +213,7 @@ open class UserAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { @@ -238,7 +238,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -249,7 +249,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -264,7 +264,7 @@ open class UserAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in switch result { @@ -288,7 +288,7 @@ open class UserAPI { */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -303,7 +303,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -316,7 +316,7 @@ open class UserAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { @@ -337,7 +337,7 @@ open class UserAPI { */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -348,7 +348,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -363,7 +363,7 @@ open class UserAPI { */ #if canImport(Combine) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) - open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher { + open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> AnyPublisher { return Future.init { promise in updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -390,7 +390,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -401,7 +401,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index d3b2bda9b77..f575c9df65c 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -42,9 +42,10 @@ public struct StringBooleanMap: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) var nonAdditionalPropertyKeys = Set() - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index fbf069a93c4..774c0427eaa 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -93,7 +93,7 @@ open class URLSessionRequestBuilder: RequestBuilder { return modifiedRequest } - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ open class URLSessionRequestBuilder: RequestBuilder { for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in PetstoreClientAPI.customHeaders { + for (key, value) in PetstoreClient.customHeaders { httpHeaders[key] = value } return httpHeaders diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs.swift index dbdab491ff7..01bc6ff0d8d 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -6,7 +6,10 @@ import Foundation -open class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] @@ -32,7 +35,7 @@ open class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } open func addHeaders(_ aHeaders: [String: String]) { @@ -41,7 +44,7 @@ open class RequestBuilder { } } - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } public func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -51,7 +54,7 @@ open class RequestBuilder { } open func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 72b89640eeb..542fb6f69ba 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -15,7 +15,7 @@ open class AnotherFakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -35,7 +35,7 @@ open class AnotherFakeAPI { */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/another-fake/dummy" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ open class AnotherFakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 6d02c24d05f..eb6d1e67c4f 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -15,7 +15,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createXmlItem(xmlItem: XmlItem, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createXmlItem(xmlItem: XmlItem, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createXmlItemWithRequestBuilder(xmlItem: xmlItem).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -35,7 +35,7 @@ open class FakeAPI { */ open class func createXmlItemWithRequestBuilder(xmlItem: XmlItem) -> RequestBuilder { let path = "/fake/create_xml_item" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: xmlItem) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -57,7 +57,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { + open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -76,7 +76,7 @@ open class FakeAPI { */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { let path = "/fake/outer/boolean" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -87,7 +87,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -98,7 +98,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -117,7 +117,7 @@ open class FakeAPI { */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { let path = "/fake/outer/composite" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -128,7 +128,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -139,7 +139,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { + open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -158,7 +158,7 @@ open class FakeAPI { */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { let path = "/fake/outer/number" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -169,7 +169,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -180,7 +180,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -199,7 +199,7 @@ open class FakeAPI { */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { let path = "/fake/outer/string" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -210,7 +210,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -221,7 +221,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -240,7 +240,7 @@ open class FakeAPI { */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { let path = "/fake/body-with-file-schema" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -251,7 +251,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -263,7 +263,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -282,7 +282,7 @@ open class FakeAPI { */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { let path = "/fake/body-with-query-params" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) var urlComponents = URLComponents(string: URLString) @@ -296,7 +296,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -308,7 +308,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -328,7 +328,7 @@ open class FakeAPI { */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -339,7 +339,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -364,7 +364,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -400,7 +400,7 @@ open class FakeAPI { */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), @@ -429,7 +429,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -515,7 +515,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -542,7 +542,7 @@ open class FakeAPI { */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), @@ -567,7 +567,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -584,7 +584,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -609,7 +609,7 @@ open class FakeAPI { */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -627,7 +627,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -639,7 +639,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -658,7 +658,7 @@ open class FakeAPI { */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) let urlComponents = URLComponents(string: URLString) @@ -669,7 +669,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -682,7 +682,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -702,7 +702,7 @@ open class FakeAPI { */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { let path = "/fake/jsonFormData" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), @@ -719,7 +719,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -734,7 +734,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testQueryParameterCollectionFormat(pipe: [String], ioutil: [String], http: [String], url: [String], context: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testQueryParameterCollectionFormat(pipe: [String], ioutil: [String], http: [String], url: [String], context: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testQueryParameterCollectionFormatWithRequestBuilder(pipe: pipe, ioutil: ioutil, http: http, url: url, context: context).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -757,7 +757,7 @@ open class FakeAPI { */ open class func testQueryParameterCollectionFormatWithRequestBuilder(pipe: [String], ioutil: [String], http: [String], url: [String], context: [String]) -> RequestBuilder { let path = "/fake/test-query-paramters" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -775,7 +775,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index d4d65166496..fd7d845d340 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -15,7 +15,7 @@ open class FakeClassnameTags123API { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -38,7 +38,7 @@ open class FakeClassnameTags123API { */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake_classname_test" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class FakeClassnameTags123API { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 5c220c11bb5..fa8620ba081 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -15,7 +15,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -37,7 +37,7 @@ open class PetAPI { */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -48,7 +48,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -61,7 +61,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -87,7 +87,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -98,7 +98,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -119,7 +119,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -142,7 +142,7 @@ open class PetAPI { */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -156,7 +156,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -169,7 +169,7 @@ open class PetAPI { - parameter completion: completion handler to receive the data and the error objects */ @available(*, deprecated, message: "This operation is deprecated.") - open class func findPetsByTags(tags: Set, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Set?, _ error: Error?) -> Void)) { + open class func findPetsByTags(tags: Set, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Set?, _ error: Error?) -> Void)) { findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -193,7 +193,7 @@ open class PetAPI { @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: Set) -> RequestBuilder> { let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -207,7 +207,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -219,7 +219,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { + open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -245,7 +245,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -256,7 +256,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -268,7 +268,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -290,7 +290,7 @@ open class PetAPI { */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -301,7 +301,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -315,7 +315,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -342,7 +342,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), @@ -359,7 +359,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -373,7 +373,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -400,7 +400,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), @@ -417,7 +417,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -431,7 +431,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -458,7 +458,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), @@ -475,7 +475,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 501f11f5f21..c80d4286b53 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -15,7 +15,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -38,7 +38,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -60,7 +60,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { + open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -82,7 +82,7 @@ open class StoreAPI { */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -93,7 +93,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -105,7 +105,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -128,7 +128,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -139,7 +139,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -151,7 +151,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -170,7 +170,7 @@ open class StoreAPI { */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -181,7 +181,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 254474014d3..542dc212bd1 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -15,7 +15,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -35,7 +35,7 @@ open class UserAPI { */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { let path = "/user" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -58,7 +58,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -77,7 +77,7 @@ open class UserAPI { */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -88,7 +88,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -100,7 +100,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -119,7 +119,7 @@ open class UserAPI { */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -130,7 +130,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -142,7 +142,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -165,7 +165,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -176,7 +176,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -188,7 +188,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { + open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -210,7 +210,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -221,7 +221,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -234,7 +234,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -255,7 +255,7 @@ open class UserAPI { */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -270,7 +270,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -281,7 +281,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -299,7 +299,7 @@ open class UserAPI { */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -310,7 +310,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -323,7 +323,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -347,7 +347,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -358,7 +358,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift index 1ad80b83a3e..96d07d1ef30 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift @@ -49,11 +49,12 @@ public struct AdditionalPropertiesAnyType: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) - name = try container.decodeIfPresent(String.self, forKey: "name") + name = try container.decodeIfPresent(String.self, forKey: .name) var nonAdditionalPropertyKeys = Set() nonAdditionalPropertyKeys.insert("name") - additionalProperties = try container.decodeMap(AnyCodable.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(AnyCodable.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift index 273a9f185e3..106e4dd6de1 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift @@ -49,11 +49,12 @@ public struct AdditionalPropertiesArray: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) - name = try container.decodeIfPresent(String.self, forKey: "name") + name = try container.decodeIfPresent(String.self, forKey: .name) var nonAdditionalPropertyKeys = Set() nonAdditionalPropertyKeys.insert("name") - additionalProperties = try container.decodeMap([AnyCodable].self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap([AnyCodable].self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift index 164ae0e09c0..bfbd7a5f20d 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift @@ -49,11 +49,12 @@ public struct AdditionalPropertiesBoolean: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) - name = try container.decodeIfPresent(String.self, forKey: "name") + name = try container.decodeIfPresent(String.self, forKey: .name) var nonAdditionalPropertyKeys = Set() nonAdditionalPropertyKeys.insert("name") - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift index dcf8d5c01cd..b57691746ca 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift @@ -49,11 +49,12 @@ public struct AdditionalPropertiesInteger: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) - name = try container.decodeIfPresent(String.self, forKey: "name") + name = try container.decodeIfPresent(String.self, forKey: .name) var nonAdditionalPropertyKeys = Set() nonAdditionalPropertyKeys.insert("name") - additionalProperties = try container.decodeMap(Int.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Int.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift index ea7bd463916..fd6a6a52d06 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift @@ -49,11 +49,12 @@ public struct AdditionalPropertiesNumber: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) - name = try container.decodeIfPresent(String.self, forKey: "name") + name = try container.decodeIfPresent(String.self, forKey: .name) var nonAdditionalPropertyKeys = Set() nonAdditionalPropertyKeys.insert("name") - additionalProperties = try container.decodeMap(Double.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Double.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift index cf9072f53a2..675a07ca0c1 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift @@ -49,11 +49,12 @@ public struct AdditionalPropertiesObject: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) - name = try container.decodeIfPresent(String.self, forKey: "name") + name = try container.decodeIfPresent(String.self, forKey: .name) var nonAdditionalPropertyKeys = Set() nonAdditionalPropertyKeys.insert("name") - additionalProperties = try container.decodeMap([String: AnyCodable].self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap([String: AnyCodable].self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift index d34017e6c97..df5aa8b6953 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift @@ -49,11 +49,12 @@ public struct AdditionalPropertiesString: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) - name = try container.decodeIfPresent(String.self, forKey: "name") + name = try container.decodeIfPresent(String.self, forKey: .name) var nonAdditionalPropertyKeys = Set() nonAdditionalPropertyKeys.insert("name") - additionalProperties = try container.decodeMap(String.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(String.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index d3b2bda9b77..f575c9df65c 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -42,9 +42,10 @@ public struct StringBooleanMap: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) var nonAdditionalPropertyKeys = Set() - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index fbf069a93c4..774c0427eaa 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -93,7 +93,7 @@ open class URLSessionRequestBuilder: RequestBuilder { return modifiedRequest } - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ open class URLSessionRequestBuilder: RequestBuilder { for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in PetstoreClientAPI.customHeaders { + for (key, value) in PetstoreClient.customHeaders { httpHeaders[key] = value } return httpHeaders diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs.swift index 57308c82f8e..850c8fc4383 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -6,7 +6,10 @@ import Foundation -open class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { public static var basePath = "http://petstore.swagger.io/v2" public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] @@ -32,7 +35,7 @@ open class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } open func addHeaders(_ aHeaders: [String: String]) { @@ -41,7 +44,7 @@ open class RequestBuilder { } } - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } public func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -51,7 +54,7 @@ open class RequestBuilder { } open func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 10fd471343e..bf00a6fa741 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -15,7 +15,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func addPet(pet: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func addPet(pet: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { addPetWithRequestBuilder(pet: pet).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -37,7 +37,7 @@ open class PetAPI { */ open class func addPetWithRequestBuilder(pet: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: pet) let urlComponents = URLComponents(string: URLString) @@ -48,7 +48,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -61,7 +61,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -87,7 +87,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -98,7 +98,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -119,7 +119,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -142,7 +142,7 @@ open class PetAPI { */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -156,7 +156,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -169,7 +169,7 @@ open class PetAPI { - parameter completion: completion handler to receive the data and the error objects */ @available(*, deprecated, message: "This operation is deprecated.") - open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -193,7 +193,7 @@ open class PetAPI { @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -207,7 +207,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -219,7 +219,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { + open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -245,7 +245,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -256,7 +256,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -268,7 +268,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePet(pet: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePet(pet: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithRequestBuilder(pet: pet).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -290,7 +290,7 @@ open class PetAPI { */ open class func updatePetWithRequestBuilder(pet: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: pet) let urlComponents = URLComponents(string: URLString) @@ -301,7 +301,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -315,7 +315,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -342,7 +342,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), @@ -359,7 +359,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -373,7 +373,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -400,7 +400,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), @@ -417,7 +417,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 48b32223334..9d68c2def6e 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -15,7 +15,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -38,7 +38,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{orderId}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -60,7 +60,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { + open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -82,7 +82,7 @@ open class StoreAPI { */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -93,7 +93,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -105,7 +105,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -128,7 +128,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{orderId}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -139,7 +139,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -151,7 +151,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func placeOrder(order: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func placeOrder(order: Order, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { placeOrderWithRequestBuilder(order: order).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -170,7 +170,7 @@ open class StoreAPI { */ open class func placeOrderWithRequestBuilder(order: Order) -> RequestBuilder { let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: order) let urlComponents = URLComponents(string: URLString) @@ -181,7 +181,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index b35fc94ae58..106277bbe05 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -15,7 +15,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUser(user: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUser(user: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUserWithRequestBuilder(user: user).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -38,7 +38,7 @@ open class UserAPI { */ open class func createUserWithRequestBuilder(user: User) -> RequestBuilder { let path = "/user" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: user) let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -61,7 +61,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithArrayInput(user: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithArrayInput(user: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithArrayInputWithRequestBuilder(user: user).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -83,7 +83,7 @@ open class UserAPI { */ open class func createUsersWithArrayInputWithRequestBuilder(user: [User]) -> RequestBuilder { let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: user) let urlComponents = URLComponents(string: URLString) @@ -94,7 +94,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -106,7 +106,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithListInput(user: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithListInput(user: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithListInputWithRequestBuilder(user: user).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -128,7 +128,7 @@ open class UserAPI { */ open class func createUsersWithListInputWithRequestBuilder(user: [User]) -> RequestBuilder { let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: user) let urlComponents = URLComponents(string: URLString) @@ -139,7 +139,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -151,7 +151,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -177,7 +177,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -188,7 +188,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -200,7 +200,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { + open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -222,7 +222,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -233,7 +233,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -246,7 +246,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -267,7 +267,7 @@ open class UserAPI { */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -282,7 +282,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -293,7 +293,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -314,7 +314,7 @@ open class UserAPI { */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -325,7 +325,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -338,7 +338,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updateUser(username: String, user: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updateUser(username: String, user: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updateUserWithRequestBuilder(username: username, user: user).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -365,7 +365,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: user) let urlComponents = URLComponents(string: URLString) @@ -376,7 +376,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index fbf069a93c4..774c0427eaa 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -93,7 +93,7 @@ open class URLSessionRequestBuilder: RequestBuilder { return modifiedRequest } - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ open class URLSessionRequestBuilder: RequestBuilder { for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in PetstoreClientAPI.customHeaders { + for (key, value) in PetstoreClient.customHeaders { httpHeaders[key] = value } return httpHeaders diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs.swift index 026f2295d31..e98c4bb0fbe 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -6,7 +6,10 @@ import Foundation -internal class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +internal typealias PetstoreClientAPI = PetstoreClient + +internal class PetstoreClient { internal static var basePath = "http://petstore.swagger.io:80/v2" internal static var credential: URLCredential? internal static var customHeaders: [String: String] = [:] @@ -32,7 +35,7 @@ internal class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } internal func addHeaders(_ aHeaders: [String: String]) { @@ -41,7 +44,7 @@ internal class RequestBuilder { } } - internal func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + internal func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } internal func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -51,7 +54,7 @@ internal class RequestBuilder { } internal func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 18a502d453b..3962e550ac4 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -15,7 +15,7 @@ internal class AnotherFakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + internal class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -35,7 +35,7 @@ internal class AnotherFakeAPI { */ internal class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/another-fake/dummy" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ internal class AnotherFakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 99317dab507..b38a586bd0f 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -14,7 +14,7 @@ internal class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { + internal class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -33,7 +33,7 @@ internal class FakeAPI { */ internal class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { let path = "/fake/outer/boolean" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -44,7 +44,7 @@ internal class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -55,7 +55,7 @@ internal class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { + internal class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -74,7 +74,7 @@ internal class FakeAPI { */ internal class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { let path = "/fake/outer/composite" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -85,7 +85,7 @@ internal class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -96,7 +96,7 @@ internal class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { + internal class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -115,7 +115,7 @@ internal class FakeAPI { */ internal class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { let path = "/fake/outer/number" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -126,7 +126,7 @@ internal class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -137,7 +137,7 @@ internal class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + internal class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -156,7 +156,7 @@ internal class FakeAPI { */ internal class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { let path = "/fake/outer/string" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -167,7 +167,7 @@ internal class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -178,7 +178,7 @@ internal class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -197,7 +197,7 @@ internal class FakeAPI { */ internal class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { let path = "/fake/body-with-file-schema" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -208,7 +208,7 @@ internal class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -220,7 +220,7 @@ internal class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -239,7 +239,7 @@ internal class FakeAPI { */ internal class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { let path = "/fake/body-with-query-params" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) var urlComponents = URLComponents(string: URLString) @@ -253,7 +253,7 @@ internal class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -265,7 +265,7 @@ internal class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + internal class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -285,7 +285,7 @@ internal class FakeAPI { */ internal class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -296,7 +296,7 @@ internal class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -321,7 +321,7 @@ internal class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func testEndpointParameters(integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, number: Double, float: Float? = nil, double: Double, string: String? = nil, patternWithoutDelimiter: String, byte: Data, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func testEndpointParameters(integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, number: Double, float: Float? = nil, double: Double, string: String? = nil, patternWithoutDelimiter: String, byte: Data, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEndpointParametersWithRequestBuilder(integer: integer, int32: int32, int64: int64, number: number, float: float, double: double, string: string, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -357,7 +357,7 @@ internal class FakeAPI { */ internal class func testEndpointParametersWithRequestBuilder(integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, number: Double, float: Float? = nil, double: Double, string: String? = nil, patternWithoutDelimiter: String, byte: Data, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), @@ -386,7 +386,7 @@ internal class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -472,7 +472,7 @@ internal class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -499,7 +499,7 @@ internal class FakeAPI { */ internal class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), @@ -524,7 +524,7 @@ internal class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -541,7 +541,7 @@ internal class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -566,7 +566,7 @@ internal class FakeAPI { */ internal class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -584,7 +584,7 @@ internal class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -596,7 +596,7 @@ internal class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -615,7 +615,7 @@ internal class FakeAPI { */ internal class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) let urlComponents = URLComponents(string: URLString) @@ -626,7 +626,7 @@ internal class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -639,7 +639,7 @@ internal class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -659,7 +659,7 @@ internal class FakeAPI { */ internal class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { let path = "/fake/jsonFormData" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), @@ -676,7 +676,7 @@ internal class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 5a85c1b2929..f746118089c 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -15,7 +15,7 @@ internal class FakeClassnameTags123API { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + internal class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -38,7 +38,7 @@ internal class FakeClassnameTags123API { */ internal class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake_classname_test" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ internal class FakeClassnameTags123API { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index ab2066aa50c..67a5a95b72b 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -15,7 +15,7 @@ internal class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -37,7 +37,7 @@ internal class PetAPI { */ internal class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -48,7 +48,7 @@ internal class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -61,7 +61,7 @@ internal class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func deletePet(apiKey: String? = nil, petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func deletePet(apiKey: String? = nil, petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deletePetWithRequestBuilder(apiKey: apiKey, petId: petId).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -87,7 +87,7 @@ internal class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -98,7 +98,7 @@ internal class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -119,7 +119,7 @@ internal class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + internal class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -142,7 +142,7 @@ internal class PetAPI { */ internal class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -156,7 +156,7 @@ internal class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -169,7 +169,7 @@ internal class PetAPI { - parameter completion: completion handler to receive the data and the error objects */ @available(*, deprecated, message: "This operation is deprecated.") - internal class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + internal class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -193,7 +193,7 @@ internal class PetAPI { @available(*, deprecated, message: "This operation is deprecated.") internal class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -207,7 +207,7 @@ internal class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -219,7 +219,7 @@ internal class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { + internal class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -245,7 +245,7 @@ internal class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -256,7 +256,7 @@ internal class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -268,7 +268,7 @@ internal class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -290,7 +290,7 @@ internal class PetAPI { */ internal class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -301,7 +301,7 @@ internal class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -315,7 +315,7 @@ internal class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -342,7 +342,7 @@ internal class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), @@ -359,7 +359,7 @@ internal class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -373,7 +373,7 @@ internal class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + internal class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -400,7 +400,7 @@ internal class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), @@ -417,7 +417,7 @@ internal class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -431,7 +431,7 @@ internal class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func uploadFileWithRequiredFile(petId: Int64, additionalMetadata: String? = nil, requiredFile: URL, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + internal class func uploadFileWithRequiredFile(petId: Int64, additionalMetadata: String? = nil, requiredFile: URL, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequiredFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, requiredFile: requiredFile).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -458,7 +458,7 @@ internal class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), @@ -475,7 +475,7 @@ internal class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 49812742b01..4b57f341494 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -15,7 +15,7 @@ internal class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -38,7 +38,7 @@ internal class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ internal class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -60,7 +60,7 @@ internal class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { + internal class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -82,7 +82,7 @@ internal class StoreAPI { */ internal class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -93,7 +93,7 @@ internal class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -105,7 +105,7 @@ internal class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + internal class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -128,7 +128,7 @@ internal class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -139,7 +139,7 @@ internal class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -151,7 +151,7 @@ internal class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + internal class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -170,7 +170,7 @@ internal class StoreAPI { */ internal class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -181,7 +181,7 @@ internal class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 2a1babfaa48..01b5c8c0792 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -15,7 +15,7 @@ internal class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -35,7 +35,7 @@ internal class UserAPI { */ internal class func createUserWithRequestBuilder(body: User) -> RequestBuilder { let path = "/user" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ internal class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -58,7 +58,7 @@ internal class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -77,7 +77,7 @@ internal class UserAPI { */ internal class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -88,7 +88,7 @@ internal class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -100,7 +100,7 @@ internal class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -119,7 +119,7 @@ internal class UserAPI { */ internal class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -130,7 +130,7 @@ internal class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -142,7 +142,7 @@ internal class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -165,7 +165,7 @@ internal class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -176,7 +176,7 @@ internal class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -188,7 +188,7 @@ internal class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { + internal class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -210,7 +210,7 @@ internal class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -221,7 +221,7 @@ internal class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -234,7 +234,7 @@ internal class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + internal class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -255,7 +255,7 @@ internal class UserAPI { */ internal class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -270,7 +270,7 @@ internal class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -281,7 +281,7 @@ internal class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -299,7 +299,7 @@ internal class UserAPI { */ internal class func logoutUserWithRequestBuilder() -> RequestBuilder { let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -310,7 +310,7 @@ internal class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -323,7 +323,7 @@ internal class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - internal class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + internal class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -347,7 +347,7 @@ internal class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -358,7 +358,7 @@ internal class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 0da1a5ed223..a0f5dc1082e 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -42,9 +42,10 @@ internal struct StringBooleanMap: Codable, Hashable { // Decodable protocol methods internal init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) var nonAdditionalPropertyKeys = Set() - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 66b9d23bb39..05391a8fe6b 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -93,7 +93,7 @@ internal class URLSessionRequestBuilder: RequestBuilder { return modifiedRequest } - override internal func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override internal func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ internal class URLSessionRequestBuilder: RequestBuilder { for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in PetstoreClientAPI.customHeaders { + for (key, value) in PetstoreClient.customHeaders { httpHeaders[key] = value } return httpHeaders diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs.swift index dbdab491ff7..01bc6ff0d8d 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -6,7 +6,10 @@ import Foundation -open class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] @@ -32,7 +35,7 @@ open class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } open func addHeaders(_ aHeaders: [String: String]) { @@ -41,7 +44,7 @@ open class RequestBuilder { } } - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } public func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -51,7 +54,7 @@ open class RequestBuilder { } open func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index c0b90bf2f94..440c9b339a7 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -15,7 +15,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -35,7 +35,7 @@ import Foundation */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/another-fake/dummy" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index f37371daf50..4d94d2c6913 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -14,7 +14,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { + open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -33,7 +33,7 @@ import Foundation */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { let path = "/fake/outer/boolean" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -44,7 +44,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -55,7 +55,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -74,7 +74,7 @@ import Foundation */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { let path = "/fake/outer/composite" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -85,7 +85,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -96,7 +96,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { + open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -115,7 +115,7 @@ import Foundation */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { let path = "/fake/outer/number" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -126,7 +126,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -137,7 +137,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -156,7 +156,7 @@ import Foundation */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { let path = "/fake/outer/string" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -167,7 +167,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -178,7 +178,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -197,7 +197,7 @@ import Foundation */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { let path = "/fake/body-with-file-schema" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -208,7 +208,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -220,7 +220,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -239,7 +239,7 @@ import Foundation */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { let path = "/fake/body-with-query-params" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) var urlComponents = URLComponents(string: URLString) @@ -253,7 +253,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -265,7 +265,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -285,7 +285,7 @@ import Foundation */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -296,7 +296,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -321,7 +321,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -357,7 +357,7 @@ import Foundation */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), @@ -386,7 +386,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -472,7 +472,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -499,7 +499,7 @@ import Foundation */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), @@ -524,7 +524,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -541,7 +541,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -566,7 +566,7 @@ import Foundation */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -584,7 +584,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -596,7 +596,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -615,7 +615,7 @@ import Foundation */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) let urlComponents = URLComponents(string: URLString) @@ -626,7 +626,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -639,7 +639,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -659,7 +659,7 @@ import Foundation */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { let path = "/fake/jsonFormData" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), @@ -676,7 +676,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index cae3d8e7da2..36099b5f1a3 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -15,7 +15,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -38,7 +38,7 @@ import Foundation */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake_classname_test" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index a46c4b36d5c..1bdfc19cd71 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -15,7 +15,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -37,7 +37,7 @@ import Foundation */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -48,7 +48,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -61,7 +61,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -87,7 +87,7 @@ import Foundation let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -98,7 +98,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -119,7 +119,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -142,7 +142,7 @@ import Foundation */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -156,7 +156,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -169,7 +169,7 @@ import Foundation - parameter completion: completion handler to receive the data and the error objects */ @available(*, deprecated, message: "This operation is deprecated.") - open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -193,7 +193,7 @@ import Foundation @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -207,7 +207,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -219,7 +219,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { + open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -245,7 +245,7 @@ import Foundation let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -256,7 +256,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -268,7 +268,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -290,7 +290,7 @@ import Foundation */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -301,7 +301,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -315,7 +315,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -342,7 +342,7 @@ import Foundation let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), @@ -359,7 +359,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -373,7 +373,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -400,7 +400,7 @@ import Foundation let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), @@ -417,7 +417,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -431,7 +431,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -458,7 +458,7 @@ import Foundation let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), @@ -475,7 +475,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 990aaaef8be..4acac5ebd4f 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -15,7 +15,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -38,7 +38,7 @@ import Foundation let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -60,7 +60,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { + open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -82,7 +82,7 @@ import Foundation */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -93,7 +93,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -105,7 +105,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -128,7 +128,7 @@ import Foundation let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -139,7 +139,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -151,7 +151,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -170,7 +170,7 @@ import Foundation */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -181,7 +181,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 8fd6953a3f6..fb331f2a38d 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -15,7 +15,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -35,7 +35,7 @@ import Foundation */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { let path = "/user" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -58,7 +58,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -77,7 +77,7 @@ import Foundation */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -88,7 +88,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -100,7 +100,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -119,7 +119,7 @@ import Foundation */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -130,7 +130,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -142,7 +142,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -165,7 +165,7 @@ import Foundation let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -176,7 +176,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -188,7 +188,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { + open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -210,7 +210,7 @@ import Foundation let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -221,7 +221,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -234,7 +234,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -255,7 +255,7 @@ import Foundation */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -270,7 +270,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -281,7 +281,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -299,7 +299,7 @@ import Foundation */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -310,7 +310,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -323,7 +323,7 @@ import Foundation - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -347,7 +347,7 @@ import Foundation let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -358,7 +358,7 @@ import Foundation let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index f3da87612bc..9ca13a19d8e 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -42,9 +42,10 @@ import AnyCodable // Decodable protocol methods public required init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) var nonAdditionalPropertyKeys = Set() - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index fbf069a93c4..774c0427eaa 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -93,7 +93,7 @@ open class URLSessionRequestBuilder: RequestBuilder { return modifiedRequest } - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ open class URLSessionRequestBuilder: RequestBuilder { for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in PetstoreClientAPI.customHeaders { + for (key, value) in PetstoreClient.customHeaders { httpHeaders[key] = value } return httpHeaders diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs.swift index d2b0a9186b2..7935d8a9fa6 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -6,7 +6,10 @@ import Foundation -open class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { public static var basePath = "http://localhost" public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] @@ -32,7 +35,7 @@ open class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } open func addHeaders(_ aHeaders: [String: String]) { @@ -41,7 +44,7 @@ open class RequestBuilder { } } - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } public func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -51,7 +54,7 @@ open class RequestBuilder { } open func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift index 7bf2ca84749..5e6a278c0d0 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift @@ -13,7 +13,7 @@ open class DefaultAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func rootGet(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Fruit?, _ error: Error?) -> Void)) { + open class func rootGet(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Fruit?, _ error: Error?) -> Void)) { rootGetWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -30,7 +30,7 @@ open class DefaultAPI { */ open class func rootGetWithRequestBuilder() -> RequestBuilder { let path = "/" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -41,7 +41,7 @@ open class DefaultAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index fbf069a93c4..774c0427eaa 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -93,7 +93,7 @@ open class URLSessionRequestBuilder: RequestBuilder { return modifiedRequest } - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ open class URLSessionRequestBuilder: RequestBuilder { for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in PetstoreClientAPI.customHeaders { + for (key, value) in PetstoreClient.customHeaders { httpHeaders[key] = value } return httpHeaders diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift index dbdab491ff7..01bc6ff0d8d 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -6,7 +6,10 @@ import Foundation -open class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] @@ -32,7 +35,7 @@ open class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } open func addHeaders(_ aHeaders: [String: String]) { @@ -41,7 +44,7 @@ open class RequestBuilder { } } - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } public func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -51,7 +54,7 @@ open class RequestBuilder { } open func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 96d992e7647..72ecfdc6f76 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -16,7 +16,7 @@ open class AnotherFakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func call123testSpecialTags( body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func call123testSpecialTags( body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -38,7 +38,7 @@ open class AnotherFakeAPI { */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/another-fake/dummy" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class AnotherFakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index eadb85f7b62..89d44314c53 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -15,7 +15,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func fakeOuterBooleanSerialize( body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func fakeOuterBooleanSerialize( body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -36,7 +36,7 @@ open class FakeAPI { */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { let path = "/fake/outer/boolean" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -47,7 +47,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -58,7 +58,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func fakeOuterCompositeSerialize( body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func fakeOuterCompositeSerialize( body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -79,7 +79,7 @@ open class FakeAPI { */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { let path = "/fake/outer/composite" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -90,7 +90,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -101,7 +101,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func fakeOuterNumberSerialize( body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func fakeOuterNumberSerialize( body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -122,7 +122,7 @@ open class FakeAPI { */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { let path = "/fake/outer/number" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -133,7 +133,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -144,7 +144,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func fakeOuterStringSerialize( body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func fakeOuterStringSerialize( body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -165,7 +165,7 @@ open class FakeAPI { */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { let path = "/fake/outer/string" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -176,7 +176,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -187,7 +187,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func testBodyWithFileSchema( body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func testBodyWithFileSchema( body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -208,7 +208,7 @@ open class FakeAPI { */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { let path = "/fake/body-with-file-schema" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -219,7 +219,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -231,7 +231,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func testBodyWithQueryParams( query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func testBodyWithQueryParams( query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -252,7 +252,7 @@ open class FakeAPI { */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { let path = "/fake/body-with-query-params" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) var urlComponents = URLComponents(string: URLString) @@ -266,7 +266,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -278,7 +278,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func testClientModel( body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func testClientModel( body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -300,7 +300,7 @@ open class FakeAPI { */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -311,7 +311,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -336,7 +336,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func testEndpointParameters( number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func testEndpointParameters( number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in switch result { @@ -374,7 +374,7 @@ open class FakeAPI { */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), @@ -403,7 +403,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -489,7 +489,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func testEnumParameters( enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func testEnumParameters( enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in switch result { @@ -518,7 +518,7 @@ open class FakeAPI { */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), @@ -543,7 +543,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -560,7 +560,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func testGroupParameters( requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func testGroupParameters( requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in switch result { @@ -587,7 +587,7 @@ open class FakeAPI { */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -605,7 +605,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -617,7 +617,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func testInlineAdditionalProperties( param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func testInlineAdditionalProperties( param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in switch result { @@ -638,7 +638,7 @@ open class FakeAPI { */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) let urlComponents = URLComponents(string: URLString) @@ -649,7 +649,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -662,7 +662,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func testJsonFormData( param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func testJsonFormData( param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in switch result { @@ -684,7 +684,7 @@ open class FakeAPI { */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { let path = "/fake/jsonFormData" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), @@ -701,7 +701,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 14e41e22c1d..5cd88bffeae 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -16,7 +16,7 @@ open class FakeClassnameTags123API { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func testClassname( body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func testClassname( body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -41,7 +41,7 @@ open class FakeClassnameTags123API { */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake_classname_test" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -52,7 +52,7 @@ open class FakeClassnameTags123API { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 4160df0cc9e..2ca6128ac8d 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -16,7 +16,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func addPet( body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func addPet( body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -40,7 +40,7 @@ open class PetAPI { */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -51,7 +51,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -64,7 +64,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func deletePet( petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func deletePet( petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in switch result { @@ -92,7 +92,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -103,7 +103,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -124,7 +124,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise<[Pet]> */ - open class func findPetsByStatus( status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<[Pet]> { + open class func findPetsByStatus( status: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise<[Pet]> { let deferred = Promise<[Pet]>.pending() findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in switch result { @@ -149,7 +149,7 @@ open class PetAPI { */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -163,7 +163,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -176,7 +176,7 @@ open class PetAPI { - returns: Promise<[Pet]> */ @available(*, deprecated, message: "This operation is deprecated.") - open class func findPetsByTags( tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<[Pet]> { + open class func findPetsByTags( tags: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise<[Pet]> { let deferred = Promise<[Pet]>.pending() findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in switch result { @@ -202,7 +202,7 @@ open class PetAPI { @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -216,7 +216,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -228,7 +228,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func getPetById( petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func getPetById( petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in switch result { @@ -256,7 +256,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -267,7 +267,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -279,7 +279,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func updatePet( body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func updatePet( body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -303,7 +303,7 @@ open class PetAPI { */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -314,7 +314,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -328,7 +328,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func updatePetWithForm( petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func updatePetWithForm( petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in switch result { @@ -357,7 +357,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), @@ -374,7 +374,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -388,7 +388,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func uploadFile( petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func uploadFile( petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in switch result { @@ -417,7 +417,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), @@ -434,7 +434,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -448,7 +448,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func uploadFileWithRequiredFile( petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func uploadFileWithRequiredFile( petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in switch result { @@ -477,7 +477,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), @@ -494,7 +494,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 88305f77980..2a877b9fb57 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -16,7 +16,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func deleteOrder( orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func deleteOrder( orderId: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { @@ -41,7 +41,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -52,7 +52,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -63,7 +63,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise<[String: Int]> */ - open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<[String: Int]> { + open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise<[String: Int]> { let deferred = Promise<[String: Int]>.pending() getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { @@ -87,7 +87,7 @@ open class StoreAPI { */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -98,7 +98,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -110,7 +110,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func getOrderById( orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func getOrderById( orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { @@ -135,7 +135,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -146,7 +146,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -158,7 +158,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func placeOrder( body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func placeOrder( body: Order, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -179,7 +179,7 @@ open class StoreAPI { */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -190,7 +190,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 1bdb1159573..6b12f6a0b09 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -16,7 +16,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func createUser( body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func createUser( body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -38,7 +38,7 @@ open class UserAPI { */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { let path = "/user" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -61,7 +61,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func createUsersWithArrayInput( body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func createUsersWithArrayInput( body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -82,7 +82,7 @@ open class UserAPI { */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -93,7 +93,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -105,7 +105,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func createUsersWithListInput( body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func createUsersWithListInput( body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -126,7 +126,7 @@ open class UserAPI { */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -137,7 +137,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -149,7 +149,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func deleteUser( username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func deleteUser( username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { @@ -174,7 +174,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -185,7 +185,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -197,7 +197,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func getUserByName( username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func getUserByName( username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { @@ -221,7 +221,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -232,7 +232,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -245,7 +245,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func loginUser( username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func loginUser( username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in switch result { @@ -268,7 +268,7 @@ open class UserAPI { */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -283,7 +283,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -294,7 +294,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { @@ -314,7 +314,7 @@ open class UserAPI { */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -325,7 +325,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -338,7 +338,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Promise */ - open class func updateUser( username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise { + open class func updateUser( username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Promise { let deferred = Promise.pending() updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -364,7 +364,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -375,7 +375,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index d3b2bda9b77..f575c9df65c 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -42,9 +42,10 @@ public struct StringBooleanMap: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) var nonAdditionalPropertyKeys = Set() - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index fbf069a93c4..774c0427eaa 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -93,7 +93,7 @@ open class URLSessionRequestBuilder: RequestBuilder { return modifiedRequest } - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ open class URLSessionRequestBuilder: RequestBuilder { for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in PetstoreClientAPI.customHeaders { + for (key, value) in PetstoreClient.customHeaders { httpHeaders[key] = value } return httpHeaders diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs.swift index dbdab491ff7..01bc6ff0d8d 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -6,7 +6,10 @@ import Foundation -open class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] @@ -32,7 +35,7 @@ open class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } open func addHeaders(_ aHeaders: [String: String]) { @@ -41,7 +44,7 @@ open class RequestBuilder { } } - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } public func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -51,7 +54,7 @@ open class RequestBuilder { } open func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 72b89640eeb..542fb6f69ba 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -15,7 +15,7 @@ open class AnotherFakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -35,7 +35,7 @@ open class AnotherFakeAPI { */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/another-fake/dummy" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ open class AnotherFakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index cf92424d9cc..9b75edc92ee 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -14,7 +14,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { + open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -33,7 +33,7 @@ open class FakeAPI { */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { let path = "/fake/outer/boolean" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -44,7 +44,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -55,7 +55,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -74,7 +74,7 @@ open class FakeAPI { */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { let path = "/fake/outer/composite" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -85,7 +85,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -96,7 +96,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { + open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -115,7 +115,7 @@ open class FakeAPI { */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { let path = "/fake/outer/number" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -126,7 +126,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -137,7 +137,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -156,7 +156,7 @@ open class FakeAPI { */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { let path = "/fake/outer/string" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -167,7 +167,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -178,7 +178,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -197,7 +197,7 @@ open class FakeAPI { */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { let path = "/fake/body-with-file-schema" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -208,7 +208,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -220,7 +220,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -239,7 +239,7 @@ open class FakeAPI { */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { let path = "/fake/body-with-query-params" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) var urlComponents = URLComponents(string: URLString) @@ -253,7 +253,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -265,7 +265,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -285,7 +285,7 @@ open class FakeAPI { */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -296,7 +296,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -321,7 +321,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -357,7 +357,7 @@ open class FakeAPI { */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), @@ -386,7 +386,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -472,7 +472,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -499,7 +499,7 @@ open class FakeAPI { */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), @@ -524,7 +524,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -541,7 +541,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -566,7 +566,7 @@ open class FakeAPI { */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -584,7 +584,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -596,7 +596,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -615,7 +615,7 @@ open class FakeAPI { */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) let urlComponents = URLComponents(string: URLString) @@ -626,7 +626,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -639,7 +639,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -659,7 +659,7 @@ open class FakeAPI { */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { let path = "/fake/jsonFormData" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), @@ -676,7 +676,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index d4d65166496..fd7d845d340 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -15,7 +15,7 @@ open class FakeClassnameTags123API { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -38,7 +38,7 @@ open class FakeClassnameTags123API { */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake_classname_test" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class FakeClassnameTags123API { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index a1fe0d12b1d..d7d5bdfa2ea 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -15,7 +15,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -37,7 +37,7 @@ open class PetAPI { */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -48,7 +48,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -61,7 +61,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -87,7 +87,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -98,7 +98,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -119,7 +119,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -142,7 +142,7 @@ open class PetAPI { */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -156,7 +156,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -169,7 +169,7 @@ open class PetAPI { - parameter completion: completion handler to receive the data and the error objects */ @available(*, deprecated, message: "This operation is deprecated.") - open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -193,7 +193,7 @@ open class PetAPI { @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -207,7 +207,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -219,7 +219,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { + open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -245,7 +245,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -256,7 +256,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -268,7 +268,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -290,7 +290,7 @@ open class PetAPI { */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -301,7 +301,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -315,7 +315,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -342,7 +342,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), @@ -359,7 +359,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -373,7 +373,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -400,7 +400,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), @@ -417,7 +417,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -431,7 +431,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -458,7 +458,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), @@ -475,7 +475,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 501f11f5f21..c80d4286b53 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -15,7 +15,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -38,7 +38,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -60,7 +60,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { + open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -82,7 +82,7 @@ open class StoreAPI { */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -93,7 +93,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -105,7 +105,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -128,7 +128,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -139,7 +139,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -151,7 +151,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -170,7 +170,7 @@ open class StoreAPI { */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -181,7 +181,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 254474014d3..542dc212bd1 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -15,7 +15,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -35,7 +35,7 @@ open class UserAPI { */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { let path = "/user" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -58,7 +58,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -77,7 +77,7 @@ open class UserAPI { */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -88,7 +88,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -100,7 +100,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -119,7 +119,7 @@ open class UserAPI { */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -130,7 +130,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -142,7 +142,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -165,7 +165,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -176,7 +176,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -188,7 +188,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { + open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -210,7 +210,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -221,7 +221,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -234,7 +234,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -255,7 +255,7 @@ open class UserAPI { */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -270,7 +270,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -281,7 +281,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -299,7 +299,7 @@ open class UserAPI { */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -310,7 +310,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -323,7 +323,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -347,7 +347,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -358,7 +358,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 37ff29a7315..19103698f9a 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -42,9 +42,10 @@ public struct StringBooleanMap: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) var nonAdditionalPropertyKeys = Set() - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index fbf069a93c4..774c0427eaa 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -93,7 +93,7 @@ open class URLSessionRequestBuilder: RequestBuilder { return modifiedRequest } - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ open class URLSessionRequestBuilder: RequestBuilder { for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in PetstoreClientAPI.customHeaders { + for (key, value) in PetstoreClient.customHeaders { httpHeaders[key] = value } return httpHeaders diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift index dbdab491ff7..01bc6ff0d8d 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -6,7 +6,10 @@ import Foundation -open class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] @@ -32,7 +35,7 @@ open class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } open func addHeaders(_ aHeaders: [String: String]) { @@ -41,7 +44,7 @@ open class RequestBuilder { } } - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } public func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -51,7 +54,7 @@ open class RequestBuilder { } open func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 19521eb4d65..f2f733281fc 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -15,7 +15,7 @@ open class AnotherFakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -35,7 +35,7 @@ open class AnotherFakeAPI { */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/another-fake/dummy" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ open class AnotherFakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index a1eb0539707..180df7841ae 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -14,7 +14,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -33,7 +33,7 @@ open class FakeAPI { */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { let path = "/fake/outer/boolean" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -44,7 +44,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -55,7 +55,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -74,7 +74,7 @@ open class FakeAPI { */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { let path = "/fake/outer/composite" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -85,7 +85,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -96,7 +96,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -115,7 +115,7 @@ open class FakeAPI { */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { let path = "/fake/outer/number" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -126,7 +126,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -137,7 +137,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -156,7 +156,7 @@ open class FakeAPI { */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { let path = "/fake/outer/string" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -167,7 +167,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -178,7 +178,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -197,7 +197,7 @@ open class FakeAPI { */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { let path = "/fake/body-with-file-schema" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -208,7 +208,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -220,7 +220,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -239,7 +239,7 @@ open class FakeAPI { */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { let path = "/fake/body-with-query-params" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) var urlComponents = URLComponents(string: URLString) @@ -253,7 +253,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -265,7 +265,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -285,7 +285,7 @@ open class FakeAPI { */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -296,7 +296,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -321,7 +321,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -357,7 +357,7 @@ open class FakeAPI { */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), @@ -386,7 +386,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -472,7 +472,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -499,7 +499,7 @@ open class FakeAPI { */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), @@ -524,7 +524,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -541,7 +541,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -566,7 +566,7 @@ open class FakeAPI { */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -584,7 +584,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -596,7 +596,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -615,7 +615,7 @@ open class FakeAPI { */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) let urlComponents = URLComponents(string: URLString) @@ -626,7 +626,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -639,7 +639,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -659,7 +659,7 @@ open class FakeAPI { */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { let path = "/fake/jsonFormData" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), @@ -676,7 +676,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index f4608c34d82..161b2c3f758 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -15,7 +15,7 @@ open class FakeClassnameTags123API { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -38,7 +38,7 @@ open class FakeClassnameTags123API { */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake_classname_test" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class FakeClassnameTags123API { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 521125d8db8..23e7fc21b70 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -15,7 +15,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -37,7 +37,7 @@ open class PetAPI { */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -48,7 +48,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -61,7 +61,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -87,7 +87,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -98,7 +98,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -119,7 +119,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result<[Pet], Error>) -> Void)) { + open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result<[Pet], Error>) -> Void)) { findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -142,7 +142,7 @@ open class PetAPI { */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -156,7 +156,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -169,7 +169,7 @@ open class PetAPI { - parameter completion: completion handler to receive the result */ @available(*, deprecated, message: "This operation is deprecated.") - open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result<[Pet], Error>) -> Void)) { + open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result<[Pet], Error>) -> Void)) { findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -193,7 +193,7 @@ open class PetAPI { @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -207,7 +207,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -219,7 +219,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -245,7 +245,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -256,7 +256,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -268,7 +268,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -290,7 +290,7 @@ open class PetAPI { */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -301,7 +301,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -315,7 +315,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -342,7 +342,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), @@ -359,7 +359,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -373,7 +373,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -400,7 +400,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), @@ -417,7 +417,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -431,7 +431,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -458,7 +458,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), @@ -475,7 +475,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 18f3dd90a5e..ccdb44bf803 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -15,7 +15,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -38,7 +38,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -60,7 +60,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result<[String: Int], Error>) -> Void)) { + open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result<[String: Int], Error>) -> Void)) { getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -82,7 +82,7 @@ open class StoreAPI { */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -93,7 +93,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -105,7 +105,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -128,7 +128,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -139,7 +139,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -151,7 +151,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -170,7 +170,7 @@ open class StoreAPI { */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -181,7 +181,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 2dfa75460f0..ea100babfca 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -15,7 +15,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -35,7 +35,7 @@ open class UserAPI { */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { let path = "/user" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -58,7 +58,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -77,7 +77,7 @@ open class UserAPI { */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -88,7 +88,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -100,7 +100,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -119,7 +119,7 @@ open class UserAPI { */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -130,7 +130,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -142,7 +142,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -165,7 +165,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -176,7 +176,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -188,7 +188,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -210,7 +210,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -221,7 +221,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -234,7 +234,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -255,7 +255,7 @@ open class UserAPI { */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -270,7 +270,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -281,7 +281,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -299,7 +299,7 @@ open class UserAPI { */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -310,7 +310,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -323,7 +323,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the result */ - open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { + open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ result: Swift.Result) -> Void)) { updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -347,7 +347,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -358,7 +358,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index d3b2bda9b77..f575c9df65c 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -42,9 +42,10 @@ public struct StringBooleanMap: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) var nonAdditionalPropertyKeys = Set() - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index fbf069a93c4..774c0427eaa 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -93,7 +93,7 @@ open class URLSessionRequestBuilder: RequestBuilder { return modifiedRequest } - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ open class URLSessionRequestBuilder: RequestBuilder { for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in PetstoreClientAPI.customHeaders { + for (key, value) in PetstoreClient.customHeaders { httpHeaders[key] = value } return httpHeaders diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift index dbdab491ff7..01bc6ff0d8d 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -6,7 +6,10 @@ import Foundation -open class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] @@ -32,7 +35,7 @@ open class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } open func addHeaders(_ aHeaders: [String: String]) { @@ -41,7 +44,7 @@ open class RequestBuilder { } } - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } public func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -51,7 +54,7 @@ open class RequestBuilder { } open func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 12e7760ec2c..d46906177c8 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -16,7 +16,7 @@ open class AnotherFakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -40,7 +40,7 @@ open class AnotherFakeAPI { */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/another-fake/dummy" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -51,7 +51,7 @@ open class AnotherFakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 06b88c2a71f..abf1a1b7f5d 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -15,7 +15,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -38,7 +38,7 @@ open class FakeAPI { */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { let path = "/fake/outer/boolean" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -60,7 +60,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -83,7 +83,7 @@ open class FakeAPI { */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { let path = "/fake/outer/composite" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -94,7 +94,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -105,7 +105,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -128,7 +128,7 @@ open class FakeAPI { */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { let path = "/fake/outer/number" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -139,7 +139,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -150,7 +150,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -173,7 +173,7 @@ open class FakeAPI { */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { let path = "/fake/outer/string" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -184,7 +184,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -195,7 +195,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -218,7 +218,7 @@ open class FakeAPI { */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { let path = "/fake/body-with-file-schema" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -229,7 +229,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -241,7 +241,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -264,7 +264,7 @@ open class FakeAPI { */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { let path = "/fake/body-with-query-params" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) var urlComponents = URLComponents(string: URLString) @@ -278,7 +278,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -290,7 +290,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -314,7 +314,7 @@ open class FakeAPI { */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -325,7 +325,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -350,7 +350,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in switch result { @@ -390,7 +390,7 @@ open class FakeAPI { */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), @@ -419,7 +419,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -505,7 +505,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in switch result { @@ -536,7 +536,7 @@ open class FakeAPI { */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), @@ -561,7 +561,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -578,7 +578,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in switch result { @@ -607,7 +607,7 @@ open class FakeAPI { */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -625,7 +625,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -637,7 +637,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in switch result { @@ -660,7 +660,7 @@ open class FakeAPI { */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) let urlComponents = URLComponents(string: URLString) @@ -671,7 +671,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -684,7 +684,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in switch result { @@ -708,7 +708,7 @@ open class FakeAPI { */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { let path = "/fake/jsonFormData" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), @@ -725,7 +725,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index a0f65c5269e..4e4de2bab77 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -16,7 +16,7 @@ open class FakeClassnameTags123API { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -43,7 +43,7 @@ open class FakeClassnameTags123API { */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake_classname_test" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -54,7 +54,7 @@ open class FakeClassnameTags123API { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index bb299e77d8c..a51e91c1f0e 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -16,7 +16,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -42,7 +42,7 @@ open class PetAPI { */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -53,7 +53,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -66,7 +66,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in switch result { @@ -96,7 +96,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -107,7 +107,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -128,7 +128,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable<[Pet]> */ - open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<[Pet]> { + open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable<[Pet]> { return Observable.create { observer -> Disposable in findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in switch result { @@ -155,7 +155,7 @@ open class PetAPI { */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -169,7 +169,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -182,7 +182,7 @@ open class PetAPI { - returns: Observable<[Pet]> */ @available(*, deprecated, message: "This operation is deprecated.") - open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<[Pet]> { + open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable<[Pet]> { return Observable.create { observer -> Disposable in findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in switch result { @@ -210,7 +210,7 @@ open class PetAPI { @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -224,7 +224,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -236,7 +236,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in switch result { @@ -266,7 +266,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -277,7 +277,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -289,7 +289,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -315,7 +315,7 @@ open class PetAPI { */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -326,7 +326,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -340,7 +340,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in switch result { @@ -371,7 +371,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), @@ -388,7 +388,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -402,7 +402,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in switch result { @@ -433,7 +433,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), @@ -450,7 +450,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -464,7 +464,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in switch result { @@ -495,7 +495,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), @@ -512,7 +512,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 0f1e6023e17..9343800cddb 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -16,7 +16,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { @@ -43,7 +43,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -54,7 +54,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -65,7 +65,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable<[String: Int]> */ - open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<[String: Int]> { + open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable<[String: Int]> { return Observable.create { observer -> Disposable in getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { @@ -91,7 +91,7 @@ open class StoreAPI { */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -102,7 +102,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -114,7 +114,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { @@ -141,7 +141,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -152,7 +152,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -164,7 +164,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -187,7 +187,7 @@ open class StoreAPI { */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -198,7 +198,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 18bf71fc41c..2e9dac80ae3 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -16,7 +16,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -40,7 +40,7 @@ open class UserAPI { */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { let path = "/user" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -51,7 +51,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -63,7 +63,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -86,7 +86,7 @@ open class UserAPI { */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -97,7 +97,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -109,7 +109,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -132,7 +132,7 @@ open class UserAPI { */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -143,7 +143,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -155,7 +155,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { @@ -182,7 +182,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -193,7 +193,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -205,7 +205,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { @@ -231,7 +231,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -242,7 +242,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -255,7 +255,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in switch result { @@ -280,7 +280,7 @@ open class UserAPI { */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -295,7 +295,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -306,7 +306,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { @@ -328,7 +328,7 @@ open class UserAPI { */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -339,7 +339,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -352,7 +352,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - returns: Observable */ - open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable { + open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue) -> Observable { return Observable.create { observer -> Disposable in updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in switch result { @@ -380,7 +380,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -391,7 +391,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index fbf069a93c4..774c0427eaa 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -93,7 +93,7 @@ open class URLSessionRequestBuilder: RequestBuilder { return modifiedRequest } - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ open class URLSessionRequestBuilder: RequestBuilder { for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in PetstoreClientAPI.customHeaders { + for (key, value) in PetstoreClient.customHeaders { httpHeaders[key] = value } return httpHeaders diff --git a/samples/client/petstore/swift5/urlsessionLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift5/urlsessionLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/samples/client/petstore/swift5/urlsessionLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIHelper.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIHelper.swift deleted file mode 100644 index f7bb5274bd9..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIHelper.swift +++ /dev/null @@ -1,71 +0,0 @@ -// APIHelper.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -public struct APIHelper { - public static func rejectNil(_ source: [String: Any?]) -> [String: Any]? { - let destination = source.reduce(into: [String: Any]()) { result, item in - if let value = item.value { - result[item.key] = value - } - } - - if destination.isEmpty { - return nil - } - return destination - } - - public static func rejectNilHeaders(_ source: [String: Any?]) -> [String: String] { - return source.reduce(into: [String: String]()) { result, item in - if let collection = item.value as? [Any?] { - result[item.key] = collection.filter { $0 != nil }.map { "\($0!)" }.joined(separator: ",") - } else if let value: Any = item.value { - result[item.key] = "\(value)" - } - } - } - - public static func convertBoolToString(_ source: [String: Any]?) -> [String: Any]? { - guard let source = source else { - return nil - } - - return source.reduce(into: [String: Any]()) { result, item in - switch item.value { - case let x as Bool: - result[item.key] = x.description - default: - result[item.key] = item.value - } - } - } - - public static func mapValueToPathItem(_ source: Any) -> Any { - if let collection = source as? [Any?] { - return collection.filter { $0 != nil }.map { "\($0!)" }.joined(separator: ",") - } - return source - } - - public static func mapValuesToQueryItems(_ source: [String: Any?]) -> [URLQueryItem]? { - let destination = source.filter { $0.value != nil }.reduce(into: [URLQueryItem]()) { result, item in - if let collection = item.value as? [Any?] { - collection.filter { $0 != nil }.map { "\($0!)" }.forEach { value in - result.append(URLQueryItem(name: item.key, value: value)) - } - } else if let value = item.value { - result.append(URLQueryItem(name: item.key, value: "\(value)")) - } - } - - if destination.isEmpty { - return nil - } - return destination - } -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs.swift deleted file mode 100644 index dbdab491ff7..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs.swift +++ /dev/null @@ -1,62 +0,0 @@ -// APIs.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -open class PetstoreClientAPI { - public static var basePath = "http://petstore.swagger.io:80/v2" - public static var credential: URLCredential? - public static var customHeaders: [String: String] = [:] - public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() - public static var apiResponseQueue: DispatchQueue = .main -} - -open class RequestBuilder { - var credential: URLCredential? - var headers: [String: String] - public let parameters: [String: Any]? - public let method: String - public let URLString: String - - /// Optional block to obtain a reference to the request's progress instance when available. - /// With the URLSession http client the request's progress only works on iOS 11.0, macOS 10.13, macCatalyst 13.0, tvOS 11.0, watchOS 4.0. - /// If you need to get the request's progress in older OS versions, please use Alamofire http client. - public var onProgressReady: ((Progress) -> Void)? - - required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) { - self.method = method - self.URLString = URLString - self.parameters = parameters - self.headers = headers - - addHeaders(PetstoreClientAPI.customHeaders) - } - - open func addHeaders(_ aHeaders: [String: String]) { - for (header, value) in aHeaders { - headers[header] = value - } - } - - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } - - public func addHeader(name: String, value: String) -> Self { - if !value.isEmpty { - headers[name] = value - } - return self - } - - open func addCredential() -> Self { - credential = PetstoreClientAPI.credential - return self - } -} - -public protocol RequestBuilderFactory { - func getNonDecodableBuilder() -> RequestBuilder.Type - func getBuilder() -> RequestBuilder.Type -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/AnotherFakeAPI.swift deleted file mode 100644 index 72b89640eeb..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/AnotherFakeAPI.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// AnotherFakeAPI.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -open class AnotherFakeAPI { - /** - To test special tags - - - parameter body: (body) client model - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { - call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - To test special tags - - PATCH /another-fake/dummy - - To test special tags and operation ID starting with number - - parameter body: (body) client model - - returns: RequestBuilder - */ - open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/another-fake/dummy" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/FakeAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/FakeAPI.swift deleted file mode 100644 index cf92424d9cc..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/FakeAPI.swift +++ /dev/null @@ -1,684 +0,0 @@ -// -// FakeAPI.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -open class FakeAPI { - /** - - - parameter body: (body) Input boolean as post body (optional) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { - fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - - POST /fake/outer/boolean - - Test serialization of outer boolean types - - parameter body: (body) Input boolean as post body (optional) - - returns: RequestBuilder - */ - open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { - let path = "/fake/outer/boolean" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - - - parameter body: (body) Input composite as post body (optional) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { - fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - - POST /fake/outer/composite - - Test serialization of object with outer number type - - parameter body: (body) Input composite as post body (optional) - - returns: RequestBuilder - */ - open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { - let path = "/fake/outer/composite" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - - - parameter body: (body) Input number as post body (optional) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { - fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - - POST /fake/outer/number - - Test serialization of outer number types - - parameter body: (body) Input number as post body (optional) - - returns: RequestBuilder - */ - open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { - let path = "/fake/outer/number" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - - - parameter body: (body) Input string as post body (optional) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { - fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - - POST /fake/outer/string - - Test serialization of outer string types - - parameter body: (body) Input string as post body (optional) - - returns: RequestBuilder - */ - open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { - let path = "/fake/outer/string" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - - - parameter body: (body) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - - PUT /fake/body-with-file-schema - - For this test, the body for this request much reference a schema named `File`. - - parameter body: (body) - - returns: RequestBuilder - */ - open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - - - parameter query: (query) - - parameter body: (body) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - - PUT /fake/body-with-query-params - - parameter query: (query) - - parameter body: (body) - - returns: RequestBuilder - */ - open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ - "query": query.encodeToJSON(), - ]) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - To test \"client\" model - - - parameter body: (body) client model - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { - testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - To test \"client\" model - - PATCH /fake - - To test \"client\" model - - parameter body: (body) client model - - returns: RequestBuilder - */ - open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 - - - parameter number: (form) None - - parameter double: (form) None - - parameter patternWithoutDelimiter: (form) None - - parameter byte: (form) None - - parameter integer: (form) None (optional) - - parameter int32: (form) None (optional) - - parameter int64: (form) None (optional) - - parameter float: (form) None (optional) - - parameter string: (form) None (optional) - - parameter binary: (form) None (optional) - - parameter date: (form) None (optional) - - parameter dateTime: (form) None (optional) - - parameter password: (form) None (optional) - - parameter callback: (form) None (optional) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 - - POST /fake - - Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 - - BASIC: - - type: http - - name: http_basic_test - - parameter number: (form) None - - parameter double: (form) None - - parameter patternWithoutDelimiter: (form) None - - parameter byte: (form) None - - parameter integer: (form) None (optional) - - parameter int32: (form) None (optional) - - parameter int64: (form) None (optional) - - parameter float: (form) None (optional) - - parameter string: (form) None (optional) - - parameter binary: (form) None (optional) - - parameter date: (form) None (optional) - - parameter dateTime: (form) None (optional) - - parameter password: (form) None (optional) - - parameter callback: (form) None (optional) - - returns: RequestBuilder - */ - open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path - let formParams: [String: Any?] = [ - "integer": integer?.encodeToJSON(), - "int32": int32?.encodeToJSON(), - "int64": int64?.encodeToJSON(), - "number": number.encodeToJSON(), - "float": float?.encodeToJSON(), - "double": double.encodeToJSON(), - "string": string?.encodeToJSON(), - "pattern_without_delimiter": patternWithoutDelimiter.encodeToJSON(), - "byte": byte.encodeToJSON(), - "binary": binary?.encodeToJSON(), - "date": date?.encodeToJSON(), - "dateTime": dateTime?.encodeToJSON(), - "password": password?.encodeToJSON(), - "callback": callback?.encodeToJSON(), - ] - - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - "Content-Type": "application/x-www-form-urlencoded", - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - * enum for parameter enumHeaderStringArray - */ - public enum EnumHeaderStringArray_testEnumParameters: String, CaseIterable { - case greaterThan = ">" - case dollar = "$" - } - - /** - * enum for parameter enumHeaderString - */ - public enum EnumHeaderString_testEnumParameters: String, CaseIterable { - case abc = "_abc" - case efg = "-efg" - case xyz = "(xyz)" - } - - /** - * enum for parameter enumQueryStringArray - */ - public enum EnumQueryStringArray_testEnumParameters: String, CaseIterable { - case greaterThan = ">" - case dollar = "$" - } - - /** - * enum for parameter enumQueryString - */ - public enum EnumQueryString_testEnumParameters: String, CaseIterable { - case abc = "_abc" - case efg = "-efg" - case xyz = "(xyz)" - } - - /** - * enum for parameter enumQueryInteger - */ - public enum EnumQueryInteger_testEnumParameters: Int, CaseIterable { - case _1 = 1 - case number2 = -2 - } - - /** - * enum for parameter enumQueryDouble - */ - public enum EnumQueryDouble_testEnumParameters: Double, CaseIterable { - case _11 = 1.1 - case number12 = -1.2 - } - - /** - * enum for parameter enumFormStringArray - */ - public enum EnumFormStringArray_testEnumParameters: String, CaseIterable { - case greaterThan = ">" - case dollar = "$" - } - - /** - * enum for parameter enumFormString - */ - public enum EnumFormString_testEnumParameters: String, CaseIterable { - case abc = "_abc" - case efg = "-efg" - case xyz = "(xyz)" - } - - /** - To test enum parameters - - - parameter enumHeaderStringArray: (header) Header parameter enum test (string array) (optional) - - parameter enumHeaderString: (header) Header parameter enum test (string) (optional, default to .efg) - - parameter enumQueryStringArray: (query) Query parameter enum test (string array) (optional) - - parameter enumQueryString: (query) Query parameter enum test (string) (optional, default to .efg) - - parameter enumQueryInteger: (query) Query parameter enum test (double) (optional) - - parameter enumQueryDouble: (query) Query parameter enum test (double) (optional) - - parameter enumFormStringArray: (form) Form parameter enum test (string array) (optional, default to .dollar) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .efg) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - To test enum parameters - - GET /fake - - To test enum parameters - - parameter enumHeaderStringArray: (header) Header parameter enum test (string array) (optional) - - parameter enumHeaderString: (header) Header parameter enum test (string) (optional, default to .efg) - - parameter enumQueryStringArray: (query) Query parameter enum test (string array) (optional) - - parameter enumQueryString: (query) Query parameter enum test (string) (optional, default to .efg) - - parameter enumQueryInteger: (query) Query parameter enum test (double) (optional) - - parameter enumQueryDouble: (query) Query parameter enum test (double) (optional) - - parameter enumFormStringArray: (form) Form parameter enum test (string array) (optional, default to .dollar) - - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .efg) - - returns: RequestBuilder - */ - open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path - let formParams: [String: Any?] = [ - "enum_form_string_array": enumFormStringArray?.encodeToJSON(), - "enum_form_string": enumFormString?.encodeToJSON(), - ] - - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) - - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ - "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), - "enum_query_string": enumQueryString?.encodeToJSON(), - "enum_query_integer": enumQueryInteger?.encodeToJSON(), - "enum_query_double": enumQueryDouble?.encodeToJSON(), - ]) - - let nillableHeaders: [String: Any?] = [ - "Content-Type": "application/x-www-form-urlencoded", - "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), - "enum_header_string": enumHeaderString?.encodeToJSON(), - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Fake endpoint to test group parameters (optional) - - - parameter requiredStringGroup: (query) Required String in group parameters - - parameter requiredBooleanGroup: (header) Required Boolean in group parameters - - parameter requiredInt64Group: (query) Required Integer in group parameters - - parameter stringGroup: (query) String in group parameters (optional) - - parameter booleanGroup: (header) Boolean in group parameters (optional) - - parameter int64Group: (query) Integer in group parameters (optional) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Fake endpoint to test group parameters (optional) - - DELETE /fake - - Fake endpoint to test group parameters (optional) - - parameter requiredStringGroup: (query) Required String in group parameters - - parameter requiredBooleanGroup: (header) Required Boolean in group parameters - - parameter requiredInt64Group: (query) Required Integer in group parameters - - parameter stringGroup: (query) String in group parameters (optional) - - parameter booleanGroup: (header) Boolean in group parameters (optional) - - parameter int64Group: (query) Integer in group parameters (optional) - - returns: RequestBuilder - */ - open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path - let parameters: [String: Any]? = nil - - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ - "required_string_group": requiredStringGroup.encodeToJSON(), - "required_int64_group": requiredInt64Group.encodeToJSON(), - "string_group": stringGroup?.encodeToJSON(), - "int64_group": int64Group?.encodeToJSON(), - ]) - - let nillableHeaders: [String: Any?] = [ - "required_boolean_group": requiredBooleanGroup.encodeToJSON(), - "boolean_group": booleanGroup?.encodeToJSON(), - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - test inline additionalProperties - - - parameter param: (body) request body - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - test inline additionalProperties - - POST /fake/inline-additionalProperties - - parameter param: (body) request body - - returns: RequestBuilder - */ - open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - test json serialization of form data - - - parameter param: (form) field1 - - parameter param2: (form) field2 - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - test json serialization of form data - - GET /fake/jsonFormData - - parameter param: (form) field1 - - parameter param2: (form) field2 - - returns: RequestBuilder - */ - open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { - let path = "/fake/jsonFormData" - let URLString = PetstoreClientAPI.basePath + path - let formParams: [String: Any?] = [ - "param": param.encodeToJSON(), - "param2": param2.encodeToJSON(), - ] - - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - "Content-Type": "application/x-www-form-urlencoded", - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/FakeClassnameTags123API.swift deleted file mode 100644 index d4d65166496..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/FakeClassnameTags123API.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// FakeClassnameTags123API.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -open class FakeClassnameTags123API { - /** - To test class name in snake case - - - parameter body: (body) client model - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { - testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - To test class name in snake case - - PATCH /fake_classname_test - - To test class name in snake case - - API Key: - - type: apiKey api_key_query (QUERY) - - name: api_key_query - - parameter body: (body) client model - - returns: RequestBuilder - */ - open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake_classname_test" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/PetAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/PetAPI.swift deleted file mode 100644 index a1fe0d12b1d..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/PetAPI.swift +++ /dev/null @@ -1,483 +0,0 @@ -// -// PetAPI.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -open class PetAPI { - /** - Add a new pet to the store - - - parameter body: (body) Pet object that needs to be added to the store - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Add a new pet to the store - - POST /pet - - OAuth: - - type: oauth2 - - name: petstore_auth - - parameter body: (body) Pet object that needs to be added to the store - - returns: RequestBuilder - */ - open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Deletes a pet - - - parameter petId: (path) Pet id to delete - - parameter apiKey: (header) (optional) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Deletes a pet - - DELETE /pet/{petId} - - OAuth: - - type: oauth2 - - name: petstore_auth - - parameter petId: (path) Pet id to delete - - parameter apiKey: (header) (optional) - - returns: RequestBuilder - */ - open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" - let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" - let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path - let parameters: [String: Any]? = nil - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - "api_key": apiKey?.encodeToJSON(), - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - * enum for parameter status - */ - public enum Status_findPetsByStatus: String, CaseIterable { - case available = "available" - case pending = "pending" - case sold = "sold" - } - - /** - Finds Pets by status - - - parameter status: (query) Status values that need to be considered for filter - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { - findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Finds Pets by status - - GET /pet/findByStatus - - Multiple status values can be provided with comma separated strings - - OAuth: - - type: oauth2 - - name: petstore_auth - - parameter status: (query) Status values that need to be considered for filter - - returns: RequestBuilder<[Pet]> - */ - open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path - let parameters: [String: Any]? = nil - - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ - "status": status.encodeToJSON(), - ]) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Finds Pets by tags - - - parameter tags: (query) Tags to filter by - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - @available(*, deprecated, message: "This operation is deprecated.") - open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { - findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Finds Pets by tags - - GET /pet/findByTags - - Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - - OAuth: - - type: oauth2 - - name: petstore_auth - - parameter tags: (query) Tags to filter by - - returns: RequestBuilder<[Pet]> - */ - @available(*, deprecated, message: "This operation is deprecated.") - open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path - let parameters: [String: Any]? = nil - - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ - "tags": tags.encodeToJSON(), - ]) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Find pet by ID - - - parameter petId: (path) ID of pet to return - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { - getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Find pet by ID - - GET /pet/{petId} - - Returns a single pet - - API Key: - - type: apiKey api_key - - name: api_key - - parameter petId: (path) ID of pet to return - - returns: RequestBuilder - */ - open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" - let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" - let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path - let parameters: [String: Any]? = nil - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Update an existing pet - - - parameter body: (body) Pet object that needs to be added to the store - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Update an existing pet - - PUT /pet - - OAuth: - - type: oauth2 - - name: petstore_auth - - parameter body: (body) Pet object that needs to be added to the store - - returns: RequestBuilder - */ - open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Updates a pet in the store with form data - - - parameter petId: (path) ID of pet that needs to be updated - - parameter name: (form) Updated name of the pet (optional) - - parameter status: (form) Updated status of the pet (optional) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Updates a pet in the store with form data - - POST /pet/{petId} - - OAuth: - - type: oauth2 - - name: petstore_auth - - parameter petId: (path) ID of pet that needs to be updated - - parameter name: (form) Updated name of the pet (optional) - - parameter status: (form) Updated status of the pet (optional) - - returns: RequestBuilder - */ - open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" - let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" - let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path - let formParams: [String: Any?] = [ - "name": name?.encodeToJSON(), - "status": status?.encodeToJSON(), - ] - - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - "Content-Type": "application/x-www-form-urlencoded", - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - uploads an image - - - parameter petId: (path) ID of pet to update - - parameter additionalMetadata: (form) Additional data to pass to server (optional) - - parameter file: (form) file to upload (optional) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { - uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - uploads an image - - POST /pet/{petId}/uploadImage - - OAuth: - - type: oauth2 - - name: petstore_auth - - parameter petId: (path) ID of pet to update - - parameter additionalMetadata: (form) Additional data to pass to server (optional) - - parameter file: (form) file to upload (optional) - - returns: RequestBuilder - */ - open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" - let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" - let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path - let formParams: [String: Any?] = [ - "additionalMetadata": additionalMetadata?.encodeToJSON(), - "file": file?.encodeToJSON(), - ] - - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - "Content-Type": "multipart/form-data", - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - uploads an image (required) - - - parameter petId: (path) ID of pet to update - - parameter requiredFile: (form) file to upload - - parameter additionalMetadata: (form) Additional data to pass to server (optional) - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { - uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - uploads an image (required) - - POST /fake/{petId}/uploadImageWithRequiredFile - - OAuth: - - type: oauth2 - - name: petstore_auth - - parameter petId: (path) ID of pet to update - - parameter requiredFile: (form) file to upload - - parameter additionalMetadata: (form) Additional data to pass to server (optional) - - returns: RequestBuilder - */ - open class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil) -> RequestBuilder { - var path = "/fake/{petId}/uploadImageWithRequiredFile" - let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" - let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path - let formParams: [String: Any?] = [ - "additionalMetadata": additionalMetadata?.encodeToJSON(), - "requiredFile": requiredFile.encodeToJSON(), - ] - - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - "Content-Type": "multipart/form-data", - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/StoreAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/StoreAPI.swift deleted file mode 100644 index 501f11f5f21..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/StoreAPI.swift +++ /dev/null @@ -1,189 +0,0 @@ -// -// StoreAPI.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -open class StoreAPI { - /** - Delete purchase order by ID - - - parameter orderId: (path) ID of the order that needs to be deleted - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Delete purchase order by ID - - DELETE /store/order/{order_id} - - For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - - parameter orderId: (path) ID of the order that needs to be deleted - - returns: RequestBuilder - */ - open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{order_id}" - let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" - let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path - let parameters: [String: Any]? = nil - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Returns pet inventories by status - - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { - getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Returns pet inventories by status - - GET /store/inventory - - Returns a map of status codes to quantities - - API Key: - - type: apiKey api_key - - name: api_key - - returns: RequestBuilder<[String: Int]> - */ - open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path - let parameters: [String: Any]? = nil - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Find purchase order by ID - - - parameter orderId: (path) ID of pet that needs to be fetched - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { - getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Find purchase order by ID - - GET /store/order/{order_id} - - For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - - parameter orderId: (path) ID of pet that needs to be fetched - - returns: RequestBuilder - */ - open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{order_id}" - let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" - let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path - let parameters: [String: Any]? = nil - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Place an order for a pet - - - parameter body: (body) order placed for purchasing the pet - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { - placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Place an order for a pet - - POST /store/order - - parameter body: (body) order placed for purchasing the pet - - returns: RequestBuilder - */ - open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/UserAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/UserAPI.swift deleted file mode 100644 index 254474014d3..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/APIs/UserAPI.swift +++ /dev/null @@ -1,366 +0,0 @@ -// -// UserAPI.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -open class UserAPI { - /** - Create user - - - parameter body: (body) Created user object - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Create user - - POST /user - - This can only be done by the logged in user. - - parameter body: (body) Created user object - - returns: RequestBuilder - */ - open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Creates list of users with given input array - - - parameter body: (body) List of user object - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Creates list of users with given input array - - POST /user/createWithArray - - parameter body: (body) List of user object - - returns: RequestBuilder - */ - open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Creates list of users with given input array - - - parameter body: (body) List of user object - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Creates list of users with given input array - - POST /user/createWithList - - parameter body: (body) List of user object - - returns: RequestBuilder - */ - open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Delete user - - - parameter username: (path) The name that needs to be deleted - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Delete user - - DELETE /user/{username} - - This can only be done by the logged in user. - - parameter username: (path) The name that needs to be deleted - - returns: RequestBuilder - */ - open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" - let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" - let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path - let parameters: [String: Any]? = nil - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Get user by user name - - - parameter username: (path) The name that needs to be fetched. Use user1 for testing. - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { - getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Get user by user name - - GET /user/{username} - - parameter username: (path) The name that needs to be fetched. Use user1 for testing. - - returns: RequestBuilder - */ - open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" - let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" - let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path - let parameters: [String: Any]? = nil - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Logs user into the system - - - parameter username: (query) The user name for login - - parameter password: (query) The password for login in clear text - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { - loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in - switch result { - case let .success(response): - completion(response.body, nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Logs user into the system - - GET /user/login - - responseHeaders: [X-Rate-Limit(Int), X-Expires-After(Date)] - - parameter username: (query) The user name for login - - parameter password: (query) The password for login in clear text - - returns: RequestBuilder - */ - open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path - let parameters: [String: Any]? = nil - - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ - "username": username.encodeToJSON(), - "password": password.encodeToJSON(), - ]) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() - - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Logs out current logged in user session - - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Logs out current logged in user session - - GET /user/logout - - returns: RequestBuilder - */ - open class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path - let parameters: [String: Any]? = nil - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - - /** - Updated user - - - parameter username: (path) name that need to be deleted - - parameter body: (body) Updated user object - - parameter apiResponseQueue: The queue on which api response is dispatched. - - parameter completion: completion handler to receive the data and the error objects - */ - open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { - updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in - switch result { - case .success: - completion((), nil) - case let .failure(error): - completion(nil, error) - } - } - } - - /** - Updated user - - PUT /user/{username} - - This can only be done by the logged in user. - - parameter username: (path) name that need to be deleted - - parameter body: (body) Updated user object - - returns: RequestBuilder - */ - open class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { - var path = "/user/{username}" - let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" - let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - - let urlComponents = URLComponents(string: URLString) - - let nillableHeaders: [String: Any?] = [ - : - ] - - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() - - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/CodableHelper.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/CodableHelper.swift deleted file mode 100644 index 09c82e53e13..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/CodableHelper.swift +++ /dev/null @@ -1,49 +0,0 @@ -// -// CodableHelper.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -open class CodableHelper { - private static var customDateFormatter: DateFormatter? - private static var defaultDateFormatter: DateFormatter = OpenISO8601DateFormatter() - - private static var customJSONDecoder: JSONDecoder? - private static var defaultJSONDecoder: JSONDecoder = { - let decoder = JSONDecoder() - decoder.dateDecodingStrategy = .formatted(CodableHelper.dateFormatter) - return decoder - }() - - private static var customJSONEncoder: JSONEncoder? - private static var defaultJSONEncoder: JSONEncoder = { - let encoder = JSONEncoder() - encoder.dateEncodingStrategy = .formatted(CodableHelper.dateFormatter) - encoder.outputFormatting = .prettyPrinted - return encoder - }() - - public static var dateFormatter: DateFormatter { - get { return customDateFormatter ?? defaultDateFormatter } - set { customDateFormatter = newValue } - } - public static var jsonDecoder: JSONDecoder { - get { return customJSONDecoder ?? defaultJSONDecoder } - set { customJSONDecoder = newValue } - } - public static var jsonEncoder: JSONEncoder { - get { return customJSONEncoder ?? defaultJSONEncoder } - set { customJSONEncoder = newValue } - } - - open class func decode(_ type: T.Type, from data: Data) -> Swift.Result where T: Decodable { - return Swift.Result { try jsonDecoder.decode(type, from: data) } - } - - open class func encode(_ value: T) -> Swift.Result where T: Encodable { - return Swift.Result { try jsonEncoder.encode(value) } - } -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Configuration.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Configuration.swift deleted file mode 100644 index 18edabbed78..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Configuration.swift +++ /dev/null @@ -1,14 +0,0 @@ -// Configuration.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -open class Configuration { - // This value is used to configure the date formatter that is used to serialize dates into JSON format. - // You must set it prior to encoding any dates, and it will only be read once. - @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") - public static var dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Extensions.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Extensions.swift deleted file mode 100644 index 3aef2d1d6c5..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Extensions.swift +++ /dev/null @@ -1,227 +0,0 @@ -// Extensions.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -extension Bool: JSONEncodable { - func encodeToJSON() -> Any { return self as Any } -} - -extension Float: JSONEncodable { - func encodeToJSON() -> Any { return self as Any } -} - -extension Int: JSONEncodable { - func encodeToJSON() -> Any { return self as Any } -} - -extension Int32: JSONEncodable { - func encodeToJSON() -> Any { return NSNumber(value: self as Int32) } -} - -extension Int64: JSONEncodable { - func encodeToJSON() -> Any { return NSNumber(value: self as Int64) } -} - -extension Double: JSONEncodable { - func encodeToJSON() -> Any { return self as Any } -} - -extension String: JSONEncodable { - func encodeToJSON() -> Any { return self as Any } -} - -extension RawRepresentable where RawValue: JSONEncodable { - func encodeToJSON() -> Any { return self.rawValue as Any } -} - -private func encodeIfPossible(_ object: T) -> Any { - if let encodableObject = object as? JSONEncodable { - return encodableObject.encodeToJSON() - } else { - return object as Any - } -} - -extension Array: JSONEncodable { - func encodeToJSON() -> Any { - return self.map(encodeIfPossible) - } -} - -extension Set: JSONEncodable { - func encodeToJSON() -> Any { - return Array(self).encodeToJSON() - } -} - -extension Dictionary: JSONEncodable { - func encodeToJSON() -> Any { - var dictionary = [AnyHashable: Any]() - for (key, value) in self { - dictionary[key] = encodeIfPossible(value) - } - return dictionary as Any - } -} - -extension Data: JSONEncodable { - func encodeToJSON() -> Any { - return self.base64EncodedString(options: Data.Base64EncodingOptions()) - } -} - -extension Date: JSONEncodable { - func encodeToJSON() -> Any { - return CodableHelper.dateFormatter.string(from: self) as Any - } -} - -extension URL: JSONEncodable { - func encodeToJSON() -> Any { - return self - } -} - -extension UUID: JSONEncodable { - func encodeToJSON() -> Any { - return self.uuidString - } -} - -extension String: CodingKey { - - public var stringValue: String { - return self - } - - public init?(stringValue: String) { - self.init(stringLiteral: stringValue) - } - - public var intValue: Int? { - return nil - } - - public init?(intValue: Int) { - return nil - } - -} - -extension KeyedEncodingContainerProtocol { - - public mutating func encodeArray(_ values: [T], forKey key: Self.Key) throws where T: Encodable { - var arrayContainer = nestedUnkeyedContainer(forKey: key) - try arrayContainer.encode(contentsOf: values) - } - - public mutating func encodeArrayIfPresent(_ values: [T]?, forKey key: Self.Key) throws where T: Encodable { - if let values = values { - try encodeArray(values, forKey: key) - } - } - - public mutating func encodeMap(_ pairs: [Self.Key: T]) throws where T: Encodable { - for (key, value) in pairs { - try encode(value, forKey: key) - } - } - - public mutating func encodeMapIfPresent(_ pairs: [Self.Key: T]?) throws where T: Encodable { - if let pairs = pairs { - try encodeMap(pairs) - } - } - -} - -extension KeyedDecodingContainerProtocol { - - public func decodeArray(_ type: T.Type, forKey key: Self.Key) throws -> [T] where T: Decodable { - var tmpArray = [T]() - - var nestedContainer = try nestedUnkeyedContainer(forKey: key) - while !nestedContainer.isAtEnd { - let arrayValue = try nestedContainer.decode(T.self) - tmpArray.append(arrayValue) - } - - return tmpArray - } - - public func decodeArrayIfPresent(_ type: T.Type, forKey key: Self.Key) throws -> [T]? where T: Decodable { - var tmpArray: [T]? - - if contains(key) { - tmpArray = try decodeArray(T.self, forKey: key) - } - - return tmpArray - } - - public func decodeMap(_ type: T.Type, excludedKeys: Set) throws -> [Self.Key: T] where T: Decodable { - var map: [Self.Key: T] = [:] - - for key in allKeys { - if !excludedKeys.contains(key) { - let value = try decode(T.self, forKey: key) - map[key] = value - } - } - - return map - } - -} - -extension HTTPURLResponse { - var isStatusCodeSuccessful: Bool { - return Array(200 ..< 300).contains(statusCode) - } -} - -extension AnyCodable: Hashable { - public func hash(into hasher: inout Hasher) { - switch value { - case let value as Bool: - hasher.combine(value) - case let value as Int: - hasher.combine(value) - case let value as Int8: - hasher.combine(value) - case let value as Int16: - hasher.combine(value) - case let value as Int32: - hasher.combine(value) - case let value as Int64: - hasher.combine(value) - case let value as UInt: - hasher.combine(value) - case let value as UInt8: - hasher.combine(value) - case let value as UInt16: - hasher.combine(value) - case let value as UInt32: - hasher.combine(value) - case let value as UInt64: - hasher.combine(value) - case let value as Float: - hasher.combine(value) - case let value as Double: - hasher.combine(value) - case let value as String: - hasher.combine(value) - case let value as [String: AnyCodable]: - hasher.combine(value) - case let value as [AnyCodable]: - hasher.combine(value) - default: - hasher.combine(0) - } - } -} \ No newline at end of file diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/JSONDataEncoding.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/JSONDataEncoding.swift deleted file mode 100644 index b79e9f5e64d..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/JSONDataEncoding.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// JSONDataEncoding.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -public struct JSONDataEncoding { - - // MARK: Properties - - private static let jsonDataKey = "jsonData" - - // MARK: Encoding - - /// Creates a URL request by encoding parameters and applying them onto an existing request. - /// - /// - parameter urlRequest: The request to have parameters applied. - /// - parameter parameters: The parameters to apply. This should have a single key/value - /// pair with "jsonData" as the key and a Data object as the value. - /// - /// - throws: An `Error` if the encoding process encounters an error. - /// - /// - returns: The encoded request. - public func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) -> URLRequest { - var urlRequest = urlRequest - - guard let jsonData = parameters?[JSONDataEncoding.jsonDataKey] as? Data, !jsonData.isEmpty else { - return urlRequest - } - - if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil { - urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") - } - - urlRequest.httpBody = jsonData - - return urlRequest - } - - public static func encodingParameters(jsonData: Data?) -> [String: Any]? { - var returnedParams: [String: Any]? - if let jsonData = jsonData, !jsonData.isEmpty { - var params: [String: Any] = [:] - params[jsonDataKey] = jsonData - returnedParams = params - } - return returnedParams - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/JSONEncodingHelper.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/JSONEncodingHelper.swift deleted file mode 100644 index 02f78ffb470..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/JSONEncodingHelper.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// JSONEncodingHelper.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -open class JSONEncodingHelper { - - open class func encodingParameters(forEncodableObject encodableObj: T?) -> [String: Any]? { - var params: [String: Any]? - - // Encode the Encodable object - if let encodableObj = encodableObj { - let encodeResult = CodableHelper.encode(encodableObj) - do { - let data = try encodeResult.get() - params = JSONDataEncoding.encodingParameters(jsonData: data) - } catch { - print(error.localizedDescription) - } - } - - return params - } - - open class func encodingParameters(forEncodableObject encodableObj: Any?) -> [String: Any]? { - var params: [String: Any]? - - if let encodableObj = encodableObj { - do { - let data = try JSONSerialization.data(withJSONObject: encodableObj, options: .prettyPrinted) - params = JSONDataEncoding.encodingParameters(jsonData: data) - } catch { - print(error.localizedDescription) - return nil - } - } - - return params - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models.swift deleted file mode 100644 index 96e26a20f7d..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models.swift +++ /dev/null @@ -1,54 +0,0 @@ -// Models.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -protocol JSONEncodable { - func encodeToJSON() -> Any -} - -public enum ErrorResponse: Error { - case error(Int, Data?, URLResponse?, Error) -} - -public enum DownloadException: Error { - case responseDataMissing - case responseFailed - case requestMissing - case requestMissingPath - case requestMissingURL -} - -public enum DecodableRequestBuilderError: Error { - case emptyDataResponse - case nilHTTPResponse - case unsuccessfulHTTPStatusCode - case jsonDecoding(DecodingError) - case generalError(Error) -} - -open class Response { - public let statusCode: Int - public let header: [String: String] - public let body: T? - - public init(statusCode: Int, header: [String: String], body: T?) { - self.statusCode = statusCode - self.header = header - self.body = body - } - - public convenience init(response: HTTPURLResponse, body: T?) { - let rawHeader = response.allHeaderFields - var header = [String: String]() - for (key, value) in rawHeader { - if let key = key.base as? String, let value = value as? String { - header[key] = value - } - } - self.init(statusCode: response.statusCode, header: header, body: body) - } -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/AdditionalPropertiesClass.swift deleted file mode 100644 index 5c3e8279143..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/AdditionalPropertiesClass.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// AdditionalPropertiesClass.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class AdditionalPropertiesClass: Codable, Hashable { - - public var mapString: [String: String]? - public var mapMapString: [String: [String: String]]? - - public init(mapString: [String: String]? = nil, mapMapString: [String: [String: String]]? = nil) { - self.mapString = mapString - self.mapMapString = mapMapString - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case mapString = "map_string" - case mapMapString = "map_map_string" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(mapString, forKey: .mapString) - try container.encodeIfPresent(mapMapString, forKey: .mapMapString) - } - - - - public static func == (lhs: AdditionalPropertiesClass, rhs: AdditionalPropertiesClass) -> Bool { - lhs.mapString == rhs.mapString && - lhs.mapMapString == rhs.mapMapString - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(mapString?.hashValue) - hasher.combine(mapMapString?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Animal.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Animal.swift deleted file mode 100644 index 6bae9f2d0ec..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Animal.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// Animal.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class Animal: Codable, Hashable { - - public var className: String - public var color: String? = "red" - - public init(className: String, color: String? = "red") { - self.className = className - self.color = color - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case className - case color - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encode(className, forKey: .className) - try container.encodeIfPresent(color, forKey: .color) - } - - - - public static func == (lhs: Animal, rhs: Animal) -> Bool { - lhs.className == rhs.className && - lhs.color == rhs.color - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(className.hashValue) - hasher.combine(color?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/AnimalFarm.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/AnimalFarm.swift deleted file mode 100644 index b20b894a1ad..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/AnimalFarm.swift +++ /dev/null @@ -1,11 +0,0 @@ -// -// AnimalFarm.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ApiResponse.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ApiResponse.swift deleted file mode 100644 index a0f3a24a8ee..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ApiResponse.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// ApiResponse.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class ApiResponse: Codable, Hashable { - - public var code: Int? - public var type: String? - public var message: String? - - public init(code: Int? = nil, type: String? = nil, message: String? = nil) { - self.code = code - self.type = type - self.message = message - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case code - case type - case message - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(code, forKey: .code) - try container.encodeIfPresent(type, forKey: .type) - try container.encodeIfPresent(message, forKey: .message) - } - - - - public static func == (lhs: ApiResponse, rhs: ApiResponse) -> Bool { - lhs.code == rhs.code && - lhs.type == rhs.type && - lhs.message == rhs.message - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(code?.hashValue) - hasher.combine(type?.hashValue) - hasher.combine(message?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ArrayOfArrayOfNumberOnly.swift deleted file mode 100644 index b4b66b37be5..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ArrayOfArrayOfNumberOnly.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// ArrayOfArrayOfNumberOnly.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class ArrayOfArrayOfNumberOnly: Codable, Hashable { - - public var arrayArrayNumber: [[Double]]? - - public init(arrayArrayNumber: [[Double]]? = nil) { - self.arrayArrayNumber = arrayArrayNumber - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case arrayArrayNumber = "ArrayArrayNumber" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) - } - - - - public static func == (lhs: ArrayOfArrayOfNumberOnly, rhs: ArrayOfArrayOfNumberOnly) -> Bool { - lhs.arrayArrayNumber == rhs.arrayArrayNumber - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(arrayArrayNumber?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ArrayOfNumberOnly.swift deleted file mode 100644 index 1efbc2aa9e4..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ArrayOfNumberOnly.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// ArrayOfNumberOnly.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class ArrayOfNumberOnly: Codable, Hashable { - - public var arrayNumber: [Double]? - - public init(arrayNumber: [Double]? = nil) { - self.arrayNumber = arrayNumber - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case arrayNumber = "ArrayNumber" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) - } - - - - public static func == (lhs: ArrayOfNumberOnly, rhs: ArrayOfNumberOnly) -> Bool { - lhs.arrayNumber == rhs.arrayNumber - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(arrayNumber?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ArrayTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ArrayTest.swift deleted file mode 100644 index 6ca479263d3..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ArrayTest.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// ArrayTest.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class ArrayTest: Codable, Hashable { - - public var arrayOfString: [String]? - public var arrayArrayOfInteger: [[Int64]]? - public var arrayArrayOfModel: [[ReadOnlyFirst]]? - - public init(arrayOfString: [String]? = nil, arrayArrayOfInteger: [[Int64]]? = nil, arrayArrayOfModel: [[ReadOnlyFirst]]? = nil) { - self.arrayOfString = arrayOfString - self.arrayArrayOfInteger = arrayArrayOfInteger - self.arrayArrayOfModel = arrayArrayOfModel - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case arrayOfString = "array_of_string" - case arrayArrayOfInteger = "array_array_of_integer" - case arrayArrayOfModel = "array_array_of_model" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(arrayOfString, forKey: .arrayOfString) - try container.encodeIfPresent(arrayArrayOfInteger, forKey: .arrayArrayOfInteger) - try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) - } - - - - public static func == (lhs: ArrayTest, rhs: ArrayTest) -> Bool { - lhs.arrayOfString == rhs.arrayOfString && - lhs.arrayArrayOfInteger == rhs.arrayArrayOfInteger && - lhs.arrayArrayOfModel == rhs.arrayArrayOfModel - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(arrayOfString?.hashValue) - hasher.combine(arrayArrayOfInteger?.hashValue) - hasher.combine(arrayArrayOfModel?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Capitalization.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Capitalization.swift deleted file mode 100644 index fd148a09d29..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Capitalization.swift +++ /dev/null @@ -1,72 +0,0 @@ -// -// Capitalization.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class Capitalization: Codable, Hashable { - - public var smallCamel: String? - public var capitalCamel: String? - public var smallSnake: String? - public var capitalSnake: String? - public var sCAETHFlowPoints: String? - /** Name of the pet */ - public var ATT_NAME: String? - - public init(smallCamel: String? = nil, capitalCamel: String? = nil, smallSnake: String? = nil, capitalSnake: String? = nil, sCAETHFlowPoints: String? = nil, ATT_NAME: String? = nil) { - self.smallCamel = smallCamel - self.capitalCamel = capitalCamel - self.smallSnake = smallSnake - self.capitalSnake = capitalSnake - self.sCAETHFlowPoints = sCAETHFlowPoints - self.ATT_NAME = ATT_NAME - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case smallCamel - case capitalCamel = "CapitalCamel" - case smallSnake = "small_Snake" - case capitalSnake = "Capital_Snake" - case sCAETHFlowPoints = "SCA_ETH_Flow_Points" - case ATT_NAME - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(smallCamel, forKey: .smallCamel) - try container.encodeIfPresent(capitalCamel, forKey: .capitalCamel) - try container.encodeIfPresent(smallSnake, forKey: .smallSnake) - try container.encodeIfPresent(capitalSnake, forKey: .capitalSnake) - try container.encodeIfPresent(sCAETHFlowPoints, forKey: .sCAETHFlowPoints) - try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) - } - - - - public static func == (lhs: Capitalization, rhs: Capitalization) -> Bool { - lhs.smallCamel == rhs.smallCamel && - lhs.capitalCamel == rhs.capitalCamel && - lhs.smallSnake == rhs.smallSnake && - lhs.capitalSnake == rhs.capitalSnake && - lhs.sCAETHFlowPoints == rhs.sCAETHFlowPoints && - lhs.ATT_NAME == rhs.ATT_NAME - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(smallCamel?.hashValue) - hasher.combine(capitalCamel?.hashValue) - hasher.combine(smallSnake?.hashValue) - hasher.combine(capitalSnake?.hashValue) - hasher.combine(sCAETHFlowPoints?.hashValue) - hasher.combine(ATT_NAME?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Cat.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Cat.swift deleted file mode 100644 index 54b81364f35..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Cat.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// Cat.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class Cat: Codable, Hashable { - - public var className: String - public var color: String? = "red" - public var declawed: Bool? - - public init(className: String, color: String? = "red", declawed: Bool? = nil) { - self.className = className - self.color = color - self.declawed = declawed - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case className - case color - case declawed - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encode(className, forKey: .className) - try container.encodeIfPresent(color, forKey: .color) - try container.encodeIfPresent(declawed, forKey: .declawed) - } - - - - public static func == (lhs: Cat, rhs: Cat) -> Bool { - lhs.className == rhs.className && - lhs.color == rhs.color && - lhs.declawed == rhs.declawed - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(className.hashValue) - hasher.combine(color?.hashValue) - hasher.combine(declawed?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/CatAllOf.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/CatAllOf.swift deleted file mode 100644 index 5074d59cb5d..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/CatAllOf.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// CatAllOf.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class CatAllOf: Codable, Hashable { - - public var declawed: Bool? - - public init(declawed: Bool? = nil) { - self.declawed = declawed - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case declawed - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(declawed, forKey: .declawed) - } - - - - public static func == (lhs: CatAllOf, rhs: CatAllOf) -> Bool { - lhs.declawed == rhs.declawed - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(declawed?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Category.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Category.swift deleted file mode 100644 index 242fc578d45..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Category.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// Category.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class Category: Codable, Hashable { - - public var id: Int64? - public var name: String? = "default-name" - - public init(id: Int64? = nil, name: String? = "default-name") { - self.id = id - self.name = name - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case id - case name - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(id, forKey: .id) - try container.encode(name, forKey: .name) - } - - - - public static func == (lhs: Category, rhs: Category) -> Bool { - lhs.id == rhs.id && - lhs.name == rhs.name - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(id?.hashValue) - hasher.combine(name.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ClassModel.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ClassModel.swift deleted file mode 100644 index 1b54393ed9f..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ClassModel.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// ClassModel.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -/** Model for testing model with \"_class\" property */ -public struct ClassModel: Codable, Hashable { - - public var `class`: String? - - public init(`class`: String? = nil) { - self.`class` = `class` - } - - public enum CodingKeys: String, CodingKey, CaseIterable { - case `class` = "_class" - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Client.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Client.swift deleted file mode 100644 index 323ab20082d..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Client.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// Client.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class Client: Codable, Hashable { - - public var client: String? - - public init(client: String? = nil) { - self.client = client - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case client - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(client, forKey: .client) - } - - - - public static func == (lhs: Client, rhs: Client) -> Bool { - lhs.client == rhs.client - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(client?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Dog.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Dog.swift deleted file mode 100644 index ec8a6748035..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Dog.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// Dog.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class Dog: Codable, Hashable { - - public var className: String - public var color: String? = "red" - public var breed: String? - - public init(className: String, color: String? = "red", breed: String? = nil) { - self.className = className - self.color = color - self.breed = breed - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case className - case color - case breed - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encode(className, forKey: .className) - try container.encodeIfPresent(color, forKey: .color) - try container.encodeIfPresent(breed, forKey: .breed) - } - - - - public static func == (lhs: Dog, rhs: Dog) -> Bool { - lhs.className == rhs.className && - lhs.color == rhs.color && - lhs.breed == rhs.breed - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(className.hashValue) - hasher.combine(color?.hashValue) - hasher.combine(breed?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/DogAllOf.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/DogAllOf.swift deleted file mode 100644 index 82d185f1a42..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/DogAllOf.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// DogAllOf.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class DogAllOf: Codable, Hashable { - - public var breed: String? - - public init(breed: String? = nil) { - self.breed = breed - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case breed - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(breed, forKey: .breed) - } - - - - public static func == (lhs: DogAllOf, rhs: DogAllOf) -> Bool { - lhs.breed == rhs.breed - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(breed?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/EnumArrays.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/EnumArrays.swift deleted file mode 100644 index 573cb86e1ba..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/EnumArrays.swift +++ /dev/null @@ -1,55 +0,0 @@ -// -// EnumArrays.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class EnumArrays: Codable, Hashable { - - public enum JustSymbol: String, Codable, CaseIterable { - case greaterThanOrEqualTo = ">=" - case dollar = "$" - } - public enum ArrayEnum: String, Codable, CaseIterable { - case fish = "fish" - case crab = "crab" - } - public var justSymbol: JustSymbol? - public var arrayEnum: [ArrayEnum]? - - public init(justSymbol: JustSymbol? = nil, arrayEnum: [ArrayEnum]? = nil) { - self.justSymbol = justSymbol - self.arrayEnum = arrayEnum - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case justSymbol = "just_symbol" - case arrayEnum = "array_enum" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(justSymbol, forKey: .justSymbol) - try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) - } - - - - public static func == (lhs: EnumArrays, rhs: EnumArrays) -> Bool { - lhs.justSymbol == rhs.justSymbol && - lhs.arrayEnum == rhs.arrayEnum - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(justSymbol?.hashValue) - hasher.combine(arrayEnum?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/EnumClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/EnumClass.swift deleted file mode 100644 index ab01cf297f8..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/EnumClass.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// EnumClass.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public enum EnumClass: String, Codable, CaseIterable { - case abc = "_abc" - case efg = "-efg" - case xyz = "(xyz)" -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/EnumTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/EnumTest.swift deleted file mode 100644 index ca04771171b..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/EnumTest.swift +++ /dev/null @@ -1,83 +0,0 @@ -// -// EnumTest.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class EnumTest: Codable, Hashable { - - public enum EnumString: String, Codable, CaseIterable { - case upper = "UPPER" - case lower = "lower" - case empty = "" - } - public enum EnumStringRequired: String, Codable, CaseIterable { - case upper = "UPPER" - case lower = "lower" - case empty = "" - } - public enum EnumInteger: Int, Codable, CaseIterable { - case _1 = 1 - case number1 = -1 - } - public enum EnumNumber: Double, Codable, CaseIterable { - case _11 = 1.1 - case number12 = -1.2 - } - public var enumString: EnumString? - public var enumStringRequired: EnumStringRequired - public var enumInteger: EnumInteger? - public var enumNumber: EnumNumber? - public var outerEnum: OuterEnum? - - public init(enumString: EnumString? = nil, enumStringRequired: EnumStringRequired, enumInteger: EnumInteger? = nil, enumNumber: EnumNumber? = nil, outerEnum: OuterEnum? = nil) { - self.enumString = enumString - self.enumStringRequired = enumStringRequired - self.enumInteger = enumInteger - self.enumNumber = enumNumber - self.outerEnum = outerEnum - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case enumString = "enum_string" - case enumStringRequired = "enum_string_required" - case enumInteger = "enum_integer" - case enumNumber = "enum_number" - case outerEnum - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(enumString, forKey: .enumString) - try container.encode(enumStringRequired, forKey: .enumStringRequired) - try container.encodeIfPresent(enumInteger, forKey: .enumInteger) - try container.encodeIfPresent(enumNumber, forKey: .enumNumber) - try container.encodeIfPresent(outerEnum, forKey: .outerEnum) - } - - - - public static func == (lhs: EnumTest, rhs: EnumTest) -> Bool { - lhs.enumString == rhs.enumString && - lhs.enumStringRequired == rhs.enumStringRequired && - lhs.enumInteger == rhs.enumInteger && - lhs.enumNumber == rhs.enumNumber && - lhs.outerEnum == rhs.outerEnum - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(enumString?.hashValue) - hasher.combine(enumStringRequired.hashValue) - hasher.combine(enumInteger?.hashValue) - hasher.combine(enumNumber?.hashValue) - hasher.combine(outerEnum?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/File.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/File.swift deleted file mode 100644 index a899d021b87..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/File.swift +++ /dev/null @@ -1,43 +0,0 @@ -// -// File.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -/** Must be named `File` for test. */ -public final class File: Codable, Hashable { - - /** Test capitalization */ - public var sourceURI: String? - - public init(sourceURI: String? = nil) { - self.sourceURI = sourceURI - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case sourceURI - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(sourceURI, forKey: .sourceURI) - } - - - - public static func == (lhs: File, rhs: File) -> Bool { - lhs.sourceURI == rhs.sourceURI - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(sourceURI?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/FileSchemaTestClass.swift deleted file mode 100644 index 2465bd5103f..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/FileSchemaTestClass.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// FileSchemaTestClass.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class FileSchemaTestClass: Codable, Hashable { - - public var file: File? - public var files: [File]? - - public init(file: File? = nil, files: [File]? = nil) { - self.file = file - self.files = files - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case file - case files - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(file, forKey: .file) - try container.encodeIfPresent(files, forKey: .files) - } - - - - public static func == (lhs: FileSchemaTestClass, rhs: FileSchemaTestClass) -> Bool { - lhs.file == rhs.file && - lhs.files == rhs.files - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(file?.hashValue) - hasher.combine(files?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/FormatTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/FormatTest.swift deleted file mode 100644 index 52c9d58241f..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/FormatTest.swift +++ /dev/null @@ -1,113 +0,0 @@ -// -// FormatTest.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class FormatTest: Codable, Hashable { - - public var integer: Int? - public var int32: Int? - public var int64: Int64? - public var number: Double - public var float: Float? - public var double: Double? - public var string: String? - public var byte: Data - public var binary: URL? - public var date: Date - public var dateTime: Date? - public var uuid: UUID? - public var password: String - - public init(integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, number: Double, float: Float? = nil, double: Double? = nil, string: String? = nil, byte: Data, binary: URL? = nil, date: Date, dateTime: Date? = nil, uuid: UUID? = nil, password: String) { - self.integer = integer - self.int32 = int32 - self.int64 = int64 - self.number = number - self.float = float - self.double = double - self.string = string - self.byte = byte - self.binary = binary - self.date = date - self.dateTime = dateTime - self.uuid = uuid - self.password = password - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case integer - case int32 - case int64 - case number - case float - case double - case string - case byte - case binary - case date - case dateTime - case uuid - case password - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(integer, forKey: .integer) - try container.encodeIfPresent(int32, forKey: .int32) - try container.encodeIfPresent(int64, forKey: .int64) - try container.encode(number, forKey: .number) - try container.encodeIfPresent(float, forKey: .float) - try container.encodeIfPresent(double, forKey: .double) - try container.encodeIfPresent(string, forKey: .string) - try container.encode(byte, forKey: .byte) - try container.encodeIfPresent(binary, forKey: .binary) - try container.encode(date, forKey: .date) - try container.encodeIfPresent(dateTime, forKey: .dateTime) - try container.encodeIfPresent(uuid, forKey: .uuid) - try container.encode(password, forKey: .password) - } - - - - public static func == (lhs: FormatTest, rhs: FormatTest) -> Bool { - lhs.integer == rhs.integer && - lhs.int32 == rhs.int32 && - lhs.int64 == rhs.int64 && - lhs.number == rhs.number && - lhs.float == rhs.float && - lhs.double == rhs.double && - lhs.string == rhs.string && - lhs.byte == rhs.byte && - lhs.binary == rhs.binary && - lhs.date == rhs.date && - lhs.dateTime == rhs.dateTime && - lhs.uuid == rhs.uuid && - lhs.password == rhs.password - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(integer?.hashValue) - hasher.combine(int32?.hashValue) - hasher.combine(int64?.hashValue) - hasher.combine(number.hashValue) - hasher.combine(float?.hashValue) - hasher.combine(double?.hashValue) - hasher.combine(string?.hashValue) - hasher.combine(byte.hashValue) - hasher.combine(binary?.hashValue) - hasher.combine(date.hashValue) - hasher.combine(dateTime?.hashValue) - hasher.combine(uuid?.hashValue) - hasher.combine(password.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/HasOnlyReadOnly.swift deleted file mode 100644 index 4044065d4f8..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/HasOnlyReadOnly.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// HasOnlyReadOnly.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class HasOnlyReadOnly: Codable, Hashable { - - public var bar: String? - public var foo: String? - - public init(bar: String? = nil, foo: String? = nil) { - self.bar = bar - self.foo = foo - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case bar - case foo - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(bar, forKey: .bar) - try container.encodeIfPresent(foo, forKey: .foo) - } - - - - public static func == (lhs: HasOnlyReadOnly, rhs: HasOnlyReadOnly) -> Bool { - lhs.bar == rhs.bar && - lhs.foo == rhs.foo - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(bar?.hashValue) - hasher.combine(foo?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/List.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/List.swift deleted file mode 100644 index c2457325b5b..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/List.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// List.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class List: Codable, Hashable { - - public var _123list: String? - - public init(_123list: String? = nil) { - self._123list = _123list - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case _123list = "123-list" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(_123list, forKey: ._123list) - } - - - - public static func == (lhs: List, rhs: List) -> Bool { - lhs._123list == rhs._123list - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(_123list?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/MapTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/MapTest.swift deleted file mode 100644 index 83a6f77e76e..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/MapTest.swift +++ /dev/null @@ -1,63 +0,0 @@ -// -// MapTest.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class MapTest: Codable, Hashable { - - public enum MapOfEnumString: String, Codable, CaseIterable { - case upper = "UPPER" - case lower = "lower" - } - public var mapMapOfString: [String: [String: String]]? - public var mapOfEnumString: [String: String]? - public var directMap: [String: Bool]? - public var indirectMap: StringBooleanMap? - - public init(mapMapOfString: [String: [String: String]]? = nil, mapOfEnumString: [String: String]? = nil, directMap: [String: Bool]? = nil, indirectMap: StringBooleanMap? = nil) { - self.mapMapOfString = mapMapOfString - self.mapOfEnumString = mapOfEnumString - self.directMap = directMap - self.indirectMap = indirectMap - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case mapMapOfString = "map_map_of_string" - case mapOfEnumString = "map_of_enum_string" - case directMap = "direct_map" - case indirectMap = "indirect_map" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(mapMapOfString, forKey: .mapMapOfString) - try container.encodeIfPresent(mapOfEnumString, forKey: .mapOfEnumString) - try container.encodeIfPresent(directMap, forKey: .directMap) - try container.encodeIfPresent(indirectMap, forKey: .indirectMap) - } - - - - public static func == (lhs: MapTest, rhs: MapTest) -> Bool { - lhs.mapMapOfString == rhs.mapMapOfString && - lhs.mapOfEnumString == rhs.mapOfEnumString && - lhs.directMap == rhs.directMap && - lhs.indirectMap == rhs.indirectMap - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(mapMapOfString?.hashValue) - hasher.combine(mapOfEnumString?.hashValue) - hasher.combine(directMap?.hashValue) - hasher.combine(indirectMap?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/MixedPropertiesAndAdditionalPropertiesClass.swift deleted file mode 100644 index 08222b23f5c..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// MixedPropertiesAndAdditionalPropertiesClass.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { - - public var uuid: UUID? - public var dateTime: Date? - public var map: [String: Animal]? - - public init(uuid: UUID? = nil, dateTime: Date? = nil, map: [String: Animal]? = nil) { - self.uuid = uuid - self.dateTime = dateTime - self.map = map - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case uuid - case dateTime - case map - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(uuid, forKey: .uuid) - try container.encodeIfPresent(dateTime, forKey: .dateTime) - try container.encodeIfPresent(map, forKey: .map) - } - - - - public static func == (lhs: MixedPropertiesAndAdditionalPropertiesClass, rhs: MixedPropertiesAndAdditionalPropertiesClass) -> Bool { - lhs.uuid == rhs.uuid && - lhs.dateTime == rhs.dateTime && - lhs.map == rhs.map - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(uuid?.hashValue) - hasher.combine(dateTime?.hashValue) - hasher.combine(map?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Model200Response.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Model200Response.swift deleted file mode 100644 index 034d4d2979b..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Model200Response.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// Model200Response.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -/** Model for testing model name starting with number */ -public struct Model200Response: Codable, Hashable { - - public var name: Int? - public var `class`: String? - - public init(name: Int? = nil, `class`: String? = nil) { - self.name = name - self.`class` = `class` - } - - public enum CodingKeys: String, CodingKey, CaseIterable { - case name - case `class` = "class" - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Name.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Name.swift deleted file mode 100644 index 533e5f2aea3..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Name.swift +++ /dev/null @@ -1,60 +0,0 @@ -// -// Name.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -/** Model for testing model name same as property name */ -public final class Name: Codable, Hashable { - - public var name: Int - public var snakeCase: Int? - public var property: String? - public var _123number: Int? - - public init(name: Int, snakeCase: Int? = nil, property: String? = nil, _123number: Int? = nil) { - self.name = name - self.snakeCase = snakeCase - self.property = property - self._123number = _123number - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case name - case snakeCase = "snake_case" - case property - case _123number = "123Number" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encode(name, forKey: .name) - try container.encodeIfPresent(snakeCase, forKey: .snakeCase) - try container.encodeIfPresent(property, forKey: .property) - try container.encodeIfPresent(_123number, forKey: ._123number) - } - - - - public static func == (lhs: Name, rhs: Name) -> Bool { - lhs.name == rhs.name && - lhs.snakeCase == rhs.snakeCase && - lhs.property == rhs.property && - lhs._123number == rhs._123number - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(name.hashValue) - hasher.combine(snakeCase?.hashValue) - hasher.combine(property?.hashValue) - hasher.combine(_123number?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/NumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/NumberOnly.swift deleted file mode 100644 index be9925066ce..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/NumberOnly.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// NumberOnly.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class NumberOnly: Codable, Hashable { - - public var justNumber: Double? - - public init(justNumber: Double? = nil) { - self.justNumber = justNumber - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case justNumber = "JustNumber" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(justNumber, forKey: .justNumber) - } - - - - public static func == (lhs: NumberOnly, rhs: NumberOnly) -> Bool { - lhs.justNumber == rhs.justNumber - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(justNumber?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Order.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Order.swift deleted file mode 100644 index cfce5645a20..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Order.swift +++ /dev/null @@ -1,77 +0,0 @@ -// -// Order.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class Order: Codable, Hashable { - - public enum Status: String, Codable, CaseIterable { - case placed = "placed" - case approved = "approved" - case delivered = "delivered" - } - public var id: Int64? - public var petId: Int64? - public var quantity: Int? - public var shipDate: Date? - /** Order Status */ - public var status: Status? - public var complete: Bool? = false - - public init(id: Int64? = nil, petId: Int64? = nil, quantity: Int? = nil, shipDate: Date? = nil, status: Status? = nil, complete: Bool? = false) { - self.id = id - self.petId = petId - self.quantity = quantity - self.shipDate = shipDate - self.status = status - self.complete = complete - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case id - case petId - case quantity - case shipDate - case status - case complete - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(id, forKey: .id) - try container.encodeIfPresent(petId, forKey: .petId) - try container.encodeIfPresent(quantity, forKey: .quantity) - try container.encodeIfPresent(shipDate, forKey: .shipDate) - try container.encodeIfPresent(status, forKey: .status) - try container.encodeIfPresent(complete, forKey: .complete) - } - - - - public static func == (lhs: Order, rhs: Order) -> Bool { - lhs.id == rhs.id && - lhs.petId == rhs.petId && - lhs.quantity == rhs.quantity && - lhs.shipDate == rhs.shipDate && - lhs.status == rhs.status && - lhs.complete == rhs.complete - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(id?.hashValue) - hasher.combine(petId?.hashValue) - hasher.combine(quantity?.hashValue) - hasher.combine(shipDate?.hashValue) - hasher.combine(status?.hashValue) - hasher.combine(complete?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/OuterComposite.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/OuterComposite.swift deleted file mode 100644 index d238c4c13dd..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/OuterComposite.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// OuterComposite.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class OuterComposite: Codable, Hashable { - - public var myNumber: Double? - public var myString: String? - public var myBoolean: Bool? - - public init(myNumber: Double? = nil, myString: String? = nil, myBoolean: Bool? = nil) { - self.myNumber = myNumber - self.myString = myString - self.myBoolean = myBoolean - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case myNumber = "my_number" - case myString = "my_string" - case myBoolean = "my_boolean" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(myNumber, forKey: .myNumber) - try container.encodeIfPresent(myString, forKey: .myString) - try container.encodeIfPresent(myBoolean, forKey: .myBoolean) - } - - - - public static func == (lhs: OuterComposite, rhs: OuterComposite) -> Bool { - lhs.myNumber == rhs.myNumber && - lhs.myString == rhs.myString && - lhs.myBoolean == rhs.myBoolean - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(myNumber?.hashValue) - hasher.combine(myString?.hashValue) - hasher.combine(myBoolean?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/OuterEnum.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/OuterEnum.swift deleted file mode 100644 index 9bd6f3bef8f..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/OuterEnum.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// OuterEnum.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public enum OuterEnum: String, Codable, CaseIterable { - case placed = "placed" - case approved = "approved" - case delivered = "delivered" -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Pet.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Pet.swift deleted file mode 100644 index c036d6d0cfb..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Pet.swift +++ /dev/null @@ -1,77 +0,0 @@ -// -// Pet.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class Pet: Codable, Hashable { - - public enum Status: String, Codable, CaseIterable { - case available = "available" - case pending = "pending" - case sold = "sold" - } - public var id: Int64? - public var category: Category? - public var name: String - public var photoUrls: [String] - public var tags: [Tag]? - /** pet status in the store */ - public var status: Status? - - public init(id: Int64? = nil, category: Category? = nil, name: String, photoUrls: [String], tags: [Tag]? = nil, status: Status? = nil) { - self.id = id - self.category = category - self.name = name - self.photoUrls = photoUrls - self.tags = tags - self.status = status - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case id - case category - case name - case photoUrls - case tags - case status - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(id, forKey: .id) - try container.encodeIfPresent(category, forKey: .category) - try container.encode(name, forKey: .name) - try container.encode(photoUrls, forKey: .photoUrls) - try container.encodeIfPresent(tags, forKey: .tags) - try container.encodeIfPresent(status, forKey: .status) - } - - - - public static func == (lhs: Pet, rhs: Pet) -> Bool { - lhs.id == rhs.id && - lhs.category == rhs.category && - lhs.name == rhs.name && - lhs.photoUrls == rhs.photoUrls && - lhs.tags == rhs.tags && - lhs.status == rhs.status - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(id?.hashValue) - hasher.combine(category?.hashValue) - hasher.combine(name.hashValue) - hasher.combine(photoUrls.hashValue) - hasher.combine(tags?.hashValue) - hasher.combine(status?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ReadOnlyFirst.swift deleted file mode 100644 index 1e2cdb966f2..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/ReadOnlyFirst.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// ReadOnlyFirst.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class ReadOnlyFirst: Codable, Hashable { - - public var bar: String? - public var baz: String? - - public init(bar: String? = nil, baz: String? = nil) { - self.bar = bar - self.baz = baz - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case bar - case baz - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(bar, forKey: .bar) - try container.encodeIfPresent(baz, forKey: .baz) - } - - - - public static func == (lhs: ReadOnlyFirst, rhs: ReadOnlyFirst) -> Bool { - lhs.bar == rhs.bar && - lhs.baz == rhs.baz - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(bar?.hashValue) - hasher.combine(baz?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Return.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Return.swift deleted file mode 100644 index 2831cd656be..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Return.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// Return.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -/** Model for testing reserved words */ -public struct Return: Codable, Hashable { - - public var `return`: Int? - - public init(`return`: Int? = nil) { - self.`return` = `return` - } - - public enum CodingKeys: String, CodingKey, CaseIterable { - case `return` = "return" - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/SpecialModelName.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/SpecialModelName.swift deleted file mode 100644 index 3fd24733174..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/SpecialModelName.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// SpecialModelName.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class SpecialModelName: Codable, Hashable { - - public var specialPropertyName: Int64? - - public init(specialPropertyName: Int64? = nil) { - self.specialPropertyName = specialPropertyName - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case specialPropertyName = "$special[property.name]" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) - } - - - - public static func == (lhs: SpecialModelName, rhs: SpecialModelName) -> Bool { - lhs.specialPropertyName == rhs.specialPropertyName - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(specialPropertyName?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/StringBooleanMap.swift deleted file mode 100644 index 9e90edf7be9..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/StringBooleanMap.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// StringBooleanMap.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class StringBooleanMap: Codable, Hashable { - - public enum CodingKeys: CodingKey, CaseIterable { - } - public var additionalProperties: [String: Bool] = [:] - - public subscript(key: String) -> Bool? { - get { - if let value = additionalProperties[key] { - return value - } - return nil - } - - set { - additionalProperties[key] = newValue - } - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - var additionalPropertiesContainer = encoder.container(keyedBy: String.self) - try additionalPropertiesContainer.encodeMap(additionalProperties) - } - - // Decodable protocol methods - - public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) - - var nonAdditionalPropertyKeys = Set() - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) - } - - - public static func == (lhs: StringBooleanMap, rhs: StringBooleanMap) -> Bool { - lhs.additionalProperties == rhs.additionalProperties - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(additionalProperties.hashValue) - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Tag.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Tag.swift deleted file mode 100644 index b30b0f62ace..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/Tag.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// Tag.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class Tag: Codable, Hashable { - - public var id: Int64? - public var name: String? - - public init(id: Int64? = nil, name: String? = nil) { - self.id = id - self.name = name - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case id - case name - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(id, forKey: .id) - try container.encodeIfPresent(name, forKey: .name) - } - - - - public static func == (lhs: Tag, rhs: Tag) -> Bool { - lhs.id == rhs.id && - lhs.name == rhs.name - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(id?.hashValue) - hasher.combine(name?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/TypeHolderDefault.swift deleted file mode 100644 index f99b86d1d64..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/TypeHolderDefault.swift +++ /dev/null @@ -1,65 +0,0 @@ -// -// TypeHolderDefault.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class TypeHolderDefault: Codable, Hashable { - - public var stringItem: String = "what" - public var numberItem: Double - public var integerItem: Int - public var boolItem: Bool = true - public var arrayItem: [Int] - - public init(stringItem: String = "what", numberItem: Double, integerItem: Int, boolItem: Bool = true, arrayItem: [Int]) { - self.stringItem = stringItem - self.numberItem = numberItem - self.integerItem = integerItem - self.boolItem = boolItem - self.arrayItem = arrayItem - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case stringItem = "string_item" - case numberItem = "number_item" - case integerItem = "integer_item" - case boolItem = "bool_item" - case arrayItem = "array_item" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encode(stringItem, forKey: .stringItem) - try container.encode(numberItem, forKey: .numberItem) - try container.encode(integerItem, forKey: .integerItem) - try container.encode(boolItem, forKey: .boolItem) - try container.encode(arrayItem, forKey: .arrayItem) - } - - - - public static func == (lhs: TypeHolderDefault, rhs: TypeHolderDefault) -> Bool { - lhs.stringItem == rhs.stringItem && - lhs.numberItem == rhs.numberItem && - lhs.integerItem == rhs.integerItem && - lhs.boolItem == rhs.boolItem && - lhs.arrayItem == rhs.arrayItem - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(stringItem.hashValue) - hasher.combine(numberItem.hashValue) - hasher.combine(integerItem.hashValue) - hasher.combine(boolItem.hashValue) - hasher.combine(arrayItem.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/TypeHolderExample.swift deleted file mode 100644 index d266ad2f0d1..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/TypeHolderExample.swift +++ /dev/null @@ -1,65 +0,0 @@ -// -// TypeHolderExample.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class TypeHolderExample: Codable, Hashable { - - public var stringItem: String - public var numberItem: Double - public var integerItem: Int - public var boolItem: Bool - public var arrayItem: [Int] - - public init(stringItem: String, numberItem: Double, integerItem: Int, boolItem: Bool, arrayItem: [Int]) { - self.stringItem = stringItem - self.numberItem = numberItem - self.integerItem = integerItem - self.boolItem = boolItem - self.arrayItem = arrayItem - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case stringItem = "string_item" - case numberItem = "number_item" - case integerItem = "integer_item" - case boolItem = "bool_item" - case arrayItem = "array_item" - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encode(stringItem, forKey: .stringItem) - try container.encode(numberItem, forKey: .numberItem) - try container.encode(integerItem, forKey: .integerItem) - try container.encode(boolItem, forKey: .boolItem) - try container.encode(arrayItem, forKey: .arrayItem) - } - - - - public static func == (lhs: TypeHolderExample, rhs: TypeHolderExample) -> Bool { - lhs.stringItem == rhs.stringItem && - lhs.numberItem == rhs.numberItem && - lhs.integerItem == rhs.integerItem && - lhs.boolItem == rhs.boolItem && - lhs.arrayItem == rhs.arrayItem - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(stringItem.hashValue) - hasher.combine(numberItem.hashValue) - hasher.combine(integerItem.hashValue) - hasher.combine(boolItem.hashValue) - hasher.combine(arrayItem.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/User.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/User.swift deleted file mode 100644 index dcbecdf498d..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/Models/User.swift +++ /dev/null @@ -1,84 +0,0 @@ -// -// User.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -import AnyCodable - -public final class User: Codable, Hashable { - - public var id: Int64? - public var username: String? - public var firstName: String? - public var lastName: String? - public var email: String? - public var password: String? - public var phone: String? - /** User Status */ - public var userStatus: Int? - - public init(id: Int64? = nil, username: String? = nil, firstName: String? = nil, lastName: String? = nil, email: String? = nil, password: String? = nil, phone: String? = nil, userStatus: Int? = nil) { - self.id = id - self.username = username - self.firstName = firstName - self.lastName = lastName - self.email = email - self.password = password - self.phone = phone - self.userStatus = userStatus - } - public enum CodingKeys: String, CodingKey, CaseIterable { - case id - case username - case firstName - case lastName - case email - case password - case phone - case userStatus - } - - // Encodable protocol methods - - public func encode(to encoder: Encoder) throws { - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(id, forKey: .id) - try container.encodeIfPresent(username, forKey: .username) - try container.encodeIfPresent(firstName, forKey: .firstName) - try container.encodeIfPresent(lastName, forKey: .lastName) - try container.encodeIfPresent(email, forKey: .email) - try container.encodeIfPresent(password, forKey: .password) - try container.encodeIfPresent(phone, forKey: .phone) - try container.encodeIfPresent(userStatus, forKey: .userStatus) - } - - - - public static func == (lhs: User, rhs: User) -> Bool { - lhs.id == rhs.id && - lhs.username == rhs.username && - lhs.firstName == rhs.firstName && - lhs.lastName == rhs.lastName && - lhs.email == rhs.email && - lhs.password == rhs.password && - lhs.phone == rhs.phone && - lhs.userStatus == rhs.userStatus - - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(id?.hashValue) - hasher.combine(username?.hashValue) - hasher.combine(firstName?.hashValue) - hasher.combine(lastName?.hashValue) - hasher.combine(email?.hashValue) - hasher.combine(password?.hashValue) - hasher.combine(phone?.hashValue) - hasher.combine(userStatus?.hashValue) - - } - -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/OpenISO8601DateFormatter.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/OpenISO8601DateFormatter.swift deleted file mode 100644 index e06208074cd..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/OpenISO8601DateFormatter.swift +++ /dev/null @@ -1,44 +0,0 @@ -// -// OpenISO8601DateFormatter.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -// https://stackoverflow.com/a/50281094/976628 -public class OpenISO8601DateFormatter: DateFormatter { - static let withoutSeconds: DateFormatter = { - let formatter = DateFormatter() - formatter.calendar = Calendar(identifier: .iso8601) - formatter.locale = Locale(identifier: "en_US_POSIX") - formatter.timeZone = TimeZone(secondsFromGMT: 0) - formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" - return formatter - }() - - private func setup() { - calendar = Calendar(identifier: .iso8601) - locale = Locale(identifier: "en_US_POSIX") - timeZone = TimeZone(secondsFromGMT: 0) - dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" - } - - override init() { - super.init() - setup() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - setup() - } - - override public func date(from string: String) -> Date? { - if let result = super.date(from: string) { - return result - } - return OpenISO8601DateFormatter.withoutSeconds.date(from: string) - } -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs.swift index dbdab491ff7..01bc6ff0d8d 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs.swift @@ -6,7 +6,10 @@ import Foundation -open class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] @@ -32,7 +35,7 @@ open class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } open func addHeaders(_ aHeaders: [String: String]) { @@ -41,7 +44,7 @@ open class RequestBuilder { } } - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } public func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -51,7 +54,7 @@ open class RequestBuilder { } open func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift index 72b89640eeb..cce6d705d43 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift @@ -7,6 +7,9 @@ import Foundation +extension PetstoreClient { + + open class AnotherFakeAPI { /** To test special tags @@ -15,7 +18,7 @@ open class AnotherFakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -35,7 +38,7 @@ open class AnotherFakeAPI { */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/another-fake/dummy" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,9 +49,10 @@ open class AnotherFakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift index cf92424d9cc..dbe358912cb 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift @@ -7,6 +7,9 @@ import Foundation +extension PetstoreClient { + + open class FakeAPI { /** @@ -14,7 +17,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { + open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -33,7 +36,7 @@ open class FakeAPI { */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { let path = "/fake/outer/boolean" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -44,7 +47,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -55,7 +58,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -74,7 +77,7 @@ open class FakeAPI { */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { let path = "/fake/outer/composite" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -85,7 +88,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -96,7 +99,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { + open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -115,7 +118,7 @@ open class FakeAPI { */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { let path = "/fake/outer/number" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -126,7 +129,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -137,7 +140,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -156,7 +159,7 @@ open class FakeAPI { */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { let path = "/fake/outer/string" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -167,7 +170,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -178,7 +181,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -197,7 +200,7 @@ open class FakeAPI { */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { let path = "/fake/body-with-file-schema" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -208,7 +211,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -220,7 +223,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -239,7 +242,7 @@ open class FakeAPI { */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { let path = "/fake/body-with-query-params" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) var urlComponents = URLComponents(string: URLString) @@ -253,7 +256,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -265,7 +268,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -285,7 +288,7 @@ open class FakeAPI { */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -296,7 +299,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -321,7 +324,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -357,7 +360,7 @@ open class FakeAPI { */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), @@ -386,7 +389,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -472,7 +475,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -499,7 +502,7 @@ open class FakeAPI { */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), @@ -524,7 +527,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -541,7 +544,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -566,7 +569,7 @@ open class FakeAPI { */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -584,7 +587,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -596,7 +599,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -615,7 +618,7 @@ open class FakeAPI { */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) let urlComponents = URLComponents(string: URLString) @@ -626,7 +629,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -639,7 +642,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -659,7 +662,7 @@ open class FakeAPI { */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { let path = "/fake/jsonFormData" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), @@ -676,9 +679,10 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift index d4d65166496..a8bfc8b0546 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift @@ -7,6 +7,9 @@ import Foundation +extension PetstoreClient { + + open class FakeClassnameTags123API { /** To test class name in snake case @@ -15,7 +18,7 @@ open class FakeClassnameTags123API { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -38,7 +41,7 @@ open class FakeClassnameTags123API { */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake_classname_test" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -49,9 +52,10 @@ open class FakeClassnameTags123API { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/PetAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/PetAPI.swift index a1fe0d12b1d..ea664ec3af4 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/PetAPI.swift @@ -7,6 +7,9 @@ import Foundation +extension PetstoreClient { + + open class PetAPI { /** Add a new pet to the store @@ -15,7 +18,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -37,7 +40,7 @@ open class PetAPI { */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -48,7 +51,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -61,7 +64,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -87,7 +90,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -98,7 +101,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -119,7 +122,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -142,7 +145,7 @@ open class PetAPI { */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -156,7 +159,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -169,7 +172,7 @@ open class PetAPI { - parameter completion: completion handler to receive the data and the error objects */ @available(*, deprecated, message: "This operation is deprecated.") - open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -193,7 +196,7 @@ open class PetAPI { @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -207,7 +210,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -219,7 +222,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { + open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -245,7 +248,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -256,7 +259,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -268,7 +271,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -290,7 +293,7 @@ open class PetAPI { */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -301,7 +304,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -315,7 +318,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -342,7 +345,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), @@ -359,7 +362,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -373,7 +376,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -400,7 +403,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), @@ -417,7 +420,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -431,7 +434,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -458,7 +461,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), @@ -475,9 +478,10 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift index 501f11f5f21..6c53077c654 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift @@ -7,6 +7,9 @@ import Foundation +extension PetstoreClient { + + open class StoreAPI { /** Delete purchase order by ID @@ -15,7 +18,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -38,7 +41,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -49,7 +52,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -60,7 +63,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { + open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -82,7 +85,7 @@ open class StoreAPI { */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -93,7 +96,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -105,7 +108,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -128,7 +131,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -139,7 +142,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -151,7 +154,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -170,7 +173,7 @@ open class StoreAPI { */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -181,9 +184,10 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/UserAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/UserAPI.swift index 254474014d3..1b09adafcfb 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/UserAPI.swift @@ -7,6 +7,9 @@ import Foundation +extension PetstoreClient { + + open class UserAPI { /** Create user @@ -15,7 +18,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -35,7 +38,7 @@ open class UserAPI { */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { let path = "/user" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +49,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -58,7 +61,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -77,7 +80,7 @@ open class UserAPI { */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -88,7 +91,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -100,7 +103,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -119,7 +122,7 @@ open class UserAPI { */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -130,7 +133,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -142,7 +145,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -165,7 +168,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -176,7 +179,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -188,7 +191,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { + open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -210,7 +213,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -221,7 +224,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -234,7 +237,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -255,7 +258,7 @@ open class UserAPI { */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -270,7 +273,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -281,7 +284,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -299,7 +302,7 @@ open class UserAPI { */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -310,7 +313,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -323,7 +326,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -347,7 +350,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -358,9 +361,10 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Configuration.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Configuration.swift index 18edabbed78..2ad2048e74c 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Configuration.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Configuration.swift @@ -6,9 +6,14 @@ import Foundation +@available(*, deprecated, renamed: "PetstoreClient.Configuration") +public typealias Configuration = PetstoreClient.Configuration + +extension PetstoreClient { open class Configuration { // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") public static var dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift index 9363f25a029..1baefca5943 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.AdditionalPropertiesClass") +public typealias AdditionalPropertiesClass = PetstoreClient.AdditionalPropertiesClass + +extension PetstoreClient { + public final class AdditionalPropertiesClass: Codable, Hashable { public var mapString: [String: String]? @@ -45,3 +50,4 @@ public final class AdditionalPropertiesClass: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift index 9a953b845ba..bb576872813 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.Animal") +public typealias Animal = PetstoreClient.Animal + +extension PetstoreClient { + public final class Animal: Codable, Hashable { public var className: String @@ -45,3 +50,4 @@ public final class Animal: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AnimalFarm.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AnimalFarm.swift index a0b09cb9761..ef664c5e452 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AnimalFarm.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AnimalFarm.swift @@ -10,4 +10,10 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.AnimalFarm") +public typealias AnimalFarm = PetstoreClient.AnimalFarm + +extension PetstoreClient { + public typealias AnimalFarm = [Animal] +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift index b0e3bad14a1..7682a7cb7f9 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.ApiResponse") +public typealias ApiResponse = PetstoreClient.ApiResponse + +extension PetstoreClient { + public final class ApiResponse: Codable, Hashable { public var code: Int? @@ -51,3 +56,4 @@ public final class ApiResponse: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift index f0a8b45f20d..42b106c6f61 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.ArrayOfArrayOfNumberOnly") +public typealias ArrayOfArrayOfNumberOnly = PetstoreClient.ArrayOfArrayOfNumberOnly + +extension PetstoreClient { + public final class ArrayOfArrayOfNumberOnly: Codable, Hashable { public var arrayArrayNumber: [[Double]]? @@ -39,3 +44,4 @@ public final class ArrayOfArrayOfNumberOnly: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift index 08cd7166864..13a415a4469 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.ArrayOfNumberOnly") +public typealias ArrayOfNumberOnly = PetstoreClient.ArrayOfNumberOnly + +extension PetstoreClient { + public final class ArrayOfNumberOnly: Codable, Hashable { public var arrayNumber: [Double]? @@ -39,3 +44,4 @@ public final class ArrayOfNumberOnly: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift index c69cc3c6327..943c193458c 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.ArrayTest") +public typealias ArrayTest = PetstoreClient.ArrayTest + +extension PetstoreClient { + public final class ArrayTest: Codable, Hashable { public var arrayOfString: [String]? @@ -51,3 +56,4 @@ public final class ArrayTest: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift index cc5eeba963b..d72936f45ac 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.Capitalization") +public typealias Capitalization = PetstoreClient.Capitalization + +extension PetstoreClient { + public final class Capitalization: Codable, Hashable { public var smallCamel: String? @@ -70,3 +75,4 @@ public final class Capitalization: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift index cbcdf143b87..5ba88eae81c 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.Cat") +public typealias Cat = PetstoreClient.Cat + +extension PetstoreClient { + public final class Cat: Codable, Hashable { public var className: String @@ -51,3 +56,4 @@ public final class Cat: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift index 4b4f862fe10..4437f05ec8c 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.CatAllOf") +public typealias CatAllOf = PetstoreClient.CatAllOf + +extension PetstoreClient { + public final class CatAllOf: Codable, Hashable { public var declawed: Bool? @@ -39,3 +44,4 @@ public final class CatAllOf: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift index 3a88c62a05f..4cd6f0940b0 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.Category") +public typealias Category = PetstoreClient.Category + +extension PetstoreClient { + public final class Category: Codable, Hashable { public var id: Int64? @@ -45,3 +50,4 @@ public final class Category: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift index fee2cec87bf..ebba6acf1f3 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.ClassModel") +public typealias ClassModel = PetstoreClient.ClassModel + +extension PetstoreClient { + /** Model for testing model with \"_class\" property */ public final class ClassModel: Codable, Hashable { @@ -40,3 +45,4 @@ public final class ClassModel: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift index b9c0857371d..d671608ac8e 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.Client") +public typealias Client = PetstoreClient.Client + +extension PetstoreClient { + public final class Client: Codable, Hashable { public var client: String? @@ -39,3 +44,4 @@ public final class Client: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift index 022fddbb1fb..a506fe02097 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.Dog") +public typealias Dog = PetstoreClient.Dog + +extension PetstoreClient { + public final class Dog: Codable, Hashable { public var className: String @@ -51,3 +56,4 @@ public final class Dog: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift index 40f0a1291be..ea53f2f14e1 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.DogAllOf") +public typealias DogAllOf = PetstoreClient.DogAllOf + +extension PetstoreClient { + public final class DogAllOf: Codable, Hashable { public var breed: String? @@ -39,3 +44,4 @@ public final class DogAllOf: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift index e8a756e0ab3..82a858e1250 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.EnumArrays") +public typealias EnumArrays = PetstoreClient.EnumArrays + +extension PetstoreClient { + public final class EnumArrays: Codable, Hashable { public enum JustSymbol: String, Codable, CaseIterable { @@ -53,3 +58,4 @@ public final class EnumArrays: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumClass.swift index 6ea2895aee5..37984373236 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumClass.swift @@ -10,8 +10,14 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.EnumClass") +public typealias EnumClass = PetstoreClient.EnumClass + +extension PetstoreClient { + public enum EnumClass: String, Codable, CaseIterable { case abc = "_abc" case efg = "-efg" case xyz = "(xyz)" } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift index fdb508f216d..dc229bc0108 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.EnumTest") +public typealias EnumTest = PetstoreClient.EnumTest + +extension PetstoreClient { + public final class EnumTest: Codable, Hashable { public enum EnumString: String, Codable, CaseIterable { @@ -81,3 +86,4 @@ public final class EnumTest: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift index a8e0dfdebbb..0e8e00f2e4e 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.File") +public typealias File = PetstoreClient.File + +extension PetstoreClient { + /** Must be named `File` for test. */ public final class File: Codable, Hashable { @@ -41,3 +46,4 @@ public final class File: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift index c3de2775a3a..3eaf14887a6 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.FileSchemaTestClass") +public typealias FileSchemaTestClass = PetstoreClient.FileSchemaTestClass + +extension PetstoreClient { + public final class FileSchemaTestClass: Codable, Hashable { public var file: File? @@ -45,3 +50,4 @@ public final class FileSchemaTestClass: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift index 0ae5bd7d8a2..3becb33e171 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.FormatTest") +public typealias FormatTest = PetstoreClient.FormatTest + +extension PetstoreClient { + public final class FormatTest: Codable, Hashable { public var integer: Int? @@ -111,3 +116,4 @@ public final class FormatTest: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift index 7093d3cedf0..2eeee949b9e 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.HasOnlyReadOnly") +public typealias HasOnlyReadOnly = PetstoreClient.HasOnlyReadOnly + +extension PetstoreClient { + public final class HasOnlyReadOnly: Codable, Hashable { public var bar: String? @@ -45,3 +50,4 @@ public final class HasOnlyReadOnly: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift index cf232a2e300..d7bd15e4ab7 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.List") +public typealias List = PetstoreClient.List + +extension PetstoreClient { + public final class List: Codable, Hashable { public var _123list: String? @@ -39,3 +44,4 @@ public final class List: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift index 5c42a4be48f..e1b5051c98a 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.MapTest") +public typealias MapTest = PetstoreClient.MapTest + +extension PetstoreClient { + public final class MapTest: Codable, Hashable { public enum MapOfEnumString: String, Codable, CaseIterable { @@ -61,3 +66,4 @@ public final class MapTest: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index faeff27eb6b..126d5952d23 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.MixedPropertiesAndAdditionalPropertiesClass") +public typealias MixedPropertiesAndAdditionalPropertiesClass = PetstoreClient.MixedPropertiesAndAdditionalPropertiesClass + +extension PetstoreClient { + public final class MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { public var uuid: UUID? @@ -51,3 +56,4 @@ public final class MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashabl } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift index c254a7530aa..abec4f578a3 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.Model200Response") +public typealias Model200Response = PetstoreClient.Model200Response + +extension PetstoreClient { + /** Model for testing model name starting with number */ public final class Model200Response: Codable, Hashable { @@ -46,3 +51,4 @@ public final class Model200Response: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift index ce7ac369e33..ae67e9ce2c9 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.Name") +public typealias Name = PetstoreClient.Name + +extension PetstoreClient { + /** Model for testing model name same as property name */ public final class Name: Codable, Hashable { @@ -58,3 +63,4 @@ public final class Name: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift index 07273896204..122ba86ecf6 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.NumberOnly") +public typealias NumberOnly = PetstoreClient.NumberOnly + +extension PetstoreClient { + public final class NumberOnly: Codable, Hashable { public var justNumber: Double? @@ -39,3 +44,4 @@ public final class NumberOnly: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift index 623c7b839c4..31979b10b85 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.Order") +public typealias Order = PetstoreClient.Order + +extension PetstoreClient { + public final class Order: Codable, Hashable { public enum Status: String, Codable, CaseIterable { @@ -75,3 +80,4 @@ public final class Order: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift index 509f13dc3db..377df8fd2e0 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.OuterComposite") +public typealias OuterComposite = PetstoreClient.OuterComposite + +extension PetstoreClient { + public final class OuterComposite: Codable, Hashable { public var myNumber: Double? @@ -51,3 +56,4 @@ public final class OuterComposite: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterEnum.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterEnum.swift index 76c34b3c2ce..78ad5bedb38 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterEnum.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterEnum.swift @@ -10,8 +10,14 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.OuterEnum") +public typealias OuterEnum = PetstoreClient.OuterEnum + +extension PetstoreClient { + public enum OuterEnum: String, Codable, CaseIterable { case placed = "placed" case approved = "approved" case delivered = "delivered" } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift index c1bf287a8f3..d93428d9bda 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.Pet") +public typealias Pet = PetstoreClient.Pet + +extension PetstoreClient { + public final class Pet: Codable, Hashable { public enum Status: String, Codable, CaseIterable { @@ -75,3 +80,4 @@ public final class Pet: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift index 8e82bd882d0..e3a074ebcc8 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.ReadOnlyFirst") +public typealias ReadOnlyFirst = PetstoreClient.ReadOnlyFirst + +extension PetstoreClient { + public final class ReadOnlyFirst: Codable, Hashable { public var bar: String? @@ -45,3 +50,4 @@ public final class ReadOnlyFirst: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift index 4221455581b..f517ed55714 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.Return") +public typealias Return = PetstoreClient.Return + +extension PetstoreClient { + /** Model for testing reserved words */ public final class Return: Codable, Hashable { @@ -40,3 +45,4 @@ public final class Return: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift index 6e632eb17e7..3b5cc185319 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.SpecialModelName") +public typealias SpecialModelName = PetstoreClient.SpecialModelName + +extension PetstoreClient { + public final class SpecialModelName: Codable, Hashable { public var specialPropertyName: Int64? @@ -39,3 +44,4 @@ public final class SpecialModelName: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift index 305ce505696..1449e89190f 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.StringBooleanMap") +public typealias StringBooleanMap = PetstoreClient.StringBooleanMap + +extension PetstoreClient { + public final class StringBooleanMap: Codable, Hashable { @@ -42,10 +47,11 @@ public final class StringBooleanMap: Codable, Hashable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) var nonAdditionalPropertyKeys = Set() - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } public static func == (lhs: StringBooleanMap, rhs: StringBooleanMap) -> Bool { @@ -56,3 +62,4 @@ public final class StringBooleanMap: Codable, Hashable { hasher.combine(additionalProperties.hashValue) } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift index 7b44db42539..cfd84044fe2 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.Tag") +public typealias Tag = PetstoreClient.Tag + +extension PetstoreClient { + public final class Tag: Codable, Hashable { public var id: Int64? @@ -45,3 +50,4 @@ public final class Tag: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift index 30c51f43aea..82595deb500 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.TypeHolderDefault") +public typealias TypeHolderDefault = PetstoreClient.TypeHolderDefault + +extension PetstoreClient { + public final class TypeHolderDefault: Codable, Hashable { public var stringItem: String = "what" @@ -63,3 +68,4 @@ public final class TypeHolderDefault: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift index 4c49c40554a..9509c507b87 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.TypeHolderExample") +public typealias TypeHolderExample = PetstoreClient.TypeHolderExample + +extension PetstoreClient { + public final class TypeHolderExample: Codable, Hashable { public var stringItem: String @@ -63,3 +68,4 @@ public final class TypeHolderExample: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift index 984e8bfc66c..63b13180dcd 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift @@ -10,6 +10,11 @@ import Foundation import AnyCodable #endif +@available(*, deprecated, renamed: "PetstoreClient.User") +public typealias User = PetstoreClient.User + +extension PetstoreClient { + public final class User: Codable, Hashable { public var id: Int64? @@ -82,3 +87,4 @@ public final class User: Codable, Hashable { } } +} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift index fbf069a93c4..774c0427eaa 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift @@ -93,7 +93,7 @@ open class URLSessionRequestBuilder: RequestBuilder { return modifiedRequest } - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ open class URLSessionRequestBuilder: RequestBuilder { for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in PetstoreClientAPI.customHeaders { + for (key, value) in PetstoreClient.customHeaders { httpHeaders[key] = value } return httpHeaders diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/SynchronizedDictionary.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/SynchronizedDictionary.swift deleted file mode 100644 index acf7ff4031b..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/SynchronizedDictionary.swift +++ /dev/null @@ -1,36 +0,0 @@ -// SynchronizedDictionary.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation - -internal struct SynchronizedDictionary { - - private var dictionary = [K: V]() - private let queue = DispatchQueue( - label: "SynchronizedDictionary", - qos: DispatchQoS.userInitiated, - attributes: [DispatchQueue.Attributes.concurrent], - autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency.inherit, - target: nil - ) - - internal subscript(key: K) -> V? { - get { - var value: V? - - queue.sync { - value = self.dictionary[key] - } - - return value - } - set { - queue.sync(flags: DispatchWorkItemFlags.barrier) { - self.dictionary[key] = newValue - } - } - } -} diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/URLSessionImplementations.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/URLSessionImplementations.swift deleted file mode 100644 index 52b2071ec1a..00000000000 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/URLSessionImplementations.swift +++ /dev/null @@ -1,606 +0,0 @@ -// URLSessionImplementations.swift -// -// Generated by openapi-generator -// https://openapi-generator.tech -// - -import Foundation -#if !os(macOS) -import MobileCoreServices -#endif - -class URLSessionRequestBuilderFactory: RequestBuilderFactory { - func getNonDecodableBuilder() -> RequestBuilder.Type { - return URLSessionRequestBuilder.self - } - - func getBuilder() -> RequestBuilder.Type { - return URLSessionDecodableRequestBuilder.self - } -} - -// Store the URLSession to retain its reference -private var urlSessionStore = SynchronizedDictionary() - -open class URLSessionRequestBuilder: RequestBuilder { - - /** - May be assigned if you want to control the authentication challenges. - */ - public var taskDidReceiveChallenge: ((URLSession, URLSessionTask, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))? - - /** - May be assigned if you want to do any of those things: - - control the task completion - - intercept and handle errors like authorization - - retry the request. - */ - @available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client") - public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)? - - required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) { - super.init(method: method, URLString: URLString, parameters: parameters, headers: headers) - } - - /** - May be overridden by a subclass if you want to control the URLSession - configuration. - */ - open func createURLSession() -> URLSession { - let configuration = URLSessionConfiguration.default - configuration.httpAdditionalHeaders = buildHeaders() - let sessionDelegate = SessionDelegate() - sessionDelegate.credential = credential - sessionDelegate.taskDidReceiveChallenge = taskDidReceiveChallenge - return URLSession(configuration: configuration, delegate: sessionDelegate, delegateQueue: nil) - } - - /** - May be overridden by a subclass if you want to control the Content-Type - that is given to an uploaded form part. - - Return nil to use the default behavior (inferring the Content-Type from - the file extension). Return the desired Content-Type otherwise. - */ - open func contentTypeForFormPart(fileURL: URL) -> String? { - return nil - } - - /** - May be overridden by a subclass if you want to control the URLRequest - configuration (e.g. to override the cache policy). - */ - open func createURLRequest(urlSession: URLSession, method: HTTPMethod, encoding: ParameterEncoding, headers: [String: String]) throws -> URLRequest { - - guard let url = URL(string: URLString) else { - throw DownloadException.requestMissingURL - } - - var originalRequest = URLRequest(url: url) - - originalRequest.httpMethod = method.rawValue - - headers.forEach { key, value in - originalRequest.setValue(value, forHTTPHeaderField: key) - } - - buildHeaders().forEach { key, value in - originalRequest.setValue(value, forHTTPHeaderField: key) - } - - let modifiedRequest = try encoding.encode(originalRequest, with: parameters) - - return modifiedRequest - } - - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { - let urlSessionId = UUID().uuidString - // Create a new manager for each request to customize its request header - let urlSession = createURLSession() - urlSessionStore[urlSessionId] = urlSession - - guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") - } - - let encoding: ParameterEncoding - - switch xMethod { - case .get, .head: - encoding = URLEncoding() - - case .options, .post, .put, .patch, .delete, .trace, .connect: - let contentType = headers["Content-Type"] ?? "application/json" - - if contentType == "application/json" { - encoding = JSONDataEncoding() - } else if contentType == "multipart/form-data" { - encoding = FormDataEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:)) - } else if contentType == "application/x-www-form-urlencoded" { - encoding = FormURLEncoding() - } else { - fatalError("Unsuported Media Type - \(contentType)") - } - } - - let cleanupRequest = { - urlSessionStore[urlSessionId]?.finishTasksAndInvalidate() - urlSessionStore[urlSessionId] = nil - } - - do { - let request = try createURLRequest(urlSession: urlSession, method: xMethod, encoding: encoding, headers: headers) - - let dataTask = urlSession.dataTask(with: request) { data, response, error in - - if let taskCompletionShouldRetry = self.taskCompletionShouldRetry { - - taskCompletionShouldRetry(data, response, error) { shouldRetry in - - if shouldRetry { - cleanupRequest() - self.execute(apiResponseQueue, completion) - } else { - apiResponseQueue.async { - self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) - cleanupRequest() - } - } - } - } else { - apiResponseQueue.async { - self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) - cleanupRequest() - } - } - } - - if #available(iOS 11.0, macOS 10.13, macCatalyst 13.0, tvOS 11.0, watchOS 4.0, *) { - onProgressReady?(dataTask.progress) - } - - dataTask.resume() - - } catch { - apiResponseQueue.async { - cleanupRequest() - completion(.failure(ErrorResponse.error(415, nil, nil, error))) - } - } - } - - fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result, Error>) -> Void) { - - if let error = error { - completion(.failure(ErrorResponse.error(-1, data, response, error))) - return - } - - guard let httpResponse = response as? HTTPURLResponse else { - completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse))) - return - } - - guard httpResponse.isStatusCodeSuccessful else { - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode))) - return - } - - switch T.self { - case is String.Type: - - let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - - completion(.success(Response(response: httpResponse, body: body as? T))) - - case is URL.Type: - do { - - guard error == nil else { - throw DownloadException.responseFailed - } - - guard let data = data else { - throw DownloadException.responseDataMissing - } - - let fileManager = FileManager.default - let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] - let requestURL = try getURL(from: urlRequest) - - var requestPath = try getPath(from: requestURL) - - if let headerFileName = getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { - requestPath = requestPath.appending("/\(headerFileName)") - } - - let filePath = documentsDirectory.appendingPathComponent(requestPath) - let directoryPath = filePath.deletingLastPathComponent().path - - try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) - try data.write(to: filePath, options: .atomic) - - completion(.success(Response(response: httpResponse, body: filePath as? T))) - - } catch let requestParserError as DownloadException { - completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) - } catch { - completion(.failure(ErrorResponse.error(400, data, response, error))) - } - - case is Void.Type: - - completion(.success(Response(response: httpResponse, body: nil))) - - default: - - completion(.success(Response(response: httpResponse, body: data as? T))) - } - - } - - open func buildHeaders() -> [String: String] { - var httpHeaders: [String: String] = [:] - for (key, value) in headers { - httpHeaders[key] = value - } - for (key, value) in PetstoreClientAPI.customHeaders { - httpHeaders[key] = value - } - return httpHeaders - } - - fileprivate func getFileName(fromContentDisposition contentDisposition: String?) -> String? { - - guard let contentDisposition = contentDisposition else { - return nil - } - - let items = contentDisposition.components(separatedBy: ";") - - var filename: String? - - for contentItem in items { - - let filenameKey = "filename=" - guard let range = contentItem.range(of: filenameKey) else { - break - } - - filename = contentItem - return filename? - .replacingCharacters(in: range, with: "") - .replacingOccurrences(of: "\"", with: "") - .trimmingCharacters(in: .whitespacesAndNewlines) - } - - return filename - - } - - fileprivate func getPath(from url: URL) throws -> String { - - guard var path = URLComponents(url: url, resolvingAgainstBaseURL: true)?.path else { - throw DownloadException.requestMissingPath - } - - if path.hasPrefix("/") { - path.remove(at: path.startIndex) - } - - return path - - } - - fileprivate func getURL(from urlRequest: URLRequest) throws -> URL { - - guard let url = urlRequest.url else { - throw DownloadException.requestMissingURL - } - - return url - } - -} - -open class URLSessionDecodableRequestBuilder: URLSessionRequestBuilder { - override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result, Error>) -> Void) { - - if let error = error { - completion(.failure(ErrorResponse.error(-1, data, response, error))) - return - } - - guard let httpResponse = response as? HTTPURLResponse else { - completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse))) - return - } - - guard httpResponse.isStatusCodeSuccessful else { - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode))) - return - } - - switch T.self { - case is String.Type: - - let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - - completion(.success(Response(response: httpResponse, body: body as? T))) - - case is Void.Type: - - completion(.success(Response(response: httpResponse, body: nil))) - - case is Data.Type: - - completion(.success(Response(response: httpResponse, body: data as? T))) - - default: - - guard let data = data, !data.isEmpty else { - completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) - return - } - - let decodeResult = CodableHelper.decode(T.self, from: data) - - switch decodeResult { - case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) - case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) - } - } - } -} - -private class SessionDelegate: NSObject, URLSessionDelegate, URLSessionDataDelegate { - - var credential: URLCredential? - - var taskDidReceiveChallenge: ((URLSession, URLSessionTask, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))? - - func urlSession(_ session: URLSession, task: URLSessionTask, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { - - var disposition: URLSession.AuthChallengeDisposition = .performDefaultHandling - - var credential: URLCredential? - - if let taskDidReceiveChallenge = taskDidReceiveChallenge { - (disposition, credential) = taskDidReceiveChallenge(session, task, challenge) - } else { - if challenge.previousFailureCount > 0 { - disposition = .rejectProtectionSpace - } else { - credential = self.credential ?? session.configuration.urlCredentialStorage?.defaultCredential(for: challenge.protectionSpace) - - if credential != nil { - disposition = .useCredential - } - } - } - - completionHandler(disposition, credential) - } -} - -public enum HTTPMethod: String { - case options = "OPTIONS" - case get = "GET" - case head = "HEAD" - case post = "POST" - case put = "PUT" - case patch = "PATCH" - case delete = "DELETE" - case trace = "TRACE" - case connect = "CONNECT" -} - -public protocol ParameterEncoding { - func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest -} - -private class URLEncoding: ParameterEncoding { - func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest { - - var urlRequest = urlRequest - - guard let parameters = parameters else { return urlRequest } - - guard let url = urlRequest.url else { - throw DownloadException.requestMissingURL - } - - if var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false), !parameters.isEmpty { - urlComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters) - urlRequest.url = urlComponents.url - } - - return urlRequest - } -} - -private class FormDataEncoding: ParameterEncoding { - - let contentTypeForFormPart: (_ fileURL: URL) -> String? - - init(contentTypeForFormPart: @escaping (_ fileURL: URL) -> String?) { - self.contentTypeForFormPart = contentTypeForFormPart - } - - func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest { - - var urlRequest = urlRequest - - guard let parameters = parameters, !parameters.isEmpty else { - return urlRequest - } - - let boundary = "Boundary-\(UUID().uuidString)" - - urlRequest.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") - - for (key, value) in parameters { - switch value { - case let fileURL as URL: - - urlRequest = try configureFileUploadRequest( - urlRequest: urlRequest, - boundary: boundary, - name: key, - fileURL: fileURL - ) - - case let string as String: - - if let data = string.data(using: .utf8) { - urlRequest = configureDataUploadRequest( - urlRequest: urlRequest, - boundary: boundary, - name: key, - data: data - ) - } - - case let number as NSNumber: - - if let data = number.stringValue.data(using: .utf8) { - urlRequest = configureDataUploadRequest( - urlRequest: urlRequest, - boundary: boundary, - name: key, - data: data - ) - } - - default: - fatalError("Unprocessable value \(value) with key \(key)") - } - } - - var body = urlRequest.httpBody.orEmpty - - body.append("\r\n--\(boundary)--\r\n") - - urlRequest.httpBody = body - - return urlRequest - } - - private func configureFileUploadRequest(urlRequest: URLRequest, boundary: String, name: String, fileURL: URL) throws -> URLRequest { - - var urlRequest = urlRequest - - var body = urlRequest.httpBody.orEmpty - - let fileData = try Data(contentsOf: fileURL) - - let mimetype = contentTypeForFormPart(fileURL) ?? mimeType(for: fileURL) - - let fileName = fileURL.lastPathComponent - - // If we already added something then we need an additional newline. - if body.count > 0 { - body.append("\r\n") - } - - // Value boundary. - body.append("--\(boundary)\r\n") - - // Value headers. - body.append("Content-Disposition: form-data; name=\"\(name)\"; filename=\"\(fileName)\"\r\n") - body.append("Content-Type: \(mimetype)\r\n") - - // Separate headers and body. - body.append("\r\n") - - // The value data. - body.append(fileData) - - urlRequest.httpBody = body - - return urlRequest - } - - private func configureDataUploadRequest(urlRequest: URLRequest, boundary: String, name: String, data: Data) -> URLRequest { - - var urlRequest = urlRequest - - var body = urlRequest.httpBody.orEmpty - - // If we already added something then we need an additional newline. - if body.count > 0 { - body.append("\r\n") - } - - // Value boundary. - body.append("--\(boundary)\r\n") - - // Value headers. - body.append("Content-Disposition: form-data; name=\"\(name)\"\r\n") - - // Separate headers and body. - body.append("\r\n") - - // The value data. - body.append(data) - - urlRequest.httpBody = body - - return urlRequest - - } - - func mimeType(for url: URL) -> String { - let pathExtension = url.pathExtension - - if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() { - if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() { - return mimetype as String - } - } - return "application/octet-stream" - } - -} - -private class FormURLEncoding: ParameterEncoding { - func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest { - - var urlRequest = urlRequest - - var requestBodyComponents = URLComponents() - requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:]) - - if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil { - urlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") - } - - urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8) - - return urlRequest - } -} - -private extension Data { - /// Append string to Data - /// - /// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8. - /// - /// - parameter string: The string to be added to the `Data`. - - mutating func append(_ string: String) { - if let data = string.data(using: .utf8) { - append(data) - } - } -} - -private extension Optional where Wrapped == Data { - var orEmpty: Data { - self ?? Data() - } -} - -extension JSONDataEncoding: ParameterEncoding {} diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs.swift index dbdab491ff7..01bc6ff0d8d 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -6,7 +6,10 @@ import Foundation -open class PetstoreClientAPI { +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] @@ -32,7 +35,7 @@ open class RequestBuilder { self.parameters = parameters self.headers = headers - addHeaders(PetstoreClientAPI.customHeaders) + addHeaders(PetstoreClient.customHeaders) } open func addHeaders(_ aHeaders: [String: String]) { @@ -41,7 +44,7 @@ open class RequestBuilder { } } - open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } + open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { } public func addHeader(name: String, value: String) -> Self { if !value.isEmpty { @@ -51,7 +54,7 @@ open class RequestBuilder { } open func addCredential() -> Self { - credential = PetstoreClientAPI.credential + credential = PetstoreClient.credential return self } } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 72b89640eeb..542fb6f69ba 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -15,7 +15,7 @@ open class AnotherFakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -35,7 +35,7 @@ open class AnotherFakeAPI { */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/another-fake/dummy" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ open class AnotherFakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index cf92424d9cc..9b75edc92ee 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -14,7 +14,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { + open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Bool?, _ error: Error?) -> Void)) { fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -33,7 +33,7 @@ open class FakeAPI { */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { let path = "/fake/outer/boolean" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -44,7 +44,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -55,7 +55,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: OuterComposite?, _ error: Error?) -> Void)) { fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -74,7 +74,7 @@ open class FakeAPI { */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { let path = "/fake/outer/composite" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -85,7 +85,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -96,7 +96,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { + open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Double?, _ error: Error?) -> Void)) { fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -115,7 +115,7 @@ open class FakeAPI { */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { let path = "/fake/outer/number" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -126,7 +126,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -137,7 +137,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -156,7 +156,7 @@ open class FakeAPI { */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { let path = "/fake/outer/string" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -167,7 +167,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -178,7 +178,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -197,7 +197,7 @@ open class FakeAPI { */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { let path = "/fake/body-with-file-schema" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -208,7 +208,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -220,7 +220,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -239,7 +239,7 @@ open class FakeAPI { */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { let path = "/fake/body-with-query-params" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) var urlComponents = URLComponents(string: URLString) @@ -253,7 +253,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -265,7 +265,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -285,7 +285,7 @@ open class FakeAPI { */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -296,7 +296,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -321,7 +321,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -357,7 +357,7 @@ open class FakeAPI { */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), @@ -386,7 +386,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -472,7 +472,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -499,7 +499,7 @@ open class FakeAPI { */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), @@ -524,7 +524,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -541,7 +541,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -566,7 +566,7 @@ open class FakeAPI { */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { let path = "/fake" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -584,7 +584,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -596,7 +596,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -615,7 +615,7 @@ open class FakeAPI { */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) let urlComponents = URLComponents(string: URLString) @@ -626,7 +626,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -639,7 +639,7 @@ open class FakeAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -659,7 +659,7 @@ open class FakeAPI { */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { let path = "/fake/jsonFormData" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), @@ -676,7 +676,7 @@ open class FakeAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index d4d65166496..fd7d845d340 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -15,7 +15,7 @@ open class FakeClassnameTags123API { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { + open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Client?, _ error: Error?) -> Void)) { testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -38,7 +38,7 @@ open class FakeClassnameTags123API { */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { let path = "/fake_classname_test" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class FakeClassnameTags123API { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index a1fe0d12b1d..d7d5bdfa2ea 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -15,7 +15,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -37,7 +37,7 @@ open class PetAPI { */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -48,7 +48,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -61,7 +61,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -87,7 +87,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -98,7 +98,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -119,7 +119,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByStatus(status: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -142,7 +142,7 @@ open class PetAPI { */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByStatus" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -156,7 +156,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -169,7 +169,7 @@ open class PetAPI { - parameter completion: completion handler to receive the data and the error objects */ @available(*, deprecated, message: "This operation is deprecated.") - open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { + open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [Pet]?, _ error: Error?) -> Void)) { findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -193,7 +193,7 @@ open class PetAPI { @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { let path = "/pet/findByTags" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -207,7 +207,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -219,7 +219,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { + open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Pet?, _ error: Error?) -> Void)) { getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -245,7 +245,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -256,7 +256,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -268,7 +268,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -290,7 +290,7 @@ open class PetAPI { */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { let path = "/pet" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -301,7 +301,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -315,7 +315,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -342,7 +342,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), @@ -359,7 +359,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -373,7 +373,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -400,7 +400,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), @@ -417,7 +417,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -431,7 +431,7 @@ open class PetAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: ApiResponse?, _ error: Error?) -> Void)) { uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -458,7 +458,7 @@ open class PetAPI { let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let formParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), @@ -475,7 +475,7 @@ open class PetAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 501f11f5f21..c80d4286b53 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -15,7 +15,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -38,7 +38,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -49,7 +49,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -60,7 +60,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { + open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: [String: Int]?, _ error: Error?) -> Void)) { getInventoryWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -82,7 +82,7 @@ open class StoreAPI { */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { let path = "/store/inventory" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -93,7 +93,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -105,7 +105,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -128,7 +128,7 @@ open class StoreAPI { let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -139,7 +139,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -151,7 +151,7 @@ open class StoreAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { + open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Order?, _ error: Error?) -> Void)) { placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -170,7 +170,7 @@ open class StoreAPI { */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { let path = "/store/order" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -181,7 +181,7 @@ open class StoreAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 254474014d3..542dc212bd1 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -15,7 +15,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -35,7 +35,7 @@ open class UserAPI { */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { let path = "/user" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -46,7 +46,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -58,7 +58,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -77,7 +77,7 @@ open class UserAPI { */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithArray" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -88,7 +88,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -100,7 +100,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -119,7 +119,7 @@ open class UserAPI { */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { let path = "/user/createWithList" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -130,7 +130,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -142,7 +142,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -165,7 +165,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -176,7 +176,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -188,7 +188,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { + open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: User?, _ error: Error?) -> Void)) { getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -210,7 +210,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -221,7 +221,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -234,7 +234,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { + open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: String?, _ error: Error?) -> Void)) { loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in switch result { case let .success(response): @@ -255,7 +255,7 @@ open class UserAPI { */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { let path = "/user/login" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil var urlComponents = URLComponents(string: URLString) @@ -270,7 +270,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -281,7 +281,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { logoutUserWithRequestBuilder().execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -299,7 +299,7 @@ open class UserAPI { */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { let path = "/user/logout" - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters: [String: Any]? = nil let urlComponents = URLComponents(string: URLString) @@ -310,7 +310,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } @@ -323,7 +323,7 @@ open class UserAPI { - parameter apiResponseQueue: The queue on which api response is dispatched. - parameter completion: completion handler to receive the data and the error objects */ - open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { + open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) { updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in switch result { case .success: @@ -347,7 +347,7 @@ open class UserAPI { let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClientAPI.basePath + path + let URLString = PetstoreClient.basePath + path let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) let urlComponents = URLComponents(string: URLString) @@ -358,7 +358,7 @@ open class UserAPI { let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() + let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 517b23a181f..9494292aaef 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -42,9 +42,10 @@ public struct StringBooleanMap: Codable { // Decodable protocol methods public init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: String.self) + let container = try decoder.container(keyedBy: CodingKeys.self) var nonAdditionalPropertyKeys = Set() - additionalProperties = try container.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index fbf069a93c4..774c0427eaa 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -93,7 +93,7 @@ open class URLSessionRequestBuilder: RequestBuilder { return modifiedRequest } - override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { + override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClient.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { let urlSessionId = UUID().uuidString // Create a new manager for each request to customize its request header let urlSession = createURLSession() @@ -250,7 +250,7 @@ open class URLSessionRequestBuilder: RequestBuilder { for (key, value) in headers { httpHeaders[key] = value } - for (key, value) in PetstoreClientAPI.customHeaders { + for (key, value) in PetstoreClient.customHeaders { httpHeaders[key] = value } return httpHeaders From 0f51662650e30cd1af8aa2dcbc0207faa0e4c999 Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Wed, 2 Jun 2021 04:07:26 +0100 Subject: [PATCH 075/192] [kotlin][client] small improvements (#9640) * [kotlin][client] standardize adapter type names * [kotlin][client] remove unused class * [kotlin][client] fix IDE warning * [kotlin][client] improve import layout * [kotlin][client] update sample projects --- .../languages/KotlinClientCodegen.java | 1 - .../infrastructure/Serializer.kt.mustache | 6 ++-- .../infrastructure/URIAdapter.kt.mustache | 6 ++-- .../infrastructure/URLAdapter.kt.mustache | 2 +- .../infrastructure/UUIDAdapter.kt.mustache | 2 +- .../infrastructure/ApiClient.kt.mustache | 4 +++ .../ApplicationDelegates.kt.mustache | 29 ------------------- .../codegen/DefaultGeneratorTest.java | 8 ++--- .../kotlin-gson/.openapi-generator/FILES | 1 - .../client/infrastructure/ApiClient.kt | 1 - .../kotlin-jackson/.openapi-generator/FILES | 1 - .../client/infrastructure/ApiClient.kt | 1 - .../.openapi-generator/FILES | 1 - .../client/infrastructure/ApiClient.kt | 1 - .../client/infrastructure/Serializer.kt | 2 +- .../client/infrastructure/URIAdapter.kt | 4 +-- .../client/infrastructure/UUIDAdapter.kt | 2 +- .../.openapi-generator/FILES | 1 - .../client/infrastructure/ApiClient.kt | 1 - .../.openapi-generator/FILES | 1 - .../client/infrastructure/ApiClient.kt | 1 - .../client/infrastructure/Serializer.kt | 2 +- .../client/infrastructure/URIAdapter.kt | 4 +-- .../client/infrastructure/UUIDAdapter.kt | 2 +- .../kotlin-nonpublic/.openapi-generator/FILES | 1 - .../client/infrastructure/ApiClient.kt | 1 - .../client/infrastructure/Serializer.kt | 2 +- .../client/infrastructure/URIAdapter.kt | 4 +-- .../client/infrastructure/UUIDAdapter.kt | 2 +- .../kotlin-nullable/.openapi-generator/FILES | 1 - .../client/infrastructure/ApiClient.kt | 1 - .../client/infrastructure/Serializer.kt | 2 +- .../client/infrastructure/URIAdapter.kt | 4 +-- .../client/infrastructure/UUIDAdapter.kt | 2 +- .../kotlin-okhttp3/.openapi-generator/FILES | 1 - .../client/infrastructure/ApiClient.kt | 1 - .../client/infrastructure/Serializer.kt | 2 +- .../client/infrastructure/URIAdapter.kt | 4 +-- .../client/infrastructure/UUIDAdapter.kt | 2 +- .../client/infrastructure/Serializer.kt | 4 +-- .../client/infrastructure/URIAdapter.kt | 2 +- .../client/infrastructure/URLAdapter.kt | 2 +- .../client/infrastructure/Serializer.kt | 2 +- .../client/infrastructure/URIAdapter.kt | 4 +-- .../client/infrastructure/UUIDAdapter.kt | 2 +- .../client/infrastructure/Serializer.kt | 2 +- .../client/infrastructure/URIAdapter.kt | 4 +-- .../client/infrastructure/UUIDAdapter.kt | 2 +- .../kotlin-string/.openapi-generator/FILES | 1 - .../client/infrastructure/ApiClient.kt | 1 - .../client/infrastructure/Serializer.kt | 2 +- .../client/infrastructure/URIAdapter.kt | 4 +-- .../client/infrastructure/UUIDAdapter.kt | 2 +- .../.openapi-generator/FILES | 1 - .../client/infrastructure/ApiClient.kt | 1 - .../client/infrastructure/Serializer.kt | 2 +- .../client/infrastructure/URIAdapter.kt | 4 +-- .../client/infrastructure/UUIDAdapter.kt | 2 +- .../.openapi-generator/FILES | 1 - .../client/infrastructure/ApiClient.kt | 1 - .../client/infrastructure/Serializer.kt | 2 +- .../client/infrastructure/URIAdapter.kt | 4 +-- .../client/infrastructure/UUIDAdapter.kt | 2 +- .../petstore/kotlin/.openapi-generator/FILES | 1 - .../client/infrastructure/ApiClient.kt | 1 - .../client/infrastructure/Serializer.kt | 2 +- .../client/infrastructure/URIAdapter.kt | 4 +-- .../client/infrastructure/UUIDAdapter.kt | 2 +- 68 files changed, 64 insertions(+), 114 deletions(-) delete mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApplicationDelegates.kt.mustache diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index c98ffd60e72..5c9b27ae59d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -525,7 +525,6 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { setLibrary(JVM_OKHTTP); // jvm specific supporting files - supportingFiles.add(new SupportingFile("infrastructure/ApplicationDelegates.kt.mustache", infrastructureFolder, "ApplicationDelegates.kt")); supportingFiles.add(new SupportingFile("infrastructure/Errors.kt.mustache", infrastructureFolder, "Errors.kt")); supportingFiles.add(new SupportingFile("infrastructure/ResponseExtensions.kt.mustache", infrastructureFolder, "ResponseExtensions.kt")); supportingFiles.add(new SupportingFile("infrastructure/ApiInfrastructureResponse.kt.mustache", infrastructureFolder, "ApiInfrastructureResponse.kt")); diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache index ba46e733195..31b83578e7e 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/Serializer.kt.mustache @@ -60,7 +60,7 @@ import java.util.concurrent.atomic.AtomicLong .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) - .add(UriAdapter()) + .add(URIAdapter()) {{^moshiCodeGen}} .add(KotlinJsonAdapterFactory()) {{/moshiCodeGen}} @@ -105,8 +105,8 @@ import java.util.concurrent.atomic.AtomicLong contextual(AtomicInteger::class, AtomicIntegerAdapter) contextual(AtomicLong::class, AtomicLongAdapter) contextual(AtomicBoolean::class, AtomicBooleanAdapter) - contextual(URI::class, UriAdapter) - contextual(URL::class, UrlAdapter) + contextual(URI::class, URIAdapter) + contextual(URL::class, URLAdapter) contextual(StringBuilder::class, StringBuilderAdapter) } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/URIAdapter.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/URIAdapter.kt.mustache index 20dd42023e8..c9582955553 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/URIAdapter.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/URIAdapter.kt.mustache @@ -16,17 +16,17 @@ import com.squareup.moshi.ToJson import java.net.URI {{#moshi}} -{{#nonPublicApi}}internal {{/nonPublicApi}}class UriAdapter { +{{#nonPublicApi}}internal {{/nonPublicApi}}class URIAdapter { @ToJson fun toJson(uri: URI) = uri.toString() @FromJson - fun fromJson(s: String) = URI.create(s) + fun fromJson(s: String): URI = URI.create(s) } {{/moshi}} {{#kotlinx_serialization}} @Serializer(forClass = URI::class) -object UriAdapter : KSerializer { +object URIAdapter : KSerializer { override fun serialize(encoder: Encoder, value: URI) { encoder.encodeString(value.toASCIIString()) } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/URLAdapter.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/URLAdapter.kt.mustache index 7105c43b72b..eaebad52cc8 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/URLAdapter.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/URLAdapter.kt.mustache @@ -10,7 +10,7 @@ import kotlinx.serialization.descriptors.SerialDescriptor import java.net.URL @Serializer(forClass = URL::class) -object UrlAdapter : KSerializer { +object URLAdapter : KSerializer { override fun serialize(encoder: Encoder, value: URL) { encoder.encodeString(value.toExternalForm()) } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/UUIDAdapter.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/UUIDAdapter.kt.mustache index 9781ff529cc..ea903c36ca9 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/UUIDAdapter.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/jvm-common/infrastructure/UUIDAdapter.kt.mustache @@ -21,7 +21,7 @@ import java.util.UUID fun toJson(uuid: UUID) = uuid.toString() @FromJson - fun fromJson(s: String) = UUID.fromString(s) + fun fromJson(s: String): UUID = UUID.fromString(s) } {{/moshi}} {{#kotlinx_serialization}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache index 2c0c8d8930a..64ab00cf9b6 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache @@ -3,7 +3,11 @@ package {{packageName}}.infrastructure {{#supportAndroidApiLevel25AndBelow}} import android.os.Build {{/supportAndroidApiLevel25AndBelow}} +{{#hasAuthMethods}} +{{#isBasicBasic}} import okhttp3.Credentials +{{/isBasicBasic}} +{{/hasAuthMethods}} import okhttp3.OkHttpClient import okhttp3.RequestBody {{#jvm-okhttp3}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApplicationDelegates.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApplicationDelegates.kt.mustache deleted file mode 100644 index 63112263176..00000000000 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApplicationDelegates.kt.mustache +++ /dev/null @@ -1,29 +0,0 @@ -package {{packageName}}.infrastructure - -import kotlin.properties.ReadWriteProperty -import kotlin.reflect.KProperty - -{{#nonPublicApi}}internal {{/nonPublicApi}}object ApplicationDelegates { - /** - * Provides a property delegate, allowing the property to be set once and only once. - * - * If unset (no default value), a get on the property will throw [IllegalStateException]. - */ - fun setOnce(defaultValue: T? = null) : ReadWriteProperty = SetOnce(defaultValue) - - private class SetOnce(defaultValue: T? = null) : ReadWriteProperty { - private var isSet = false - private var value: T? = defaultValue - - override fun getValue(thisRef: Any?, property: KProperty<*>): T { - return value ?: throw IllegalStateException("${property.name} not initialized") - } - - override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) = synchronized(this) { - if (!isSet) { - this.value = value - isSet = true - } - } - } -} \ No newline at end of file diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java index dac05915223..7e6a986bb32 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java @@ -459,7 +459,7 @@ public class DefaultGeneratorTest { List files = generator.opts(clientOptInput).generate(); - Assert.assertEquals(files.size(), 27); + Assert.assertEquals(files.size(), 26); // Generator should report a library templated file as a generated file TestUtils.ensureContainsFile(files, output, "src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt"); @@ -501,7 +501,7 @@ public class DefaultGeneratorTest { List files = generator.opts(clientOptInput).generate(); - Assert.assertEquals(files.size(), 27); + Assert.assertEquals(files.size(), 26); // Generator should report README.md as a generated file TestUtils.ensureContainsFile(files, output, "README.md"); @@ -566,7 +566,7 @@ public class DefaultGeneratorTest { List files = generator.opts(clientOptInput).generate(); - Assert.assertEquals(files.size(), 27); + Assert.assertEquals(files.size(), 26); // Generator should report a library templated file as a generated file TestUtils.ensureContainsFile(files, output, "src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt"); @@ -620,7 +620,7 @@ public class DefaultGeneratorTest { List files = generator.opts(clientOptInput).generate(); - Assert.assertEquals(files.size(), 27); + Assert.assertEquals(files.size(), 26); // Generator should report README.md as a generated file TestUtils.ensureContainsFile(files, output, "README.md"); diff --git a/samples/client/petstore/kotlin-gson/.openapi-generator/FILES b/samples/client/petstore/kotlin-gson/.openapi-generator/FILES index bf441309074..1f38d3fbe2d 100644 --- a/samples/client/petstore/kotlin-gson/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-gson/.openapi-generator/FILES @@ -20,7 +20,6 @@ src/main/kotlin/org/openapitools/client/apis/UserApi.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt -src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/DateAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index e8c4090e067..8ba19ee8e15 100644 --- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,6 +1,5 @@ package org.openapitools.client.infrastructure -import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody diff --git a/samples/client/petstore/kotlin-jackson/.openapi-generator/FILES b/samples/client/petstore/kotlin-jackson/.openapi-generator/FILES index 6bfd310bbca..816d952128d 100644 --- a/samples/client/petstore/kotlin-jackson/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-jackson/.openapi-generator/FILES @@ -20,7 +20,6 @@ src/main/kotlin/org/openapitools/client/apis/UserApi.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt -src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 0c29beb9558..6cf2ef9b0d1 100644 --- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,6 +1,5 @@ package org.openapitools.client.infrastructure -import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody diff --git a/samples/client/petstore/kotlin-json-request-string/.openapi-generator/FILES b/samples/client/petstore/kotlin-json-request-string/.openapi-generator/FILES index ca4c31651a4..16c712325f8 100644 --- a/samples/client/petstore/kotlin-json-request-string/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-json-request-string/.openapi-generator/FILES @@ -20,7 +20,6 @@ src/main/kotlin/org/openapitools/client/apis/UserApi.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt -src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index ea327d4b6a4..fc157890883 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,7 +1,6 @@ package org.openapitools.client.infrastructure import android.os.Build -import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 5b6d177ca89..e77581231c3 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,7 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) - .add(UriAdapter()) + .add(URIAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index 87de0b17353..927522757da 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -4,10 +4,10 @@ import com.squareup.moshi.FromJson import com.squareup.moshi.ToJson import java.net.URI -class UriAdapter { +class URIAdapter { @ToJson fun toJson(uri: URI) = uri.toString() @FromJson - fun fromJson(s: String) = URI.create(s) + fun fromJson(s: String): URI = URI.create(s) } diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt index a4a44cc18b7..7ccf7dc25d2 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -9,5 +9,5 @@ class UUIDAdapter { fun toJson(uuid: UUID) = uuid.toString() @FromJson - fun fromJson(s: String) = UUID.fromString(s) + fun fromJson(s: String): UUID = UUID.fromString(s) } diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/FILES b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/FILES index bf441309074..1f38d3fbe2d 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/FILES @@ -20,7 +20,6 @@ src/main/kotlin/org/openapitools/client/apis/UserApi.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt -src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/DateAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index e8c4090e067..8ba19ee8e15 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,6 +1,5 @@ package org.openapitools.client.infrastructure -import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody diff --git a/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/FILES b/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/FILES index ca4c31651a4..16c712325f8 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/FILES @@ -20,7 +20,6 @@ src/main/kotlin/org/openapitools/client/apis/UserApi.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt -src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 0961cf760c6..ae6e80e9506 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,6 +1,5 @@ package org.openapitools.client.infrastructure -import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index e1cee08d055..ebd1a2a526b 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -11,7 +11,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) - .add(UriAdapter()) + .add(URIAdapter()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index 87de0b17353..927522757da 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -4,10 +4,10 @@ import com.squareup.moshi.FromJson import com.squareup.moshi.ToJson import java.net.URI -class UriAdapter { +class URIAdapter { @ToJson fun toJson(uri: URI) = uri.toString() @FromJson - fun fromJson(s: String) = URI.create(s) + fun fromJson(s: String): URI = URI.create(s) } diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt index a4a44cc18b7..7ccf7dc25d2 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -9,5 +9,5 @@ class UUIDAdapter { fun toJson(uuid: UUID) = uuid.toString() @FromJson - fun fromJson(s: String) = UUID.fromString(s) + fun fromJson(s: String): UUID = UUID.fromString(s) } diff --git a/samples/client/petstore/kotlin-nonpublic/.openapi-generator/FILES b/samples/client/petstore/kotlin-nonpublic/.openapi-generator/FILES index ca4c31651a4..16c712325f8 100644 --- a/samples/client/petstore/kotlin-nonpublic/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-nonpublic/.openapi-generator/FILES @@ -20,7 +20,6 @@ src/main/kotlin/org/openapitools/client/apis/UserApi.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt -src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index d4fccce2715..ed34dce2446 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,6 +1,5 @@ package org.openapitools.client.infrastructure -import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 914d277df5e..acc0b33ae20 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,7 +12,7 @@ internal object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) - .add(UriAdapter()) + .add(URIAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index bfe92917615..3e509e9a831 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -4,10 +4,10 @@ import com.squareup.moshi.FromJson import com.squareup.moshi.ToJson import java.net.URI -internal class UriAdapter { +internal class URIAdapter { @ToJson fun toJson(uri: URI) = uri.toString() @FromJson - fun fromJson(s: String) = URI.create(s) + fun fromJson(s: String): URI = URI.create(s) } diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt index 02fa692b57d..b5de20257ba 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -9,5 +9,5 @@ internal class UUIDAdapter { fun toJson(uuid: UUID) = uuid.toString() @FromJson - fun fromJson(s: String) = UUID.fromString(s) + fun fromJson(s: String): UUID = UUID.fromString(s) } diff --git a/samples/client/petstore/kotlin-nullable/.openapi-generator/FILES b/samples/client/petstore/kotlin-nullable/.openapi-generator/FILES index ca4c31651a4..16c712325f8 100644 --- a/samples/client/petstore/kotlin-nullable/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-nullable/.openapi-generator/FILES @@ -20,7 +20,6 @@ src/main/kotlin/org/openapitools/client/apis/UserApi.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt -src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 0961cf760c6..ae6e80e9506 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,6 +1,5 @@ package org.openapitools.client.infrastructure -import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 5b6d177ca89..e77581231c3 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,7 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) - .add(UriAdapter()) + .add(URIAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index 87de0b17353..927522757da 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -4,10 +4,10 @@ import com.squareup.moshi.FromJson import com.squareup.moshi.ToJson import java.net.URI -class UriAdapter { +class URIAdapter { @ToJson fun toJson(uri: URI) = uri.toString() @FromJson - fun fromJson(s: String) = URI.create(s) + fun fromJson(s: String): URI = URI.create(s) } diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt index a4a44cc18b7..7ccf7dc25d2 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -9,5 +9,5 @@ class UUIDAdapter { fun toJson(uuid: UUID) = uuid.toString() @FromJson - fun fromJson(s: String) = UUID.fromString(s) + fun fromJson(s: String): UUID = UUID.fromString(s) } diff --git a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/FILES b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/FILES index ca4c31651a4..16c712325f8 100644 --- a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/FILES @@ -20,7 +20,6 @@ src/main/kotlin/org/openapitools/client/apis/UserApi.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt -src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 49cf4c675b7..538c66cec2e 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,6 +1,5 @@ package org.openapitools.client.infrastructure -import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.MediaType diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 5b6d177ca89..e77581231c3 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,7 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) - .add(UriAdapter()) + .add(URIAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index 87de0b17353..927522757da 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -4,10 +4,10 @@ import com.squareup.moshi.FromJson import com.squareup.moshi.ToJson import java.net.URI -class UriAdapter { +class URIAdapter { @ToJson fun toJson(uri: URI) = uri.toString() @FromJson - fun fromJson(s: String) = URI.create(s) + fun fromJson(s: String): URI = URI.create(s) } diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt index a4a44cc18b7..7ccf7dc25d2 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -9,5 +9,5 @@ class UUIDAdapter { fun toJson(uuid: UUID) = uuid.toString() @FromJson - fun fromJson(s: String) = UUID.fromString(s) + fun fromJson(s: String): UUID = UUID.fromString(s) } diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 624053c3074..e769dec78ea 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -28,8 +28,8 @@ object Serializer { contextual(AtomicInteger::class, AtomicIntegerAdapter) contextual(AtomicLong::class, AtomicLongAdapter) contextual(AtomicBoolean::class, AtomicBooleanAdapter) - contextual(URI::class, UriAdapter) - contextual(URL::class, UrlAdapter) + contextual(URI::class, URIAdapter) + contextual(URL::class, URLAdapter) contextual(StringBuilder::class, StringBuilderAdapter) } diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index 0b734134afa..0856c99813c 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -10,7 +10,7 @@ import kotlinx.serialization.descriptors.SerialDescriptor import java.net.URI @Serializer(forClass = URI::class) -object UriAdapter : KSerializer { +object URIAdapter : KSerializer { override fun serialize(encoder: Encoder, value: URI) { encoder.encodeString(value.toASCIIString()) } diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/URLAdapter.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/URLAdapter.kt index 29546fc3ce9..2df3308b76a 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/URLAdapter.kt +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/infrastructure/URLAdapter.kt @@ -10,7 +10,7 @@ import kotlinx.serialization.descriptors.SerialDescriptor import java.net.URL @Serializer(forClass = URL::class) -object UrlAdapter : KSerializer { +object URLAdapter : KSerializer { override fun serialize(encoder: Encoder, value: URL) { encoder.encodeString(value.toExternalForm()) } diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 5b6d177ca89..e77581231c3 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,7 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) - .add(UriAdapter()) + .add(URIAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index 87de0b17353..927522757da 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -4,10 +4,10 @@ import com.squareup.moshi.FromJson import com.squareup.moshi.ToJson import java.net.URI -class UriAdapter { +class URIAdapter { @ToJson fun toJson(uri: URI) = uri.toString() @FromJson - fun fromJson(s: String) = URI.create(s) + fun fromJson(s: String): URI = URI.create(s) } diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt index a4a44cc18b7..7ccf7dc25d2 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -9,5 +9,5 @@ class UUIDAdapter { fun toJson(uuid: UUID) = uuid.toString() @FromJson - fun fromJson(s: String) = UUID.fromString(s) + fun fromJson(s: String): UUID = UUID.fromString(s) } diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 5b6d177ca89..e77581231c3 100644 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,7 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) - .add(UriAdapter()) + .add(URIAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index 87de0b17353..927522757da 100644 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -4,10 +4,10 @@ import com.squareup.moshi.FromJson import com.squareup.moshi.ToJson import java.net.URI -class UriAdapter { +class URIAdapter { @ToJson fun toJson(uri: URI) = uri.toString() @FromJson - fun fromJson(s: String) = URI.create(s) + fun fromJson(s: String): URI = URI.create(s) } diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt index a4a44cc18b7..7ccf7dc25d2 100644 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -9,5 +9,5 @@ class UUIDAdapter { fun toJson(uuid: UUID) = uuid.toString() @FromJson - fun fromJson(s: String) = UUID.fromString(s) + fun fromJson(s: String): UUID = UUID.fromString(s) } diff --git a/samples/client/petstore/kotlin-string/.openapi-generator/FILES b/samples/client/petstore/kotlin-string/.openapi-generator/FILES index ca4c31651a4..16c712325f8 100644 --- a/samples/client/petstore/kotlin-string/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-string/.openapi-generator/FILES @@ -20,7 +20,6 @@ src/main/kotlin/org/openapitools/client/apis/UserApi.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt -src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 0961cf760c6..ae6e80e9506 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,6 +1,5 @@ package org.openapitools.client.infrastructure -import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 5b6d177ca89..e77581231c3 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,7 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) - .add(UriAdapter()) + .add(URIAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index 87de0b17353..927522757da 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -4,10 +4,10 @@ import com.squareup.moshi.FromJson import com.squareup.moshi.ToJson import java.net.URI -class UriAdapter { +class URIAdapter { @ToJson fun toJson(uri: URI) = uri.toString() @FromJson - fun fromJson(s: String) = URI.create(s) + fun fromJson(s: String): URI = URI.create(s) } diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt index a4a44cc18b7..7ccf7dc25d2 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -9,5 +9,5 @@ class UUIDAdapter { fun toJson(uuid: UUID) = uuid.toString() @FromJson - fun fromJson(s: String) = UUID.fromString(s) + fun fromJson(s: String): UUID = UUID.fromString(s) } diff --git a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/FILES b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/FILES index ca4c31651a4..16c712325f8 100644 --- a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/FILES @@ -20,7 +20,6 @@ src/main/kotlin/org/openapitools/client/apis/UserApi.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt -src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 27297844d60..ad394bbefb0 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,6 +1,5 @@ package org.openapitools.client.infrastructure -import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 5b6d177ca89..e77581231c3 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,7 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) - .add(UriAdapter()) + .add(URIAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index 87de0b17353..927522757da 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -4,10 +4,10 @@ import com.squareup.moshi.FromJson import com.squareup.moshi.ToJson import java.net.URI -class UriAdapter { +class URIAdapter { @ToJson fun toJson(uri: URI) = uri.toString() @FromJson - fun fromJson(s: String) = URI.create(s) + fun fromJson(s: String): URI = URI.create(s) } diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt index a4a44cc18b7..7ccf7dc25d2 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -9,5 +9,5 @@ class UUIDAdapter { fun toJson(uuid: UUID) = uuid.toString() @FromJson - fun fromJson(s: String) = UUID.fromString(s) + fun fromJson(s: String): UUID = UUID.fromString(s) } diff --git a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/FILES b/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/FILES index bfbf9941fa5..c817d802484 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/FILES @@ -11,7 +11,6 @@ src/main/kotlin/org/openapitools/client/apis/EnumApi.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt -src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 0dad05161fa..e65bce97f7e 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,6 +1,5 @@ package org.openapitools.client.infrastructure -import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 5b6d177ca89..e77581231c3 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,7 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) - .add(UriAdapter()) + .add(URIAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index 87de0b17353..927522757da 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -4,10 +4,10 @@ import com.squareup.moshi.FromJson import com.squareup.moshi.ToJson import java.net.URI -class UriAdapter { +class URIAdapter { @ToJson fun toJson(uri: URI) = uri.toString() @FromJson - fun fromJson(s: String) = URI.create(s) + fun fromJson(s: String): URI = URI.create(s) } diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt index a4a44cc18b7..7ccf7dc25d2 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +++ b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -9,5 +9,5 @@ class UUIDAdapter { fun toJson(uuid: UUID) = uuid.toString() @FromJson - fun fromJson(s: String) = UUID.fromString(s) + fun fromJson(s: String): UUID = UUID.fromString(s) } diff --git a/samples/client/petstore/kotlin/.openapi-generator/FILES b/samples/client/petstore/kotlin/.openapi-generator/FILES index ca4c31651a4..16c712325f8 100644 --- a/samples/client/petstore/kotlin/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin/.openapi-generator/FILES @@ -20,7 +20,6 @@ src/main/kotlin/org/openapitools/client/apis/UserApi.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt -src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 0961cf760c6..ae6e80e9506 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -1,6 +1,5 @@ package org.openapitools.client.infrastructure -import okhttp3.Credentials import okhttp3.OkHttpClient import okhttp3.RequestBody import okhttp3.RequestBody.Companion.asRequestBody diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt index 5b6d177ca89..e77581231c3 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt @@ -12,7 +12,7 @@ object Serializer { .add(LocalDateAdapter()) .add(UUIDAdapter()) .add(ByteArrayAdapter()) - .add(UriAdapter()) + .add(URIAdapter()) .add(KotlinJsonAdapterFactory()) .add(BigDecimalAdapter()) .add(BigIntegerAdapter()) diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt index 87de0b17353..927522757da 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt @@ -4,10 +4,10 @@ import com.squareup.moshi.FromJson import com.squareup.moshi.ToJson import java.net.URI -class UriAdapter { +class URIAdapter { @ToJson fun toJson(uri: URI) = uri.toString() @FromJson - fun fromJson(s: String) = URI.create(s) + fun fromJson(s: String): URI = URI.create(s) } diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt index a4a44cc18b7..7ccf7dc25d2 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt @@ -9,5 +9,5 @@ class UUIDAdapter { fun toJson(uuid: UUID) = uuid.toString() @FromJson - fun fromJson(s: String) = UUID.fromString(s) + fun fromJson(s: String): UUID = UUID.fromString(s) } From b9e75951e76eea7149333de6420c98e33beb1924 Mon Sep 17 00:00:00 2001 From: Michael Janssen Date: Wed, 2 Jun 2021 05:54:16 +0200 Subject: [PATCH 076/192] Add nullable annotation support to AspNetCoreServer (#9620) * Add nullable annotation support to AspNetCoreServer * Adjust naming for compatability with PR #9235 by @dehl-labs --- docs/generators/aspnetcore.md | 1 + .../languages/AspNetCoreServerCodegen.java | 23 +++- .../aspnetcore/3.0/Project.csproj.mustache | 3 + .../codegen/csharp/CSharpModelTest.java | 121 ++++++++++++++++++ 4 files changed, 147 insertions(+), 1 deletion(-) diff --git a/docs/generators/aspnetcore.md b/docs/generators/aspnetcore.md index 849f4ff9313..14d54f778d4 100644 --- a/docs/generators/aspnetcore.md +++ b/docs/generators/aspnetcore.md @@ -19,6 +19,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |licenseUrl|The URL of the license| |http://localhost| |modelClassModifier|Model Class Modifier can be nothing or partial| |partial| |newtonsoftVersion|Version for Microsoft.AspNetCore.Mvc.NewtonsoftJson for ASP.NET Core 3.0+| |3.0.0| +|nullableReferenceTypes|Annotate Project with <Nullable>annotations</Nullable> and use ? annotation on all nullable attributes. Only supported on C# 8 / ASP.NET Core 3.0 or newer.| |false| |operationIsAsync|Set methods to async or sync (default).| |false| |operationModifier|Operation Modifier can be virtual or abstract|
    **virtual**
    Keep method virtual
    **abstract**
    Make method abstract
    |virtual| |operationResultTask|Set methods result to Task<>.| |false| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java index 1bc11ce94ca..141cd952bde 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java @@ -60,6 +60,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { public static final String USE_NEWTONSOFT = "useNewtonsoft"; public static final String USE_DEFAULT_ROUTING = "useDefaultRouting"; public static final String NEWTONSOFT_VERSION = "newtonsoftVersion"; + public static final String NULLABLE_REFERENCE_TYPES = "nullableReferenceTypes"; private String packageGuid = "{" + randomUUID().toString().toUpperCase(Locale.ROOT) + "}"; private String userSecretsGuid = randomUUID().toString(); @@ -84,6 +85,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { private boolean useFrameworkReference = false; private boolean useNewtonsoft = true; private boolean useDefaultRouting = true; + private boolean nullableReferenceTypes = false; private String newtonsoftVersion = "3.0.0"; public AspNetCoreServerCodegen() { @@ -249,6 +251,11 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { "Use default routing for the ASP.NET Core version.", useDefaultRouting); + addSwitch(NULLABLE_REFERENCE_TYPES, + "Annotate Project with annotations and use ? annotation on all nullable attributes. " + + "Only supported on C# 8 / ASP.NET Core 3.0 or newer.", + nullableReferenceTypes); + addOption(CodegenConstants.ENUM_NAME_SUFFIX, CodegenConstants.ENUM_NAME_SUFFIX_DESC, enumNameSuffix); @@ -366,6 +373,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { setIsFramework(); setUseNewtonsoft(); setUseEndpointRouting(); + setNullableReferenceTypes(); supportingFiles.add(new SupportingFile("build.sh.mustache", "", "build.sh")); supportingFiles.add(new SupportingFile("build.bat.mustache", "", "build.bat")); @@ -520,7 +528,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { @Override public String getNullableType(Schema p, String type) { if (languageSpecificPrimitives.contains(type)) { - if (isSupportNullable() && ModelUtils.isNullable(p) && nullableType.contains(type)) { + if (isSupportNullable() && ModelUtils.isNullable(p) && (nullableType.contains(type) || nullableReferenceTypes)) { return type + "?"; } else { return type; @@ -649,6 +657,19 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { } } + private void setNullableReferenceTypes() { + if (additionalProperties.containsKey(NULLABLE_REFERENCE_TYPES)) { + if (aspnetCoreVersion.getOptValue().startsWith("2.")) { + LOGGER.warn("Nullable annotation are not supported in ASP.NET core version 2. Setting " + NULLABLE_REFERENCE_TYPES + " to false"); + additionalProperties.put(NULLABLE_REFERENCE_TYPES, false); + } else { + nullableReferenceTypes = convertPropertyToBooleanAndWriteBack(NULLABLE_REFERENCE_TYPES); + } + } else { + additionalProperties.put(NULLABLE_REFERENCE_TYPES, nullableReferenceTypes); + } + } + private void setOperationIsAsync() { if (isLibrary) { operationIsAsync = false; diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache index 70f7388a988..ee3ced7ba19 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache @@ -7,6 +7,9 @@ true true {{packageVersion}} +{{#nullableReferenceTypes}} + annotations +{{/nullableReferenceTypes}} {{#isLibrary}} Library {{/isLibrary}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java index 40ebe302315..4a8f8f3e3bc 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java @@ -25,6 +25,7 @@ import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.DefaultCodegen; import org.openapitools.codegen.TestUtils; +import org.openapitools.codegen.languages.AspNetCoreServerCodegen; import org.openapitools.codegen.languages.CSharpClientCodegen; import org.testng.Assert; import org.testng.annotations.Test; @@ -264,6 +265,126 @@ public class CSharpModelTest { Assert.assertTrue(property3.isPrimitiveType); } + @Test(description = "convert a model with a nullable property without nullable annotation") + public void nullablePropertyWithoutNullableReferenceTypesTest() { + final Schema model = new Schema() + .description("a sample model") + .addProperties("id", new IntegerSchema().format(SchemaTypeUtil.INTEGER64_FORMAT).nullable(true)) + .addProperties("urls", new ArraySchema() + .items(new StringSchema()).nullable(true)) + .addProperties("name", new StringSchema().nullable(true)) + .addProperties("subObject", new Schema().addProperties("name", new StringSchema()).nullable(true)) + .addRequiredItem("id"); + final DefaultCodegen codegen = new AspNetCoreServerCodegen(); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 4); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "id"); + Assert.assertEquals(property1.dataType, "long?"); + Assert.assertEquals(property1.name, "Id"); + Assert.assertNull(property1.defaultValue); + Assert.assertEquals(property1.baseType, "long?"); + Assert.assertTrue(property1.required); + Assert.assertTrue(property1.isPrimitiveType); + + final CodegenProperty property2 = cm.vars.get(1); + Assert.assertEquals(property2.baseName, "urls"); + Assert.assertEquals(property2.dataType, "List"); + Assert.assertEquals(property2.name, "Urls"); + Assert.assertNull(property2.defaultValue); + Assert.assertEquals(property2.baseType, "List"); + Assert.assertEquals(property2.containerType, "array"); + Assert.assertFalse(property2.required); + Assert.assertTrue(property2.isPrimitiveType); + Assert.assertTrue(property2.isContainer); + + final CodegenProperty property3 = cm.vars.get(2); + Assert.assertEquals(property3.baseName, "name"); + Assert.assertEquals(property3.dataType, "string"); + Assert.assertEquals(property3.name, "Name"); + Assert.assertNull(property3.defaultValue); + Assert.assertEquals(property3.baseType, "string"); + Assert.assertFalse(property3.required); + Assert.assertTrue(property3.isPrimitiveType); + + final CodegenProperty property4 = cm.vars.get(3); + Assert.assertEquals(property4.baseName, "subObject"); + Assert.assertEquals(property4.dataType, "Object"); + Assert.assertEquals(property4.name, "SubObject"); + Assert.assertNull(property4.defaultValue); + Assert.assertEquals(property4.baseType, "Object"); + Assert.assertFalse(property4.required); + Assert.assertTrue(property4.isPrimitiveType); + } + + @Test(description = "convert a model with a nullable property using nullable annotation") + public void nullablePropertyWithNullableReferenceTypesTest() { + final Schema model = new Schema() + .description("a sample model") + .addProperties("id", new IntegerSchema().format(SchemaTypeUtil.INTEGER64_FORMAT).nullable(true)) + .addProperties("urls", new ArraySchema() + .items(new StringSchema()).nullable(true)) + .addProperties("name", new StringSchema().nullable(true)) + .addProperties("subObject", new Schema().addProperties("name", new StringSchema()).nullable(true)) + .addRequiredItem("id"); + final DefaultCodegen codegen = new AspNetCoreServerCodegen(); + codegen.additionalProperties().put(AspNetCoreServerCodegen.NULLABLE_REFERENCE_TYPES, true); + codegen.processOpts(); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel("sample", model); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "a sample model"); + Assert.assertEquals(cm.vars.size(), 4); + + final CodegenProperty property1 = cm.vars.get(0); + Assert.assertEquals(property1.baseName, "id"); + Assert.assertEquals(property1.dataType, "long?"); + Assert.assertEquals(property1.name, "Id"); + Assert.assertNull(property1.defaultValue); + Assert.assertEquals(property1.baseType, "long?"); + Assert.assertTrue(property1.required); + Assert.assertTrue(property1.isPrimitiveType); + + final CodegenProperty property2 = cm.vars.get(1); + Assert.assertEquals(property2.baseName, "urls"); + Assert.assertEquals(property2.dataType, "List"); + Assert.assertEquals(property2.name, "Urls"); + Assert.assertNull(property2.defaultValue); + Assert.assertEquals(property2.baseType, "List?"); + Assert.assertEquals(property2.containerType, "array"); + Assert.assertFalse(property2.required); + Assert.assertTrue(property2.isPrimitiveType); + Assert.assertTrue(property2.isContainer); + + final CodegenProperty property3 = cm.vars.get(2); + Assert.assertEquals(property3.baseName, "name"); + Assert.assertEquals(property3.dataType, "string?"); + Assert.assertEquals(property3.name, "Name"); + Assert.assertNull(property3.defaultValue); + Assert.assertEquals(property3.baseType, "string?"); + Assert.assertFalse(property3.required); + Assert.assertFalse(property3.isPrimitiveType); + + final CodegenProperty property4 = cm.vars.get(3); + Assert.assertEquals(property4.baseName, "subObject"); + Assert.assertEquals(property4.dataType, "Object?"); + Assert.assertEquals(property4.name, "SubObject"); + Assert.assertNull(property4.defaultValue); + Assert.assertEquals(property4.baseType, "Object?"); + Assert.assertFalse(property4.required); + Assert.assertFalse(property4.isPrimitiveType); + } + @Test(description = "convert a model with list property") public void listPropertyTest() { final Schema model = new Schema() From 7bb7c72cc53c8063c781ea0b38691cca4955a29f Mon Sep 17 00:00:00 2001 From: Troy P Date: Wed, 2 Jun 2021 09:03:45 -0700 Subject: [PATCH 077/192] Adding usePythonSrcRootInImports logic to AbstractPythonConnexionServerCodegen. (#9558) (#9559) --- docs/generators/python-aiohttp.md | 1 + docs/generators/python-blueplanet.md | 1 + docs/generators/python-flask.md | 1 + .../languages/AbstractPythonCodegen.java | 1 + .../AbstractPythonConnexionServerCodegen.java | 26 +++- ...tractPythonConnexionServerCodegenTest.java | 114 ++++++++++++++++++ 6 files changed, 140 insertions(+), 4 deletions(-) create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/python/AbstractPythonConnexionServerCodegenTest.java diff --git a/docs/generators/python-aiohttp.md b/docs/generators/python-aiohttp.md index 7c46da0b5b4..9adef96ba51 100644 --- a/docs/generators/python-aiohttp.md +++ b/docs/generators/python-aiohttp.md @@ -23,6 +23,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |supportPython2|support python2. This option has been deprecated and will be removed in the 5.x release.| |false| |useNose|use the nose test framework| |false| +|usePythonSrcRootInImports|include pythonSrcRoot in import namespaces.| |false| ## IMPORT MAPPING diff --git a/docs/generators/python-blueplanet.md b/docs/generators/python-blueplanet.md index 81c9b89cbf3..ba461d1822f 100644 --- a/docs/generators/python-blueplanet.md +++ b/docs/generators/python-blueplanet.md @@ -23,6 +23,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |supportPython2|support python2. This option has been deprecated and will be removed in the 5.x release.| |false| |useNose|use the nose test framework| |false| +|usePythonSrcRootInImports|include pythonSrcRoot in import namespaces.| |false| ## IMPORT MAPPING diff --git a/docs/generators/python-flask.md b/docs/generators/python-flask.md index 92bf4fdb97f..9e69fa44302 100644 --- a/docs/generators/python-flask.md +++ b/docs/generators/python-flask.md @@ -23,6 +23,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| |supportPython2|support python2. This option has been deprecated and will be removed in the 5.x release.| |false| |useNose|use the nose test framework| |false| +|usePythonSrcRootInImports|include pythonSrcRoot in import namespaces.| |false| ## IMPORT MAPPING diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java index 2765920fab4..eced1ac0e78 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java @@ -600,6 +600,7 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co public void setPackageName(String packageName) { this.packageName = packageName; + additionalProperties.put(CodegenConstants.PACKAGE_NAME, this.packageName); } public void setProjectName(String projectName) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java index 3898b7c09da..df60913e61e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java @@ -52,6 +52,7 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho // nose is a python testing framework, we use pytest if USE_NOSE is unset public static final String USE_NOSE = "useNose"; public static final String PYTHON_SRC_ROOT = "pythonSrcRoot"; + public static final String USE_PYTHON_SRC_ROOT_IN_IMPORTS = "usePythonSrcRootInImports"; static final String MEDIA_TYPE = "mediaType"; protected int serverPort = 8080; @@ -62,6 +63,7 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho protected boolean featureCORS = Boolean.FALSE; protected boolean useNose = Boolean.FALSE; protected String pythonSrcRoot; + protected boolean usePythonSrcRootInImports = Boolean.FALSE; public AbstractPythonConnexionServerCodegen(String templateDirectory, boolean fixBodyNameValue) { super(); @@ -79,7 +81,7 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho typeMapping.put("map", "Dict"); // set the output folder here - outputFolder = "generated-code/connexion"; + outputFolder = "generated-code" + File.separatorChar + "connexion"; apiTemplateFiles.put("controller.mustache", ".py"); modelTemplateFiles.put("model.mustache", ".py"); @@ -132,6 +134,8 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho defaultValue(Boolean.FALSE.toString())); cliOptions.add(new CliOption(PYTHON_SRC_ROOT, "put python sources in this subdirectory of output folder (defaults to \"\" for). Use this for src/ layout."). defaultValue("")); + cliOptions.add(new CliOption(USE_PYTHON_SRC_ROOT_IN_IMPORTS, "include pythonSrcRoot in import namespaces."). + defaultValue("false")); } protected void addSupportingFiles() { @@ -147,7 +151,6 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME)); } else { setPackageName("openapi_server"); - additionalProperties.put(CodegenConstants.PACKAGE_NAME, this.packageName); } if (additionalProperties.containsKey(CodegenConstants.PACKAGE_VERSION)) { setPackageVersion((String) additionalProperties.get(CodegenConstants.PACKAGE_VERSION)); @@ -177,9 +180,19 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho if (additionalProperties.containsKey(USE_NOSE)) { setUseNose((String) additionalProperties.get(USE_NOSE)); } + if (additionalProperties.containsKey(USE_PYTHON_SRC_ROOT_IN_IMPORTS)) { + setUsePythonSrcRootInImports((String) additionalProperties.get(USE_PYTHON_SRC_ROOT_IN_IMPORTS)); + } if (additionalProperties.containsKey(PYTHON_SRC_ROOT)) { - setPythonSrcRoot((String) additionalProperties.get(PYTHON_SRC_ROOT)); - additionalProperties.put(PYTHON_SRC_ROOT, pythonSrcRoot); + String pythonSrcRoot = (String) additionalProperties.get(PYTHON_SRC_ROOT); + if (usePythonSrcRootInImports) { + // if we prepend the package name if the pythonSrcRoot we get the desired effect. + // but we also need to set pythonSrcRoot itself to "" to ensure all the paths are + // what we expect. + setPackageName(pythonSrcRoot + "." + packageName); + pythonSrcRoot = ""; + } + setPythonSrcRoot(pythonSrcRoot); } else { setPythonSrcRoot(""); } @@ -218,6 +231,11 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho } else { this.pythonSrcRoot = pySrcRoot + File.separator; } + additionalProperties.put(PYTHON_SRC_ROOT, StringUtils.defaultIfBlank(this.pythonSrcRoot, null)); + } + + public void setUsePythonSrcRootInImports(String val) { + this.usePythonSrcRootInImports = Boolean.parseBoolean(val); } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/AbstractPythonConnexionServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/AbstractPythonConnexionServerCodegenTest.java new file mode 100644 index 00000000000..0e1e46c347f --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/AbstractPythonConnexionServerCodegenTest.java @@ -0,0 +1,114 @@ +package org.openapitools.codegen.python; + +import static org.openapitools.codegen.languages.AbstractPythonConnexionServerCodegen.PYTHON_SRC_ROOT; +import static org.openapitools.codegen.languages.AbstractPythonConnexionServerCodegen.USE_PYTHON_SRC_ROOT_IN_IMPORTS; + +import java.io.File; +import java.util.Collections; +import java.util.Map; +import java.util.Objects; + +import com.google.common.collect.ImmutableMap; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.openapitools.codegen.CodegenConstants; +import org.openapitools.codegen.languages.AbstractPythonConnexionServerCodegen; +import org.testng.Assert; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; + +public class AbstractPythonConnexionServerCodegenTest { + + /** + * Passing "description" as first param to succinctly identify the significance of test parameters. + */ + @Test(dataProvider = "data") + public void test(String description, Map additionalProperties, String modelName, + ExpectedValues expectedValues) { + AbstractPythonConnexionServerCodegen codegen = new MockAbstractPythonConnexionServerCodegen("", false); + codegen.additionalProperties().putAll(additionalProperties); + codegen.processOpts(); + String pythonSrcRoot = Objects.toString(codegen.additionalProperties().get(PYTHON_SRC_ROOT), null); + Assert.assertEquals(pythonSrcRoot, expectedValues.pythonSrcRoot); + Assert.assertEquals(codegen.apiPackage(), expectedValues.expectedApiPackage); + Assert.assertEquals(codegen.modelFileFolder(), expectedValues.expectedModelFileFolder); + Assert.assertEquals(codegen.apiFileFolder(), expectedValues.expectedApiFileFolder); + Assert.assertEquals(codegen.toModelImport(modelName), expectedValues.expectedImport); + } + + @DataProvider + public Object[][] data() { + return new Object[][]{ + new Object[]{ + "Default setup", + Collections.emptyMap(), + "TestModel", + new ExpectedValues("from openapi_server.models.test_model import TestModel", + "openapi_server.controllers", + platformAgnosticPath("generated-code", "connexion", "openapi_server", "models"), + platformAgnosticPath("generated-code", "connexion", "openapi_server", "controllers"), + null) + }, + new Object[]{ + "Default setup with Python src root", + ImmutableMap.of(PYTHON_SRC_ROOT, "test_root"), + "TestModel", + new ExpectedValues("from openapi_server.models.test_model import TestModel", + "openapi_server.controllers", + platformAgnosticPath("generated-code", "connexion", "test_root", "openapi_server", "models"), + platformAgnosticPath("generated-code", "connexion", "test_root", "openapi_server", "controllers"), + "test_root") + }, + new Object[]{ + "Python src in import", + ImmutableMap.of(PYTHON_SRC_ROOT, "test_root", USE_PYTHON_SRC_ROOT_IN_IMPORTS, "true"), + "TestModel", + new ExpectedValues("from test_root.openapi_server.models.test_model import TestModel", + "test_root.openapi_server.controllers", + platformAgnosticPath("generated-code", "connexion", "test_root", "openapi_server", "models"), + platformAgnosticPath("generated-code", "connexion", "test_root", "openapi_server", "controllers"), + null) + }, + new Object[]{ + "Python src in import with specified package", + ImmutableMap.of(PYTHON_SRC_ROOT, "test_root", + USE_PYTHON_SRC_ROOT_IN_IMPORTS, "true", + CodegenConstants.PACKAGE_NAME, "test_package"), + "TestModel", + new ExpectedValues("from test_root.test_package.models.test_model import TestModel", + "test_root.test_package.controllers", + platformAgnosticPath("generated-code", "connexion", "test_root", "test_package", "models"), + platformAgnosticPath("generated-code", "connexion", "test_root", "test_package", "controllers"), + null) + } + }; + } + + private static String platformAgnosticPath(String... nodes) { + return StringUtils.join(nodes, File.separatorChar); + } + + private static class MockAbstractPythonConnexionServerCodegen extends AbstractPythonConnexionServerCodegen { + public MockAbstractPythonConnexionServerCodegen(String templateDirectory, boolean fixBodyNameValue) { + super(templateDirectory, fixBodyNameValue); + } + } + + private static class ExpectedValues { + public final String expectedImport; + public final String expectedApiPackage; + public final String expectedModelFileFolder; + public final String expectedApiFileFolder; + public final String pythonSrcRoot; + + public ExpectedValues(String expectedImport, String expectedApiPackage, String expectedModelFileFolder, + String expectedApiFileFolder, String pythonSrcRoot) { + this.expectedImport = expectedImport; + this.expectedApiPackage = expectedApiPackage; + this.expectedModelFileFolder = expectedModelFileFolder; + this.expectedApiFileFolder = expectedApiFileFolder; + this.pythonSrcRoot = pythonSrcRoot != null ? pythonSrcRoot + File.separatorChar : null; + } + } + +} From 3c866fb4a34e86d0ea2fef401a30206d7452bd2a Mon Sep 17 00:00:00 2001 From: Shyla Srinivas <58704937+shylasrinivas@users.noreply.github.com> Date: Wed, 2 Jun 2021 09:13:10 -0700 Subject: [PATCH 078/192] Fix python generation when custom files and templates are specified (#9572) * fix python generation when custom files and templates are specified * add test for processUserDefinedTemplates --- .../codegen/DefaultGenerator.java | 2 +- .../codegen/DefaultGeneratorTest.java | 59 ++++++++++++++++++- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index 9fde6eaa047..d2e1bb4500d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -938,7 +938,7 @@ public class DefaultGenerator implements Generator { // TODO: initial behavior is "merge" user defined with built-in templates. consider offering user a "replace" option. if (userDefinedTemplates != null && !userDefinedTemplates.isEmpty()) { Map supportingFilesMap = config.supportingFiles().stream() - .collect(Collectors.toMap(TemplateDefinition::getTemplateFile, Function.identity())); + .collect(Collectors.toMap(TemplateDefinition::getTemplateFile, Function.identity(), (oldValue, newValue) -> oldValue)); // TemplateFileType.SupportingFiles userDefinedTemplates.stream() diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java index 7e6a986bb32..81869d78f91 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java @@ -662,5 +662,62 @@ public class DefaultGeneratorTest { Assert.assertEquals(servers.get(1).url, "http://trailingshlash.io:80/v1"); Assert.assertEquals(servers.get(2).url, "http://notrailingslash.io:80/v2"); } -} + @Test + public void testProcessUserDefinedTemplatesWithConfig() throws IOException { + Path target = Files.createTempDirectory("test"); + Path templates = Files.createTempDirectory("templates"); + File output = target.toFile(); + try { + // Create custom template + File customTemplate = new File(templates.toFile(), "README.mustache"); + new File(customTemplate.getParent()).mkdirs(); + Files.write(customTemplate.toPath(), + "# {{someKey}}".getBytes(StandardCharsets.UTF_8), + StandardOpenOption.CREATE); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("python") + .setInputSpec("src/test/resources/3_0/petstore.yaml") + .setPackageName("io.something") + .setTemplateDir(templates.toAbsolutePath().toString()) + .addAdditionalProperty("files", "src/test/resources/sampleConfig.json:\n\t folder: supportingjson "+ + "\n\t destinationFilename: supportingconfig.json \n\t templateType: SupportingFiles") + .setSkipOverwrite(false) + .setOutputDir(target.toAbsolutePath().toString()); + + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + DefaultGenerator generator = new DefaultGenerator(false); + + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); + generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "true"); + generator.setGeneratorPropertyDefault(CodegenConstants.API_DOCS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.API_TESTS, "false"); + + List files = generator.opts(clientOptInput).generate(); + + // remove commented code based on review - files does not seem to be supported in CodegenConfigurator + // supporting files sanity check + // TestUtils.ensureContainsFile(files, output, "sampleConfig.json"); + // Assert.assertTrue(new File(output, "sampleConfig.json").exists()); + + // Generator should report api_client.py as a generated file + TestUtils.ensureContainsFile(files, output, "io/something/api_client.py"); + + // Generated file should exist on the filesystem after generation + File apiClient = new File(output, "io/something/api_client.py"); + Assert.assertTrue(apiClient.exists()); + + // Generated file should contain our custom packageName + TestUtils.assertFileContains(apiClient.toPath(), + "from io.something import rest" + ); + } finally { + output.delete(); + templates.toFile().delete(); + } + } +} From cdc00769aadb46d4617fbec35daee643e95b7926 Mon Sep 17 00:00:00 2001 From: Mikael Lixenstrand <78344223+lixen-wg2@users.noreply.github.com> Date: Thu, 3 Jun 2021 03:49:32 +0200 Subject: [PATCH 079/192] [Erlang] return empty body for 204 (#9512) * fix handle_request_json spec res * fix client spec * make it possible to answer with 0 size binary for 204 * only generate empty bin for 204 * only generate empty bin for 204 --- .../src/main/resources/erlang-client/api.mustache | 4 ++-- .../src/main/resources/erlang-server/handler.mustache | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/erlang-client/api.mustache b/modules/openapi-generator/src/main/resources/erlang-client/api.mustache index a2335745bbb..ddb5dee0138 100644 --- a/modules/openapi-generator/src/main/resources/erlang-client/api.mustache +++ b/modules/openapi-generator/src/main/resources/erlang-client/api.mustache @@ -3,7 +3,7 @@ -export([{{#operations}}{{#operation}}{{^-first}}, {{/-first}}{{operationId}}/{{arityRequired}}, {{operationId}}/{{arityOptional}}{{/operation}}{{/operations}}]). --define(BASE_URL, "{{{basePathWithoutHost}}}"). +-define(BASE_URL, <<"{{{basePathWithoutHost}}}">>). {{#operations}} {{#operation}} @@ -21,7 +21,7 @@ Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = {{httpMethod}}, - Path = ["{{{replacedPathName}}}"], + Path = [<<"{{{replacedPathName}}}">>], QS = {{#queryParams.isEmpty}}[]{{/queryParams.isEmpty}}{{^queryParams.isEmpty}}lists:flatten([{{#joinWithComma}}{{#queryParams}}{{#required}}{{#qsEncode}}{{this}}{{/qsEncode}} {{/required}}{{/queryParams}}{{/joinWithComma}}])++{{packageName}}_utils:optional_params([{{#joinWithComma}}{{#queryParams}}{{^required}} '{{baseName}}'{{/required}}{{/queryParams}}{{/joinWithComma}}], _OptionalParams){{/queryParams.isEmpty}}, Headers = {{#headerParams.isEmpty}}[]{{/headerParams.isEmpty}}{{^headerParams.isEmpty}}[{{#headerParams}}{{#required}} {<<"{{baseName}}">>, {{paramName}}}{{/required}}{{/headerParams}}]++{{packageName}}_utils:optional_params([{{#joinWithComma}}{{#headerParams}}{{^required}} '{{baseName}}'{{/required}}{{/headerParams}}{{/joinWithComma}}], _OptionalParams){{/headerParams.isEmpty}}, Body1 = {{^formParams.isEmpty}}{form, [{{#joinWithComma}}{{#formParams}}{{#required}} {<<"{{baseName}}">>, {{paramName}}}{{/required}}{{/formParams}}{{/joinWithComma}}]++{{packageName}}_utils:optional_params([{{#joinWithComma}}{{#formParams}}{{^required}} '{{baseName}}'{{/required}}{{/formParams}}{{/joinWithComma}}], _OptionalParams)}{{/formParams.isEmpty}}{{#formParams.isEmpty}}{{#bodyParams.isEmpty}}[]{{/bodyParams.isEmpty}}{{^bodyParams.isEmpty}}{{#bodyParams}}{{paramName}}{{/bodyParams}}{{/bodyParams.isEmpty}}{{/formParams.isEmpty}}, diff --git a/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache b/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache index 80314899a38..dc1c47cc20e 100644 --- a/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache +++ b/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache @@ -209,7 +209,7 @@ process_response(Response, Req0, State = #state{operation_id = OperationID}) -> {stop, Req, State} end. --spec handle_request_json(cowboy_req:req(), state()) -> {cowboy_req:resp_body(), cowboy_req:req(), state()}. +-spec handle_request_json(cowboy_req:req(), state()) -> processed_response(). handle_request_json( Req0, @@ -233,7 +233,7 @@ handle_request_json( Body, ValidatorState ), - PreparedBody = jsx:encode(Body), + PreparedBody = prepare_body(Code, Body), Response = {ok, {Code, Headers, PreparedBody}}, process_response(Response, Req1, State); {error, Reason, Req1} -> @@ -241,3 +241,8 @@ handle_request_json( end. validate_headers(_, Req) -> {true, Req}. + +prepare_body(204, Body) when map_size(Body) == 0; length(Body) == 0 -> + <<>>; +prepare_body(_Code, Body) -> + jsx:encode(Body). From f0bbeb75ffa0fa26de67f13c6f622ea8c4d5108f Mon Sep 17 00:00:00 2001 From: William Cheng Date: Thu, 3 Jun 2021 09:52:05 +0800 Subject: [PATCH 080/192] update erlang-server samples --- .../petstore/erlang-server/.openapi-generator/VERSION | 2 +- .../petstore/erlang-server/src/openapi_pet_handler.erl | 9 +++++++-- .../petstore/erlang-server/src/openapi_store_handler.erl | 9 +++++++-- .../petstore/erlang-server/src/openapi_user_handler.erl | 9 +++++++-- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/samples/server/petstore/erlang-server/.openapi-generator/VERSION b/samples/server/petstore/erlang-server/.openapi-generator/VERSION index d509cc92aa8..6555596f931 100644 --- a/samples/server/petstore/erlang-server/.openapi-generator/VERSION +++ b/samples/server/petstore/erlang-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.1.1-SNAPSHOT \ No newline at end of file +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/erlang-server/src/openapi_pet_handler.erl b/samples/server/petstore/erlang-server/src/openapi_pet_handler.erl index 15bbb6432fd..203cc07b28a 100644 --- a/samples/server/petstore/erlang-server/src/openapi_pet_handler.erl +++ b/samples/server/petstore/erlang-server/src/openapi_pet_handler.erl @@ -440,7 +440,7 @@ process_response(Response, Req0, State = #state{operation_id = OperationID}) -> {stop, Req, State} end. --spec handle_request_json(cowboy_req:req(), state()) -> {cowboy_req:resp_body(), cowboy_req:req(), state()}. +-spec handle_request_json(cowboy_req:req(), state()) -> processed_response(). handle_request_json( Req0, @@ -464,7 +464,7 @@ handle_request_json( Body, ValidatorState ), - PreparedBody = jsx:encode(Body), + PreparedBody = prepare_body(Code, Body), Response = {ok, {Code, Headers, PreparedBody}}, process_response(Response, Req1, State); {error, Reason, Req1} -> @@ -472,3 +472,8 @@ handle_request_json( end. validate_headers(_, Req) -> {true, Req}. + +prepare_body(204, Body) when map_size(Body) == 0; length(Body) == 0 -> + <<>>; +prepare_body(_Code, Body) -> + jsx:encode(Body). diff --git a/samples/server/petstore/erlang-server/src/openapi_store_handler.erl b/samples/server/petstore/erlang-server/src/openapi_store_handler.erl index 57921986531..b7969837147 100644 --- a/samples/server/petstore/erlang-server/src/openapi_store_handler.erl +++ b/samples/server/petstore/erlang-server/src/openapi_store_handler.erl @@ -235,7 +235,7 @@ process_response(Response, Req0, State = #state{operation_id = OperationID}) -> {stop, Req, State} end. --spec handle_request_json(cowboy_req:req(), state()) -> {cowboy_req:resp_body(), cowboy_req:req(), state()}. +-spec handle_request_json(cowboy_req:req(), state()) -> processed_response(). handle_request_json( Req0, @@ -259,7 +259,7 @@ handle_request_json( Body, ValidatorState ), - PreparedBody = jsx:encode(Body), + PreparedBody = prepare_body(Code, Body), Response = {ok, {Code, Headers, PreparedBody}}, process_response(Response, Req1, State); {error, Reason, Req1} -> @@ -267,3 +267,8 @@ handle_request_json( end. validate_headers(_, Req) -> {true, Req}. + +prepare_body(204, Body) when map_size(Body) == 0; length(Body) == 0 -> + <<>>; +prepare_body(_Code, Body) -> + jsx:encode(Body). diff --git a/samples/server/petstore/erlang-server/src/openapi_user_handler.erl b/samples/server/petstore/erlang-server/src/openapi_user_handler.erl index 4c71b5ebcfd..f0d9179392c 100644 --- a/samples/server/petstore/erlang-server/src/openapi_user_handler.erl +++ b/samples/server/petstore/erlang-server/src/openapi_user_handler.erl @@ -402,7 +402,7 @@ process_response(Response, Req0, State = #state{operation_id = OperationID}) -> {stop, Req, State} end. --spec handle_request_json(cowboy_req:req(), state()) -> {cowboy_req:resp_body(), cowboy_req:req(), state()}. +-spec handle_request_json(cowboy_req:req(), state()) -> processed_response(). handle_request_json( Req0, @@ -426,7 +426,7 @@ handle_request_json( Body, ValidatorState ), - PreparedBody = jsx:encode(Body), + PreparedBody = prepare_body(Code, Body), Response = {ok, {Code, Headers, PreparedBody}}, process_response(Response, Req1, State); {error, Reason, Req1} -> @@ -434,3 +434,8 @@ handle_request_json( end. validate_headers(_, Req) -> {true, Req}. + +prepare_body(204, Body) when map_size(Body) == 0; length(Body) == 0 -> + <<>>; +prepare_body(_Code, Body) -> + jsx:encode(Body). From 439a1a9ba2355197445d1aeb6481b6d12de3bc78 Mon Sep 17 00:00:00 2001 From: Blackclaws Date: Thu, 3 Jun 2021 03:55:47 +0200 Subject: [PATCH 081/192] Do not validate enum parameters (#9594) --- .../src/main/resources/csharp-netcore/modelGeneric.mustache | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache index 3ecfa611d68..8dbd9c424e0 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache @@ -300,6 +300,7 @@ {{/parent}} {{#vars}} {{#hasValidation}} + {{^isEnum}} {{#maxLength}} // {{{name}}} ({{{dataType}}}) maxLength if(this.{{{name}}} != null && this.{{{name}}}.Length > {{maxLength}}) @@ -343,6 +344,7 @@ {{/isByteArray}} {{/pattern}} + {{/isEnum}} {{/hasValidation}} {{/vars}} yield break; From 2b495fc7a3ce2d620fc7ea931955b070ffa6020e Mon Sep 17 00:00:00 2001 From: ricou13770 <84787595+ricou13770@users.noreply.github.com> Date: Thu, 3 Jun 2021 04:02:00 +0200 Subject: [PATCH 082/192] Fix module "go-server" - template "controller-api.mustache" : query.Get() must use {{baseName}} instead of {{paramName}} on boolean and default query parameters (#9580) --- .../src/main/resources/go-server/controller-api.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache b/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache index 2c6b5da8b52..0039bf4a69c 100644 --- a/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache @@ -90,7 +90,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re } {{/isInteger}} {{#isBoolean}} - {{paramName}}, err := parseBoolParameter(query.Get("{{paramName}}")) + {{paramName}}, err := parseBoolParameter(query.Get("{{baseName}}")) if err != nil { w.WriteHeader(500) return @@ -99,7 +99,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re {{^isLong}} {{^isInteger}} {{^isBoolean}} - {{paramName}} := {{#isArray}}strings.Split({{/isArray}}query.Get("{{paramName}}"){{#isArray}}, ","){{/isArray}} + {{paramName}} := {{#isArray}}strings.Split({{/isArray}}query.Get("{{baseName}}"){{#isArray}}, ","){{/isArray}} {{/isBoolean}} {{/isInteger}} {{/isLong}} From 93880a486e9fb32aa00b70533743b507215ad3df Mon Sep 17 00:00:00 2001 From: Nikita Vakula <52108696+krjakbrjak@users.noreply.github.com> Date: Thu, 3 Jun 2021 04:13:24 +0200 Subject: [PATCH 083/192] python-fastapi improvements (#9649) * [python-fastapi] Ignore some flake8 warnings 1. Some of the "imported but not used" warnings are there because it is not easy to express what should be imported in mustache template language. These warnings are silenced in order to keep the templates morre readable. 2. Single quotes -> Double quotes (for consistency). Signed-off-by: Nikita Vakula * [python-fastapi] Added flake8 config Signed-off-by: Nikita Vakula * [python-fastapi] Set extra constraints on values It is important to set all constraints (pattern, greater than, etc.) on values of all arguments, because FastAPI can handle them automatically. Signed-off-by: Nikita Vakula * [python-fastapi] Updated samples Signed-off-by: Nikita Vakula --- .../languages/PythonFastAPIServerCodegen.java | 7 +++ .../resources/python-fastapi/.flake8.mustache | 3 + .../resources/python-fastapi/api.mustache | 8 +-- .../python-fastapi/api_test.mustache | 20 +++--- .../python-fastapi/conftest.mustache | 3 - .../endpoint_argument_definition.mustache | 2 +- .../resources/python-fastapi/model.mustache | 6 +- .../python-fastapi/security_api.mustache | 8 +-- .../server/petstore/python-fastapi/.flake8 | 3 + .../python-fastapi/.openapi-generator/FILES | 1 + .../src/openapi_server/apis/pet_api.py | 61 ++++++++----------- .../src/openapi_server/apis/store_api.py | 23 +++---- .../src/openapi_server/apis/user_api.py | 49 ++++++--------- .../src/openapi_server/models/api_response.py | 6 +- .../src/openapi_server/models/category.py | 6 +- .../src/openapi_server/models/order.py | 6 +- .../src/openapi_server/models/pet.py | 6 +- .../src/openapi_server/models/tag.py | 6 +- .../src/openapi_server/models/user.py | 6 +- .../src/openapi_server/security_api.py | 8 +-- .../petstore/python-fastapi/tests/conftest.py | 3 - 21 files changed, 112 insertions(+), 129 deletions(-) create mode 100644 modules/openapi-generator/src/main/resources/python-fastapi/.flake8.mustache create mode 100644 samples/server/petstore/python-fastapi/.flake8 diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java index 5cf315ab135..c4d2e6f3283 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java @@ -150,6 +150,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); supportingFiles.add(new SupportingFile("pyproject_toml.mustache", "", "pyproject.toml")); supportingFiles.add(new SupportingFile("setup_cfg.mustache", "", "setup.cfg")); + supportingFiles.add(new SupportingFile(".flake8.mustache", "", ".flake8")); } @Override @@ -287,4 +288,10 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { System.out.println("# Please support his work directly via https://paypal.me/krjakbrjaki \uD83D\uDE4F #"); System.out.println("################################################################################"); } + + @Override + public String toRegularExpression(String pattern) { + String regex = super.toRegularExpression(pattern); + return StringUtils.substring(regex, 1, -1); + } } diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/.flake8.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/.flake8.mustache new file mode 100644 index 00000000000..9e008c5bb19 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/python-fastapi/.flake8.mustache @@ -0,0 +1,3 @@ +[flake8] +max-line-length = 88 +exclude = .git,__pycache__,__init__.py,.mypy_cache,.pytest_cache,.venv diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/api.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/api.mustache index 21c091251ad..04b95fb104a 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/api.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/api.mustache @@ -1,8 +1,8 @@ # coding: utf-8 -from typing import Dict, List +from typing import Dict, List # noqa: F401 -from fastapi import ( +from fastapi import ( # noqa: F401 APIRouter, Body, Cookie, @@ -16,7 +16,7 @@ from fastapi import ( status, ) -from {{modelPackage}}.extra_models import TokenModel +from {{modelPackage}}.extra_models import TokenModel # noqa: F401 {{#imports}} {{import}} {{/imports}} @@ -53,7 +53,7 @@ async def {{operationId}}( ), {{/authMethods}} {{/hasAuthMethods}} -) -> {{#returnType}}{{.}}{{/returnType}}{{^returnType}}None{{/returnType}}: # noqa: E501 +) -> {{#returnType}}{{.}}{{/returnType}}{{^returnType}}None{{/returnType}}: {{#notes}}"""{{.}}""" ...{{/notes}}{{^notes}}...{{/notes}} {{^-last}} diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/api_test.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/api_test.mustache index a3470a2323e..248f282e857 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/api_test.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/api_test.mustache @@ -2,10 +2,11 @@ from fastapi.testclient import TestClient -import json +{{#vendorExtensions.x-skip-test}} import pytest +{{/vendorExtensions.x-skip-test}} -{{#imports}}{{import}} +{{#imports}}{{import}} # noqa: F401 {{/imports}} {{#operations}} @@ -23,24 +24,23 @@ def test_{{operationId}}(client: TestClient): {{paramName}} = {{#isContainer}}[{{/isContainer}}{{{example}}}{{#isContainer}}]{{/isContainer}} {{/bodyParam}} {{#queryParams}} - {{#-first}}params = [{{/-first}}{{^-first}} {{/-first}}("{{paramName}}", {{{example}}}){{^-last}},{{/-last}}{{#-last}}]{{/-last}} - {{/queryParams}} - headers = { {{#headerParams}} - '{{paramName}}': {{{example}}},{{/headerParams}}{{#authMethods}} - {{#isOAuth}}'Authorization': 'Bearer special-key',{{/isOAuth}}{{#isApiKey}}'{{name}}': 'special-key',{{/isApiKey}}{{#isBasicBasic}}'Authorization': 'BasicZm9vOmJhcg==',{{/isBasicBasic}}{{#isBasicBearer}}'Authorization': 'Bearer special-key',{{/isBasicBearer}}{{/authMethods}} + {{#-first}}params = [{{/-first}}("{{paramName}}", {{{example}}}){{^-last}}, {{/-last}}{{#-last}}]{{/-last}}{{/queryParams}} + headers = {{=<% %>=}}{<%#headerParams%><%={{ }}=%> + "{{paramName}}": {{{example}}},{{/headerParams}}{{#authMethods}} + {{#isOAuth}}"Authorization": "Bearer special-key",{{/isOAuth}}{{#isApiKey}}"{{name}}": "special-key",{{/isApiKey}}{{#isBasicBasic}}"Authorization": "BasicZm9vOmJhcg==",{{/isBasicBasic}}{{#isBasicBearer}}"Authorization": "Bearer special-key",{{/isBasicBearer}}{{/authMethods}} } {{#formParams}} {{#-first}} data = { {{/-first}} - '{{paramName}}': {{{example}}}{{^-last}},{{/-last}} + "{{paramName}}": {{{example}}}{{^-last}},{{/-last}} {{#-last}} } {{/-last}} {{/formParams}} response = client.request( - '{{httpMethod}}', - '{{{path}}}'{{#pathParams}}{{#-first}}.format({{/-first}}{{baseName}}={{{example}}}{{^-last}}, {{/-last}}{{#-last}}){{/-last}}{{/pathParams}}, + "{{httpMethod}}", + "{{{path}}}"{{#pathParams}}{{#-first}}.format({{/-first}}{{baseName}}={{{example}}}{{^-last}}, {{/-last}}{{#-last}}){{/-last}}{{/pathParams}}, headers=headers,{{#bodyParam}} json={{paramName}},{{/bodyParam}}{{#formParams}}{{#-first}} data=data,{{/-first}}{{/formParams}}{{#queryParams}}{{#-first}} diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/conftest.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/conftest.mustache index 357ea48c3ab..e096833deba 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/conftest.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/conftest.mustache @@ -1,6 +1,3 @@ -import contextlib -from typing import Any - import pytest from fastapi import FastAPI from fastapi.testclient import TestClient diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/endpoint_argument_definition.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/endpoint_argument_definition.mustache index 939bfda10a6..c4bace9973d 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/endpoint_argument_definition.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/endpoint_argument_definition.mustache @@ -1 +1 @@ -{{#isPathParam}}{{baseName}}{{/isPathParam}}{{^isPathParam}}{{paramName}}{{/isPathParam}}: {{>param_type}} = {{#isPathParam}}Path{{/isPathParam}}{{#isHeaderParam}}Header{{/isHeaderParam}}{{#isFormParam}}Form{{/isFormParam}}{{#isQueryParam}}Query{{/isQueryParam}}{{#isCookieParam}}Cookie{{/isCookieParam}}{{#isBodyParam}}Body{{/isBodyParam}}(None, description="{{description}}") +{{#isPathParam}}{{baseName}}{{/isPathParam}}{{^isPathParam}}{{paramName}}{{/isPathParam}}: {{>param_type}} = {{#isPathParam}}Path{{/isPathParam}}{{#isHeaderParam}}Header{{/isHeaderParam}}{{#isFormParam}}Form{{/isFormParam}}{{#isQueryParam}}Query{{/isQueryParam}}{{#isCookieParam}}Cookie{{/isCookieParam}}{{#isBodyParam}}Body{{/isBodyParam}}({{#defaultValue}}{{.}}{{/defaultValue}}{{^defaultValue}}None{{/defaultValue}}, description="{{description}}"{{#isLong}}{{#minimum}}, ge={{minimum}}{{/minimum}}{{#maximum}}, le={{maximum}}{{/maximum}}{{/isLong}}{{#isInteger}}{{#minimum}}, ge={{minimum}}{{/minimum}}{{#maximum}}, le={{maximum}}{{/maximum}}{{/isInteger}}{{#pattern}}, regex=r"{{pattern}}"{{/pattern}}{{#minLength}}, min_length={{minLength}}{{/minLength}}{{#maxLength}}, max_length={{maxLength}}{{/maxLength}}) \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/model.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/model.mustache index f6a15877fa4..e56ef26d511 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/model.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/model.mustache @@ -1,10 +1,10 @@ # coding: utf-8 -from datetime import date, datetime +from datetime import date, datetime # noqa: F401 -from typing import Dict, List, Optional +from typing import Dict, List, Optional # noqa: F401 -from pydantic import BaseModel, EmailStr, validator +from pydantic import BaseModel, EmailStr, validator # noqa: F401 {{#models}} {{#model}} {{#pyImports}} diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/security_api.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/security_api.mustache index 77bceb11cfa..4fda1a8f91d 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/security_api.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/security_api.mustache @@ -2,9 +2,9 @@ from typing import List -from fastapi import APIRouter, Depends, Response, Security, status -from fastapi.openapi.models import OAuthFlowImplicit, OAuthFlows -from fastapi.security import ( +from fastapi import Depends, Security # noqa: F401 +from fastapi.openapi.models import OAuthFlowImplicit, OAuthFlows # noqa: F401 +from fastapi.security import ( # noqa: F401 HTTPAuthorizationCredentials, HTTPBasic, HTTPBasicCredentials, @@ -14,7 +14,7 @@ from fastapi.security import ( OAuth2PasswordBearer, SecurityScopes, ) -from fastapi.security.api_key import APIKey, APIKeyCookie, APIKeyHeader, APIKeyQuery +from fastapi.security.api_key import APIKeyCookie, APIKeyHeader, APIKeyQuery # noqa: F401 from {{modelPackage}}.extra_models import TokenModel diff --git a/samples/server/petstore/python-fastapi/.flake8 b/samples/server/petstore/python-fastapi/.flake8 new file mode 100644 index 00000000000..9e008c5bb19 --- /dev/null +++ b/samples/server/petstore/python-fastapi/.flake8 @@ -0,0 +1,3 @@ +[flake8] +max-line-length = 88 +exclude = .git,__pycache__,__init__.py,.mypy_cache,.pytest_cache,.venv diff --git a/samples/server/petstore/python-fastapi/.openapi-generator/FILES b/samples/server/petstore/python-fastapi/.openapi-generator/FILES index 247e0d50f67..1d9f0c53109 100644 --- a/samples/server/petstore/python-fastapi/.openapi-generator/FILES +++ b/samples/server/petstore/python-fastapi/.openapi-generator/FILES @@ -1,3 +1,4 @@ +.flake8 .gitignore Dockerfile README.md diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/apis/pet_api.py b/samples/server/petstore/python-fastapi/src/openapi_server/apis/pet_api.py index d4dfa357c30..513d49d1b7a 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/apis/pet_api.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/apis/pet_api.py @@ -1,8 +1,8 @@ # coding: utf-8 -from typing import Dict, List +from typing import Dict, List # noqa: F401 -from fastapi import ( +from fastapi import ( # noqa: F401 APIRouter, Body, Cookie, @@ -16,7 +16,7 @@ from fastapi import ( status, ) -from openapi_server.models.extra_models import TokenModel +from openapi_server.models.extra_models import TokenModel # noqa: F401 from openapi_server.models.api_response import ApiResponse from openapi_server.models.pet import Pet from openapi_server.security_api import get_token_petstore_auth, get_token_api_key @@ -34,12 +34,11 @@ router = APIRouter() summary="Add a new pet to the store", ) async def add_pet( - pet: Pet = Body(None, description="Pet object that needs to be added to the store") -, + pet: Pet = Body(None, description="Pet object that needs to be added to the store"), token_petstore_auth: TokenModel = Security( get_token_petstore_auth, scopes=["write:pets", "read:pets"] ), -) -> Pet: # noqa: E501 +) -> Pet: ... @@ -52,14 +51,12 @@ async def add_pet( summary="Deletes a pet", ) async def delete_pet( - petId: int = Path(None, description="Pet id to delete") -, - api_key: str = Header(None, description="") -, + petId: int = Path(None, description="Pet id to delete"), + api_key: str = Header(None, description=""), token_petstore_auth: TokenModel = Security( get_token_petstore_auth, scopes=["write:pets", "read:pets"] ), -) -> None: # noqa: E501 +) -> None: ... @@ -73,12 +70,11 @@ async def delete_pet( summary="Finds Pets by status", ) async def find_pets_by_status( - status: List[str] = Query(None, description="Status values that need to be considered for filter") -, + status: List[str] = Query(None, description="Status values that need to be considered for filter"), token_petstore_auth: TokenModel = Security( get_token_petstore_auth, scopes=["read:pets"] ), -) -> List[Pet]: # noqa: E501 +) -> List[Pet]: """Multiple status values can be provided with comma separated strings""" ... @@ -93,12 +89,11 @@ async def find_pets_by_status( summary="Finds Pets by tags", ) async def find_pets_by_tags( - tags: List[str] = Query(None, description="Tags to filter by") -, + tags: List[str] = Query(None, description="Tags to filter by"), token_petstore_auth: TokenModel = Security( get_token_petstore_auth, scopes=["read:pets"] ), -) -> List[Pet]: # noqa: E501 +) -> List[Pet]: """Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.""" ... @@ -114,12 +109,11 @@ async def find_pets_by_tags( summary="Find pet by ID", ) async def get_pet_by_id( - petId: int = Path(None, description="ID of pet to return") -, + petId: int = Path(None, description="ID of pet to return"), token_api_key: TokenModel = Security( get_token_api_key ), -) -> Pet: # noqa: E501 +) -> Pet: """Returns a single pet""" ... @@ -136,12 +130,11 @@ async def get_pet_by_id( summary="Update an existing pet", ) async def update_pet( - pet: Pet = Body(None, description="Pet object that needs to be added to the store") -, + pet: Pet = Body(None, description="Pet object that needs to be added to the store"), token_petstore_auth: TokenModel = Security( get_token_petstore_auth, scopes=["write:pets", "read:pets"] ), -) -> Pet: # noqa: E501 +) -> Pet: ... @@ -154,16 +147,13 @@ async def update_pet( summary="Updates a pet in the store with form data", ) async def update_pet_with_form( - petId: int = Path(None, description="ID of pet that needs to be updated") -, - name: str = Form(None, description="Updated name of the pet") -, - status: str = Form(None, description="Updated status of the pet") -, + petId: int = Path(None, description="ID of pet that needs to be updated"), + name: str = Form(None, description="Updated name of the pet"), + status: str = Form(None, description="Updated status of the pet"), token_petstore_auth: TokenModel = Security( get_token_petstore_auth, scopes=["write:pets", "read:pets"] ), -) -> None: # noqa: E501 +) -> None: ... @@ -176,14 +166,11 @@ async def update_pet_with_form( summary="uploads an image", ) async def upload_file( - petId: int = Path(None, description="ID of pet to update") -, - additional_metadata: str = Form(None, description="Additional data to pass to server") -, - file: str = Form(None, description="file to upload") -, + petId: int = Path(None, description="ID of pet to update"), + additional_metadata: str = Form(None, description="Additional data to pass to server"), + file: str = Form(None, description="file to upload"), token_petstore_auth: TokenModel = Security( get_token_petstore_auth, scopes=["write:pets", "read:pets"] ), -) -> ApiResponse: # noqa: E501 +) -> ApiResponse: ... diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/apis/store_api.py b/samples/server/petstore/python-fastapi/src/openapi_server/apis/store_api.py index dd7a484d3db..208cacab632 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/apis/store_api.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/apis/store_api.py @@ -1,8 +1,8 @@ # coding: utf-8 -from typing import Dict, List +from typing import Dict, List # noqa: F401 -from fastapi import ( +from fastapi import ( # noqa: F401 APIRouter, Body, Cookie, @@ -16,7 +16,7 @@ from fastapi import ( status, ) -from openapi_server.models.extra_models import TokenModel +from openapi_server.models.extra_models import TokenModel # noqa: F401 from openapi_server.models.order import Order from openapi_server.security_api import get_token_api_key @@ -33,9 +33,8 @@ router = APIRouter() summary="Delete purchase order by ID", ) async def delete_order( - orderId: str = Path(None, description="ID of the order that needs to be deleted") -, -) -> None: # noqa: E501 + orderId: str = Path(None, description="ID of the order that needs to be deleted"), +) -> None: """For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors""" ... @@ -52,7 +51,7 @@ async def get_inventory( token_api_key: TokenModel = Security( get_token_api_key ), -) -> Dict[str, int]: # noqa: E501 +) -> Dict[str, int]: """Returns a map of status codes to quantities""" ... @@ -68,9 +67,8 @@ async def get_inventory( summary="Find purchase order by ID", ) async def get_order_by_id( - orderId: int = Path(None, description="ID of pet that needs to be fetched") -, -) -> Order: # noqa: E501 + orderId: int = Path(None, description="ID of pet that needs to be fetched", ge=1, le=5), +) -> Order: """For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions""" ... @@ -85,7 +83,6 @@ async def get_order_by_id( summary="Place an order for a pet", ) async def place_order( - order: Order = Body(None, description="order placed for purchasing the pet") -, -) -> Order: # noqa: E501 + order: Order = Body(None, description="order placed for purchasing the pet"), +) -> Order: ... diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/apis/user_api.py b/samples/server/petstore/python-fastapi/src/openapi_server/apis/user_api.py index d6370178cd9..8609be647d1 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/apis/user_api.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/apis/user_api.py @@ -1,8 +1,8 @@ # coding: utf-8 -from typing import Dict, List +from typing import Dict, List # noqa: F401 -from fastapi import ( +from fastapi import ( # noqa: F401 APIRouter, Body, Cookie, @@ -16,7 +16,7 @@ from fastapi import ( status, ) -from openapi_server.models.extra_models import TokenModel +from openapi_server.models.extra_models import TokenModel # noqa: F401 from openapi_server.models.user import User from openapi_server.security_api import get_token_api_key @@ -32,12 +32,11 @@ router = APIRouter() summary="Create user", ) async def create_user( - user: User = Body(None, description="Created user object") -, + user: User = Body(None, description="Created user object"), token_api_key: TokenModel = Security( get_token_api_key ), -) -> None: # noqa: E501 +) -> None: """This can only be done by the logged in user.""" ... @@ -51,12 +50,11 @@ async def create_user( summary="Creates list of users with given input array", ) async def create_users_with_array_input( - user: List[User] = Body(None, description="List of user object") -, + user: List[User] = Body(None, description="List of user object"), token_api_key: TokenModel = Security( get_token_api_key ), -) -> None: # noqa: E501 +) -> None: ... @@ -69,12 +67,11 @@ async def create_users_with_array_input( summary="Creates list of users with given input array", ) async def create_users_with_list_input( - user: List[User] = Body(None, description="List of user object") -, + user: List[User] = Body(None, description="List of user object"), token_api_key: TokenModel = Security( get_token_api_key ), -) -> None: # noqa: E501 +) -> None: ... @@ -88,12 +85,11 @@ async def create_users_with_list_input( summary="Delete user", ) async def delete_user( - username: str = Path(None, description="The name that needs to be deleted") -, + username: str = Path(None, description="The name that needs to be deleted"), token_api_key: TokenModel = Security( get_token_api_key ), -) -> None: # noqa: E501 +) -> None: """This can only be done by the logged in user.""" ... @@ -109,9 +105,8 @@ async def delete_user( summary="Get user by user name", ) async def get_user_by_name( - username: str = Path(None, description="The name that needs to be fetched. Use user1 for testing.") -, -) -> User: # noqa: E501 + username: str = Path(None, description="The name that needs to be fetched. Use user1 for testing."), +) -> User: ... @@ -125,11 +120,9 @@ async def get_user_by_name( summary="Logs user into the system", ) async def login_user( - username: str = Query(None, description="The user name for login") -, - password: str = Query(None, description="The password for login in clear text") -, -) -> str: # noqa: E501 + username: str = Query(None, description="The user name for login", regex=r"^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$"), + password: str = Query(None, description="The password for login in clear text"), +) -> str: ... @@ -145,7 +138,7 @@ async def logout_user( token_api_key: TokenModel = Security( get_token_api_key ), -) -> None: # noqa: E501 +) -> None: ... @@ -159,13 +152,11 @@ async def logout_user( summary="Updated user", ) async def update_user( - username: str = Path(None, description="name that need to be deleted") -, - user: User = Body(None, description="Updated user object") -, + username: str = Path(None, description="name that need to be deleted"), + user: User = Body(None, description="Updated user object"), token_api_key: TokenModel = Security( get_token_api_key ), -) -> None: # noqa: E501 +) -> None: """This can only be done by the logged in user.""" ... diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/api_response.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/api_response.py index 49926a6a14d..8819c50aeef 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/models/api_response.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/api_response.py @@ -1,10 +1,10 @@ # coding: utf-8 -from datetime import date, datetime +from datetime import date, datetime # noqa: F401 -from typing import Dict, List, Optional +from typing import Dict, List, Optional # noqa: F401 -from pydantic import BaseModel, EmailStr, validator +from pydantic import BaseModel, EmailStr, validator # noqa: F401 class ApiResponse(BaseModel): diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/category.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/category.py index cba9aece542..0a16035992c 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/models/category.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/category.py @@ -1,10 +1,10 @@ # coding: utf-8 -from datetime import date, datetime +from datetime import date, datetime # noqa: F401 -from typing import Dict, List, Optional +from typing import Dict, List, Optional # noqa: F401 -from pydantic import BaseModel, EmailStr, validator +from pydantic import BaseModel, EmailStr, validator # noqa: F401 class Category(BaseModel): diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/order.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/order.py index b129842ad2c..64e50546a3f 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/models/order.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/order.py @@ -1,10 +1,10 @@ # coding: utf-8 -from datetime import date, datetime +from datetime import date, datetime # noqa: F401 -from typing import Dict, List, Optional +from typing import Dict, List, Optional # noqa: F401 -from pydantic import BaseModel, EmailStr, validator +from pydantic import BaseModel, EmailStr, validator # noqa: F401 class Order(BaseModel): diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/pet.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/pet.py index c4e8c3fa4bf..bfaf8a909e2 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/models/pet.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/pet.py @@ -1,10 +1,10 @@ # coding: utf-8 -from datetime import date, datetime +from datetime import date, datetime # noqa: F401 -from typing import Dict, List, Optional +from typing import Dict, List, Optional # noqa: F401 -from pydantic import BaseModel, EmailStr, validator +from pydantic import BaseModel, EmailStr, validator # noqa: F401 from openapi_server.models.category import Category from openapi_server.models.tag import Tag diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/tag.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/tag.py index 6c2ab695415..96d92a6ab96 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/models/tag.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/tag.py @@ -1,10 +1,10 @@ # coding: utf-8 -from datetime import date, datetime +from datetime import date, datetime # noqa: F401 -from typing import Dict, List, Optional +from typing import Dict, List, Optional # noqa: F401 -from pydantic import BaseModel, EmailStr, validator +from pydantic import BaseModel, EmailStr, validator # noqa: F401 class Tag(BaseModel): diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/user.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/user.py index dd173677ce9..20bea97e57a 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/models/user.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/user.py @@ -1,10 +1,10 @@ # coding: utf-8 -from datetime import date, datetime +from datetime import date, datetime # noqa: F401 -from typing import Dict, List, Optional +from typing import Dict, List, Optional # noqa: F401 -from pydantic import BaseModel, EmailStr, validator +from pydantic import BaseModel, EmailStr, validator # noqa: F401 class User(BaseModel): diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/security_api.py b/samples/server/petstore/python-fastapi/src/openapi_server/security_api.py index 1c2f51e30a5..38eb60eb167 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/security_api.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/security_api.py @@ -2,9 +2,9 @@ from typing import List -from fastapi import APIRouter, Depends, Response, Security, status -from fastapi.openapi.models import OAuthFlowImplicit, OAuthFlows -from fastapi.security import ( +from fastapi import Depends, Security # noqa: F401 +from fastapi.openapi.models import OAuthFlowImplicit, OAuthFlows # noqa: F401 +from fastapi.security import ( # noqa: F401 HTTPAuthorizationCredentials, HTTPBasic, HTTPBasicCredentials, @@ -14,7 +14,7 @@ from fastapi.security import ( OAuth2PasswordBearer, SecurityScopes, ) -from fastapi.security.api_key import APIKey, APIKeyCookie, APIKeyHeader, APIKeyQuery +from fastapi.security.api_key import APIKeyCookie, APIKeyHeader, APIKeyQuery # noqa: F401 from openapi_server.models.extra_models import TokenModel diff --git a/samples/server/petstore/python-fastapi/tests/conftest.py b/samples/server/petstore/python-fastapi/tests/conftest.py index 0f1845c6041..cbde552c9c0 100644 --- a/samples/server/petstore/python-fastapi/tests/conftest.py +++ b/samples/server/petstore/python-fastapi/tests/conftest.py @@ -1,6 +1,3 @@ -import contextlib -from typing import Any - import pytest from fastapi import FastAPI from fastapi.testclient import TestClient From 972ad566fea7e033c45e217dbfcb949d90ea2cb5 Mon Sep 17 00:00:00 2001 From: Dheeraj Nalluri Date: Thu, 3 Jun 2021 00:58:53 -0500 Subject: [PATCH 084/192] [typescript-angular] Fix undefined query param (#9657) --- .../main/resources/typescript-angular/api.service.mustache | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache index 8f66fcf6f9e..4fe3186f1ad 100644 --- a/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache @@ -93,11 +93,16 @@ export class {{classname}} { {{/hasSomeFormParams}} private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + {{#isQueryParamObjectFormatJson}} + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + {{/isQueryParamObjectFormatJson}} + {{^isQueryParamObjectFormatJson}} if (typeof value === "object" && value instanceof Date === false) { httpParams = this.addToHttpParamsRecursive(httpParams, value); } else { httpParams = this.addToHttpParamsRecursive(httpParams, value, key); } + {{/isQueryParamObjectFormatJson}} return httpParams; } From a8c4cbd14d383b353debe3692a55d8d270f30099 Mon Sep 17 00:00:00 2001 From: Armel Soro Date: Thu, 3 Jun 2021 17:07:34 +0200 Subject: [PATCH 085/192] fix(#9328): Gradle Plugin ValidateTask does not work under Gradle 7.0 (#9453) * Allow to run ValidateTask tests against Gradle 7.0 as well * Drop setters for ValidateTask properties of mutable types This is applicable to the following properties: - inputSpec - recommend Otherwise, Gradle 7.0 now returns an error when attempting to configure this task. See https://docs.gradle.org/7.0/userguide/validation_problems.html#mutable_type_with_setter * Be more specific about the versions of Gradle tested in ValidateTaskDslTest Test against the latests Gradle 5.x and 6.x versions --- .../gradle/plugin/tasks/ValidateTask.kt | 6 +-- .../src/test/kotlin/ValidateTaskDslTest.kt | 49 ++++++++++++++----- 2 files changed, 41 insertions(+), 14 deletions(-) diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/ValidateTask.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/ValidateTask.kt index 3d0cbab2b06..6f3038e4e29 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/ValidateTask.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/ValidateTask.kt @@ -56,11 +56,11 @@ import org.openapitools.codegen.validations.oas.RuleConfiguration open class ValidateTask : DefaultTask() { @get:InputFile @PathSensitive(PathSensitivity.RELATIVE) - var inputSpec = project.objects.property() + val inputSpec = project.objects.property() @Optional @Input - var recommend = project.objects.property() + val recommend = project.objects.property() @Suppress("unused") @get:Internal @@ -128,4 +128,4 @@ open class ValidateTask : DefaultTask() { out.println("Spec is valid.") } } -} \ No newline at end of file +} diff --git a/modules/openapi-generator-gradle-plugin/src/test/kotlin/ValidateTaskDslTest.kt b/modules/openapi-generator-gradle-plugin/src/test/kotlin/ValidateTaskDslTest.kt index 2b06e853192..94ae68ab3af 100644 --- a/modules/openapi-generator-gradle-plugin/src/test/kotlin/ValidateTaskDslTest.kt +++ b/modules/openapi-generator-gradle-plugin/src/test/kotlin/ValidateTaskDslTest.kt @@ -3,6 +3,8 @@ package org.openapitools.generator.gradle.plugin import org.gradle.testkit.runner.GradleRunner import org.gradle.testkit.runner.TaskOutcome.FAILED import org.gradle.testkit.runner.TaskOutcome.SUCCESS +import org.gradle.util.GradleVersion +import org.testng.annotations.DataProvider import org.testng.annotations.Test import java.io.File import kotlin.test.assertEquals @@ -11,8 +13,25 @@ import kotlin.test.assertTrue class ValidateTaskDslTest : TestBase() { override var temp: File = createTempDir(javaClass.simpleName) - @Test - fun `openApiValidate should fail on non-file spec`() { + @DataProvider(name = "gradle_version_provider") + fun gradleVersionProvider(): Array> = arrayOf( + arrayOf(null), // uses the version of Gradle used to build the plugin itself + arrayOf("5.6.4"), + arrayOf("6.9"), + arrayOf("7.0")) + + private fun getGradleRunner(gradleVersion: String?): GradleRunner { + val gradleRunner = GradleRunner.create() + return if (gradleVersion.isNullOrBlank()) { + //Use the current version of Gradle + gradleRunner + } else { + gradleRunner.withGradleVersion(gradleVersion) + } + } + + @Test(dataProvider = "gradle_version_provider") + fun `openApiValidate should fail on non-file spec`(gradleVersion: String?) { // Arrange withProject(""" | plugins { @@ -25,20 +44,28 @@ class ValidateTaskDslTest : TestBase() { """.trimMargin()) // Act - val result = GradleRunner.create() + val result = getGradleRunner(gradleVersion) .withProjectDir(temp) .withArguments("openApiValidate") .withPluginClasspath() .buildAndFail() // Assert - assertTrue(result.output.contains("some_location' specified for property 'inputSpec' does not exist"), "Unexpected/no message presented to the user for a spec pointing to an invalid URI.") + val gradleActualVersion = gradleVersion ?: GradleVersion.current().version + val gradleVersionParts = gradleActualVersion.split(".") + val isBeforeGradle7 = (gradleVersionParts.isEmpty() || gradleVersionParts[0].toInt() < 7) + val expectedMessage = if (isBeforeGradle7) { + "some_location' specified for property 'inputSpec' does not exist" + } else { + "An input file was expected to be present but it doesn't exist." + } + assertTrue(result.output.contains(expectedMessage), "Unexpected/no message presented to the user for a spec pointing to an invalid URI.") assertEquals(FAILED, result.task(":openApiValidate")?.outcome, "Expected a failed run, but found ${result.task(":openApiValidate")?.outcome}") } - @Test - fun `openApiValidate should succeed on valid spec`() { + @Test(dataProvider = "gradle_version_provider") + fun `openApiValidate should succeed on valid spec`(gradleVersion: String?) { // Arrange val projectFiles = mapOf( "spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0.yaml") @@ -55,7 +82,7 @@ class ValidateTaskDslTest : TestBase() { """.trimMargin(), projectFiles) // Act - val result = GradleRunner.create() + val result = getGradleRunner(gradleVersion) .withProjectDir(temp) .withArguments("openApiValidate") .withPluginClasspath() @@ -67,8 +94,8 @@ class ValidateTaskDslTest : TestBase() { "Expected a successful run, but found ${result.task(":openApiValidate")?.outcome}") } - @Test - fun `openApiValidate should fail on invalid spec`() { + @Test(dataProvider = "gradle_version_provider") + fun `openApiValidate should fail on invalid spec`(gradleVersion: String?) { // Arrange val projectFiles = mapOf( "spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml") @@ -84,7 +111,7 @@ class ValidateTaskDslTest : TestBase() { """.trimMargin(), projectFiles) // Act - val result = GradleRunner.create() + val result = getGradleRunner(gradleVersion) .withProjectDir(temp) .withArguments("openApiValidate") .withPluginClasspath() @@ -96,4 +123,4 @@ class ValidateTaskDslTest : TestBase() { "Expected a failed run, but found ${result.task(":openApiValidate")?.outcome}") } -} \ No newline at end of file +} From c5fefa938a7c3960d7020855b74cdf75ddc31ac7 Mon Sep 17 00:00:00 2001 From: Mike Nelson Date: Fri, 4 Jun 2021 02:03:32 -0400 Subject: [PATCH 086/192] (#8000) Insure toImportMap only returns needToImport (#9275) `toModelImportMap` only accounts for union types and not intersection types, so I've combined those cases into `splitComposedType`. For `splitComposedType` I combined `replace(" ","").split("\\|")` and `split("( [|&] )|[<>]")` into `replace(" ","").split("[|&<>]")`. I've added the `needToImport` check to `toModelImportMap`. This is the same check that happens in `addImport`. --- .../AbstractTypeScriptClientCodegen.java | 28 +++++++++++-------- .../typescript/SharedTypeScriptTest.java | 23 +++++++++++++++ 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index 353c05d5a2e..40dfba5e80f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -227,11 +227,15 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp } @Override - public String toModelImport( String name){ + public String toModelImport(String name){ if(isUnionType(name)){ LOGGER.warn("The import is a union type. Consider using the toModelImportMap method."); return toModelImportMap(name).values().stream().collect(Collectors.joining("|")); } + if(isIntersectionType(name)){ + LOGGER.warn("The import is a intersection type. Consider using the toModelImportMap method."); + return toModelImportMap(name).values().stream().collect(Collectors.joining("&")); + } return super.toModelImport(name); } @@ -243,26 +247,28 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp * @return Map between the fully qualified model import and the initial given name. */ @Override - public Map toModelImportMap( String name){ - if(isUnionType(name)){ - String[] names = splitUnionType(name); - return toImportMap(names); - } - return toImportMap(name); + public Map toModelImportMap(String name){ + return toImportMap(splitComposedType(name)); + } + + private String[] splitComposedType (String name) { + return name.replace(" ","").split("[|&<>]"); } private boolean isUnionType(String name){ return name.contains("|"); } - private String[] splitUnionType(String name){ - return name.replace(" ","").split("\\|"); + private boolean isIntersectionType(String name){ + return name.contains("&"); } private Map toImportMap(String... names){ Map result = Maps.newHashMap(); for(String name: names){ - result.put(toModelImport(name),name); + if(needToImport(name)){ + result.put(toModelImport(name), name); + } } return result; } @@ -707,7 +713,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp return; } - String[] parts = type.split("( [|&] )|[<>]"); + String[] parts = splitComposedType(type); for (String s : parts) { if (needToImport(s)) { m.imports.add(s); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/SharedTypeScriptTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/SharedTypeScriptTest.java index 9062d738689..f4e024142a5 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/SharedTypeScriptTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/SharedTypeScriptTest.java @@ -12,6 +12,8 @@ import org.testng.annotations.Test; import java.io.File; import java.io.IOException; import java.util.List; +import java.util.Map; +import java.util.HashMap; public class SharedTypeScriptTest { @Test @@ -69,4 +71,25 @@ public class SharedTypeScriptTest { FileUtils.deleteDirectory(new File("src/test/resources/oldImportsStillPresentTest/")); } + + /* + #8000 + Test that primatives are not returned by toModelImportMap + */ + @Test + public void toModelImportMapTest() { + TypeScriptAxiosClientCodegen codegen = new TypeScriptAxiosClientCodegen(); + + Map types = new HashMap() {{ + put("Schema & AnotherSchema", new String[]{ "Schema", "AnotherSchema" }); + put("Schema | AnotherSchema", new String[]{ "Schema", "AnotherSchema" }); + put("Schema & object", new String[]{ "Schema" }); + put("Schema | object", new String[]{ "Schema" }); + }}; + + for (Map.Entry entry : types.entrySet()) { + String[] mapped = codegen.toModelImportMap(entry.getKey()).values().toArray(new String[0]); + Assert.assertEquals(mapped, entry.getValue()); + } + } } \ No newline at end of file From f923a0ef151ca68aabe4e3d6b7d53de53faa9415 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Sun, 6 Jun 2021 10:08:14 -0400 Subject: [PATCH 087/192] Swift5 Vapor 4 client library (#9625) * [swift5] Add Vapor client library * Try to improve overall spacing (#17) * [swift5] try to remove changes in model and api * [swift5] update sample projects * [swift5] update sample projects * [swift5] update sample projects * [swift5] update sample projects * [swift5] update sample projects * [swift5] update sample projects * [swift5] update sample projects * [swift5] update sample projects * [swift5] update sample projects * [swift5] update sample projects * [swift5] update sample projects * Update samples * [swift5] vapor: return clientResponse when no default case * Update samples Co-authored-by: Bruno Coelho <4brunu@users.noreply.github.com> --- bin/configs/swift5-vapor.yaml | 12 + docs/generators/swift5.md | 2 +- .../languages/Swift5ClientCodegen.java | 73 +- .../main/resources/swift5/APIHelper.mustache | 3 +- .../src/main/resources/swift5/APIs.mustache | 16 +- .../resources/swift5/Configuration.mustache | 9 +- .../main/resources/swift5/Extensions.mustache | 46 +- .../resources/swift5/Package.swift.mustache | 10 +- .../src/main/resources/swift5/README.mustache | 9 +- .../src/main/resources/swift5/api.mustache | 135 ++- .../main/resources/swift5/api_doc.mustache | 44 + .../src/main/resources/swift5/model.mustache | 3 +- .../main/resources/swift5/modelEnum.mustache | 4 +- .../modelInlineEnumDeclaration.mustache | 4 +- .../resources/swift5/modelObject.mustache | 8 +- .../main/resources/swift5/modelOneOf.mustache | 2 +- .../Classes/OpenAPIs/APIs.swift | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 5 +- .../APIs/FakeClassnameTags123API.swift | 5 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 5 +- .../Classes/OpenAPIs/Configuration.swift | 1 + .../Models/AdditionalPropertiesClass.swift | 1 + .../Classes/OpenAPIs/Models/Animal.swift | 1 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 1 + .../Models/ArrayOfArrayOfNumberOnly.swift | 1 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 1 + .../OpenAPIs/Models/Capitalization.swift | 1 + .../Classes/OpenAPIs/Models/Cat.swift | 1 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 1 + .../Classes/OpenAPIs/Models/Category.swift | 1 + .../Classes/OpenAPIs/Models/ClassModel.swift | 1 + .../Classes/OpenAPIs/Models/Client.swift | 1 + .../Classes/OpenAPIs/Models/Dog.swift | 1 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 1 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 1 + .../Classes/OpenAPIs/Models/EnumTest.swift | 1 + .../Classes/OpenAPIs/Models/File.swift | 1 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 1 + .../Classes/OpenAPIs/Models/FormatTest.swift | 1 + .../OpenAPIs/Models/HasOnlyReadOnly.swift | 1 + .../Classes/OpenAPIs/Models/List.swift | 1 + .../Classes/OpenAPIs/Models/MapTest.swift | 1 + ...opertiesAndAdditionalPropertiesClass.swift | 1 + .../OpenAPIs/Models/Model200Response.swift | 1 + .../Classes/OpenAPIs/Models/Name.swift | 1 + .../Classes/OpenAPIs/Models/NumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/Order.swift | 1 + .../OpenAPIs/Models/OuterComposite.swift | 1 + .../Classes/OpenAPIs/Models/Pet.swift | 1 + .../OpenAPIs/Models/ReadOnlyFirst.swift | 1 + .../Classes/OpenAPIs/Models/Return.swift | 1 + .../OpenAPIs/Models/SpecialModelName.swift | 1 + .../OpenAPIs/Models/StringBooleanMap.swift | 1 + .../Classes/OpenAPIs/Models/Tag.swift | 1 + .../OpenAPIs/Models/TypeHolderDefault.swift | 1 + .../OpenAPIs/Models/TypeHolderExample.swift | 1 + .../Classes/OpenAPIs/Models/User.swift | 1 + .../Classes/OpenAPIs/APIs.swift | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 5 +- .../APIs/FakeClassnameTags123API.swift | 5 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 5 +- .../Classes/OpenAPIs/Configuration.swift | 1 + .../Models/AdditionalPropertiesClass.swift | 1 + .../Classes/OpenAPIs/Models/Animal.swift | 1 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 1 + .../Models/ArrayOfArrayOfNumberOnly.swift | 1 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 1 + .../OpenAPIs/Models/Capitalization.swift | 1 + .../Classes/OpenAPIs/Models/Cat.swift | 1 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 1 + .../Classes/OpenAPIs/Models/Category.swift | 1 + .../Classes/OpenAPIs/Models/ClassModel.swift | 1 + .../Classes/OpenAPIs/Models/Client.swift | 1 + .../Classes/OpenAPIs/Models/Dog.swift | 1 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 1 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 1 + .../Classes/OpenAPIs/Models/EnumTest.swift | 1 + .../Classes/OpenAPIs/Models/File.swift | 1 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 1 + .../Classes/OpenAPIs/Models/FormatTest.swift | 1 + .../OpenAPIs/Models/HasOnlyReadOnly.swift | 1 + .../Classes/OpenAPIs/Models/List.swift | 1 + .../Classes/OpenAPIs/Models/MapTest.swift | 1 + ...opertiesAndAdditionalPropertiesClass.swift | 1 + .../OpenAPIs/Models/Model200Response.swift | 1 + .../Classes/OpenAPIs/Models/Name.swift | 1 + .../Classes/OpenAPIs/Models/NumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/Order.swift | 1 + .../OpenAPIs/Models/OuterComposite.swift | 1 + .../Classes/OpenAPIs/Models/Pet.swift | 1 + .../OpenAPIs/Models/ReadOnlyFirst.swift | 1 + .../Classes/OpenAPIs/Models/Return.swift | 1 + .../OpenAPIs/Models/SpecialModelName.swift | 1 + .../OpenAPIs/Models/StringBooleanMap.swift | 1 + .../Classes/OpenAPIs/Models/Tag.swift | 1 + .../OpenAPIs/Models/TypeHolderDefault.swift | 1 + .../OpenAPIs/Models/TypeHolderExample.swift | 1 + .../Classes/OpenAPIs/Models/User.swift | 1 + .../Classes/OpenAPIs/APIs.swift | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 5 +- .../APIs/FakeClassnameTags123API.swift | 5 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 5 +- .../Classes/OpenAPIs/Configuration.swift | 1 + .../Models/AdditionalPropertiesAnyType.swift | 1 + .../Models/AdditionalPropertiesArray.swift | 1 + .../Models/AdditionalPropertiesBoolean.swift | 1 + .../Models/AdditionalPropertiesClass.swift | 1 + .../Models/AdditionalPropertiesInteger.swift | 1 + .../Models/AdditionalPropertiesNumber.swift | 1 + .../Models/AdditionalPropertiesObject.swift | 1 + .../Models/AdditionalPropertiesString.swift | 1 + .../Classes/OpenAPIs/Models/Animal.swift | 1 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 1 + .../Models/ArrayOfArrayOfNumberOnly.swift | 1 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 1 + .../Classes/OpenAPIs/Models/BigCat.swift | 1 + .../Classes/OpenAPIs/Models/BigCatAllOf.swift | 1 + .../OpenAPIs/Models/Capitalization.swift | 1 + .../Classes/OpenAPIs/Models/Cat.swift | 1 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 1 + .../Classes/OpenAPIs/Models/Category.swift | 1 + .../Classes/OpenAPIs/Models/ClassModel.swift | 1 + .../Classes/OpenAPIs/Models/Client.swift | 1 + .../Classes/OpenAPIs/Models/Dog.swift | 1 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 1 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 1 + .../Classes/OpenAPIs/Models/EnumTest.swift | 1 + .../Classes/OpenAPIs/Models/File.swift | 1 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 1 + .../Classes/OpenAPIs/Models/FormatTest.swift | 1 + .../OpenAPIs/Models/HasOnlyReadOnly.swift | 1 + .../Classes/OpenAPIs/Models/List.swift | 1 + .../Classes/OpenAPIs/Models/MapTest.swift | 1 + ...opertiesAndAdditionalPropertiesClass.swift | 1 + .../OpenAPIs/Models/Model200Response.swift | 1 + .../Classes/OpenAPIs/Models/Name.swift | 1 + .../Classes/OpenAPIs/Models/NumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/Order.swift | 1 + .../OpenAPIs/Models/OuterComposite.swift | 1 + .../Classes/OpenAPIs/Models/Pet.swift | 1 + .../OpenAPIs/Models/ReadOnlyFirst.swift | 1 + .../Classes/OpenAPIs/Models/Return.swift | 1 + .../OpenAPIs/Models/SpecialModelName.swift | 1 + .../OpenAPIs/Models/StringBooleanMap.swift | 1 + .../Classes/OpenAPIs/Models/Tag.swift | 1 + .../OpenAPIs/Models/TypeHolderDefault.swift | 1 + .../OpenAPIs/Models/TypeHolderExample.swift | 1 + .../Classes/OpenAPIs/Models/User.swift | 1 + .../Classes/OpenAPIs/Models/XmlItem.swift | 1 + .../Classes/OpenAPIs/APIs.swift | 2 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 5 +- .../Classes/OpenAPIs/Configuration.swift | 1 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 1 + .../Classes/OpenAPIs/Models/Category.swift | 1 + .../Classes/OpenAPIs/Models/Order.swift | 1 + .../Classes/OpenAPIs/Models/Pet.swift | 1 + .../Classes/OpenAPIs/Models/Tag.swift | 1 + .../Classes/OpenAPIs/Models/User.swift | 1 + .../Classes/OpenAPIs/APIs.swift | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 5 +- .../APIs/FakeClassnameTags123API.swift | 5 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 5 +- .../Classes/OpenAPIs/Configuration.swift | 1 + .../Models/AdditionalPropertiesClass.swift | 1 + .../Classes/OpenAPIs/Models/Animal.swift | 1 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 1 + .../Models/ArrayOfArrayOfNumberOnly.swift | 1 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 1 + .../OpenAPIs/Models/Capitalization.swift | 1 + .../Classes/OpenAPIs/Models/Cat.swift | 1 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 1 + .../Classes/OpenAPIs/Models/Category.swift | 1 + .../Classes/OpenAPIs/Models/ClassModel.swift | 1 + .../Classes/OpenAPIs/Models/Client.swift | 1 + .../Classes/OpenAPIs/Models/Dog.swift | 1 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 1 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 1 + .../Classes/OpenAPIs/Models/EnumTest.swift | 1 + .../Classes/OpenAPIs/Models/File.swift | 1 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 1 + .../Classes/OpenAPIs/Models/FormatTest.swift | 1 + .../OpenAPIs/Models/HasOnlyReadOnly.swift | 1 + .../Classes/OpenAPIs/Models/List.swift | 1 + .../Classes/OpenAPIs/Models/MapTest.swift | 1 + ...opertiesAndAdditionalPropertiesClass.swift | 1 + .../OpenAPIs/Models/Model200Response.swift | 1 + .../Classes/OpenAPIs/Models/Name.swift | 1 + .../Classes/OpenAPIs/Models/NumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/Order.swift | 1 + .../OpenAPIs/Models/OuterComposite.swift | 1 + .../Classes/OpenAPIs/Models/Pet.swift | 1 + .../OpenAPIs/Models/ReadOnlyFirst.swift | 1 + .../Classes/OpenAPIs/Models/Return.swift | 1 + .../OpenAPIs/Models/SpecialModelName.swift | 1 + .../OpenAPIs/Models/StringBooleanMap.swift | 1 + .../Classes/OpenAPIs/Models/Tag.swift | 1 + .../OpenAPIs/Models/TypeHolderDefault.swift | 1 + .../OpenAPIs/Models/TypeHolderExample.swift | 1 + .../Classes/OpenAPIs/Models/User.swift | 1 + .../Classes/OpenAPIs/APIs.swift | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 5 +- .../APIs/FakeClassnameTags123API.swift | 5 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 5 +- .../Classes/OpenAPIs/Configuration.swift | 1 + .../Models/AdditionalPropertiesClass.swift | 1 + .../Classes/OpenAPIs/Models/Animal.swift | 1 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 1 + .../Models/ArrayOfArrayOfNumberOnly.swift | 1 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 1 + .../OpenAPIs/Models/Capitalization.swift | 1 + .../Classes/OpenAPIs/Models/Cat.swift | 1 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 1 + .../Classes/OpenAPIs/Models/Category.swift | 1 + .../Classes/OpenAPIs/Models/ClassModel.swift | 1 + .../Classes/OpenAPIs/Models/Client.swift | 1 + .../Classes/OpenAPIs/Models/Dog.swift | 1 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 1 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 1 + .../Classes/OpenAPIs/Models/EnumTest.swift | 1 + .../Classes/OpenAPIs/Models/File.swift | 1 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 1 + .../Classes/OpenAPIs/Models/FormatTest.swift | 1 + .../OpenAPIs/Models/HasOnlyReadOnly.swift | 1 + .../Classes/OpenAPIs/Models/List.swift | 1 + .../Classes/OpenAPIs/Models/MapTest.swift | 1 + ...opertiesAndAdditionalPropertiesClass.swift | 1 + .../OpenAPIs/Models/Model200Response.swift | 1 + .../Classes/OpenAPIs/Models/Name.swift | 1 + .../Classes/OpenAPIs/Models/NumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/Order.swift | 1 + .../OpenAPIs/Models/OuterComposite.swift | 1 + .../Classes/OpenAPIs/Models/Pet.swift | 1 + .../OpenAPIs/Models/ReadOnlyFirst.swift | 1 + .../Classes/OpenAPIs/Models/Return.swift | 1 + .../OpenAPIs/Models/SpecialModelName.swift | 1 + .../OpenAPIs/Models/StringBooleanMap.swift | 1 + .../Classes/OpenAPIs/Models/Tag.swift | 1 + .../OpenAPIs/Models/TypeHolderDefault.swift | 1 + .../OpenAPIs/Models/TypeHolderExample.swift | 1 + .../Classes/OpenAPIs/Models/User.swift | 1 + .../petstore/swift5/oneOf/Package.resolved | 16 + .../Classes/OpenAPIs/APIs.swift | 2 +- .../Classes/OpenAPIs/APIs/DefaultAPI.swift | 5 +- .../Classes/OpenAPIs/Configuration.swift | 1 + .../Classes/OpenAPIs/Models/Apple.swift | 1 + .../Classes/OpenAPIs/Models/Banana.swift | 1 + samples/client/petstore/swift5/oneOf/pom.xml | 43 + .../petstore/swift5/oneOf/run_spmbuild.sh | 3 + .../Classes/OpenAPIs/APIs.swift | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 5 +- .../APIs/FakeClassnameTags123API.swift | 5 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 5 +- .../Classes/OpenAPIs/Configuration.swift | 1 + .../Models/AdditionalPropertiesClass.swift | 1 + .../Classes/OpenAPIs/Models/Animal.swift | 1 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 1 + .../Models/ArrayOfArrayOfNumberOnly.swift | 1 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 1 + .../OpenAPIs/Models/Capitalization.swift | 1 + .../Classes/OpenAPIs/Models/Cat.swift | 1 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 1 + .../Classes/OpenAPIs/Models/Category.swift | 1 + .../Classes/OpenAPIs/Models/ClassModel.swift | 1 + .../Classes/OpenAPIs/Models/Client.swift | 1 + .../Classes/OpenAPIs/Models/Dog.swift | 1 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 1 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 1 + .../Classes/OpenAPIs/Models/EnumTest.swift | 1 + .../Classes/OpenAPIs/Models/File.swift | 1 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 1 + .../Classes/OpenAPIs/Models/FormatTest.swift | 1 + .../OpenAPIs/Models/HasOnlyReadOnly.swift | 1 + .../Classes/OpenAPIs/Models/List.swift | 1 + .../Classes/OpenAPIs/Models/MapTest.swift | 1 + ...opertiesAndAdditionalPropertiesClass.swift | 1 + .../OpenAPIs/Models/Model200Response.swift | 1 + .../Classes/OpenAPIs/Models/Name.swift | 1 + .../Classes/OpenAPIs/Models/NumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/Order.swift | 1 + .../OpenAPIs/Models/OuterComposite.swift | 1 + .../Classes/OpenAPIs/Models/Pet.swift | 1 + .../OpenAPIs/Models/ReadOnlyFirst.swift | 1 + .../Classes/OpenAPIs/Models/Return.swift | 1 + .../OpenAPIs/Models/SpecialModelName.swift | 1 + .../OpenAPIs/Models/StringBooleanMap.swift | 1 + .../Classes/OpenAPIs/Models/Tag.swift | 1 + .../OpenAPIs/Models/TypeHolderDefault.swift | 1 + .../OpenAPIs/Models/TypeHolderExample.swift | 1 + .../Classes/OpenAPIs/Models/User.swift | 1 + .../readonlyProperties/Package.resolved | 16 + .../Classes/OpenAPIs/APIs.swift | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 5 +- .../APIs/FakeClassnameTags123API.swift | 5 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 5 +- .../Classes/OpenAPIs/Configuration.swift | 1 + .../Models/AdditionalPropertiesClass.swift | 1 + .../Classes/OpenAPIs/Models/Animal.swift | 1 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 1 + .../Models/ArrayOfArrayOfNumberOnly.swift | 1 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 1 + .../OpenAPIs/Models/Capitalization.swift | 1 + .../Classes/OpenAPIs/Models/Cat.swift | 1 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 1 + .../Classes/OpenAPIs/Models/Category.swift | 1 + .../Classes/OpenAPIs/Models/ClassModel.swift | 1 + .../Classes/OpenAPIs/Models/Client.swift | 1 + .../Classes/OpenAPIs/Models/Dog.swift | 1 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 1 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 1 + .../Classes/OpenAPIs/Models/EnumTest.swift | 1 + .../Classes/OpenAPIs/Models/File.swift | 1 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 1 + .../Classes/OpenAPIs/Models/FormatTest.swift | 1 + .../OpenAPIs/Models/HasOnlyReadOnly.swift | 1 + .../Classes/OpenAPIs/Models/List.swift | 1 + .../Classes/OpenAPIs/Models/MapTest.swift | 1 + ...opertiesAndAdditionalPropertiesClass.swift | 1 + .../OpenAPIs/Models/Model200Response.swift | 1 + .../Classes/OpenAPIs/Models/Name.swift | 1 + .../Classes/OpenAPIs/Models/NumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/Order.swift | 1 + .../OpenAPIs/Models/OuterComposite.swift | 1 + .../Classes/OpenAPIs/Models/Pet.swift | 1 + .../OpenAPIs/Models/ReadOnlyFirst.swift | 1 + .../Classes/OpenAPIs/Models/Return.swift | 1 + .../OpenAPIs/Models/SpecialModelName.swift | 1 + .../OpenAPIs/Models/StringBooleanMap.swift | 1 + .../Classes/OpenAPIs/Models/Tag.swift | 1 + .../OpenAPIs/Models/TypeHolderDefault.swift | 1 + .../OpenAPIs/Models/TypeHolderExample.swift | 1 + .../Classes/OpenAPIs/Models/User.swift | 1 + .../swift5/readonlyProperties/pom.xml | 43 + .../swift5/readonlyProperties/run_spmbuild.sh | 3 + .../Classes/OpenAPIs/APIs.swift | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 5 +- .../APIs/FakeClassnameTags123API.swift | 5 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 5 +- .../Classes/OpenAPIs/Configuration.swift | 1 + .../Models/AdditionalPropertiesClass.swift | 1 + .../Classes/OpenAPIs/Models/Animal.swift | 1 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 1 + .../Models/ArrayOfArrayOfNumberOnly.swift | 1 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 1 + .../OpenAPIs/Models/Capitalization.swift | 1 + .../Classes/OpenAPIs/Models/Cat.swift | 1 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 1 + .../Classes/OpenAPIs/Models/Category.swift | 1 + .../Classes/OpenAPIs/Models/ClassModel.swift | 1 + .../Classes/OpenAPIs/Models/Client.swift | 1 + .../Classes/OpenAPIs/Models/Dog.swift | 1 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 1 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 1 + .../Classes/OpenAPIs/Models/EnumTest.swift | 1 + .../Classes/OpenAPIs/Models/File.swift | 1 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 1 + .../Classes/OpenAPIs/Models/FormatTest.swift | 1 + .../OpenAPIs/Models/HasOnlyReadOnly.swift | 1 + .../Classes/OpenAPIs/Models/List.swift | 1 + .../Classes/OpenAPIs/Models/MapTest.swift | 1 + ...opertiesAndAdditionalPropertiesClass.swift | 1 + .../OpenAPIs/Models/Model200Response.swift | 1 + .../Classes/OpenAPIs/Models/Name.swift | 1 + .../Classes/OpenAPIs/Models/NumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/Order.swift | 1 + .../OpenAPIs/Models/OuterComposite.swift | 1 + .../Classes/OpenAPIs/Models/Pet.swift | 1 + .../OpenAPIs/Models/ReadOnlyFirst.swift | 1 + .../Classes/OpenAPIs/Models/Return.swift | 1 + .../OpenAPIs/Models/SpecialModelName.swift | 1 + .../OpenAPIs/Models/StringBooleanMap.swift | 1 + .../Classes/OpenAPIs/Models/Tag.swift | 1 + .../OpenAPIs/Models/TypeHolderDefault.swift | 1 + .../OpenAPIs/Models/TypeHolderExample.swift | 1 + .../Classes/OpenAPIs/Models/User.swift | 1 + .../Classes/OpenAPIs/APIs.swift | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 5 +- .../APIs/FakeClassnameTags123API.swift | 5 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 5 +- .../Classes/OpenAPIs/Configuration.swift | 1 + .../Models/AdditionalPropertiesClass.swift | 1 + .../Classes/OpenAPIs/Models/Animal.swift | 1 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 1 + .../Models/ArrayOfArrayOfNumberOnly.swift | 1 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 1 + .../OpenAPIs/Models/Capitalization.swift | 1 + .../Classes/OpenAPIs/Models/Cat.swift | 1 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 1 + .../Classes/OpenAPIs/Models/Category.swift | 1 + .../Classes/OpenAPIs/Models/ClassModel.swift | 1 + .../Classes/OpenAPIs/Models/Client.swift | 1 + .../Classes/OpenAPIs/Models/Dog.swift | 1 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 1 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 1 + .../Classes/OpenAPIs/Models/EnumTest.swift | 1 + .../Classes/OpenAPIs/Models/File.swift | 1 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 1 + .../Classes/OpenAPIs/Models/FormatTest.swift | 1 + .../OpenAPIs/Models/HasOnlyReadOnly.swift | 1 + .../Classes/OpenAPIs/Models/List.swift | 1 + .../Classes/OpenAPIs/Models/MapTest.swift | 1 + ...opertiesAndAdditionalPropertiesClass.swift | 1 + .../OpenAPIs/Models/Model200Response.swift | 1 + .../Classes/OpenAPIs/Models/Name.swift | 1 + .../Classes/OpenAPIs/Models/NumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/Order.swift | 1 + .../OpenAPIs/Models/OuterComposite.swift | 1 + .../Classes/OpenAPIs/Models/Pet.swift | 1 + .../OpenAPIs/Models/ReadOnlyFirst.swift | 1 + .../Classes/OpenAPIs/Models/Return.swift | 1 + .../OpenAPIs/Models/SpecialModelName.swift | 1 + .../OpenAPIs/Models/StringBooleanMap.swift | 1 + .../Classes/OpenAPIs/Models/Tag.swift | 1 + .../OpenAPIs/Models/TypeHolderDefault.swift | 1 + .../OpenAPIs/Models/TypeHolderExample.swift | 1 + .../Classes/OpenAPIs/Models/User.swift | 1 + .../client/petstore/swift5/swift5_test_all.sh | 14 +- .../Sources/PetstoreClient/APIs.swift | 2 +- .../PetstoreClient/APIs/AnotherFakeAPI.swift | 5 +- .../Sources/PetstoreClient/APIs/FakeAPI.swift | 5 +- .../APIs/FakeClassnameTags123API.swift | 5 +- .../Sources/PetstoreClient/APIs/PetAPI.swift | 5 +- .../PetstoreClient/APIs/StoreAPI.swift | 5 +- .../Sources/PetstoreClient/APIs/UserAPI.swift | 5 +- .../PetstoreClient/Configuration.swift | 2 + .../Models/AdditionalPropertiesClass.swift | 1 + .../PetstoreClient/Models/Animal.swift | 1 + .../PetstoreClient/Models/ApiResponse.swift | 1 + .../Models/ArrayOfArrayOfNumberOnly.swift | 1 + .../Models/ArrayOfNumberOnly.swift | 1 + .../PetstoreClient/Models/ArrayTest.swift | 1 + .../Models/Capitalization.swift | 1 + .../Sources/PetstoreClient/Models/Cat.swift | 1 + .../PetstoreClient/Models/CatAllOf.swift | 1 + .../PetstoreClient/Models/Category.swift | 1 + .../PetstoreClient/Models/ClassModel.swift | 1 + .../PetstoreClient/Models/Client.swift | 1 + .../Sources/PetstoreClient/Models/Dog.swift | 1 + .../PetstoreClient/Models/DogAllOf.swift | 1 + .../PetstoreClient/Models/EnumArrays.swift | 1 + .../PetstoreClient/Models/EnumTest.swift | 1 + .../Sources/PetstoreClient/Models/File.swift | 1 + .../Models/FileSchemaTestClass.swift | 1 + .../PetstoreClient/Models/FormatTest.swift | 1 + .../Models/HasOnlyReadOnly.swift | 1 + .../Sources/PetstoreClient/Models/List.swift | 1 + .../PetstoreClient/Models/MapTest.swift | 1 + ...opertiesAndAdditionalPropertiesClass.swift | 1 + .../Models/Model200Response.swift | 1 + .../Sources/PetstoreClient/Models/Name.swift | 1 + .../PetstoreClient/Models/NumberOnly.swift | 1 + .../Sources/PetstoreClient/Models/Order.swift | 1 + .../Models/OuterComposite.swift | 1 + .../Sources/PetstoreClient/Models/Pet.swift | 1 + .../PetstoreClient/Models/ReadOnlyFirst.swift | 1 + .../PetstoreClient/Models/Return.swift | 1 + .../Models/SpecialModelName.swift | 1 + .../Models/StringBooleanMap.swift | 1 + .../Sources/PetstoreClient/Models/Tag.swift | 1 + .../Models/TypeHolderDefault.swift | 1 + .../Models/TypeHolderExample.swift | 1 + .../Sources/PetstoreClient/Models/User.swift | 1 + .../petstore/swift5/vaporLibrary/.gitignore | 63 ++ .../vaporLibrary/.openapi-generator-ignore | 23 + .../vaporLibrary/.openapi-generator/FILES | 118 +++ .../vaporLibrary/.openapi-generator/VERSION | 1 + .../contents.xcworkspacedata | 7 + .../swift5/vaporLibrary/Package.resolved | 160 ++++ .../swift5/vaporLibrary/Package.swift | 31 + .../petstore/swift5/vaporLibrary/README.md | 149 +++ .../Sources/PetstoreClient/APIs.swift | 16 + .../PetstoreClient/APIs/AnotherFakeAPI.swift | 64 ++ .../Sources/PetstoreClient/APIs/FakeAPI.swift | 886 +++++++++++++++++ .../APIs/FakeClassnameTags123API.swift | 70 ++ .../Sources/PetstoreClient/APIs/PetAPI.swift | 581 +++++++++++ .../PetstoreClient/APIs/StoreAPI.swift | 228 +++++ .../Sources/PetstoreClient/APIs/UserAPI.swift | 413 ++++++++ .../PetstoreClient/Configuration.swift | 14 + .../Sources/PetstoreClient/Extensions.swift | 131 +++ .../Models/AdditionalPropertiesAnyType.swift | 72 ++ .../Models/AdditionalPropertiesArray.swift | 72 ++ .../Models/AdditionalPropertiesBoolean.swift | 72 ++ .../Models/AdditionalPropertiesClass.swift | 103 ++ .../Models/AdditionalPropertiesInteger.swift | 72 ++ .../Models/AdditionalPropertiesNumber.swift | 72 ++ .../Models/AdditionalPropertiesObject.swift | 72 ++ .../Models/AdditionalPropertiesString.swift | 72 ++ .../PetstoreClient/Models/Animal.swift | 49 + .../PetstoreClient/Models/AnimalFarm.swift | 14 + .../PetstoreClient/Models/ApiResponse.swift | 55 ++ .../Models/ArrayOfArrayOfNumberOnly.swift | 43 + .../Models/ArrayOfNumberOnly.swift | 43 + .../PetstoreClient/Models/ArrayTest.swift | 55 ++ .../PetstoreClient/Models/BigCat.swift | 49 + .../PetstoreClient/Models/BigCatAllOf.swift | 49 + .../Models/Capitalization.swift | 74 ++ .../Sources/PetstoreClient/Models/Cat.swift | 55 ++ .../PetstoreClient/Models/CatAllOf.swift | 43 + .../PetstoreClient/Models/Category.swift | 49 + .../PetstoreClient/Models/ClassModel.swift | 44 + .../PetstoreClient/Models/Client.swift | 43 + .../Sources/PetstoreClient/Models/Dog.swift | 55 ++ .../PetstoreClient/Models/DogAllOf.swift | 43 + .../PetstoreClient/Models/EnumArrays.swift | 57 ++ .../PetstoreClient/Models/EnumClass.swift | 18 + .../PetstoreClient/Models/EnumTest.swift | 85 ++ .../Sources/PetstoreClient/Models/File.swift | 45 + .../Models/FileSchemaTestClass.swift | 49 + .../PetstoreClient/Models/FormatTest.swift | 121 +++ .../Models/HasOnlyReadOnly.swift | 49 + .../Sources/PetstoreClient/Models/List.swift | 43 + .../PetstoreClient/Models/MapTest.swift | 65 ++ ...opertiesAndAdditionalPropertiesClass.swift | 55 ++ .../Models/Model200Response.swift | 50 + .../Sources/PetstoreClient/Models/Name.swift | 62 ++ .../PetstoreClient/Models/NumberOnly.swift | 43 + .../Sources/PetstoreClient/Models/Order.swift | 79 ++ .../Models/OuterComposite.swift | 55 ++ .../PetstoreClient/Models/OuterEnum.swift | 18 + .../Sources/PetstoreClient/Models/Pet.swift | 79 ++ .../PetstoreClient/Models/ReadOnlyFirst.swift | 49 + .../PetstoreClient/Models/Return.swift | 44 + .../Models/SpecialModelName.swift | 43 + .../Models/StringBooleanMap.swift | 61 ++ .../Sources/PetstoreClient/Models/Tag.swift | 49 + .../Models/TypeHolderDefault.swift | 67 ++ .../Models/TypeHolderExample.swift | 73 ++ .../Sources/PetstoreClient/Models/User.swift | 86 ++ .../PetstoreClient/Models/XmlItem.swift | 211 ++++ .../docs/AdditionalPropertiesAnyType.md | 10 + .../docs/AdditionalPropertiesArray.md | 10 + .../docs/AdditionalPropertiesBoolean.md | 10 + .../docs/AdditionalPropertiesClass.md | 20 + .../docs/AdditionalPropertiesInteger.md | 10 + .../docs/AdditionalPropertiesNumber.md | 10 + .../docs/AdditionalPropertiesObject.md | 10 + .../docs/AdditionalPropertiesString.md | 10 + .../swift5/vaporLibrary/docs/Animal.md | 11 + .../swift5/vaporLibrary/docs/AnimalFarm.md | 9 + .../vaporLibrary/docs/AnotherFakeAPI.md | 68 ++ .../swift5/vaporLibrary/docs/ApiResponse.md | 12 + .../docs/ArrayOfArrayOfNumberOnly.md | 10 + .../vaporLibrary/docs/ArrayOfNumberOnly.md | 10 + .../swift5/vaporLibrary/docs/ArrayTest.md | 12 + .../swift5/vaporLibrary/docs/BigCat.md | 10 + .../swift5/vaporLibrary/docs/BigCatAllOf.md | 10 + .../vaporLibrary/docs/Capitalization.md | 15 + .../petstore/swift5/vaporLibrary/docs/Cat.md | 10 + .../swift5/vaporLibrary/docs/CatAllOf.md | 10 + .../swift5/vaporLibrary/docs/Category.md | 11 + .../swift5/vaporLibrary/docs/ClassModel.md | 10 + .../swift5/vaporLibrary/docs/Client.md | 10 + .../petstore/swift5/vaporLibrary/docs/Dog.md | 10 + .../swift5/vaporLibrary/docs/DogAllOf.md | 10 + .../swift5/vaporLibrary/docs/EnumArrays.md | 11 + .../swift5/vaporLibrary/docs/EnumClass.md | 9 + .../swift5/vaporLibrary/docs/EnumTest.md | 14 + .../swift5/vaporLibrary/docs/FakeAPI.md | 901 ++++++++++++++++++ .../docs/FakeClassnameTags123API.md | 68 ++ .../petstore/swift5/vaporLibrary/docs/File.md | 10 + .../vaporLibrary/docs/FileSchemaTestClass.md | 11 + .../swift5/vaporLibrary/docs/FormatTest.md | 23 + .../vaporLibrary/docs/HasOnlyReadOnly.md | 11 + .../petstore/swift5/vaporLibrary/docs/List.md | 10 + .../swift5/vaporLibrary/docs/MapTest.md | 13 + ...dPropertiesAndAdditionalPropertiesClass.md | 12 + .../vaporLibrary/docs/Model200Response.md | 11 + .../petstore/swift5/vaporLibrary/docs/Name.md | 13 + .../swift5/vaporLibrary/docs/NumberOnly.md | 10 + .../swift5/vaporLibrary/docs/Order.md | 15 + .../vaporLibrary/docs/OuterComposite.md | 12 + .../swift5/vaporLibrary/docs/OuterEnum.md | 9 + .../petstore/swift5/vaporLibrary/docs/Pet.md | 15 + .../swift5/vaporLibrary/docs/PetAPI.md | 568 +++++++++++ .../swift5/vaporLibrary/docs/ReadOnlyFirst.md | 11 + .../swift5/vaporLibrary/docs/Return.md | 10 + .../vaporLibrary/docs/SpecialModelName.md | 10 + .../swift5/vaporLibrary/docs/StoreAPI.md | 250 +++++ .../vaporLibrary/docs/StringBooleanMap.md | 9 + .../petstore/swift5/vaporLibrary/docs/Tag.md | 11 + .../vaporLibrary/docs/TypeHolderDefault.md | 14 + .../vaporLibrary/docs/TypeHolderExample.md | 15 + .../petstore/swift5/vaporLibrary/docs/User.md | 17 + .../swift5/vaporLibrary/docs/UserAPI.md | 480 ++++++++++ .../swift5/vaporLibrary/docs/XmlItem.md | 38 + .../petstore/swift5/vaporLibrary/pom.xml | 43 + .../swift5/vaporLibrary/run_spmbuild.sh | 3 + .../swift5/x-swift-hashable/Package.resolved | 4 +- .../Classes/OpenAPIs/APIs.swift | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 5 +- .../APIs/FakeClassnameTags123API.swift | 5 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/StoreAPI.swift | 5 +- .../Classes/OpenAPIs/APIs/UserAPI.swift | 5 +- .../Classes/OpenAPIs/Configuration.swift | 1 + .../Models/AdditionalPropertiesClass.swift | 1 + .../Classes/OpenAPIs/Models/Animal.swift | 1 + .../Classes/OpenAPIs/Models/ApiResponse.swift | 1 + .../Models/ArrayOfArrayOfNumberOnly.swift | 1 + .../OpenAPIs/Models/ArrayOfNumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/ArrayTest.swift | 1 + .../OpenAPIs/Models/Capitalization.swift | 1 + .../Classes/OpenAPIs/Models/Cat.swift | 1 + .../Classes/OpenAPIs/Models/CatAllOf.swift | 1 + .../Classes/OpenAPIs/Models/Category.swift | 1 + .../Classes/OpenAPIs/Models/ClassModel.swift | 1 + .../Classes/OpenAPIs/Models/Client.swift | 1 + .../Classes/OpenAPIs/Models/Dog.swift | 1 + .../Classes/OpenAPIs/Models/DogAllOf.swift | 1 + .../Classes/OpenAPIs/Models/EnumArrays.swift | 1 + .../Classes/OpenAPIs/Models/EnumTest.swift | 1 + .../Classes/OpenAPIs/Models/File.swift | 1 + .../OpenAPIs/Models/FileSchemaTestClass.swift | 1 + .../Classes/OpenAPIs/Models/FormatTest.swift | 1 + .../OpenAPIs/Models/HasOnlyReadOnly.swift | 1 + .../Classes/OpenAPIs/Models/List.swift | 1 + .../Classes/OpenAPIs/Models/MapTest.swift | 1 + ...opertiesAndAdditionalPropertiesClass.swift | 1 + .../OpenAPIs/Models/Model200Response.swift | 1 + .../Classes/OpenAPIs/Models/Name.swift | 1 + .../Classes/OpenAPIs/Models/NumberOnly.swift | 1 + .../Classes/OpenAPIs/Models/Order.swift | 1 + .../OpenAPIs/Models/OuterComposite.swift | 1 + .../Classes/OpenAPIs/Models/Pet.swift | 1 + .../OpenAPIs/Models/ReadOnlyFirst.swift | 1 + .../Classes/OpenAPIs/Models/Return.swift | 1 + .../OpenAPIs/Models/SpecialModelName.swift | 1 + .../OpenAPIs/Models/StringBooleanMap.swift | 1 + .../Classes/OpenAPIs/Models/Tag.swift | 1 + .../OpenAPIs/Models/TypeHolderDefault.swift | 1 + .../OpenAPIs/Models/TypeHolderExample.swift | 1 + .../Classes/OpenAPIs/Models/User.swift | 1 + .../petstore/swift5/x-swift-hashable/pom.xml | 43 + .../swift5/x-swift-hashable/run_spmbuild.sh | 3 + 672 files changed, 10197 insertions(+), 152 deletions(-) create mode 100644 bin/configs/swift5-vapor.yaml create mode 100644 samples/client/petstore/swift5/oneOf/Package.resolved create mode 100644 samples/client/petstore/swift5/oneOf/pom.xml create mode 100755 samples/client/petstore/swift5/oneOf/run_spmbuild.sh create mode 100644 samples/client/petstore/swift5/readonlyProperties/Package.resolved create mode 100644 samples/client/petstore/swift5/readonlyProperties/pom.xml create mode 100755 samples/client/petstore/swift5/readonlyProperties/run_spmbuild.sh create mode 100644 samples/client/petstore/swift5/vaporLibrary/.gitignore create mode 100644 samples/client/petstore/swift5/vaporLibrary/.openapi-generator-ignore create mode 100644 samples/client/petstore/swift5/vaporLibrary/.openapi-generator/FILES create mode 100644 samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION create mode 100644 samples/client/petstore/swift5/vaporLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata create mode 100644 samples/client/petstore/swift5/vaporLibrary/Package.resolved create mode 100644 samples/client/petstore/swift5/vaporLibrary/Package.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/README.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/PetAPI.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/UserAPI.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Configuration.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Extensions.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesAnyType.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesArray.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesBoolean.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesInteger.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesNumber.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesObject.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesString.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Animal.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AnimalFarm.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ApiResponse.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ArrayTest.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/BigCat.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/BigCatAllOf.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Capitalization.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Cat.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/CatAllOf.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Category.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ClassModel.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Client.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Dog.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/DogAllOf.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/EnumArrays.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/EnumClass.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/EnumTest.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/File.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/FormatTest.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/List.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/MapTest.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Model200Response.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Name.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/NumberOnly.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Order.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/OuterComposite.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/OuterEnum.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Pet.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Return.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Tag.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/User.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/XmlItem.swift create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesAnyType.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesArray.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesBoolean.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesClass.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesInteger.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesNumber.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesObject.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesString.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/Animal.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/AnimalFarm.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/AnotherFakeAPI.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/ApiResponse.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/ArrayOfArrayOfNumberOnly.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/ArrayOfNumberOnly.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/ArrayTest.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/BigCat.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/BigCatAllOf.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/Capitalization.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/Cat.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/CatAllOf.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/Category.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/ClassModel.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/Client.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/Dog.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/DogAllOf.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/EnumArrays.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/EnumClass.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/EnumTest.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/FakeAPI.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/FakeClassnameTags123API.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/File.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/FileSchemaTestClass.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/FormatTest.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/HasOnlyReadOnly.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/List.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/MapTest.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/MixedPropertiesAndAdditionalPropertiesClass.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/Model200Response.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/Name.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/NumberOnly.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/Order.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/OuterComposite.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/OuterEnum.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/Pet.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/PetAPI.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/ReadOnlyFirst.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/Return.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/SpecialModelName.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/StoreAPI.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/StringBooleanMap.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/Tag.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/TypeHolderDefault.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/TypeHolderExample.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/User.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/UserAPI.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/docs/XmlItem.md create mode 100644 samples/client/petstore/swift5/vaporLibrary/pom.xml create mode 100755 samples/client/petstore/swift5/vaporLibrary/run_spmbuild.sh create mode 100644 samples/client/petstore/swift5/x-swift-hashable/pom.xml create mode 100755 samples/client/petstore/swift5/x-swift-hashable/run_spmbuild.sh diff --git a/bin/configs/swift5-vapor.yaml b/bin/configs/swift5-vapor.yaml new file mode 100644 index 00000000000..5f1d2067969 --- /dev/null +++ b/bin/configs/swift5-vapor.yaml @@ -0,0 +1,12 @@ +generatorName: swift5 +outputDir: samples/client/petstore/swift5/vaporLibrary +library: vapor +inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml +templateDir: modules/openapi-generator/src/main/resources/swift5 +generateAliasAsModel: true +additionalProperties: + projectName: PetstoreClient + useSPMFileStructure: true + useClasses: true + useBacktickEscapes: true + mapFileBinaryToData: true diff --git a/docs/generators/swift5.md b/docs/generators/swift5.md index 51dc7529358..96cfe8424c0 100644 --- a/docs/generators/swift5.md +++ b/docs/generators/swift5.md @@ -16,7 +16,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true| |legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|
    **true**
    The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
    **false**
    The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
    |true| |lenientTypeCast|Accept and cast values for simple types (string->bool, string->int, int->string)| |false| -|library|Library template (sub-template) to use|
    **urlsession**
    [DEFAULT] HTTP client: URLSession
    **alamofire**
    HTTP client: Alamofire
    |urlsession| +|library|Library template (sub-template) to use|
    **urlsession**
    [DEFAULT] HTTP client: URLSession
    **alamofire**
    HTTP client: Alamofire
    **vapor**
    HTTP client: Vapor
    |urlsession| |mapFileBinaryToData|[WARNING] This option will be removed and enabled by default in the future once we've enhanced the code to work with `Data` in all the different situations. Map File and Binary to Data (default: false)| |false| |nonPublicApi|Generates code with reduced access modifiers; allows embedding elsewhere without exposing non-public API calls to consumers.(default: false)| |null| |objcCompatible|Add additional properties and methods for Objective-C compatibility (default: false)| |null| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index f06bbd057c6..bf7dfd78d89 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -70,6 +70,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig public static final String MAP_FILE_BINARY_TO_DATA = "mapFileBinaryToData"; protected static final String LIBRARY_ALAMOFIRE = "alamofire"; protected static final String LIBRARY_URLSESSION = "urlsession"; + protected static final String LIBRARY_VAPOR = "vapor"; protected static final String RESPONSE_LIBRARY_PROMISE_KIT = "PromiseKit"; protected static final String RESPONSE_LIBRARY_RX_SWIFT = "RxSwift"; protected static final String RESPONSE_LIBRARY_RESULT = "Result"; @@ -297,6 +298,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig supportedLibraries.put(LIBRARY_URLSESSION, "[DEFAULT] HTTP client: URLSession"); supportedLibraries.put(LIBRARY_ALAMOFIRE, "HTTP client: Alamofire"); + supportedLibraries.put(LIBRARY_VAPOR, "HTTP client: Vapor"); CliOption libraryOption = new CliOption(CodegenConstants.LIBRARY, "Library template (sub-template) to use"); libraryOption.setEnum(supportedLibraries); @@ -499,57 +501,59 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig additionalProperties.put("apiDocPath", apiDocPath); additionalProperties.put("modelDocPath", modelDocPath); - supportingFiles.add(new SupportingFile("Podspec.mustache", - "", - projectName + ".podspec")); - supportingFiles.add(new SupportingFile("Cartfile.mustache", - "", - "Cartfile")); + if (!getLibrary().equals(LIBRARY_VAPOR)) { + supportingFiles.add(new SupportingFile("Podspec.mustache", + "", + projectName + ".podspec")); + supportingFiles.add(new SupportingFile("Cartfile.mustache", + "", + "Cartfile")); + supportingFiles.add(new SupportingFile("CodableHelper.mustache", + sourceFolder, + "CodableHelper.swift")); + supportingFiles.add(new SupportingFile("OpenISO8601DateFormatter.mustache", + sourceFolder, + "OpenISO8601DateFormatter.swift")); + supportingFiles.add(new SupportingFile("JSONDataEncoding.mustache", + sourceFolder, + "JSONDataEncoding.swift")); + supportingFiles.add(new SupportingFile("JSONEncodingHelper.mustache", + sourceFolder, + "JSONEncodingHelper.swift")); + supportingFiles.add(new SupportingFile("git_push.sh.mustache", + "", + "git_push.sh")); + supportingFiles.add(new SupportingFile("SynchronizedDictionary.mustache", + sourceFolder, + "SynchronizedDictionary.swift")); + supportingFiles.add(new SupportingFile("XcodeGen.mustache", + "", + "project.yml")); + supportingFiles.add(new SupportingFile("APIHelper.mustache", + sourceFolder, + "APIHelper.swift")); + supportingFiles.add(new SupportingFile("Models.mustache", + sourceFolder, + "Models.swift")); + } supportingFiles.add(new SupportingFile("Package.swift.mustache", "", "Package.swift")); - supportingFiles.add(new SupportingFile("APIHelper.mustache", - sourceFolder, - "APIHelper.swift")); supportingFiles.add(new SupportingFile("Configuration.mustache", sourceFolder, "Configuration.swift")); supportingFiles.add(new SupportingFile("Extensions.mustache", sourceFolder, "Extensions.swift")); - supportingFiles.add(new SupportingFile("Models.mustache", - sourceFolder, - "Models.swift")); supportingFiles.add(new SupportingFile("APIs.mustache", sourceFolder, "APIs.swift")); - supportingFiles.add(new SupportingFile("CodableHelper.mustache", - sourceFolder, - "CodableHelper.swift")); - supportingFiles.add(new SupportingFile("OpenISO8601DateFormatter.mustache", - sourceFolder, - "OpenISO8601DateFormatter.swift")); - supportingFiles.add(new SupportingFile("JSONDataEncoding.mustache", - sourceFolder, - "JSONDataEncoding.swift")); - supportingFiles.add(new SupportingFile("JSONEncodingHelper.mustache", - sourceFolder, - "JSONEncodingHelper.swift")); - supportingFiles.add(new SupportingFile("git_push.sh.mustache", - "", - "git_push.sh")); - supportingFiles.add(new SupportingFile("SynchronizedDictionary.mustache", - sourceFolder, - "SynchronizedDictionary.swift")); supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); - supportingFiles.add(new SupportingFile("XcodeGen.mustache", - "", - "project.yml")); switch (getLibrary()) { case LIBRARY_ALAMOFIRE: @@ -564,6 +568,9 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig sourceFolder, "URLSessionImplementations.swift")); break; + case LIBRARY_VAPOR: + additionalProperties.put("useVapor", true); + break; default: break; } diff --git a/modules/openapi-generator/src/main/resources/swift5/APIHelper.mustache b/modules/openapi-generator/src/main/resources/swift5/APIHelper.mustache index 94dc810006a..e535c7df4c4 100644 --- a/modules/openapi-generator/src/main/resources/swift5/APIHelper.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/APIHelper.mustache @@ -4,7 +4,8 @@ // https://openapi-generator.tech // -import Foundation +import Foundation{{#useVapor}} +import Vapor{{/useVapor}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} struct APIHelper { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func rejectNil(_ source: [String: Any?]) -> [String: Any]? { diff --git a/modules/openapi-generator/src/main/resources/swift5/APIs.mustache b/modules/openapi-generator/src/main/resources/swift5/APIs.mustache index b05f0630179..f931988cf9f 100644 --- a/modules/openapi-generator/src/main/resources/swift5/APIs.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/APIs.mustache @@ -5,18 +5,26 @@ // import Foundation +{{#useVapor}} +import Vapor +{{/useVapor}} @available(*, deprecated, renamed: "{{projectName}}") {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias {{projectName}}API = {{projectName}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class {{projectName}} { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var basePath = "{{{basePath}}}" - {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var credential: URLCredential? - {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var customHeaders: [String: String] = [:]{{#useAlamofire}} + {{#useVapor}} + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var customHeaders: HTTPHeaders = [:] + {{/useVapor}} + {{^useVapor}} + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var customHeaders: [String: String] = [:] + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var credential: URLCredential?{{#useAlamofire}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory(){{/useAlamofire}}{{#useURLSession}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory(){{/useURLSession}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var apiResponseQueue: DispatchQueue = .main -} + {{/useVapor}} +}{{^useVapor}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class RequestBuilder { var credential: URLCredential? @@ -63,4 +71,4 @@ import Foundation {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} protocol RequestBuilderFactory { func getNonDecodableBuilder() -> RequestBuilder.Type func getBuilder() -> RequestBuilder.Type -} +}{{/useVapor}} diff --git a/modules/openapi-generator/src/main/resources/swift5/Configuration.mustache b/modules/openapi-generator/src/main/resources/swift5/Configuration.mustache index a154850602e..d6bbdc0ae26 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Configuration.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Configuration.mustache @@ -4,7 +4,8 @@ // https://openapi-generator.tech // -import Foundation +import Foundation{{#useVapor}} +import Vapor{{/useVapor}} {{#swiftUseApiNamespace}} @available(*, deprecated, renamed: "{{projectName}}.Configuration") @@ -13,11 +14,15 @@ import Foundation extension {{projectName}} { {{/swiftUseApiNamespace}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class Configuration { + {{#useVapor}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var apiClient: Vapor.Client? = nil + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var apiWrapper: (inout Vapor.ClientRequest) throws -> () = { _ in } + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var contentConfiguration = ContentConfiguration.default(){{/useVapor}}{{^useVapor}} // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") - {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"{{/useVapor}} } {{#swiftUseApiNamespace}} } + {{/swiftUseApiNamespace}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache b/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache index a4d5dd4b305..e81a205164f 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Extensions.mustache @@ -8,7 +8,8 @@ import Foundation #if canImport(AnyCodable) import AnyCodable #endif{{#usePromiseKit}} -import PromiseKit{{/usePromiseKit}} +import PromiseKit{{/usePromiseKit}}{{#useVapor}} +import Vapor{{/useVapor}}{{^useVapor}} extension Bool: JSONEncodable { func encodeToJSON() -> Any { return self as Any } @@ -94,7 +95,7 @@ extension UUID: JSONEncodable { func encodeToJSON() -> Any { return self.uuidString } -}{{#generateModelAdditionalProperties}} +}{{/useVapor}}{{#generateModelAdditionalProperties}} extension String: CodingKey { @@ -180,13 +181,13 @@ extension KeyedDecodingContainerProtocol { return map } -}{{/generateModelAdditionalProperties}} +}{{/generateModelAdditionalProperties}}{{^useVapor}} extension HTTPURLResponse { var isStatusCodeSuccessful: Bool { return Array(200 ..< 300).contains(statusCode) } -}{{#usePromiseKit}} +}{{/useVapor}}{{#usePromiseKit}} extension RequestBuilder { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func execute() -> Promise> { @@ -201,4 +202,39 @@ extension RequestBuilder { } return deferred.promise } -}{{/usePromiseKit}} +}{{/usePromiseKit}}{{#useVapor}} + +extension UUID: Content { } + +extension URL: Content { } + +extension Bool: Content { } + +extension Set: ResponseEncodable where Element: Content { + public func encodeResponse(for request: Vapor.Request) -> EventLoopFuture { + let response = Vapor.Response() + do { + try response.content.encode(Array(self)) + } catch { + return request.eventLoop.makeFailedFuture(error) + } + return request.eventLoop.makeSucceededFuture(response) + } +} + +extension Set: RequestDecodable where Element: Content { + public static func decodeRequest(_ request: Vapor.Request) -> EventLoopFuture { + do { + let content = try request.content.decode([Element].self) + return request.eventLoop.makeSucceededFuture(Set(content)) + } catch { + return request.eventLoop.makeFailedFuture(error) + } + } +} + +extension Set: Content where Element: Content { } + +extension AnyCodable: Content {} +{{/useVapor}} + diff --git a/modules/openapi-generator/src/main/resources/swift5/Package.swift.mustache b/modules/openapi-generator/src/main/resources/swift5/Package.swift.mustache index 5dc55ffef83..5b106288b3c 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Package.swift.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Package.swift.mustache @@ -5,10 +5,15 @@ import PackageDescription let package = Package( name: "{{projectName}}", platforms: [ + {{#useVapor}} + .macOS(.v10_15), + {{/useVapor}} + {{^useVapor}} .iOS(.v9), .macOS(.v10_11), .tvOS(.v9), .watchOS(.v3), + {{/useVapor}} ], products: [ // Products define the executables and libraries produced by a package, and make them visible to other packages. @@ -23,6 +28,9 @@ let package = Package( {{#useAlamofire}} .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.9.1"), {{/useAlamofire}} + {{#useVapor}} + .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0") + {{/useVapor}} {{#usePromiseKit}} .package(url: "https://github.com/mxcl/PromiseKit.git", from: "6.15.3"), {{/usePromiseKit}} @@ -35,7 +43,7 @@ let package = Package( // Targets can depend on other targets in this package, and on products in packages which this package depends on. .target( name: "{{projectName}}", - dependencies: ["AnyCodable", {{#useAlamofire}}"Alamofire", {{/useAlamofire}}{{#usePromiseKit}}"PromiseKit", {{/usePromiseKit}}{{#useRxSwift}}"RxSwift"{{/useRxSwift}}], + dependencies: ["AnyCodable", {{#useVapor}}"Vapor", {{/useVapor}}{{#useAlamofire}}"Alamofire", {{/useAlamofire}}{{#usePromiseKit}}"PromiseKit", {{/usePromiseKit}}{{#useRxSwift}}"RxSwift"{{/useRxSwift}}], path: "{{#swiftPackagePath}}{{swiftPackagePath}}{{/swiftPackagePath}}{{^swiftPackagePath}}{{#useSPMFileStructure}}Sources/{{projectName}}{{/useSPMFileStructure}}{{^useSPMFileStructure}}{{projectName}}/Classes{{/useSPMFileStructure}}{{/swiftPackagePath}}" ), ] diff --git a/modules/openapi-generator/src/main/resources/swift5/README.mustache b/modules/openapi-generator/src/main/resources/swift5/README.mustache index 4e15bc40b0b..2fc73bcdbc1 100644 --- a/modules/openapi-generator/src/main/resources/swift5/README.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/README.mustache @@ -19,6 +19,13 @@ For more information, please visit [{{{infoUrl}}}]({{{infoUrl}}}) ## Installation +{{#useVapor}} +Add the following entry in your Package.swift: + +> .package(path: "./{{{projectName}}}") + +{{/useVapor}} +{{^useVapor}} ### Carthage Run `carthage update` @@ -27,7 +34,7 @@ Run `carthage update` Run `pod install` -## Documentation for API Endpoints +{{/useVapor}}## Documentation for API Endpoints All URIs are relative to *{{basePath}}* diff --git a/modules/openapi-generator/src/main/resources/swift5/api.mustache b/modules/openapi-generator/src/main/resources/swift5/api.mustache index 92643fdf268..7d84971ab98 100644 --- a/modules/openapi-generator/src/main/resources/swift5/api.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/api.mustache @@ -10,21 +10,26 @@ import PromiseKit{{/usePromiseKit}}{{#useRxSwift}} import RxSwift{{/useRxSwift}}{{#useCombine}} #if canImport(Combine) import Combine -#endif{{/useCombine}}{{#swiftUseApiNamespace}} +#endif{{/useCombine}}{{#useVapor}} +import Vapor{{/useVapor}} +#if canImport(AnyCodable) +import AnyCodable +#endif{{#swiftUseApiNamespace}} extension {{projectName}} { {{/swiftUseApiNamespace}} {{#description}} -/** {{description}} */{{/description}} +/** {{{description}}} */{{/description}} {{#objcCompatible}}@objc {{/objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class {{classname}}{{#objcCompatible}} : NSObject{{/objcCompatible}} { {{#operation}} + {{#allParams}} {{#isEnum}} /** * enum for parameter {{paramName}} */ - {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{enumName}}_{{operationId}}: {{^isContainer}}{{{dataType}}}{{/isContainer}}{{#isContainer}}String{{/isContainer}}, CaseIterable { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{enumName}}_{{operationId}}: {{^isContainer}}{{{dataType}}}{{/isContainer}}{{#isContainer}}String{{/isContainer}}, CaseIterable{{#useVapor}}, Content{{/useVapor}} { {{#allowableValues}} {{#enumVars}} case {{name}} = {{{value}}} @@ -34,6 +39,7 @@ extension {{projectName}} { {{/isEnum}} {{/allParams}} +{{^useVapor}} {{^usePromiseKit}} {{^useRxSwift}} {{^useResult}} @@ -69,6 +75,7 @@ extension {{projectName}} { {{/useResult}} {{/useRxSwift}} {{/usePromiseKit}} +{{/useVapor}} {{#usePromiseKit}} /** {{#summary}} @@ -196,6 +203,126 @@ extension {{projectName}} { } } {{/useResult}} +{{#useVapor}} + /** + {{#summary}} + {{{summary}}} + {{/summary}} + {{httpMethod}} {{{path}}}{{#notes}} + {{{notes}}}{{/notes}}{{#subresourceOperation}} + subresourceOperation: {{subresourceOperation}}{{/subresourceOperation}}{{#defaultResponse}} + defaultResponse: {{defaultResponse}}{{/defaultResponse}} + {{#authMethods}} + - {{#isBasic}}BASIC{{/isBasic}}{{#isOAuth}}OAuth{{/isOAuth}}{{#isApiKey}}API Key{{/isApiKey}}: + - type: {{type}}{{#keyParamName}} {{keyParamName}} {{#isKeyInQuery}}(QUERY){{/isKeyInQuery}}{{#isKeyInHeaer}}(HEADER){{/isKeyInHeaer}}{{/keyParamName}} + - name: {{name}} + {{/authMethods}} + {{#hasResponseHeaders}} + - responseHeaders: [{{#responseHeaders}}{{{baseName}}}({{{dataType}}}){{^-last}}, {{/-last}}{{/responseHeaders}}] + {{/hasResponseHeaders}} + {{#externalDocs}} + - externalDocs: {{externalDocs}} + {{/externalDocs}} + {{#allParams}} + - parameter {{paramName}}: ({{#isFormParam}}form{{/isFormParam}}{{#isQueryParam}}query{{/isQueryParam}}{{#isPathParam}}path{{/isPathParam}}{{#isHeaderParam}}header{{/isHeaderParam}}{{#isBodyParam}}body{{/isBodyParam}}) {{{description}}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} + {{/allParams}} + - returns: `EventLoopFuture` of `ClientResponse` {{{description}}} + */ + {{#isDeprecated}} + @available(*, deprecated, message: "This operation is deprecated.") + {{/isDeprecated}} + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}Raw({{#allParams}}{{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + {{^pathParams}}let{{/pathParams}}{{#pathParams}}{{#-first}}var{{/-first}}{{/pathParams}} path = "{{{path}}}"{{#pathParams}} + let {{paramName}}PreEscape = String(describing: {{#isEnum}}{{paramName}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}.rawValue{{/isContainer}}{{/isEnum}}{{^isEnum}}{{paramName}}{{/isEnum}}) + let {{paramName}}PostEscape = {{paramName}}PreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}} + let URLString = {{projectName}}.basePath + path + + guard let apiClient = {{#swiftUseApiNamespace}}{{projectName}}.{{/swiftUseApiNamespace}}Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.{{httpMethod}}, headers: headers, to: URI(string: URLString)) { request in + try {{#swiftUseApiNamespace}}{{projectName}}.{{/swiftUseApiNamespace}}Configuration.apiWrapper(&request) + {{#hasHeaderParams}}{{#headerParams}} + request.headers.add(name: "{{baseName}}", value: {{#isArray}}{{paramName}}{{^required}}?{{/required}}.map { $0{{#isEnum}}.rawValue{{/isEnum}}.description }.description{{/isArray}}{{^isArray}}{{#isEnum}}{{paramName}}{{^required}}?{{/required}}.rawValue.description{{/isEnum}}{{^isEnum}}{{paramName}}{{^required}}?{{/required}}.description{{/isEnum}}{{/isArray}}{{^required}} ?? ""{{/required}}) + {{/headerParams}}{{/hasHeaderParams}} + {{#hasQueryParams}}struct QueryParams: Content { + {{#queryParams}} + var {{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{/required}} + {{/queryParams}} + } + try request.query.encode(QueryParams({{#queryParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/queryParams}})){{/hasQueryParams}} + {{#hasBodyParam}} + {{#bodyParam}}{{#required}}{{#isBinary}}request.body = ByteBuffer(data: {{paramName}}){{/isBinary}}{{^isBinary}}{{#isFile}}request.body = ByteBuffer(data: {{paramName}}){{/isFile}}try request.content.encode({{paramName}}, using: Configuration.contentConfiguration.requireEncoder(for: {{{dataType}}}.defaultContentType)){{/isBinary}}{{/required}}{{^required}}if let body = {{paramName}} { + + {{#isBinary}}request.body = ByteBuffer(data: body){{/isBinary}}{{^isBinary}}{{#isFile}}request.body = ByteBuffer(data: body){{/isFile}}try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: {{{dataType}}}.defaultContentType)){{/isBinary}} + }{{/required}}{{/bodyParam}} + {{/hasBodyParam}} + {{#hasFormParams}}struct FormParams: Content { + static let defaultContentType = Vapor.HTTPMediaType.formData + {{#formParams}} + var {{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{/required}} + {{/formParams}} + } + try request.content.encode(FormParams({{#formParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/formParams}}), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)){{/hasFormParams}} + try beforeSend(&request) + } + } + + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}} { + {{#responses}} + case http{{code}}({{#dataType}}value: {{{dataType}}}, {{/dataType}}raw: ClientResponse) + {{/responses}} + {{^hasDefaultResponse}} + case http0(raw: ClientResponse) + {{/hasDefaultResponse}} + } + + /** + {{#summary}} + {{{summary}}} + {{/summary}} + {{httpMethod}} {{{path}}}{{#notes}} + {{{notes}}}{{/notes}}{{#subresourceOperation}} + subresourceOperation: {{subresourceOperation}}{{/subresourceOperation}}{{#defaultResponse}} + defaultResponse: {{defaultResponse}}{{/defaultResponse}} + {{#authMethods}} + - {{#isBasic}}BASIC{{/isBasic}}{{#isOAuth}}OAuth{{/isOAuth}}{{#isApiKey}}API Key{{/isApiKey}}: + - type: {{type}}{{#keyParamName}} {{keyParamName}} {{#isKeyInQuery}}(QUERY){{/isKeyInQuery}}{{#isKeyInHeaer}}(HEADER){{/isKeyInHeaer}}{{/keyParamName}} + - name: {{name}} + {{/authMethods}} + {{#hasResponseHeaders}} + - responseHeaders: [{{#responseHeaders}}{{{baseName}}}({{{dataType}}}){{^-last}}, {{/-last}}{{/responseHeaders}}] + {{/hasResponseHeaders}} + {{#externalDocs}} + - externalDocs: {{externalDocs}} + {{/externalDocs}} + {{#allParams}} + - parameter {{paramName}}: ({{#isFormParam}}form{{/isFormParam}}{{#isQueryParam}}query{{/isQueryParam}}{{#isPathParam}}path{{/isPathParam}}{{#isHeaderParam}}header{{/isHeaderParam}}{{#isBodyParam}}body{{/isBodyParam}}) {{{description}}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} + {{/allParams}} + - returns: `EventLoopFuture` of `{{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}}` {{{description}}} + */ + {{#isDeprecated}} + @available(*, deprecated, message: "This operation is deprecated.") + {{/isDeprecated}} + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture<{{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}}> { + return {{operationId}}Raw({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> {{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}} in + switch response.status.code { + {{#responses}} + {{#isDefault}}default{{/isDefault}}{{^isDefault}}case {{code}}{{/isDefault}}: + return .http{{code}}({{#dataType}}value: {{#isBinary}}Data(buffer: response.body ?? ByteBuffer()){{/isBinary}}{{^isBinary}}{{#isFile}}Data(buffer: response.body ?? ByteBuffer()){{/isFile}}{{^isFile}}try response.content.decode({{{dataType}}}.self, using: Configuration.contentConfiguration.requireDecoder(for: {{{dataType}}}.defaultContentType)){{/isFile}}{{/isBinary}}, {{/dataType}}raw: response) + {{/responses}} + {{^hasDefaultResponse}} + default: + return .http0(raw: response) + {{/hasDefaultResponse}} + } + } + } + +{{/useVapor}} +{{^useVapor}} /** {{#summary}} @@ -268,7 +395,7 @@ extension {{projectName}} { return requestBuilder.init(method: "{{httpMethod}}", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - +{{/useVapor}} {{/operation}} } {{#swiftUseApiNamespace}} diff --git a/modules/openapi-generator/src/main/resources/swift5/api_doc.mustache b/modules/openapi-generator/src/main/resources/swift5/api_doc.mustache index f57a93153c6..93b51e32535 100644 --- a/modules/openapi-generator/src/main/resources/swift5/api_doc.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/api_doc.mustache @@ -14,7 +14,9 @@ Method | HTTP request | Description ```swift {{^usePromiseKit}} {{^useRxSwift}} +{{^useVapor}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}completion: @escaping (_ data: {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}?, _ error: Error?) -> Void) +{{/useVapor}} {{/useRxSwift}} {{/usePromiseKit}} {{#usePromiseKit}} @@ -23,6 +25,9 @@ Method | HTTP request | Description {{#useRxSwift}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) -> Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {{/useRxSwift}} +{{#useVapor}} + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture<{{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}}> +{{/useVapor}} ``` {{{summary}}}{{#notes}} @@ -39,6 +44,7 @@ import {{{projectName}}} {{^usePromiseKit}} {{^useRxSwift}} +{{^useVapor}} {{#summary}} // {{{.}}} {{/summary}} @@ -52,6 +58,7 @@ import {{{projectName}}} dump(response) } } +{{/useVapor}} {{/useRxSwift}} {{/usePromiseKit}} {{#usePromiseKit}} @@ -69,6 +76,27 @@ import {{{projectName}}} {{#useRxSwift}} // TODO RxSwift sample code not yet implemented. To contribute, please open a ticket via http://github.com/OpenAPITools/openapi-generator/issues/new {{/useRxSwift}} +{{#useVapor}} +{{#summary}} +// {{{.}}} +{{/summary}} +{{classname}}.{{{operationId}}}({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + {{#responses}} + case .http{{code}}(let value, let raw): + {{/responses}} + {{^hasDefaultResponse}} + case .http0(let value, let raw): + {{/hasDefaultResponse}} + } + } +} +{{/useVapor}} ``` ### Parameters @@ -80,7 +108,23 @@ Name | Type | Description | Notes ### Return type +{{#useVapor}} +#### {{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}} + +```swift +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}} { + {{#responses}} + case http{{code}}(value: {{#dataType}}{{dataType}}?{{/dataType}}{{^dataType}}Void?{{/dataType}}, raw: ClientResponse) + {{/responses}} + {{^hasDefaultResponse}} + case http0(value: {{#returnType}}{{returnType}}?{{/returnType}}{{^returnType}}Void?{{/returnType}}, raw: ClientResponse) + {{/hasDefaultResponse}} +} +``` +{{/useVapor}} +{{^useVapor}} {{#returnType}}{{#returnTypeIsPrimitive}}**{{{returnType}}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}[**{{{returnType}}}**]({{returnBaseType}}.md){{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}Void (empty response body){{/returnType}} +{{/useVapor}} ### Authorization diff --git a/modules/openapi-generator/src/main/resources/swift5/model.mustache b/modules/openapi-generator/src/main/resources/swift5/model.mustache index f9107398cfa..47df79b7c7d 100644 --- a/modules/openapi-generator/src/main/resources/swift5/model.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/model.mustache @@ -8,7 +8,8 @@ import Foundation #if canImport(AnyCodable) import AnyCodable -#endif +#endif{{#useVapor}} +import Vapor{{/useVapor}} {{#swiftUseApiNamespace}} @available(*, deprecated, renamed: "{{projectName}}.{{classname}}") diff --git a/modules/openapi-generator/src/main/resources/swift5/modelEnum.mustache b/modules/openapi-generator/src/main/resources/swift5/modelEnum.mustache index b10347d63db..4d868682a1e 100644 --- a/modules/openapi-generator/src/main/resources/swift5/modelEnum.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/modelEnum.mustache @@ -1,7 +1,7 @@ -{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{classname}}: {{dataType}}, Codable, CaseIterable { +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{classname}}: {{dataType}}, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{/useVapor}}, CaseIterable { {{#allowableValues}} {{#enumVars}} - case {{name}} = {{{value}}} + case {{{name}}} = {{{value}}} {{/enumVars}} {{/allowableValues}} } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/swift5/modelInlineEnumDeclaration.mustache b/modules/openapi-generator/src/main/resources/swift5/modelInlineEnumDeclaration.mustache index 1c749e0b6cd..039bae3cb73 100644 --- a/modules/openapi-generator/src/main/resources/swift5/modelInlineEnumDeclaration.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/modelInlineEnumDeclaration.mustache @@ -1,7 +1,7 @@ - {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{enumName}}: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}String{{/isContainer}}, Codable, CaseIterable { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{enumName}}: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}String{{/isContainer}}, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{/useVapor}}, CaseIterable { {{#allowableValues}} {{#enumVars}} - case {{name}} = {{{value}}} + case {{{name}}} = {{{value}}} {{/enumVars}} {{/allowableValues}} } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache b/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache index da0d44247fc..450d95f1f76 100644 --- a/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/modelObject.mustache @@ -1,4 +1,4 @@ -{{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#useClasses}}final class{{/useClasses}}{{^useClasses}}struct{{/useClasses}} {{classname}}: Codable{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} { +{{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#useClasses}}final class{{/useClasses}}{{^useClasses}}struct{{/useClasses}} {{{classname}}}: {{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{/useVapor}}{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} { {{/objcCompatible}}{{#objcCompatible}}@objc {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable { {{/objcCompatible}} @@ -9,12 +9,12 @@ {{/allVars}} {{#allVars}} {{#isEnum}} - {{#description}}/** {{description}} */ + {{#description}}/** {{{description}}} */ {{/description}}{{#deprecated}}@available(*, deprecated, message: "This property is deprecated.") {{/deprecated}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#readonlyProperties}}private(set) {{/readonlyProperties}}var {{{name}}}: {{{datatypeWithEnum}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}} {{/isEnum}} {{^isEnum}} - {{#description}}/** {{description}} */ + {{#description}}/** {{{description}}} */ {{/description}}{{#deprecated}}@available(*, deprecated, message: "This property is deprecated.") {{/deprecated}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#readonlyProperties}}private(set) {{/readonlyProperties}}var {{{name}}}: {{{datatype}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}} {{#objcCompatible}} @@ -102,4 +102,4 @@ {{/allVars}} {{#generateModelAdditionalProperties}}{{#additionalPropertiesType}}hasher.combine(additionalProperties.hashValue){{/additionalPropertiesType}}{{/generateModelAdditionalProperties}} }{{/vendorExtensions.x-swift-hashable}}{{/useClasses}}{{/objcCompatible}} -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/resources/swift5/modelOneOf.mustache b/modules/openapi-generator/src/main/resources/swift5/modelOneOf.mustache index 8aeddcc3c12..fae34faa975 100644 --- a/modules/openapi-generator/src/main/resources/swift5/modelOneOf.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/modelOneOf.mustache @@ -1,4 +1,4 @@ -public enum {{classname}}: Codable { +public enum {{classname}}: {{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{/useVapor}} { {{#oneOf}} case type{{.}}({{.}}) {{/oneOf}} diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift index 85346c2896e..82eb3630aa6 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,8 +11,8 @@ public typealias PetstoreClientAPI = PetstoreClient open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" - public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] + public static var credential: URLCredential? public static var requestBuilderFactory: RequestBuilderFactory = AlamofireRequestBuilderFactory() public static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 542fb6f69ba..7d09ab30c12 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class AnotherFakeAPI { + /** To test special tags @@ -50,5 +54,4 @@ open class AnotherFakeAPI { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 9b75edc92ee..5480213e38d 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeAPI { + /** - parameter body: (body) Input boolean as post body (optional) @@ -680,5 +684,4 @@ open class FakeAPI { return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index fd7d845d340..9683e0ce5b1 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeClassnameTags123API { + /** To test class name in snake case @@ -53,5 +57,4 @@ open class FakeClassnameTags123API { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index d7d5bdfa2ea..8cbd15364b6 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class PetAPI { + /** Add a new pet to the store @@ -479,5 +483,4 @@ open class PetAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index c80d4286b53..a83e954ae6a 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class StoreAPI { + /** Delete purchase order by ID @@ -185,5 +189,4 @@ open class StoreAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 542dc212bd1..dbff6ade41c 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class UserAPI { + /** Create user @@ -362,5 +366,4 @@ open class UserAPI { return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift index 18edabbed78..8fb05331889 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -7,6 +7,7 @@ import Foundation open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 61a478de142..621afb93561 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -33,3 +33,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 157cca1d227..cdd4f5335b9 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -33,3 +33,4 @@ public struct Animal: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 8607cbef1a3..c365505ab9d 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -37,3 +37,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(message, forKey: .message) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index f3f161b44c1..226f7456181 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index d62de957472..39831127871 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 360d50d027f..8865d76bef2 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -37,3 +37,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index f0781a9cb73..71cd93bce5f 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -50,3 +50,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index d5519760387..457e04bd475 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -37,3 +37,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8312680deb3..8caebb1c206 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -29,3 +29,4 @@ public struct CatAllOf: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 398da60aa73..89016ca353d 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -33,3 +33,4 @@ public struct Category: Codable, Hashable { try container.encode(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 03bf63e4cad..16e69e560bd 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -30,3 +30,4 @@ public struct ClassModel: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 59604878043..60dbc5dc5c1 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -29,3 +29,4 @@ public struct Client: Codable, Hashable { try container.encodeIfPresent(client, forKey: .client) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 4ada3ceb605..658732a7f36 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -37,3 +37,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index f6c3d287301..82b0dedf35b 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -29,3 +29,4 @@ public struct DogAllOf: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 0e0aad42abe..1d8ce99539c 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -41,3 +41,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 9e44926be9b..8c8bca49774 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -63,3 +63,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 11694b2ca59..05dd5b1a825 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -31,3 +31,4 @@ public struct File: Codable, Hashable { try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 6aa85d8eecf..3ca66a31359 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -33,3 +33,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(files, forKey: .files) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 114c884efc5..a7a4b39e720 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -77,3 +77,4 @@ public struct FormatTest: Codable, Hashable { try container.encode(password, forKey: .password) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index cb1a7456a7d..54ed8a723c6 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -33,3 +33,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(foo, forKey: .foo) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8ecdd3b0233..67e3048469f 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -29,3 +29,4 @@ public struct List: Codable, Hashable { try container.encodeIfPresent(_123list, forKey: ._123list) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 0ff74ed8400..1e728fcdf58 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -45,3 +45,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index 58a0a54ca09..c79ca459217 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -37,3 +37,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(map, forKey: .map) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 0f59769954f..23402143f71 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -34,3 +34,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index d88c94f05c9..a28f46a33ce 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -42,3 +42,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(_123number, forKey: ._123number) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 0f05482b9b7..87ceb64bb97 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -29,3 +29,4 @@ public struct NumberOnly: Codable, Hashable { try container.encodeIfPresent(justNumber, forKey: .justNumber) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 100d6b71fed..e2eeced4c57 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -55,3 +55,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(complete, forKey: .complete) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 15a4e4a15b6..edeaccaeaa6 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -37,3 +37,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index a87ab825ea0..ddd1186b891 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -55,3 +55,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 6426deedf63..57ba3f577c8 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -33,3 +33,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(baz, forKey: .baz) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 777c241bc0c..afc2b51f8f3 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -30,3 +30,4 @@ public struct Return: Codable, Hashable { try container.encodeIfPresent(_return, forKey: ._return) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index b677523a749..bfe9723f888 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -29,3 +29,4 @@ public struct SpecialModelName: Codable, Hashable { try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index f575c9df65c..126c35c85a6 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -49,3 +49,4 @@ public struct StringBooleanMap: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index cd5acc827db..07b826264f3 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -33,3 +33,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 341c9b4b8c2..e58eecd960f 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -45,3 +45,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 04166af0895..6c22fdbae7a 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -45,3 +45,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 9f3ded8fcd9..7afe359ae40 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -58,3 +58,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(userStatus, forKey: .userStatus) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift index 01bc6ff0d8d..941c61b713a 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,8 +11,8 @@ public typealias PetstoreClientAPI = PetstoreClient open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" - public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] + public static var credential: URLCredential? public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() public static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index f7f14df25d3..70498ae5c83 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -9,8 +9,12 @@ import Foundation #if canImport(Combine) import Combine #endif +#if canImport(AnyCodable) +import AnyCodable +#endif open class AnotherFakeAPI { + /** To test special tags @@ -58,5 +62,4 @@ open class AnotherFakeAPI { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index c2587336354..90aa780acc5 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -9,8 +9,12 @@ import Foundation #if canImport(Combine) import Combine #endif +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeAPI { + /** - parameter body: (body) Input boolean as post body (optional) @@ -743,5 +747,4 @@ open class FakeAPI { return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 094b75647ae..af9a24d7412 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -9,8 +9,12 @@ import Foundation #if canImport(Combine) import Combine #endif +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeClassnameTags123API { + /** To test class name in snake case @@ -61,5 +65,4 @@ open class FakeClassnameTags123API { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index b1d495832c6..7c968379435 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -9,8 +9,12 @@ import Foundation #if canImport(Combine) import Combine #endif +#if canImport(AnyCodable) +import AnyCodable +#endif open class PetAPI { + /** Add a new pet to the store @@ -527,5 +531,4 @@ open class PetAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 9e4aa781716..0ed144406b9 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -9,8 +9,12 @@ import Foundation #if canImport(Combine) import Combine #endif +#if canImport(AnyCodable) +import AnyCodable +#endif open class StoreAPI { + /** Delete purchase order by ID @@ -208,5 +212,4 @@ open class StoreAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index fa260d3e83a..c469d6ed3a1 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -9,8 +9,12 @@ import Foundation #if canImport(Combine) import Combine #endif +#if canImport(AnyCodable) +import AnyCodable +#endif open class UserAPI { + /** Create user @@ -405,5 +409,4 @@ open class UserAPI { return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift index 18edabbed78..8fb05331889 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -7,6 +7,7 @@ import Foundation open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 61a478de142..621afb93561 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -33,3 +33,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 157cca1d227..cdd4f5335b9 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -33,3 +33,4 @@ public struct Animal: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 8607cbef1a3..c365505ab9d 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -37,3 +37,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(message, forKey: .message) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index f3f161b44c1..226f7456181 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index d62de957472..39831127871 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 360d50d027f..8865d76bef2 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -37,3 +37,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index f0781a9cb73..71cd93bce5f 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -50,3 +50,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index d5519760387..457e04bd475 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -37,3 +37,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8312680deb3..8caebb1c206 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -29,3 +29,4 @@ public struct CatAllOf: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 398da60aa73..89016ca353d 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -33,3 +33,4 @@ public struct Category: Codable, Hashable { try container.encode(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 03bf63e4cad..16e69e560bd 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -30,3 +30,4 @@ public struct ClassModel: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 59604878043..60dbc5dc5c1 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -29,3 +29,4 @@ public struct Client: Codable, Hashable { try container.encodeIfPresent(client, forKey: .client) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 4ada3ceb605..658732a7f36 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -37,3 +37,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index f6c3d287301..82b0dedf35b 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -29,3 +29,4 @@ public struct DogAllOf: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 0e0aad42abe..1d8ce99539c 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -41,3 +41,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 9e44926be9b..8c8bca49774 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -63,3 +63,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 11694b2ca59..05dd5b1a825 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -31,3 +31,4 @@ public struct File: Codable, Hashable { try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 6aa85d8eecf..3ca66a31359 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -33,3 +33,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(files, forKey: .files) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 114c884efc5..a7a4b39e720 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -77,3 +77,4 @@ public struct FormatTest: Codable, Hashable { try container.encode(password, forKey: .password) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index cb1a7456a7d..54ed8a723c6 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -33,3 +33,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(foo, forKey: .foo) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8ecdd3b0233..67e3048469f 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -29,3 +29,4 @@ public struct List: Codable, Hashable { try container.encodeIfPresent(_123list, forKey: ._123list) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 0ff74ed8400..1e728fcdf58 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -45,3 +45,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index 58a0a54ca09..c79ca459217 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -37,3 +37,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(map, forKey: .map) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 0f59769954f..23402143f71 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -34,3 +34,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index d88c94f05c9..a28f46a33ce 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -42,3 +42,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(_123number, forKey: ._123number) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 0f05482b9b7..87ceb64bb97 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -29,3 +29,4 @@ public struct NumberOnly: Codable, Hashable { try container.encodeIfPresent(justNumber, forKey: .justNumber) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 100d6b71fed..e2eeced4c57 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -55,3 +55,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(complete, forKey: .complete) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 15a4e4a15b6..edeaccaeaa6 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -37,3 +37,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index a87ab825ea0..ddd1186b891 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -55,3 +55,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 6426deedf63..57ba3f577c8 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -33,3 +33,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(baz, forKey: .baz) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 777c241bc0c..afc2b51f8f3 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -30,3 +30,4 @@ public struct Return: Codable, Hashable { try container.encodeIfPresent(_return, forKey: ._return) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index b677523a749..bfe9723f888 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -29,3 +29,4 @@ public struct SpecialModelName: Codable, Hashable { try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index f575c9df65c..126c35c85a6 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -49,3 +49,4 @@ public struct StringBooleanMap: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index cd5acc827db..07b826264f3 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -33,3 +33,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 341c9b4b8c2..e58eecd960f 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -45,3 +45,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 04166af0895..6c22fdbae7a 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -45,3 +45,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 9f3ded8fcd9..7afe359ae40 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -58,3 +58,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(userStatus, forKey: .userStatus) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs.swift index 01bc6ff0d8d..941c61b713a 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,8 +11,8 @@ public typealias PetstoreClientAPI = PetstoreClient open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" - public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] + public static var credential: URLCredential? public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() public static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 542fb6f69ba..7d09ab30c12 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class AnotherFakeAPI { + /** To test special tags @@ -50,5 +54,4 @@ open class AnotherFakeAPI { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index eb6d1e67c4f..3a25702d994 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeAPI { + /** creates an XmlItem @@ -779,5 +783,4 @@ open class FakeAPI { return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index fd7d845d340..9683e0ce5b1 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeClassnameTags123API { + /** To test class name in snake case @@ -53,5 +57,4 @@ open class FakeClassnameTags123API { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index fa8620ba081..e8ab4d6861a 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class PetAPI { + /** Add a new pet to the store @@ -479,5 +483,4 @@ open class PetAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index c80d4286b53..a83e954ae6a 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class StoreAPI { + /** Delete purchase order by ID @@ -185,5 +189,4 @@ open class StoreAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 542dc212bd1..dbff6ade41c 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class UserAPI { + /** Create user @@ -362,5 +366,4 @@ open class UserAPI { return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Configuration.swift index 18edabbed78..8fb05331889 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Configuration.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -7,6 +7,7 @@ import Foundation open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift index 96d07d1ef30..07dd0c38a1f 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesAnyType.swift @@ -58,3 +58,4 @@ public struct AdditionalPropertiesAnyType: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap(AnyCodable.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift index 106e4dd6de1..43a6d66cb59 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesArray.swift @@ -58,3 +58,4 @@ public struct AdditionalPropertiesArray: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap([AnyCodable].self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift index bfbd7a5f20d..a2a20a926a1 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesBoolean.swift @@ -58,3 +58,4 @@ public struct AdditionalPropertiesBoolean: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 614e0963353..eb6669c105a 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -69,3 +69,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(anytype3, forKey: .anytype3) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift index b57691746ca..0ccd9115bfd 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesInteger.swift @@ -58,3 +58,4 @@ public struct AdditionalPropertiesInteger: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap(Int.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift index fd6a6a52d06..06987825557 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesNumber.swift @@ -58,3 +58,4 @@ public struct AdditionalPropertiesNumber: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap(Double.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift index 675a07ca0c1..848a0983a3f 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesObject.swift @@ -58,3 +58,4 @@ public struct AdditionalPropertiesObject: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap([String: AnyCodable].self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift index df5aa8b6953..7b5bd40f70f 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesString.swift @@ -58,3 +58,4 @@ public struct AdditionalPropertiesString: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap(String.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 157cca1d227..cdd4f5335b9 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -33,3 +33,4 @@ public struct Animal: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 8607cbef1a3..c365505ab9d 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -37,3 +37,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(message, forKey: .message) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index f3f161b44c1..226f7456181 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index d62de957472..39831127871 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 360d50d027f..8865d76bef2 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -37,3 +37,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift index 3284de5040e..4ca3454f9bd 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCat.swift @@ -35,3 +35,4 @@ public struct BigCat: Codable, Hashable { try container.encodeIfPresent(kind, forKey: .kind) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift index 7d2d2489849..8c6a92c8b48 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/BigCatAllOf.swift @@ -35,3 +35,4 @@ public struct BigCatAllOf: Codable, Hashable { try container.encodeIfPresent(kind, forKey: .kind) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index f0781a9cb73..71cd93bce5f 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -50,3 +50,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index d5519760387..457e04bd475 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -37,3 +37,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8312680deb3..8caebb1c206 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -29,3 +29,4 @@ public struct CatAllOf: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 24dd89221d0..e880b792bbe 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -33,3 +33,4 @@ public struct Category: Codable, Hashable { try container.encode(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 03bf63e4cad..16e69e560bd 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -30,3 +30,4 @@ public struct ClassModel: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 59604878043..60dbc5dc5c1 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -29,3 +29,4 @@ public struct Client: Codable, Hashable { try container.encodeIfPresent(client, forKey: .client) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 4ada3ceb605..658732a7f36 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -37,3 +37,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index f6c3d287301..82b0dedf35b 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -29,3 +29,4 @@ public struct DogAllOf: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 0e0aad42abe..1d8ce99539c 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -41,3 +41,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 9e44926be9b..8c8bca49774 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -63,3 +63,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 11694b2ca59..05dd5b1a825 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -31,3 +31,4 @@ public struct File: Codable, Hashable { try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 6aa85d8eecf..3ca66a31359 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -33,3 +33,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(files, forKey: .files) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 60eafb2febe..5dccf04e1e1 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -81,3 +81,4 @@ public struct FormatTest: Codable, Hashable { try container.encodeIfPresent(bigDecimal, forKey: .bigDecimal) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index cb1a7456a7d..54ed8a723c6 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -33,3 +33,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(foo, forKey: .foo) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8ecdd3b0233..67e3048469f 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -29,3 +29,4 @@ public struct List: Codable, Hashable { try container.encodeIfPresent(_123list, forKey: ._123list) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 0ff74ed8400..1e728fcdf58 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -45,3 +45,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index 58a0a54ca09..c79ca459217 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -37,3 +37,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(map, forKey: .map) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 0f59769954f..23402143f71 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -34,3 +34,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index d88c94f05c9..a28f46a33ce 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -42,3 +42,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(_123number, forKey: ._123number) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 0f05482b9b7..87ceb64bb97 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -29,3 +29,4 @@ public struct NumberOnly: Codable, Hashable { try container.encodeIfPresent(justNumber, forKey: .justNumber) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 100d6b71fed..e2eeced4c57 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -55,3 +55,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(complete, forKey: .complete) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 15a4e4a15b6..edeaccaeaa6 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -37,3 +37,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 63b32ba8f11..f3a1bc92289 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -55,3 +55,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 6426deedf63..57ba3f577c8 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -33,3 +33,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(baz, forKey: .baz) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 777c241bc0c..afc2b51f8f3 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -30,3 +30,4 @@ public struct Return: Codable, Hashable { try container.encodeIfPresent(_return, forKey: ._return) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index b677523a749..bfe9723f888 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -29,3 +29,4 @@ public struct SpecialModelName: Codable, Hashable { try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index f575c9df65c..126c35c85a6 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -49,3 +49,4 @@ public struct StringBooleanMap: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index cd5acc827db..07b826264f3 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -33,3 +33,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 341c9b4b8c2..e58eecd960f 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -45,3 +45,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 7a0b4dda2a5..23343c3c393 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -49,3 +49,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 9f3ded8fcd9..7afe359ae40 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -58,3 +58,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(userStatus, forKey: .userStatus) } } + diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift index 997e2eebce5..ae43cd28692 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models/XmlItem.swift @@ -141,3 +141,4 @@ public struct XmlItem: Codable, Hashable { try container.encodeIfPresent(prefixNsWrappedArray, forKey: .prefixNsWrappedArray) } } + diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs.swift index 850c8fc4383..bbc07371c77 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,8 +11,8 @@ public typealias PetstoreClientAPI = PetstoreClient open class PetstoreClient { public static var basePath = "http://petstore.swagger.io/v2" - public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] + public static var credential: URLCredential? public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() public static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index bf00a6fa741..190716faed6 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class PetAPI { + /** Add a new pet to the store @@ -421,5 +425,4 @@ open class PetAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 9d68c2def6e..c25565f0cf8 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class StoreAPI { + /** Delete purchase order by ID @@ -185,5 +189,4 @@ open class StoreAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 106277bbe05..33ee8164a3e 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class UserAPI { + /** Create user @@ -380,5 +384,4 @@ open class UserAPI { return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Configuration.swift index 18edabbed78..8fb05331889 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Configuration.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -7,6 +7,7 @@ import Foundation open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 619a45e20bb..ff77211ec29 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -38,3 +38,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(message, forKey: .message) } } + diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 26ba10c456e..0036cc7a857 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -34,3 +34,4 @@ public struct Category: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 81d122defdf..ccd3bea0249 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -57,3 +57,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(complete, forKey: .complete) } } + diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 475b1d7e546..047967197a7 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -57,3 +57,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) } } + diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 6f008baf726..555a33e6a18 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -34,3 +34,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/User.swift index f46bd774131..4d8eeffdbf8 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -59,3 +59,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(userStatus, forKey: .userStatus) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs.swift index e98c4bb0fbe..a4d2c1877f1 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,8 +11,8 @@ internal typealias PetstoreClientAPI = PetstoreClient internal class PetstoreClient { internal static var basePath = "http://petstore.swagger.io:80/v2" - internal static var credential: URLCredential? internal static var customHeaders: [String: String] = [:] + internal static var credential: URLCredential? internal static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() internal static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 3962e550ac4..8a124ebde97 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif internal class AnotherFakeAPI { + /** To test special tags @@ -50,5 +54,4 @@ internal class AnotherFakeAPI { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index b38a586bd0f..61e43e6ec10 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif internal class FakeAPI { + /** - parameter body: (body) Input boolean as post body (optional) @@ -680,5 +684,4 @@ internal class FakeAPI { return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index f746118089c..2a7bc6d2ef8 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif internal class FakeClassnameTags123API { + /** To test class name in snake case @@ -53,5 +57,4 @@ internal class FakeClassnameTags123API { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 67a5a95b72b..9828ee518ff 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif internal class PetAPI { + /** Add a new pet to the store @@ -479,5 +483,4 @@ internal class PetAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 4b57f341494..ab762a4f84c 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif internal class StoreAPI { + /** Delete purchase order by ID @@ -185,5 +189,4 @@ internal class StoreAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 01b5c8c0792..a1ac6beeb22 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif internal class UserAPI { + /** Create user @@ -362,5 +366,4 @@ internal class UserAPI { return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Configuration.swift index 3b39a978be4..5be96e4e203 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Configuration.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -7,6 +7,7 @@ import Foundation internal class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 048d2223b46..731b7b76eb6 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -33,3 +33,4 @@ internal struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index cf3022b7a59..b160f8c835d 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -33,3 +33,4 @@ internal struct Animal: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 3bba5d0f051..c62ce400c81 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -37,3 +37,4 @@ internal struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(message, forKey: .message) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index 6600b567f54..2fa5da894c4 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ internal struct ArrayOfArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index b9bb366249b..4ad2ff35d21 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ internal struct ArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 5aab5e0237f..e3464b693ec 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -37,3 +37,4 @@ internal struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index cc75d775764..042f77b8ab8 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -50,3 +50,4 @@ internal struct Capitalization: Codable, Hashable { try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index e1d59e33c66..4828c445c1b 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -37,3 +37,4 @@ internal struct Cat: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8a3358a747a..343d71d6873 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -29,3 +29,4 @@ internal struct CatAllOf: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index cdd51a8ffba..df67d9bd6f1 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -33,3 +33,4 @@ internal struct Category: Codable, Hashable { try container.encode(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index c5561f409fc..d679cfe582a 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -30,3 +30,4 @@ internal struct ClassModel: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index a5640b27b26..2e50c580b65 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -29,3 +29,4 @@ internal struct Client: Codable, Hashable { try container.encodeIfPresent(client, forKey: .client) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index fcf4077c0b1..cdf48f3a786 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -37,3 +37,4 @@ internal struct Dog: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index f5cb2649406..f2e801a399e 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -29,3 +29,4 @@ internal struct DogAllOf: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 502b7f16fd2..950a66d752a 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -41,3 +41,4 @@ internal struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 6ab42303c45..77419816570 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -63,3 +63,4 @@ internal struct EnumTest: Codable, Hashable { try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift index c4843091f8d..14b22772e3f 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -31,3 +31,4 @@ internal struct File: Codable, Hashable { try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 52bea1373b0..e0f8e9990a5 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -33,3 +33,4 @@ internal struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(files, forKey: .files) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index c1eff9ffd18..6f8b00eddf8 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -77,3 +77,4 @@ internal struct FormatTest: Codable, Hashable { try container.encode(password, forKey: .password) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index df1e18887c5..0ddedc17958 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -33,3 +33,4 @@ internal struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(foo, forKey: .foo) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 10956a8bf61..0e7903fd06a 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -29,3 +29,4 @@ internal struct List: Codable, Hashable { try container.encodeIfPresent(_123list, forKey: ._123list) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index cee2c1dc24f..748bc6781a5 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -45,3 +45,4 @@ internal struct MapTest: Codable, Hashable { try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index ef916b0d877..68ef87daf00 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -37,3 +37,4 @@ internal struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(map, forKey: .map) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 6a6ff7664b9..dad6079ddb2 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -34,3 +34,4 @@ internal struct Model200Response: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index 5e4345bb54a..2a842bf54aa 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -42,3 +42,4 @@ internal struct Name: Codable, Hashable { try container.encodeIfPresent(_123number, forKey: ._123number) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 0a36afc7855..36cf8d164bd 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -29,3 +29,4 @@ internal struct NumberOnly: Codable, Hashable { try container.encodeIfPresent(justNumber, forKey: .justNumber) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index bb0eb5c601f..45046f9a00f 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -55,3 +55,4 @@ internal struct Order: Codable, Hashable { try container.encodeIfPresent(complete, forKey: .complete) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 3b41213b30f..082cdebd26c 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -37,3 +37,4 @@ internal struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 833730ac896..8c77a382e8f 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -55,3 +55,4 @@ internal struct Pet: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index d0a73f836f7..e8961d9d8a8 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -33,3 +33,4 @@ internal struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(baz, forKey: .baz) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 9b2e502be39..7a2e2da47f8 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -30,3 +30,4 @@ internal struct Return: Codable, Hashable { try container.encodeIfPresent(_return, forKey: ._return) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index f77f26ce88c..2c3d25c5bbb 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -29,3 +29,4 @@ internal struct SpecialModelName: Codable, Hashable { try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index a0f5dc1082e..4b76e50cece 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -49,3 +49,4 @@ internal struct StringBooleanMap: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index 866911641d0..810603ff0b5 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -33,3 +33,4 @@ internal struct Tag: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 3b3d4c7387a..4a71a601e1b 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -45,3 +45,4 @@ internal struct TypeHolderDefault: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 2ca47db911d..71cdf9ee1ea 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -45,3 +45,4 @@ internal struct TypeHolderExample: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 4f1504516ba..57017c341e7 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -58,3 +58,4 @@ internal struct User: Codable, Hashable { try container.encodeIfPresent(userStatus, forKey: .userStatus) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs.swift index 01bc6ff0d8d..941c61b713a 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,8 +11,8 @@ public typealias PetstoreClientAPI = PetstoreClient open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" - public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] + public static var credential: URLCredential? public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() public static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 440c9b339a7..932d46d6ace 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif @objc open class AnotherFakeAPI : NSObject { + /** To test special tags @@ -50,5 +54,4 @@ import Foundation return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 4d94d2c6913..81f62a73feb 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif @objc open class FakeAPI : NSObject { + /** - parameter body: (body) Input boolean as post body (optional) @@ -680,5 +684,4 @@ import Foundation return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 36099b5f1a3..7f3651400e4 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif @objc open class FakeClassnameTags123API : NSObject { + /** To test class name in snake case @@ -53,5 +57,4 @@ import Foundation return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 1bdfc19cd71..8797c88211e 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif @objc open class PetAPI : NSObject { + /** Add a new pet to the store @@ -479,5 +483,4 @@ import Foundation return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 4acac5ebd4f..30856f73a3d 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif @objc open class StoreAPI : NSObject { + /** Delete purchase order by ID @@ -185,5 +189,4 @@ import Foundation return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index fb331f2a38d..d66abcb14bf 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif @objc open class UserAPI : NSObject { + /** Create user @@ -362,5 +366,4 @@ import Foundation return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Configuration.swift index 18edabbed78..8fb05331889 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Configuration.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -7,6 +7,7 @@ import Foundation open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 3b250581cc1..1421cb642ee 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -33,3 +33,4 @@ import AnyCodable try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index c8bc6f8fd9b..d60621e7bf6 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -33,3 +33,4 @@ import AnyCodable try container.encodeIfPresent(color, forKey: .color) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 9feb0336458..1b42b26535c 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -42,3 +42,4 @@ import AnyCodable try container.encodeIfPresent(message, forKey: .message) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index acab776dfa1..08aca8598d0 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ import AnyCodable try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index d44e23a7567..e8114a8f45e 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ import AnyCodable try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 2ed77dba0af..be0dea61b91 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -37,3 +37,4 @@ import AnyCodable try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index c7c00b23f7c..6f137adc91f 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -50,3 +50,4 @@ import AnyCodable try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 9f34145e79f..60eccac9412 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -42,3 +42,4 @@ import AnyCodable try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 32fe1b1e59f..cce886558e8 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -34,3 +34,4 @@ import AnyCodable try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index fd5f886af43..c8e542ad6b5 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -38,3 +38,4 @@ import AnyCodable try container.encode(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 10b0983599d..6bc90a989bd 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -30,3 +30,4 @@ import AnyCodable try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index c6f66fc19cb..a3585de4f0d 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -29,3 +29,4 @@ import AnyCodable try container.encodeIfPresent(client, forKey: .client) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index baaa824e4e1..2b060c8ad38 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -37,3 +37,4 @@ import AnyCodable try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 8e4ca318581..d92db038ca4 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -29,3 +29,4 @@ import AnyCodable try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 317ec4f8628..1269cb72e27 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -41,3 +41,4 @@ import AnyCodable try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 39f68239e4d..066d266386b 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -63,3 +63,4 @@ import AnyCodable try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/File.swift index b1f58093b02..b175f6370d2 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -31,3 +31,4 @@ import AnyCodable try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index c766f63637d..24a6e66432b 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -33,3 +33,4 @@ import AnyCodable try container.encodeIfPresent(files, forKey: .files) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 70920c84fa8..413656ff25e 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -102,3 +102,4 @@ import AnyCodable try container.encode(password, forKey: .password) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index f491a19800e..eac4a144616 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -33,3 +33,4 @@ import AnyCodable try container.encodeIfPresent(foo, forKey: .foo) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/List.swift index baad1d10fe0..f48559c0c45 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -29,3 +29,4 @@ import AnyCodable try container.encodeIfPresent(_123list, forKey: ._123list) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index b095210c3f6..68a3e128cc2 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -45,3 +45,4 @@ import AnyCodable try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index d3b66777924..1594ac4a26a 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -37,3 +37,4 @@ import AnyCodable try container.encodeIfPresent(map, forKey: .map) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 6abc550286b..dfae9880b13 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -39,3 +39,4 @@ import AnyCodable try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index 1544a22cda5..3b41f3cafd9 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -52,3 +52,4 @@ import AnyCodable try container.encodeIfPresent(_123number, forKey: ._123number) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 9e5280165f9..b828f6d3b47 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -29,3 +29,4 @@ import AnyCodable try container.encodeIfPresent(justNumber, forKey: .justNumber) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index d04a6cdab99..27237e43da7 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -75,3 +75,4 @@ import AnyCodable try container.encodeIfPresent(complete, forKey: .complete) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 6521635743e..bbc4536d428 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -42,3 +42,4 @@ import AnyCodable try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 1339931a073..a59ef82eb80 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -60,3 +60,4 @@ import AnyCodable try container.encodeIfPresent(status, forKey: .status) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 7d3b2e5c9b3..8aef5456332 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -33,3 +33,4 @@ import AnyCodable try container.encodeIfPresent(baz, forKey: .baz) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index aa7cae02016..f497fdc7e09 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -35,3 +35,4 @@ import AnyCodable try container.encodeIfPresent(_return, forKey: ._return) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index c2ba68d894c..8a5860ae0b9 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -34,3 +34,4 @@ import AnyCodable try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 9ca13a19d8e..4708c93daa0 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -49,3 +49,4 @@ import AnyCodable additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index de3f7c181c4..6150ef4895f 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -38,3 +38,4 @@ import AnyCodable try container.encodeIfPresent(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 4882236d3e1..27408db6f27 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -45,3 +45,4 @@ import AnyCodable try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 17dfc262df3..61c7c8b4fb4 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -45,3 +45,4 @@ import AnyCodable try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 8b9ef462778..3c71f76aab0 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -68,3 +68,4 @@ import AnyCodable try container.encodeIfPresent(userStatus, forKey: .userStatus) } } + diff --git a/samples/client/petstore/swift5/oneOf/Package.resolved b/samples/client/petstore/swift5/oneOf/Package.resolved new file mode 100644 index 00000000000..d384b276b4b --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs.swift index 7935d8a9fa6..ed13fa3738a 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,8 +11,8 @@ public typealias PetstoreClientAPI = PetstoreClient open class PetstoreClient { public static var basePath = "http://localhost" - public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] + public static var credential: URLCredential? public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() public static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift index 5e6a278c0d0..6d18703c99e 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class DefaultAPI { + /** - parameter apiResponseQueue: The queue on which api response is dispatched. @@ -45,5 +49,4 @@ open class DefaultAPI { return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Configuration.swift index 18edabbed78..8fb05331889 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Configuration.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -7,6 +7,7 @@ import Foundation open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Apple.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Apple.swift index 17495d47fd3..ee0b5786ef1 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Apple.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Apple.swift @@ -29,3 +29,4 @@ public struct Apple: Codable, Hashable { try container.encodeIfPresent(kind, forKey: .kind) } } + diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Banana.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Banana.swift index c0a23db0b1c..1ad6e976a7e 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Banana.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models/Banana.swift @@ -29,3 +29,4 @@ public struct Banana: Codable, Hashable { try container.encodeIfPresent(count, forKey: .count) } } + diff --git a/samples/client/petstore/swift5/oneOf/pom.xml b/samples/client/petstore/swift5/oneOf/pom.xml new file mode 100644 index 00000000000..c1b201eb3b4 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + io.swagger + Swift5PetstoreClientTests + pom + 1.0-SNAPSHOT + Swift5 Swagger Petstore Client + + + + maven-dependency-plugin + + + package + + copy-dependencies + + + ${project.build.directory} + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + xcodebuild-test + integration-test + + exec + + + ./run_spmbuild.sh + + + + + + + diff --git a/samples/client/petstore/swift5/oneOf/run_spmbuild.sh b/samples/client/petstore/swift5/oneOf/run_spmbuild.sh new file mode 100755 index 00000000000..1a9f585ad05 --- /dev/null +++ b/samples/client/petstore/swift5/oneOf/run_spmbuild.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +swift build && exit ${PIPESTATUS[0]} diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift index 01bc6ff0d8d..941c61b713a 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,8 +11,8 @@ public typealias PetstoreClientAPI = PetstoreClient open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" - public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] + public static var credential: URLCredential? public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() public static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 72ecfdc6f76..55126ff4f11 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -7,8 +7,12 @@ import Foundation import PromiseKit +#if canImport(AnyCodable) +import AnyCodable +#endif open class AnotherFakeAPI { + /** To test special tags @@ -53,5 +57,4 @@ open class AnotherFakeAPI { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 89d44314c53..23e4ba9c8f5 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -7,8 +7,12 @@ import Foundation import PromiseKit +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeAPI { + /** - parameter body: (body) Input boolean as post body (optional) @@ -705,5 +709,4 @@ open class FakeAPI { return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 5cd88bffeae..52d394026e2 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -7,8 +7,12 @@ import Foundation import PromiseKit +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeClassnameTags123API { + /** To test class name in snake case @@ -56,5 +60,4 @@ open class FakeClassnameTags123API { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 2ca6128ac8d..eabaa59872a 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -7,8 +7,12 @@ import Foundation import PromiseKit +#if canImport(AnyCodable) +import AnyCodable +#endif open class PetAPI { + /** Add a new pet to the store @@ -498,5 +502,4 @@ open class PetAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 2a877b9fb57..8376ab9883e 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -7,8 +7,12 @@ import Foundation import PromiseKit +#if canImport(AnyCodable) +import AnyCodable +#endif open class StoreAPI { + /** Delete purchase order by ID @@ -194,5 +198,4 @@ open class StoreAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 6b12f6a0b09..1d9a3e6a443 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -7,8 +7,12 @@ import Foundation import PromiseKit +#if canImport(AnyCodable) +import AnyCodable +#endif open class UserAPI { + /** Create user @@ -379,5 +383,4 @@ open class UserAPI { return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift index 18edabbed78..8fb05331889 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -7,6 +7,7 @@ import Foundation open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 61a478de142..621afb93561 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -33,3 +33,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 157cca1d227..cdd4f5335b9 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -33,3 +33,4 @@ public struct Animal: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 8607cbef1a3..c365505ab9d 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -37,3 +37,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(message, forKey: .message) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index f3f161b44c1..226f7456181 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index d62de957472..39831127871 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 360d50d027f..8865d76bef2 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -37,3 +37,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index f0781a9cb73..71cd93bce5f 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -50,3 +50,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index d5519760387..457e04bd475 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -37,3 +37,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8312680deb3..8caebb1c206 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -29,3 +29,4 @@ public struct CatAllOf: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 398da60aa73..89016ca353d 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -33,3 +33,4 @@ public struct Category: Codable, Hashable { try container.encode(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 03bf63e4cad..16e69e560bd 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -30,3 +30,4 @@ public struct ClassModel: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 59604878043..60dbc5dc5c1 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -29,3 +29,4 @@ public struct Client: Codable, Hashable { try container.encodeIfPresent(client, forKey: .client) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 4ada3ceb605..658732a7f36 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -37,3 +37,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index f6c3d287301..82b0dedf35b 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -29,3 +29,4 @@ public struct DogAllOf: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 0e0aad42abe..1d8ce99539c 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -41,3 +41,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 9e44926be9b..8c8bca49774 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -63,3 +63,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 11694b2ca59..05dd5b1a825 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -31,3 +31,4 @@ public struct File: Codable, Hashable { try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 6aa85d8eecf..3ca66a31359 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -33,3 +33,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(files, forKey: .files) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 114c884efc5..a7a4b39e720 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -77,3 +77,4 @@ public struct FormatTest: Codable, Hashable { try container.encode(password, forKey: .password) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index cb1a7456a7d..54ed8a723c6 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -33,3 +33,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(foo, forKey: .foo) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8ecdd3b0233..67e3048469f 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -29,3 +29,4 @@ public struct List: Codable, Hashable { try container.encodeIfPresent(_123list, forKey: ._123list) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 0ff74ed8400..1e728fcdf58 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -45,3 +45,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index 58a0a54ca09..c79ca459217 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -37,3 +37,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(map, forKey: .map) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 0f59769954f..23402143f71 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -34,3 +34,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index d88c94f05c9..a28f46a33ce 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -42,3 +42,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(_123number, forKey: ._123number) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 0f05482b9b7..87ceb64bb97 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -29,3 +29,4 @@ public struct NumberOnly: Codable, Hashable { try container.encodeIfPresent(justNumber, forKey: .justNumber) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 100d6b71fed..e2eeced4c57 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -55,3 +55,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(complete, forKey: .complete) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 15a4e4a15b6..edeaccaeaa6 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -37,3 +37,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index a87ab825ea0..ddd1186b891 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -55,3 +55,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 6426deedf63..57ba3f577c8 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -33,3 +33,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(baz, forKey: .baz) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 777c241bc0c..afc2b51f8f3 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -30,3 +30,4 @@ public struct Return: Codable, Hashable { try container.encodeIfPresent(_return, forKey: ._return) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index b677523a749..bfe9723f888 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -29,3 +29,4 @@ public struct SpecialModelName: Codable, Hashable { try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index f575c9df65c..126c35c85a6 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -49,3 +49,4 @@ public struct StringBooleanMap: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index cd5acc827db..07b826264f3 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -33,3 +33,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 341c9b4b8c2..e58eecd960f 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -45,3 +45,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 04166af0895..6c22fdbae7a 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -45,3 +45,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 9f3ded8fcd9..7afe359ae40 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -58,3 +58,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(userStatus, forKey: .userStatus) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/Package.resolved b/samples/client/petstore/swift5/readonlyProperties/Package.resolved new file mode 100644 index 00000000000..d384b276b4b --- /dev/null +++ b/samples/client/petstore/swift5/readonlyProperties/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs.swift index 01bc6ff0d8d..941c61b713a 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,8 +11,8 @@ public typealias PetstoreClientAPI = PetstoreClient open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" - public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] + public static var credential: URLCredential? public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() public static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 542fb6f69ba..7d09ab30c12 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class AnotherFakeAPI { + /** To test special tags @@ -50,5 +54,4 @@ open class AnotherFakeAPI { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 9b75edc92ee..5480213e38d 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeAPI { + /** - parameter body: (body) Input boolean as post body (optional) @@ -680,5 +684,4 @@ open class FakeAPI { return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index fd7d845d340..9683e0ce5b1 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeClassnameTags123API { + /** To test class name in snake case @@ -53,5 +57,4 @@ open class FakeClassnameTags123API { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index d7d5bdfa2ea..8cbd15364b6 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class PetAPI { + /** Add a new pet to the store @@ -479,5 +483,4 @@ open class PetAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index c80d4286b53..a83e954ae6a 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class StoreAPI { + /** Delete purchase order by ID @@ -185,5 +189,4 @@ open class StoreAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 542dc212bd1..dbff6ade41c 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class UserAPI { + /** Create user @@ -362,5 +366,4 @@ open class UserAPI { return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Configuration.swift index 18edabbed78..8fb05331889 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Configuration.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -7,6 +7,7 @@ import Foundation open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 55e1a850f06..34f35d9b4c9 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -33,3 +33,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 3fded4244c3..14bb2bd2fe0 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -33,3 +33,4 @@ public struct Animal: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 1522485099c..acaac402ef4 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -37,3 +37,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(message, forKey: .message) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index d754b57dd07..d8ef19116b8 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index 261f521a2e3..949077533e9 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index e68cd879f6c..6135c1556a2 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -37,3 +37,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index d449c5890d1..6353bd4d8a8 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -50,3 +50,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 3ddf9bee2fd..834c51d9152 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -37,3 +37,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 40685ac1a16..b227089dc4f 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -29,3 +29,4 @@ public struct CatAllOf: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index da9e51d2a51..1413c58141e 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -33,3 +33,4 @@ public struct Category: Codable, Hashable { try container.encode(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index c6984e27050..73b8414f342 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -30,3 +30,4 @@ public struct ClassModel: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index a08ef9f5ba4..364b58f1c4e 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -29,3 +29,4 @@ public struct Client: Codable, Hashable { try container.encodeIfPresent(client, forKey: .client) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index efe8988d381..849fbfed745 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -37,3 +37,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 1d1f8ca7db9..527edd845c4 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -29,3 +29,4 @@ public struct DogAllOf: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index d8e15faf3a3..1a79ffe95b1 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -41,3 +41,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index ca412e06fe1..c097933904b 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -63,3 +63,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 1c9a0f33ee8..c5ebbaf2f4f 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -31,3 +31,4 @@ public struct File: Codable, Hashable { try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 50304fe594a..c04b1dccf76 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -33,3 +33,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(files, forKey: .files) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index bf2d4131948..65bb0ca0842 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -77,3 +77,4 @@ public struct FormatTest: Codable, Hashable { try container.encode(password, forKey: .password) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index ee6bd8280bd..e8216047d6e 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -33,3 +33,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(foo, forKey: .foo) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 41a0eacd2ac..1269b40251d 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -29,3 +29,4 @@ public struct List: Codable, Hashable { try container.encodeIfPresent(_123list, forKey: ._123list) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 27e27b36d0f..19f258d2929 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -45,3 +45,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index 306c8adeaa3..2dd49ab0212 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -37,3 +37,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(map, forKey: .map) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 233fa7656ab..9080e5c382f 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -34,3 +34,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index c1fda99c0c7..0280404c044 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -42,3 +42,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(_123number, forKey: ._123number) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 5526fc2fbf2..36be35a0533 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -29,3 +29,4 @@ public struct NumberOnly: Codable, Hashable { try container.encodeIfPresent(justNumber, forKey: .justNumber) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index c79bc3f02d3..bda67408a9d 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -55,3 +55,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(complete, forKey: .complete) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index c69f16e2a88..d8e7469f99a 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -37,3 +37,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index 46f5919b6b7..f4f7928e77e 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -55,3 +55,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 249d7691c21..6b80302150a 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -33,3 +33,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(baz, forKey: .baz) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 23e8e52f6e5..ca4883d9251 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -30,3 +30,4 @@ public struct Return: Codable, Hashable { try container.encodeIfPresent(_return, forKey: ._return) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index 8a12be510ab..66b8f4d69ff 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -29,3 +29,4 @@ public struct SpecialModelName: Codable, Hashable { try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 19103698f9a..11a5a854895 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -49,3 +49,4 @@ public struct StringBooleanMap: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index e3d44bf635f..2af3e2f0698 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -33,3 +33,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 575466ee7d5..125a63b0ed3 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -45,3 +45,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index ba22b15d848..3aa1851a585 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -45,3 +45,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 33cb2a06044..4af156b9bac 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -58,3 +58,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(userStatus, forKey: .userStatus) } } + diff --git a/samples/client/petstore/swift5/readonlyProperties/pom.xml b/samples/client/petstore/swift5/readonlyProperties/pom.xml new file mode 100644 index 00000000000..c1b201eb3b4 --- /dev/null +++ b/samples/client/petstore/swift5/readonlyProperties/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + io.swagger + Swift5PetstoreClientTests + pom + 1.0-SNAPSHOT + Swift5 Swagger Petstore Client + + + + maven-dependency-plugin + + + package + + copy-dependencies + + + ${project.build.directory} + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + xcodebuild-test + integration-test + + exec + + + ./run_spmbuild.sh + + + + + + + diff --git a/samples/client/petstore/swift5/readonlyProperties/run_spmbuild.sh b/samples/client/petstore/swift5/readonlyProperties/run_spmbuild.sh new file mode 100755 index 00000000000..1a9f585ad05 --- /dev/null +++ b/samples/client/petstore/swift5/readonlyProperties/run_spmbuild.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +swift build && exit ${PIPESTATUS[0]} diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift index 01bc6ff0d8d..941c61b713a 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,8 +11,8 @@ public typealias PetstoreClientAPI = PetstoreClient open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" - public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] + public static var credential: URLCredential? public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() public static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index f2f733281fc..cae5f3f349a 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class AnotherFakeAPI { + /** To test special tags @@ -50,5 +54,4 @@ open class AnotherFakeAPI { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 180df7841ae..6a9229f32eb 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeAPI { + /** - parameter body: (body) Input boolean as post body (optional) @@ -680,5 +684,4 @@ open class FakeAPI { return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 161b2c3f758..2f693b327d4 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeClassnameTags123API { + /** To test class name in snake case @@ -53,5 +57,4 @@ open class FakeClassnameTags123API { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 23e7fc21b70..6dafda832a6 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class PetAPI { + /** Add a new pet to the store @@ -479,5 +483,4 @@ open class PetAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index ccdb44bf803..273ca0423a6 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class StoreAPI { + /** Delete purchase order by ID @@ -185,5 +189,4 @@ open class StoreAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index ea100babfca..62c9dd6e3cb 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class UserAPI { + /** Create user @@ -362,5 +366,4 @@ open class UserAPI { return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift index 18edabbed78..8fb05331889 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -7,6 +7,7 @@ import Foundation open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 61a478de142..621afb93561 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -33,3 +33,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 157cca1d227..cdd4f5335b9 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -33,3 +33,4 @@ public struct Animal: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 8607cbef1a3..c365505ab9d 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -37,3 +37,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(message, forKey: .message) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index f3f161b44c1..226f7456181 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index d62de957472..39831127871 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 360d50d027f..8865d76bef2 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -37,3 +37,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index f0781a9cb73..71cd93bce5f 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -50,3 +50,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index d5519760387..457e04bd475 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -37,3 +37,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8312680deb3..8caebb1c206 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -29,3 +29,4 @@ public struct CatAllOf: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 398da60aa73..89016ca353d 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -33,3 +33,4 @@ public struct Category: Codable, Hashable { try container.encode(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 03bf63e4cad..16e69e560bd 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -30,3 +30,4 @@ public struct ClassModel: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 59604878043..60dbc5dc5c1 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -29,3 +29,4 @@ public struct Client: Codable, Hashable { try container.encodeIfPresent(client, forKey: .client) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 4ada3ceb605..658732a7f36 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -37,3 +37,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index f6c3d287301..82b0dedf35b 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -29,3 +29,4 @@ public struct DogAllOf: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 0e0aad42abe..1d8ce99539c 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -41,3 +41,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 9e44926be9b..8c8bca49774 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -63,3 +63,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 11694b2ca59..05dd5b1a825 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -31,3 +31,4 @@ public struct File: Codable, Hashable { try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 6aa85d8eecf..3ca66a31359 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -33,3 +33,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(files, forKey: .files) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 114c884efc5..a7a4b39e720 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -77,3 +77,4 @@ public struct FormatTest: Codable, Hashable { try container.encode(password, forKey: .password) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index cb1a7456a7d..54ed8a723c6 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -33,3 +33,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(foo, forKey: .foo) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8ecdd3b0233..67e3048469f 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -29,3 +29,4 @@ public struct List: Codable, Hashable { try container.encodeIfPresent(_123list, forKey: ._123list) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 0ff74ed8400..1e728fcdf58 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -45,3 +45,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index 58a0a54ca09..c79ca459217 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -37,3 +37,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(map, forKey: .map) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 0f59769954f..23402143f71 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -34,3 +34,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index d88c94f05c9..a28f46a33ce 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -42,3 +42,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(_123number, forKey: ._123number) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 0f05482b9b7..87ceb64bb97 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -29,3 +29,4 @@ public struct NumberOnly: Codable, Hashable { try container.encodeIfPresent(justNumber, forKey: .justNumber) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 100d6b71fed..e2eeced4c57 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -55,3 +55,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(complete, forKey: .complete) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 15a4e4a15b6..edeaccaeaa6 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -37,3 +37,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index a87ab825ea0..ddd1186b891 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -55,3 +55,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 6426deedf63..57ba3f577c8 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -33,3 +33,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(baz, forKey: .baz) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 777c241bc0c..afc2b51f8f3 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -30,3 +30,4 @@ public struct Return: Codable, Hashable { try container.encodeIfPresent(_return, forKey: ._return) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index b677523a749..bfe9723f888 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -29,3 +29,4 @@ public struct SpecialModelName: Codable, Hashable { try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index f575c9df65c..126c35c85a6 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -49,3 +49,4 @@ public struct StringBooleanMap: Codable, Hashable { additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index cd5acc827db..07b826264f3 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -33,3 +33,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 341c9b4b8c2..e58eecd960f 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -45,3 +45,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 04166af0895..6c22fdbae7a 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -45,3 +45,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 9f3ded8fcd9..7afe359ae40 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -58,3 +58,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(userStatus, forKey: .userStatus) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift index 01bc6ff0d8d..941c61b713a 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,8 +11,8 @@ public typealias PetstoreClientAPI = PetstoreClient open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" - public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] + public static var credential: URLCredential? public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() public static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index d46906177c8..53feaab19c9 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -7,8 +7,12 @@ import Foundation import RxSwift +#if canImport(AnyCodable) +import AnyCodable +#endif open class AnotherFakeAPI { + /** To test special tags @@ -55,5 +59,4 @@ open class AnotherFakeAPI { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index abf1a1b7f5d..6e93b4da9c3 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -7,8 +7,12 @@ import Foundation import RxSwift +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeAPI { + /** - parameter body: (body) Input boolean as post body (optional) @@ -729,5 +733,4 @@ open class FakeAPI { return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 4e4de2bab77..698c1ea36e6 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -7,8 +7,12 @@ import Foundation import RxSwift +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeClassnameTags123API { + /** To test class name in snake case @@ -58,5 +62,4 @@ open class FakeClassnameTags123API { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index a51e91c1f0e..a94255d6337 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -7,8 +7,12 @@ import Foundation import RxSwift +#if canImport(AnyCodable) +import AnyCodable +#endif open class PetAPI { + /** Add a new pet to the store @@ -516,5 +520,4 @@ open class PetAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 9343800cddb..6a771cae237 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -7,8 +7,12 @@ import Foundation import RxSwift +#if canImport(AnyCodable) +import AnyCodable +#endif open class StoreAPI { + /** Delete purchase order by ID @@ -202,5 +206,4 @@ open class StoreAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 2e9dac80ae3..a268b55cc45 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -7,8 +7,12 @@ import Foundation import RxSwift +#if canImport(AnyCodable) +import AnyCodable +#endif open class UserAPI { + /** Create user @@ -395,5 +399,4 @@ open class UserAPI { return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift index 18edabbed78..8fb05331889 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -7,6 +7,7 @@ import Foundation open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 61a478de142..621afb93561 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -33,3 +33,4 @@ public struct AdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index 157cca1d227..cdd4f5335b9 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -33,3 +33,4 @@ public struct Animal: Codable, Hashable { try container.encodeIfPresent(color, forKey: .color) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 8607cbef1a3..c365505ab9d 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -37,3 +37,4 @@ public struct ApiResponse: Codable, Hashable { try container.encodeIfPresent(message, forKey: .message) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index f3f161b44c1..226f7456181 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index d62de957472..39831127871 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfNumberOnly: Codable, Hashable { try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 360d50d027f..8865d76bef2 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -37,3 +37,4 @@ public struct ArrayTest: Codable, Hashable { try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index f0781a9cb73..71cd93bce5f 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -50,3 +50,4 @@ public struct Capitalization: Codable, Hashable { try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index d5519760387..457e04bd475 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -37,3 +37,4 @@ public struct Cat: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index 8312680deb3..8caebb1c206 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -29,3 +29,4 @@ public struct CatAllOf: Codable, Hashable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 398da60aa73..89016ca353d 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -33,3 +33,4 @@ public struct Category: Codable, Hashable { try container.encode(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index 761eb4f866e..6a72957b687 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -30,3 +30,4 @@ public struct ClassModel: Codable, Hashable { try container.encodeIfPresent(`class`, forKey: .`class`) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 59604878043..60dbc5dc5c1 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -29,3 +29,4 @@ public struct Client: Codable, Hashable { try container.encodeIfPresent(client, forKey: .client) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 4ada3ceb605..658732a7f36 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -37,3 +37,4 @@ public struct Dog: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index f6c3d287301..82b0dedf35b 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -29,3 +29,4 @@ public struct DogAllOf: Codable, Hashable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 0e0aad42abe..1d8ce99539c 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -41,3 +41,4 @@ public struct EnumArrays: Codable, Hashable { try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index 9e44926be9b..8c8bca49774 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -63,3 +63,4 @@ public struct EnumTest: Codable, Hashable { try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 11694b2ca59..05dd5b1a825 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -31,3 +31,4 @@ public struct File: Codable, Hashable { try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 6aa85d8eecf..3ca66a31359 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -33,3 +33,4 @@ public struct FileSchemaTestClass: Codable, Hashable { try container.encodeIfPresent(files, forKey: .files) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index 114c884efc5..a7a4b39e720 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -77,3 +77,4 @@ public struct FormatTest: Codable, Hashable { try container.encode(password, forKey: .password) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index cb1a7456a7d..54ed8a723c6 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -33,3 +33,4 @@ public struct HasOnlyReadOnly: Codable, Hashable { try container.encodeIfPresent(foo, forKey: .foo) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift index 8ecdd3b0233..67e3048469f 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -29,3 +29,4 @@ public struct List: Codable, Hashable { try container.encodeIfPresent(_123list, forKey: ._123list) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index 0ff74ed8400..1e728fcdf58 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -45,3 +45,4 @@ public struct MapTest: Codable, Hashable { try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index 58a0a54ca09..c79ca459217 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -37,3 +37,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashable { try container.encodeIfPresent(map, forKey: .map) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index e5906f84436..7d15d45c21a 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -34,3 +34,4 @@ public struct Model200Response: Codable, Hashable { try container.encodeIfPresent(`class`, forKey: .`class`) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index d88c94f05c9..a28f46a33ce 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -42,3 +42,4 @@ public struct Name: Codable, Hashable { try container.encodeIfPresent(_123number, forKey: ._123number) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 0f05482b9b7..87ceb64bb97 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -29,3 +29,4 @@ public struct NumberOnly: Codable, Hashable { try container.encodeIfPresent(justNumber, forKey: .justNumber) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index 100d6b71fed..e2eeced4c57 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -55,3 +55,4 @@ public struct Order: Codable, Hashable { try container.encodeIfPresent(complete, forKey: .complete) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 15a4e4a15b6..edeaccaeaa6 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -37,3 +37,4 @@ public struct OuterComposite: Codable, Hashable { try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index a87ab825ea0..ddd1186b891 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -55,3 +55,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index 6426deedf63..57ba3f577c8 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -33,3 +33,4 @@ public struct ReadOnlyFirst: Codable, Hashable { try container.encodeIfPresent(baz, forKey: .baz) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index 268ce3bfee0..bda0c791d83 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -30,3 +30,4 @@ public struct Return: Codable, Hashable { try container.encodeIfPresent(`return`, forKey: .`return`) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index b677523a749..bfe9723f888 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -29,3 +29,4 @@ public struct SpecialModelName: Codable, Hashable { try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index eb3882d7c2a..2edf881a8f0 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -22,3 +22,4 @@ public struct StringBooleanMap: Codable, Hashable { var container = encoder.container(keyedBy: CodingKeys.self) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index cd5acc827db..07b826264f3 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -33,3 +33,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index 341c9b4b8c2..e58eecd960f 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -45,3 +45,4 @@ public struct TypeHolderDefault: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 04166af0895..6c22fdbae7a 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -45,3 +45,4 @@ public struct TypeHolderExample: Codable, Hashable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift index 9f3ded8fcd9..7afe359ae40 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -58,3 +58,4 @@ public struct User: Codable, Hashable { try container.encodeIfPresent(userStatus, forKey: .userStatus) } } + diff --git a/samples/client/petstore/swift5/swift5_test_all.sh b/samples/client/petstore/swift5/swift5_test_all.sh index 153b5cfbc07..0b5ef4780b5 100755 --- a/samples/client/petstore/swift5/swift5_test_all.sh +++ b/samples/client/petstore/swift5/swift5_test_all.sh @@ -6,21 +6,25 @@ DIRECTORY=`dirname $0` # example project with unit tests # temporarily commment them because they are flaky +# mvn -f $DIRECTORY/alamofireLibrary/SwaggerClientTests/pom.xml integration-test +# mvn -f $DIRECTORY/combineLibrary/SwaggerClientTests/pom.xml integration-test # mvn -f $DIRECTORY/default/SwaggerClientTests/pom.xml integration-test # mvn -f $DIRECTORY/promisekitLibrary/SwaggerClientTests/pom.xml integration-test # mvn -f $DIRECTORY/rxswiftLibrary/SwaggerClientTests/pom.xml integration-test # mvn -f $DIRECTORY/urlsessionLibrary/SwaggerClientTests/pom.xml integration-test -# mvn -f $DIRECTORY/alamofireLibrary/SwaggerClientTests/pom.xml integration-test -# mvn -f $DIRECTORY/combineLibrary/SwaggerClientTests/pom.xml integration-test # spm build +mvn -f $DIRECTORY/alamofireLibrary/pom.xml integration-test +mvn -f $DIRECTORY/combineLibrary/pom.xml integration-test mvn -f $DIRECTORY/default/pom.xml integration-test +mvn -f $DIRECTORY/deprecated/pom.xml integration-test mvn -f $DIRECTORY/nonPublicApi/pom.xml integration-test mvn -f $DIRECTORY/objcCompatible/pom.xml integration-test +mvn -f $DIRECTORY/oneOf/pom.xml integration-test mvn -f $DIRECTORY/promisekitLibrary/pom.xml integration-test +mvn -f $DIRECTORY/readonlyProperties/pom.xml integration-test mvn -f $DIRECTORY/resultLibrary/pom.xml integration-test mvn -f $DIRECTORY/rxswiftLibrary/pom.xml integration-test mvn -f $DIRECTORY/urlsessionLibrary/pom.xml integration-test -mvn -f $DIRECTORY/alamofireLibrary/pom.xml integration-test -mvn -f $DIRECTORY/combineLibrary/pom.xml integration-test -mvn -f $DIRECTORY/deprecated/pom.xml integration-test +mvn -f $DIRECTORY/vaporLibrary/pom.xml integration-test +mvn -f $DIRECTORY/x-swift-hashable/pom.xml integration-test diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs.swift index 01bc6ff0d8d..941c61b713a 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs.swift @@ -11,8 +11,8 @@ public typealias PetstoreClientAPI = PetstoreClient open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" - public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] + public static var credential: URLCredential? public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() public static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift index cce6d705d43..978e6ba041c 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift @@ -6,11 +6,15 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif extension PetstoreClient { open class AnotherFakeAPI { + /** To test special tags @@ -53,6 +57,5 @@ open class AnotherFakeAPI { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift index dbe358912cb..3ddcead03e4 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift @@ -6,11 +6,15 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif extension PetstoreClient { open class FakeAPI { + /** - parameter body: (body) Input boolean as post body (optional) @@ -683,6 +687,5 @@ open class FakeAPI { return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift index a8bfc8b0546..e22de1f00c8 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift @@ -6,11 +6,15 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif extension PetstoreClient { open class FakeClassnameTags123API { + /** To test class name in snake case @@ -56,6 +60,5 @@ open class FakeClassnameTags123API { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/PetAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/PetAPI.swift index ea664ec3af4..52289b62b56 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/PetAPI.swift @@ -6,11 +6,15 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif extension PetstoreClient { open class PetAPI { + /** Add a new pet to the store @@ -482,6 +486,5 @@ open class PetAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift index 6c53077c654..19993eaff1e 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift @@ -6,11 +6,15 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif extension PetstoreClient { open class StoreAPI { + /** Delete purchase order by ID @@ -188,6 +192,5 @@ open class StoreAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/UserAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/UserAPI.swift index 1b09adafcfb..9e0ae01d871 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/UserAPI.swift @@ -6,11 +6,15 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif extension PetstoreClient { open class UserAPI { + /** Create user @@ -365,6 +369,5 @@ open class UserAPI { return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Configuration.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Configuration.swift index 2ad2048e74c..410882590eb 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Configuration.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Configuration.swift @@ -11,9 +11,11 @@ public typealias Configuration = PetstoreClient.Configuration extension PetstoreClient { open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") public static var dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" } } + diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift index 1baefca5943..7f5b6a45ade 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift @@ -50,4 +50,5 @@ public final class AdditionalPropertiesClass: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift index bb576872813..24b111486de 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Animal.swift @@ -50,4 +50,5 @@ public final class Animal: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift index 7682a7cb7f9..d6e874cad6c 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ApiResponse.swift @@ -56,4 +56,5 @@ public final class ApiResponse: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift index 42b106c6f61..46175c0b05e 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift @@ -44,4 +44,5 @@ public final class ArrayOfArrayOfNumberOnly: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift index 13a415a4469..240989ed68e 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift @@ -44,4 +44,5 @@ public final class ArrayOfNumberOnly: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift index 943c193458c..fc774738102 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ArrayTest.swift @@ -56,4 +56,5 @@ public final class ArrayTest: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift index d72936f45ac..2c3e64811a3 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Capitalization.swift @@ -75,4 +75,5 @@ public final class Capitalization: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift index 5ba88eae81c..16834ea68f4 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Cat.swift @@ -56,4 +56,5 @@ public final class Cat: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift index 4437f05ec8c..15b96135e89 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/CatAllOf.swift @@ -44,4 +44,5 @@ public final class CatAllOf: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift index 4cd6f0940b0..f0427d76d28 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Category.swift @@ -50,4 +50,5 @@ public final class Category: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift index ebba6acf1f3..ff0539ba0b5 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ClassModel.swift @@ -45,4 +45,5 @@ public final class ClassModel: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift index d671608ac8e..effc6525144 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Client.swift @@ -44,4 +44,5 @@ public final class Client: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift index a506fe02097..ccab17d0209 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Dog.swift @@ -56,4 +56,5 @@ public final class Dog: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift index ea53f2f14e1..20b02ab06b7 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/DogAllOf.swift @@ -44,4 +44,5 @@ public final class DogAllOf: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift index 82a858e1250..a1eb07aa955 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumArrays.swift @@ -58,4 +58,5 @@ public final class EnumArrays: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift index dc229bc0108..4b39f2161f1 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/EnumTest.swift @@ -86,4 +86,5 @@ public final class EnumTest: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift index 0e8e00f2e4e..ad1922e129b 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/File.swift @@ -46,4 +46,5 @@ public final class File: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift index 3eaf14887a6..523b2bab52e 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift @@ -50,4 +50,5 @@ public final class FileSchemaTestClass: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift index 3becb33e171..7ea8c7dc1ee 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/FormatTest.swift @@ -116,4 +116,5 @@ public final class FormatTest: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift index 2eeee949b9e..75ce3afe50d 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift @@ -50,4 +50,5 @@ public final class HasOnlyReadOnly: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift index d7bd15e4ab7..0dbb9c9f351 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/List.swift @@ -44,4 +44,5 @@ public final class List: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift index e1b5051c98a..fa4d05b2b0d 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MapTest.swift @@ -66,4 +66,5 @@ public final class MapTest: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index 126d5952d23..af739161a45 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -56,4 +56,5 @@ public final class MixedPropertiesAndAdditionalPropertiesClass: Codable, Hashabl } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift index abec4f578a3..c029d5acbd8 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Model200Response.swift @@ -51,4 +51,5 @@ public final class Model200Response: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift index ae67e9ce2c9..e37f05bbb5e 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Name.swift @@ -63,4 +63,5 @@ public final class Name: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift index 122ba86ecf6..b375325d252 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/NumberOnly.swift @@ -44,4 +44,5 @@ public final class NumberOnly: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift index 31979b10b85..9399d0b83f8 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Order.swift @@ -80,4 +80,5 @@ public final class Order: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift index 377df8fd2e0..125a7f19c8e 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/OuterComposite.swift @@ -56,4 +56,5 @@ public final class OuterComposite: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift index d93428d9bda..7c3e1f6e58a 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Pet.swift @@ -80,4 +80,5 @@ public final class Pet: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift index e3a074ebcc8..d6ff6cf50f8 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift @@ -50,4 +50,5 @@ public final class ReadOnlyFirst: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift index f517ed55714..c7a9c35ec1c 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Return.swift @@ -45,4 +45,5 @@ public final class Return: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift index 3b5cc185319..1f6a989b081 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift @@ -44,4 +44,5 @@ public final class SpecialModelName: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift index 1449e89190f..67216302d21 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift @@ -62,4 +62,5 @@ public final class StringBooleanMap: Codable, Hashable { hasher.combine(additionalProperties.hashValue) } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift index cfd84044fe2..365ccb8b3aa 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/Tag.swift @@ -50,4 +50,5 @@ public final class Tag: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift index 82595deb500..3f64638c1bc 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift @@ -68,4 +68,5 @@ public final class TypeHolderDefault: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift index 9509c507b87..c7b480af0d0 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift @@ -68,4 +68,5 @@ public final class TypeHolderExample: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift index 63b13180dcd..3af56094d8c 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models/User.swift @@ -87,4 +87,5 @@ public final class User: Codable, Hashable { } } + } diff --git a/samples/client/petstore/swift5/vaporLibrary/.gitignore b/samples/client/petstore/swift5/vaporLibrary/.gitignore new file mode 100644 index 00000000000..5e5d5cebcf4 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/.gitignore @@ -0,0 +1,63 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated +build/ +DerivedData + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata + +## Other +*.xccheckout +*.moved-aside +*.xcuserstate +*.xcscmblueprint + +## Obj-C/Swift specific +*.hmap +*.ipa + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md + +fastlane/report.xml +fastlane/screenshots diff --git a/samples/client/petstore/swift5/vaporLibrary/.openapi-generator-ignore b/samples/client/petstore/swift5/vaporLibrary/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/FILES b/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/FILES new file mode 100644 index 00000000000..ec27ad4b38e --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/FILES @@ -0,0 +1,118 @@ +.gitignore +Package.swift +README.md +Sources/PetstoreClient/APIs.swift +Sources/PetstoreClient/APIs/AnotherFakeAPI.swift +Sources/PetstoreClient/APIs/FakeAPI.swift +Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift +Sources/PetstoreClient/APIs/PetAPI.swift +Sources/PetstoreClient/APIs/StoreAPI.swift +Sources/PetstoreClient/APIs/UserAPI.swift +Sources/PetstoreClient/Configuration.swift +Sources/PetstoreClient/Extensions.swift +Sources/PetstoreClient/Models/AdditionalPropertiesAnyType.swift +Sources/PetstoreClient/Models/AdditionalPropertiesArray.swift +Sources/PetstoreClient/Models/AdditionalPropertiesBoolean.swift +Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift +Sources/PetstoreClient/Models/AdditionalPropertiesInteger.swift +Sources/PetstoreClient/Models/AdditionalPropertiesNumber.swift +Sources/PetstoreClient/Models/AdditionalPropertiesObject.swift +Sources/PetstoreClient/Models/AdditionalPropertiesString.swift +Sources/PetstoreClient/Models/Animal.swift +Sources/PetstoreClient/Models/AnimalFarm.swift +Sources/PetstoreClient/Models/ApiResponse.swift +Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift +Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift +Sources/PetstoreClient/Models/ArrayTest.swift +Sources/PetstoreClient/Models/BigCat.swift +Sources/PetstoreClient/Models/BigCatAllOf.swift +Sources/PetstoreClient/Models/Capitalization.swift +Sources/PetstoreClient/Models/Cat.swift +Sources/PetstoreClient/Models/CatAllOf.swift +Sources/PetstoreClient/Models/Category.swift +Sources/PetstoreClient/Models/ClassModel.swift +Sources/PetstoreClient/Models/Client.swift +Sources/PetstoreClient/Models/Dog.swift +Sources/PetstoreClient/Models/DogAllOf.swift +Sources/PetstoreClient/Models/EnumArrays.swift +Sources/PetstoreClient/Models/EnumClass.swift +Sources/PetstoreClient/Models/EnumTest.swift +Sources/PetstoreClient/Models/File.swift +Sources/PetstoreClient/Models/FileSchemaTestClass.swift +Sources/PetstoreClient/Models/FormatTest.swift +Sources/PetstoreClient/Models/HasOnlyReadOnly.swift +Sources/PetstoreClient/Models/List.swift +Sources/PetstoreClient/Models/MapTest.swift +Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +Sources/PetstoreClient/Models/Model200Response.swift +Sources/PetstoreClient/Models/Name.swift +Sources/PetstoreClient/Models/NumberOnly.swift +Sources/PetstoreClient/Models/Order.swift +Sources/PetstoreClient/Models/OuterComposite.swift +Sources/PetstoreClient/Models/OuterEnum.swift +Sources/PetstoreClient/Models/Pet.swift +Sources/PetstoreClient/Models/ReadOnlyFirst.swift +Sources/PetstoreClient/Models/Return.swift +Sources/PetstoreClient/Models/SpecialModelName.swift +Sources/PetstoreClient/Models/StringBooleanMap.swift +Sources/PetstoreClient/Models/Tag.swift +Sources/PetstoreClient/Models/TypeHolderDefault.swift +Sources/PetstoreClient/Models/TypeHolderExample.swift +Sources/PetstoreClient/Models/User.swift +Sources/PetstoreClient/Models/XmlItem.swift +docs/AdditionalPropertiesAnyType.md +docs/AdditionalPropertiesArray.md +docs/AdditionalPropertiesBoolean.md +docs/AdditionalPropertiesClass.md +docs/AdditionalPropertiesInteger.md +docs/AdditionalPropertiesNumber.md +docs/AdditionalPropertiesObject.md +docs/AdditionalPropertiesString.md +docs/Animal.md +docs/AnimalFarm.md +docs/AnotherFakeAPI.md +docs/ApiResponse.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/BigCat.md +docs/BigCatAllOf.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ClassModel.md +docs/Client.md +docs/Dog.md +docs/DogAllOf.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/FakeAPI.md +docs/FakeClassnameTags123API.md +docs/File.md +docs/FileSchemaTestClass.md +docs/FormatTest.md +docs/HasOnlyReadOnly.md +docs/List.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/Name.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/Pet.md +docs/PetAPI.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/SpecialModelName.md +docs/StoreAPI.md +docs/StringBooleanMap.md +docs/Tag.md +docs/TypeHolderDefault.md +docs/TypeHolderExample.md +docs/User.md +docs/UserAPI.md +docs/XmlItem.md diff --git a/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION new file mode 100644 index 00000000000..6555596f931 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/vaporLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/swift5/vaporLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/samples/client/petstore/swift5/vaporLibrary/Package.resolved b/samples/client/petstore/swift5/vaporLibrary/Package.resolved new file mode 100644 index 00000000000..8f867e0061d --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Package.resolved @@ -0,0 +1,160 @@ +{ + "object": { + "pins": [ + { + "package": "AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "state": { + "branch": null, + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" + } + }, + { + "package": "async-http-client", + "repositoryURL": "https://github.com/swift-server/async-http-client.git", + "state": { + "branch": null, + "revision": "8ccba7328d178ac05a1a9803cf3f2c6660d2f826", + "version": "1.3.0" + } + }, + { + "package": "async-kit", + "repositoryURL": "https://github.com/vapor/async-kit.git", + "state": { + "branch": null, + "revision": "c1de408100a2f2e4ab2ea06512e8635bc1a59144", + "version": "1.3.1" + } + }, + { + "package": "console-kit", + "repositoryURL": "https://github.com/vapor/console-kit.git", + "state": { + "branch": null, + "revision": "cfe8bcd58f74ffecb4f536d8237de146b634ecd3", + "version": "4.2.6" + } + }, + { + "package": "multipart-kit", + "repositoryURL": "https://github.com/vapor/multipart-kit.git", + "state": { + "branch": null, + "revision": "2376b4949e8a1675f7c495224029498194eecf61", + "version": "4.0.3" + } + }, + { + "package": "routing-kit", + "repositoryURL": "https://github.com/vapor/routing-kit.git", + "state": { + "branch": null, + "revision": "a0801a36a6ad501d5ad6285cbcd4774de6b0a734", + "version": "4.3.0" + } + }, + { + "package": "swift-backtrace", + "repositoryURL": "https://github.com/swift-server/swift-backtrace.git", + "state": { + "branch": null, + "revision": "54a65d6391a1467a896d0d351ff2de6f469ee53c", + "version": "1.2.3" + } + }, + { + "package": "swift-crypto", + "repositoryURL": "https://github.com/apple/swift-crypto.git", + "state": { + "branch": null, + "revision": "3bea268b223651c4ab7b7b9ad62ef9b2d4143eb6", + "version": "1.1.6" + } + }, + { + "package": "swift-log", + "repositoryURL": "https://github.com/apple/swift-log.git", + "state": { + "branch": null, + "revision": "5d66f7ba25daf4f94100e7022febf3c75e37a6c7", + "version": "1.4.2" + } + }, + { + "package": "swift-metrics", + "repositoryURL": "https://github.com/apple/swift-metrics.git", + "state": { + "branch": null, + "revision": "e382458581b05839a571c578e90060fff499f101", + "version": "2.1.1" + } + }, + { + "package": "swift-nio", + "repositoryURL": "https://github.com/apple/swift-nio.git", + "state": { + "branch": null, + "revision": "d161bf658780b209c185994528e7e24376cf7283", + "version": "2.29.0" + } + }, + { + "package": "swift-nio-extras", + "repositoryURL": "https://github.com/apple/swift-nio-extras.git", + "state": { + "branch": null, + "revision": "de1c80ad1fdff1ba772bcef6b392c3ef735f39a6", + "version": "1.8.0" + } + }, + { + "package": "swift-nio-http2", + "repositoryURL": "https://github.com/apple/swift-nio-http2.git", + "state": { + "branch": null, + "revision": "e3e9024a632b40695ad5d3a85f9776a9b27a4bc6", + "version": "1.17.0" + } + }, + { + "package": "swift-nio-ssl", + "repositoryURL": "https://github.com/apple/swift-nio-ssl.git", + "state": { + "branch": null, + "revision": "6363cdf6d2fb863e82434f3c4618f4e896e37569", + "version": "2.13.1" + } + }, + { + "package": "swift-nio-transport-services", + "repositoryURL": "https://github.com/apple/swift-nio-transport-services.git", + "state": { + "branch": null, + "revision": "657537c2cf1845f8d5201ecc4e48f21f21841128", + "version": "1.10.0" + } + }, + { + "package": "vapor", + "repositoryURL": "https://github.com/vapor/vapor.git", + "state": { + "branch": null, + "revision": "bc194e3868cbd9cf3cd41392e9b10d6fad089bc4", + "version": "4.45.7" + } + }, + { + "package": "websocket-kit", + "repositoryURL": "https://github.com/vapor/websocket-kit.git", + "state": { + "branch": null, + "revision": "a2d26b3de8b3be292f3208d1c74024f76ac503da", + "version": "2.1.3" + } + } + ] + }, + "version": 1 +} diff --git a/samples/client/petstore/swift5/vaporLibrary/Package.swift b/samples/client/petstore/swift5/vaporLibrary/Package.swift new file mode 100644 index 00000000000..3dec2555d09 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Package.swift @@ -0,0 +1,31 @@ +// swift-tools-version:5.1 + +import PackageDescription + +let package = Package( + name: "PetstoreClient", + platforms: [ + .macOS(.v10_15), + ], + products: [ + // Products define the executables and libraries produced by a package, and make them visible to other packages. + .library( + name: "PetstoreClient", + targets: ["PetstoreClient"] + ), + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0") + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages which this package depends on. + .target( + name: "PetstoreClient", + dependencies: ["AnyCodable", "Vapor", ], + path: "Sources/PetstoreClient" + ), + ] +) diff --git a/samples/client/petstore/swift5/vaporLibrary/README.md b/samples/client/petstore/swift5/vaporLibrary/README.md new file mode 100644 index 00000000000..ee3cf1af06f --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/README.md @@ -0,0 +1,149 @@ +# Swift5 API client for PetstoreClient + +This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + +## Overview +This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate an API client. + +- API version: 1.0.0 +- Package version: +- Build package: org.openapitools.codegen.languages.Swift5ClientCodegen + +## Installation + +Add the following entry in your Package.swift: + +> .package(path: "./PetstoreClient") + +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*AnotherFakeAPI* | [**call123testSpecialTags**](docs/AnotherFakeAPI.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*FakeAPI* | [**createXmlItem**](docs/FakeAPI.md#createxmlitem) | **POST** /fake/create_xml_item | creates an XmlItem +*FakeAPI* | [**fakeOuterBooleanSerialize**](docs/FakeAPI.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeAPI* | [**fakeOuterCompositeSerialize**](docs/FakeAPI.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeAPI* | [**fakeOuterNumberSerialize**](docs/FakeAPI.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeAPI* | [**fakeOuterStringSerialize**](docs/FakeAPI.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeAPI* | [**testBodyWithFileSchema**](docs/FakeAPI.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeAPI* | [**testBodyWithQueryParams**](docs/FakeAPI.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeAPI* | [**testClientModel**](docs/FakeAPI.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeAPI* | [**testEndpointParameters**](docs/FakeAPI.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeAPI* | [**testEnumParameters**](docs/FakeAPI.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeAPI* | [**testGroupParameters**](docs/FakeAPI.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeAPI* | [**testInlineAdditionalProperties**](docs/FakeAPI.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeAPI* | [**testJsonFormData**](docs/FakeAPI.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeAPI* | [**testQueryParameterCollectionFormat**](docs/FakeAPI.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123API* | [**testClassname**](docs/FakeClassnameTags123API.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetAPI* | [**addPet**](docs/PetAPI.md#addpet) | **POST** /pet | Add a new pet to the store +*PetAPI* | [**deletePet**](docs/PetAPI.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetAPI* | [**findPetsByStatus**](docs/PetAPI.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetAPI* | [**findPetsByTags**](docs/PetAPI.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetAPI* | [**getPetById**](docs/PetAPI.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetAPI* | [**updatePet**](docs/PetAPI.md#updatepet) | **PUT** /pet | Update an existing pet +*PetAPI* | [**updatePetWithForm**](docs/PetAPI.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetAPI* | [**uploadFile**](docs/PetAPI.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetAPI* | [**uploadFileWithRequiredFile**](docs/PetAPI.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreAPI* | [**deleteOrder**](docs/StoreAPI.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreAPI* | [**getInventory**](docs/StoreAPI.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreAPI* | [**getOrderById**](docs/StoreAPI.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreAPI* | [**placeOrder**](docs/StoreAPI.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserAPI* | [**createUser**](docs/UserAPI.md#createuser) | **POST** /user | Create user +*UserAPI* | [**createUsersWithArrayInput**](docs/UserAPI.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserAPI* | [**createUsersWithListInput**](docs/UserAPI.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserAPI* | [**deleteUser**](docs/UserAPI.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserAPI* | [**getUserByName**](docs/UserAPI.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserAPI* | [**loginUser**](docs/UserAPI.md#loginuser) | **GET** /user/login | Logs user into the system +*UserAPI* | [**logoutUser**](docs/UserAPI.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserAPI* | [**updateUser**](docs/UserAPI.md#updateuser) | **PUT** /user/{username} | Updated user + + +## Documentation For Models + + - [AdditionalPropertiesAnyType](docs/AdditionalPropertiesAnyType.md) + - [AdditionalPropertiesArray](docs/AdditionalPropertiesArray.md) + - [AdditionalPropertiesBoolean](docs/AdditionalPropertiesBoolean.md) + - [AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md) + - [AdditionalPropertiesInteger](docs/AdditionalPropertiesInteger.md) + - [AdditionalPropertiesNumber](docs/AdditionalPropertiesNumber.md) + - [AdditionalPropertiesObject](docs/AdditionalPropertiesObject.md) + - [AdditionalPropertiesString](docs/AdditionalPropertiesString.md) + - [Animal](docs/Animal.md) + - [AnimalFarm](docs/AnimalFarm.md) + - [ApiResponse](docs/ApiResponse.md) + - [ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md) + - [ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md) + - [ArrayTest](docs/ArrayTest.md) + - [BigCat](docs/BigCat.md) + - [BigCatAllOf](docs/BigCatAllOf.md) + - [Capitalization](docs/Capitalization.md) + - [Cat](docs/Cat.md) + - [CatAllOf](docs/CatAllOf.md) + - [Category](docs/Category.md) + - [ClassModel](docs/ClassModel.md) + - [Client](docs/Client.md) + - [Dog](docs/Dog.md) + - [DogAllOf](docs/DogAllOf.md) + - [EnumArrays](docs/EnumArrays.md) + - [EnumClass](docs/EnumClass.md) + - [EnumTest](docs/EnumTest.md) + - [File](docs/File.md) + - [FileSchemaTestClass](docs/FileSchemaTestClass.md) + - [FormatTest](docs/FormatTest.md) + - [HasOnlyReadOnly](docs/HasOnlyReadOnly.md) + - [List](docs/List.md) + - [MapTest](docs/MapTest.md) + - [MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model200Response](docs/Model200Response.md) + - [Name](docs/Name.md) + - [NumberOnly](docs/NumberOnly.md) + - [Order](docs/Order.md) + - [OuterComposite](docs/OuterComposite.md) + - [OuterEnum](docs/OuterEnum.md) + - [Pet](docs/Pet.md) + - [ReadOnlyFirst](docs/ReadOnlyFirst.md) + - [Return](docs/Return.md) + - [SpecialModelName](docs/SpecialModelName.md) + - [StringBooleanMap](docs/StringBooleanMap.md) + - [Tag](docs/Tag.md) + - [TypeHolderDefault](docs/TypeHolderDefault.md) + - [TypeHolderExample](docs/TypeHolderExample.md) + - [User](docs/User.md) + - [XmlItem](docs/XmlItem.md) + + +## Documentation For Authorization + + +## api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + +## api_key_query + +- **Type**: API key +- **API key parameter name**: api_key_query +- **Location**: URL query string + +## http_basic_test + +- **Type**: HTTP basic authentication + +## petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - **write:pets**: modify pets in your account + - **read:pets**: read your pets + + +## Author + + + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs.swift new file mode 100644 index 00000000000..975fee896fa --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs.swift @@ -0,0 +1,16 @@ +// APIs.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Vapor + +@available(*, deprecated, renamed: "PetstoreClient") +public typealias PetstoreClientAPI = PetstoreClient + +open class PetstoreClient { + public static var basePath = "http://petstore.swagger.io:80/v2" + public static var customHeaders: HTTPHeaders = [:] +} diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift new file mode 100644 index 00000000000..fa2b11dab66 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift @@ -0,0 +1,64 @@ +// +// AnotherFakeAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Vapor +#if canImport(AnyCodable) +import AnyCodable +#endif + +open class AnotherFakeAPI { + + /** + To test special tags + PATCH /another-fake/dummy + To test special tags and operation ID starting with number + - parameter body: (body) client model + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func call123testSpecialTagsRaw(body: Client, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/another-fake/dummy" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.PATCH, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Client.defaultContentType)) + + try beforeSend(&request) + } + } + + public enum Call123testSpecialTags { + case http200(value: Client, raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + To test special tags + PATCH /another-fake/dummy + To test special tags and operation ID starting with number + - parameter body: (body) client model + - returns: `EventLoopFuture` of `Call123testSpecialTags` + */ + open class func call123testSpecialTags(body: Client, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return call123testSpecialTagsRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> Call123testSpecialTags in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(Client.self, using: Configuration.contentConfiguration.requireDecoder(for: Client.defaultContentType)), raw: response) + default: + return .http0(raw: response) + } + } + } + +} diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift new file mode 100644 index 00000000000..f9216c9884e --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift @@ -0,0 +1,886 @@ +// +// FakeAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Vapor +#if canImport(AnyCodable) +import AnyCodable +#endif + +open class FakeAPI { + + /** + creates an XmlItem + POST /fake/create_xml_item + this route creates an XmlItem + - parameter xmlItem: (body) XmlItem Body + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func createXmlItemRaw(xmlItem: XmlItem, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake/create_xml_item" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(xmlItem, using: Configuration.contentConfiguration.requireEncoder(for: XmlItem.defaultContentType)) + + try beforeSend(&request) + } + } + + public enum CreateXmlItem { + case http200(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + creates an XmlItem + POST /fake/create_xml_item + this route creates an XmlItem + - parameter xmlItem: (body) XmlItem Body + - returns: `EventLoopFuture` of `CreateXmlItem` + */ + open class func createXmlItem(xmlItem: XmlItem, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return createXmlItemRaw(xmlItem: xmlItem, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> CreateXmlItem in + switch response.status.code { + case 200: + return .http200(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + POST /fake/outer/boolean + Test serialization of outer boolean types + - parameter body: (body) Input boolean as post body (optional) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func fakeOuterBooleanSerializeRaw(body: Bool? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake/outer/boolean" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + if let body = body { + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Bool.defaultContentType)) + } + + try beforeSend(&request) + } + } + + public enum FakeOuterBooleanSerialize { + case http200(value: Bool, raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + POST /fake/outer/boolean + Test serialization of outer boolean types + - parameter body: (body) Input boolean as post body (optional) + - returns: `EventLoopFuture` of `FakeOuterBooleanSerialize` + */ + open class func fakeOuterBooleanSerialize(body: Bool? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return fakeOuterBooleanSerializeRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> FakeOuterBooleanSerialize in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(Bool.self, using: Configuration.contentConfiguration.requireDecoder(for: Bool.defaultContentType)), raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + POST /fake/outer/composite + Test serialization of object with outer number type + - parameter body: (body) Input composite as post body (optional) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func fakeOuterCompositeSerializeRaw(body: OuterComposite? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake/outer/composite" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + if let body = body { + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: OuterComposite.defaultContentType)) + } + + try beforeSend(&request) + } + } + + public enum FakeOuterCompositeSerialize { + case http200(value: OuterComposite, raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + POST /fake/outer/composite + Test serialization of object with outer number type + - parameter body: (body) Input composite as post body (optional) + - returns: `EventLoopFuture` of `FakeOuterCompositeSerialize` + */ + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return fakeOuterCompositeSerializeRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> FakeOuterCompositeSerialize in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(OuterComposite.self, using: Configuration.contentConfiguration.requireDecoder(for: OuterComposite.defaultContentType)), raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + POST /fake/outer/number + Test serialization of outer number types + - parameter body: (body) Input number as post body (optional) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func fakeOuterNumberSerializeRaw(body: Double? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake/outer/number" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + if let body = body { + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Double.defaultContentType)) + } + + try beforeSend(&request) + } + } + + public enum FakeOuterNumberSerialize { + case http200(value: Double, raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + POST /fake/outer/number + Test serialization of outer number types + - parameter body: (body) Input number as post body (optional) + - returns: `EventLoopFuture` of `FakeOuterNumberSerialize` + */ + open class func fakeOuterNumberSerialize(body: Double? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return fakeOuterNumberSerializeRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> FakeOuterNumberSerialize in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(Double.self, using: Configuration.contentConfiguration.requireDecoder(for: Double.defaultContentType)), raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + POST /fake/outer/string + Test serialization of outer string types + - parameter body: (body) Input string as post body (optional) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func fakeOuterStringSerializeRaw(body: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake/outer/string" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + if let body = body { + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: String.defaultContentType)) + } + + try beforeSend(&request) + } + } + + public enum FakeOuterStringSerialize { + case http200(value: String, raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + POST /fake/outer/string + Test serialization of outer string types + - parameter body: (body) Input string as post body (optional) + - returns: `EventLoopFuture` of `FakeOuterStringSerialize` + */ + open class func fakeOuterStringSerialize(body: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return fakeOuterStringSerializeRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> FakeOuterStringSerialize in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(String.self, using: Configuration.contentConfiguration.requireDecoder(for: String.defaultContentType)), raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + PUT /fake/body-with-file-schema + For this test, the body for this request much reference a schema named `File`. + - parameter body: (body) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func testBodyWithFileSchemaRaw(body: FileSchemaTestClass, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake/body-with-file-schema" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.PUT, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: FileSchemaTestClass.defaultContentType)) + + try beforeSend(&request) + } + } + + public enum TestBodyWithFileSchema { + case http200(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + PUT /fake/body-with-file-schema + For this test, the body for this request much reference a schema named `File`. + - parameter body: (body) + - returns: `EventLoopFuture` of `TestBodyWithFileSchema` + */ + open class func testBodyWithFileSchema(body: FileSchemaTestClass, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return testBodyWithFileSchemaRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> TestBodyWithFileSchema in + switch response.status.code { + case 200: + return .http200(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + PUT /fake/body-with-query-params + - parameter query: (query) + - parameter body: (body) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func testBodyWithQueryParamsRaw(query: String, body: User, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake/body-with-query-params" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.PUT, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + struct QueryParams: Content { + var query: String + } + try request.query.encode(QueryParams(query: query)) + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: User.defaultContentType)) + + try beforeSend(&request) + } + } + + public enum TestBodyWithQueryParams { + case http200(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + PUT /fake/body-with-query-params + - parameter query: (query) + - parameter body: (body) + - returns: `EventLoopFuture` of `TestBodyWithQueryParams` + */ + open class func testBodyWithQueryParams(query: String, body: User, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return testBodyWithQueryParamsRaw(query: query, body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> TestBodyWithQueryParams in + switch response.status.code { + case 200: + return .http200(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + To test \"client\" model + PATCH /fake + To test \"client\" model + - parameter body: (body) client model + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func testClientModelRaw(body: Client, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.PATCH, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Client.defaultContentType)) + + try beforeSend(&request) + } + } + + public enum TestClientModel { + case http200(value: Client, raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + To test \"client\" model + PATCH /fake + To test \"client\" model + - parameter body: (body) client model + - returns: `EventLoopFuture` of `TestClientModel` + */ + open class func testClientModel(body: Client, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return testClientModelRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> TestClientModel in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(Client.self, using: Configuration.contentConfiguration.requireDecoder(for: Client.defaultContentType)), raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + POST /fake + Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + - BASIC: + - type: http + - name: http_basic_test + - parameter number: (form) None + - parameter double: (form) None + - parameter patternWithoutDelimiter: (form) None + - parameter byte: (form) None + - parameter integer: (form) None (optional) + - parameter int32: (form) None (optional) + - parameter int64: (form) None (optional) + - parameter float: (form) None (optional) + - parameter string: (form) None (optional) + - parameter binary: (form) None (optional) + - parameter date: (form) None (optional) + - parameter dateTime: (form) None (optional) + - parameter password: (form) None (optional) + - parameter callback: (form) None (optional) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func testEndpointParametersRaw(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: Data? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + struct FormParams: Content { + static let defaultContentType = Vapor.HTTPMediaType.formData + var integer: Int? + var int32: Int? + var int64: Int64? + var number: Double + var float: Float? + var double: Double + var string: String? + var patternWithoutDelimiter: String + var byte: Data + var binary: Data? + var date: Date? + var dateTime: Date? + var password: String? + var callback: String? + } + try request.content.encode(FormParams(integer: integer, int32: int32, int64: int64, number: number, float: float, double: double, string: string, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) + try beforeSend(&request) + } + } + + public enum TestEndpointParameters { + case http400(raw: ClientResponse) + case http404(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + POST /fake + Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + - BASIC: + - type: http + - name: http_basic_test + - parameter number: (form) None + - parameter double: (form) None + - parameter patternWithoutDelimiter: (form) None + - parameter byte: (form) None + - parameter integer: (form) None (optional) + - parameter int32: (form) None (optional) + - parameter int64: (form) None (optional) + - parameter float: (form) None (optional) + - parameter string: (form) None (optional) + - parameter binary: (form) None (optional) + - parameter date: (form) None (optional) + - parameter dateTime: (form) None (optional) + - parameter password: (form) None (optional) + - parameter callback: (form) None (optional) + - returns: `EventLoopFuture` of `TestEndpointParameters` + */ + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: Data? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return testEndpointParametersRaw(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> TestEndpointParameters in + switch response.status.code { + case 400: + return .http400(raw: response) + case 404: + return .http404(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + * enum for parameter enumHeaderStringArray + */ + public enum EnumHeaderStringArray_testEnumParameters: String, CaseIterable, Content { + case greaterThan = ">" + case dollar = "$" + } + + /** + * enum for parameter enumHeaderString + */ + public enum EnumHeaderString_testEnumParameters: String, CaseIterable, Content { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" + } + + /** + * enum for parameter enumQueryStringArray + */ + public enum EnumQueryStringArray_testEnumParameters: String, CaseIterable, Content { + case greaterThan = ">" + case dollar = "$" + } + + /** + * enum for parameter enumQueryString + */ + public enum EnumQueryString_testEnumParameters: String, CaseIterable, Content { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" + } + + /** + * enum for parameter enumQueryInteger + */ + public enum EnumQueryInteger_testEnumParameters: Int, CaseIterable, Content { + case _1 = 1 + case number2 = -2 + } + + /** + * enum for parameter enumQueryDouble + */ + public enum EnumQueryDouble_testEnumParameters: Double, CaseIterable, Content { + case _11 = 1.1 + case number12 = -1.2 + } + + /** + * enum for parameter enumFormStringArray + */ + public enum EnumFormStringArray_testEnumParameters: String, CaseIterable, Content { + case greaterThan = ">" + case dollar = "$" + } + + /** + * enum for parameter enumFormString + */ + public enum EnumFormString_testEnumParameters: String, CaseIterable, Content { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" + } + + /** + To test enum parameters + GET /fake + To test enum parameters + - parameter enumHeaderStringArray: (header) Header parameter enum test (string array) (optional) + - parameter enumHeaderString: (header) Header parameter enum test (string) (optional, default to .efg) + - parameter enumQueryStringArray: (query) Query parameter enum test (string array) (optional) + - parameter enumQueryString: (query) Query parameter enum test (string) (optional, default to .efg) + - parameter enumQueryInteger: (query) Query parameter enum test (double) (optional) + - parameter enumQueryDouble: (query) Query parameter enum test (double) (optional) + - parameter enumFormStringArray: (form) Form parameter enum test (string array) (optional, default to .dollar) + - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .efg) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func testEnumParametersRaw(enumHeaderStringArray: [EnumHeaderStringArray_testEnumParameters]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [EnumQueryStringArray_testEnumParameters]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [EnumFormStringArray_testEnumParameters]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + request.headers.add(name: "enum_header_string_array", value: enumHeaderStringArray?.map { $0.rawValue.description }.description ?? "") + + request.headers.add(name: "enum_header_string", value: enumHeaderString?.rawValue.description ?? "") + + struct QueryParams: Content { + var enumQueryStringArray: [EnumQueryStringArray_testEnumParameters]? + var enumQueryString: EnumQueryString_testEnumParameters? + var enumQueryInteger: EnumQueryInteger_testEnumParameters? + var enumQueryDouble: EnumQueryDouble_testEnumParameters? + } + try request.query.encode(QueryParams(enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble)) + struct FormParams: Content { + static let defaultContentType = Vapor.HTTPMediaType.formData + var enumFormStringArray: [EnumFormStringArray_testEnumParameters]? + var enumFormString: EnumFormString_testEnumParameters? + } + try request.content.encode(FormParams(enumFormStringArray: enumFormStringArray, enumFormString: enumFormString), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) + try beforeSend(&request) + } + } + + public enum TestEnumParameters { + case http400(raw: ClientResponse) + case http404(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + To test enum parameters + GET /fake + To test enum parameters + - parameter enumHeaderStringArray: (header) Header parameter enum test (string array) (optional) + - parameter enumHeaderString: (header) Header parameter enum test (string) (optional, default to .efg) + - parameter enumQueryStringArray: (query) Query parameter enum test (string array) (optional) + - parameter enumQueryString: (query) Query parameter enum test (string) (optional, default to .efg) + - parameter enumQueryInteger: (query) Query parameter enum test (double) (optional) + - parameter enumQueryDouble: (query) Query parameter enum test (double) (optional) + - parameter enumFormStringArray: (form) Form parameter enum test (string array) (optional, default to .dollar) + - parameter enumFormString: (form) Form parameter enum test (string) (optional, default to .efg) + - returns: `EventLoopFuture` of `TestEnumParameters` + */ + open class func testEnumParameters(enumHeaderStringArray: [EnumHeaderStringArray_testEnumParameters]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [EnumQueryStringArray_testEnumParameters]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [EnumFormStringArray_testEnumParameters]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return testEnumParametersRaw(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> TestEnumParameters in + switch response.status.code { + case 400: + return .http400(raw: response) + case 404: + return .http404(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Fake endpoint to test group parameters (optional) + DELETE /fake + Fake endpoint to test group parameters (optional) + - parameter requiredStringGroup: (query) Required String in group parameters + - parameter requiredBooleanGroup: (header) Required Boolean in group parameters + - parameter requiredInt64Group: (query) Required Integer in group parameters + - parameter stringGroup: (query) String in group parameters (optional) + - parameter booleanGroup: (header) Boolean in group parameters (optional) + - parameter int64Group: (query) Integer in group parameters (optional) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func testGroupParametersRaw(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.DELETE, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + request.headers.add(name: "required_boolean_group", value: requiredBooleanGroup.description) + + request.headers.add(name: "boolean_group", value: booleanGroup?.description ?? "") + + struct QueryParams: Content { + var requiredStringGroup: Int + var requiredInt64Group: Int64 + var stringGroup: Int? + var int64Group: Int64? + } + try request.query.encode(QueryParams(requiredStringGroup: requiredStringGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, int64Group: int64Group)) + + try beforeSend(&request) + } + } + + public enum TestGroupParameters { + case http400(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Fake endpoint to test group parameters (optional) + DELETE /fake + Fake endpoint to test group parameters (optional) + - parameter requiredStringGroup: (query) Required String in group parameters + - parameter requiredBooleanGroup: (header) Required Boolean in group parameters + - parameter requiredInt64Group: (query) Required Integer in group parameters + - parameter stringGroup: (query) String in group parameters (optional) + - parameter booleanGroup: (header) Boolean in group parameters (optional) + - parameter int64Group: (query) Integer in group parameters (optional) + - returns: `EventLoopFuture` of `TestGroupParameters` + */ + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return testGroupParametersRaw(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> TestGroupParameters in + switch response.status.code { + case 400: + return .http400(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + test inline additionalProperties + POST /fake/inline-additionalProperties + - parameter param: (body) request body + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func testInlineAdditionalPropertiesRaw(param: [String: String], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake/inline-additionalProperties" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(param, using: Configuration.contentConfiguration.requireEncoder(for: [String: String].defaultContentType)) + + try beforeSend(&request) + } + } + + public enum TestInlineAdditionalProperties { + case http200(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + test inline additionalProperties + POST /fake/inline-additionalProperties + - parameter param: (body) request body + - returns: `EventLoopFuture` of `TestInlineAdditionalProperties` + */ + open class func testInlineAdditionalProperties(param: [String: String], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return testInlineAdditionalPropertiesRaw(param: param, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> TestInlineAdditionalProperties in + switch response.status.code { + case 200: + return .http200(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + test json serialization of form data + GET /fake/jsonFormData + - parameter param: (form) field1 + - parameter param2: (form) field2 + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func testJsonFormDataRaw(param: String, param2: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake/jsonFormData" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + struct FormParams: Content { + static let defaultContentType = Vapor.HTTPMediaType.formData + var param: String + var param2: String + } + try request.content.encode(FormParams(param: param, param2: param2), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) + try beforeSend(&request) + } + } + + public enum TestJsonFormData { + case http200(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + test json serialization of form data + GET /fake/jsonFormData + - parameter param: (form) field1 + - parameter param2: (form) field2 + - returns: `EventLoopFuture` of `TestJsonFormData` + */ + open class func testJsonFormData(param: String, param2: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return testJsonFormDataRaw(param: param, param2: param2, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> TestJsonFormData in + switch response.status.code { + case 200: + return .http200(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + PUT /fake/test-query-paramters + To test the collection format in query parameters + - parameter pipe: (query) + - parameter ioutil: (query) + - parameter http: (query) + - parameter url: (query) + - parameter context: (query) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func testQueryParameterCollectionFormatRaw(pipe: [String], ioutil: [String], http: [String], url: [String], context: [String], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake/test-query-paramters" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.PUT, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + struct QueryParams: Content { + var pipe: [String] + var ioutil: [String] + var http: [String] + var url: [String] + var context: [String] + } + try request.query.encode(QueryParams(pipe: pipe, ioutil: ioutil, http: http, url: url, context: context)) + + try beforeSend(&request) + } + } + + public enum TestQueryParameterCollectionFormat { + case http200(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + PUT /fake/test-query-paramters + To test the collection format in query parameters + - parameter pipe: (query) + - parameter ioutil: (query) + - parameter http: (query) + - parameter url: (query) + - parameter context: (query) + - returns: `EventLoopFuture` of `TestQueryParameterCollectionFormat` + */ + open class func testQueryParameterCollectionFormat(pipe: [String], ioutil: [String], http: [String], url: [String], context: [String], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return testQueryParameterCollectionFormatRaw(pipe: pipe, ioutil: ioutil, http: http, url: url, context: context, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> TestQueryParameterCollectionFormat in + switch response.status.code { + case 200: + return .http200(raw: response) + default: + return .http0(raw: response) + } + } + } + +} diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift new file mode 100644 index 00000000000..0df1da56467 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift @@ -0,0 +1,70 @@ +// +// FakeClassnameTags123API.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Vapor +#if canImport(AnyCodable) +import AnyCodable +#endif + +open class FakeClassnameTags123API { + + /** + To test class name in snake case + PATCH /fake_classname_test + To test class name in snake case + - API Key: + - type: apiKey api_key_query (QUERY) + - name: api_key_query + - parameter body: (body) client model + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func testClassnameRaw(body: Client, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/fake_classname_test" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.PATCH, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Client.defaultContentType)) + + try beforeSend(&request) + } + } + + public enum TestClassname { + case http200(value: Client, raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + To test class name in snake case + PATCH /fake_classname_test + To test class name in snake case + - API Key: + - type: apiKey api_key_query (QUERY) + - name: api_key_query + - parameter body: (body) client model + - returns: `EventLoopFuture` of `TestClassname` + */ + open class func testClassname(body: Client, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return testClassnameRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> TestClassname in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(Client.self, using: Configuration.contentConfiguration.requireDecoder(for: Client.defaultContentType)), raw: response) + default: + return .http0(raw: response) + } + } + } + +} diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/PetAPI.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/PetAPI.swift new file mode 100644 index 00000000000..c38aad02331 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/PetAPI.swift @@ -0,0 +1,581 @@ +// +// PetAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Vapor +#if canImport(AnyCodable) +import AnyCodable +#endif + +open class PetAPI { + + /** + Add a new pet to the store + POST /pet + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter body: (body) Pet object that needs to be added to the store + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func addPetRaw(body: Pet, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/pet" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Pet.defaultContentType)) + + try beforeSend(&request) + } + } + + public enum AddPet { + case http200(raw: ClientResponse) + case http405(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Add a new pet to the store + POST /pet + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter body: (body) Pet object that needs to be added to the store + - returns: `EventLoopFuture` of `AddPet` + */ + open class func addPet(body: Pet, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return addPetRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> AddPet in + switch response.status.code { + case 200: + return .http200(raw: response) + case 405: + return .http405(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Deletes a pet + DELETE /pet/{petId} + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter petId: (path) Pet id to delete + - parameter apiKey: (header) (optional) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func deletePetRaw(petId: Int64, apiKey: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + var path = "/pet/{petId}" + let petIdPreEscape = String(describing: petId) + let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.DELETE, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + request.headers.add(name: "api_key", value: apiKey?.description ?? "") + + + + try beforeSend(&request) + } + } + + public enum DeletePet { + case http200(raw: ClientResponse) + case http400(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Deletes a pet + DELETE /pet/{petId} + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter petId: (path) Pet id to delete + - parameter apiKey: (header) (optional) + - returns: `EventLoopFuture` of `DeletePet` + */ + open class func deletePet(petId: Int64, apiKey: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return deletePetRaw(petId: petId, apiKey: apiKey, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> DeletePet in + switch response.status.code { + case 200: + return .http200(raw: response) + case 400: + return .http400(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + * enum for parameter status + */ + public enum Status_findPetsByStatus: String, CaseIterable, Content { + case available = "available" + case pending = "pending" + case sold = "sold" + } + + /** + Finds Pets by status + GET /pet/findByStatus + Multiple status values can be provided with comma separated strings + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter status: (query) Status values that need to be considered for filter + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func findPetsByStatusRaw(status: [Status_findPetsByStatus], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/pet/findByStatus" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + struct QueryParams: Content { + var status: [Status_findPetsByStatus] + } + try request.query.encode(QueryParams(status: status)) + + try beforeSend(&request) + } + } + + public enum FindPetsByStatus { + case http200(value: [Pet], raw: ClientResponse) + case http400(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Finds Pets by status + GET /pet/findByStatus + Multiple status values can be provided with comma separated strings + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter status: (query) Status values that need to be considered for filter + - returns: `EventLoopFuture` of `FindPetsByStatus` + */ + open class func findPetsByStatus(status: [Status_findPetsByStatus], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return findPetsByStatusRaw(status: status, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> FindPetsByStatus in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode([Pet].self, using: Configuration.contentConfiguration.requireDecoder(for: [Pet].defaultContentType)), raw: response) + case 400: + return .http400(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Finds Pets by tags + GET /pet/findByTags + Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter tags: (query) Tags to filter by + - returns: `EventLoopFuture` of `ClientResponse` + */ + @available(*, deprecated, message: "This operation is deprecated.") + open class func findPetsByTagsRaw(tags: Set, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/pet/findByTags" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + struct QueryParams: Content { + var tags: Set + } + try request.query.encode(QueryParams(tags: tags)) + + try beforeSend(&request) + } + } + + public enum FindPetsByTags { + case http200(value: Set, raw: ClientResponse) + case http400(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Finds Pets by tags + GET /pet/findByTags + Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter tags: (query) Tags to filter by + - returns: `EventLoopFuture` of `FindPetsByTags` + */ + @available(*, deprecated, message: "This operation is deprecated.") + open class func findPetsByTags(tags: Set, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return findPetsByTagsRaw(tags: tags, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> FindPetsByTags in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(Set.self, using: Configuration.contentConfiguration.requireDecoder(for: Set.defaultContentType)), raw: response) + case 400: + return .http400(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Find pet by ID + GET /pet/{petId} + Returns a single pet + - API Key: + - type: apiKey api_key + - name: api_key + - parameter petId: (path) ID of pet to return + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func getPetByIdRaw(petId: Int64, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + var path = "/pet/{petId}" + let petIdPreEscape = String(describing: petId) + let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + + try beforeSend(&request) + } + } + + public enum GetPetById { + case http200(value: Pet, raw: ClientResponse) + case http400(raw: ClientResponse) + case http404(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Find pet by ID + GET /pet/{petId} + Returns a single pet + - API Key: + - type: apiKey api_key + - name: api_key + - parameter petId: (path) ID of pet to return + - returns: `EventLoopFuture` of `GetPetById` + */ + open class func getPetById(petId: Int64, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return getPetByIdRaw(petId: petId, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> GetPetById in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(Pet.self, using: Configuration.contentConfiguration.requireDecoder(for: Pet.defaultContentType)), raw: response) + case 400: + return .http400(raw: response) + case 404: + return .http404(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Update an existing pet + PUT /pet + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter body: (body) Pet object that needs to be added to the store + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func updatePetRaw(body: Pet, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/pet" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.PUT, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Pet.defaultContentType)) + + try beforeSend(&request) + } + } + + public enum UpdatePet { + case http200(raw: ClientResponse) + case http400(raw: ClientResponse) + case http404(raw: ClientResponse) + case http405(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Update an existing pet + PUT /pet + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter body: (body) Pet object that needs to be added to the store + - returns: `EventLoopFuture` of `UpdatePet` + */ + open class func updatePet(body: Pet, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return updatePetRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> UpdatePet in + switch response.status.code { + case 200: + return .http200(raw: response) + case 400: + return .http400(raw: response) + case 404: + return .http404(raw: response) + case 405: + return .http405(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Updates a pet in the store with form data + POST /pet/{petId} + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter petId: (path) ID of pet that needs to be updated + - parameter name: (form) Updated name of the pet (optional) + - parameter status: (form) Updated status of the pet (optional) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func updatePetWithFormRaw(petId: Int64, name: String? = nil, status: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + var path = "/pet/{petId}" + let petIdPreEscape = String(describing: petId) + let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + struct FormParams: Content { + static let defaultContentType = Vapor.HTTPMediaType.formData + var name: String? + var status: String? + } + try request.content.encode(FormParams(name: name, status: status), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) + try beforeSend(&request) + } + } + + public enum UpdatePetWithForm { + case http405(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Updates a pet in the store with form data + POST /pet/{petId} + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter petId: (path) ID of pet that needs to be updated + - parameter name: (form) Updated name of the pet (optional) + - parameter status: (form) Updated status of the pet (optional) + - returns: `EventLoopFuture` of `UpdatePetWithForm` + */ + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return updatePetWithFormRaw(petId: petId, name: name, status: status, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> UpdatePetWithForm in + switch response.status.code { + case 405: + return .http405(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + uploads an image + POST /pet/{petId}/uploadImage + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter petId: (path) ID of pet to update + - parameter additionalMetadata: (form) Additional data to pass to server (optional) + - parameter file: (form) file to upload (optional) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func uploadFileRaw(petId: Int64, additionalMetadata: String? = nil, file: Data? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + var path = "/pet/{petId}/uploadImage" + let petIdPreEscape = String(describing: petId) + let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + struct FormParams: Content { + static let defaultContentType = Vapor.HTTPMediaType.formData + var additionalMetadata: String? + var file: Data? + } + try request.content.encode(FormParams(additionalMetadata: additionalMetadata, file: file), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) + try beforeSend(&request) + } + } + + public enum UploadFile { + case http200(value: ApiResponse, raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + uploads an image + POST /pet/{petId}/uploadImage + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter petId: (path) ID of pet to update + - parameter additionalMetadata: (form) Additional data to pass to server (optional) + - parameter file: (form) file to upload (optional) + - returns: `EventLoopFuture` of `UploadFile` + */ + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: Data? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return uploadFileRaw(petId: petId, additionalMetadata: additionalMetadata, file: file, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> UploadFile in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(ApiResponse.self, using: Configuration.contentConfiguration.requireDecoder(for: ApiResponse.defaultContentType)), raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + uploads an image (required) + POST /fake/{petId}/uploadImageWithRequiredFile + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter petId: (path) ID of pet to update + - parameter requiredFile: (form) file to upload + - parameter additionalMetadata: (form) Additional data to pass to server (optional) + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func uploadFileWithRequiredFileRaw(petId: Int64, requiredFile: Data, additionalMetadata: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + var path = "/fake/{petId}/uploadImageWithRequiredFile" + let petIdPreEscape = String(describing: petId) + let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + struct FormParams: Content { + static let defaultContentType = Vapor.HTTPMediaType.formData + var additionalMetadata: String? + var requiredFile: Data + } + try request.content.encode(FormParams(additionalMetadata: additionalMetadata, requiredFile: requiredFile), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) + try beforeSend(&request) + } + } + + public enum UploadFileWithRequiredFile { + case http200(value: ApiResponse, raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + uploads an image (required) + POST /fake/{petId}/uploadImageWithRequiredFile + - OAuth: + - type: oauth2 + - name: petstore_auth + - parameter petId: (path) ID of pet to update + - parameter requiredFile: (form) file to upload + - parameter additionalMetadata: (form) Additional data to pass to server (optional) + - returns: `EventLoopFuture` of `UploadFileWithRequiredFile` + */ + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: Data, additionalMetadata: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return uploadFileWithRequiredFileRaw(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> UploadFileWithRequiredFile in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(ApiResponse.self, using: Configuration.contentConfiguration.requireDecoder(for: ApiResponse.defaultContentType)), raw: response) + default: + return .http0(raw: response) + } + } + } + +} diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift new file mode 100644 index 00000000000..e4c2f8020b7 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift @@ -0,0 +1,228 @@ +// +// StoreAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Vapor +#if canImport(AnyCodable) +import AnyCodable +#endif + +open class StoreAPI { + + /** + Delete purchase order by ID + DELETE /store/order/{order_id} + For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + - parameter orderId: (path) ID of the order that needs to be deleted + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func deleteOrderRaw(orderId: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + var path = "/store/order/{order_id}" + let orderIdPreEscape = String(describing: orderId) + let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.DELETE, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + + try beforeSend(&request) + } + } + + public enum DeleteOrder { + case http400(raw: ClientResponse) + case http404(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Delete purchase order by ID + DELETE /store/order/{order_id} + For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + - parameter orderId: (path) ID of the order that needs to be deleted + - returns: `EventLoopFuture` of `DeleteOrder` + */ + open class func deleteOrder(orderId: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return deleteOrderRaw(orderId: orderId, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> DeleteOrder in + switch response.status.code { + case 400: + return .http400(raw: response) + case 404: + return .http404(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Returns pet inventories by status + GET /store/inventory + Returns a map of status codes to quantities + - API Key: + - type: apiKey api_key + - name: api_key + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func getInventoryRaw(headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/store/inventory" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + + try beforeSend(&request) + } + } + + public enum GetInventory { + case http200(value: [String: Int], raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Returns pet inventories by status + GET /store/inventory + Returns a map of status codes to quantities + - API Key: + - type: apiKey api_key + - name: api_key + - returns: `EventLoopFuture` of `GetInventory` + */ + open class func getInventory(headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return getInventoryRaw(headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> GetInventory in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode([String: Int].self, using: Configuration.contentConfiguration.requireDecoder(for: [String: Int].defaultContentType)), raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Find purchase order by ID + GET /store/order/{order_id} + For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + - parameter orderId: (path) ID of pet that needs to be fetched + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func getOrderByIdRaw(orderId: Int64, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + var path = "/store/order/{order_id}" + let orderIdPreEscape = String(describing: orderId) + let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + + try beforeSend(&request) + } + } + + public enum GetOrderById { + case http200(value: Order, raw: ClientResponse) + case http400(raw: ClientResponse) + case http404(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Find purchase order by ID + GET /store/order/{order_id} + For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + - parameter orderId: (path) ID of pet that needs to be fetched + - returns: `EventLoopFuture` of `GetOrderById` + */ + open class func getOrderById(orderId: Int64, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return getOrderByIdRaw(orderId: orderId, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> GetOrderById in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(Order.self, using: Configuration.contentConfiguration.requireDecoder(for: Order.defaultContentType)), raw: response) + case 400: + return .http400(raw: response) + case 404: + return .http404(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Place an order for a pet + POST /store/order + - parameter body: (body) order placed for purchasing the pet + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func placeOrderRaw(body: Order, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/store/order" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Order.defaultContentType)) + + try beforeSend(&request) + } + } + + public enum PlaceOrder { + case http200(value: Order, raw: ClientResponse) + case http400(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Place an order for a pet + POST /store/order + - parameter body: (body) order placed for purchasing the pet + - returns: `EventLoopFuture` of `PlaceOrder` + */ + open class func placeOrder(body: Order, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return placeOrderRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> PlaceOrder in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(Order.self, using: Configuration.contentConfiguration.requireDecoder(for: Order.defaultContentType)), raw: response) + case 400: + return .http400(raw: response) + default: + return .http0(raw: response) + } + } + } + +} diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/UserAPI.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/UserAPI.swift new file mode 100644 index 00000000000..b8eb7f4d576 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/UserAPI.swift @@ -0,0 +1,413 @@ +// +// UserAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Vapor +#if canImport(AnyCodable) +import AnyCodable +#endif + +open class UserAPI { + + /** + Create user + POST /user + This can only be done by the logged in user. + - parameter body: (body) Created user object + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func createUserRaw(body: User, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/user" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: User.defaultContentType)) + + try beforeSend(&request) + } + } + + public enum CreateUser { + case http0(raw: ClientResponse) + } + + /** + Create user + POST /user + This can only be done by the logged in user. + - parameter body: (body) Created user object + - returns: `EventLoopFuture` of `CreateUser` + */ + open class func createUser(body: User, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return createUserRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> CreateUser in + switch response.status.code { + default: + return .http0(raw: response) + } + } + } + + + /** + Creates list of users with given input array + POST /user/createWithArray + - parameter body: (body) List of user object + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func createUsersWithArrayInputRaw(body: [User], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/user/createWithArray" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: [User].defaultContentType)) + + try beforeSend(&request) + } + } + + public enum CreateUsersWithArrayInput { + case http0(raw: ClientResponse) + } + + /** + Creates list of users with given input array + POST /user/createWithArray + - parameter body: (body) List of user object + - returns: `EventLoopFuture` of `CreateUsersWithArrayInput` + */ + open class func createUsersWithArrayInput(body: [User], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return createUsersWithArrayInputRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> CreateUsersWithArrayInput in + switch response.status.code { + default: + return .http0(raw: response) + } + } + } + + + /** + Creates list of users with given input array + POST /user/createWithList + - parameter body: (body) List of user object + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func createUsersWithListInputRaw(body: [User], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/user/createWithList" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: [User].defaultContentType)) + + try beforeSend(&request) + } + } + + public enum CreateUsersWithListInput { + case http0(raw: ClientResponse) + } + + /** + Creates list of users with given input array + POST /user/createWithList + - parameter body: (body) List of user object + - returns: `EventLoopFuture` of `CreateUsersWithListInput` + */ + open class func createUsersWithListInput(body: [User], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return createUsersWithListInputRaw(body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> CreateUsersWithListInput in + switch response.status.code { + default: + return .http0(raw: response) + } + } + } + + + /** + Delete user + DELETE /user/{username} + This can only be done by the logged in user. + - parameter username: (path) The name that needs to be deleted + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func deleteUserRaw(username: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + var path = "/user/{username}" + let usernamePreEscape = String(describing: username) + let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.DELETE, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + + try beforeSend(&request) + } + } + + public enum DeleteUser { + case http400(raw: ClientResponse) + case http404(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Delete user + DELETE /user/{username} + This can only be done by the logged in user. + - parameter username: (path) The name that needs to be deleted + - returns: `EventLoopFuture` of `DeleteUser` + */ + open class func deleteUser(username: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return deleteUserRaw(username: username, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> DeleteUser in + switch response.status.code { + case 400: + return .http400(raw: response) + case 404: + return .http404(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Get user by user name + GET /user/{username} + - parameter username: (path) The name that needs to be fetched. Use user1 for testing. + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func getUserByNameRaw(username: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + var path = "/user/{username}" + let usernamePreEscape = String(describing: username) + let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + + try beforeSend(&request) + } + } + + public enum GetUserByName { + case http200(value: User, raw: ClientResponse) + case http400(raw: ClientResponse) + case http404(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Get user by user name + GET /user/{username} + - parameter username: (path) The name that needs to be fetched. Use user1 for testing. + - returns: `EventLoopFuture` of `GetUserByName` + */ + open class func getUserByName(username: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return getUserByNameRaw(username: username, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> GetUserByName in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(User.self, using: Configuration.contentConfiguration.requireDecoder(for: User.defaultContentType)), raw: response) + case 400: + return .http400(raw: response) + case 404: + return .http404(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Logs user into the system + GET /user/login + - responseHeaders: [X-Rate-Limit(Int), X-Expires-After(Date)] + - parameter username: (query) The user name for login + - parameter password: (query) The password for login in clear text + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func loginUserRaw(username: String, password: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/user/login" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + struct QueryParams: Content { + var username: String + var password: String + } + try request.query.encode(QueryParams(username: username, password: password)) + + try beforeSend(&request) + } + } + + public enum LoginUser { + case http200(value: String, raw: ClientResponse) + case http400(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Logs user into the system + GET /user/login + - responseHeaders: [X-Rate-Limit(Int), X-Expires-After(Date)] + - parameter username: (query) The user name for login + - parameter password: (query) The password for login in clear text + - returns: `EventLoopFuture` of `LoginUser` + */ + open class func loginUser(username: String, password: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return loginUserRaw(username: username, password: password, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> LoginUser in + switch response.status.code { + case 200: + return .http200(value: try response.content.decode(String.self, using: Configuration.contentConfiguration.requireDecoder(for: String.defaultContentType)), raw: response) + case 400: + return .http400(raw: response) + default: + return .http0(raw: response) + } + } + } + + + /** + Logs out current logged in user session + GET /user/logout + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func logoutUserRaw(headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + let path = "/user/logout" + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + + try beforeSend(&request) + } + } + + public enum LogoutUser { + case http0(raw: ClientResponse) + } + + /** + Logs out current logged in user session + GET /user/logout + - returns: `EventLoopFuture` of `LogoutUser` + */ + open class func logoutUser(headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return logoutUserRaw(headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> LogoutUser in + switch response.status.code { + default: + return .http0(raw: response) + } + } + } + + + /** + Updated user + PUT /user/{username} + This can only be done by the logged in user. + - parameter username: (path) name that need to be deleted + - parameter body: (body) Updated user object + - returns: `EventLoopFuture` of `ClientResponse` + */ + open class func updateUserRaw(username: String, body: User, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + var path = "/user/{username}" + let usernamePreEscape = String(describing: username) + let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" + path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let URLString = PetstoreClient.basePath + path + + guard let apiClient = Configuration.apiClient else { + fatalError("Configuration.apiClient is not set.") + } + + return apiClient.send(.PUT, headers: headers, to: URI(string: URLString)) { request in + try Configuration.apiWrapper(&request) + + + try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: User.defaultContentType)) + + try beforeSend(&request) + } + } + + public enum UpdateUser { + case http400(raw: ClientResponse) + case http404(raw: ClientResponse) + case http0(raw: ClientResponse) + } + + /** + Updated user + PUT /user/{username} + This can only be done by the logged in user. + - parameter username: (path) name that need to be deleted + - parameter body: (body) Updated user object + - returns: `EventLoopFuture` of `UpdateUser` + */ + open class func updateUser(username: String, body: User, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { + return updateUserRaw(username: username, body: body, headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> UpdateUser in + switch response.status.code { + case 400: + return .http400(raw: response) + case 404: + return .http404(raw: response) + default: + return .http0(raw: response) + } + } + } + +} diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Configuration.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Configuration.swift new file mode 100644 index 00000000000..db8707ad7a7 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Configuration.swift @@ -0,0 +1,14 @@ +// Configuration.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +import Vapor + +open class Configuration { + public static var apiClient: Vapor.Client? = nil + public static var apiWrapper: (inout Vapor.ClientRequest) throws -> () = { _ in } + public static var contentConfiguration = ContentConfiguration.default() +} diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Extensions.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Extensions.swift new file mode 100644 index 00000000000..b212303ae1d --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Extensions.swift @@ -0,0 +1,131 @@ +// Extensions.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +extension String: CodingKey { + + public var stringValue: String { + return self + } + + public init?(stringValue: String) { + self.init(stringLiteral: stringValue) + } + + public var intValue: Int? { + return nil + } + + public init?(intValue: Int) { + return nil + } + +} + +extension KeyedEncodingContainerProtocol { + + public mutating func encodeArray(_ values: [T], forKey key: Self.Key) throws where T: Encodable { + var arrayContainer = nestedUnkeyedContainer(forKey: key) + try arrayContainer.encode(contentsOf: values) + } + + public mutating func encodeArrayIfPresent(_ values: [T]?, forKey key: Self.Key) throws where T: Encodable { + if let values = values { + try encodeArray(values, forKey: key) + } + } + + public mutating func encodeMap(_ pairs: [Self.Key: T]) throws where T: Encodable { + for (key, value) in pairs { + try encode(value, forKey: key) + } + } + + public mutating func encodeMapIfPresent(_ pairs: [Self.Key: T]?) throws where T: Encodable { + if let pairs = pairs { + try encodeMap(pairs) + } + } + +} + +extension KeyedDecodingContainerProtocol { + + public func decodeArray(_ type: T.Type, forKey key: Self.Key) throws -> [T] where T: Decodable { + var tmpArray = [T]() + + var nestedContainer = try nestedUnkeyedContainer(forKey: key) + while !nestedContainer.isAtEnd { + let arrayValue = try nestedContainer.decode(T.self) + tmpArray.append(arrayValue) + } + + return tmpArray + } + + public func decodeArrayIfPresent(_ type: T.Type, forKey key: Self.Key) throws -> [T]? where T: Decodable { + var tmpArray: [T]? + + if contains(key) { + tmpArray = try decodeArray(T.self, forKey: key) + } + + return tmpArray + } + + public func decodeMap(_ type: T.Type, excludedKeys: Set) throws -> [Self.Key: T] where T: Decodable { + var map: [Self.Key: T] = [:] + + for key in allKeys { + if !excludedKeys.contains(key) { + let value = try decode(T.self, forKey: key) + map[key] = value + } + } + + return map + } + +} + +extension UUID: Content { } + +extension URL: Content { } + +extension Bool: Content { } + +extension Set: ResponseEncodable where Element: Content { + public func encodeResponse(for request: Vapor.Request) -> EventLoopFuture { + let response = Vapor.Response() + do { + try response.content.encode(Array(self)) + } catch { + return request.eventLoop.makeFailedFuture(error) + } + return request.eventLoop.makeSucceededFuture(response) + } +} + +extension Set: RequestDecodable where Element: Content { + public static func decodeRequest(_ request: Vapor.Request) -> EventLoopFuture { + do { + let content = try request.content.decode([Element].self) + return request.eventLoop.makeSucceededFuture(Set(content)) + } catch { + return request.eventLoop.makeFailedFuture(error) + } + } +} + +extension Set: Content where Element: Content { } + +extension AnyCodable: Content {} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesAnyType.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesAnyType.swift new file mode 100644 index 00000000000..2f18010d237 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesAnyType.swift @@ -0,0 +1,72 @@ +// +// AdditionalPropertiesAnyType.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class AdditionalPropertiesAnyType: Content, Hashable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + + public var additionalProperties: [String: AnyCodable] = [:] + + public subscript(key: String) -> AnyCodable? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + + name = try container.decodeIfPresent(String.self, forKey: .name) + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(AnyCodable.self, excludedKeys: nonAdditionalPropertyKeys) + } + + public static func == (lhs: AdditionalPropertiesAnyType, rhs: AdditionalPropertiesAnyType) -> Bool { + lhs.name == rhs.name + && lhs.additionalProperties == rhs.additionalProperties + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(name?.hashValue) + hasher.combine(additionalProperties.hashValue) + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesArray.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesArray.swift new file mode 100644 index 00000000000..d590cb3a390 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesArray.swift @@ -0,0 +1,72 @@ +// +// AdditionalPropertiesArray.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class AdditionalPropertiesArray: Content, Hashable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + + public var additionalProperties: [String: [AnyCodable]] = [:] + + public subscript(key: String) -> [AnyCodable]? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + + name = try container.decodeIfPresent(String.self, forKey: .name) + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap([AnyCodable].self, excludedKeys: nonAdditionalPropertyKeys) + } + + public static func == (lhs: AdditionalPropertiesArray, rhs: AdditionalPropertiesArray) -> Bool { + lhs.name == rhs.name + && lhs.additionalProperties == rhs.additionalProperties + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(name?.hashValue) + hasher.combine(additionalProperties.hashValue) + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesBoolean.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesBoolean.swift new file mode 100644 index 00000000000..8dc293a604e --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesBoolean.swift @@ -0,0 +1,72 @@ +// +// AdditionalPropertiesBoolean.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class AdditionalPropertiesBoolean: Content, Hashable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + + public var additionalProperties: [String: Bool] = [:] + + public subscript(key: String) -> Bool? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + + name = try container.decodeIfPresent(String.self, forKey: .name) + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + } + + public static func == (lhs: AdditionalPropertiesBoolean, rhs: AdditionalPropertiesBoolean) -> Bool { + lhs.name == rhs.name + && lhs.additionalProperties == rhs.additionalProperties + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(name?.hashValue) + hasher.combine(additionalProperties.hashValue) + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift new file mode 100644 index 00000000000..de9ef459a05 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesClass.swift @@ -0,0 +1,103 @@ +// +// AdditionalPropertiesClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class AdditionalPropertiesClass: Content, Hashable { + + public var mapString: [String: String]? + public var mapNumber: [String: Double]? + public var mapInteger: [String: Int]? + public var mapBoolean: [String: Bool]? + public var mapArrayInteger: [String: [Int]]? + public var mapArrayAnytype: [String: [AnyCodable]]? + public var mapMapString: [String: [String: String]]? + public var mapMapAnytype: [String: [String: AnyCodable]]? + public var anytype1: AnyCodable? + public var anytype2: AnyCodable? + public var anytype3: AnyCodable? + + public init(mapString: [String: String]? = nil, mapNumber: [String: Double]? = nil, mapInteger: [String: Int]? = nil, mapBoolean: [String: Bool]? = nil, mapArrayInteger: [String: [Int]]? = nil, mapArrayAnytype: [String: [AnyCodable]]? = nil, mapMapString: [String: [String: String]]? = nil, mapMapAnytype: [String: [String: AnyCodable]]? = nil, anytype1: AnyCodable? = nil, anytype2: AnyCodable? = nil, anytype3: AnyCodable? = nil) { + self.mapString = mapString + self.mapNumber = mapNumber + self.mapInteger = mapInteger + self.mapBoolean = mapBoolean + self.mapArrayInteger = mapArrayInteger + self.mapArrayAnytype = mapArrayAnytype + self.mapMapString = mapMapString + self.mapMapAnytype = mapMapAnytype + self.anytype1 = anytype1 + self.anytype2 = anytype2 + self.anytype3 = anytype3 + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case mapString = "map_string" + case mapNumber = "map_number" + case mapInteger = "map_integer" + case mapBoolean = "map_boolean" + case mapArrayInteger = "map_array_integer" + case mapArrayAnytype = "map_array_anytype" + case mapMapString = "map_map_string" + case mapMapAnytype = "map_map_anytype" + case anytype1 = "anytype_1" + case anytype2 = "anytype_2" + case anytype3 = "anytype_3" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(mapString, forKey: .mapString) + try container.encodeIfPresent(mapNumber, forKey: .mapNumber) + try container.encodeIfPresent(mapInteger, forKey: .mapInteger) + try container.encodeIfPresent(mapBoolean, forKey: .mapBoolean) + try container.encodeIfPresent(mapArrayInteger, forKey: .mapArrayInteger) + try container.encodeIfPresent(mapArrayAnytype, forKey: .mapArrayAnytype) + try container.encodeIfPresent(mapMapString, forKey: .mapMapString) + try container.encodeIfPresent(mapMapAnytype, forKey: .mapMapAnytype) + try container.encodeIfPresent(anytype1, forKey: .anytype1) + try container.encodeIfPresent(anytype2, forKey: .anytype2) + try container.encodeIfPresent(anytype3, forKey: .anytype3) + } + + public static func == (lhs: AdditionalPropertiesClass, rhs: AdditionalPropertiesClass) -> Bool { + lhs.mapString == rhs.mapString && + lhs.mapNumber == rhs.mapNumber && + lhs.mapInteger == rhs.mapInteger && + lhs.mapBoolean == rhs.mapBoolean && + lhs.mapArrayInteger == rhs.mapArrayInteger && + lhs.mapArrayAnytype == rhs.mapArrayAnytype && + lhs.mapMapString == rhs.mapMapString && + lhs.mapMapAnytype == rhs.mapMapAnytype && + lhs.anytype1 == rhs.anytype1 && + lhs.anytype2 == rhs.anytype2 && + lhs.anytype3 == rhs.anytype3 + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(mapString?.hashValue) + hasher.combine(mapNumber?.hashValue) + hasher.combine(mapInteger?.hashValue) + hasher.combine(mapBoolean?.hashValue) + hasher.combine(mapArrayInteger?.hashValue) + hasher.combine(mapArrayAnytype?.hashValue) + hasher.combine(mapMapString?.hashValue) + hasher.combine(mapMapAnytype?.hashValue) + hasher.combine(anytype1?.hashValue) + hasher.combine(anytype2?.hashValue) + hasher.combine(anytype3?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesInteger.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesInteger.swift new file mode 100644 index 00000000000..5a7c412958a --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesInteger.swift @@ -0,0 +1,72 @@ +// +// AdditionalPropertiesInteger.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class AdditionalPropertiesInteger: Content, Hashable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + + public var additionalProperties: [String: Int] = [:] + + public subscript(key: String) -> Int? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + + name = try container.decodeIfPresent(String.self, forKey: .name) + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Int.self, excludedKeys: nonAdditionalPropertyKeys) + } + + public static func == (lhs: AdditionalPropertiesInteger, rhs: AdditionalPropertiesInteger) -> Bool { + lhs.name == rhs.name + && lhs.additionalProperties == rhs.additionalProperties + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(name?.hashValue) + hasher.combine(additionalProperties.hashValue) + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesNumber.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesNumber.swift new file mode 100644 index 00000000000..259b29dae57 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesNumber.swift @@ -0,0 +1,72 @@ +// +// AdditionalPropertiesNumber.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class AdditionalPropertiesNumber: Content, Hashable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + + public var additionalProperties: [String: Double] = [:] + + public subscript(key: String) -> Double? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + + name = try container.decodeIfPresent(String.self, forKey: .name) + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Double.self, excludedKeys: nonAdditionalPropertyKeys) + } + + public static func == (lhs: AdditionalPropertiesNumber, rhs: AdditionalPropertiesNumber) -> Bool { + lhs.name == rhs.name + && lhs.additionalProperties == rhs.additionalProperties + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(name?.hashValue) + hasher.combine(additionalProperties.hashValue) + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesObject.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesObject.swift new file mode 100644 index 00000000000..c8c0052c00c --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesObject.swift @@ -0,0 +1,72 @@ +// +// AdditionalPropertiesObject.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class AdditionalPropertiesObject: Content, Hashable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + + public var additionalProperties: [String: [String: AnyCodable]] = [:] + + public subscript(key: String) -> [String: AnyCodable]? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + + name = try container.decodeIfPresent(String.self, forKey: .name) + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap([String: AnyCodable].self, excludedKeys: nonAdditionalPropertyKeys) + } + + public static func == (lhs: AdditionalPropertiesObject, rhs: AdditionalPropertiesObject) -> Bool { + lhs.name == rhs.name + && lhs.additionalProperties == rhs.additionalProperties + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(name?.hashValue) + hasher.combine(additionalProperties.hashValue) + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesString.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesString.swift new file mode 100644 index 00000000000..13456e89d1b --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AdditionalPropertiesString.swift @@ -0,0 +1,72 @@ +// +// AdditionalPropertiesString.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class AdditionalPropertiesString: Content, Hashable { + + public var name: String? + + public init(name: String? = nil) { + self.name = name + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + } + + public var additionalProperties: [String: String] = [:] + + public subscript(key: String) -> String? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + + name = try container.decodeIfPresent(String.self, forKey: .name) + var nonAdditionalPropertyKeys = Set() + nonAdditionalPropertyKeys.insert("name") + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(String.self, excludedKeys: nonAdditionalPropertyKeys) + } + + public static func == (lhs: AdditionalPropertiesString, rhs: AdditionalPropertiesString) -> Bool { + lhs.name == rhs.name + && lhs.additionalProperties == rhs.additionalProperties + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(name?.hashValue) + hasher.combine(additionalProperties.hashValue) + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Animal.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Animal.swift new file mode 100644 index 00000000000..344d5b13b1f --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Animal.swift @@ -0,0 +1,49 @@ +// +// Animal.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class Animal: Content, Hashable { + + public var className: String + public var color: String? = "red" + + public init(className: String, color: String? = "red") { + self.className = className + self.color = color + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case className + case color + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(className, forKey: .className) + try container.encodeIfPresent(color, forKey: .color) + } + + public static func == (lhs: Animal, rhs: Animal) -> Bool { + lhs.className == rhs.className && + lhs.color == rhs.color + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(className.hashValue) + hasher.combine(color?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AnimalFarm.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AnimalFarm.swift new file mode 100644 index 00000000000..1b3a286f089 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/AnimalFarm.swift @@ -0,0 +1,14 @@ +// +// AnimalFarm.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public typealias AnimalFarm = [Animal] diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ApiResponse.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ApiResponse.swift new file mode 100644 index 00000000000..4323130668e --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ApiResponse.swift @@ -0,0 +1,55 @@ +// +// ApiResponse.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class ApiResponse: Content, Hashable { + + public var code: Int? + public var type: String? + public var message: String? + + public init(code: Int? = nil, type: String? = nil, message: String? = nil) { + self.code = code + self.type = type + self.message = message + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case code + case type + case message + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(code, forKey: .code) + try container.encodeIfPresent(type, forKey: .type) + try container.encodeIfPresent(message, forKey: .message) + } + + public static func == (lhs: ApiResponse, rhs: ApiResponse) -> Bool { + lhs.code == rhs.code && + lhs.type == rhs.type && + lhs.message == rhs.message + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(code?.hashValue) + hasher.combine(type?.hashValue) + hasher.combine(message?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift new file mode 100644 index 00000000000..cd3669774bf --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ArrayOfArrayOfNumberOnly.swift @@ -0,0 +1,43 @@ +// +// ArrayOfArrayOfNumberOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class ArrayOfArrayOfNumberOnly: Content, Hashable { + + public var arrayArrayNumber: [[Double]]? + + public init(arrayArrayNumber: [[Double]]? = nil) { + self.arrayArrayNumber = arrayArrayNumber + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case arrayArrayNumber = "ArrayArrayNumber" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) + } + + public static func == (lhs: ArrayOfArrayOfNumberOnly, rhs: ArrayOfArrayOfNumberOnly) -> Bool { + lhs.arrayArrayNumber == rhs.arrayArrayNumber + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(arrayArrayNumber?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift new file mode 100644 index 00000000000..e222fdd2adb --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ArrayOfNumberOnly.swift @@ -0,0 +1,43 @@ +// +// ArrayOfNumberOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class ArrayOfNumberOnly: Content, Hashable { + + public var arrayNumber: [Double]? + + public init(arrayNumber: [Double]? = nil) { + self.arrayNumber = arrayNumber + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case arrayNumber = "ArrayNumber" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) + } + + public static func == (lhs: ArrayOfNumberOnly, rhs: ArrayOfNumberOnly) -> Bool { + lhs.arrayNumber == rhs.arrayNumber + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(arrayNumber?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ArrayTest.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ArrayTest.swift new file mode 100644 index 00000000000..87d4e0b8239 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ArrayTest.swift @@ -0,0 +1,55 @@ +// +// ArrayTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class ArrayTest: Content, Hashable { + + public var arrayOfString: [String]? + public var arrayArrayOfInteger: [[Int64]]? + public var arrayArrayOfModel: [[ReadOnlyFirst]]? + + public init(arrayOfString: [String]? = nil, arrayArrayOfInteger: [[Int64]]? = nil, arrayArrayOfModel: [[ReadOnlyFirst]]? = nil) { + self.arrayOfString = arrayOfString + self.arrayArrayOfInteger = arrayArrayOfInteger + self.arrayArrayOfModel = arrayArrayOfModel + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case arrayOfString = "array_of_string" + case arrayArrayOfInteger = "array_array_of_integer" + case arrayArrayOfModel = "array_array_of_model" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(arrayOfString, forKey: .arrayOfString) + try container.encodeIfPresent(arrayArrayOfInteger, forKey: .arrayArrayOfInteger) + try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) + } + + public static func == (lhs: ArrayTest, rhs: ArrayTest) -> Bool { + lhs.arrayOfString == rhs.arrayOfString && + lhs.arrayArrayOfInteger == rhs.arrayArrayOfInteger && + lhs.arrayArrayOfModel == rhs.arrayArrayOfModel + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(arrayOfString?.hashValue) + hasher.combine(arrayArrayOfInteger?.hashValue) + hasher.combine(arrayArrayOfModel?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/BigCat.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/BigCat.swift new file mode 100644 index 00000000000..f68dcec1d65 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/BigCat.swift @@ -0,0 +1,49 @@ +// +// BigCat.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class BigCat: Content, Hashable { + + public enum Kind: String, Content, Hashable, CaseIterable { + case lions = "lions" + case tigers = "tigers" + case leopards = "leopards" + case jaguars = "jaguars" + } + public var kind: Kind? + + public init(kind: Kind? = nil) { + self.kind = kind + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case kind + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(kind, forKey: .kind) + } + + public static func == (lhs: BigCat, rhs: BigCat) -> Bool { + lhs.kind == rhs.kind + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(kind?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/BigCatAllOf.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/BigCatAllOf.swift new file mode 100644 index 00000000000..0945e87ed9c --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/BigCatAllOf.swift @@ -0,0 +1,49 @@ +// +// BigCatAllOf.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class BigCatAllOf: Content, Hashable { + + public enum Kind: String, Content, Hashable, CaseIterable { + case lions = "lions" + case tigers = "tigers" + case leopards = "leopards" + case jaguars = "jaguars" + } + public var kind: Kind? + + public init(kind: Kind? = nil) { + self.kind = kind + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case kind + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(kind, forKey: .kind) + } + + public static func == (lhs: BigCatAllOf, rhs: BigCatAllOf) -> Bool { + lhs.kind == rhs.kind + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(kind?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Capitalization.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Capitalization.swift new file mode 100644 index 00000000000..3cc1d9d4cf3 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Capitalization.swift @@ -0,0 +1,74 @@ +// +// Capitalization.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class Capitalization: Content, Hashable { + + public var smallCamel: String? + public var capitalCamel: String? + public var smallSnake: String? + public var capitalSnake: String? + public var sCAETHFlowPoints: String? + /** Name of the pet */ + public var ATT_NAME: String? + + public init(smallCamel: String? = nil, capitalCamel: String? = nil, smallSnake: String? = nil, capitalSnake: String? = nil, sCAETHFlowPoints: String? = nil, ATT_NAME: String? = nil) { + self.smallCamel = smallCamel + self.capitalCamel = capitalCamel + self.smallSnake = smallSnake + self.capitalSnake = capitalSnake + self.sCAETHFlowPoints = sCAETHFlowPoints + self.ATT_NAME = ATT_NAME + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case smallCamel + case capitalCamel = "CapitalCamel" + case smallSnake = "small_Snake" + case capitalSnake = "Capital_Snake" + case sCAETHFlowPoints = "SCA_ETH_Flow_Points" + case ATT_NAME + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(smallCamel, forKey: .smallCamel) + try container.encodeIfPresent(capitalCamel, forKey: .capitalCamel) + try container.encodeIfPresent(smallSnake, forKey: .smallSnake) + try container.encodeIfPresent(capitalSnake, forKey: .capitalSnake) + try container.encodeIfPresent(sCAETHFlowPoints, forKey: .sCAETHFlowPoints) + try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) + } + + public static func == (lhs: Capitalization, rhs: Capitalization) -> Bool { + lhs.smallCamel == rhs.smallCamel && + lhs.capitalCamel == rhs.capitalCamel && + lhs.smallSnake == rhs.smallSnake && + lhs.capitalSnake == rhs.capitalSnake && + lhs.sCAETHFlowPoints == rhs.sCAETHFlowPoints && + lhs.ATT_NAME == rhs.ATT_NAME + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(smallCamel?.hashValue) + hasher.combine(capitalCamel?.hashValue) + hasher.combine(smallSnake?.hashValue) + hasher.combine(capitalSnake?.hashValue) + hasher.combine(sCAETHFlowPoints?.hashValue) + hasher.combine(ATT_NAME?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Cat.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Cat.swift new file mode 100644 index 00000000000..6c0d6f303c5 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Cat.swift @@ -0,0 +1,55 @@ +// +// Cat.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class Cat: Content, Hashable { + + public var className: String + public var color: String? = "red" + public var declawed: Bool? + + public init(className: String, color: String? = "red", declawed: Bool? = nil) { + self.className = className + self.color = color + self.declawed = declawed + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case className + case color + case declawed + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(className, forKey: .className) + try container.encodeIfPresent(color, forKey: .color) + try container.encodeIfPresent(declawed, forKey: .declawed) + } + + public static func == (lhs: Cat, rhs: Cat) -> Bool { + lhs.className == rhs.className && + lhs.color == rhs.color && + lhs.declawed == rhs.declawed + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(className.hashValue) + hasher.combine(color?.hashValue) + hasher.combine(declawed?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/CatAllOf.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/CatAllOf.swift new file mode 100644 index 00000000000..2cfbd9fd02d --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/CatAllOf.swift @@ -0,0 +1,43 @@ +// +// CatAllOf.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class CatAllOf: Content, Hashable { + + public var declawed: Bool? + + public init(declawed: Bool? = nil) { + self.declawed = declawed + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case declawed + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(declawed, forKey: .declawed) + } + + public static func == (lhs: CatAllOf, rhs: CatAllOf) -> Bool { + lhs.declawed == rhs.declawed + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(declawed?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Category.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Category.swift new file mode 100644 index 00000000000..ca2a487b438 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Category.swift @@ -0,0 +1,49 @@ +// +// Category.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class Category: Content, Hashable { + + public var id: Int64? + public var name: String = "default-name" + + public init(id: Int64? = nil, name: String = "default-name") { + self.id = id + self.name = name + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case id + case name + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(id, forKey: .id) + try container.encode(name, forKey: .name) + } + + public static func == (lhs: Category, rhs: Category) -> Bool { + lhs.id == rhs.id && + lhs.name == rhs.name + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(id?.hashValue) + hasher.combine(name.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ClassModel.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ClassModel.swift new file mode 100644 index 00000000000..a50bdf9ffd1 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ClassModel.swift @@ -0,0 +1,44 @@ +// +// ClassModel.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +/** Model for testing model with \"_class\" property */ +public final class ClassModel: Content, Hashable { + + public var `class`: String? + + public init(`class`: String? = nil) { + self.`class` = `class` + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case `class` = "_class" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(`class`, forKey: .`class`) + } + + public static func == (lhs: ClassModel, rhs: ClassModel) -> Bool { + lhs.`class` == rhs.`class` + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(`class`?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Client.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Client.swift new file mode 100644 index 00000000000..1ac630b90e9 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Client.swift @@ -0,0 +1,43 @@ +// +// Client.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class Client: Content, Hashable { + + public var client: String? + + public init(client: String? = nil) { + self.client = client + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case client + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(client, forKey: .client) + } + + public static func == (lhs: Client, rhs: Client) -> Bool { + lhs.client == rhs.client + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(client?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Dog.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Dog.swift new file mode 100644 index 00000000000..71a8002b754 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Dog.swift @@ -0,0 +1,55 @@ +// +// Dog.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class Dog: Content, Hashable { + + public var className: String + public var color: String? = "red" + public var breed: String? + + public init(className: String, color: String? = "red", breed: String? = nil) { + self.className = className + self.color = color + self.breed = breed + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case className + case color + case breed + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(className, forKey: .className) + try container.encodeIfPresent(color, forKey: .color) + try container.encodeIfPresent(breed, forKey: .breed) + } + + public static func == (lhs: Dog, rhs: Dog) -> Bool { + lhs.className == rhs.className && + lhs.color == rhs.color && + lhs.breed == rhs.breed + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(className.hashValue) + hasher.combine(color?.hashValue) + hasher.combine(breed?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/DogAllOf.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/DogAllOf.swift new file mode 100644 index 00000000000..69352b02b13 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/DogAllOf.swift @@ -0,0 +1,43 @@ +// +// DogAllOf.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class DogAllOf: Content, Hashable { + + public var breed: String? + + public init(breed: String? = nil) { + self.breed = breed + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case breed + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(breed, forKey: .breed) + } + + public static func == (lhs: DogAllOf, rhs: DogAllOf) -> Bool { + lhs.breed == rhs.breed + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(breed?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/EnumArrays.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/EnumArrays.swift new file mode 100644 index 00000000000..0b2b8c32844 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/EnumArrays.swift @@ -0,0 +1,57 @@ +// +// EnumArrays.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class EnumArrays: Content, Hashable { + + public enum JustSymbol: String, Content, Hashable, CaseIterable { + case greaterThanOrEqualTo = ">=" + case dollar = "$" + } + public enum ArrayEnum: String, Content, Hashable, CaseIterable { + case fish = "fish" + case crab = "crab" + } + public var justSymbol: JustSymbol? + public var arrayEnum: [ArrayEnum]? + + public init(justSymbol: JustSymbol? = nil, arrayEnum: [ArrayEnum]? = nil) { + self.justSymbol = justSymbol + self.arrayEnum = arrayEnum + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case justSymbol = "just_symbol" + case arrayEnum = "array_enum" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(justSymbol, forKey: .justSymbol) + try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) + } + + public static func == (lhs: EnumArrays, rhs: EnumArrays) -> Bool { + lhs.justSymbol == rhs.justSymbol && + lhs.arrayEnum == rhs.arrayEnum + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(justSymbol?.hashValue) + hasher.combine(arrayEnum?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/EnumClass.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/EnumClass.swift new file mode 100644 index 00000000000..26c121d1543 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/EnumClass.swift @@ -0,0 +1,18 @@ +// +// EnumClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public enum EnumClass: String, Content, Hashable, CaseIterable { + case abc = "_abc" + case efg = "-efg" + case xyz = "(xyz)" +} diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/EnumTest.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/EnumTest.swift new file mode 100644 index 00000000000..044d121b9f3 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/EnumTest.swift @@ -0,0 +1,85 @@ +// +// EnumTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class EnumTest: Content, Hashable { + + public enum EnumString: String, Content, Hashable, CaseIterable { + case upper = "UPPER" + case lower = "lower" + case empty = "" + } + public enum EnumStringRequired: String, Content, Hashable, CaseIterable { + case upper = "UPPER" + case lower = "lower" + case empty = "" + } + public enum EnumInteger: Int, Content, Hashable, CaseIterable { + case _1 = 1 + case number1 = -1 + } + public enum EnumNumber: Double, Content, Hashable, CaseIterable { + case _11 = 1.1 + case number12 = -1.2 + } + public var enumString: EnumString? + public var enumStringRequired: EnumStringRequired + public var enumInteger: EnumInteger? + public var enumNumber: EnumNumber? + public var outerEnum: OuterEnum? + + public init(enumString: EnumString? = nil, enumStringRequired: EnumStringRequired, enumInteger: EnumInteger? = nil, enumNumber: EnumNumber? = nil, outerEnum: OuterEnum? = nil) { + self.enumString = enumString + self.enumStringRequired = enumStringRequired + self.enumInteger = enumInteger + self.enumNumber = enumNumber + self.outerEnum = outerEnum + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case enumString = "enum_string" + case enumStringRequired = "enum_string_required" + case enumInteger = "enum_integer" + case enumNumber = "enum_number" + case outerEnum + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(enumString, forKey: .enumString) + try container.encode(enumStringRequired, forKey: .enumStringRequired) + try container.encodeIfPresent(enumInteger, forKey: .enumInteger) + try container.encodeIfPresent(enumNumber, forKey: .enumNumber) + try container.encodeIfPresent(outerEnum, forKey: .outerEnum) + } + + public static func == (lhs: EnumTest, rhs: EnumTest) -> Bool { + lhs.enumString == rhs.enumString && + lhs.enumStringRequired == rhs.enumStringRequired && + lhs.enumInteger == rhs.enumInteger && + lhs.enumNumber == rhs.enumNumber && + lhs.outerEnum == rhs.outerEnum + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(enumString?.hashValue) + hasher.combine(enumStringRequired.hashValue) + hasher.combine(enumInteger?.hashValue) + hasher.combine(enumNumber?.hashValue) + hasher.combine(outerEnum?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/File.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/File.swift new file mode 100644 index 00000000000..d7505802943 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/File.swift @@ -0,0 +1,45 @@ +// +// File.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +/** Must be named `File` for test. */ +public final class File: Content, Hashable { + + /** Test capitalization */ + public var sourceURI: String? + + public init(sourceURI: String? = nil) { + self.sourceURI = sourceURI + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case sourceURI + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(sourceURI, forKey: .sourceURI) + } + + public static func == (lhs: File, rhs: File) -> Bool { + lhs.sourceURI == rhs.sourceURI + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(sourceURI?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift new file mode 100644 index 00000000000..c2426485fe6 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/FileSchemaTestClass.swift @@ -0,0 +1,49 @@ +// +// FileSchemaTestClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class FileSchemaTestClass: Content, Hashable { + + public var file: File? + public var files: [File]? + + public init(file: File? = nil, files: [File]? = nil) { + self.file = file + self.files = files + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case file + case files + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(file, forKey: .file) + try container.encodeIfPresent(files, forKey: .files) + } + + public static func == (lhs: FileSchemaTestClass, rhs: FileSchemaTestClass) -> Bool { + lhs.file == rhs.file && + lhs.files == rhs.files + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(file?.hashValue) + hasher.combine(files?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/FormatTest.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/FormatTest.swift new file mode 100644 index 00000000000..dfdf6ae588c --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/FormatTest.swift @@ -0,0 +1,121 @@ +// +// FormatTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class FormatTest: Content, Hashable { + + public var integer: Int? + public var int32: Int? + public var int64: Int64? + public var number: Double + public var float: Float? + public var double: Double? + public var string: String? + public var byte: Data + public var binary: Data? + public var date: Date + public var dateTime: Date? + public var uuid: UUID? + public var password: String + public var bigDecimal: Decimal? + + public init(integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, number: Double, float: Float? = nil, double: Double? = nil, string: String? = nil, byte: Data, binary: Data? = nil, date: Date, dateTime: Date? = nil, uuid: UUID? = nil, password: String, bigDecimal: Decimal? = nil) { + self.integer = integer + self.int32 = int32 + self.int64 = int64 + self.number = number + self.float = float + self.double = double + self.string = string + self.byte = byte + self.binary = binary + self.date = date + self.dateTime = dateTime + self.uuid = uuid + self.password = password + self.bigDecimal = bigDecimal + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case integer + case int32 + case int64 + case number + case float + case double + case string + case byte + case binary + case date + case dateTime + case uuid + case password + case bigDecimal = "BigDecimal" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(integer, forKey: .integer) + try container.encodeIfPresent(int32, forKey: .int32) + try container.encodeIfPresent(int64, forKey: .int64) + try container.encode(number, forKey: .number) + try container.encodeIfPresent(float, forKey: .float) + try container.encodeIfPresent(double, forKey: .double) + try container.encodeIfPresent(string, forKey: .string) + try container.encode(byte, forKey: .byte) + try container.encodeIfPresent(binary, forKey: .binary) + try container.encode(date, forKey: .date) + try container.encodeIfPresent(dateTime, forKey: .dateTime) + try container.encodeIfPresent(uuid, forKey: .uuid) + try container.encode(password, forKey: .password) + try container.encodeIfPresent(bigDecimal, forKey: .bigDecimal) + } + + public static func == (lhs: FormatTest, rhs: FormatTest) -> Bool { + lhs.integer == rhs.integer && + lhs.int32 == rhs.int32 && + lhs.int64 == rhs.int64 && + lhs.number == rhs.number && + lhs.float == rhs.float && + lhs.double == rhs.double && + lhs.string == rhs.string && + lhs.byte == rhs.byte && + lhs.binary == rhs.binary && + lhs.date == rhs.date && + lhs.dateTime == rhs.dateTime && + lhs.uuid == rhs.uuid && + lhs.password == rhs.password && + lhs.bigDecimal == rhs.bigDecimal + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(integer?.hashValue) + hasher.combine(int32?.hashValue) + hasher.combine(int64?.hashValue) + hasher.combine(number.hashValue) + hasher.combine(float?.hashValue) + hasher.combine(double?.hashValue) + hasher.combine(string?.hashValue) + hasher.combine(byte.hashValue) + hasher.combine(binary?.hashValue) + hasher.combine(date.hashValue) + hasher.combine(dateTime?.hashValue) + hasher.combine(uuid?.hashValue) + hasher.combine(password.hashValue) + hasher.combine(bigDecimal?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift new file mode 100644 index 00000000000..fd0e1532b04 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/HasOnlyReadOnly.swift @@ -0,0 +1,49 @@ +// +// HasOnlyReadOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class HasOnlyReadOnly: Content, Hashable { + + public var bar: String? + public var foo: String? + + public init(bar: String? = nil, foo: String? = nil) { + self.bar = bar + self.foo = foo + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case bar + case foo + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(bar, forKey: .bar) + try container.encodeIfPresent(foo, forKey: .foo) + } + + public static func == (lhs: HasOnlyReadOnly, rhs: HasOnlyReadOnly) -> Bool { + lhs.bar == rhs.bar && + lhs.foo == rhs.foo + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(bar?.hashValue) + hasher.combine(foo?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/List.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/List.swift new file mode 100644 index 00000000000..fd15761ab8a --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/List.swift @@ -0,0 +1,43 @@ +// +// List.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class List: Content, Hashable { + + public var _123list: String? + + public init(_123list: String? = nil) { + self._123list = _123list + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case _123list = "123-list" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(_123list, forKey: ._123list) + } + + public static func == (lhs: List, rhs: List) -> Bool { + lhs._123list == rhs._123list + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(_123list?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/MapTest.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/MapTest.swift new file mode 100644 index 00000000000..2726af8cb65 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/MapTest.swift @@ -0,0 +1,65 @@ +// +// MapTest.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class MapTest: Content, Hashable { + + public enum MapOfEnumString: String, Content, Hashable, CaseIterable { + case upper = "UPPER" + case lower = "lower" + } + public var mapMapOfString: [String: [String: String]]? + public var mapOfEnumString: [String: String]? + public var directMap: [String: Bool]? + public var indirectMap: StringBooleanMap? + + public init(mapMapOfString: [String: [String: String]]? = nil, mapOfEnumString: [String: String]? = nil, directMap: [String: Bool]? = nil, indirectMap: StringBooleanMap? = nil) { + self.mapMapOfString = mapMapOfString + self.mapOfEnumString = mapOfEnumString + self.directMap = directMap + self.indirectMap = indirectMap + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case mapMapOfString = "map_map_of_string" + case mapOfEnumString = "map_of_enum_string" + case directMap = "direct_map" + case indirectMap = "indirect_map" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(mapMapOfString, forKey: .mapMapOfString) + try container.encodeIfPresent(mapOfEnumString, forKey: .mapOfEnumString) + try container.encodeIfPresent(directMap, forKey: .directMap) + try container.encodeIfPresent(indirectMap, forKey: .indirectMap) + } + + public static func == (lhs: MapTest, rhs: MapTest) -> Bool { + lhs.mapMapOfString == rhs.mapMapOfString && + lhs.mapOfEnumString == rhs.mapOfEnumString && + lhs.directMap == rhs.directMap && + lhs.indirectMap == rhs.indirectMap + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(mapMapOfString?.hashValue) + hasher.combine(mapOfEnumString?.hashValue) + hasher.combine(directMap?.hashValue) + hasher.combine(indirectMap?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift new file mode 100644 index 00000000000..a98efe737a2 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -0,0 +1,55 @@ +// +// MixedPropertiesAndAdditionalPropertiesClass.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class MixedPropertiesAndAdditionalPropertiesClass: Content, Hashable { + + public var uuid: UUID? + public var dateTime: Date? + public var map: [String: Animal]? + + public init(uuid: UUID? = nil, dateTime: Date? = nil, map: [String: Animal]? = nil) { + self.uuid = uuid + self.dateTime = dateTime + self.map = map + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case uuid + case dateTime + case map + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(uuid, forKey: .uuid) + try container.encodeIfPresent(dateTime, forKey: .dateTime) + try container.encodeIfPresent(map, forKey: .map) + } + + public static func == (lhs: MixedPropertiesAndAdditionalPropertiesClass, rhs: MixedPropertiesAndAdditionalPropertiesClass) -> Bool { + lhs.uuid == rhs.uuid && + lhs.dateTime == rhs.dateTime && + lhs.map == rhs.map + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(uuid?.hashValue) + hasher.combine(dateTime?.hashValue) + hasher.combine(map?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Model200Response.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Model200Response.swift new file mode 100644 index 00000000000..1c9c6154700 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Model200Response.swift @@ -0,0 +1,50 @@ +// +// Model200Response.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +/** Model for testing model name starting with number */ +public final class Model200Response: Content, Hashable { + + public var name: Int? + public var `class`: String? + + public init(name: Int? = nil, `class`: String? = nil) { + self.name = name + self.`class` = `class` + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + case `class` = "class" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(name, forKey: .name) + try container.encodeIfPresent(`class`, forKey: .`class`) + } + + public static func == (lhs: Model200Response, rhs: Model200Response) -> Bool { + lhs.name == rhs.name && + lhs.`class` == rhs.`class` + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(name?.hashValue) + hasher.combine(`class`?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Name.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Name.swift new file mode 100644 index 00000000000..86a8d6bbe83 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Name.swift @@ -0,0 +1,62 @@ +// +// Name.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +/** Model for testing model name same as property name */ +public final class Name: Content, Hashable { + + public var name: Int + public var snakeCase: Int? + public var property: String? + public var _123number: Int? + + public init(name: Int, snakeCase: Int? = nil, property: String? = nil, _123number: Int? = nil) { + self.name = name + self.snakeCase = snakeCase + self.property = property + self._123number = _123number + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case name + case snakeCase = "snake_case" + case property + case _123number = "123Number" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(name, forKey: .name) + try container.encodeIfPresent(snakeCase, forKey: .snakeCase) + try container.encodeIfPresent(property, forKey: .property) + try container.encodeIfPresent(_123number, forKey: ._123number) + } + + public static func == (lhs: Name, rhs: Name) -> Bool { + lhs.name == rhs.name && + lhs.snakeCase == rhs.snakeCase && + lhs.property == rhs.property && + lhs._123number == rhs._123number + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(name.hashValue) + hasher.combine(snakeCase?.hashValue) + hasher.combine(property?.hashValue) + hasher.combine(_123number?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/NumberOnly.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/NumberOnly.swift new file mode 100644 index 00000000000..b88d51e3b12 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/NumberOnly.swift @@ -0,0 +1,43 @@ +// +// NumberOnly.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class NumberOnly: Content, Hashable { + + public var justNumber: Double? + + public init(justNumber: Double? = nil) { + self.justNumber = justNumber + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case justNumber = "JustNumber" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(justNumber, forKey: .justNumber) + } + + public static func == (lhs: NumberOnly, rhs: NumberOnly) -> Bool { + lhs.justNumber == rhs.justNumber + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(justNumber?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Order.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Order.swift new file mode 100644 index 00000000000..7a7b357cd46 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Order.swift @@ -0,0 +1,79 @@ +// +// Order.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class Order: Content, Hashable { + + public enum Status: String, Content, Hashable, CaseIterable { + case placed = "placed" + case approved = "approved" + case delivered = "delivered" + } + public var id: Int64? + public var petId: Int64? + public var quantity: Int? + public var shipDate: Date? + /** Order Status */ + public var status: Status? + public var complete: Bool? = false + + public init(id: Int64? = nil, petId: Int64? = nil, quantity: Int? = nil, shipDate: Date? = nil, status: Status? = nil, complete: Bool? = false) { + self.id = id + self.petId = petId + self.quantity = quantity + self.shipDate = shipDate + self.status = status + self.complete = complete + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case id + case petId + case quantity + case shipDate + case status + case complete + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(id, forKey: .id) + try container.encodeIfPresent(petId, forKey: .petId) + try container.encodeIfPresent(quantity, forKey: .quantity) + try container.encodeIfPresent(shipDate, forKey: .shipDate) + try container.encodeIfPresent(status, forKey: .status) + try container.encodeIfPresent(complete, forKey: .complete) + } + + public static func == (lhs: Order, rhs: Order) -> Bool { + lhs.id == rhs.id && + lhs.petId == rhs.petId && + lhs.quantity == rhs.quantity && + lhs.shipDate == rhs.shipDate && + lhs.status == rhs.status && + lhs.complete == rhs.complete + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(id?.hashValue) + hasher.combine(petId?.hashValue) + hasher.combine(quantity?.hashValue) + hasher.combine(shipDate?.hashValue) + hasher.combine(status?.hashValue) + hasher.combine(complete?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/OuterComposite.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/OuterComposite.swift new file mode 100644 index 00000000000..7fd8d9254a6 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/OuterComposite.swift @@ -0,0 +1,55 @@ +// +// OuterComposite.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class OuterComposite: Content, Hashable { + + public var myNumber: Double? + public var myString: String? + public var myBoolean: Bool? + + public init(myNumber: Double? = nil, myString: String? = nil, myBoolean: Bool? = nil) { + self.myNumber = myNumber + self.myString = myString + self.myBoolean = myBoolean + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case myNumber = "my_number" + case myString = "my_string" + case myBoolean = "my_boolean" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(myNumber, forKey: .myNumber) + try container.encodeIfPresent(myString, forKey: .myString) + try container.encodeIfPresent(myBoolean, forKey: .myBoolean) + } + + public static func == (lhs: OuterComposite, rhs: OuterComposite) -> Bool { + lhs.myNumber == rhs.myNumber && + lhs.myString == rhs.myString && + lhs.myBoolean == rhs.myBoolean + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(myNumber?.hashValue) + hasher.combine(myString?.hashValue) + hasher.combine(myBoolean?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/OuterEnum.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/OuterEnum.swift new file mode 100644 index 00000000000..3ea0e73af37 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/OuterEnum.swift @@ -0,0 +1,18 @@ +// +// OuterEnum.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public enum OuterEnum: String, Content, Hashable, CaseIterable { + case placed = "placed" + case approved = "approved" + case delivered = "delivered" +} diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Pet.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Pet.swift new file mode 100644 index 00000000000..90481c91ece --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Pet.swift @@ -0,0 +1,79 @@ +// +// Pet.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class Pet: Content, Hashable { + + public enum Status: String, Content, Hashable, CaseIterable { + case available = "available" + case pending = "pending" + case sold = "sold" + } + public var id: Int64? + public var category: Category? + public var name: String + public var photoUrls: Set + public var tags: [Tag]? + /** pet status in the store */ + public var status: Status? + + public init(id: Int64? = nil, category: Category? = nil, name: String, photoUrls: Set, tags: [Tag]? = nil, status: Status? = nil) { + self.id = id + self.category = category + self.name = name + self.photoUrls = photoUrls + self.tags = tags + self.status = status + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case id + case category + case name + case photoUrls + case tags + case status + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(id, forKey: .id) + try container.encodeIfPresent(category, forKey: .category) + try container.encode(name, forKey: .name) + try container.encode(photoUrls, forKey: .photoUrls) + try container.encodeIfPresent(tags, forKey: .tags) + try container.encodeIfPresent(status, forKey: .status) + } + + public static func == (lhs: Pet, rhs: Pet) -> Bool { + lhs.id == rhs.id && + lhs.category == rhs.category && + lhs.name == rhs.name && + lhs.photoUrls == rhs.photoUrls && + lhs.tags == rhs.tags && + lhs.status == rhs.status + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(id?.hashValue) + hasher.combine(category?.hashValue) + hasher.combine(name.hashValue) + hasher.combine(photoUrls.hashValue) + hasher.combine(tags?.hashValue) + hasher.combine(status?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift new file mode 100644 index 00000000000..05402ceb4d7 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/ReadOnlyFirst.swift @@ -0,0 +1,49 @@ +// +// ReadOnlyFirst.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class ReadOnlyFirst: Content, Hashable { + + public var bar: String? + public var baz: String? + + public init(bar: String? = nil, baz: String? = nil) { + self.bar = bar + self.baz = baz + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case bar + case baz + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(bar, forKey: .bar) + try container.encodeIfPresent(baz, forKey: .baz) + } + + public static func == (lhs: ReadOnlyFirst, rhs: ReadOnlyFirst) -> Bool { + lhs.bar == rhs.bar && + lhs.baz == rhs.baz + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(bar?.hashValue) + hasher.combine(baz?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Return.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Return.swift new file mode 100644 index 00000000000..05e4d06219a --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Return.swift @@ -0,0 +1,44 @@ +// +// Return.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +/** Model for testing reserved words */ +public final class Return: Content, Hashable { + + public var `return`: Int? + + public init(`return`: Int? = nil) { + self.`return` = `return` + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case `return` = "return" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(`return`, forKey: .`return`) + } + + public static func == (lhs: Return, rhs: Return) -> Bool { + lhs.`return` == rhs.`return` + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(`return`?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift new file mode 100644 index 00000000000..8ad4aa608ea --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/SpecialModelName.swift @@ -0,0 +1,43 @@ +// +// SpecialModelName.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class SpecialModelName: Content, Hashable { + + public var specialPropertyName: Int64? + + public init(specialPropertyName: Int64? = nil) { + self.specialPropertyName = specialPropertyName + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case specialPropertyName = "$special[property.name]" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) + } + + public static func == (lhs: SpecialModelName, rhs: SpecialModelName) -> Bool { + lhs.specialPropertyName == rhs.specialPropertyName + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(specialPropertyName?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift new file mode 100644 index 00000000000..59d76476f8b --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/StringBooleanMap.swift @@ -0,0 +1,61 @@ +// +// StringBooleanMap.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class StringBooleanMap: Content, Hashable { + + + public enum CodingKeys: CodingKey, CaseIterable { + } + + public var additionalProperties: [String: Bool] = [:] + + public subscript(key: String) -> Bool? { + get { + if let value = additionalProperties[key] { + return value + } + return nil + } + + set { + additionalProperties[key] = newValue + } + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + var additionalPropertiesContainer = encoder.container(keyedBy: String.self) + try additionalPropertiesContainer.encodeMap(additionalProperties) + } + + // Decodable protocol methods + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + + var nonAdditionalPropertyKeys = Set() + let additionalPropertiesContainer = try decoder.container(keyedBy: String.self) + additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) + } + + public static func == (lhs: StringBooleanMap, rhs: StringBooleanMap) -> Bool { + lhs.additionalProperties == rhs.additionalProperties + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(additionalProperties.hashValue) + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Tag.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Tag.swift new file mode 100644 index 00000000000..b6ec1244243 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/Tag.swift @@ -0,0 +1,49 @@ +// +// Tag.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class Tag: Content, Hashable { + + public var id: Int64? + public var name: String? + + public init(id: Int64? = nil, name: String? = nil) { + self.id = id + self.name = name + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case id + case name + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(id, forKey: .id) + try container.encodeIfPresent(name, forKey: .name) + } + + public static func == (lhs: Tag, rhs: Tag) -> Bool { + lhs.id == rhs.id && + lhs.name == rhs.name + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(id?.hashValue) + hasher.combine(name?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift new file mode 100644 index 00000000000..f0d5c3ad313 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/TypeHolderDefault.swift @@ -0,0 +1,67 @@ +// +// TypeHolderDefault.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class TypeHolderDefault: Content, Hashable { + + public var stringItem: String = "what" + public var numberItem: Double + public var integerItem: Int + public var boolItem: Bool = true + public var arrayItem: [Int] + + public init(stringItem: String = "what", numberItem: Double, integerItem: Int, boolItem: Bool = true, arrayItem: [Int]) { + self.stringItem = stringItem + self.numberItem = numberItem + self.integerItem = integerItem + self.boolItem = boolItem + self.arrayItem = arrayItem + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case stringItem = "string_item" + case numberItem = "number_item" + case integerItem = "integer_item" + case boolItem = "bool_item" + case arrayItem = "array_item" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(stringItem, forKey: .stringItem) + try container.encode(numberItem, forKey: .numberItem) + try container.encode(integerItem, forKey: .integerItem) + try container.encode(boolItem, forKey: .boolItem) + try container.encode(arrayItem, forKey: .arrayItem) + } + + public static func == (lhs: TypeHolderDefault, rhs: TypeHolderDefault) -> Bool { + lhs.stringItem == rhs.stringItem && + lhs.numberItem == rhs.numberItem && + lhs.integerItem == rhs.integerItem && + lhs.boolItem == rhs.boolItem && + lhs.arrayItem == rhs.arrayItem + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(stringItem.hashValue) + hasher.combine(numberItem.hashValue) + hasher.combine(integerItem.hashValue) + hasher.combine(boolItem.hashValue) + hasher.combine(arrayItem.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift new file mode 100644 index 00000000000..cdefaad66d2 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/TypeHolderExample.swift @@ -0,0 +1,73 @@ +// +// TypeHolderExample.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class TypeHolderExample: Content, Hashable { + + public var stringItem: String + public var numberItem: Double + public var floatItem: Float + public var integerItem: Int + public var boolItem: Bool + public var arrayItem: [Int] + + public init(stringItem: String, numberItem: Double, floatItem: Float, integerItem: Int, boolItem: Bool, arrayItem: [Int]) { + self.stringItem = stringItem + self.numberItem = numberItem + self.floatItem = floatItem + self.integerItem = integerItem + self.boolItem = boolItem + self.arrayItem = arrayItem + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case stringItem = "string_item" + case numberItem = "number_item" + case floatItem = "float_item" + case integerItem = "integer_item" + case boolItem = "bool_item" + case arrayItem = "array_item" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(stringItem, forKey: .stringItem) + try container.encode(numberItem, forKey: .numberItem) + try container.encode(floatItem, forKey: .floatItem) + try container.encode(integerItem, forKey: .integerItem) + try container.encode(boolItem, forKey: .boolItem) + try container.encode(arrayItem, forKey: .arrayItem) + } + + public static func == (lhs: TypeHolderExample, rhs: TypeHolderExample) -> Bool { + lhs.stringItem == rhs.stringItem && + lhs.numberItem == rhs.numberItem && + lhs.floatItem == rhs.floatItem && + lhs.integerItem == rhs.integerItem && + lhs.boolItem == rhs.boolItem && + lhs.arrayItem == rhs.arrayItem + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(stringItem.hashValue) + hasher.combine(numberItem.hashValue) + hasher.combine(floatItem.hashValue) + hasher.combine(integerItem.hashValue) + hasher.combine(boolItem.hashValue) + hasher.combine(arrayItem.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/User.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/User.swift new file mode 100644 index 00000000000..47e3f6fbcb3 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/User.swift @@ -0,0 +1,86 @@ +// +// User.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class User: Content, Hashable { + + public var id: Int64? + public var username: String? + public var firstName: String? + public var lastName: String? + public var email: String? + public var password: String? + public var phone: String? + /** User Status */ + public var userStatus: Int? + + public init(id: Int64? = nil, username: String? = nil, firstName: String? = nil, lastName: String? = nil, email: String? = nil, password: String? = nil, phone: String? = nil, userStatus: Int? = nil) { + self.id = id + self.username = username + self.firstName = firstName + self.lastName = lastName + self.email = email + self.password = password + self.phone = phone + self.userStatus = userStatus + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case id + case username + case firstName + case lastName + case email + case password + case phone + case userStatus + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(id, forKey: .id) + try container.encodeIfPresent(username, forKey: .username) + try container.encodeIfPresent(firstName, forKey: .firstName) + try container.encodeIfPresent(lastName, forKey: .lastName) + try container.encodeIfPresent(email, forKey: .email) + try container.encodeIfPresent(password, forKey: .password) + try container.encodeIfPresent(phone, forKey: .phone) + try container.encodeIfPresent(userStatus, forKey: .userStatus) + } + + public static func == (lhs: User, rhs: User) -> Bool { + lhs.id == rhs.id && + lhs.username == rhs.username && + lhs.firstName == rhs.firstName && + lhs.lastName == rhs.lastName && + lhs.email == rhs.email && + lhs.password == rhs.password && + lhs.phone == rhs.phone && + lhs.userStatus == rhs.userStatus + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(id?.hashValue) + hasher.combine(username?.hashValue) + hasher.combine(firstName?.hashValue) + hasher.combine(lastName?.hashValue) + hasher.combine(email?.hashValue) + hasher.combine(password?.hashValue) + hasher.combine(phone?.hashValue) + hasher.combine(userStatus?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/XmlItem.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/XmlItem.swift new file mode 100644 index 00000000000..85003560b37 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/Models/XmlItem.swift @@ -0,0 +1,211 @@ +// +// XmlItem.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif +import Vapor + +public final class XmlItem: Content, Hashable { + + public var attributeString: String? + public var attributeNumber: Double? + public var attributeInteger: Int? + public var attributeBoolean: Bool? + public var wrappedArray: [Int]? + public var nameString: String? + public var nameNumber: Double? + public var nameInteger: Int? + public var nameBoolean: Bool? + public var nameArray: [Int]? + public var nameWrappedArray: [Int]? + public var prefixString: String? + public var prefixNumber: Double? + public var prefixInteger: Int? + public var prefixBoolean: Bool? + public var prefixArray: [Int]? + public var prefixWrappedArray: [Int]? + public var namespaceString: String? + public var namespaceNumber: Double? + public var namespaceInteger: Int? + public var namespaceBoolean: Bool? + public var namespaceArray: [Int]? + public var namespaceWrappedArray: [Int]? + public var prefixNsString: String? + public var prefixNsNumber: Double? + public var prefixNsInteger: Int? + public var prefixNsBoolean: Bool? + public var prefixNsArray: [Int]? + public var prefixNsWrappedArray: [Int]? + + public init(attributeString: String? = nil, attributeNumber: Double? = nil, attributeInteger: Int? = nil, attributeBoolean: Bool? = nil, wrappedArray: [Int]? = nil, nameString: String? = nil, nameNumber: Double? = nil, nameInteger: Int? = nil, nameBoolean: Bool? = nil, nameArray: [Int]? = nil, nameWrappedArray: [Int]? = nil, prefixString: String? = nil, prefixNumber: Double? = nil, prefixInteger: Int? = nil, prefixBoolean: Bool? = nil, prefixArray: [Int]? = nil, prefixWrappedArray: [Int]? = nil, namespaceString: String? = nil, namespaceNumber: Double? = nil, namespaceInteger: Int? = nil, namespaceBoolean: Bool? = nil, namespaceArray: [Int]? = nil, namespaceWrappedArray: [Int]? = nil, prefixNsString: String? = nil, prefixNsNumber: Double? = nil, prefixNsInteger: Int? = nil, prefixNsBoolean: Bool? = nil, prefixNsArray: [Int]? = nil, prefixNsWrappedArray: [Int]? = nil) { + self.attributeString = attributeString + self.attributeNumber = attributeNumber + self.attributeInteger = attributeInteger + self.attributeBoolean = attributeBoolean + self.wrappedArray = wrappedArray + self.nameString = nameString + self.nameNumber = nameNumber + self.nameInteger = nameInteger + self.nameBoolean = nameBoolean + self.nameArray = nameArray + self.nameWrappedArray = nameWrappedArray + self.prefixString = prefixString + self.prefixNumber = prefixNumber + self.prefixInteger = prefixInteger + self.prefixBoolean = prefixBoolean + self.prefixArray = prefixArray + self.prefixWrappedArray = prefixWrappedArray + self.namespaceString = namespaceString + self.namespaceNumber = namespaceNumber + self.namespaceInteger = namespaceInteger + self.namespaceBoolean = namespaceBoolean + self.namespaceArray = namespaceArray + self.namespaceWrappedArray = namespaceWrappedArray + self.prefixNsString = prefixNsString + self.prefixNsNumber = prefixNsNumber + self.prefixNsInteger = prefixNsInteger + self.prefixNsBoolean = prefixNsBoolean + self.prefixNsArray = prefixNsArray + self.prefixNsWrappedArray = prefixNsWrappedArray + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case attributeString = "attribute_string" + case attributeNumber = "attribute_number" + case attributeInteger = "attribute_integer" + case attributeBoolean = "attribute_boolean" + case wrappedArray = "wrapped_array" + case nameString = "name_string" + case nameNumber = "name_number" + case nameInteger = "name_integer" + case nameBoolean = "name_boolean" + case nameArray = "name_array" + case nameWrappedArray = "name_wrapped_array" + case prefixString = "prefix_string" + case prefixNumber = "prefix_number" + case prefixInteger = "prefix_integer" + case prefixBoolean = "prefix_boolean" + case prefixArray = "prefix_array" + case prefixWrappedArray = "prefix_wrapped_array" + case namespaceString = "namespace_string" + case namespaceNumber = "namespace_number" + case namespaceInteger = "namespace_integer" + case namespaceBoolean = "namespace_boolean" + case namespaceArray = "namespace_array" + case namespaceWrappedArray = "namespace_wrapped_array" + case prefixNsString = "prefix_ns_string" + case prefixNsNumber = "prefix_ns_number" + case prefixNsInteger = "prefix_ns_integer" + case prefixNsBoolean = "prefix_ns_boolean" + case prefixNsArray = "prefix_ns_array" + case prefixNsWrappedArray = "prefix_ns_wrapped_array" + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(attributeString, forKey: .attributeString) + try container.encodeIfPresent(attributeNumber, forKey: .attributeNumber) + try container.encodeIfPresent(attributeInteger, forKey: .attributeInteger) + try container.encodeIfPresent(attributeBoolean, forKey: .attributeBoolean) + try container.encodeIfPresent(wrappedArray, forKey: .wrappedArray) + try container.encodeIfPresent(nameString, forKey: .nameString) + try container.encodeIfPresent(nameNumber, forKey: .nameNumber) + try container.encodeIfPresent(nameInteger, forKey: .nameInteger) + try container.encodeIfPresent(nameBoolean, forKey: .nameBoolean) + try container.encodeIfPresent(nameArray, forKey: .nameArray) + try container.encodeIfPresent(nameWrappedArray, forKey: .nameWrappedArray) + try container.encodeIfPresent(prefixString, forKey: .prefixString) + try container.encodeIfPresent(prefixNumber, forKey: .prefixNumber) + try container.encodeIfPresent(prefixInteger, forKey: .prefixInteger) + try container.encodeIfPresent(prefixBoolean, forKey: .prefixBoolean) + try container.encodeIfPresent(prefixArray, forKey: .prefixArray) + try container.encodeIfPresent(prefixWrappedArray, forKey: .prefixWrappedArray) + try container.encodeIfPresent(namespaceString, forKey: .namespaceString) + try container.encodeIfPresent(namespaceNumber, forKey: .namespaceNumber) + try container.encodeIfPresent(namespaceInteger, forKey: .namespaceInteger) + try container.encodeIfPresent(namespaceBoolean, forKey: .namespaceBoolean) + try container.encodeIfPresent(namespaceArray, forKey: .namespaceArray) + try container.encodeIfPresent(namespaceWrappedArray, forKey: .namespaceWrappedArray) + try container.encodeIfPresent(prefixNsString, forKey: .prefixNsString) + try container.encodeIfPresent(prefixNsNumber, forKey: .prefixNsNumber) + try container.encodeIfPresent(prefixNsInteger, forKey: .prefixNsInteger) + try container.encodeIfPresent(prefixNsBoolean, forKey: .prefixNsBoolean) + try container.encodeIfPresent(prefixNsArray, forKey: .prefixNsArray) + try container.encodeIfPresent(prefixNsWrappedArray, forKey: .prefixNsWrappedArray) + } + + public static func == (lhs: XmlItem, rhs: XmlItem) -> Bool { + lhs.attributeString == rhs.attributeString && + lhs.attributeNumber == rhs.attributeNumber && + lhs.attributeInteger == rhs.attributeInteger && + lhs.attributeBoolean == rhs.attributeBoolean && + lhs.wrappedArray == rhs.wrappedArray && + lhs.nameString == rhs.nameString && + lhs.nameNumber == rhs.nameNumber && + lhs.nameInteger == rhs.nameInteger && + lhs.nameBoolean == rhs.nameBoolean && + lhs.nameArray == rhs.nameArray && + lhs.nameWrappedArray == rhs.nameWrappedArray && + lhs.prefixString == rhs.prefixString && + lhs.prefixNumber == rhs.prefixNumber && + lhs.prefixInteger == rhs.prefixInteger && + lhs.prefixBoolean == rhs.prefixBoolean && + lhs.prefixArray == rhs.prefixArray && + lhs.prefixWrappedArray == rhs.prefixWrappedArray && + lhs.namespaceString == rhs.namespaceString && + lhs.namespaceNumber == rhs.namespaceNumber && + lhs.namespaceInteger == rhs.namespaceInteger && + lhs.namespaceBoolean == rhs.namespaceBoolean && + lhs.namespaceArray == rhs.namespaceArray && + lhs.namespaceWrappedArray == rhs.namespaceWrappedArray && + lhs.prefixNsString == rhs.prefixNsString && + lhs.prefixNsNumber == rhs.prefixNsNumber && + lhs.prefixNsInteger == rhs.prefixNsInteger && + lhs.prefixNsBoolean == rhs.prefixNsBoolean && + lhs.prefixNsArray == rhs.prefixNsArray && + lhs.prefixNsWrappedArray == rhs.prefixNsWrappedArray + + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(attributeString?.hashValue) + hasher.combine(attributeNumber?.hashValue) + hasher.combine(attributeInteger?.hashValue) + hasher.combine(attributeBoolean?.hashValue) + hasher.combine(wrappedArray?.hashValue) + hasher.combine(nameString?.hashValue) + hasher.combine(nameNumber?.hashValue) + hasher.combine(nameInteger?.hashValue) + hasher.combine(nameBoolean?.hashValue) + hasher.combine(nameArray?.hashValue) + hasher.combine(nameWrappedArray?.hashValue) + hasher.combine(prefixString?.hashValue) + hasher.combine(prefixNumber?.hashValue) + hasher.combine(prefixInteger?.hashValue) + hasher.combine(prefixBoolean?.hashValue) + hasher.combine(prefixArray?.hashValue) + hasher.combine(prefixWrappedArray?.hashValue) + hasher.combine(namespaceString?.hashValue) + hasher.combine(namespaceNumber?.hashValue) + hasher.combine(namespaceInteger?.hashValue) + hasher.combine(namespaceBoolean?.hashValue) + hasher.combine(namespaceArray?.hashValue) + hasher.combine(namespaceWrappedArray?.hashValue) + hasher.combine(prefixNsString?.hashValue) + hasher.combine(prefixNsNumber?.hashValue) + hasher.combine(prefixNsInteger?.hashValue) + hasher.combine(prefixNsBoolean?.hashValue) + hasher.combine(prefixNsArray?.hashValue) + hasher.combine(prefixNsWrappedArray?.hashValue) + + } +} + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesAnyType.md b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesAnyType.md new file mode 100644 index 00000000000..bae60ab148f --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesAnyType.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesAnyType + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesArray.md b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesArray.md new file mode 100644 index 00000000000..a371b5e28f3 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesArray.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesArray + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesBoolean.md b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesBoolean.md new file mode 100644 index 00000000000..d5f0d6da11e --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesBoolean.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesBoolean + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesClass.md b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesClass.md new file mode 100644 index 00000000000..1cffcdd8484 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesClass.md @@ -0,0 +1,20 @@ +# AdditionalPropertiesClass + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**mapString** | **[String: String]** | | [optional] +**mapNumber** | **[String: Double]** | | [optional] +**mapInteger** | **[String: Int]** | | [optional] +**mapBoolean** | **[String: Bool]** | | [optional] +**mapArrayInteger** | [String: [Int]] | | [optional] +**mapArrayAnytype** | [String: [AnyCodable]] | | [optional] +**mapMapString** | [String: [String: String]] | | [optional] +**mapMapAnytype** | [String: [String: AnyCodable]] | | [optional] +**anytype1** | [**AnyCodable**](.md) | | [optional] +**anytype2** | [**AnyCodable**](.md) | | [optional] +**anytype3** | [**AnyCodable**](.md) | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesInteger.md b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesInteger.md new file mode 100644 index 00000000000..629293abdfe --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesInteger.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesInteger + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesNumber.md b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesNumber.md new file mode 100644 index 00000000000..65adfe78137 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesNumber.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesNumber + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesObject.md b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesObject.md new file mode 100644 index 00000000000..99d69b7aae6 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesObject.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesObject + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesString.md b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesString.md new file mode 100644 index 00000000000..5bb8122887c --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/AdditionalPropertiesString.md @@ -0,0 +1,10 @@ +# AdditionalPropertiesString + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/Animal.md b/samples/client/petstore/swift5/vaporLibrary/docs/Animal.md new file mode 100644 index 00000000000..69c601455cd --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/Animal.md @@ -0,0 +1,11 @@ +# Animal + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**className** | **String** | | +**color** | **String** | | [optional] [default to "red"] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/AnimalFarm.md b/samples/client/petstore/swift5/vaporLibrary/docs/AnimalFarm.md new file mode 100644 index 00000000000..df6bab21dae --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/AnimalFarm.md @@ -0,0 +1,9 @@ +# AnimalFarm + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/AnotherFakeAPI.md b/samples/client/petstore/swift5/vaporLibrary/docs/AnotherFakeAPI.md new file mode 100644 index 00000000000..1e71f1db871 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/AnotherFakeAPI.md @@ -0,0 +1,68 @@ +# AnotherFakeAPI + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**call123testSpecialTags**](AnotherFakeAPI.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags + + +# **call123testSpecialTags** +```swift + open class func call123testSpecialTags(body: Client, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +To test special tags + +To test special tags and operation ID starting with number + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = Client(client: "client_example") // Client | client model + +// To test special tags +AnotherFakeAPI.call123testSpecialTags(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Client**](Client.md) | client model | + +### Return type + +#### Call123testSpecialTags + +```swift +public enum Call123testSpecialTags { + case http200(value: Client?, raw: ClientResponse) + case http0(value: Client?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/ApiResponse.md b/samples/client/petstore/swift5/vaporLibrary/docs/ApiResponse.md new file mode 100644 index 00000000000..c6d9768fe9b --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/ApiResponse.md @@ -0,0 +1,12 @@ +# ApiResponse + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**code** | **Int** | | [optional] +**type** | **String** | | [optional] +**message** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/ArrayOfArrayOfNumberOnly.md b/samples/client/petstore/swift5/vaporLibrary/docs/ArrayOfArrayOfNumberOnly.md new file mode 100644 index 00000000000..c6fceff5e08 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/ArrayOfArrayOfNumberOnly.md @@ -0,0 +1,10 @@ +# ArrayOfArrayOfNumberOnly + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**arrayArrayNumber** | [[Double]] | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/ArrayOfNumberOnly.md b/samples/client/petstore/swift5/vaporLibrary/docs/ArrayOfNumberOnly.md new file mode 100644 index 00000000000..f09f8fa6f70 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/ArrayOfNumberOnly.md @@ -0,0 +1,10 @@ +# ArrayOfNumberOnly + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**arrayNumber** | **[Double]** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/ArrayTest.md b/samples/client/petstore/swift5/vaporLibrary/docs/ArrayTest.md new file mode 100644 index 00000000000..bf416b8330c --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/ArrayTest.md @@ -0,0 +1,12 @@ +# ArrayTest + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**arrayOfString** | **[String]** | | [optional] +**arrayArrayOfInteger** | [[Int64]] | | [optional] +**arrayArrayOfModel** | [[ReadOnlyFirst]] | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/BigCat.md b/samples/client/petstore/swift5/vaporLibrary/docs/BigCat.md new file mode 100644 index 00000000000..cd904c7381a --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/BigCat.md @@ -0,0 +1,10 @@ +# BigCat + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**kind** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/BigCatAllOf.md b/samples/client/petstore/swift5/vaporLibrary/docs/BigCatAllOf.md new file mode 100644 index 00000000000..20da4caf5d0 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/BigCatAllOf.md @@ -0,0 +1,10 @@ +# BigCatAllOf + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**kind** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/Capitalization.md b/samples/client/petstore/swift5/vaporLibrary/docs/Capitalization.md new file mode 100644 index 00000000000..95374216c77 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/Capitalization.md @@ -0,0 +1,15 @@ +# Capitalization + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**smallCamel** | **String** | | [optional] +**capitalCamel** | **String** | | [optional] +**smallSnake** | **String** | | [optional] +**capitalSnake** | **String** | | [optional] +**sCAETHFlowPoints** | **String** | | [optional] +**ATT_NAME** | **String** | Name 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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/Cat.md b/samples/client/petstore/swift5/vaporLibrary/docs/Cat.md new file mode 100644 index 00000000000..fb5949b1576 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/Cat.md @@ -0,0 +1,10 @@ +# Cat + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**declawed** | **Bool** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/CatAllOf.md b/samples/client/petstore/swift5/vaporLibrary/docs/CatAllOf.md new file mode 100644 index 00000000000..79789be61c0 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/CatAllOf.md @@ -0,0 +1,10 @@ +# CatAllOf + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**declawed** | **Bool** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/Category.md b/samples/client/petstore/swift5/vaporLibrary/docs/Category.md new file mode 100644 index 00000000000..5ca5408c0f9 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/Category.md @@ -0,0 +1,11 @@ +# Category + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Int64** | | [optional] +**name** | **String** | | [default to "default-name"] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/ClassModel.md b/samples/client/petstore/swift5/vaporLibrary/docs/ClassModel.md new file mode 100644 index 00000000000..60989bb6b64 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/ClassModel.md @@ -0,0 +1,10 @@ +# ClassModel + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**`class`** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/Client.md b/samples/client/petstore/swift5/vaporLibrary/docs/Client.md new file mode 100644 index 00000000000..0de1b238c36 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/Client.md @@ -0,0 +1,10 @@ +# Client + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**client** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/Dog.md b/samples/client/petstore/swift5/vaporLibrary/docs/Dog.md new file mode 100644 index 00000000000..4824786da04 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/Dog.md @@ -0,0 +1,10 @@ +# Dog + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**breed** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/DogAllOf.md b/samples/client/petstore/swift5/vaporLibrary/docs/DogAllOf.md new file mode 100644 index 00000000000..9302ef52e93 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/DogAllOf.md @@ -0,0 +1,10 @@ +# DogAllOf + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**breed** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/EnumArrays.md b/samples/client/petstore/swift5/vaporLibrary/docs/EnumArrays.md new file mode 100644 index 00000000000..b9a9807d3c8 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/EnumArrays.md @@ -0,0 +1,11 @@ +# EnumArrays + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**justSymbol** | **String** | | [optional] +**arrayEnum** | **[String]** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/EnumClass.md b/samples/client/petstore/swift5/vaporLibrary/docs/EnumClass.md new file mode 100644 index 00000000000..67f017becd0 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/EnumClass.md @@ -0,0 +1,9 @@ +# EnumClass + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/EnumTest.md b/samples/client/petstore/swift5/vaporLibrary/docs/EnumTest.md new file mode 100644 index 00000000000..bc9b036dd76 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/EnumTest.md @@ -0,0 +1,14 @@ +# EnumTest + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**enumString** | **String** | | [optional] +**enumStringRequired** | **String** | | +**enumInteger** | **Int** | | [optional] +**enumNumber** | **Double** | | [optional] +**outerEnum** | [**OuterEnum**](OuterEnum.md) | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/FakeAPI.md b/samples/client/petstore/swift5/vaporLibrary/docs/FakeAPI.md new file mode 100644 index 00000000000..1883af3085c --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/FakeAPI.md @@ -0,0 +1,901 @@ +# FakeAPI + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**createXmlItem**](FakeAPI.md#createxmlitem) | **POST** /fake/create_xml_item | creates an XmlItem +[**fakeOuterBooleanSerialize**](FakeAPI.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +[**fakeOuterCompositeSerialize**](FakeAPI.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +[**fakeOuterNumberSerialize**](FakeAPI.md#fakeouternumberserialize) | **POST** /fake/outer/number | +[**fakeOuterStringSerialize**](FakeAPI.md#fakeouterstringserialize) | **POST** /fake/outer/string | +[**testBodyWithFileSchema**](FakeAPI.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +[**testBodyWithQueryParams**](FakeAPI.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +[**testClientModel**](FakeAPI.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +[**testEndpointParameters**](FakeAPI.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +[**testEnumParameters**](FakeAPI.md#testenumparameters) | **GET** /fake | To test enum parameters +[**testGroupParameters**](FakeAPI.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +[**testInlineAdditionalProperties**](FakeAPI.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +[**testJsonFormData**](FakeAPI.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +[**testQueryParameterCollectionFormat**](FakeAPI.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | + + +# **createXmlItem** +```swift + open class func createXmlItem(xmlItem: XmlItem, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +creates an XmlItem + +this route creates an XmlItem + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let xmlItem = XmlItem(attributeString: "attributeString_example", attributeNumber: 123, attributeInteger: 123, attributeBoolean: true, wrappedArray: [123], nameString: "nameString_example", nameNumber: 123, nameInteger: 123, nameBoolean: true, nameArray: [123], nameWrappedArray: [123], prefixString: "prefixString_example", prefixNumber: 123, prefixInteger: 123, prefixBoolean: true, prefixArray: [123], prefixWrappedArray: [123], namespaceString: "namespaceString_example", namespaceNumber: 123, namespaceInteger: 123, namespaceBoolean: true, namespaceArray: [123], namespaceWrappedArray: [123], prefixNsString: "prefixNsString_example", prefixNsNumber: 123, prefixNsInteger: 123, prefixNsBoolean: true, prefixNsArray: [123], prefixNsWrappedArray: [123]) // XmlItem | XmlItem Body + +// creates an XmlItem +FakeAPI.createXmlItem(xmlItem: xmlItem).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **xmlItem** | [**XmlItem**](XmlItem.md) | XmlItem Body | + +### Return type + +#### CreateXmlItem + +```swift +public enum CreateXmlItem { + case http200(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/xml, application/xml; charset=utf-8, application/xml; charset=utf-16, text/xml, text/xml; charset=utf-8, text/xml; charset=utf-16 + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **fakeOuterBooleanSerialize** +```swift + open class func fakeOuterBooleanSerialize(body: Bool? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + + + +Test serialization of outer boolean types + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = true // Bool | Input boolean as post body (optional) + +FakeAPI.fakeOuterBooleanSerialize(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **Bool** | Input boolean as post body | [optional] + +### Return type + +#### FakeOuterBooleanSerialize + +```swift +public enum FakeOuterBooleanSerialize { + case http200(value: Bool?, raw: ClientResponse) + case http0(value: Bool?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: */* + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **fakeOuterCompositeSerialize** +```swift + open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + + + +Test serialization of object with outer number type + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = OuterComposite(myNumber: 123, myString: "myString_example", myBoolean: false) // OuterComposite | Input composite as post body (optional) + +FakeAPI.fakeOuterCompositeSerialize(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**OuterComposite**](OuterComposite.md) | Input composite as post body | [optional] + +### Return type + +#### FakeOuterCompositeSerialize + +```swift +public enum FakeOuterCompositeSerialize { + case http200(value: OuterComposite?, raw: ClientResponse) + case http0(value: OuterComposite?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: */* + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **fakeOuterNumberSerialize** +```swift + open class func fakeOuterNumberSerialize(body: Double? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + + + +Test serialization of outer number types + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = 987 // Double | Input number as post body (optional) + +FakeAPI.fakeOuterNumberSerialize(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **Double** | Input number as post body | [optional] + +### Return type + +#### FakeOuterNumberSerialize + +```swift +public enum FakeOuterNumberSerialize { + case http200(value: Double?, raw: ClientResponse) + case http0(value: Double?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: */* + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **fakeOuterStringSerialize** +```swift + open class func fakeOuterStringSerialize(body: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + + + +Test serialization of outer string types + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = "body_example" // String | Input string as post body (optional) + +FakeAPI.fakeOuterStringSerialize(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **String** | Input string as post body | [optional] + +### Return type + +#### FakeOuterStringSerialize + +```swift +public enum FakeOuterStringSerialize { + case http200(value: String?, raw: ClientResponse) + case http0(value: String?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: */* + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testBodyWithFileSchema** +```swift + open class func testBodyWithFileSchema(body: FileSchemaTestClass, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + + + +For this test, the body for this request much reference a schema named `File`. + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = FileSchemaTestClass(file: File(sourceURI: "sourceURI_example"), files: [nil]) // FileSchemaTestClass | + +FakeAPI.testBodyWithFileSchema(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**FileSchemaTestClass**](FileSchemaTestClass.md) | | + +### Return type + +#### TestBodyWithFileSchema + +```swift +public enum TestBodyWithFileSchema { + case http200(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testBodyWithQueryParams** +```swift + open class func testBodyWithQueryParams(query: String, body: User, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + + + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let query = "query_example" // String | +let body = User(id: 123, username: "username_example", firstName: "firstName_example", lastName: "lastName_example", email: "email_example", password: "password_example", phone: "phone_example", userStatus: 123) // User | + +FakeAPI.testBodyWithQueryParams(query: query, body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **query** | **String** | | + **body** | [**User**](User.md) | | + +### Return type + +#### TestBodyWithQueryParams + +```swift +public enum TestBodyWithQueryParams { + case http200(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testClientModel** +```swift + open class func testClientModel(body: Client, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +To test \"client\" model + +To test \"client\" model + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = Client(client: "client_example") // Client | client model + +// To test \"client\" model +FakeAPI.testClientModel(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Client**](Client.md) | client model | + +### Return type + +#### TestClientModel + +```swift +public enum TestClientModel { + case http200(value: Client?, raw: ClientResponse) + case http0(value: Client?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testEndpointParameters** +```swift + open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: Data? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + +Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let number = 987 // Double | None +let double = 987 // Double | None +let patternWithoutDelimiter = "patternWithoutDelimiter_example" // String | None +let byte = Data([9, 8, 7]) // Data | None +let integer = 987 // Int | None (optional) +let int32 = 987 // Int | None (optional) +let int64 = 987 // Int64 | None (optional) +let float = 987 // Float | None (optional) +let string = "string_example" // String | None (optional) +let binary = Data([9, 8, 7]) // Data | None (optional) +let date = Date() // Date | None (optional) +let dateTime = Date() // Date | None (optional) +let password = "password_example" // String | None (optional) +let callback = "callback_example" // String | None (optional) + +// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +FakeAPI.testEndpointParameters(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http400(let value, let raw): + case .http404(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **number** | **Double** | None | + **double** | **Double** | None | + **patternWithoutDelimiter** | **String** | None | + **byte** | **Data** | None | + **integer** | **Int** | None | [optional] + **int32** | **Int** | None | [optional] + **int64** | **Int64** | None | [optional] + **float** | **Float** | None | [optional] + **string** | **String** | None | [optional] + **binary** | **Data** | None | [optional] + **date** | **Date** | None | [optional] + **dateTime** | **Date** | None | [optional] + **password** | **String** | None | [optional] + **callback** | **String** | None | [optional] + +### Return type + +#### TestEndpointParameters + +```swift +public enum TestEndpointParameters { + case http400(value: Void?, raw: ClientResponse) + case http404(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +[http_basic_test](../README.md#http_basic_test) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testEnumParameters** +```swift + open class func testEnumParameters(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +To test enum parameters + +To test enum parameters + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let enumHeaderStringArray = ["enumHeaderStringArray_example"] // [String] | Header parameter enum test (string array) (optional) +let enumHeaderString = "enumHeaderString_example" // String | Header parameter enum test (string) (optional) (default to .efg) +let enumQueryStringArray = ["enumQueryStringArray_example"] // [String] | Query parameter enum test (string array) (optional) +let enumQueryString = "enumQueryString_example" // String | Query parameter enum test (string) (optional) (default to .efg) +let enumQueryInteger = 987 // Int | Query parameter enum test (double) (optional) +let enumQueryDouble = 987 // Double | Query parameter enum test (double) (optional) +let enumFormStringArray = ["inner_example"] // [String] | Form parameter enum test (string array) (optional) (default to .dollar) +let enumFormString = "enumFormString_example" // String | Form parameter enum test (string) (optional) (default to .efg) + +// To test enum parameters +FakeAPI.testEnumParameters(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http400(let value, let raw): + case .http404(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **enumHeaderStringArray** | [**[String]**](String.md) | Header parameter enum test (string array) | [optional] + **enumHeaderString** | **String** | Header parameter enum test (string) | [optional] [default to .efg] + **enumQueryStringArray** | [**[String]**](String.md) | Query parameter enum test (string array) | [optional] + **enumQueryString** | **String** | Query parameter enum test (string) | [optional] [default to .efg] + **enumQueryInteger** | **Int** | Query parameter enum test (double) | [optional] + **enumQueryDouble** | **Double** | Query parameter enum test (double) | [optional] + **enumFormStringArray** | [**[String]**](String.md) | Form parameter enum test (string array) | [optional] [default to .dollar] + **enumFormString** | **String** | Form parameter enum test (string) | [optional] [default to .efg] + +### Return type + +#### TestEnumParameters + +```swift +public enum TestEnumParameters { + case http400(value: Void?, raw: ClientResponse) + case http404(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testGroupParameters** +```swift + open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Fake endpoint to test group parameters (optional) + +Fake endpoint to test group parameters (optional) + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let requiredStringGroup = 987 // Int | Required String in group parameters +let requiredBooleanGroup = true // Bool | Required Boolean in group parameters +let requiredInt64Group = 987 // Int64 | Required Integer in group parameters +let stringGroup = 987 // Int | String in group parameters (optional) +let booleanGroup = true // Bool | Boolean in group parameters (optional) +let int64Group = 987 // Int64 | Integer in group parameters (optional) + +// Fake endpoint to test group parameters (optional) +FakeAPI.testGroupParameters(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http400(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **requiredStringGroup** | **Int** | Required String in group parameters | + **requiredBooleanGroup** | **Bool** | Required Boolean in group parameters | + **requiredInt64Group** | **Int64** | Required Integer in group parameters | + **stringGroup** | **Int** | String in group parameters | [optional] + **booleanGroup** | **Bool** | Boolean in group parameters | [optional] + **int64Group** | **Int64** | Integer in group parameters | [optional] + +### Return type + +#### TestGroupParameters + +```swift +public enum TestGroupParameters { + case http400(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testInlineAdditionalProperties** +```swift + open class func testInlineAdditionalProperties(param: [String: String], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +test inline additionalProperties + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let param = "TODO" // [String: String] | request body + +// test inline additionalProperties +FakeAPI.testInlineAdditionalProperties(param: param).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **param** | [**[String: String]**](String.md) | request body | + +### Return type + +#### TestInlineAdditionalProperties + +```swift +public enum TestInlineAdditionalProperties { + case http200(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testJsonFormData** +```swift + open class func testJsonFormData(param: String, param2: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +test json serialization of form data + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let param = "param_example" // String | field1 +let param2 = "param2_example" // String | field2 + +// test json serialization of form data +FakeAPI.testJsonFormData(param: param, param2: param2).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **param** | **String** | field1 | + **param2** | **String** | field2 | + +### Return type + +#### TestJsonFormData + +```swift +public enum TestJsonFormData { + case http200(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **testQueryParameterCollectionFormat** +```swift + open class func testQueryParameterCollectionFormat(pipe: [String], ioutil: [String], http: [String], url: [String], context: [String], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + + + +To test the collection format in query parameters + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let pipe = ["inner_example"] // [String] | +let ioutil = ["inner_example"] // [String] | +let http = ["inner_example"] // [String] | +let url = ["inner_example"] // [String] | +let context = ["inner_example"] // [String] | + +FakeAPI.testQueryParameterCollectionFormat(pipe: pipe, ioutil: ioutil, http: http, url: url, context: context).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pipe** | [**[String]**](String.md) | | + **ioutil** | [**[String]**](String.md) | | + **http** | [**[String]**](String.md) | | + **url** | [**[String]**](String.md) | | + **context** | [**[String]**](String.md) | | + +### Return type + +#### TestQueryParameterCollectionFormat + +```swift +public enum TestQueryParameterCollectionFormat { + case http200(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/FakeClassnameTags123API.md b/samples/client/petstore/swift5/vaporLibrary/docs/FakeClassnameTags123API.md new file mode 100644 index 00000000000..1aebe78f145 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/FakeClassnameTags123API.md @@ -0,0 +1,68 @@ +# FakeClassnameTags123API + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**testClassname**](FakeClassnameTags123API.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case + + +# **testClassname** +```swift + open class func testClassname(body: Client, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +To test class name in snake case + +To test class name in snake case + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = Client(client: "client_example") // Client | client model + +// To test class name in snake case +FakeClassnameTags123API.testClassname(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Client**](Client.md) | client model | + +### Return type + +#### TestClassname + +```swift +public enum TestClassname { + case http200(value: Client?, raw: ClientResponse) + case http0(value: Client?, raw: ClientResponse) +} +``` + +### Authorization + +[api_key_query](../README.md#api_key_query) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/File.md b/samples/client/petstore/swift5/vaporLibrary/docs/File.md new file mode 100644 index 00000000000..3edfef17b79 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/File.md @@ -0,0 +1,10 @@ +# File + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**sourceURI** | **String** | Test capitalization | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/FileSchemaTestClass.md b/samples/client/petstore/swift5/vaporLibrary/docs/FileSchemaTestClass.md new file mode 100644 index 00000000000..afdacc60b2c --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/FileSchemaTestClass.md @@ -0,0 +1,11 @@ +# FileSchemaTestClass + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**file** | [**File**](File.md) | | [optional] +**files** | [File] | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/FormatTest.md b/samples/client/petstore/swift5/vaporLibrary/docs/FormatTest.md new file mode 100644 index 00000000000..6e6c67b2a4f --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/FormatTest.md @@ -0,0 +1,23 @@ +# FormatTest + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**integer** | **Int** | | [optional] +**int32** | **Int** | | [optional] +**int64** | **Int64** | | [optional] +**number** | **Double** | | +**float** | **Float** | | [optional] +**double** | **Double** | | [optional] +**string** | **String** | | [optional] +**byte** | **Data** | | +**binary** | **Data** | | [optional] +**date** | **Date** | | +**dateTime** | **Date** | | [optional] +**uuid** | **UUID** | | [optional] +**password** | **String** | | +**bigDecimal** | **Decimal** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/HasOnlyReadOnly.md b/samples/client/petstore/swift5/vaporLibrary/docs/HasOnlyReadOnly.md new file mode 100644 index 00000000000..57b6e3a17e6 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/HasOnlyReadOnly.md @@ -0,0 +1,11 @@ +# HasOnlyReadOnly + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**bar** | **String** | | [optional] [readonly] +**foo** | **String** | | [optional] [readonly] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/List.md b/samples/client/petstore/swift5/vaporLibrary/docs/List.md new file mode 100644 index 00000000000..b77718302ed --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/List.md @@ -0,0 +1,10 @@ +# List + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**_123list** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/MapTest.md b/samples/client/petstore/swift5/vaporLibrary/docs/MapTest.md new file mode 100644 index 00000000000..73f9e0d50ac --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/MapTest.md @@ -0,0 +1,13 @@ +# MapTest + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**mapMapOfString** | [String: [String: String]] | | [optional] +**mapOfEnumString** | **[String: String]** | | [optional] +**directMap** | **[String: Bool]** | | [optional] +**indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/swift5/vaporLibrary/docs/MixedPropertiesAndAdditionalPropertiesClass.md new file mode 100644 index 00000000000..3fdfd03f0e3 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/MixedPropertiesAndAdditionalPropertiesClass.md @@ -0,0 +1,12 @@ +# MixedPropertiesAndAdditionalPropertiesClass + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**uuid** | **UUID** | | [optional] +**dateTime** | **Date** | | [optional] +**map** | [String: Animal] | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/Model200Response.md b/samples/client/petstore/swift5/vaporLibrary/docs/Model200Response.md new file mode 100644 index 00000000000..e064d9d0111 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/Model200Response.md @@ -0,0 +1,11 @@ +# Model200Response + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **Int** | | [optional] +**`class`** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/Name.md b/samples/client/petstore/swift5/vaporLibrary/docs/Name.md new file mode 100644 index 00000000000..f7b180292cd --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/Name.md @@ -0,0 +1,13 @@ +# Name + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **Int** | | +**snakeCase** | **Int** | | [optional] [readonly] +**property** | **String** | | [optional] +**_123number** | **Int** | | [optional] [readonly] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/NumberOnly.md b/samples/client/petstore/swift5/vaporLibrary/docs/NumberOnly.md new file mode 100644 index 00000000000..72bd361168b --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/NumberOnly.md @@ -0,0 +1,10 @@ +# NumberOnly + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**justNumber** | **Double** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/Order.md b/samples/client/petstore/swift5/vaporLibrary/docs/Order.md new file mode 100644 index 00000000000..15487f01175 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/Order.md @@ -0,0 +1,15 @@ +# Order + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Int64** | | [optional] +**petId** | **Int64** | | [optional] +**quantity** | **Int** | | [optional] +**shipDate** | **Date** | | [optional] +**status** | **String** | Order Status | [optional] +**complete** | **Bool** | | [optional] [default to false] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/OuterComposite.md b/samples/client/petstore/swift5/vaporLibrary/docs/OuterComposite.md new file mode 100644 index 00000000000..d6b3583bc3f --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/OuterComposite.md @@ -0,0 +1,12 @@ +# OuterComposite + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**myNumber** | **Double** | | [optional] +**myString** | **String** | | [optional] +**myBoolean** | **Bool** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/OuterEnum.md b/samples/client/petstore/swift5/vaporLibrary/docs/OuterEnum.md new file mode 100644 index 00000000000..06d413b0168 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/OuterEnum.md @@ -0,0 +1,9 @@ +# OuterEnum + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/Pet.md b/samples/client/petstore/swift5/vaporLibrary/docs/Pet.md new file mode 100644 index 00000000000..36e8e488439 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/Pet.md @@ -0,0 +1,15 @@ +# Pet + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Int64** | | [optional] +**category** | [**Category**](Category.md) | | [optional] +**name** | **String** | | +**photoUrls** | **Set** | | +**tags** | [Tag] | | [optional] +**status** | **String** | pet status in the store | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/PetAPI.md b/samples/client/petstore/swift5/vaporLibrary/docs/PetAPI.md new file mode 100644 index 00000000000..88f6a377038 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/PetAPI.md @@ -0,0 +1,568 @@ +# PetAPI + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**addPet**](PetAPI.md#addpet) | **POST** /pet | Add a new pet to the store +[**deletePet**](PetAPI.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetAPI.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetAPI.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +[**getPetById**](PetAPI.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +[**updatePet**](PetAPI.md#updatepet) | **PUT** /pet | Update an existing pet +[**updatePetWithForm**](PetAPI.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetAPI.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +[**uploadFileWithRequiredFile**](PetAPI.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) + + +# **addPet** +```swift + open class func addPet(body: Pet, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Add a new pet to the store + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = Pet(id: 123, category: Category(id: 123, name: "name_example"), name: "name_example", photoUrls: ["photoUrls_example"], tags: [Tag(id: 123, name: "name_example")], status: "status_example") // Pet | Pet object that needs to be added to the store + +// Add a new pet to the store +PetAPI.addPet(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http405(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Pet**](Pet.md) | Pet object that needs to be added to the store | + +### Return type + +#### AddPet + +```swift +public enum AddPet { + case http200(value: Void?, raw: ClientResponse) + case http405(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **deletePet** +```swift + open class func deletePet(petId: Int64, apiKey: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Deletes a pet + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let petId = 987 // Int64 | Pet id to delete +let apiKey = "apiKey_example" // String | (optional) + +// Deletes a pet +PetAPI.deletePet(petId: petId, apiKey: apiKey).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http400(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **Int64** | Pet id to delete | + **apiKey** | **String** | | [optional] + +### Return type + +#### DeletePet + +```swift +public enum DeletePet { + case http200(value: Void?, raw: ClientResponse) + case http400(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **findPetsByStatus** +```swift + open class func findPetsByStatus(status: [String], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Finds Pets by status + +Multiple status values can be provided with comma separated strings + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let status = ["status_example"] // [String] | Status values that need to be considered for filter + +// Finds Pets by status +PetAPI.findPetsByStatus(status: status).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http400(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | [**[String]**](String.md) | Status values that need to be considered for filter | + +### Return type + +#### FindPetsByStatus + +```swift +public enum FindPetsByStatus { + case http200(value: [Pet]?, raw: ClientResponse) + case http400(value: Void?, raw: ClientResponse) + case http0(value: [Pet]?, raw: ClientResponse) +} +``` + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **findPetsByTags** +```swift + open class func findPetsByTags(tags: Set, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Finds Pets by tags + +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let tags = ["inner_example"] // Set | Tags to filter by + +// Finds Pets by tags +PetAPI.findPetsByTags(tags: tags).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http400(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | [**Set<String>**](String.md) | Tags to filter by | + +### Return type + +#### FindPetsByTags + +```swift +public enum FindPetsByTags { + case http200(value: Set<Pet>?, raw: ClientResponse) + case http400(value: Void?, raw: ClientResponse) + case http0(value: Set<Pet>?, raw: ClientResponse) +} +``` + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getPetById** +```swift + open class func getPetById(petId: Int64, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Find pet by ID + +Returns a single pet + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let petId = 987 // Int64 | ID of pet to return + +// Find pet by ID +PetAPI.getPetById(petId: petId).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http400(let value, let raw): + case .http404(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **Int64** | ID of pet to return | + +### Return type + +#### GetPetById + +```swift +public enum GetPetById { + case http200(value: Pet?, raw: ClientResponse) + case http400(value: Void?, raw: ClientResponse) + case http404(value: Void?, raw: ClientResponse) + case http0(value: Pet?, raw: ClientResponse) +} +``` + +### Authorization + +[api_key](../README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **updatePet** +```swift + open class func updatePet(body: Pet, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Update an existing pet + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = Pet(id: 123, category: Category(id: 123, name: "name_example"), name: "name_example", photoUrls: ["photoUrls_example"], tags: [Tag(id: 123, name: "name_example")], status: "status_example") // Pet | Pet object that needs to be added to the store + +// Update an existing pet +PetAPI.updatePet(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http400(let value, let raw): + case .http404(let value, let raw): + case .http405(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Pet**](Pet.md) | Pet object that needs to be added to the store | + +### Return type + +#### UpdatePet + +```swift +public enum UpdatePet { + case http200(value: Void?, raw: ClientResponse) + case http400(value: Void?, raw: ClientResponse) + case http404(value: Void?, raw: ClientResponse) + case http405(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **updatePetWithForm** +```swift + open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Updates a pet in the store with form data + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let petId = 987 // Int64 | ID of pet that needs to be updated +let name = "name_example" // String | Updated name of the pet (optional) +let status = "status_example" // String | Updated status of the pet (optional) + +// Updates a pet in the store with form data +PetAPI.updatePetWithForm(petId: petId, name: name, status: status).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http405(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **Int64** | ID of pet that needs to be updated | + **name** | **String** | Updated name of the pet | [optional] + **status** | **String** | Updated status of the pet | [optional] + +### Return type + +#### UpdatePetWithForm + +```swift +public enum UpdatePetWithForm { + case http405(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **uploadFile** +```swift + open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: Data? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +uploads an image + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let petId = 987 // Int64 | ID of pet to update +let additionalMetadata = "additionalMetadata_example" // String | Additional data to pass to server (optional) +let file = Data([9, 8, 7]) // Data | file to upload (optional) + +// uploads an image +PetAPI.uploadFile(petId: petId, additionalMetadata: additionalMetadata, file: file).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **Int64** | ID of pet to update | + **additionalMetadata** | **String** | Additional data to pass to server | [optional] + **file** | **Data** | file to upload | [optional] + +### Return type + +#### UploadFile + +```swift +public enum UploadFile { + case http200(value: ApiResponse?, raw: ClientResponse) + case http0(value: ApiResponse?, raw: ClientResponse) +} +``` + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **uploadFileWithRequiredFile** +```swift + open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: Data, additionalMetadata: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +uploads an image (required) + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let petId = 987 // Int64 | ID of pet to update +let requiredFile = Data([9, 8, 7]) // Data | file to upload +let additionalMetadata = "additionalMetadata_example" // String | Additional data to pass to server (optional) + +// uploads an image (required) +PetAPI.uploadFileWithRequiredFile(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **Int64** | ID of pet to update | + **requiredFile** | **Data** | file to upload | + **additionalMetadata** | **String** | Additional data to pass to server | [optional] + +### Return type + +#### UploadFileWithRequiredFile + +```swift +public enum UploadFileWithRequiredFile { + case http200(value: ApiResponse?, raw: ClientResponse) + case http0(value: ApiResponse?, raw: ClientResponse) +} +``` + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/ReadOnlyFirst.md b/samples/client/petstore/swift5/vaporLibrary/docs/ReadOnlyFirst.md new file mode 100644 index 00000000000..ed537b87598 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/ReadOnlyFirst.md @@ -0,0 +1,11 @@ +# ReadOnlyFirst + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**bar** | **String** | | [optional] [readonly] +**baz** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/Return.md b/samples/client/petstore/swift5/vaporLibrary/docs/Return.md new file mode 100644 index 00000000000..e310b15bb5b --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/Return.md @@ -0,0 +1,10 @@ +# Return + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**`return`** | **Int** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/SpecialModelName.md b/samples/client/petstore/swift5/vaporLibrary/docs/SpecialModelName.md new file mode 100644 index 00000000000..3ec27a38c2a --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/SpecialModelName.md @@ -0,0 +1,10 @@ +# SpecialModelName + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**specialPropertyName** | **Int64** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/StoreAPI.md b/samples/client/petstore/swift5/vaporLibrary/docs/StoreAPI.md new file mode 100644 index 00000000000..d5d5e28833f --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/StoreAPI.md @@ -0,0 +1,250 @@ +# StoreAPI + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**deleteOrder**](StoreAPI.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +[**getInventory**](StoreAPI.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +[**getOrderById**](StoreAPI.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +[**placeOrder**](StoreAPI.md#placeorder) | **POST** /store/order | Place an order for a pet + + +# **deleteOrder** +```swift + open class func deleteOrder(orderId: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Delete purchase order by ID + +For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let orderId = "orderId_example" // String | ID of the order that needs to be deleted + +// Delete purchase order by ID +StoreAPI.deleteOrder(orderId: orderId).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http400(let value, let raw): + case .http404(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **String** | ID of the order that needs to be deleted | + +### Return type + +#### DeleteOrder + +```swift +public enum DeleteOrder { + case http400(value: Void?, raw: ClientResponse) + case http404(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getInventory** +```swift + open class func getInventory(headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Returns pet inventories by status + +Returns a map of status codes to quantities + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + + +// Returns pet inventories by status +StoreAPI.getInventory().whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +#### GetInventory + +```swift +public enum GetInventory { + case http200(value: [String: Int]?, raw: ClientResponse) + case http0(value: [String: Int]?, raw: ClientResponse) +} +``` + +### Authorization + +[api_key](../README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getOrderById** +```swift + open class func getOrderById(orderId: Int64, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Find purchase order by ID + +For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let orderId = 987 // Int64 | ID of pet that needs to be fetched + +// Find purchase order by ID +StoreAPI.getOrderById(orderId: orderId).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http400(let value, let raw): + case .http404(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **Int64** | ID of pet that needs to be fetched | + +### Return type + +#### GetOrderById + +```swift +public enum GetOrderById { + case http200(value: Order?, raw: ClientResponse) + case http400(value: Void?, raw: ClientResponse) + case http404(value: Void?, raw: ClientResponse) + case http0(value: Order?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **placeOrder** +```swift + open class func placeOrder(body: Order, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Place an order for a pet + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = Order(id: 123, petId: 123, quantity: 123, shipDate: Date(), status: "status_example", complete: false) // Order | order placed for purchasing the pet + +// Place an order for a pet +StoreAPI.placeOrder(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http400(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Order**](Order.md) | order placed for purchasing the pet | + +### Return type + +#### PlaceOrder + +```swift +public enum PlaceOrder { + case http200(value: Order?, raw: ClientResponse) + case http400(value: Void?, raw: ClientResponse) + case http0(value: Order?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/StringBooleanMap.md b/samples/client/petstore/swift5/vaporLibrary/docs/StringBooleanMap.md new file mode 100644 index 00000000000..7abf11ec68b --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/StringBooleanMap.md @@ -0,0 +1,9 @@ +# StringBooleanMap + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/Tag.md b/samples/client/petstore/swift5/vaporLibrary/docs/Tag.md new file mode 100644 index 00000000000..ff4ac8aa451 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/Tag.md @@ -0,0 +1,11 @@ +# Tag + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Int64** | | [optional] +**name** | **String** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/TypeHolderDefault.md b/samples/client/petstore/swift5/vaporLibrary/docs/TypeHolderDefault.md new file mode 100644 index 00000000000..5161394bdc3 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/TypeHolderDefault.md @@ -0,0 +1,14 @@ +# TypeHolderDefault + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**stringItem** | **String** | | [default to "what"] +**numberItem** | **Double** | | +**integerItem** | **Int** | | +**boolItem** | **Bool** | | [default to true] +**arrayItem** | **[Int]** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/TypeHolderExample.md b/samples/client/petstore/swift5/vaporLibrary/docs/TypeHolderExample.md new file mode 100644 index 00000000000..c0530dc0e5b --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/TypeHolderExample.md @@ -0,0 +1,15 @@ +# TypeHolderExample + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**stringItem** | **String** | | +**numberItem** | **Double** | | +**floatItem** | **Float** | | +**integerItem** | **Int** | | +**boolItem** | **Bool** | | +**arrayItem** | **[Int]** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/User.md b/samples/client/petstore/swift5/vaporLibrary/docs/User.md new file mode 100644 index 00000000000..5a439de0ff9 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/User.md @@ -0,0 +1,17 @@ +# User + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **Int64** | | [optional] +**username** | **String** | | [optional] +**firstName** | **String** | | [optional] +**lastName** | **String** | | [optional] +**email** | **String** | | [optional] +**password** | **String** | | [optional] +**phone** | **String** | | [optional] +**userStatus** | **Int** | User Status | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/UserAPI.md b/samples/client/petstore/swift5/vaporLibrary/docs/UserAPI.md new file mode 100644 index 00000000000..1d6e94e0431 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/UserAPI.md @@ -0,0 +1,480 @@ +# UserAPI + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**createUser**](UserAPI.md#createuser) | **POST** /user | Create user +[**createUsersWithArrayInput**](UserAPI.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserAPI.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +[**deleteUser**](UserAPI.md#deleteuser) | **DELETE** /user/{username} | Delete user +[**getUserByName**](UserAPI.md#getuserbyname) | **GET** /user/{username} | Get user by user name +[**loginUser**](UserAPI.md#loginuser) | **GET** /user/login | Logs user into the system +[**logoutUser**](UserAPI.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +[**updateUser**](UserAPI.md#updateuser) | **PUT** /user/{username} | Updated user + + +# **createUser** +```swift + open class func createUser(body: User, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Create user + +This can only be done by the logged in user. + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = User(id: 123, username: "username_example", firstName: "firstName_example", lastName: "lastName_example", email: "email_example", password: "password_example", phone: "phone_example", userStatus: 123) // User | Created user object + +// Create user +UserAPI.createUser(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**User**](User.md) | Created user object | + +### Return type + +#### CreateUser + +```swift +public enum CreateUser { + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **createUsersWithArrayInput** +```swift + open class func createUsersWithArrayInput(body: [User], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Creates list of users with given input array + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = [User(id: 123, username: "username_example", firstName: "firstName_example", lastName: "lastName_example", email: "email_example", password: "password_example", phone: "phone_example", userStatus: 123)] // [User] | List of user object + +// Creates list of users with given input array +UserAPI.createUsersWithArrayInput(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**[User]**](User.md) | List of user object | + +### Return type + +#### CreateUsersWithArrayInput + +```swift +public enum CreateUsersWithArrayInput { + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **createUsersWithListInput** +```swift + open class func createUsersWithListInput(body: [User], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Creates list of users with given input array + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let body = [User(id: 123, username: "username_example", firstName: "firstName_example", lastName: "lastName_example", email: "email_example", password: "password_example", phone: "phone_example", userStatus: 123)] // [User] | List of user object + +// Creates list of users with given input array +UserAPI.createUsersWithListInput(body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**[User]**](User.md) | List of user object | + +### Return type + +#### CreateUsersWithListInput + +```swift +public enum CreateUsersWithListInput { + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **deleteUser** +```swift + open class func deleteUser(username: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Delete user + +This can only be done by the logged in user. + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let username = "username_example" // String | The name that needs to be deleted + +// Delete user +UserAPI.deleteUser(username: username).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http400(let value, let raw): + case .http404(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String** | The name that needs to be deleted | + +### Return type + +#### DeleteUser + +```swift +public enum DeleteUser { + case http400(value: Void?, raw: ClientResponse) + case http404(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **getUserByName** +```swift + open class func getUserByName(username: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Get user by user name + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let username = "username_example" // String | The name that needs to be fetched. Use user1 for testing. + +// Get user by user name +UserAPI.getUserByName(username: username).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http400(let value, let raw): + case .http404(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String** | The name that needs to be fetched. Use user1 for testing. | + +### Return type + +#### GetUserByName + +```swift +public enum GetUserByName { + case http200(value: User?, raw: ClientResponse) + case http400(value: Void?, raw: ClientResponse) + case http404(value: Void?, raw: ClientResponse) + case http0(value: User?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **loginUser** +```swift + open class func loginUser(username: String, password: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Logs user into the system + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let username = "username_example" // String | The user name for login +let password = "password_example" // String | The password for login in clear text + +// Logs user into the system +UserAPI.loginUser(username: username, password: password).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http200(let value, let raw): + case .http400(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String** | The user name for login | + **password** | **String** | The password for login in clear text | + +### Return type + +#### LoginUser + +```swift +public enum LoginUser { + case http200(value: String?, raw: ClientResponse) + case http400(value: Void?, raw: ClientResponse) + case http0(value: String?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **logoutUser** +```swift + open class func logoutUser(headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Logs out current logged in user session + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + + +// Logs out current logged in user session +UserAPI.logoutUser().whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http0(let value, let raw): + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +#### LogoutUser + +```swift +public enum LogoutUser { + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **updateUser** +```swift + open class func updateUser(username: String, body: User, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture +``` + +Updated user + +This can only be done by the logged in user. + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import PetstoreClient + +let username = "username_example" // String | name that need to be deleted +let body = User(id: 123, username: "username_example", firstName: "firstName_example", lastName: "lastName_example", email: "email_example", password: "password_example", phone: "phone_example", userStatus: 123) // User | Updated user object + +// Updated user +UserAPI.updateUser(username: username, body: body).whenComplete { result in + switch result { + case .failure(let error): + // process error + case .success(let response): + switch response { + // process decoded response value or raw ClientResponse + case .http400(let value, let raw): + case .http404(let value, let raw): + case .http0(let value, let raw): + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **String** | name that need to be deleted | + **body** | [**User**](User.md) | Updated user object | + +### Return type + +#### UpdateUser + +```swift +public enum UpdateUser { + case http400(value: Void?, raw: ClientResponse) + case http404(value: Void?, raw: ClientResponse) + case http0(value: Void?, raw: ClientResponse) +} +``` + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/swift5/vaporLibrary/docs/XmlItem.md b/samples/client/petstore/swift5/vaporLibrary/docs/XmlItem.md new file mode 100644 index 00000000000..1a4eb4e9c83 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/docs/XmlItem.md @@ -0,0 +1,38 @@ +# XmlItem + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**attributeString** | **String** | | [optional] +**attributeNumber** | **Double** | | [optional] +**attributeInteger** | **Int** | | [optional] +**attributeBoolean** | **Bool** | | [optional] +**wrappedArray** | **[Int]** | | [optional] +**nameString** | **String** | | [optional] +**nameNumber** | **Double** | | [optional] +**nameInteger** | **Int** | | [optional] +**nameBoolean** | **Bool** | | [optional] +**nameArray** | **[Int]** | | [optional] +**nameWrappedArray** | **[Int]** | | [optional] +**prefixString** | **String** | | [optional] +**prefixNumber** | **Double** | | [optional] +**prefixInteger** | **Int** | | [optional] +**prefixBoolean** | **Bool** | | [optional] +**prefixArray** | **[Int]** | | [optional] +**prefixWrappedArray** | **[Int]** | | [optional] +**namespaceString** | **String** | | [optional] +**namespaceNumber** | **Double** | | [optional] +**namespaceInteger** | **Int** | | [optional] +**namespaceBoolean** | **Bool** | | [optional] +**namespaceArray** | **[Int]** | | [optional] +**namespaceWrappedArray** | **[Int]** | | [optional] +**prefixNsString** | **String** | | [optional] +**prefixNsNumber** | **Double** | | [optional] +**prefixNsInteger** | **Int** | | [optional] +**prefixNsBoolean** | **Bool** | | [optional] +**prefixNsArray** | **[Int]** | | [optional] +**prefixNsWrappedArray** | **[Int]** | | [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) + + diff --git a/samples/client/petstore/swift5/vaporLibrary/pom.xml b/samples/client/petstore/swift5/vaporLibrary/pom.xml new file mode 100644 index 00000000000..c1b201eb3b4 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + io.swagger + Swift5PetstoreClientTests + pom + 1.0-SNAPSHOT + Swift5 Swagger Petstore Client + + + + maven-dependency-plugin + + + package + + copy-dependencies + + + ${project.build.directory} + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + xcodebuild-test + integration-test + + exec + + + ./run_spmbuild.sh + + + + + + + diff --git a/samples/client/petstore/swift5/vaporLibrary/run_spmbuild.sh b/samples/client/petstore/swift5/vaporLibrary/run_spmbuild.sh new file mode 100755 index 00000000000..1a9f585ad05 --- /dev/null +++ b/samples/client/petstore/swift5/vaporLibrary/run_spmbuild.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +swift build && exit ${PIPESTATUS[0]} diff --git a/samples/client/petstore/swift5/x-swift-hashable/Package.resolved b/samples/client/petstore/swift5/x-swift-hashable/Package.resolved index 85bb93ced12..d384b276b4b 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/Package.resolved +++ b/samples/client/petstore/swift5/x-swift-hashable/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "38b05fc9f86501ef8018aa90cf3d83bd97f74067", - "version": "0.4.0" + "revision": "876d162385e9862ae8b3c8d65dc301312b040005", + "version": "0.6.0" } } ] diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs.swift index 01bc6ff0d8d..941c61b713a 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs.swift @@ -11,8 +11,8 @@ public typealias PetstoreClientAPI = PetstoreClient open class PetstoreClient { public static var basePath = "http://petstore.swagger.io:80/v2" - public static var credential: URLCredential? public static var customHeaders: [String: String] = [:] + public static var credential: URLCredential? public static var requestBuilderFactory: RequestBuilderFactory = URLSessionRequestBuilderFactory() public static var apiResponseQueue: DispatchQueue = .main } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 542fb6f69ba..7d09ab30c12 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class AnotherFakeAPI { + /** To test special tags @@ -50,5 +54,4 @@ open class AnotherFakeAPI { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 9b75edc92ee..5480213e38d 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeAPI { + /** - parameter body: (body) Input boolean as post body (optional) @@ -680,5 +684,4 @@ open class FakeAPI { return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index fd7d845d340..9683e0ce5b1 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class FakeClassnameTags123API { + /** To test class name in snake case @@ -53,5 +57,4 @@ open class FakeClassnameTags123API { return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index d7d5bdfa2ea..8cbd15364b6 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class PetAPI { + /** Add a new pet to the store @@ -479,5 +483,4 @@ open class PetAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index c80d4286b53..a83e954ae6a 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class StoreAPI { + /** Delete purchase order by ID @@ -185,5 +189,4 @@ open class StoreAPI { return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 542dc212bd1..dbff6ade41c 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -6,8 +6,12 @@ // import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif open class UserAPI { + /** Create user @@ -362,5 +366,4 @@ open class UserAPI { return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) } - } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Configuration.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Configuration.swift index 18edabbed78..8fb05331889 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Configuration.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Configuration.swift @@ -7,6 +7,7 @@ import Foundation open class Configuration { + // This value is used to configure the date formatter that is used to serialize dates into JSON format. // You must set it prior to encoding any dates, and it will only be read once. @available(*, unavailable, message: "To set a different date format, use CodableHelper.dateFormatter instead.") diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift index 9080af3e960..e760b200563 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/AdditionalPropertiesClass.swift @@ -33,3 +33,4 @@ public struct AdditionalPropertiesClass: Codable { try container.encodeIfPresent(mapMapString, forKey: .mapMapString) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift index c26cc3b6a8d..fb1a2df615d 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Animal.swift @@ -33,3 +33,4 @@ public struct Animal: Codable { try container.encodeIfPresent(color, forKey: .color) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift index 7d81a45adbe..4ee097de054 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift @@ -37,3 +37,4 @@ public struct ApiResponse: Codable { try container.encodeIfPresent(message, forKey: .message) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift index d25598464fb..6f3ceb17753 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfArrayOfNumberOnly: Codable { try container.encodeIfPresent(arrayArrayNumber, forKey: .arrayArrayNumber) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift index 1d28ec680cc..eb9892beb2b 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayOfNumberOnly.swift @@ -29,3 +29,4 @@ public struct ArrayOfNumberOnly: Codable { try container.encodeIfPresent(arrayNumber, forKey: .arrayNumber) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift index 6f1028d1507..76aad66ec82 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ArrayTest.swift @@ -37,3 +37,4 @@ public struct ArrayTest: Codable { try container.encodeIfPresent(arrayArrayOfModel, forKey: .arrayArrayOfModel) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift index 74ec197ecda..d06bb38d2d1 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Capitalization.swift @@ -50,3 +50,4 @@ public struct Capitalization: Codable { try container.encodeIfPresent(ATT_NAME, forKey: .ATT_NAME) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift index 8645c52b44f..7a394aca88d 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Cat.swift @@ -37,3 +37,4 @@ public struct Cat: Codable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift index ed986d32cc6..679eda93b89 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/CatAllOf.swift @@ -29,3 +29,4 @@ public struct CatAllOf: Codable { try container.encodeIfPresent(declawed, forKey: .declawed) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Category.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Category.swift index 398da60aa73..89016ca353d 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Category.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Category.swift @@ -33,3 +33,4 @@ public struct Category: Codable, Hashable { try container.encode(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift index c38e0db828f..bc4e56c01ae 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ClassModel.swift @@ -30,3 +30,4 @@ public struct ClassModel: Codable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Client.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Client.swift index 170939891b6..f1c50e5b8b9 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Client.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Client.swift @@ -29,3 +29,4 @@ public struct Client: Codable { try container.encodeIfPresent(client, forKey: .client) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift index 57ed7a20a3c..55c387c28ae 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Dog.swift @@ -37,3 +37,4 @@ public struct Dog: Codable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift index 5be7f8b08ca..b86ba8ccf8f 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/DogAllOf.swift @@ -29,3 +29,4 @@ public struct DogAllOf: Codable { try container.encodeIfPresent(breed, forKey: .breed) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift index 67c2e914a2e..edd583c8a29 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumArrays.swift @@ -41,3 +41,4 @@ public struct EnumArrays: Codable { try container.encodeIfPresent(arrayEnum, forKey: .arrayEnum) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift index a70a595f214..4ae75032cfc 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/EnumTest.swift @@ -63,3 +63,4 @@ public struct EnumTest: Codable { try container.encodeIfPresent(outerEnum, forKey: .outerEnum) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/File.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/File.swift index 69e3da33b3f..d6513e0df74 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/File.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/File.swift @@ -31,3 +31,4 @@ public struct File: Codable { try container.encodeIfPresent(sourceURI, forKey: .sourceURI) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift index 68387be7c4c..d707e2ff2e2 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FileSchemaTestClass.swift @@ -33,3 +33,4 @@ public struct FileSchemaTestClass: Codable { try container.encodeIfPresent(files, forKey: .files) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift index fcbb5c3f7be..cbf0050081e 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/FormatTest.swift @@ -77,3 +77,4 @@ public struct FormatTest: Codable { try container.encode(password, forKey: .password) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift index 42fe810e04a..9185cd673a8 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/HasOnlyReadOnly.swift @@ -33,3 +33,4 @@ public struct HasOnlyReadOnly: Codable { try container.encodeIfPresent(foo, forKey: .foo) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/List.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/List.swift index e5c7ec7f3d6..6568fe28f34 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/List.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/List.swift @@ -29,3 +29,4 @@ public struct List: Codable { try container.encodeIfPresent(_123list, forKey: ._123list) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift index c1d8412cda0..eb9634803b3 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MapTest.swift @@ -45,3 +45,4 @@ public struct MapTest: Codable { try container.encodeIfPresent(indirectMap, forKey: .indirectMap) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift index e2b08455158..4d171a58c80 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/MixedPropertiesAndAdditionalPropertiesClass.swift @@ -37,3 +37,4 @@ public struct MixedPropertiesAndAdditionalPropertiesClass: Codable { try container.encodeIfPresent(map, forKey: .map) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift index 3e02e71a66f..24a07e862b8 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Model200Response.swift @@ -34,3 +34,4 @@ public struct Model200Response: Codable { try container.encodeIfPresent(_class, forKey: ._class) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Name.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Name.swift index 9cef79be16c..15308075d9a 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Name.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Name.swift @@ -42,3 +42,4 @@ public struct Name: Codable { try container.encodeIfPresent(_123number, forKey: ._123number) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift index 9da0be0af2b..555b1beda1d 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/NumberOnly.swift @@ -29,3 +29,4 @@ public struct NumberOnly: Codable { try container.encodeIfPresent(justNumber, forKey: .justNumber) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Order.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Order.swift index adde2ac7624..be133bc42ad 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Order.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Order.swift @@ -55,3 +55,4 @@ public struct Order: Codable { try container.encodeIfPresent(complete, forKey: .complete) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift index 0a520ef9ae7..6e555ae9e1e 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/OuterComposite.swift @@ -37,3 +37,4 @@ public struct OuterComposite: Codable { try container.encodeIfPresent(myBoolean, forKey: .myBoolean) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift index a87ab825ea0..ddd1186b891 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Pet.swift @@ -55,3 +55,4 @@ public struct Pet: Codable, Hashable { try container.encodeIfPresent(status, forKey: .status) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift index eeaf9625e38..b4cd35ad296 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/ReadOnlyFirst.swift @@ -33,3 +33,4 @@ public struct ReadOnlyFirst: Codable { try container.encodeIfPresent(baz, forKey: .baz) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Return.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Return.swift index b1abd5c6485..f12d1c17fdc 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Return.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Return.swift @@ -30,3 +30,4 @@ public struct Return: Codable { try container.encodeIfPresent(_return, forKey: ._return) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift index 65d9147f3e6..f797e406453 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/SpecialModelName.swift @@ -29,3 +29,4 @@ public struct SpecialModelName: Codable { try container.encodeIfPresent(specialPropertyName, forKey: .specialPropertyName) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift index 9494292aaef..1ef2bd41c79 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/StringBooleanMap.swift @@ -49,3 +49,4 @@ public struct StringBooleanMap: Codable { additionalProperties = try additionalPropertiesContainer.decodeMap(Bool.self, excludedKeys: nonAdditionalPropertyKeys) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift index cd5acc827db..07b826264f3 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/Tag.swift @@ -33,3 +33,4 @@ public struct Tag: Codable, Hashable { try container.encodeIfPresent(name, forKey: .name) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift index ac7d4626df7..dcf87b413ab 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderDefault.swift @@ -45,3 +45,4 @@ public struct TypeHolderDefault: Codable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift index 2de070c4927..634f2d55168 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/TypeHolderExample.swift @@ -45,3 +45,4 @@ public struct TypeHolderExample: Codable { try container.encode(arrayItem, forKey: .arrayItem) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/User.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/User.swift index c25aec1dc04..bad75dea179 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/User.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models/User.swift @@ -58,3 +58,4 @@ public struct User: Codable { try container.encodeIfPresent(userStatus, forKey: .userStatus) } } + diff --git a/samples/client/petstore/swift5/x-swift-hashable/pom.xml b/samples/client/petstore/swift5/x-swift-hashable/pom.xml new file mode 100644 index 00000000000..c1b201eb3b4 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + io.swagger + Swift5PetstoreClientTests + pom + 1.0-SNAPSHOT + Swift5 Swagger Petstore Client + + + + maven-dependency-plugin + + + package + + copy-dependencies + + + ${project.build.directory} + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + xcodebuild-test + integration-test + + exec + + + ./run_spmbuild.sh + + + + + + + diff --git a/samples/client/petstore/swift5/x-swift-hashable/run_spmbuild.sh b/samples/client/petstore/swift5/x-swift-hashable/run_spmbuild.sh new file mode 100755 index 00000000000..1a9f585ad05 --- /dev/null +++ b/samples/client/petstore/swift5/x-swift-hashable/run_spmbuild.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +swift build && exit ${PIPESTATUS[0]} From fdbf02764d144ff1469ce3905dff5b19352b6447 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Mon, 7 Jun 2021 03:49:59 +0200 Subject: [PATCH 088/192] [dart][dart-dio] Add support for query collection parameter format (#9635) * [dart][dart-dio] Add support for query collection parameter format * add support for collectionFormat in query parameters and www-url-encoded content * add tests * remove empty query parameter maps from generated code * closes #6681 * closes #9522 * closes #8271 (the last remaining parts) * Fix formatting --- .../languages/DartDioNextClientCodegen.java | 4 +- .../resources/dart/libraries/dio/api.mustache | 18 ++- .../dart/libraries/dio/api_util.mustache | 28 ---- .../built_value/api_util.mustache | 75 +++++++++++ .../built_value/query_param.mustache | 1 + .../built_value/serialize.mustache | 13 +- .../lib/src/api/another_fake_api.dart | 5 - .../lib/src/api/default_api.dart | 4 - .../lib/src/api/fake_api.dart | 125 +++++------------- .../src/api/fake_classname_tags123_api.dart | 5 - .../lib/src/api/pet_api.dart | 41 +----- .../lib/src/api/store_api.dart | 17 --- .../lib/src/api/user_api.dart | 37 +----- .../lib/src/api_util.dart | 49 ++++++- .../test/api/fake_api_test.dart | 21 ++- .../test/api/pet_api_test.dart | 12 +- .../test/matcher/list_param_matcher.dart | 20 +++ 17 files changed, 233 insertions(+), 242 deletions(-) delete mode 100644 modules/openapi-generator/src/main/resources/dart/libraries/dio/api_util.mustache create mode 100644 modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/api_util.mustache create mode 100644 modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/query_param.mustache create mode 100644 samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/matcher/list_param_matcher.dart diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java index 6b7beaeaea2..6557d7cad3e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java @@ -153,7 +153,6 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { final String srcFolder = libFolder + File.separator + "src"; supportingFiles.add(new SupportingFile("api_client.mustache", srcFolder, "api.dart")); - supportingFiles.add(new SupportingFile("api_util.mustache", srcFolder, "api_util.dart")); final String authFolder = srcFolder + File.separator + "auth"; supportingFiles.add(new SupportingFile("auth/api_key_auth.mustache", authFolder, "api_key_auth.dart")); @@ -177,6 +176,7 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { private void configureSerializationLibraryBuiltValue(String srcFolder) { supportingFiles.add(new SupportingFile("serialization/built_value/serializers.mustache", srcFolder, "serializers.dart")); + supportingFiles.add(new SupportingFile("serialization/built_value/api_util.mustache", srcFolder, "api_util.dart")); typeMapping.put("Array", "BuiltList"); typeMapping.put("array", "BuiltList"); @@ -339,7 +339,7 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen { } resultImports.addAll(rewriteImports(op.imports, false)); - if (op.getHasFormParams()) { + if (op.getHasFormParams() || op.getHasQueryParams()) { resultImports.add("package:" + pubName + "/src/api_util.dart"); } diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache index 5182266d24b..cdfe8be4dd8 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/api.mustache @@ -83,14 +83,13 @@ class {{classname}} { },{{#hasConsumes}} contentType: '{{#prioritizedContentTypes}}{{#-first}}{{{mediaType}}}{{/-first}}{{/prioritizedContentTypes}}',{{/hasConsumes}} validateStatus: validateStatus, - ); + );{{#hasQueryParams}} final _queryParameters = { {{#queryParams}} - {{^required}}{{^isNullable}}if ({{{paramName}}} != null) {{/isNullable}}{{/required}}r'{{baseName}}': {{paramName}}, + {{^required}}{{^isNullable}}if ({{{paramName}}} != null) {{/isNullable}}{{/required}}r'{{baseName}}': {{#useBuiltValue}}{{>serialization/built_value/query_param}}{{/useBuiltValue}}, {{/queryParams}} - }; - {{#hasBodyOrFormParams}} + };{{/hasQueryParams}}{{#hasBodyOrFormParams}} dynamic _bodyData; @@ -100,20 +99,19 @@ class {{classname}} { throw DioError( requestOptions: _options.compose( _dio.options, - _path, - queryParameters: _queryParameters, + _path,{{#hasQueryParams}} + queryParameters: _queryParameters,{{/hasQueryParams}} ), type: DioErrorType.other, error: error, )..stackTrace = stackTrace; - } - {{/hasBodyOrFormParams}} + }{{/hasBodyOrFormParams}} final _response = await _dio.request( _path,{{#hasBodyOrFormParams}} data: _bodyData,{{/hasBodyOrFormParams}} - options: _options, - queryParameters: _queryParameters, + options: _options,{{#hasQueryParams}} + queryParameters: _queryParameters,{{/hasQueryParams}} cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/api_util.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/api_util.mustache deleted file mode 100644 index 4cdc6bcea3c..00000000000 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/api_util.mustache +++ /dev/null @@ -1,28 +0,0 @@ -{{>header}} -import 'dart:convert'; - -import 'package:built_collection/built_collection.dart'; -import 'package:built_value/serializer.dart'; - -/// Format the given form parameter object into something that Dio can handle. -/// Returns primitive or String. -/// Returns List/Map if the value is BuildList/BuiltMap. -dynamic encodeFormParameter(Serializers serializers, dynamic value, FullType type) { - if (value == null) { - return ''; - } - if (value is String || value is num || value is bool) { - return value; - } - final serialized = serializers.serialize( - value as Object, - specifiedType: type, - ); - if (serialized is String) { - return serialized; - } - if (value is BuiltList || value is BuiltMap) { - return serialized; - } - return json.encode(serialized); -} diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/api_util.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/api_util.mustache new file mode 100644 index 00000000000..fb5ab08aeda --- /dev/null +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/api_util.mustache @@ -0,0 +1,75 @@ +{{>header}} +import 'dart:convert'; +import 'dart:typed_data'; + +import 'package:built_collection/built_collection.dart'; +import 'package:built_value/serializer.dart'; +import 'package:dio/dio.dart'; +import 'package:dio/src/parameter.dart'; + +/// Format the given form parameter object into something that Dio can handle. +/// Returns primitive or String. +/// Returns List/Map if the value is BuildList/BuiltMap. +dynamic encodeFormParameter(Serializers serializers, dynamic value, FullType type) { + if (value == null) { + return ''; + } + if (value is String || value is num || value is bool) { + return value; + } + final serialized = serializers.serialize( + value as Object, + specifiedType: type, + ); + if (serialized is String) { + return serialized; + } + if (value is BuiltList || value is BuiltSet || value is BuiltMap) { + return serialized; + } + return json.encode(serialized); +} + +dynamic encodeQueryParameter( + Serializers serializers, + dynamic value, + FullType type, +) { + if (value == null) { + return ''; + } + if (value is String || value is num || value is bool) { + return value; + } + if (value is Uint8List) { + // Currently not sure how to serialize this + return value; + } + final serialized = serializers.serialize( + value as Object, + specifiedType: type, + ); + if (serialized == null) { + return ''; + } + if (serialized is String) { + return serialized; + } + return serialized; +} + +ListParam encodeCollectionQueryParameter( + Serializers serializers, + dynamic value, + FullType type, { + ListFormat format = ListFormat.multi, +}) { + final serialized = serializers.serialize( + value as Object, + specifiedType: type, + ); + if (value is BuiltList || value is BuiltSet) { + return ListParam(List.of((serialized as Iterable).cast()), format); + } + throw ArgumentError('Invalid value passed to encodeCollectionQueryParameter'); +} diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/query_param.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/query_param.mustache new file mode 100644 index 00000000000..3a27e77225e --- /dev/null +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/query_param.mustache @@ -0,0 +1 @@ +{{#isContainer}}encodeCollectionQueryParameter<{{{baseType}}}>{{/isContainer}}{{^isContainer}}encodeQueryParameter{{/isContainer}}(_serializers, {{{paramName}}}, const FullType({{^isContainer}}{{{dataType}}}){{/isContainer}}{{#isContainer}}Built{{#isMap}}Map{{/isMap}}{{#isArray}}{{#uniqueItems}}Set{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}{{/isArray}}, [{{#isMap}}FullType(String), {{/isMap}}FullType({{{baseType}}})]), format: ListFormat.{{collectionFormat}}{{/isContainer}}) \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/serialize.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/serialize.mustache index 03d38c93878..60dcd1773ba 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/serialize.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/serialize.mustache @@ -1,9 +1,18 @@ {{#hasFormParams}} - _bodyData = {{#isMultipart}}FormData.fromMap({{/isMultipart}}{ + {{#isMultipart}} + _bodyData = FormData.fromMap({ {{#formParams}} {{^required}}{{^isNullable}}if ({{{paramName}}} != null) {{/isNullable}}{{/required}}r'{{{baseName}}}': {{#isFile}}{{{paramName}}}{{/isFile}}{{^isFile}}encodeFormParameter(_serializers, {{{paramName}}}, const FullType({{^isContainer}}{{{baseType}}}{{/isContainer}}{{#isContainer}}Built{{#isMap}}Map{{/isMap}}{{#isArray}}{{#uniqueItems}}Set{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}{{/isArray}}, [{{#isMap}}FullType(String), {{/isMap}}FullType({{{baseType}}})]{{/isContainer}})){{/isFile}}, {{/formParams}} - }{{#isMultipart}}){{/isMultipart}}; + }); + {{/isMultipart}} + {{^isMultipart}} + _bodyData = { + {{#formParams}} + {{^required}}{{^isNullable}}if ({{{paramName}}} != null) {{/isNullable}}{{/required}}r'{{{baseName}}}': {{>serialization/built_value/query_param}}, + {{/formParams}} + }; + {{/isMultipart}} {{/hasFormParams}} {{#bodyParam}} {{#isPrimitiveType}} diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart index 4d0e1366d06..45709153344 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/another_fake_api.dart @@ -54,9 +54,6 @@ class AnotherFakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -68,7 +65,6 @@ class AnotherFakeApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -79,7 +75,6 @@ class AnotherFakeApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart index 3a46c9a2048..7ad2d45db75 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/default_api.dart @@ -51,13 +51,9 @@ class DefaultApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - final _response = await _dio.request( _path, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart index 20e4483e544..fbc60334177 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_api.dart @@ -61,13 +61,9 @@ class FakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - final _response = await _dio.request( _path, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -151,7 +147,7 @@ class FakeApi { ); final _queryParameters = { - if (query1 != null) r'query_1': query1, + if (query1 != null) r'query_1': encodeQueryParameter(_serializers, query1, const FullType(String)), }; dynamic _bodyData; @@ -222,9 +218,6 @@ class FakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -235,7 +228,6 @@ class FakeApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -246,7 +238,6 @@ class FakeApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -315,9 +306,6 @@ class FakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -329,7 +317,6 @@ class FakeApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -340,7 +327,6 @@ class FakeApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -413,9 +399,6 @@ class FakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -426,7 +409,6 @@ class FakeApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -437,7 +419,6 @@ class FakeApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -506,9 +487,6 @@ class FakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -519,7 +497,6 @@ class FakeApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -530,7 +507,6 @@ class FakeApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -599,9 +575,6 @@ class FakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -613,7 +586,6 @@ class FakeApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -624,7 +596,6 @@ class FakeApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -697,9 +668,6 @@ class FakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -710,7 +678,6 @@ class FakeApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -721,7 +688,6 @@ class FakeApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -767,9 +733,6 @@ class FakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -781,7 +744,6 @@ class FakeApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -792,7 +754,6 @@ class FakeApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -841,7 +802,7 @@ class FakeApi { ); final _queryParameters = { - r'query': query, + r'query': encodeQueryParameter(_serializers, query, const FullType(String)), }; dynamic _bodyData; @@ -912,9 +873,6 @@ class FakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -926,7 +884,6 @@ class FakeApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -937,7 +894,6 @@ class FakeApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -1041,27 +997,24 @@ class FakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { _bodyData = { - if (integer != null) r'integer': encodeFormParameter(_serializers, integer, const FullType(int)), - if (int32 != null) r'int32': encodeFormParameter(_serializers, int32, const FullType(int)), - if (int64 != null) r'int64': encodeFormParameter(_serializers, int64, const FullType(int)), - r'number': encodeFormParameter(_serializers, number, const FullType(num)), - if (float != null) r'float': encodeFormParameter(_serializers, float, const FullType(double)), - r'double': encodeFormParameter(_serializers, double_, const FullType(double)), - if (string != null) r'string': encodeFormParameter(_serializers, string, const FullType(String)), - r'pattern_without_delimiter': encodeFormParameter(_serializers, patternWithoutDelimiter, const FullType(String)), - r'byte': encodeFormParameter(_serializers, byte, const FullType(String)), - if (binary != null) r'binary': binary, - if (date != null) r'date': encodeFormParameter(_serializers, date, const FullType(Date)), - if (dateTime != null) r'dateTime': encodeFormParameter(_serializers, dateTime, const FullType(DateTime)), - if (password != null) r'password': encodeFormParameter(_serializers, password, const FullType(String)), - if (callback != null) r'callback': encodeFormParameter(_serializers, callback, const FullType(String)), + if (integer != null) r'integer': encodeQueryParameter(_serializers, integer, const FullType(int)), + if (int32 != null) r'int32': encodeQueryParameter(_serializers, int32, const FullType(int)), + if (int64 != null) r'int64': encodeQueryParameter(_serializers, int64, const FullType(int)), + r'number': encodeQueryParameter(_serializers, number, const FullType(num)), + if (float != null) r'float': encodeQueryParameter(_serializers, float, const FullType(double)), + r'double': encodeQueryParameter(_serializers, double_, const FullType(double)), + if (string != null) r'string': encodeQueryParameter(_serializers, string, const FullType(String)), + r'pattern_without_delimiter': encodeQueryParameter(_serializers, patternWithoutDelimiter, const FullType(String)), + r'byte': encodeQueryParameter(_serializers, byte, const FullType(String)), + if (binary != null) r'binary': encodeQueryParameter(_serializers, binary, const FullType(Uint8List)), + if (date != null) r'date': encodeQueryParameter(_serializers, date, const FullType(Date)), + if (dateTime != null) r'dateTime': encodeQueryParameter(_serializers, dateTime, const FullType(DateTime)), + if (password != null) r'password': encodeQueryParameter(_serializers, password, const FullType(String)), + if (callback != null) r'callback': encodeQueryParameter(_serializers, callback, const FullType(String)), }; } catch(error, stackTrace) { @@ -1069,7 +1022,6 @@ class FakeApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -1080,7 +1032,6 @@ class FakeApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -1143,18 +1094,18 @@ class FakeApi { ); final _queryParameters = { - if (enumQueryStringArray != null) r'enum_query_string_array': enumQueryStringArray, - if (enumQueryString != null) r'enum_query_string': enumQueryString, - if (enumQueryInteger != null) r'enum_query_integer': enumQueryInteger, - if (enumQueryDouble != null) r'enum_query_double': enumQueryDouble, + if (enumQueryStringArray != null) r'enum_query_string_array': encodeCollectionQueryParameter(_serializers, enumQueryStringArray, const FullType(BuiltList, [FullType(String)]), format: ListFormat.multi), + if (enumQueryString != null) r'enum_query_string': encodeQueryParameter(_serializers, enumQueryString, const FullType(String)), + if (enumQueryInteger != null) r'enum_query_integer': encodeQueryParameter(_serializers, enumQueryInteger, const FullType(int)), + if (enumQueryDouble != null) r'enum_query_double': encodeQueryParameter(_serializers, enumQueryDouble, const FullType(double)), }; dynamic _bodyData; try { _bodyData = { - if (enumFormStringArray != null) r'enum_form_string_array': encodeFormParameter(_serializers, enumFormStringArray, const FullType(BuiltList, [FullType(String)])), - if (enumFormString != null) r'enum_form_string': encodeFormParameter(_serializers, enumFormString, const FullType(String)), + if (enumFormStringArray != null) r'enum_form_string_array': encodeCollectionQueryParameter(_serializers, enumFormStringArray, const FullType(BuiltList, [FullType(String)]), format: ListFormat.csv), + if (enumFormString != null) r'enum_form_string': encodeQueryParameter(_serializers, enumFormString, const FullType(String)), }; } catch(error, stackTrace) { @@ -1236,10 +1187,10 @@ class FakeApi { ); final _queryParameters = { - r'required_string_group': requiredStringGroup, - r'required_int64_group': requiredInt64Group, - if (stringGroup != null) r'string_group': stringGroup, - if (int64Group != null) r'int64_group': int64Group, + r'required_string_group': encodeQueryParameter(_serializers, requiredStringGroup, const FullType(int)), + r'required_int64_group': encodeQueryParameter(_serializers, requiredInt64Group, const FullType(int)), + if (stringGroup != null) r'string_group': encodeQueryParameter(_serializers, stringGroup, const FullType(int)), + if (int64Group != null) r'int64_group': encodeQueryParameter(_serializers, int64Group, const FullType(int)), }; final _response = await _dio.request( @@ -1291,9 +1242,6 @@ class FakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -1305,7 +1253,6 @@ class FakeApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -1316,7 +1263,6 @@ class FakeApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -1364,15 +1310,12 @@ class FakeApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { _bodyData = { - r'param': encodeFormParameter(_serializers, param, const FullType(String)), - r'param2': encodeFormParameter(_serializers, param2, const FullType(String)), + r'param': encodeQueryParameter(_serializers, param, const FullType(String)), + r'param2': encodeQueryParameter(_serializers, param2, const FullType(String)), }; } catch(error, stackTrace) { @@ -1380,7 +1323,6 @@ class FakeApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -1391,7 +1333,6 @@ class FakeApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -1445,11 +1386,11 @@ class FakeApi { ); final _queryParameters = { - r'pipe': pipe, - r'ioutil': ioutil, - r'http': http, - r'url': url, - r'context': context, + r'pipe': encodeCollectionQueryParameter(_serializers, pipe, const FullType(BuiltList, [FullType(String)]), format: ListFormat.pipes), + r'ioutil': encodeCollectionQueryParameter(_serializers, ioutil, const FullType(BuiltList, [FullType(String)]), format: ListFormat.csv), + r'http': encodeCollectionQueryParameter(_serializers, http, const FullType(BuiltList, [FullType(String)]), format: ListFormat.ssv), + r'url': encodeCollectionQueryParameter(_serializers, url, const FullType(BuiltList, [FullType(String)]), format: ListFormat.csv), + r'context': encodeCollectionQueryParameter(_serializers, context, const FullType(BuiltList, [FullType(String)]), format: ListFormat.multi), }; final _response = await _dio.request( diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart index e48c38c96ba..96329ea11f2 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/fake_classname_tags123_api.dart @@ -61,9 +61,6 @@ class FakeClassnameTags123Api { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -75,7 +72,6 @@ class FakeClassnameTags123Api { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -86,7 +82,6 @@ class FakeClassnameTags123Api { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart index be1d9d27924..1dedc0456eb 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/pet_api.dart @@ -62,9 +62,6 @@ class PetApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -76,7 +73,6 @@ class PetApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -87,7 +83,6 @@ class PetApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -140,13 +135,9 @@ class PetApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - final _response = await _dio.request( _path, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -197,7 +188,7 @@ class PetApi { ); final _queryParameters = { - r'status': status, + r'status': encodeCollectionQueryParameter(_serializers, status, const FullType(BuiltList, [FullType(String)]), format: ListFormat.csv), }; final _response = await _dio.request( @@ -282,7 +273,7 @@ class PetApi { ); final _queryParameters = { - r'tags': tags, + r'tags': encodeCollectionQueryParameter(_serializers, tags, const FullType(BuiltSet, [FullType(String)]), format: ListFormat.csv), }; final _response = await _dio.request( @@ -367,13 +358,9 @@ class PetApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - final _response = await _dio.request( _path, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -451,9 +438,6 @@ class PetApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -465,7 +449,6 @@ class PetApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -476,7 +459,6 @@ class PetApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -531,15 +513,12 @@ class PetApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { _bodyData = { - if (name != null) r'name': encodeFormParameter(_serializers, name, const FullType(String)), - if (status != null) r'status': encodeFormParameter(_serializers, status, const FullType(String)), + if (name != null) r'name': encodeQueryParameter(_serializers, name, const FullType(String)), + if (status != null) r'status': encodeQueryParameter(_serializers, status, const FullType(String)), }; } catch(error, stackTrace) { @@ -547,7 +526,6 @@ class PetApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -558,7 +536,6 @@ class PetApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -613,9 +590,6 @@ class PetApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -629,7 +603,6 @@ class PetApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -640,7 +613,6 @@ class PetApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -722,9 +694,6 @@ class PetApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -738,7 +707,6 @@ class PetApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -749,7 +717,6 @@ class PetApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart index 24c4bd7a55c..93d5ccbe97c 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/store_api.dart @@ -54,13 +54,9 @@ class StoreApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - final _response = await _dio.request( _path, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -110,13 +106,9 @@ class StoreApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - final _response = await _dio.request( _path, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -188,13 +180,9 @@ class StoreApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - final _response = await _dio.request( _path, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -267,9 +255,6 @@ class StoreApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -281,7 +266,6 @@ class StoreApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -292,7 +276,6 @@ class StoreApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart index a0552484403..6faaed6336d 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api/user_api.dart @@ -8,6 +8,7 @@ import 'package:built_value/serializer.dart'; import 'package:dio/dio.dart'; import 'package:built_collection/built_collection.dart'; +import 'package:openapi/src/api_util.dart'; import 'package:openapi/src/model/user.dart'; class UserApi { @@ -55,9 +56,6 @@ class UserApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -69,7 +67,6 @@ class UserApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -80,7 +77,6 @@ class UserApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -126,9 +122,6 @@ class UserApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -140,7 +133,6 @@ class UserApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -151,7 +143,6 @@ class UserApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -197,9 +188,6 @@ class UserApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -211,7 +199,6 @@ class UserApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -222,7 +209,6 @@ class UserApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -267,13 +253,9 @@ class UserApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - final _response = await _dio.request( _path, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -318,13 +300,9 @@ class UserApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - final _response = await _dio.request( _path, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -399,8 +377,8 @@ class UserApi { ); final _queryParameters = { - r'username': username, - r'password': password, + r'username': encodeQueryParameter(_serializers, username, const FullType(String)), + r'password': encodeQueryParameter(_serializers, password, const FullType(String)), }; final _response = await _dio.request( @@ -472,13 +450,9 @@ class UserApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - final _response = await _dio.request( _path, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, @@ -526,9 +500,6 @@ class UserApi { validateStatus: validateStatus, ); - final _queryParameters = { - }; - dynamic _bodyData; try { @@ -540,7 +511,6 @@ class UserApi { requestOptions: _options.compose( _dio.options, _path, - queryParameters: _queryParameters, ), type: DioErrorType.other, error: error, @@ -551,7 +521,6 @@ class UserApi { _path, data: _bodyData, options: _options, - queryParameters: _queryParameters, cancelToken: cancelToken, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress, diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api_util.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api_util.dart index ca7832e3693..09b9ba88fd9 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api_util.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/api_util.dart @@ -3,9 +3,12 @@ // import 'dart:convert'; +import 'dart:typed_data'; import 'package:built_collection/built_collection.dart'; import 'package:built_value/serializer.dart'; +import 'package:dio/dio.dart'; +import 'package:dio/src/parameter.dart'; /// Format the given form parameter object into something that Dio can handle. /// Returns primitive or String. @@ -24,8 +27,52 @@ dynamic encodeFormParameter(Serializers serializers, dynamic value, FullType typ if (serialized is String) { return serialized; } - if (value is BuiltList || value is BuiltMap) { + if (value is BuiltList || value is BuiltSet || value is BuiltMap) { return serialized; } return json.encode(serialized); } + +dynamic encodeQueryParameter( + Serializers serializers, + dynamic value, + FullType type, +) { + if (value == null) { + return ''; + } + if (value is String || value is num || value is bool) { + return value; + } + if (value is Uint8List) { + // Currently not sure how to serialize this + return value; + } + final serialized = serializers.serialize( + value as Object, + specifiedType: type, + ); + if (serialized == null) { + return ''; + } + if (serialized is String) { + return serialized; + } + return serialized; +} + +ListParam encodeCollectionQueryParameter( + Serializers serializers, + dynamic value, + FullType type, { + ListFormat format = ListFormat.multi, +}) { + final serialized = serializers.serialize( + value as Object, + specifiedType: type, + ); + if (value is BuiltList || value is BuiltSet) { + return ListParam(List.of((serialized as Iterable).cast()), format); + } + throw ArgumentError('Invalid value passed to encodeCollectionQueryParameter'); +} diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/fake_api_test.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/fake_api_test.dart index 9330474d499..180815a69f1 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/fake_api_test.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/fake_api_test.dart @@ -2,10 +2,13 @@ import 'dart:typed_data'; import 'package:built_collection/built_collection.dart'; import 'package:dio/dio.dart'; +import 'package:dio/src/parameter.dart'; import 'package:http_mock_adapter/http_mock_adapter.dart'; import 'package:openapi/openapi.dart'; import 'package:test/test.dart'; +import '../matcher/list_param_matcher.dart'; + void main() { Openapi client; DioAdapter server; @@ -97,7 +100,20 @@ void main() { (request) => request.reply(200, null), data: { 'enum_form_string': 'formString', - 'enum_form_string_array': '[foo, bar]', + 'enum_form_string_array': ListParamMatcher( + expected: ListParam( + ['foo', 'bar'], + ListFormat.csv, + ), + ), + }, + queryParameters: { + 'enum_query_string_array': ListParamMatcher( + expected: ListParam( + ['a', 'b', 'c'], + ListFormat.multi, + ), + ), }, headers: { 'content-type': 'application/x-www-form-urlencoded', @@ -105,6 +121,9 @@ void main() { ); final response = await client.getFakeApi().testEnumParameters( + enumQueryStringArray: ListBuilder( + ['a', 'b', 'c'], + ).build(), enumFormString: 'formString', enumFormStringArray: ListBuilder( ['foo', 'bar'], diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/pet_api_test.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/pet_api_test.dart index 6b52fdce13e..1ae3964851d 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/pet_api_test.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/api/pet_api_test.dart @@ -1,11 +1,13 @@ import 'package:built_collection/built_collection.dart'; import 'package:dio/dio.dart'; +import 'package:dio/src/parameter.dart'; import 'package:http_mock_adapter/http_mock_adapter.dart'; import 'package:http_parser/http_parser.dart'; import 'package:openapi/openapi.dart'; import 'package:test/test.dart'; import '../matcher/form_data_matcher.dart'; +import '../matcher/list_param_matcher.dart'; void main() { const photo1 = 'https://localhost/photo1.jpg'; @@ -195,10 +197,12 @@ void main() { request: Request( method: RequestMethods.get, queryParameters: { - 'status': [ - 'available', - 'sold', - ], + 'status': ListParamMatcher( + expected: ListParam( + ['available', 'sold'], + ListFormat.csv, + ), + ), }, headers: { Headers.contentTypeHeader: Matchers.pattern('application/json'), diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/matcher/list_param_matcher.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/matcher/list_param_matcher.dart new file mode 100644 index 00000000000..649ef67ccec --- /dev/null +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake_tests/test/matcher/list_param_matcher.dart @@ -0,0 +1,20 @@ +import 'package:dio/src/parameter.dart'; +import 'package:meta/meta.dart'; +import 'package:collection/collection.dart'; +import 'package:http_mock_adapter/src/matchers/matcher.dart'; + +class ListParamMatcher extends Matcher { + final ListParam expected; + + const ListParamMatcher({@required this.expected}); + + @override + bool matches(dynamic actual) { + return actual is ListParam && + ListEquality().equals( + actual.value, + expected.value, + ) && + actual.format == expected.format; + } +} From 8c268c9578eea512186be83f7362477eaa0874a4 Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Mon, 7 Jun 2021 03:46:52 +0100 Subject: [PATCH 089/192] [swift][client] make swift 5 generator stable (#9666) --- .../org/openapitools/codegen/languages/Swift5ClientCodegen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index bf7dfd78d89..e8b4ecb4fe8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -103,7 +103,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig this.useOneOfInterfaces = true; generatorMetadata = GeneratorMetadata.newBuilder(generatorMetadata) - .stability(Stability.BETA) + .stability(Stability.STABLE) .build(); outputFolder = "generated-code" + File.separator + "swift"; From 088bca15809df8d3d3a3aa341ae285087b6a5e7c Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 7 Jun 2021 11:55:26 +0800 Subject: [PATCH 090/192] [python][fastapi] various minor improvements (#9672) * fix python fastapi tests, update readme, add CI test * update FILES * use virtualenv * fix pom.xml * skip flake8 --- .../languages/PythonFastAPIServerCodegen.java | 2 +- .../resources/python-fastapi/README.mustache | 15 ++- .../python-fastapi/api_test.mustache | 3 +- pom.xml | 1 + .../server/petstore/python-fastapi/README.md | 15 ++- .../server/petstore/python-fastapi/pom.xml | 43 +++++++ .../petstore/python-fastapi/test_python3.sh | 33 ++++++ .../python-fastapi/tests/test_pet_api.py | 110 ++++++++++-------- .../python-fastapi/tests/test_store_api.py | 46 ++++---- .../python-fastapi/tests/test_user_api.py | 98 +++++++++------- 10 files changed, 246 insertions(+), 120 deletions(-) create mode 100644 samples/server/petstore/python-fastapi/pom.xml create mode 100755 samples/server/petstore/python-fastapi/test_python3.sh diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java index c4d2e6f3283..6ee1131973e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java @@ -285,7 +285,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen { System.out.println("# https://opencollective.com/openapi_generator/donate #"); System.out.println("# #"); System.out.println("# This generator's contributed by Nikita Vakula (https://github.com/krjakbrjak)#"); - System.out.println("# Please support his work directly via https://paypal.me/krjakbrjaki \uD83D\uDE4F #"); + System.out.println("# Please support his work directly via https://paypal.me/krjakbrjak \uD83D\uDE4F #"); System.out.println("################################################################################"); } diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/README.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/README.mustache index 6528c792026..ae8428952fd 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/README.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/README.mustache @@ -16,9 +16,9 @@ Python >= 3.6 To run the server, please execute the following from the root directory: -``` - pip3 install -r requirements.txt - uvicorn main:app --host 0.0.0.0 --port {{serverPort}} +```bash +pip3 install -r requirements.txt +uvicorn main:app --host 0.0.0.0 --port {{serverPort}} ``` and open your browser at `http://localhost:{{serverPort}}/docs/` to see the docs. @@ -30,3 +30,12 @@ To run the server on a Docker container, please execute the following from the r ```bash docker-compose up --build ``` + +## Tests + +To run the tests: + +```bash +pip3 install pytest +PYTHONPATH=src pytest tests +``` diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/api_test.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/api_test.mustache index 248f282e857..5a81aa32c60 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/api_test.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/api_test.mustache @@ -47,7 +47,8 @@ def test_{{operationId}}(client: TestClient): params=params,{{/-first}}{{/queryParams}} ) - assert response.status_code == 200 + # uncomment below to assert the status code of the HTTP response + #assert response.status_code == 200 {{/operation}} {{/operations}} diff --git a/pom.xml b/pom.xml index b968a476900..5a8c00165ef 100644 --- a/pom.xml +++ b/pom.xml @@ -1187,6 +1187,7 @@ samples/server/petstore/python-aiohttp samples/server/petstore/python-aiohttp-srclayout + samples/server/petstore/python-fastapi samples/server/petstore/python-flask + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + @@ -229,7 +236,7 @@ 2.7 1.0.0 4.8.1 - 1.3.50 + 1.5.10 1.8 1.8.0 2.2 From 9099b43cd8121b7716cf52b9a593951d41a56b9c Mon Sep 17 00:00:00 2001 From: Gabriel Castro Date: Mon, 7 Jun 2021 00:44:49 -0400 Subject: [PATCH 093/192] bump swagger-parser-version to v2.0.26 to close #9086 (#9631) * bump swagger-parser-version to v2.0.26 * add tests for #9086 --- .../codegen/yaml/YamlGeneratorTest.java | 33 +++++++++++++++ .../src/test/resources/2_0/issue_9086.yaml | 34 ++++++++++++++++ .../resources/2_0/issue_9086_expected.yaml | 40 +++++++++++++++++++ pom.xml | 2 +- 4 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 modules/openapi-generator/src/test/resources/2_0/issue_9086.yaml create mode 100644 modules/openapi-generator/src/test/resources/2_0/issue_9086_expected.yaml diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/yaml/YamlGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/yaml/YamlGeneratorTest.java index c264a8a251c..cc4e74ade5d 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/yaml/YamlGeneratorTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/yaml/YamlGeneratorTest.java @@ -17,6 +17,7 @@ package org.openapitools.codegen.yaml; +import io.swagger.v3.oas.models.OpenAPI; import org.openapitools.codegen.ClientOptInput; import org.openapitools.codegen.DefaultGenerator; import org.openapitools.codegen.TestUtils; @@ -85,4 +86,36 @@ public class YamlGeneratorTest { output.deleteOnExit(); } + + @Test + public void testIssue9086() throws Exception { + Map properties = new HashMap<>(); + properties.put(OpenAPIYamlGenerator.OUTPUT_NAME, "issue_9086.yaml"); + + File output = Files.createTempDirectory("issue_9086").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("openapi-yaml") + .setAdditionalProperties(properties) + .setInputSpec("src/test/resources/2_0/issue_9086.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + DefaultGenerator generator = new DefaultGenerator(); + List files = generator.opts(clientOptInput).generate(); + Assert.assertEquals(files.size(), 5); + TestUtils.ensureContainsFile(files, output, "issue_9086.yaml"); + + TestUtils.ensureContainsFile(files, output, "README.md"); + TestUtils.ensureContainsFile(files, output, ".openapi-generator-ignore"); + TestUtils.ensureContainsFile(files, output, ".openapi-generator/FILES"); + TestUtils.ensureContainsFile(files, output, ".openapi-generator/VERSION"); + + OpenAPI generated = TestUtils.parseSpec(new File(output, "issue_9086.yaml").getPath()); + OpenAPI expected = TestUtils.parseSpec("src/test/resources/2_0/issue_9086_expected.yaml"); + + // use #toString because the equals methods is a little stricter than necessary for this test + Assert.assertEquals(expected.toString(), generated.toString()); + } } diff --git a/modules/openapi-generator/src/test/resources/2_0/issue_9086.yaml b/modules/openapi-generator/src/test/resources/2_0/issue_9086.yaml new file mode 100644 index 00000000000..3210031ade3 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/2_0/issue_9086.yaml @@ -0,0 +1,34 @@ +swagger: '2.0' +info: + title: 'Buggy Api' + version: '1.0' +consumes: + - application/json +paths: + /foo/bar: + post: + responses: + '200': + description: ok + schema: + type: object + additionalProperties: false + properties: + n: + type: number + example: 1.23 + /foo/bar2: + post: + responses: + '200': + description: ok + schema: + $ref: '#/definitions/bar2' +definitions: + bar2: + type: object + additionalProperties: false + properties: + n: + type: number + example: 4.56 diff --git a/modules/openapi-generator/src/test/resources/2_0/issue_9086_expected.yaml b/modules/openapi-generator/src/test/resources/2_0/issue_9086_expected.yaml new file mode 100644 index 00000000000..cce682ee053 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/2_0/issue_9086_expected.yaml @@ -0,0 +1,40 @@ +openapi: 3.0.1 +info: + title: 'Buggy Api' + version: '1.0' +paths: + /foo/bar: + post: + responses: + '200': + description: ok + content: + '*/*': + schema: + $ref: '#/components/schemas/inline_response_200' + + /foo/bar2: + post: + responses: + '200': + description: ok + content: + '*/*': + schema: + $ref: '#/components/schemas/bar2' +components: + schemas: + bar2: + type: object + example: { n: 4.56 } + properties: + n: + type: number + example: 4.56 + inline_response_200: + type: object + example: { n: 1.23 } + properties: + n: + type: number + example: 1.23 diff --git a/pom.xml b/pom.xml index 5a8c00165ef..a78fee85d3c 100644 --- a/pom.xml +++ b/pom.xml @@ -1576,7 +1576,7 @@ 1.8 2.1.2 io.swagger.parser.v3 - 2.0.24 + 2.0.26 3.3.1 2.4 1.2 From 2d5199f80f6df34a8edf4f6c78b7463e3a80c864 Mon Sep 17 00:00:00 2001 From: cal Date: Mon, 7 Jun 2021 08:24:18 +0200 Subject: [PATCH 094/192] [cleanup] erefactor/AutoRefactor - Log parameters rather than log message (#9665) AutoRefactor cleanup 'LogParametersRatherThanLogMessage' applied by erefactor: Replaces a string concatenation as parameter of a logger method by a string template followed by objects. For AutoRefactor see https://github.com/JnRouvignac/AutoRefactor For erefactor see https://github.com/cal101/erefactor --- .../codegen/languages/BashClientCodegen.java | 10 +++++----- .../codegen/languages/CLibcurlClientCodegen.java | 15 ++++++++------- .../codegen/languages/CSharpClientCodegen.java | 14 +++++++------- .../languages/CSharpNancyFXServerCodegen.java | 2 +- .../languages/CSharpNetCoreClientCodegen.java | 9 +++++---- .../codegen/languages/CrystalClientCodegen.java | 13 +++++++------ .../codegen/languages/ElixirClientCodegen.java | 11 ++++++----- .../codegen/languages/ElmClientCodegen.java | 2 +- .../codegen/languages/ErlangClientCodegen.java | 2 +- .../codegen/languages/ErlangProperCodegen.java | 2 +- .../codegen/languages/ErlangServerCodegen.java | 2 +- .../codegen/languages/FlashClientCodegen.java | 4 ++-- .../languages/FsharpGiraffeServerCodegen.java | 2 +- .../languages/HaskellHttpClientCodegen.java | 7 +++---- .../codegen/languages/HaskellServantCodegen.java | 7 +++---- .../codegen/languages/JavaClientCodegen.java | 10 ++++++---- .../languages/JavascriptApolloClientCodegen.java | 13 +++++++------ .../languages/JavascriptClientCodegen.java | 13 +++++++------ .../JavascriptClosureAngularClientCodegen.java | 4 ++-- .../codegen/languages/KotlinServerCodegen.java | 2 +- 20 files changed, 75 insertions(+), 69 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java index ea212c92f18..214f98ea3b3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java @@ -497,7 +497,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig { } else if ("pipes".equals(p.collectionFormat)) { p.vendorExtensions.put("x-codegen-collection-pipes", true); } else { - LOGGER.warn("Unsupported collection format in Bash generator: " + p.collectionFormat); + LOGGER.warn("Unsupported collection format in Bash generator: {}", p.collectionFormat); } } } @@ -778,7 +778,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig { } else if ("array".equalsIgnoreCase(type) || "map".equalsIgnoreCase(type)) { // skip map/array as it will be handled below } else { - LOGGER.warn("Type " + type + " not handled properly in setParameterExampleValue"); + LOGGER.warn("Type {} not handled properly in setParameterExampleValue", type); } if (example == null) { @@ -802,20 +802,20 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig { // rename to empty_method_name_1 (e.g.) if method name is empty if (StringUtils.isEmpty(operationId)) { operationId = camelize("empty_method_name_" + emptyMethodNameCounter++, true); - LOGGER.warn("Empty method name (operationId) found. Renamed to " + operationId); + LOGGER.warn("Empty method name (operationId) found. Renamed to {}", operationId); return operationId; } // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = underscore("call" + camelize(operationId)); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } // operationId starts with a number if (operationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, underscore(sanitizeName("call_" + operationId))); operationId = "call_" + operationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java index 78c6e2507e5..4c7a0c74160 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java @@ -519,7 +519,7 @@ public class CLibcurlClientCodegen extends DefaultCodegen implements CodegenConf } else if (ModelUtils.isObjectSchema(schema)) { return null; // models are managed at moustache level } else { - LOGGER.warn("Type " + schema.getType() + " not handled properly in toExampleValue"); + LOGGER.warn("Type {} not handled properly in toExampleValue", schema.getType()); } if (ModelUtils.isStringSchema(schema)) { @@ -593,13 +593,14 @@ public class CLibcurlClientCodegen extends DefaultCodegen implements CodegenConf // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { String modelName = camelize("Model" + name); - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, modelName); return modelName; } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + camelize("model_" + name)); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } @@ -719,21 +720,21 @@ public class CLibcurlClientCodegen extends DefaultCodegen implements CodegenConf // rename to empty_method_name_1 (e.g.) if method name is empty if (StringUtils.isEmpty(operationId)) { operationId = camelize("empty_method_name_" + emptyMethodNameCounter++); - LOGGER.warn("Empty method name (operationId) found. Renamed to " + operationId); + LOGGER.warn("Empty method name (operationId) found. Renamed to {}", operationId); return operationId; } // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = camelize(sanitizeName("call_" + operationId), true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } // operationId starts with a number if (operationId.matches("^\\d.*")) { String newOperationId = camelize(sanitizeName("call_" + operationId), true); - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } @@ -889,7 +890,7 @@ public class CLibcurlClientCodegen extends DefaultCodegen implements CodegenConf if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit code: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java index 052868899f2..6f93f3294c9 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java @@ -311,7 +311,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { LOGGER.warn(".NET Standard 1.3 support has been DEPRECATED in this generator. Please use `csharp-netcore` generator instead."); additionalProperties.put(MCS_NET_VERSION_KEY, "4.6-api"); if (additionalProperties.containsKey("supportsUWP")) { - LOGGER.warn(".NET " + NETSTANDARD + " generator does not support UWP."); + LOGGER.warn(".NET {} generator does not support UWP.", NETSTANDARD); additionalProperties.remove("supportsUWP"); } @@ -332,7 +332,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { } else if (NET40.equals(this.targetFramework)) { additionalProperties.put(MCS_NET_VERSION_KEY, "4"); if (additionalProperties.containsKey(CodegenConstants.SUPPORTS_ASYNC)) { - LOGGER.warn(".NET " + NET40 + " generator does not support async."); + LOGGER.warn(".NET {} generator does not support async.", NET40); additionalProperties.remove(CodegenConstants.SUPPORTS_ASYNC); } @@ -350,13 +350,13 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { if (additionalProperties.containsKey(CodegenConstants.GENERATE_PROPERTY_CHANGED)) { if (NET35.equals(targetFramework)) { - LOGGER.warn(CodegenConstants.GENERATE_PROPERTY_CHANGED + " is only supported by generated code for .NET 4+."); + LOGGER.warn("{} is only supported by generated code for .NET 4+.", CodegenConstants.GENERATE_PROPERTY_CHANGED); additionalProperties.remove(CodegenConstants.GENERATE_PROPERTY_CHANGED); } else if (NETSTANDARD.equals(targetFramework)) { - LOGGER.warn(CodegenConstants.GENERATE_PROPERTY_CHANGED + " is not supported in .NET Standard generated code."); + LOGGER.warn("{} is not supported in .NET Standard generated code.", CodegenConstants.GENERATE_PROPERTY_CHANGED); additionalProperties.remove(CodegenConstants.GENERATE_PROPERTY_CHANGED); } else if (Boolean.TRUE.equals(netCoreProjectFileFlag)) { - LOGGER.warn(CodegenConstants.GENERATE_PROPERTY_CHANGED + " is not supported in .NET Core csproj project format."); + LOGGER.warn("{} is not supported in .NET Core csproj project format.", CodegenConstants.GENERATE_PROPERTY_CHANGED); additionalProperties.remove(CodegenConstants.GENERATE_PROPERTY_CHANGED); } else { setGeneratePropertyChanged(convertPropertyToBooleanAndWriteBack(CodegenConstants.GENERATE_PROPERTY_CHANGED)); @@ -714,7 +714,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { public void setTargetFramework(String dotnetFramework) { if (!frameworks.containsKey(dotnetFramework)) { - LOGGER.warn("Invalid .NET framework version, defaulting to " + this.targetFramework); + LOGGER.warn("Invalid .NET framework version, defaulting to {}", this.targetFramework); } else { this.targetFramework = dotnetFramework; } @@ -758,7 +758,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { break; } - LOGGER.info("Generating code for .NET Framework " + this.targetFramework); + LOGGER.info("Generating code for .NET Framework {}", this.targetFramework); } private CodegenModel reconcileInlineEnums(CodegenModel codegenModel, CodegenModel parentCodegenModel) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNancyFXServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNancyFXServerCodegen.java index 74db8d4ca2d..a99243ab359 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNancyFXServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNancyFXServerCodegen.java @@ -268,7 +268,7 @@ public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen { } private void postProcessParentModels(final Map models) { - LOGGER.debug("Processing parents: " + parentModels); + LOGGER.debug("Processing parents: {}", parentModels); for (final String parent : parentModels) { final CodegenModel parentModel = ModelUtils.getModelByName(parent, models); if (parentModel != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java index 356c6a895b0..2b0a5fe068d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java @@ -639,7 +639,7 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { } if (additionalProperties.containsKey(CodegenConstants.GENERATE_PROPERTY_CHANGED)) { - LOGGER.warn(CodegenConstants.GENERATE_PROPERTY_CHANGED + " is not supported in the .NET Standard generator."); + LOGGER.warn("{} is not supported in the .NET Standard generator.", CodegenConstants.GENERATE_PROPERTY_CHANGED); additionalProperties.remove(CodegenConstants.GENERATE_PROPERTY_CHANGED); } @@ -789,7 +789,7 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { } else { this.targetFramework = dotnetFramework; } - LOGGER.info("Generating code for .NET Framework " + this.targetFramework); + LOGGER.info("Generating code for .NET Framework {}", this.targetFramework); } public void setTargetFramework(List strategies) { @@ -804,7 +804,7 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { } this.targetFramework = strategies.stream().map(p -> p.name) .collect(Collectors.joining(";")); - LOGGER.info("Generating code for .NET Framework " + this.targetFramework); + LOGGER.info("Generating code for .NET Framework {}", this.targetFramework); } public void setTestTargetFramework(String testTargetFramework) { @@ -1026,7 +1026,8 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { properties.put(NET_STANDARD, this.isNetStandard); if (properties.containsKey(SUPPORTS_UWP)) { - LOGGER.warn(".NET " + this.name + " generator does not support the UWP option. Use the csharp generator instead."); + LOGGER.warn(".NET {} generator does not support the UWP option. Use the csharp generator instead.", + this.name); properties.remove(SUPPORTS_UWP); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java index c092a8b5acd..65083f70694 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java @@ -363,13 +363,14 @@ public class CrystalClientCodegen extends DefaultCodegen { // model name cannot use reserved keyword, e.g. return if (isReservedWord(modelName)) { modelName = camelize("Model" + modelName); - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, modelName); return modelName; } // model name starts with number if (modelName.matches("^\\d.*")) { - LOGGER.warn(modelName + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + modelName)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", modelName, + camelize("model_" + modelName)); modelName = "model_" + modelName; // e.g. 200Response => Model200Response (after camelize) } @@ -482,20 +483,20 @@ public class CrystalClientCodegen extends DefaultCodegen { // rename to empty_method_name_1 (e.g.) if method name is empty if (StringUtils.isEmpty(operationId)) { operationId = underscore("empty_method_name_" + emptyMethodNameCounter++); - LOGGER.warn("Empty method name (operationId) found. Renamed to " + operationId); + LOGGER.warn("Empty method name (operationId) found. Renamed to {}", operationId); return operationId; } // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = underscore("call_" + operationId); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } // operationId starts with a number if (operationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, underscore(sanitizeName("call_" + operationId))); operationId = "call_" + operationId; } @@ -881,7 +882,7 @@ public class CrystalClientCodegen extends DefaultCodegen { } LOGGER.error("Error running the command ({}). Exit value: {}, Error output: {}", command, exitValue, sb.toString()); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java index 51ce18efe45..78c1235c9df 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java @@ -449,13 +449,14 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + ("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, "model_" + name); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + ("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + "model_" + name); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } @@ -471,13 +472,13 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, underscore(sanitizeName("call_" + operationId))); return underscore(sanitizeName("call_" + operationId)); } // operationId starts with a number if (operationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, underscore(sanitizeName("call_" + operationId))); operationId = "call_" + operationId; } @@ -602,7 +603,7 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig return code; } - LOGGER.warn("Unknown HTTP status code: " + this.code); + LOGGER.warn("Unknown HTTP status code: {}", this.code); return "\"" + code + "\""; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java index e7aaf1a3695..ba89d67819c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java @@ -188,7 +188,7 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig { // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = camelize("call_" + operationId, true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java index 00013976a9b..231d1136b77 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java @@ -300,7 +300,7 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig public String toOperationId(String operationId) { // method name cannot use reserved keyword, e.g. if if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId)).replaceAll("\\.", "_")); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, underscore(sanitizeName("call_" + operationId)).replaceAll("\\.", "_")); operationId = "call_" + operationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java index 9e9c1186a25..40947a5e958 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java @@ -359,7 +359,7 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig public String toOperationId(String operationId) { // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId)).replaceAll("\\.", "_")); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, underscore(sanitizeName("call_" + operationId)).replaceAll("\\.", "_")); operationId = "call_" + operationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java index 117a8aed937..b1cda784a5a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java @@ -256,7 +256,7 @@ public class ErlangServerCodegen extends DefaultCodegen implements CodegenConfig public String toOperationId(String operationId) { // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + camelize(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, camelize(sanitizeName("call_" + operationId))); operationId = "call_" + operationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FlashClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FlashClientCodegen.java index 89a5a2ae69a..8f2d6ce052e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FlashClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FlashClientCodegen.java @@ -327,7 +327,7 @@ public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, camelize("model_" + name)); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } @@ -377,7 +377,7 @@ public class FlashClientCodegen extends DefaultCodegen implements CodegenConfig // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, underscore(sanitizeName("call_" + operationId))); operationId = "call_" + operationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FsharpGiraffeServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FsharpGiraffeServerCodegen.java index b62591c1d0e..3764f2c4b72 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FsharpGiraffeServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/FsharpGiraffeServerCodegen.java @@ -262,7 +262,7 @@ public class FsharpGiraffeServerCodegen extends AbstractFSharpCodegen { String original = operation.path; operation.path = operation.path.replace("?", "/"); if (!original.equals(operation.path)) { - LOGGER.warn("Normalized " + original + " to " + operation.path + ". Please verify generated source."); + LOGGER.warn("Normalized {} to {}. Please verify generated source.", original, operation.path); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java index 8b264bf325f..497634d1d9f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java @@ -655,8 +655,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC Schema additionalProperties2 = getAdditionalProperties(p); String type = additionalProperties2.getType(); if (null == type) { - LOGGER.error("No Type defined for Additional Schema " + additionalProperties2 + "\n" // - + "\tIn Schema: " + p); + LOGGER.error("No Type defined for Additional Schema {}\n\tIn Schema: {}", additionalProperties2, p); } String inner = getSchemaType(additionalProperties2); return "(Map.Map Text " + inner + ")"; @@ -693,7 +692,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC counter++; } if (!op.operationId.equals(uniqueName)) { - LOGGER.warn("generated unique operationId `" + uniqueName + "`"); + LOGGER.warn("generated unique operationId `{}`", uniqueName); } op.operationId = uniqueName; op.operationIdLowerCase = uniqueName.toLowerCase(Locale.ROOT); @@ -1455,7 +1454,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java index cefd7cebde8..e19e4d024a2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java @@ -388,7 +388,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf @Override public String getSchemaType(Schema p) { String schemaType = super.getSchemaType(p); - LOGGER.debug("debugging OpenAPI type: " + p.getType() + ", " + p.getFormat() + " => " + schemaType); + LOGGER.debug("debugging OpenAPI type: {}, {} => {}", p.getType(), p.getFormat(), schemaType); String type = null; if (typeMapping.containsKey(schemaType)) { type = typeMapping.get(schemaType); @@ -411,8 +411,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf Schema additionalProperties2 = getAdditionalProperties(p); String type = additionalProperties2.getType(); if (null == type) { - LOGGER.error("No Type defined for Additional Property " + additionalProperties2 + "\n" // - + "\tIn Property: " + p); + LOGGER.error("No Type defined for Additional Property {}\n\tIn Property: {}", additionalProperties2, p); } String inner = getSchemaType(additionalProperties2); return "(Map.Map Text " + inner + ")"; @@ -692,7 +691,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index f82aba5b284..4fa28b3cb5f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -468,7 +468,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen } else if (REST_ASSURED.equals(getLibrary())) { if (getSerializationLibrary() == null) { - LOGGER.info("No serializationLibrary configured, using '" + SERIALIZATION_LIBRARY_GSON + "' as fallback"); + LOGGER.info("No serializationLibrary configured, using '{}' as fallback", SERIALIZATION_LIBRARY_GSON); setSerializationLibrary(SERIALIZATION_LIBRARY_GSON); } if (SERIALIZATION_LIBRARY_JACKSON.equals(getSerializationLibrary())) { @@ -496,7 +496,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen supportingFiles.add(new SupportingFile("kumuluzee.beans.xml.mustache", "src/main/resources/META-INF", "beans.xml")); } } else { - LOGGER.error("Unknown library option (-l/--library): " + getLibrary()); + LOGGER.error("Unknown library option (-l/--library): {}", getLibrary()); } if (usePlayWS) { @@ -553,7 +553,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen } if (getSerializationLibrary() == null) { - LOGGER.info("No serializationLibrary configured, using '" + SERIALIZATION_LIBRARY_GSON + "' as fallback"); + LOGGER.info("No serializationLibrary configured, using '{}' as fallback", SERIALIZATION_LIBRARY_GSON); setSerializationLibrary(SERIALIZATION_LIBRARY_GSON); } switch (getSerializationLibrary()) { @@ -997,7 +997,9 @@ public class JavaClientCodegen extends AbstractJavaCodegen public void forceSerializationLibrary(String serializationLibrary) { if ((this.serializationLibrary != null) && !this.serializationLibrary.equalsIgnoreCase(serializationLibrary)) { - LOGGER.warn("The configured serializationLibrary '" + this.serializationLibrary + "', is not supported by the library: '" + getLibrary() + "', switching back to: " + serializationLibrary); + LOGGER.warn( + "The configured serializationLibrary '{}', is not supported by the library: '{}', switching back to: {}", + this.serializationLibrary, getLibrary(), serializationLibrary); } setSerializationLibrary(serializationLibrary); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java index 058d544f52a..3023ff6ab2e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java @@ -528,14 +528,15 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { String modelName = "Model" + name; - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, modelName); return modelName; } // model name starts with number if (name.matches("^\\d.*")) { String modelName = "Model" + name; // e.g. 200Response => Model200Response (after camelize) - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + modelName); return modelName; } @@ -780,7 +781,7 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod type = openAPIType; } if (null == type) { - LOGGER.error("No Type defined for Schema " + p); + LOGGER.error("No Type defined for Schema {}", p); } return toModelName(type); } @@ -797,14 +798,14 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = camelize("call_" + operationId, true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } // operationId starts with a number if (operationId.matches("^\\d.*")) { String newOperationId = camelize("call_" + operationId, true); - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } @@ -1134,7 +1135,7 @@ public class JavascriptApolloClientCodegen extends DefaultCodegen implements Cod if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit code: {}", command, exitValue); } - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); // Restore interrupted state diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java index 2f7a34e1818..71a93675a0d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java @@ -584,14 +584,15 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { String modelName = "Model" + name; - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, modelName); return modelName; } // model name starts with number if (name.matches("^\\d.*")) { String modelName = "Model" + name; // e.g. 200Response => Model200Response (after camelize) - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + modelName); return modelName; } @@ -836,7 +837,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo type = openAPIType; } if (null == type) { - LOGGER.error("No Type defined for Schema " + p); + LOGGER.error("No Type defined for Schema {}", p); } return toModelName(type); } @@ -853,14 +854,14 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = camelize("call_" + operationId, true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } // operationId starts with a number if (operationId.matches("^\\d.*")) { String newOperationId = camelize("call_" + operationId, true); - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } @@ -1219,7 +1220,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit code: {}", command, exitValue); } - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); // Restore interrupted state diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java index 751d75e4f21..5b8bf164a60 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java @@ -203,7 +203,7 @@ public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implem // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, camelize("model_" + name)); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } @@ -298,7 +298,7 @@ public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implem // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = camelize("call_" + operationId, true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java index 0c182417c94..c5063d99185 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java @@ -189,7 +189,7 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen { if (StringUtils.isEmpty(library)) { this.setLibrary(DEFAULT_LIBRARY); additionalProperties.put(CodegenConstants.LIBRARY, DEFAULT_LIBRARY); - LOGGER.info("`library` option is empty. Default to " + DEFAULT_LIBRARY); + LOGGER.info("`library` option is empty. Default to {}", DEFAULT_LIBRARY); } if (additionalProperties.containsKey(Constants.AUTOMATIC_HEAD_REQUESTS)) { From 19f57184779567e263f7219df6a926cafd7bb79b Mon Sep 17 00:00:00 2001 From: cal Date: Mon, 7 Jun 2021 08:25:30 +0200 Subject: [PATCH 095/192] [cleanup] erefactor/AutoRefactor - Log parameters rather than log message (#9664) AutoRefactor cleanup 'LogParametersRatherThanLogMessage' applied by erefactor: Replaces a string concatenation as parameter of a logger method by a string template followed by objects. For AutoRefactor see https://github.com/JnRouvignac/AutoRefactor For erefactor see https://github.com/cal101/erefactor --- .../codegen/online/service/Generator.java | 2 +- .../openapitools/codegen/DefaultCodegen.java | 31 +++++++++++++------ .../codegen/examples/ExampleGenerator.java | 4 +-- .../codegen/languages/AbstractAdaCodegen.java | 10 +++--- .../languages/AbstractApexCodegen.java | 13 ++++---- .../languages/AbstractCSharpCodegen.java | 11 ++++--- .../codegen/languages/AbstractCppCodegen.java | 4 +-- .../languages/AbstractEiffelCodegen.java | 15 +++++---- .../languages/AbstractFSharpCodegen.java | 11 ++++--- .../codegen/languages/AbstractGoCodegen.java | 23 +++++++------- .../languages/AbstractGraphQLCodegen.java | 7 +++-- .../languages/AbstractJavaCodegen.java | 18 ++++++----- .../languages/AbstractKotlinCodegen.java | 11 ++++--- .../codegen/languages/AbstractPhpCodegen.java | 18 ++++++----- .../AbstractPythonConnexionServerCodegen.java | 29 +++++++++++------ .../languages/AbstractScalaCodegen.java | 9 +++--- .../AbstractTypeScriptClientCodegen.java | 10 +++--- .../languages/AndroidClientCodegen.java | 7 +++-- .../AsciidocDocumentationCodegen.java | 14 ++++----- .../languages/AspNetCoreServerCodegen.java | 29 ++++++++++------- 20 files changed, 159 insertions(+), 117 deletions(-) diff --git a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/service/Generator.java b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/service/Generator.java index be21b970d7a..7cf052e3083 100644 --- a/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/service/Generator.java +++ b/modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/service/Generator.java @@ -153,7 +153,7 @@ public class Generator { List files = new DefaultGenerator().opts(clientOptInput).generate(); if (files.size() > 0) { List filesToAdd = new ArrayList<>(); - LOGGER.debug("adding to " + outputFolder); + LOGGER.debug("adding to {}", outputFolder); filesToAdd.add(new File(outputFolder)); ZipUtil zip = new ZipUtil(); zip.compressFiles(filesToAdd, outputFilename); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index c26a4df1362..f6972cb575f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -2711,14 +2711,18 @@ public class DefaultCodegen implements CodegenConfig { String modelName = ModelUtils.getSimpleRef(oneOf.get$ref()); CodegenProperty thisCp = discriminatorFound(composedSchemaName, oneOf, discPropName, openAPI); if (thisCp == null) { - LOGGER.warn("'" + composedSchemaName + "' defines discriminator '" + discPropName + "', but the referenced OneOf schema '" + modelName + "' is missing " + discPropName); + LOGGER.warn( + "'{}' defines discriminator '{}', but the referenced OneOf schema '{}' is missing {}", + composedSchemaName, discPropName, modelName, discPropName); } if (cp.dataType == null) { cp = thisCp; continue; } if (cp != thisCp) { - LOGGER.warn("'" + composedSchemaName + "' defines discriminator '" + discPropName + "', but the OneOf schema '" + modelName + "' has a different " + discPropName + " definition than the prior OneOf schema's. Make sure the " + discPropName + " type and required values are the same"); + LOGGER.warn( + "'{}' defines discriminator '{}', but the OneOf schema '{}' has a different {} definition than the prior OneOf schema's. Make sure the {} type and required values are the same", + composedSchemaName, discPropName, modelName, discPropName, discPropName); } } return cp; @@ -2730,14 +2734,18 @@ public class DefaultCodegen implements CodegenConfig { String modelName = ModelUtils.getSimpleRef(anyOf.get$ref()); CodegenProperty thisCp = discriminatorFound(composedSchemaName, anyOf, discPropName, openAPI); if (thisCp == null) { - LOGGER.warn("'" + composedSchemaName + "' defines discriminator '" + discPropName + "', but the referenced AnyOf schema '" + modelName + "' is missing " + discPropName); + LOGGER.warn( + "'{}' defines discriminator '{}', but the referenced AnyOf schema '{}' is missing {}", + composedSchemaName, discPropName, modelName, discPropName); } if (cp.dataType == null) { cp = thisCp; continue; } if (cp != thisCp) { - LOGGER.warn("'" + composedSchemaName + "' defines discriminator '" + discPropName + "', but the AnyOf schema '" + modelName + "' has a different " + discPropName + " definition than the prior AnyOf schema's. Make sure the " + discPropName + " type and required values are the same"); + LOGGER.warn( + "'{}' defines discriminator '{}', but the AnyOf schema '{}' has a different {} definition than the prior AnyOf schema's. Make sure the {} type and required values are the same", + composedSchemaName, discPropName, modelName, discPropName, discPropName); } } return cp; @@ -2875,7 +2883,9 @@ public class DefaultCodegen implements CodegenConfig { // schemas also has inline composed schemas // Note: if it is only inline one level, then the inline model resolver will move it into its own // schema and make it a $ref schema in the oneOf/anyOf location - LOGGER.warn("Invalid inline schema defined in oneOf/anyOf in '" + composedSchemaName + "'. Per the OpenApi spec, for this case when a composed schema defines a discriminator, the oneOf/anyOf schemas must use $ref. Change this inline definition to a $ref definition"); + LOGGER.warn( + "Invalid inline schema defined in oneOf/anyOf in '{}'. Per the OpenApi spec, for this case when a composed schema defines a discriminator, the oneOf/anyOf schemas must use $ref. Change this inline definition to a $ref definition", + composedSchemaName); } CodegenProperty df = discriminatorFound(composedSchemaName, sc, discPropName, openAPI); String modelName = ModelUtils.getSimpleRef(ref); @@ -2895,7 +2905,8 @@ public class DefaultCodegen implements CodegenConfig { msgSuffix += spacer + "invalid optional definition of " + discPropName + ", include it in required"; } } - LOGGER.warn("'" + composedSchemaName + "' defines discriminator '" + discPropName + "', but the referenced schema '" + modelName + "' is incorrect. " + msgSuffix); + LOGGER.warn("'{}' defines discriminator '{}', but the referenced schema '{}' is incorrect. {}", + composedSchemaName, discPropName, modelName, msgSuffix); } MappedModel mm = new MappedModel(modelName, toModelName(modelName)); descendentSchemas.add(mm); @@ -4436,7 +4447,9 @@ public class DefaultCodegen implements CodegenConfig { }).collect(Collectors.toList()); } else { - LOGGER.warn("No object schema found for deepObject parameter" + codegenParameter + " deepObject won't have specific properties"); + LOGGER.warn( + "No object schema found for deepObject parameter{} deepObject won't have specific properties", + codegenParameter); } } @@ -4728,7 +4741,7 @@ public class DefaultCodegen implements CodegenConfig { } } if (!co.operationId.equals(uniqueName)) { - LOGGER.warn("generated unique operationId `" + uniqueName + "`"); + LOGGER.warn("generated unique operationId `{}`", uniqueName); } co.operationId = uniqueName; co.operationIdLowerCase = uniqueName.toLowerCase(Locale.ROOT); @@ -4883,7 +4896,7 @@ public class DefaultCodegen implements CodegenConfig { final String key = entry.getKey(); final Schema prop = entry.getValue(); if (prop == null) { - LOGGER.warn("Please report the issue. There shouldn't be null property for " + key); + LOGGER.warn("Please report the issue. There shouldn't be null property for {}", key); } else { final CodegenProperty cp = fromProperty(key, prop); cp.required = mandatory.contains(key); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java index 0c4f9ad726d..e699a252719 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java @@ -204,7 +204,7 @@ public class ExampleGenerator { output.add(kv); } else if (mediaType.startsWith(MIME_TYPE_XML)) { // TODO - LOGGER.warn("XML example value of (array/primitive) is not handled at the moment: " + example); + LOGGER.warn("XML example value of (array/primitive) is not handled at the moment: {}", example); } } } @@ -296,7 +296,7 @@ public class ExampleGenerator { LOGGER.debug("URI or URL format, without default or enum, generating random one."); return "http://example.com/aeiou"; } - LOGGER.debug("No values found, using property name " + propertyName + " as example"); + LOGGER.debug("No values found, using property name {} as example", propertyName); return propertyName; } else if (!StringUtils.isEmpty(property.get$ref())) { // model String simpleName = ModelUtils.getSimpleRef(property.get$ref()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java index 309ae0357fc..f6374d6d946 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java @@ -220,7 +220,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg protected String toAdaIdentifier(String name, String prefix) { // We cannot use reserved keywords for identifiers if (isReservedWord(name)) { - LOGGER.warn("Identifier '" + name + "' is a reserved word, renamed to " + prefix + name); + LOGGER.warn("Identifier '{}' is a reserved word, renamed to {}{}", name, prefix, name); name = prefix + name; } StringBuilder result = new StringBuilder(); @@ -287,20 +287,22 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { String modelName = "Model_" + result; - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, modelName); return modelName; } // model name starts with number if (result.matches("^\\d.*")) { String modelName = "Model_" + result; // e.g. 200Response => Model_200Response (after camelize) - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + modelName); return modelName; } if (languageSpecificPrimitives.contains(result)) { String modelName = "Model_" + result; - LOGGER.warn(name + " (model name matches existing language type) cannot be used as a model name. Renamed to " + modelName); + LOGGER.warn("{} (model name matches existing language type) cannot be used as a model name. Renamed to {}", + name, modelName); return modelName; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java index f2a577ca899..2b27370900e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java @@ -162,14 +162,15 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code // model name cannot use reserved keyword, e.g. return if (isReservedWord(camelizedName)) { final String modelName = "Model" + camelizedName; - LOGGER.warn(camelizedName + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", camelizedName, modelName); return modelName; } // model name starts with number if (camelizedName.matches("^\\d.*")) { final String modelName = "Model" + camelizedName; // e.g. 200Response => Model200Response (after camelize) - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + modelName); return modelName; } @@ -188,7 +189,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code ArraySchema ap = (ArraySchema) p; Schema inner = ap.getItems(); if (inner == null) { - LOGGER.warn(ap.getName() + "(array property) does not have a proper inner type defined"); + LOGGER.warn("{}(array property) does not have a proper inner type defined", ap.getName()); // TODO maybe better defaulting to StringProperty than returning null return null; } @@ -197,7 +198,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code Schema inner = getAdditionalProperties(p); if (inner == null) { - LOGGER.warn(p.getName() + "(map property) does not have a proper inner type defined"); + LOGGER.warn("{}(map property) does not have a proper inner type defined", p.getName()); // TODO maybe better defaulting to StringProperty than returning null return null; } @@ -408,7 +409,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code } if (null == schemaType) { - LOGGER.error("No Type defined for Property " + p); + LOGGER.error("No Type defined for Property {}", p); } return toModelName(schemaType); } @@ -425,7 +426,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = camelize("call_" + operationId, true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index eb263b34c37..883f6cb078b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -789,13 +789,13 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + camelize(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, camelize(sanitizeName("call_" + operationId))); operationId = "call_" + operationId; } // operationId starts with a number if (operationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + camelize(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, camelize(sanitizeName("call_" + operationId))); operationId = "call_" + operationId; } @@ -1032,13 +1032,14 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, camelize("model_" + name)); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + camelize("model_" + name)); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } @@ -1267,7 +1268,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit code: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java index 71f0757d91c..24dabafd7cf 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java @@ -237,7 +237,7 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg @Override public String toOperationId(String operationId) { if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + escapeReservedWord(operationId)); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, escapeReservedWord(operationId)); return escapeReservedWord(operationId); } return sanitizeName(super.toOperationId(operationId)); @@ -329,7 +329,7 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java index 945f7324920..d0554f2646d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java @@ -192,22 +192,22 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + ("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, "model_" + name); name = "model_" + name; // e.g. return => ModelReturn (after // camelize) } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " - + ("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + "model_" + name); name = "model_" + name; // e.g. 200Response => Model200Response // (after camelize) } // model name starts with _ if (name.startsWith("_")) { - LOGGER.warn(name + " (model name starts with _) cannot be used as model name. Renamed to " - + ("model" + name)); + LOGGER.warn("{} (model name starts with _) cannot be used as model name. Renamed to {}", name, + "model" + name); name = "model" + name; // e.g. 200Response => Model200Response // (after camelize) } @@ -344,8 +344,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co // method name cannot use reserved keyword, e.g. return if (isReservedWord(sanitizedOperationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " - + camelize("call_" + operationId)); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, camelize("call_" + operationId)); sanitizedOperationId = "call_" + sanitizedOperationId; } @@ -609,7 +608,7 @@ public abstract class AbstractEiffelCodegen extends DefaultCodegen implements Co @Override protected void updatePropertyForArray(CodegenProperty property, CodegenProperty innerProperty) { if (innerProperty == null) { - LOGGER.warn("skipping invalid array property " + Json.pretty(property)); + LOGGER.warn("skipping invalid array property {}", Json.pretty(property)); return; } property.dataFormat = innerProperty.dataFormat; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java index 0dc4e1126a7..d33738bd824 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java @@ -628,13 +628,13 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + camelize(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, camelize(sanitizeName("call_" + operationId))); operationId = "call_" + operationId; } // operationId starts with a number if (operationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + camelize(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, camelize(sanitizeName("call_" + operationId))); operationId = "call_" + operationId; } @@ -900,13 +900,14 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, camelize("model_" + name)); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + camelize("model_" + name)); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } @@ -1121,7 +1122,7 @@ public abstract class AbstractFSharpCodegen extends DefaultCodegen implements Co if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit code: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java index cee83d467c8..c4dd2d45168 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java @@ -202,7 +202,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege // for reserved word append _ if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as variable name. Renamed to " + escapeReservedWord(name)); + LOGGER.warn("{} (reserved word) cannot be used as variable name. Renamed to {}", name, escapeReservedWord(name)); name = escapeReservedWord(name); } @@ -234,7 +234,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege // really should just be a letter, e.g. "p Person"), but we'll get // around to that some other time... Maybe. if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as parameter name. Renamed to " + name + "_"); + LOGGER.warn("{} (reserved word) cannot be used as parameter name. Renamed to {}_", name, name); name = name + "_"; } @@ -269,7 +269,8 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege name = toModel("model_" + name); if (isReservedFilename(name)) { - LOGGER.warn(name + ".go with suffix (reserved word) cannot be used as filename. Renamed to " + name + "_.go"); + LOGGER.warn("{}.go with suffix (reserved word) cannot be used as filename. Renamed to {}_.go", name, + name); name += "_"; } return name; @@ -292,14 +293,14 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + ("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, "model_" + name); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " - + ("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + "model_" + name); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } @@ -317,7 +318,8 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege // e.g. PetApi.go => pet_api.go api = "api_" + underscore(api); if (isReservedFilename(api)) { - LOGGER.warn(name + ".go with suffix (reserved word) cannot be used as filename. Renamed to " + api + "_.go"); + LOGGER.warn("{}.go with suffix (reserved word) cannot be used as filename. Renamed to {}_.go", name, + api); api += "_"; } apiName = api; @@ -441,14 +443,13 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege // method name cannot use reserved keyword, e.g. return if (isReservedWord(sanitizedOperationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " - + camelize("call_" + sanitizedOperationId)); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, camelize("call_" + sanitizedOperationId)); sanitizedOperationId = "call_" + sanitizedOperationId; } // operationId starts with a number if (sanitizedOperationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + camelize("call_" + sanitizedOperationId)); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, camelize("call_" + sanitizedOperationId)); sanitizedOperationId = "call_" + sanitizedOperationId; } @@ -831,7 +832,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit code: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java index 5246963a8b1..c5a04049af0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java @@ -193,13 +193,14 @@ public abstract class AbstractGraphQLCodegen extends DefaultCodegen implements C // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + ("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, "model_" + name); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + ("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + "model_" + name); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } @@ -317,7 +318,7 @@ public abstract class AbstractGraphQLCodegen extends DefaultCodegen implements C // method name cannot use reserved keyword, e.g. return if (isReservedWord(sanitizedOperationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore("call_" + operationId)); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, underscore("call_" + operationId)); sanitizedOperationId = "call_" + sanitizedOperationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index 0ef7bc8d843..320da10803f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -313,13 +313,14 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code String derivedInvokerPackage = deriveInvokerPackageName((String) additionalProperties.get(CodegenConstants.API_PACKAGE)); this.additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, derivedInvokerPackage); this.setInvokerPackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); - LOGGER.info("Invoker Package Name, originally not set, is now derived from api package name: " + derivedInvokerPackage); + LOGGER.info("Invoker Package Name, originally not set, is now derived from api package name: {}", derivedInvokerPackage); } else if (additionalProperties.containsKey(CodegenConstants.MODEL_PACKAGE)) { // guess from model package String derivedInvokerPackage = deriveInvokerPackageName((String) additionalProperties.get(CodegenConstants.MODEL_PACKAGE)); this.additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, derivedInvokerPackage); this.setInvokerPackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); - LOGGER.info("Invoker Package Name, originally not set, is now derived from model package name: " + derivedInvokerPackage); + LOGGER.info("Invoker Package Name, originally not set, is now derived from model package name: {}", + derivedInvokerPackage); } else { //not set, use default to be passed to template additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); @@ -786,14 +787,15 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code // model name cannot use reserved keyword, e.g. return if (isReservedWord(camelizedName)) { final String modelName = "Model" + camelizedName; - LOGGER.warn(camelizedName + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", camelizedName, modelName); return modelName; } // model name starts with number if (camelizedName.matches("^\\d.*")) { final String modelName = "Model" + camelizedName; // e.g. 200Response => Model200Response (after camelize) - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + modelName); return modelName; } @@ -1140,7 +1142,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } if (null == openAPIType) { - LOGGER.error("No Type defined for Schema " + p); + LOGGER.error("No Type defined for Schema {}", p); } return toModelName(openAPIType); } @@ -1157,7 +1159,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = camelize("call_" + operationId, true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } @@ -1284,7 +1286,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code continue; } for (Operation operation : path.readOperations()) { - LOGGER.info("Processing operation " + operation.getOperationId()); + LOGGER.info("Processing operation {}", operation.getOperationId()); if (hasBodyParameter(openAPI, operation) || hasFormParameter(openAPI, operation)) { String defaultContentType = hasFormParameter(openAPI, operation) ? "application/x-www-form-urlencoded" : "application/json"; List consumes = new ArrayList<>(getConsumesInfo(openAPI, operation)); @@ -1838,7 +1840,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index e3d4204a8d6..c681aaf51cb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -421,7 +421,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co } if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { - LOGGER.warn(CodegenConstants.INVOKER_PACKAGE + " with " + this.getName() + " generator is ignored. Use " + CodegenConstants.PACKAGE_NAME + "."); + LOGGER.warn("{} with {} generator is ignored. Use {}.", CodegenConstants.INVOKER_PACKAGE, this.getName(), CodegenConstants.PACKAGE_NAME); } if (additionalProperties.containsKey(CodegenConstants.SERIALIZABLE_MODEL)) { @@ -624,14 +624,15 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co // model name cannot use reserved keyword, e.g. return if (isReservedWord(modifiedName)) { final String modelName = "Model" + modifiedName; - LOGGER.warn(modifiedName + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", modifiedName, modelName); return modelName; } // model name starts with number if (modifiedName.matches("^\\d.*")) { final String modelName = "Model" + modifiedName; // e.g. 200Response => Model200Response (after camelize) - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + modelName); return modelName; } @@ -655,7 +656,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = camelize("call_" + operationId, true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } @@ -890,7 +891,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java index 115e945d6ac..4e1f571a709 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java @@ -295,14 +295,15 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg ArraySchema ap = (ArraySchema) p; Schema inner = ap.getItems(); if (inner == null) { - LOGGER.warn(ap.getName() + "(array property) does not have a proper inner type defined.Default to string"); + LOGGER.warn("{}(array property) does not have a proper inner type defined.Default to string", + ap.getName()); inner = new StringSchema().description("TODO default missing array inner type to string"); } return getTypeDeclaration(inner) + "[]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = getAdditionalProperties(p); if (inner == null) { - LOGGER.warn(p.getName() + "(map property) does not have a proper inner type defined. Default to string"); + LOGGER.warn("{}(map property) does not have a proper inner type defined. Default to string", p.getName()); inner = new StringSchema().description("TODO default missing map inner type to string"); } return getSchemaType(p) + ""; @@ -408,13 +409,14 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg // model name cannot use reserved keyword if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, camelize("model_" + name)); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + camelize("model_" + name)); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } @@ -492,13 +494,13 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + camelize(sanitizeName("call_" + operationId), true)); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, camelize(sanitizeName("call_" + operationId), true)); operationId = "call_" + operationId; } // operationId starts with a number if (operationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + camelize(sanitizeName("call_" + operationId), true)); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, camelize(sanitizeName("call_" + operationId), true)); operationId = "call_" + operationId; } @@ -590,7 +592,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg // type is a model class, e.g. User example = "new " + getTypeDeclaration(type) + "()"; } else { - LOGGER.warn("Type " + type + " not handled properly in setParameterExampleValue"); + LOGGER.warn("Type {} not handled properly in setParameterExampleValue", type); } if (example == null) { @@ -747,7 +749,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java index df60913e61e..2e04cd2d3e6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java @@ -343,7 +343,9 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho fixedPath += "/" + token; } if (!fixedPath.equals(pathname)) { - LOGGER.warn("Path '" + pathname + "' is not consistant with Python variable names. It will be replaced by '" + fixedPath + "'"); + LOGGER.warn( + "Path '{}' is not consistant with Python variable names. It will be replaced by '{}'", + pathname, fixedPath); paths.remove(pathname); path.addExtension("x-python-connexion-openapi-name", pathname); paths.put(fixedPath, path); @@ -373,12 +375,14 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho String swaggerParameterName = parameter.getName(); String pythonParameterName = this.toParamName(swaggerParameterName); if (!swaggerParameterName.equals(pythonParameterName)) { - LOGGER.warn("Parameter name '" + swaggerParameterName + "' is not consistant with Python variable names. It will be replaced by '" + pythonParameterName + "'"); + LOGGER.warn( + "Parameter name '{}' is not consistant with Python variable names. It will be replaced by '{}'", + swaggerParameterName, pythonParameterName); parameter.addExtension("x-python-connexion-openapi-name", swaggerParameterName); parameter.setName(pythonParameterName); } if (swaggerParameterName.isEmpty()) { - LOGGER.error("Missing parameter name in " + pathname + "." + parameter.getIn()); + LOGGER.error("Missing parameter name in {}.{}", pathname, parameter.getIn()); } } } @@ -435,13 +439,13 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho } break; case OPENIDCONNECT: - LOGGER.warn("Security type " + securityScheme.getType().toString() + " is not supported by connextion yet"); + LOGGER.warn("Security type {} is not supported by connextion yet", securityScheme.getType().toString()); case OAUTH2: addSecurityExtension(securityScheme, "x-tokenInfoFunc", baseFunctionName + "info_from_" + securityName); addSecurityExtension(securityScheme, "x-scopeValidateFunc", baseFunctionName + "validate_scope_" + securityName); break; default: - LOGGER.warn("Unknown security type " + securityScheme.getType().toString()); + LOGGER.warn("Unknown security type {}", securityScheme.getType().toString()); } } } @@ -498,7 +502,9 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho // Get and remove the (temporary) vendor extension String openapiPathname = (String) pathExtensions.remove("x-python-connexion-openapi-name"); if (openapiPathname != null && !openapiPathname.equals(pythonPathname)) { - LOGGER.info("Path '" + pythonPathname + "' is not consistant with the original OpenAPI definition. It will be replaced back by '" + openapiPathname + "'"); + LOGGER.info( + "Path '{}' is not consistant with the original OpenAPI definition. It will be replaced back by '{}'", + pythonPathname, openapiPathname); paths.remove(pythonPathname); paths.put(openapiPathname, path); } @@ -517,13 +523,18 @@ public abstract class AbstractPythonConnexionServerCodegen extends AbstractPytho if (swaggerParameterName != null) { String pythonParameterName = parameter.getName(); if (!swaggerParameterName.equals(pythonParameterName)) { - LOGGER.info("Reverting name of parameter '" + pythonParameterName + "' of operation '" + operation.getOperationId() + "' back to '" + swaggerParameterName + "'"); + LOGGER.info( + "Reverting name of parameter '{}' of operation '{}' back to '{}'", + pythonParameterName, operation.getOperationId(), swaggerParameterName); parameter.setName(swaggerParameterName); } else { - LOGGER.debug("Name of parameter '" + pythonParameterName + "' of operation '" + operation.getOperationId() + "' was unchanged."); + LOGGER.debug("Name of parameter '{}' of operation '{}' was unchanged.", + pythonParameterName, operation.getOperationId()); } } else { - LOGGER.debug("x-python-connexion-openapi-name was not set on parameter '" + parameter.getName() + "' of operation '" + operation.getOperationId() + "'"); + LOGGER.debug( + "x-python-connexion-openapi-name was not set on parameter '{}' of operation '{}'", + parameter.getName(), operation.getOperationId()); } } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java index 7ceb98d917e..7b7aef86da9 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java @@ -461,14 +461,15 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen { // model name cannot use reserved keyword, e.g. return if (isReservedWord(camelizedName)) { final String modelName = "Model" + camelizedName; - LOGGER.warn(camelizedName + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", camelizedName, modelName); return modelName; } // model name starts with number if (name.matches("^\\d.*")) { final String modelName = "Model" + camelizedName; // e.g. 200Response => Model200Response (after camelize) - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + modelName); return modelName; } @@ -531,7 +532,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen { if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); @@ -553,7 +554,7 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen { // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = camelize("call_" + operationId, true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index 40dfba5e80f..d0f44116f57 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -390,20 +390,22 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp // this is unlikely to happen, because we have just camelized the name, while reserved words are usually all lowcase if (isReservedWord(sanName)) { String modelName = safePrefix + sanName; - LOGGER.warn(sanName + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", sanName, modelName); return modelName; } // model name starts with number if (sanName.matches("^\\d.*")) { String modelName = safePrefix + sanName; // e.g. 200Response => Model200Response - LOGGER.warn(sanName + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", sanName, + modelName); return modelName; } if (languageSpecificPrimitives.contains(sanName)) { String modelName = safePrefix + sanName; - LOGGER.warn(sanName + " (model name matches existing language type) cannot be used as a model name. Renamed to " + modelName); + LOGGER.warn("{} (model name matches existing language type) cannot be used as a model name. Renamed to {}", + sanName, modelName); return modelName; } @@ -860,7 +862,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java index 2fa04946c81..d3ead4fc86d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java @@ -301,14 +301,15 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { String modelName = "Model" + name; - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, modelName); return modelName; } // model name starts with number if (name.matches("^\\d.*")) { String modelName = "Model" + name; // e.g. 200Response => Model200Response (after camelize) - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + modelName); return modelName; } @@ -398,7 +399,7 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = camelize("call_" + operationId, true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java index 6c2dd4ac434..83c32409a8a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java @@ -89,10 +89,10 @@ public class AsciidocDocumentationCodegen extends DefaultCodegen implements Code String includeStatement = "include::{" + attributePathReference + "}" + escapeCurlyBrackets(relativeFileName) + "[opts=optional]"; if (Files.isRegularFile(filePathToInclude)) { - LOGGER.debug("including " + ++includeCount + ". file into markup from: " + filePathToInclude.toString()); + LOGGER.debug("including {}. file into markup from: {}", ++includeCount, filePathToInclude.toString()); out.write("\n" + includeStatement + "\n"); } else { - LOGGER.debug(++notFoundCount + ". file not found, skip include for: " + filePathToInclude.toString()); + LOGGER.debug("{}. file not found, skip include for: {}", ++notFoundCount, filePathToInclude.toString()); out.write("\n// markup not found, no " + includeStatement + "\n"); } } @@ -140,10 +140,10 @@ public class AsciidocDocumentationCodegen extends DefaultCodegen implements Code final Path filePathToLinkTo = Paths.get(basePath, relativeFileName).toAbsolutePath(); if (Files.isRegularFile(filePathToLinkTo)) { - LOGGER.debug("linking " + ++linkedCount + ". file into markup from: " + filePathToLinkTo.toString()); + LOGGER.debug("linking {}. file into markup from: {}", ++linkedCount, filePathToLinkTo.toString()); out.write("\n" + linkName + " link:" + relativeFileName + "[]\n"); } else { - LOGGER.debug(++notFoundLinkCount + ". file not found, skip link for: " + filePathToLinkTo.toString()); + LOGGER.debug("{}. file not found, skip link for: {}", ++notFoundLinkCount, filePathToLinkTo.toString()); out.write("\n// file not found, no " + linkName + " link :" + relativeFileName + "[]\n"); } } @@ -324,8 +324,7 @@ public class AsciidocDocumentationCodegen extends DefaultCodegen implements Code String specDir = this.additionalProperties.get(SPEC_DIR) + ""; if (!Files.isDirectory(Paths.get(specDir))) { - LOGGER.warn("base part for include markup lambda not found: " + specDir + " as " - + Paths.get(specDir).toAbsolutePath()); + LOGGER.warn("base part for include markup lambda not found: {} as {}", specDir, Paths.get(specDir).toAbsolutePath()); } this.includeSpecMarkupLambda = new IncludeMarkupLambda(SPEC_DIR,specDir); @@ -333,8 +332,7 @@ public class AsciidocDocumentationCodegen extends DefaultCodegen implements Code String snippetDir = this.additionalProperties.get(SNIPPET_DIR) + ""; if (!Files.isDirectory(Paths.get(snippetDir))) { - LOGGER.warn("base part for include markup lambda not found: " + snippetDir + " as " - + Paths.get(snippetDir).toAbsolutePath()); + LOGGER.warn("base part for include markup lambda not found: {} as {}", snippetDir, Paths.get(snippetDir).toAbsolutePath()); } this.includeSnippetMarkupLambda = new IncludeMarkupLambda(SNIPPET_DIR,snippetDir); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java index 141cd952bde..ca50b0ff1f4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java @@ -443,7 +443,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { String original = operation.path; operation.path = operation.path.replace("?", "/"); if (!original.equals(operation.path)) { - LOGGER.warn("Normalized " + original + " to " + operation.path + ". Please verify generated source."); + LOGGER.warn("Normalized {} to {}. Please verify generated source.", original, operation.path); } } @@ -567,7 +567,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { if ("abstract".equals(classModifier.getOptValue())) { operationModifier.setOptValue(classModifier.getOptValue()); additionalProperties.put(OPERATION_MODIFIER, operationModifier.getOptValue()); - LOGGER.warn("classModifier is " + classModifier.getOptValue() + " so forcing operatonModifier to " + operationModifier.getOptValue()); + LOGGER.warn("classModifier is {} so forcing operatonModifier to {}", classModifier.getOptValue(), operationModifier.getOptValue()); } } @@ -578,7 +578,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { if ("abstract".equals(operationModifier.getOptValue())) { generateBody = false; additionalProperties.put(GENERATE_BODY, generateBody); - LOGGER.warn("operationModifier is " + operationModifier.getOptValue() + " so forcing generateBody to " + generateBody); + LOGGER.warn("operationModifier is {} so forcing generateBody to {}", operationModifier.getOptValue(), generateBody); } else if (additionalProperties.containsKey(GENERATE_BODY)) { generateBody = convertPropertyToBooleanAndWriteBack(GENERATE_BODY); } else { @@ -593,7 +593,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { if (isLibrary) { modelClassModifier.setOptValue(""); additionalProperties.put(MODEL_CLASS_MODIFIER, modelClassModifier.getOptValue()); - LOGGER.warn("buildTarget is " + buildTarget.getOptValue() + " so removing any modelClassModifier "); + LOGGER.warn("buildTarget is {} so removing any modelClassModifier ", buildTarget.getOptValue()); } } @@ -622,7 +622,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { // default, do nothing compatibilityVersion = "Version_" + aspnetCoreVersion.getOptValue().replace(".", "_"); } - LOGGER.info("ASP.NET core version: " + aspnetCoreVersion.getOptValue()); + LOGGER.info("ASP.NET core version: {}", aspnetCoreVersion.getOptValue()); if(!additionalProperties.containsKey(CodegenConstants.TEMPLATE_DIR)){ templateDir = embeddedTemplateDir = "aspnetcore" + File.separator + determineTemplateVersion(aspnetCoreVersion.getOptValue()); } @@ -660,7 +660,8 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { private void setNullableReferenceTypes() { if (additionalProperties.containsKey(NULLABLE_REFERENCE_TYPES)) { if (aspnetCoreVersion.getOptValue().startsWith("2.")) { - LOGGER.warn("Nullable annotation are not supported in ASP.NET core version 2. Setting " + NULLABLE_REFERENCE_TYPES + " to false"); + LOGGER.warn("Nullable annotation are not supported in ASP.NET core version 2. Setting {} to false", + NULLABLE_REFERENCE_TYPES); additionalProperties.put(NULLABLE_REFERENCE_TYPES, false); } else { nullableReferenceTypes = convertPropertyToBooleanAndWriteBack(NULLABLE_REFERENCE_TYPES); @@ -683,12 +684,16 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { private void setIsFramework() { if (aspnetCoreVersion.getOptValue().startsWith("3.")) {// default, do nothing - LOGGER.warn("ASP.NET core version is " + aspnetCoreVersion.getOptValue() + " so changing to use frameworkReference instead of packageReference "); + LOGGER.warn( + "ASP.NET core version is {} so changing to use frameworkReference instead of packageReference ", + aspnetCoreVersion.getOptValue()); useFrameworkReference = true; additionalProperties.put(USE_FRAMEWORK_REFERENCE, useFrameworkReference); additionalProperties.put(TARGET_FRAMEWORK, "netcoreapp" + aspnetCoreVersion.getOptValue()); } else if (aspnetCoreVersion.getOptValue().startsWith("5.")) {// default, do nothing - LOGGER.warn("ASP.NET core version is " + aspnetCoreVersion.getOptValue() + " so changing to use frameworkReference instead of packageReference "); + LOGGER.warn( + "ASP.NET core version is {} so changing to use frameworkReference instead of packageReference ", + aspnetCoreVersion.getOptValue()); useFrameworkReference = true; additionalProperties.put(USE_FRAMEWORK_REFERENCE, useFrameworkReference); additionalProperties.put(TARGET_FRAMEWORK, "net5.0"); @@ -705,7 +710,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { private void setUseNewtonsoft() { if (aspnetCoreVersion.getOptValue().startsWith("2.")) { LOGGER.warn("ASP.NET core version 2.X support has been deprecated. Please use ASP.NET core version 3.1 instead"); - LOGGER.warn("ASP.NET core version is " + aspnetCoreVersion.getOptValue() + " so staying on default json library."); + LOGGER.warn("ASP.NET core version is {} so staying on default json library.", aspnetCoreVersion.getOptValue()); useNewtonsoft = false; additionalProperties.put(USE_NEWTONSOFT, useNewtonsoft); } else { @@ -719,7 +724,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { private void setUseEndpointRouting() { if (aspnetCoreVersion.getOptValue().startsWith("3.") || aspnetCoreVersion.getOptValue().startsWith("5.")) { - LOGGER.warn("ASP.NET core version is " + aspnetCoreVersion.getOptValue() + " so switching to old style endpoint routing."); + LOGGER.warn("ASP.NET core version is {} so switching to old style endpoint routing.", aspnetCoreVersion.getOptValue()); useDefaultRouting = false; additionalProperties.put(USE_DEFAULT_ROUTING, useDefaultRouting); } else { @@ -735,12 +740,12 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { setCliOption(swashbuckleVersion); if (aspnetCoreVersion.getOptValue().startsWith("3.") || aspnetCoreVersion.getOptValue().startsWith("5.")) { - LOGGER.warn("ASP.NET core version is " + aspnetCoreVersion.getOptValue() + " so changing default Swashbuckle version to 5.0.0."); + LOGGER.warn("ASP.NET core version is {} so changing default Swashbuckle version to 5.0.0.", aspnetCoreVersion.getOptValue()); swashbuckleVersion.setOptValue("5.0.0"); additionalProperties.put(SWASHBUCKLE_VERSION, swashbuckleVersion.getOptValue()); } else { // default, do nothing - LOGGER.info("Swashbuckle version: " + swashbuckleVersion.getOptValue()); + LOGGER.info("Swashbuckle version: {}", swashbuckleVersion.getOptValue()); } } } From 3cbc5a8f93543af5a5d1e3482e5ab67d6174362e Mon Sep 17 00:00:00 2001 From: cal Date: Mon, 7 Jun 2021 08:26:56 +0200 Subject: [PATCH 096/192] [cleanup] erefactor/AutoRefactor - Log parameters rather than log message (#9133) AutoRefactor cleanup 'LogParametersRatherThanLogMessage' applied by erefactor: Replaces a string concatenation as parameter of a logger method by a string template followed by objects. For AutoRefactor see https://github.com/JnRouvignac/AutoRefactor For erefactor see https://github.com/cal101/erefactor --- .../KotlinServerDeprecatedCodegen.java | 2 +- .../languages/KotlinSpringServerCodegen.java | 2 +- .../codegen/languages/KtormSchemaCodegen.java | 27 +++--- .../codegen/languages/LuaClientCodegen.java | 7 +- .../codegen/languages/MysqlSchemaCodegen.java | 85 ++++++++++++------- .../codegen/languages/NimClientCodegen.java | 2 +- .../languages/NodeJSExpressServerCodegen.java | 2 +- .../codegen/languages/OCamlClientCodegen.java | 14 +-- .../codegen/languages/ObjcClientCodegen.java | 7 +- .../codegen/languages/OpenAPIGenerator.java | 2 +- .../codegen/languages/PerlClientCodegen.java | 13 +-- .../languages/PhpSlim4ServerCodegen.java | 7 +- .../languages/PowerShellClientCodegen.java | 22 +++-- .../languages/ProtobufSchemaCodegen.java | 7 +- .../languages/PythonClientCodegen.java | 8 +- .../codegen/languages/RClientCodegen.java | 11 +-- .../codegen/languages/RubyClientCodegen.java | 11 +-- .../languages/RubyOnRailsServerCodegen.java | 4 +- .../languages/RubySinatraServerCodegen.java | 4 +- .../codegen/languages/RustClientCodegen.java | 12 +-- 20 files changed, 152 insertions(+), 97 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerDeprecatedCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerDeprecatedCodegen.java index 84cee1d2aa9..5c5ec533ded 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerDeprecatedCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerDeprecatedCodegen.java @@ -183,7 +183,7 @@ public class KotlinServerDeprecatedCodegen extends AbstractKotlinCodegen { if (StringUtils.isEmpty(library)) { this.setLibrary(DEFAULT_LIBRARY); additionalProperties.put(CodegenConstants.LIBRARY, DEFAULT_LIBRARY); - LOGGER.info("`library` option is empty. Default to " + DEFAULT_LIBRARY); + LOGGER.info("`library` option is empty. Default to {}", DEFAULT_LIBRARY); } if (additionalProperties.containsKey(Constants.AUTOMATIC_HEAD_REQUESTS)) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java index cdaae2afe67..4af648fbac4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java @@ -303,7 +303,7 @@ public class KotlinSpringServerCodegen extends AbstractKotlinCodegen this.setBasePackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); this.setInvokerPackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); additionalProperties.put(BASE_PACKAGE, basePackage); - LOGGER.info("Set base package to invoker package (" + basePackage + ")"); + LOGGER.info("Set base package to invoker package ({})", basePackage); } if (additionalProperties.containsKey(BASE_PACKAGE)) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java index 979d6e34207..043b4d64cc4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KtormSchemaCodegen.java @@ -301,7 +301,7 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen { if (modelVendorExtensions.containsKey(VENDOR_EXTENSION_SCHEMA)) { // user already specified schema values - LOGGER.info("Found vendor extension in '" + modelName + "' model, autogeneration skipped"); + LOGGER.info("Found vendor extension in '{}' model, autogeneration skipped", modelName); } else { modelVendorExtensions.put(VENDOR_EXTENSION_SCHEMA, ktormSchema); ktormSchema.put("tableDefinition", tableDefinition); @@ -359,7 +359,7 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen { if (vendorExtensions.containsKey(VENDOR_EXTENSION_SCHEMA)) { // user already specified schema values - LOGGER.info("Found vendor extension in '" + baseName + "' property, autogeneration skipped"); + LOGGER.info("Found vendor extension in '{}' property, autogeneration skipped", baseName); return; } @@ -688,7 +688,8 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen { try { columnDefinition.put("colDefault", toColumnTypeDefault(defaultValue, dataType, dataFormat)); } catch (RuntimeException exception) { - LOGGER.warn("Property '" + baseName + "' of model '" + model.getName() + "' mapped to data type which doesn't support default value"); + LOGGER.warn("Property '{}' of model '{}' mapped to data type which doesn't support default value", + baseName, model.getName()); columnDefinition.put("colDefault", null); } } @@ -985,7 +986,7 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen { public String toDatabaseName(String name) { String identifier = toIdentifier(name, databaseNamePrefix, databaseNameSuffix); if (identifier.length() > IDENTIFIER_MAX_LENGTH) { - LOGGER.warn("Database name too long. Name '" + name + "' will be truncated"); + LOGGER.warn("Database name too long. Name '{}' will be truncated", name); identifier = identifier.substring(0, IDENTIFIER_MAX_LENGTH); } return identifier; @@ -1004,7 +1005,7 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen { identifier = underscore(identifier); } if (identifier.length() > IDENTIFIER_MAX_LENGTH) { - LOGGER.warn("Table name too long. Name '" + name + "' will be truncated"); + LOGGER.warn("Table name too long. Name '{}' will be truncated", name); identifier = identifier.substring(0, IDENTIFIER_MAX_LENGTH); } return identifier; @@ -1023,7 +1024,7 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen { identifier = underscore(identifier); } if (identifier.length() > IDENTIFIER_MAX_LENGTH) { - LOGGER.warn("Column name too long. Name '" + name + "' will be truncated"); + LOGGER.warn("Column name too long. Name '{}' will be truncated", name); identifier = identifier.substring(0, IDENTIFIER_MAX_LENGTH); } return identifier; @@ -1042,13 +1043,13 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen { String escapedName = escapeQuotedIdentifier(name); // Database, table, and column names cannot end with space characters. if (escapedName.matches(".*\\s$")) { - LOGGER.warn("Database, table, and column names cannot end with space characters. Check '" + name + "' name"); + LOGGER.warn("Database, table, and column names cannot end with space characters. Check '{}' name", name); escapedName = escapedName.replaceAll("\\s+$", ""); } // Identifiers may begin with a digit but unless quoted may not consist solely of digits. if (escapedName.matches("^\\d+$")) { - LOGGER.warn("Database, table, and column names cannot consist solely of digits. Check '" + name + "' name"); + LOGGER.warn("Database, table, and column names cannot consist solely of digits. Check '{}' name", name); escapedName = prefix + escapedName + suffix; } @@ -1074,7 +1075,8 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen { Pattern regexp = Pattern.compile("[^0-9a-zA-z$_\\x0080-\\xFFFF]"); Matcher matcher = regexp.matcher(identifier); if (matcher.find()) { - LOGGER.warn("Identifier '" + identifier + "' contains unsafe characters out of [0-9,a-z,A-Z$_] and U+0080..U+FFFF range"); + LOGGER.warn("Identifier '{}' contains unsafe characters out of [0-9,a-z,A-Z$_] and U+0080..U+FFFF range", + identifier); identifier = identifier.replaceAll("[^0-9a-zA-z$_\\x0080-\\xFFFF]", ""); } return identifier; @@ -1106,7 +1108,9 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen { public void setDefaultDatabaseName(String databaseName) { String escapedName = toDatabaseName(databaseName); if (!escapedName.equals(databaseName)) { - LOGGER.error("Invalid database name. '" + databaseName + "' cannot be used as identifier. Escaped value '" + escapedName + "' will be used instead."); + LOGGER.error( + "Invalid database name. '{}' cannot be used as identifier. Escaped value '{}' will be used instead.", + databaseName, escapedName); } this.defaultDatabaseName = escapedName; } @@ -1152,7 +1156,8 @@ public class KtormSchemaCodegen extends AbstractKotlinCodegen { this.identifierNamingConvention = naming; break; default: - LOGGER.warn("\"" + naming + "\" is invalid \"identifierNamingConvention\" argument. Current \"" + this.identifierNamingConvention + "\" used instead."); + LOGGER.warn("\"{}\" is invalid \"identifierNamingConvention\" argument. Current \"{}\" used instead.", + naming, this.identifierNamingConvention); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java index 819dcf6bf44..41aae956c97 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/LuaClientCodegen.java @@ -281,13 +281,14 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig { // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + ("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, "model_" + name); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + ("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + "model_" + name); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } @@ -409,7 +410,7 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig { // method name cannot use reserved keyword, e.g. return if (isReservedWord(sanitizedOperationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore("call_" + operationId)); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, underscore("call_" + operationId)); sanitizedOperationId = "call_" + sanitizedOperationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java index abc3b4e657e..fa217e1635f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/MysqlSchemaCodegen.java @@ -274,7 +274,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig if (modelVendorExtensions.containsKey(VENDOR_EXTENSION_MYSQL_SCHEMA)) { // user already specified schema values - LOGGER.info("Found vendor extension in '" + modelName + "' model, autogeneration skipped"); + LOGGER.info("Found vendor extension in '{}' model, autogeneration skipped", modelName); } else { modelVendorExtensions.put(VENDOR_EXTENSION_MYSQL_SCHEMA, mysqlSchema); mysqlSchema.put("tableDefinition", tableDefinition); @@ -345,7 +345,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig if (vendorExtensions.containsKey(VENDOR_EXTENSION_MYSQL_SCHEMA)) { // user already specified schema values - LOGGER.info("Found vendor extension in '" + baseName + "' property, autogeneration skipped"); + LOGGER.info("Found vendor extension in '{}' property, autogeneration skipped", baseName); return; } @@ -364,7 +364,9 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig List enumValues = (List) allowableValues.get("values"); for (int i = 0; i < enumValues.size(); i++) { if (i > ENUM_MAX_ELEMENTS - 1) { - LOGGER.warn("ENUM column can have maximum of " + ENUM_MAX_ELEMENTS.toString() + " distinct elements, following value will be skipped: " + (String) enumValues.get(i)); + LOGGER.warn( + "ENUM column can have maximum of {} distinct elements, following value will be skipped: {}", + ENUM_MAX_ELEMENTS.toString(), (String) enumValues.get(i)); break; } String value = String.valueOf(enumValues.get(i)); @@ -395,7 +397,9 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig try { columnDefinition.put("colDefault", toCodegenMysqlDataTypeDefault(defaultValue, (String) columnDefinition.get("colDataType"))); } catch (RuntimeException exception) { - LOGGER.warn("Property '" + baseName + "' of model '" + model.getName() + "' mapped to MySQL data type which doesn't support default value"); + LOGGER.warn( + "Property '{}' of model '{}' mapped to MySQL data type which doesn't support default value", + baseName, model.getName()); columnDefinition.put("colDefault", null); } } @@ -432,7 +436,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig if (vendorExtensions.containsKey(VENDOR_EXTENSION_MYSQL_SCHEMA)) { // user already specified schema values - LOGGER.info("Found vendor extension in '" + baseName + "' property, autogeneration skipped"); + LOGGER.info("Found vendor extension in '{}' property, autogeneration skipped", baseName); return; } @@ -451,7 +455,9 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig List enumValues = (List) allowableValues.get("values"); for (int i = 0; i < enumValues.size(); i++) { if (i > ENUM_MAX_ELEMENTS - 1) { - LOGGER.warn("ENUM column can have maximum of " + ENUM_MAX_ELEMENTS.toString() + " distinct elements, following value will be skipped: " + (String) enumValues.get(i)); + LOGGER.warn( + "ENUM column can have maximum of {} distinct elements, following value will be skipped: {}", + ENUM_MAX_ELEMENTS.toString(), (String) enumValues.get(i)); break; } String value = String.valueOf(enumValues.get(i)); @@ -481,7 +487,9 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig try { columnDefinition.put("colDefault", toCodegenMysqlDataTypeDefault(defaultValue, (String) columnDefinition.get("colDataType"))); } catch (RuntimeException exception) { - LOGGER.warn("Property '" + baseName + "' of model '" + model.getName() + "' mapped to MySQL data type which doesn't support default value"); + LOGGER.warn( + "Property '{}' of model '{}' mapped to MySQL data type which doesn't support default value", + baseName, model.getName()); columnDefinition.put("colDefault", null); } } @@ -510,7 +518,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig if (vendorExtensions.containsKey(VENDOR_EXTENSION_MYSQL_SCHEMA)) { // user already specified schema values - LOGGER.info("Found vendor extension in '" + baseName + "' property, autogeneration skipped"); + LOGGER.info("Found vendor extension in '{}' property, autogeneration skipped", baseName); return; } @@ -534,7 +542,9 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig try { columnDefinition.put("colDefault", toCodegenMysqlDataTypeDefault(defaultValue, (String) columnDefinition.get("colDataType"))); } catch (RuntimeException exception) { - LOGGER.warn("Property '" + baseName + "' of model '" + model.getName() + "' mapped to MySQL data type which doesn't support default value"); + LOGGER.warn( + "Property '{}' of model '{}' mapped to MySQL data type which doesn't support default value", + baseName, model.getName()); columnDefinition.put("colDefault", null); } } @@ -568,7 +578,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig if (vendorExtensions.containsKey(VENDOR_EXTENSION_MYSQL_SCHEMA)) { // user already specified schema values - LOGGER.info("Found vendor extension in '" + baseName + "' property, autogeneration skipped"); + LOGGER.info("Found vendor extension in '{}' property, autogeneration skipped", baseName); return; } @@ -589,7 +599,9 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig columnDefinition.put("colDataTypeArguments", columnDataTypeArguments); for (int i = 0; i < enumValues.size(); i++) { if (i > ENUM_MAX_ELEMENTS - 1) { - LOGGER.warn("ENUM column can have maximum of " + ENUM_MAX_ELEMENTS.toString() + " distinct elements, following value will be skipped: " + (String) enumValues.get(i)); + LOGGER.warn( + "ENUM column can have maximum of {} distinct elements, following value will be skipped: {}", + ENUM_MAX_ELEMENTS.toString(), (String) enumValues.get(i)); break; } String value = String.valueOf(enumValues.get(i)); @@ -613,7 +625,9 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig try { columnDefinition.put("colDefault", toCodegenMysqlDataTypeDefault(defaultValue, (String) columnDefinition.get("colDataType"))); } catch (RuntimeException exception) { - LOGGER.warn("Property '" + baseName + "' of model '" + model.getName() + "' mapped to MySQL data type which doesn't support default value"); + LOGGER.warn( + "Property '{}' of model '{}' mapped to MySQL data type which doesn't support default value", + baseName, model.getName()); columnDefinition.put("colDefault", null); } } @@ -642,7 +656,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig if (vendorExtensions.containsKey(VENDOR_EXTENSION_MYSQL_SCHEMA)) { // user already specified schema values - LOGGER.info("Found vendor extension in '" + baseName + "' property, autogeneration skipped"); + LOGGER.info("Found vendor extension in '{}' property, autogeneration skipped", baseName); return; } @@ -664,7 +678,9 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig try { columnDefinition.put("colDefault", toCodegenMysqlDataTypeDefault(defaultValue, (String) columnDefinition.get("colDataType"))); } catch (RuntimeException exception) { - LOGGER.warn("Property '" + baseName + "' of model '" + model.getName() + "' mapped to MySQL data type which doesn't support default value"); + LOGGER.warn( + "Property '{}' of model '{}' mapped to MySQL data type which doesn't support default value", + baseName, model.getName()); columnDefinition.put("colDefault", null); } } @@ -693,7 +709,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig if (vendorExtensions.containsKey(VENDOR_EXTENSION_MYSQL_SCHEMA)) { // user already specified schema values - LOGGER.info("Found vendor extension in '" + baseName + "' property, autogeneration skipped"); + LOGGER.info("Found vendor extension in '{}' property, autogeneration skipped", baseName); return; } @@ -718,7 +734,9 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig try { columnDefinition.put("colDefault", toCodegenMysqlDataTypeDefault(defaultValue, (String) columnDefinition.get("colDataType"))); } catch (RuntimeException exception) { - LOGGER.warn("Property '" + baseName + "' of model '" + model.getName() + "' mapped to MySQL data type which doesn't support default value"); + LOGGER.warn( + "Property '{}' of model '{}' mapped to MySQL data type which doesn't support default value", + baseName, model.getName()); columnDefinition.put("colDefault", null); } } @@ -747,7 +765,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig if (vendorExtensions.containsKey(VENDOR_EXTENSION_MYSQL_SCHEMA)) { // user already specified schema values - LOGGER.info("Found vendor extension in '" + baseName + "' property, autogeneration skipped"); + LOGGER.info("Found vendor extension in '{}' property, autogeneration skipped", baseName); return; } @@ -769,7 +787,9 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig try { columnDefinition.put("colDefault", toCodegenMysqlDataTypeDefault(defaultValue, (String) columnDefinition.get("colDataType"))); } catch (RuntimeException exception) { - LOGGER.warn("Property '" + baseName + "' of model '" + model.getName() + "' mapped to MySQL data type which doesn't support default value"); + LOGGER.warn( + "Property '{}' of model '{}' mapped to MySQL data type which doesn't support default value", + baseName, model.getName()); columnDefinition.put("colDefault", null); } } @@ -803,7 +823,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig arg.put("isInteger", false); arg.put("isNumeric", true); } else { - LOGGER.warn("MySQL data type argument can be primitive type only. Class '" + value.getClass() + "' is provided"); + LOGGER.warn("MySQL data type argument can be primitive type only. Class '{}' is provided", value.getClass()); } arg.put("argumentValue", value); return arg; @@ -987,7 +1007,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig public String toDatabaseName(String name) { String identifier = toMysqlIdentifier(name, databaseNamePrefix, databaseNameSuffix); if (identifier.length() > IDENTIFIER_MAX_LENGTH) { - LOGGER.warn("Database name cannot exceed 64 chars. Name '" + name + "' will be truncated"); + LOGGER.warn("Database name cannot exceed 64 chars. Name '{}' will be truncated", name); identifier = identifier.substring(0, IDENTIFIER_MAX_LENGTH); } return identifier; @@ -1006,7 +1026,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig identifier = underscore(identifier); } if (identifier.length() > IDENTIFIER_MAX_LENGTH) { - LOGGER.warn("Table name cannot exceed 64 chars. Name '" + name + "' will be truncated"); + LOGGER.warn("Table name cannot exceed 64 chars. Name '{}' will be truncated", name); identifier = identifier.substring(0, IDENTIFIER_MAX_LENGTH); } return identifier; @@ -1025,7 +1045,7 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig identifier = underscore(identifier); } if (identifier.length() > IDENTIFIER_MAX_LENGTH) { - LOGGER.warn("Column name cannot exceed 64 chars. Name '" + name + "' will be truncated"); + LOGGER.warn("Column name cannot exceed 64 chars. Name '{}' will be truncated", name); identifier = identifier.substring(0, IDENTIFIER_MAX_LENGTH); } return identifier; @@ -1044,13 +1064,13 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig String escapedName = escapeMysqlQuotedIdentifier(name); // Database, table, and column names cannot end with space characters. if (escapedName.matches(".*\\s$")) { - LOGGER.warn("Database, table, and column names cannot end with space characters. Check '" + name + "' name"); + LOGGER.warn("Database, table, and column names cannot end with space characters. Check '{}' name", name); escapedName = escapedName.replaceAll("\\s+$", ""); } // Identifiers may begin with a digit but unless quoted may not consist solely of digits. if (escapedName.matches("^\\d+$")) { - LOGGER.warn("Database, table, and column names cannot consist solely of digits. Check '" + name + "' name"); + LOGGER.warn("Database, table, and column names cannot consist solely of digits. Check '{}' name", name); escapedName = prefix + escapedName + suffix; } @@ -1073,7 +1093,8 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig Pattern regexp = Pattern.compile("[^0-9a-zA-z$_\\u0080-\\uFFFF]"); Matcher matcher = regexp.matcher(identifier); if (matcher.find()) { - LOGGER.warn("Identifier '" + identifier + "' contains unsafe characters out of [0-9,a-z,A-Z$_] and U+0080..U+FFFF range"); + LOGGER.warn("Identifier '{}' contains unsafe characters out of [0-9,a-z,A-Z$_] and U+0080..U+FFFF range", + identifier); identifier = identifier.replaceAll("[^0-9a-zA-z$_\\u0080-\\uFFFF]", ""); } @@ -1095,7 +1116,8 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig Pattern regexp = Pattern.compile("[^\\u0001-\\u007F\\u0080-\\uFFFF]"); Matcher matcher = regexp.matcher(identifier); if (matcher.find()) { - LOGGER.warn("Identifier '" + identifier + "' contains unsafe characters out of U+0001..U+007F and U+0080..U+FFFF range"); + LOGGER.warn("Identifier '{}' contains unsafe characters out of U+0001..U+007F and U+0080..U+FFFF range", + identifier); identifier = identifier.replaceAll("[^\\u0001-\\u007F\\u0080-\\uFFFF]", ""); } @@ -1107,7 +1129,9 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig @Override public String escapeReservedWord(String name) { - LOGGER.warn("'" + name + "' is MySQL reserved word. Do not use that word or properly escape it with backticks in mustache template"); + LOGGER.warn( + "'{}' is MySQL reserved word. Do not use that word or properly escape it with backticks in mustache template", + name); return name; } @@ -1131,7 +1155,9 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig public void setDefaultDatabaseName(String databaseName) { String escapedName = toDatabaseName(databaseName); if (!escapedName.equals(databaseName)) { - LOGGER.error("Invalid database name. '" + databaseName + "' cannot be used as MySQL identifier. Escaped value '" + escapedName + "' will be used instead."); + LOGGER.error( + "Invalid database name. '{}' cannot be used as MySQL identifier. Escaped value '{}' will be used instead.", + databaseName, escapedName); } this.defaultDatabaseName = escapedName; } @@ -1196,7 +1222,8 @@ public class MysqlSchemaCodegen extends DefaultCodegen implements CodegenConfig this.identifierNamingConvention = naming; break; default: - LOGGER.warn("\"" + naming + "\" is invalid \"identifierNamingConvention\" argument. Current \"" + this.identifierNamingConvention + "\" used instead."); + LOGGER.warn("\"{}\" is invalid \"identifierNamingConvention\" argument. Current \"{}\" used instead.", + naming, this.identifierNamingConvention); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java index ff07db2ede8..b5ee1575bd7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java @@ -195,7 +195,7 @@ public class NimClientCodegen extends DefaultCodegen implements CodegenConfig { @Override public String escapeReservedWord(String name) { - LOGGER.warn("A reserved word \"" + name + "\" is used. Consider renaming the field name"); + LOGGER.warn("A reserved word \"{}\" is used. Consider renaming the field name", name); if (this.reservedWordsMappings().containsKey(name)) { return this.reservedWordsMappings().get(name); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java index 4e6f0a0fb9d..c7edba19de0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NodeJSExpressServerCodegen.java @@ -445,7 +445,7 @@ public class NodeJSExpressServerCodegen extends DefaultCodegen implements Codege if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit code: {}", command, exitValue); } - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); // Restore interrupted state diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java index 5d46a4af427..a1a7463937b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java @@ -530,13 +530,14 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + ("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, "model_" + name); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } // model name starts with number or _ if (name.matches("^\\d.*|^_.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + ("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + "model_" + name); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } @@ -578,14 +579,15 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig ArraySchema ap = (ArraySchema) p; Schema inner = ap.getItems(); if (inner == null) { - LOGGER.warn(ap.getName() + "(array property) does not have a proper inner type defined.Default to string"); + LOGGER.warn("{}(array property) does not have a proper inner type defined.Default to string", + ap.getName()); inner = new StringSchema().description("TODO default missing array inner type to string"); } return getTypeDeclaration(inner) + " list"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = getAdditionalProperties(p); if (inner == null) { - LOGGER.warn(p.getName() + "(map property) does not have a proper inner type defined. Default to string"); + LOGGER.warn("{}(map property) does not have a proper inner type defined. Default to string", p.getName()); inner = new StringSchema().description("TODO default missing map inner type to string"); } String prefix = inner.getEnum() != null ? "Enums." : ""; @@ -637,7 +639,7 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig // method name cannot use reserved keyword, e.g. return if (isReservedWord(sanitizedOperationId) || sanitizedOperationId.matches("^[0-9].*")) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore("call_" + operationId)); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, underscore("call_" + operationId)); sanitizedOperationId = "call_" + sanitizedOperationId; } @@ -814,7 +816,7 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java index e8735b7e380..7ced61d9f4f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java @@ -435,7 +435,8 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { public String toModelName(String type) { // model name cannot use reserved keyword if (reservedWords.contains(type)) { - LOGGER.warn(type + " (reserved word) cannot be used as model name. Renamed to " + ("model_" + type) + " before further processing"); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {} before further processing", + type, "model_" + type); type = "model_" + type; // e.g. return => ModelReturn (after camelize) } @@ -614,7 +615,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + camelize(sanitizeName("call_" + operationId), true)); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, camelize(sanitizeName("call_" + operationId), true)); operationId = "call_" + operationId; } @@ -765,7 +766,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { // e.g. [[SWGPet alloc] init example = "[[" + type + " alloc] init]"; } else { - LOGGER.warn("Example value for " + type + " not handled properly in setParameterExampleValue"); + LOGGER.warn("Example value for {} not handled properly in setParameterExampleValue", type); } if (example == null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIGenerator.java index 9902ddb0740..ccd3ff685d6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OpenAPIGenerator.java @@ -89,7 +89,7 @@ public class OpenAPIGenerator extends DefaultCodegen implements CodegenConfig { try { String outputFile = outputFolder + File.separator + outputFileName; FileUtils.writeStringToFile(new File(outputFile), jsonOpenAPI, StandardCharsets.UTF_8); - LOGGER.info("wrote file to " + outputFile); + LOGGER.info("wrote file to {}", outputFile); } catch (Exception e) { LOGGER.error(e.getMessage(), e); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java index fca307b1f66..b41bb590b36 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java @@ -336,13 +336,14 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { // model name cannot use reserved keyword if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, camelize("model_" + name)); name = "model_" + name; } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + camelize("model_" + name)); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } @@ -409,19 +410,19 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { //rename to empty_function_name_1 (e.g.) if method name is empty if (StringUtils.isEmpty(operationId)) { operationId = underscore("empty_function_name_" + emptyFunctionNameCounter++); - LOGGER.warn("Empty method name (operationId) found. Renamed to " + operationId); + LOGGER.warn("Empty method name (operationId) found. Renamed to {}", operationId); return operationId; } // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, underscore(sanitizeName("call_" + operationId))); return underscore(sanitizeName("call_" + operationId)); } // operationId starts with a number if (operationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, underscore(sanitizeName("call_" + operationId))); operationId = "call_" + operationId; } @@ -620,7 +621,7 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig { if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit code: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java index 9105a4fe8de..23a9de74337 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlim4ServerCodegen.java @@ -195,7 +195,9 @@ public class PhpSlim4ServerCodegen extends AbstractPhpCodegen { additionalProperties.put("isZendDiactoros", Boolean.TRUE); break; default: - LOGGER.warn("\"" + getPsr7Implementation() + "\" is invalid \"psr7Implementation\" codegen option. Default \"slim-psr7\" used instead."); + LOGGER.warn( + "\"{}\" is invalid \"psr7Implementation\" codegen option. Default \"slim-psr7\" used instead.", + getPsr7Implementation()); additionalProperties.put("isSlimPsr7", Boolean.TRUE); } @@ -353,7 +355,8 @@ public class PhpSlim4ServerCodegen extends AbstractPhpCodegen { break; default: this.psr7Implementation = "slim-psr7"; - LOGGER.warn("\"" + psr7Implementation + "\" is invalid \"psr7Implementation\" argument. Default \"slim-psr7\" used instead."); + LOGGER.warn("\"{}\" is invalid \"psr7Implementation\" argument. Default \"slim-psr7\" used instead.", + psr7Implementation); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java index 0b4add67606..9eda8091fdf 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java @@ -742,11 +742,15 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo } if (additionalProperties.containsKey(CodegenConstants.MODEL_PACKAGE)) { - LOGGER.warn(CodegenConstants.MODEL_PACKAGE + " with " + this.getName() + " generator is ignored. Setting this value independently of " + CodegenConstants.PACKAGE_NAME + " is not currently supported."); + LOGGER.warn( + "{} with {} generator is ignored. Setting this value independently of {} is not currently supported.", + CodegenConstants.MODEL_PACKAGE, this.getName(), CodegenConstants.PACKAGE_NAME); } if (additionalProperties.containsKey(CodegenConstants.API_PACKAGE)) { - LOGGER.warn(CodegenConstants.API_PACKAGE + " with " + this.getName() + " generator is ignored. Setting this value independently of " + CodegenConstants.PACKAGE_NAME + " is not currently supported."); + LOGGER.warn( + "{} with {} generator is ignored. Setting this value independently of {} is not currently supported.", + CodegenConstants.API_PACKAGE, this.getName(), CodegenConstants.PACKAGE_NAME); } if (additionalProperties.containsKey(CodegenConstants.DISALLOW_ADDITIONAL_PROPERTIES_IF_NOT_PRESENT)) { @@ -887,13 +891,15 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word or special variable name) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (reserved word or special variable name) cannot be used as model name. Renamed to {}", + name, camelize("model_" + name)); name = camelize("model_" + name); // e.g. return => ModelReturn (after camelize) } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + camelize("model_" + name)); name = camelize("model_" + name); // e.g. 200Response => Model200Response (after camelize) } @@ -969,7 +975,8 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo // for param name reserved word or word starting with number, append _ if (paramNameReservedWords.contains(name) || name.matches("^\\d.*")) { - LOGGER.warn(name + " (reserved word or special variable name) cannot be used in naming. Renamed to " + escapeReservedWord(name)); + LOGGER.warn("{} (reserved word or special variable name) cannot be used in naming. Renamed to {}", name, + escapeReservedWord(name)); name = escapeReservedWord(name); } @@ -1100,7 +1107,8 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo // for reserved word or word starting with number, append _ if (isReservedWord(name) || name.matches("^\\d.*")) { - LOGGER.warn(name + " (reserved word or special variable name) cannot be used in naming. Renamed to " + escapeReservedWord(name)); + LOGGER.warn("{} (reserved word or special variable name) cannot be used in naming. Renamed to {}", name, + escapeReservedWord(name)); name = escapeReservedWord(name); } @@ -1310,7 +1318,7 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java index e7bc5b46ef5..02a01627dd6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java @@ -176,7 +176,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + camelize(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, camelize(sanitizeName("call_" + operationId))); operationId = "call_" + operationId; } @@ -390,13 +390,14 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, camelize("model_" + name)); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + camelize("model_" + name)); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java index a00683cbd4a..5612b1d7b0e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java @@ -163,7 +163,9 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen { // default this to true so the python ModelSimple models will be generated ModelUtils.setGenerateAliasAsModel(true); - LOGGER.info(CodegenConstants.GENERATE_ALIAS_AS_MODEL + " is hard coded to true in this generator. Alias models will only be generated if they contain validations or enums"); + LOGGER.info( + "{} is hard coded to true in this generator. Alias models will only be generated if they contain validations or enums", + CodegenConstants.GENERATE_ALIAS_AS_MODEL); Boolean attrNoneIfUnset = false; if (additionalProperties.containsKey(CodegenConstants.PYTHON_ATTR_NONE_IF_UNSET)) { @@ -1106,7 +1108,7 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen { String ref = ModelUtils.getSimpleRef(schema.get$ref()); Schema refSchema = allDefinitions.get(ref); if (null == refSchema) { - LOGGER.warn("Unable to find referenced schema " + schema.get$ref() + "\n"); + LOGGER.warn("Unable to find referenced schema {}\n", schema.get$ref()); return fullPrefix + "None" + closeChars; } String refModelName = getModelName(schema); @@ -1307,7 +1309,7 @@ public class PythonClientCodegen extends PythonLegacyClientCodegen { } return fullPrefix + closeChars; } else { - LOGGER.warn("Type " + schema.getType() + " not handled properly in toExampleValue"); + LOGGER.warn("Type {} not handled properly in toExampleValue", schema.getType()); } return example; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java index df86492ffbd..1d441a98b2f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java @@ -306,13 +306,14 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, camelize("model_" + name)); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + camelize("model_" + name)); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } @@ -402,7 +403,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { // method name cannot use reserved keyword, e.g. return if (isReservedWord(sanitizedOperationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + underscore("call_" + operationId)); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, underscore("call_" + operationId)); sanitizedOperationId = "call_" + sanitizedOperationId; } @@ -716,7 +717,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { if (modelMaps.containsKey(codegenParameter.dataType)) { return constructExampleCode(modelMaps.get(codegenParameter.dataType), modelMaps); } else { - LOGGER.error("Error in constructing examples. Failed to look up the model " + codegenParameter.dataType); + LOGGER.error("Error in constructing examples. Failed to look up the model {}", codegenParameter.dataType); return "TODO"; } } @@ -750,7 +751,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { if (modelMaps.containsKey(codegenProperty.dataType)) { return constructExampleCode(modelMaps.get(codegenProperty.dataType), modelMaps); } else { - LOGGER.error("Error in constructing examples. Failed to look up the model " + codegenProperty.dataType); + LOGGER.error("Error in constructing examples. Failed to look up the model {}", codegenProperty.dataType); return "TODO"; } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java index 96a5f5d7c3f..23f8fcd7cf5 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java @@ -376,13 +376,14 @@ public class RubyClientCodegen extends AbstractRubyCodegen { // model name cannot use reserved keyword, e.g. return if (isReservedWord(modelName)) { modelName = camelize("Model" + modelName); - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, modelName); return modelName; } // model name starts with number if (modelName.matches("^\\d.*")) { - LOGGER.warn(modelName + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + modelName)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", modelName, + camelize("model_" + modelName)); modelName = "model_" + modelName; // e.g. 200Response => Model200Response (after camelize) } @@ -495,20 +496,20 @@ public class RubyClientCodegen extends AbstractRubyCodegen { // rename to empty_method_name_1 (e.g.) if method name is empty if (StringUtils.isEmpty(operationId)) { operationId = underscore("empty_method_name_" + emptyMethodNameCounter++); - LOGGER.warn("Empty method name (operationId) found. Renamed to " + operationId); + LOGGER.warn("Empty method name (operationId) found. Renamed to {}", operationId); return operationId; } // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = underscore("call_" + operationId); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } // operationId starts with a number if (operationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + underscore(sanitizeName("call_" + operationId))); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, underscore(sanitizeName("call_" + operationId))); operationId = "call_" + operationId; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyOnRailsServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyOnRailsServerCodegen.java index 1cc82c8827b..adcb79dc2f9 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyOnRailsServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyOnRailsServerCodegen.java @@ -238,7 +238,7 @@ public class RubyOnRailsServerCodegen extends AbstractRubyCodegen { // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { String modelName = camelize("Model" + name); - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, modelName); return modelName; } @@ -252,7 +252,7 @@ public class RubyOnRailsServerCodegen extends AbstractRubyCodegen { // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { String filename = underscore("model_" + name); - LOGGER.warn(name + " (reserved word) cannot be used as model filename. Renamed to " + filename); + LOGGER.warn("{} (reserved word) cannot be used as model filename. Renamed to {}", name, filename); return filename; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubySinatraServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubySinatraServerCodegen.java index c81426eb017..1e51a349e0d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubySinatraServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubySinatraServerCodegen.java @@ -132,7 +132,7 @@ public class RubySinatraServerCodegen extends AbstractRubyCodegen { public String toModelName(String name) { // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model filename. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model filename. Renamed to {}", name, camelize("model_" + name)); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } @@ -145,7 +145,7 @@ public class RubySinatraServerCodegen extends AbstractRubyCodegen { public String toModelFilename(String name) { // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model filename. Renamed to " + underscore("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model filename. Renamed to {}", name, underscore("model_" + name)); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java index 2aa6d625e03..b6db793d9ae 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java @@ -406,13 +406,14 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + ("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, "model_" + name); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } // model name starts with number if (name.matches("^\\d.*")) { - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + ("model_" + name)); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + "model_" + name); name = "model_" + name; // e.g. 200Response => Model200Response (after camelize) } @@ -454,14 +455,15 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { ArraySchema ap = (ArraySchema) p; Schema inner = ap.getItems(); if (inner == null) { - LOGGER.warn(ap.getName() + "(array property) does not have a proper inner type defined.Default to string"); + LOGGER.warn("{}(array property) does not have a proper inner type defined.Default to string", + ap.getName()); inner = new StringSchema().description("TODO default missing array inner type to string"); } return "Vec<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = getAdditionalProperties(p); if (inner == null) { - LOGGER.warn(p.getName() + "(map property) does not have a proper inner type defined. Default to string"); + LOGGER.warn("{}(map property) does not have a proper inner type defined. Default to string", p.getName()); inner = new StringSchema().description("TODO default missing map inner type to string"); } return "::std::collections::HashMap"; @@ -502,7 +504,7 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { // method name cannot use reserved keyword, e.g. return if (isReservedWord(sanitizedOperationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + StringUtils.underscore("call_" + operationId)); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, StringUtils.underscore("call_" + operationId)); sanitizedOperationId = "call_" + sanitizedOperationId; } From 64ee3fe207585bbbb886fdfe6f8c611c907fb55b Mon Sep 17 00:00:00 2001 From: Georgy Ushakov Date: Mon, 7 Jun 2021 22:15:01 +0200 Subject: [PATCH 097/192] Added support for async accessToken in typescript-fetch (#9659) --- .../resources/typescript-fetch/apis.mustache | 8 +--- .../typescript-fetch/runtime.mustache | 6 +-- .../builds/default-v3.0/apis/FakeApi.ts | 2 +- .../builds/default-v3.0/apis/PetApi.ts | 48 ++++--------------- .../builds/default-v3.0/runtime.ts | 6 +-- .../builds/default/apis/PetApi.ts | 42 +++------------- .../builds/default/runtime.ts | 6 +-- .../typescript-fetch/builds/enum/runtime.ts | 6 +-- .../builds/es6-target/src/apis/PetApi.ts | 42 +++------------- .../builds/es6-target/src/runtime.ts | 6 +-- .../builds/multiple-parameters/apis/PetApi.ts | 42 +++------------- .../builds/multiple-parameters/runtime.ts | 6 +-- .../src/apis/PetApi.ts | 42 +++------------- .../src/runtime.ts | 6 +-- .../typescript-three-plus/src/apis/PetApi.ts | 42 +++------------- .../typescript-three-plus/src/runtime.ts | 6 +-- .../builds/with-interfaces/apis/PetApi.ts | 42 +++------------- .../builds/with-interfaces/runtime.ts | 6 +-- .../with-npm-version/src/apis/PetApi.ts | 42 +++------------- .../builds/with-npm-version/src/runtime.ts | 6 +-- .../without-runtime-checks/src/apis/PetApi.ts | 42 +++------------- .../without-runtime-checks/src/runtime.ts | 6 +-- 22 files changed, 100 insertions(+), 360 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache index 8466deb2853..851b9ce3831 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache @@ -167,7 +167,7 @@ export class {{classname}} extends runtime.BaseAPI { {{#isBasicBearer}} if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; - const tokenString = typeof token === 'function' ? token("{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}]) : token; + const tokenString = await token("{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}]); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; @@ -192,11 +192,7 @@ export class {{classname}} extends runtime.BaseAPI { {{#isOAuth}} if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}]); } {{/isOAuth}} diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache index d0c29b93a75..e0498e0e316 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache @@ -124,7 +124,7 @@ export interface ConfigurationParameters { username?: string; // parameter for basic security password?: string; // parameter for basic security apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security headers?: HTTPHeaders; //header params we want to use on every request credentials?: RequestCredentials; //value for the credentials param we want to use on each request } @@ -164,10 +164,10 @@ export class Configuration { return undefined; } - get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { const accessToken = this.configuration.accessToken; if (accessToken) { - return typeof accessToken === 'function' ? accessToken : () => accessToken; + return typeof accessToken === 'function' ? accessToken : async () => accessToken; } return undefined; } diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/FakeApi.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/FakeApi.ts index 5985139ab23..31f05a52858 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/FakeApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/FakeApi.ts @@ -732,7 +732,7 @@ export class FakeApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; - const tokenString = typeof token === 'function' ? token("bearer_test", []) : token; + const tokenString = await token("bearer_test", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/PetApi.ts index 854c14d7dcd..198794ce8b0 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/apis/PetApi.ts @@ -87,11 +87,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -130,11 +126,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -173,11 +165,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -218,11 +206,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -296,11 +280,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -335,11 +315,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ @@ -396,11 +372,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ @@ -464,11 +436,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/runtime.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/runtime.ts index cb001046c5b..be992e2dac8 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/runtime.ts @@ -135,7 +135,7 @@ export interface ConfigurationParameters { username?: string; // parameter for basic security password?: string; // parameter for basic security apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security headers?: HTTPHeaders; //header params we want to use on every request credentials?: RequestCredentials; //value for the credentials param we want to use on each request } @@ -175,10 +175,10 @@ export class Configuration { return undefined; } - get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { const accessToken = this.configuration.accessToken; if (accessToken) { - return typeof accessToken === 'function' ? accessToken : () => accessToken; + return typeof accessToken === 'function' ? accessToken : async () => accessToken; } return undefined; } diff --git a/samples/client/petstore/typescript-fetch/builds/default/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/default/apis/PetApi.ts index a219f15f7e2..3bf150e489b 100644 --- a/samples/client/petstore/typescript-fetch/builds/default/apis/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/default/apis/PetApi.ts @@ -81,11 +81,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -124,11 +120,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -167,11 +159,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -212,11 +200,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -290,11 +274,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -329,11 +309,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ @@ -390,11 +366,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ diff --git a/samples/client/petstore/typescript-fetch/builds/default/runtime.ts b/samples/client/petstore/typescript-fetch/builds/default/runtime.ts index f7a51f623ff..20374a38659 100644 --- a/samples/client/petstore/typescript-fetch/builds/default/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/default/runtime.ts @@ -135,7 +135,7 @@ export interface ConfigurationParameters { username?: string; // parameter for basic security password?: string; // parameter for basic security apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security headers?: HTTPHeaders; //header params we want to use on every request credentials?: RequestCredentials; //value for the credentials param we want to use on each request } @@ -175,10 +175,10 @@ export class Configuration { return undefined; } - get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { const accessToken = this.configuration.accessToken; if (accessToken) { - return typeof accessToken === 'function' ? accessToken : () => accessToken; + return typeof accessToken === 'function' ? accessToken : async () => accessToken; } return undefined; } diff --git a/samples/client/petstore/typescript-fetch/builds/enum/runtime.ts b/samples/client/petstore/typescript-fetch/builds/enum/runtime.ts index ccb0370bdc4..d558d0ad7de 100644 --- a/samples/client/petstore/typescript-fetch/builds/enum/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/enum/runtime.ts @@ -135,7 +135,7 @@ export interface ConfigurationParameters { username?: string; // parameter for basic security password?: string; // parameter for basic security apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security headers?: HTTPHeaders; //header params we want to use on every request credentials?: RequestCredentials; //value for the credentials param we want to use on each request } @@ -175,10 +175,10 @@ export class Configuration { return undefined; } - get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { const accessToken = this.configuration.accessToken; if (accessToken) { - return typeof accessToken === 'function' ? accessToken : () => accessToken; + return typeof accessToken === 'function' ? accessToken : async () => accessToken; } return undefined; } diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/src/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/src/apis/PetApi.ts index a219f15f7e2..3bf150e489b 100644 --- a/samples/client/petstore/typescript-fetch/builds/es6-target/src/apis/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/src/apis/PetApi.ts @@ -81,11 +81,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -124,11 +120,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -167,11 +159,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -212,11 +200,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -290,11 +274,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -329,11 +309,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ @@ -390,11 +366,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/src/runtime.ts index f7a51f623ff..20374a38659 100644 --- a/samples/client/petstore/typescript-fetch/builds/es6-target/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/src/runtime.ts @@ -135,7 +135,7 @@ export interface ConfigurationParameters { username?: string; // parameter for basic security password?: string; // parameter for basic security apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security headers?: HTTPHeaders; //header params we want to use on every request credentials?: RequestCredentials; //value for the credentials param we want to use on each request } @@ -175,10 +175,10 @@ export class Configuration { return undefined; } - get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { const accessToken = this.configuration.accessToken; if (accessToken) { - return typeof accessToken === 'function' ? accessToken : () => accessToken; + return typeof accessToken === 'function' ? accessToken : async () => accessToken; } return undefined; } diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/apis/PetApi.ts index 4c47ea2e1f1..db5971d0ad5 100644 --- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/apis/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/apis/PetApi.ts @@ -81,11 +81,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -124,11 +120,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -167,11 +159,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -212,11 +200,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -290,11 +274,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -329,11 +309,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ @@ -390,11 +366,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts index f7a51f623ff..20374a38659 100644 --- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts @@ -135,7 +135,7 @@ export interface ConfigurationParameters { username?: string; // parameter for basic security password?: string; // parameter for basic security apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security headers?: HTTPHeaders; //header params we want to use on every request credentials?: RequestCredentials; //value for the credentials param we want to use on each request } @@ -175,10 +175,10 @@ export class Configuration { return undefined; } - get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { const accessToken = this.configuration.accessToken; if (accessToken) { - return typeof accessToken === 'function' ? accessToken : () => accessToken; + return typeof accessToken === 'function' ? accessToken : async () => accessToken; } return undefined; } diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/apis/PetApi.ts index b98247c01da..e2fd699fd73 100644 --- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/apis/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/apis/PetApi.ts @@ -81,11 +81,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -124,11 +120,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -167,11 +159,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -212,11 +200,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -290,11 +274,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -329,11 +309,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ @@ -390,11 +366,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/runtime.ts index f7a51f623ff..20374a38659 100644 --- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/runtime.ts @@ -135,7 +135,7 @@ export interface ConfigurationParameters { username?: string; // parameter for basic security password?: string; // parameter for basic security apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security headers?: HTTPHeaders; //header params we want to use on every request credentials?: RequestCredentials; //value for the credentials param we want to use on each request } @@ -175,10 +175,10 @@ export class Configuration { return undefined; } - get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { const accessToken = this.configuration.accessToken; if (accessToken) { - return typeof accessToken === 'function' ? accessToken : () => accessToken; + return typeof accessToken === 'function' ? accessToken : async () => accessToken; } return undefined; } diff --git a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/apis/PetApi.ts index a219f15f7e2..3bf150e489b 100644 --- a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/apis/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/apis/PetApi.ts @@ -81,11 +81,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -124,11 +120,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -167,11 +159,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -212,11 +200,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -290,11 +274,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -329,11 +309,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ @@ -390,11 +366,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ diff --git a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/runtime.ts index da5d9059bad..95601f9e307 100644 --- a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/runtime.ts @@ -135,7 +135,7 @@ export interface ConfigurationParameters { username?: string; // parameter for basic security password?: string; // parameter for basic security apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security headers?: HTTPHeaders; //header params we want to use on every request credentials?: RequestCredentials; //value for the credentials param we want to use on each request } @@ -175,10 +175,10 @@ export class Configuration { return undefined; } - get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { const accessToken = this.configuration.accessToken; if (accessToken) { - return typeof accessToken === 'function' ? accessToken : () => accessToken; + return typeof accessToken === 'function' ? accessToken : async () => accessToken; } return undefined; } diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/apis/PetApi.ts index d7f8f8a62fe..f8224fdb55f 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/apis/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/apis/PetApi.ts @@ -218,11 +218,7 @@ export class PetApi extends runtime.BaseAPI implements PetApiInterface { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -261,11 +257,7 @@ export class PetApi extends runtime.BaseAPI implements PetApiInterface { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -304,11 +296,7 @@ export class PetApi extends runtime.BaseAPI implements PetApiInterface { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -349,11 +337,7 @@ export class PetApi extends runtime.BaseAPI implements PetApiInterface { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -427,11 +411,7 @@ export class PetApi extends runtime.BaseAPI implements PetApiInterface { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -466,11 +446,7 @@ export class PetApi extends runtime.BaseAPI implements PetApiInterface { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ @@ -527,11 +503,7 @@ export class PetApi extends runtime.BaseAPI implements PetApiInterface { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts index f7a51f623ff..20374a38659 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts @@ -135,7 +135,7 @@ export interface ConfigurationParameters { username?: string; // parameter for basic security password?: string; // parameter for basic security apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security headers?: HTTPHeaders; //header params we want to use on every request credentials?: RequestCredentials; //value for the credentials param we want to use on each request } @@ -175,10 +175,10 @@ export class Configuration { return undefined; } - get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { const accessToken = this.configuration.accessToken; if (accessToken) { - return typeof accessToken === 'function' ? accessToken : () => accessToken; + return typeof accessToken === 'function' ? accessToken : async () => accessToken; } return undefined; } diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/apis/PetApi.ts index a219f15f7e2..3bf150e489b 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/apis/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/apis/PetApi.ts @@ -81,11 +81,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -124,11 +120,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -167,11 +159,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -212,11 +200,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -290,11 +274,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -329,11 +309,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ @@ -390,11 +366,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/runtime.ts index f7a51f623ff..20374a38659 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/runtime.ts @@ -135,7 +135,7 @@ export interface ConfigurationParameters { username?: string; // parameter for basic security password?: string; // parameter for basic security apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security headers?: HTTPHeaders; //header params we want to use on every request credentials?: RequestCredentials; //value for the credentials param we want to use on each request } @@ -175,10 +175,10 @@ export class Configuration { return undefined; } - get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { const accessToken = this.configuration.accessToken; if (accessToken) { - return typeof accessToken === 'function' ? accessToken : () => accessToken; + return typeof accessToken === 'function' ? accessToken : async () => accessToken; } return undefined; } diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/apis/PetApi.ts index dd0a9026b01..063d760e6ca 100644 --- a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/apis/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/apis/PetApi.ts @@ -77,11 +77,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -120,11 +116,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -163,11 +155,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -208,11 +196,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -286,11 +270,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -325,11 +305,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ @@ -386,11 +362,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/runtime.ts index f7a51f623ff..20374a38659 100644 --- a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/runtime.ts @@ -135,7 +135,7 @@ export interface ConfigurationParameters { username?: string; // parameter for basic security password?: string; // parameter for basic security apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security headers?: HTTPHeaders; //header params we want to use on every request credentials?: RequestCredentials; //value for the credentials param we want to use on each request } @@ -175,10 +175,10 @@ export class Configuration { return undefined; } - get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { const accessToken = this.configuration.accessToken; if (accessToken) { - return typeof accessToken === 'function' ? accessToken : () => accessToken; + return typeof accessToken === 'function' ? accessToken : async () => accessToken; } return undefined; } From 7125ef43f5b24b0c0bcec064d8a1d803dfff3776 Mon Sep 17 00:00:00 2001 From: Mike Marchetti Date: Mon, 7 Jun 2021 16:17:25 -0400 Subject: [PATCH 098/192] Typescript: fix: add paramPropertyNaming (#9546) Model naming conforms to the property: modelPropertyNaming, however the parameter naming scheme is currently hardcoded to camelcase. Since the parameter names are closely tied to the model properties names, is maybe desirable to use a similar naming approach. The toParamName cannot directly use the paramPropertyNaming since that will cause issues with current generated code, since the modelPropertyNaming currently defaults to "original" A new property has been created to override this behavior, named "paramPropertyNaming", and its default is set to "camelcase". --- docs/generators/javascript-flowtyped.md | 1 + docs/generators/typescript-angular.md | 1 + .../typescript-angularjs-deprecated.md | 1 + docs/generators/typescript-aurelia.md | 1 + docs/generators/typescript-axios.md | 1 + docs/generators/typescript-fetch.md | 1 + docs/generators/typescript-inversify.md | 1 + docs/generators/typescript-jquery.md | 1 + docs/generators/typescript-nestjs.md | 1 + docs/generators/typescript-node.md | 1 + docs/generators/typescript-redux-query.md | 1 + docs/generators/typescript-rxjs.md | 1 + .../codegen/CodegenConstants.java | 5 +++ .../AbstractTypeScriptClientCodegen.java | 44 ++++++++++++++++++- ...ypeScriptAngularClientOptionsProvider.java | 2 + ...eScriptAngularJsClientOptionsProvider.java | 2 + ...ypeScriptAureliaClientOptionsProvider.java | 2 + .../TypeScriptFetchClientOptionsProvider.java | 2 + ...TypeScriptNestjsClientOptionsProvider.java | 2 + .../TypeScriptNodeClientOptionsProvider.java | 2 + .../TypeScriptAureliaClientOptionsTest.java | 1 + .../TypeScriptFetchClientOptionsTest.java | 1 + .../TypeScriptAngularClientCodegenTest.java | 27 ++++++++++++ .../TypeScriptAngularClientOptionsTest.java | 1 + .../TypeScriptAngularJsClientOptionsTest.java | 1 + .../TypeScriptNestjsClientOptionsTest.java | 1 + .../TypeScriptNodeClientOptionsTest.java | 1 + 27 files changed, 105 insertions(+), 1 deletion(-) diff --git a/docs/generators/javascript-flowtyped.md b/docs/generators/javascript-flowtyped.md index eca0bf2e080..51ac05927d3 100644 --- a/docs/generators/javascript-flowtyped.md +++ b/docs/generators/javascript-flowtyped.md @@ -18,6 +18,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |npmRepository|Use this property to set an url your private npmRepo in the package.json| |null| |npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0| |nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false| +|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |snapshot|When setting this property to true, the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| diff --git a/docs/generators/typescript-angular.md b/docs/generators/typescript-angular.md index 6916e3f662c..67341026ceb 100644 --- a/docs/generators/typescript-angular.md +++ b/docs/generators/typescript-angular.md @@ -24,6 +24,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |npmRepository|Use this property to set an url your private npmRepo in the package.json| |null| |npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0| |nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false| +|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |providedIn|Use this property to provide Injectables in wanted level (it is only valid in angular version greater or equal to 9.0.0).|
    **root**
    The application-level injector in most apps.
    **none**
    No providedIn (same as providedInRoot=false)
    **any**
    Provides a unique instance in each lazy loaded module while all eagerly loaded modules share one instance.
    **platform**
    A special singleton platform injector shared by all applications on the page.
    |root| |providedInRoot|Use this property to provide Injectables in root (it is only valid in angular version greater or equal to 6.0.0). IMPORTANT: Deprecated for angular version greater or equal to 9.0.0, use **providedIn** instead.| |false| diff --git a/docs/generators/typescript-angularjs-deprecated.md b/docs/generators/typescript-angularjs-deprecated.md index 889c9fb3d2d..9363a6958da 100644 --- a/docs/generators/typescript-angularjs-deprecated.md +++ b/docs/generators/typescript-angularjs-deprecated.md @@ -15,6 +15,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|
    **true**
    The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
    **false**
    The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
    |true| |modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name. Only change it if you provide your own run-time code for (de-)serialization of models| |original| |nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false| +|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| diff --git a/docs/generators/typescript-aurelia.md b/docs/generators/typescript-aurelia.md index a1f568cfb65..aaad28dd75b 100644 --- a/docs/generators/typescript-aurelia.md +++ b/docs/generators/typescript-aurelia.md @@ -17,6 +17,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null| |npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0| |nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false| +|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |snapshot|When setting this property to true, the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| diff --git a/docs/generators/typescript-axios.md b/docs/generators/typescript-axios.md index 5bddee54189..3e9f31aed5f 100644 --- a/docs/generators/typescript-axios.md +++ b/docs/generators/typescript-axios.md @@ -18,6 +18,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |npmRepository|Use this property to set an url of your private npmRepo in the package.json| |null| |npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0| |nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false| +|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |snapshot|When setting this property to true, the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| diff --git a/docs/generators/typescript-fetch.md b/docs/generators/typescript-fetch.md index 2acbe8c7741..d197da526a5 100644 --- a/docs/generators/typescript-fetch.md +++ b/docs/generators/typescript-fetch.md @@ -18,6 +18,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |npmRepository|Use this property to set an url your private npmRepo in the package.json| |null| |npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0| |nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false| +|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prefixParameterInterfaces|Setting this property to true will generate parameter interface declarations prefixed with API class name to avoid name conflicts.| |false| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |snapshot|When setting this property to true, the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm| |false| diff --git a/docs/generators/typescript-inversify.md b/docs/generators/typescript-inversify.md index 41df5d2b2b7..38077cb2b40 100644 --- a/docs/generators/typescript-inversify.md +++ b/docs/generators/typescript-inversify.md @@ -18,6 +18,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |npmRepository|Use this property to set an url your private npmRepo in the package.json| |null| |npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0| |nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false| +|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |snapshot|When setting this property to true, the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| diff --git a/docs/generators/typescript-jquery.md b/docs/generators/typescript-jquery.md index 33713bf6f85..fcff7abe194 100644 --- a/docs/generators/typescript-jquery.md +++ b/docs/generators/typescript-jquery.md @@ -19,6 +19,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |npmRepository|Use this property to set an url your private npmRepo in the package.json| |null| |npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0| |nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false| +|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |snapshot|When setting this property to true, the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| diff --git a/docs/generators/typescript-nestjs.md b/docs/generators/typescript-nestjs.md index 0697f2266f6..50e9acb1675 100644 --- a/docs/generators/typescript-nestjs.md +++ b/docs/generators/typescript-nestjs.md @@ -22,6 +22,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |npmRepository|Use this property to set an url your private npmRepo in the package.json| |null| |npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0| |nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false| +|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |serviceFileSuffix|The suffix of the file of the generated service (service<suffix>.ts).| |.service| |serviceSuffix|The suffix of the generated service.| |Service| diff --git a/docs/generators/typescript-node.md b/docs/generators/typescript-node.md index 8c755639588..388dfd551bd 100644 --- a/docs/generators/typescript-node.md +++ b/docs/generators/typescript-node.md @@ -18,6 +18,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |npmRepository|Use this property to set an url your private npmRepo in the package.json| |null| |npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0| |nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false| +|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |snapshot|When setting this property to true, the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| diff --git a/docs/generators/typescript-redux-query.md b/docs/generators/typescript-redux-query.md index f35e028ff4b..dd79fa1a433 100644 --- a/docs/generators/typescript-redux-query.md +++ b/docs/generators/typescript-redux-query.md @@ -18,6 +18,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |npmRepository|Use this property to set an url your private npmRepo in the package.json| |null| |npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0| |nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false| +|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |snapshot|When setting this property to true, the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| diff --git a/docs/generators/typescript-rxjs.md b/docs/generators/typescript-rxjs.md index 05909b89bd2..50999179985 100644 --- a/docs/generators/typescript-rxjs.md +++ b/docs/generators/typescript-rxjs.md @@ -18,6 +18,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |npmRepository|Use this property to set an url your private npmRepo in the package.json| |null| |npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0| |nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false| +|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| |snapshot|When setting this property to true, the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java index 631ff47eedb..b8caef27e9f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java @@ -205,12 +205,17 @@ public class CodegenConstants { public static final String MODEL_PROPERTY_NAMING = "modelPropertyNaming"; public static final String MODEL_PROPERTY_NAMING_DESC = "Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name"; + public static final String PARAM_NAMING = "paramNaming"; + public static final String PARAM_NAMING_DESC = "Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name"; + public static final String DOTNET_FRAMEWORK = "targetFramework"; public static final String DOTNET_FRAMEWORK_DESC = "The target .NET framework version. To target multiple frameworks, use `;` as the separator, e.g. `netstandard2.1;netcoreapp3.0`"; public static final String TEMPLATING_ENGINE = "templatingEngine"; public static final String TEMPLATING_ENGINE_DESC = "The templating engine plugin to use: \"mustache\" (default) or \"handlebars\" (beta)"; + public static enum PARAM_NAMING_TYPE {camelCase, PascalCase, snake_case, original} + public static enum MODEL_PROPERTY_NAMING_TYPE {camelCase, PascalCase, snake_case, original} public static enum ENUM_PROPERTY_NAMING_TYPE {camelCase, PascalCase, snake_case, original, UPPERCASE} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index d0f44116f57..c6762f1903e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -27,6 +27,7 @@ import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.CodegenConstants.ENUM_PROPERTY_NAMING_TYPE; import org.openapitools.codegen.CodegenConstants.MODEL_PROPERTY_NAMING_TYPE; +import org.openapitools.codegen.CodegenConstants.PARAM_NAMING_TYPE; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.utils.ModelUtils; @@ -64,6 +65,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp protected MODEL_PROPERTY_NAMING_TYPE modelPropertyNaming = MODEL_PROPERTY_NAMING_TYPE.original; protected ENUM_PROPERTY_NAMING_TYPE enumPropertyNaming = ENUM_PROPERTY_NAMING_TYPE.PascalCase; + protected PARAM_NAMING_TYPE paramNaming = PARAM_NAMING_TYPE.camelCase; protected Boolean supportsES6 = false; protected Boolean nullSafeAdditionalProps = false; protected HashSet languageGenericTypes; @@ -175,6 +177,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp cliOptions.add(new CliOption(CodegenConstants.ENUM_PROPERTY_NAMING, CodegenConstants.ENUM_PROPERTY_NAMING_DESC).defaultValue(this.enumPropertyNaming.name())); cliOptions.add(new CliOption(CodegenConstants.MODEL_PROPERTY_NAMING, MODEL_PROPERTY_NAMING_DESC_WITH_WARNING).defaultValue(this.modelPropertyNaming.name())); cliOptions.add(new CliOption(CodegenConstants.SUPPORTS_ES6, CodegenConstants.SUPPORTS_ES6_DESC).defaultValue(String.valueOf(this.getSupportsES6()))); + cliOptions.add(new CliOption(CodegenConstants.PARAM_NAMING, CodegenConstants.PARAM_NAMING_DESC).defaultValue(this.paramNaming.name())); this.cliOptions.add(new CliOption(NPM_NAME, "The name under which you want to publish generated npm package." + " Required to generate a full package")); this.cliOptions.add(new CliOption(NPM_VERSION, "The version of your npm package. If not provided, using the version from the OpenAPI specification file.").defaultValue(this.getNpmVersion())); @@ -212,6 +215,10 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp setModelPropertyNaming((String) additionalProperties.get(CodegenConstants.MODEL_PROPERTY_NAMING)); } + if (additionalProperties.containsKey(CodegenConstants.PARAM_NAMING)) { + setParamNaming((String) additionalProperties.get(CodegenConstants.PARAM_NAMING)); + } + if (additionalProperties.containsKey(CodegenConstants.SUPPORTS_ES6)) { setSupportsES6(Boolean.valueOf(additionalProperties.get(CodegenConstants.SUPPORTS_ES6).toString())); additionalProperties.put("supportsES6", getSupportsES6()); @@ -330,7 +337,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp name = "_u"; } - name = camelize(name, true); + name = getNameUsingParamNaming(name); name = toSafeIdentifier(name); return name; @@ -597,10 +604,45 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp } } + public void setParamNaming(String naming) { + try { + paramNaming = PARAM_NAMING_TYPE.valueOf(naming); + } catch (IllegalArgumentException e) { + String values = Stream.of(PARAM_NAMING_TYPE.values()) + .map(value -> "'" + value.name() + "'") + .collect(Collectors.joining(", ")); + + String msg = String.format(Locale.ROOT, "Invalid parameter naming '%s'. Must be one of %s.", naming, values); + throw new IllegalArgumentException(msg); + } + } + public MODEL_PROPERTY_NAMING_TYPE getModelPropertyNaming() { return modelPropertyNaming; } + public PARAM_NAMING_TYPE getParamNaming() { + return paramNaming; + } + + private String getNameUsingParamNaming(String name) { + switch (getParamNaming()) { + case original: + return name; + case camelCase: + return camelize(name, true); + case PascalCase: + return camelize(name); + case snake_case: + return underscore(name); + default: + throw new IllegalArgumentException("Invalid param naming '" + + name + "'. Must be 'original', 'camelCase', " + + "'PascalCase' or 'snake_case'"); + } + + } + private String getNameUsingModelPropertyNaming(String name) { switch (getModelPropertyNaming()) { case original: diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptAngularClientOptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptAngularClientOptionsProvider.java index eb8d90a468b..aa67286b978 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptAngularClientOptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptAngularClientOptionsProvider.java @@ -34,6 +34,7 @@ public class TypeScriptAngularClientOptionsProvider implements OptionsProvider { public static final String ENSURE_UNIQUE_PARAMS_VALUE = "true"; public static final String ENUM_PROPERTY_NAMING_VALUE = "PascalCase"; public static final String MODEL_PROPERTY_NAMING_VALUE = "camelCase"; + public static final String PARAM_NAMING_VALUE = "camelCase"; private static final String NPM_NAME = "npmName"; private static final String NPM_VERSION = "1.1.2"; private static final String NPM_REPOSITORY = "https://registry.npmjs.org"; @@ -63,6 +64,7 @@ public class TypeScriptAngularClientOptionsProvider implements OptionsProvider { .put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE) .put(CodegenConstants.ENUM_PROPERTY_NAMING, ENUM_PROPERTY_NAMING_VALUE) .put(CodegenConstants.MODEL_PROPERTY_NAMING, MODEL_PROPERTY_NAMING_VALUE) + .put(CodegenConstants.PARAM_NAMING, PARAM_NAMING_VALUE) .put(CodegenConstants.SUPPORTS_ES6, SUPPORTS_ES6_VALUE) .put(AbstractTypeScriptClientCodegen.NULL_SAFE_ADDITIONAL_PROPS, NULL_SAFE_ADDITIONAL_PROPS_VALUE) .put(CodegenConstants.ENUM_NAME_SUFFIX, ENUM_NAME_SUFFIX) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptAngularJsClientOptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptAngularJsClientOptionsProvider.java index 2c56e0c1268..1b9c8a58e17 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptAngularJsClientOptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptAngularJsClientOptionsProvider.java @@ -31,6 +31,7 @@ public class TypeScriptAngularJsClientOptionsProvider implements OptionsProvider public static final String SORT_MODEL_PROPERTIES_VALUE = "false"; public static final String ENSURE_UNIQUE_PARAMS_VALUE = "true"; public static final String MODEL_PROPERTY_NAMING_VALUE = "camelCase"; + public static final String PARAM_NAMING_VALUE = "camelCase"; public static final String ENUM_PROPERTY_NAMING_VALUE = "PascalCase"; public static final String ALLOW_UNICODE_IDENTIFIERS_VALUE = "false"; public static final String PREPEND_FORM_OR_BODY_PARAMETERS_VALUE = "true"; @@ -51,6 +52,7 @@ public class TypeScriptAngularJsClientOptionsProvider implements OptionsProvider .put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE) .put(CodegenConstants.ENUM_PROPERTY_NAMING, ENUM_PROPERTY_NAMING_VALUE) .put(CodegenConstants.MODEL_PROPERTY_NAMING, MODEL_PROPERTY_NAMING_VALUE) + .put(CodegenConstants.PARAM_NAMING, PARAM_NAMING_VALUE) .put(CodegenConstants.ALLOW_UNICODE_IDENTIFIERS, ALLOW_UNICODE_IDENTIFIERS_VALUE) .put(CodegenConstants.PREPEND_FORM_OR_BODY_PARAMETERS, PREPEND_FORM_OR_BODY_PARAMETERS_VALUE) .put(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR, "true") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptAureliaClientOptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptAureliaClientOptionsProvider.java index cae9790d8da..939a0fad979 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptAureliaClientOptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptAureliaClientOptionsProvider.java @@ -33,6 +33,7 @@ public class TypeScriptAureliaClientOptionsProvider implements OptionsProvider { public static final String ENUM_NAME_SUFFIX = "Enum"; public static final String ENUM_PROPERTY_NAMING_VALUE = "PascalCase"; public static final String MODEL_PROPERTY_NAMING_VALUE = "camelCase"; + public static final String PARAM_NAMING_VALUE = "camelCase"; private static final String NPM_NAME = "npmName"; private static final String NPM_VERSION = "1.0.0"; public static final String ALLOW_UNICODE_IDENTIFIERS_VALUE = "false"; @@ -51,6 +52,7 @@ public class TypeScriptAureliaClientOptionsProvider implements OptionsProvider { .put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE) .put(CodegenConstants.ENUM_PROPERTY_NAMING, ENUM_PROPERTY_NAMING_VALUE) .put(CodegenConstants.MODEL_PROPERTY_NAMING, MODEL_PROPERTY_NAMING_VALUE) + .put(CodegenConstants.PARAM_NAMING, PARAM_NAMING_VALUE) .put(CodegenConstants.SUPPORTS_ES6, String.valueOf(SUPPORTS_ES6_VALUE)) .put(AbstractTypeScriptClientCodegen.NULL_SAFE_ADDITIONAL_PROPS, String.valueOf(NULL_SAFE_ADDITIONAL_PROPS_VALUE)) .put(CodegenConstants.ENUM_NAME_SUFFIX, ENUM_NAME_SUFFIX) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptFetchClientOptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptFetchClientOptionsProvider.java index be8e06e79fe..d4aecd9852e 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptFetchClientOptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptFetchClientOptionsProvider.java @@ -32,6 +32,7 @@ public class TypeScriptFetchClientOptionsProvider implements OptionsProvider { public static final Boolean NULL_SAFE_ADDITIONAL_PROPS_VALUE = false; public static final String ENUM_NAME_SUFFIX = "Enum"; public static final String MODEL_PROPERTY_NAMING_VALUE = "camelCase"; + public static final String PARAM_NAMING_VALUE = "camelCase"; public static final String ENUM_PROPERTY_NAMING_VALUE = "PascalCase"; private static final String NMP_NAME = "npmName"; private static final String NMP_VERSION = "1.0.0"; @@ -54,6 +55,7 @@ public class TypeScriptFetchClientOptionsProvider implements OptionsProvider { .put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE) .put(CodegenConstants.ENUM_PROPERTY_NAMING, ENUM_PROPERTY_NAMING_VALUE) .put(CodegenConstants.MODEL_PROPERTY_NAMING, MODEL_PROPERTY_NAMING_VALUE) + .put(CodegenConstants.PARAM_NAMING, PARAM_NAMING_VALUE) .put(CodegenConstants.SUPPORTS_ES6, String.valueOf(SUPPORTS_ES6_VALUE)) .put(AbstractTypeScriptClientCodegen.NULL_SAFE_ADDITIONAL_PROPS, String.valueOf(NULL_SAFE_ADDITIONAL_PROPS_VALUE)) .put(CodegenConstants.ENUM_NAME_SUFFIX, ENUM_NAME_SUFFIX) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptNestjsClientOptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptNestjsClientOptionsProvider.java index ee49aa17dd8..d86f586e15c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptNestjsClientOptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptNestjsClientOptionsProvider.java @@ -33,6 +33,7 @@ public class TypeScriptNestjsClientOptionsProvider implements OptionsProvider { public static final String ENSURE_UNIQUE_PARAMS_VALUE = "true"; public static final String ENUM_PROPERTY_NAMING_VALUE = "PascalCase"; public static final String MODEL_PROPERTY_NAMING_VALUE = "camelCase"; + public static final String PARAM_NAMING_VALUE = "camelCase"; private static final String NMP_NAME = "npmName"; private static final String NMP_VERSION = "1.1.2"; private static final String NPM_REPOSITORY = "https://registry.npmjs.org"; @@ -59,6 +60,7 @@ public class TypeScriptNestjsClientOptionsProvider implements OptionsProvider { .put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE) .put(CodegenConstants.ENUM_PROPERTY_NAMING, ENUM_PROPERTY_NAMING_VALUE) .put(CodegenConstants.MODEL_PROPERTY_NAMING, MODEL_PROPERTY_NAMING_VALUE) + .put(CodegenConstants.PARAM_NAMING, PARAM_NAMING_VALUE) .put(CodegenConstants.SUPPORTS_ES6, SUPPORTS_ES6_VALUE) .put(AbstractTypeScriptClientCodegen.NULL_SAFE_ADDITIONAL_PROPS, NULL_SAFE_ADDITIONAL_PROPS_VALUE) .put(CodegenConstants.ENUM_NAME_SUFFIX, ENUM_NAME_SUFFIX) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptNodeClientOptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptNodeClientOptionsProvider.java index 0600f14838c..fb2b6a741dc 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptNodeClientOptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptNodeClientOptionsProvider.java @@ -33,6 +33,7 @@ public class TypeScriptNodeClientOptionsProvider implements OptionsProvider { public static final String SORT_MODEL_PROPERTIES_VALUE = "false"; public static final String ENSURE_UNIQUE_PARAMS_VALUE = "true"; public static final String MODEL_PROPERTY_NAMING_VALUE = "camelCase"; + public static final String PARAM_NAMING_VALUE = "camelCase"; public static final String ENUM_PROPERTY_NAMING_VALUE = "PascalCase"; public static final String NMP_NAME = "npmName"; public static final String NMP_VERSION = "1.1.2"; @@ -57,6 +58,7 @@ public class TypeScriptNodeClientOptionsProvider implements OptionsProvider { .put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE) .put(CodegenConstants.ENUM_PROPERTY_NAMING, ENUM_PROPERTY_NAMING_VALUE) .put(CodegenConstants.MODEL_PROPERTY_NAMING, MODEL_PROPERTY_NAMING_VALUE) + .put(CodegenConstants.PARAM_NAMING, PARAM_NAMING_VALUE) .put(TypeScriptAngularClientCodegen.NPM_NAME, NMP_NAME) .put(TypeScriptAngularClientCodegen.NPM_VERSION, NMP_VERSION) .put(TypeScriptAngularClientCodegen.SNAPSHOT, Boolean.FALSE.toString()) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/aurelia/TypeScriptAureliaClientOptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/aurelia/TypeScriptAureliaClientOptionsTest.java index c8e6a379abd..cd247de1190 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/aurelia/TypeScriptAureliaClientOptionsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/aurelia/TypeScriptAureliaClientOptionsTest.java @@ -42,6 +42,7 @@ public class TypeScriptAureliaClientOptionsTest extends AbstractOptionsTest { protected void verifyOptions() { verify(clientCodegen).setSortParamsByRequiredFlag(Boolean.valueOf(TypeScriptAureliaClientOptionsProvider.SORT_PARAMS_VALUE)); verify(clientCodegen).setModelPropertyNaming(TypeScriptAureliaClientOptionsProvider.MODEL_PROPERTY_NAMING_VALUE); + verify(clientCodegen).setParamNaming(TypeScriptAureliaClientOptionsProvider.PARAM_NAMING_VALUE); verify(clientCodegen).setSupportsES6(TypeScriptAureliaClientOptionsProvider.SUPPORTS_ES6_VALUE); verify(clientCodegen).setPrependFormOrBodyParameters(Boolean.valueOf(TypeScriptAureliaClientOptionsProvider.PREPEND_FORM_OR_BODY_PARAMETERS_VALUE)); } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientOptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientOptionsTest.java index 6bc2631f6e6..33ef4b99bd4 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientOptionsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientOptionsTest.java @@ -42,6 +42,7 @@ public class TypeScriptFetchClientOptionsTest extends AbstractOptionsTest { protected void verifyOptions() { verify(clientCodegen).setSortParamsByRequiredFlag(Boolean.valueOf(TypeScriptFetchClientOptionsProvider.SORT_PARAMS_VALUE)); verify(clientCodegen).setModelPropertyNaming(TypeScriptFetchClientOptionsProvider.MODEL_PROPERTY_NAMING_VALUE); + verify(clientCodegen).setParamNaming(TypeScriptFetchClientOptionsProvider.PARAM_NAMING_VALUE); verify(clientCodegen).setSupportsES6(TypeScriptFetchClientOptionsProvider.SUPPORTS_ES6_VALUE); verify(clientCodegen).setPrependFormOrBodyParameters(Boolean.valueOf(TypeScriptFetchClientOptionsProvider.PREPEND_FORM_OR_BODY_PARAMETERS_VALUE)); verify(clientCodegen).setTypescriptThreePlus(Boolean.valueOf(TypeScriptFetchClientOptionsProvider.TYPESCRIPT_THREE_PLUS)); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java index 059e5004ad4..07e2216710b 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java @@ -231,4 +231,31 @@ public class TypeScriptAngularClientCodegenTest { Assert.assertEquals(codegen.toModelImport(modelName), "model/foo-response-links"); Assert.assertEquals(codegen.toModelFilename(modelName), "./foo-response-links"); } + + @Test + public void testToParamNaming() { + TypeScriptAngularClientCodegen codegen = new TypeScriptAngularClientCodegen(); + // unspecified option should default to camelcase + codegen.processOpts(); + Assert.assertEquals(codegen.toParamName("valid_id"), "validId"); + Assert.assertEquals(codegen.toParamName("illegal-id+"), "illegalId"); + + codegen = new TypeScriptAngularClientCodegen(); + codegen.additionalProperties().put(CodegenConstants.PARAM_NAMING, CodegenConstants.PARAM_NAMING_TYPE.original.name()); + codegen.processOpts(); + Assert.assertEquals(codegen.toParamName("valid_id"), "valid_id"); + Assert.assertEquals(codegen.toParamName("illegal-id+"), "illegal_id"); + + codegen = new TypeScriptAngularClientCodegen(); + codegen.additionalProperties().put(CodegenConstants.PARAM_NAMING, CodegenConstants.PARAM_NAMING_TYPE.snake_case.name()); + codegen.processOpts(); + Assert.assertEquals(codegen.toParamName("valid_ID"), "valid_id"); + Assert.assertEquals(codegen.toParamName("Illegal-Id+"), "illegal_id"); + + codegen = new TypeScriptAngularClientCodegen(); + codegen.additionalProperties().put(CodegenConstants.PARAM_NAMING, CodegenConstants.PARAM_NAMING_TYPE.PascalCase.name()); + codegen.processOpts(); + Assert.assertEquals(codegen.toParamName("valid_id"), "ValidId"); + Assert.assertEquals(codegen.toParamName("illegal-id+"), "IllegalId"); + } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientOptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientOptionsTest.java index 9bc5eafb1bd..5359b81e6a5 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientOptionsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientOptionsTest.java @@ -46,5 +46,6 @@ public class TypeScriptAngularClientOptionsTest extends AbstractOptionsTest { verify(clientCodegen).setStringEnums(Boolean.parseBoolean(TypeScriptAngularClientOptionsProvider.STRING_ENUMS_VALUE)); verify(clientCodegen).setPrependFormOrBodyParameters(Boolean.valueOf(TypeScriptAngularClientOptionsProvider.PREPEND_FORM_OR_BODY_PARAMETERS_VALUE)); verify(clientCodegen).setQueryParamObjectFormat(TypeScriptAngularClientOptionsProvider.QUERY_PARAM_OBJECT_FORMAT_VALUE); + verify(clientCodegen).setParamNaming(TypeScriptAngularClientOptionsProvider.PARAM_NAMING_VALUE); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangularjs/TypeScriptAngularJsClientOptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangularjs/TypeScriptAngularJsClientOptionsTest.java index f966d40b21c..54710992d91 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangularjs/TypeScriptAngularJsClientOptionsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangularjs/TypeScriptAngularJsClientOptionsTest.java @@ -42,6 +42,7 @@ public class TypeScriptAngularJsClientOptionsTest extends AbstractOptionsTest { protected void verifyOptions() { verify(clientCodegen).setSortParamsByRequiredFlag(Boolean.valueOf(TypeScriptAngularJsClientOptionsProvider.SORT_PARAMS_VALUE)); verify(clientCodegen).setModelPropertyNaming(TypeScriptAngularJsClientOptionsProvider.MODEL_PROPERTY_NAMING_VALUE); + verify(clientCodegen).setParamNaming(TypeScriptAngularJsClientOptionsProvider.PARAM_NAMING_VALUE); verify(clientCodegen).setSupportsES6(Boolean.valueOf(TypeScriptAngularJsClientOptionsProvider.SUPPORTS_ES6_VALUE)); verify(clientCodegen).setPrependFormOrBodyParameters(Boolean.valueOf(TypeScriptAngularJsClientOptionsProvider.PREPEND_FORM_OR_BODY_PARAMETERS_VALUE)); } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnestjs/TypeScriptNestjsClientOptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnestjs/TypeScriptNestjsClientOptionsTest.java index a2d137537fb..5f2138a66c2 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnestjs/TypeScriptNestjsClientOptionsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnestjs/TypeScriptNestjsClientOptionsTest.java @@ -42,6 +42,7 @@ public class TypeScriptNestjsClientOptionsTest extends AbstractOptionsTest { protected void verifyOptions() { verify(clientCodegen).setSortParamsByRequiredFlag(Boolean.valueOf(TypeScriptNestjsClientOptionsProvider.SORT_PARAMS_VALUE)); verify(clientCodegen).setModelPropertyNaming(TypeScriptNestjsClientOptionsProvider.MODEL_PROPERTY_NAMING_VALUE); + verify(clientCodegen).setParamNaming(TypeScriptNestjsClientOptionsProvider.PARAM_NAMING_VALUE); verify(clientCodegen).setSupportsES6(Boolean.valueOf(TypeScriptNestjsClientOptionsProvider.SUPPORTS_ES6_VALUE)); verify(clientCodegen).setStringEnums(Boolean.parseBoolean(TypeScriptNestjsClientOptionsProvider.STRING_ENUMS_VALUE)); verify(clientCodegen).setPrependFormOrBodyParameters(Boolean.valueOf(TypeScriptNestjsClientOptionsProvider.PREPEND_FORM_OR_BODY_PARAMETERS_VALUE)); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeClientOptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeClientOptionsTest.java index bf7e0509925..414c63dd279 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeClientOptionsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnode/TypeScriptNodeClientOptionsTest.java @@ -42,6 +42,7 @@ public class TypeScriptNodeClientOptionsTest extends AbstractOptionsTest { protected void verifyOptions() { verify(clientCodegen).setSortParamsByRequiredFlag(Boolean.valueOf(TypeScriptNodeClientOptionsProvider.SORT_PARAMS_VALUE)); verify(clientCodegen).setModelPropertyNaming(TypeScriptNodeClientOptionsProvider.MODEL_PROPERTY_NAMING_VALUE); + verify(clientCodegen).setParamNaming(TypeScriptNodeClientOptionsProvider.PARAM_NAMING_VALUE); verify(clientCodegen).setSupportsES6(Boolean.valueOf(TypeScriptNodeClientOptionsProvider.SUPPORTS_ES6_VALUE)); verify(clientCodegen).setPrependFormOrBodyParameters(Boolean.valueOf(TypeScriptNodeClientOptionsProvider.PREPEND_FORM_OR_BODY_PARAMETERS_VALUE)); } From 37b7c80c4f9b45223657fcc85c3fa3a002f54121 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 8 Jun 2021 09:09:21 +0800 Subject: [PATCH 099/192] null check on $ContentTypes (#9687) --- .../src/main/resources/powershell/api_client.mustache | 4 ++++ .../powershell/src/PSPetstore/Private/PSApiClient.ps1 | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/powershell/api_client.mustache b/modules/openapi-generator/src/main/resources/powershell/api_client.mustache index b17371ad1e3..7d45f071b1e 100644 --- a/modules/openapi-generator/src/main/resources/powershell/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/powershell/api_client.mustache @@ -211,6 +211,10 @@ function DeserializeResponse { [string[]]$ContentTypes ) + If ($ContentTypes -eq $null) { + $ContentTypes = [string[]]@() + } + If ([string]::IsNullOrEmpty($ReturnType) -and $ContentTypes.Count -eq 0) { # void response return $Response } Elseif ($ReturnType -match '\[\]$') { # array diff --git a/samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 b/samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 index 9223b3a93e6..09a202cee9d 100644 --- a/samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 +++ b/samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 @@ -198,6 +198,10 @@ function DeserializeResponse { [string[]]$ContentTypes ) + If ($ContentTypes -eq $null) { + $ContentTypes = [string[]]@() + } + If ([string]::IsNullOrEmpty($ReturnType) -and $ContentTypes.Count -eq 0) { # void response return $Response } Elseif ($ReturnType -match '\[\]$') { # array From c379f5bcc457b92e4272d5b2eb53109db8ce78ad Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 8 Jun 2021 10:02:33 +0800 Subject: [PATCH 100/192] encode URL parameters (#9688) --- .../src/main/resources/powershell/api.mustache | 2 +- .../petstore/powershell/src/PSPetstore/Api/PSPetApi.ps1 | 8 ++++---- .../petstore/powershell/src/PSPetstore/Api/PSStoreApi.ps1 | 4 ++-- .../petstore/powershell/src/PSPetstore/Api/PSUserApi.ps1 | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/powershell/api.mustache b/modules/openapi-generator/src/main/resources/powershell/api.mustache index f5840636bf6..14a18de62e0 100644 --- a/modules/openapi-generator/src/main/resources/powershell/api.mustache +++ b/modules/openapi-generator/src/main/resources/powershell/api.mustache @@ -90,7 +90,7 @@ function {{{vendorExtensions.x-powershell-method-name}}} { if (!$) { throw "Error! The required parameter `` missing when calling ." } - $LocalVarUri = $LocalVarUri.replace('{}', $) + $LocalVarUri = $LocalVarUri.replace('{}', [System.Web.HTTPUtility]::UrlEncode($)) <={{ }}=> diff --git a/samples/client/petstore/powershell/src/PSPetstore/Api/PSPetApi.ps1 b/samples/client/petstore/powershell/src/PSPetstore/Api/PSPetApi.ps1 index 4024745d0ca..b6c13d19fb1 100644 --- a/samples/client/petstore/powershell/src/PSPetstore/Api/PSPetApi.ps1 +++ b/samples/client/petstore/powershell/src/PSPetstore/Api/PSPetApi.ps1 @@ -150,7 +150,7 @@ function Remove-Pet { if (!$PetId) { throw "Error! The required parameter `PetId` missing when calling deletePet." } - $LocalVarUri = $LocalVarUri.replace('{petId}', $PetId) + $LocalVarUri = $LocalVarUri.replace('{petId}', [System.Web.HTTPUtility]::UrlEncode($PetId)) if ($ApiKey) { $LocalVarHeaderParameters['api_key'] = $ApiKey @@ -415,7 +415,7 @@ function Get-PSPetById { if (!$PetId) { throw "Error! The required parameter `PetId` missing when calling getPetById." } - $LocalVarUri = $LocalVarUri.replace('{petId}', $PetId) + $LocalVarUri = $LocalVarUri.replace('{petId}', [System.Web.HTTPUtility]::UrlEncode($PetId)) if ($Configuration["ApiKey"] -and $Configuration["ApiKey"]["api_key"]) { $LocalVarHeaderParameters['api_key'] = $Configuration["ApiKey"]["api_key"] @@ -596,7 +596,7 @@ function Update-PSPetWithForm { if (!$PetId) { throw "Error! The required parameter `PetId` missing when calling updatePetWithForm." } - $LocalVarUri = $LocalVarUri.replace('{petId}', $PetId) + $LocalVarUri = $LocalVarUri.replace('{petId}', [System.Web.HTTPUtility]::UrlEncode($PetId)) if ($Name) { $LocalVarFormParameters['name'] = $Name @@ -693,7 +693,7 @@ function Invoke-PSUploadFile { if (!$PetId) { throw "Error! The required parameter `PetId` missing when calling uploadFile." } - $LocalVarUri = $LocalVarUri.replace('{petId}', $PetId) + $LocalVarUri = $LocalVarUri.replace('{petId}', [System.Web.HTTPUtility]::UrlEncode($PetId)) if ($AdditionalMetadata) { $LocalVarFormParameters['additionalMetadata'] = $AdditionalMetadata diff --git a/samples/client/petstore/powershell/src/PSPetstore/Api/PSStoreApi.ps1 b/samples/client/petstore/powershell/src/PSPetstore/Api/PSStoreApi.ps1 index ae56dcdd258..da64d177edd 100644 --- a/samples/client/petstore/powershell/src/PSPetstore/Api/PSStoreApi.ps1 +++ b/samples/client/petstore/powershell/src/PSPetstore/Api/PSStoreApi.ps1 @@ -53,7 +53,7 @@ function Remove-PSOrder { if (!$OrderId) { throw "Error! The required parameter `OrderId` missing when calling deleteOrder." } - $LocalVarUri = $LocalVarUri.replace('{orderId}', $OrderId) + $LocalVarUri = $LocalVarUri.replace('{orderId}', [System.Web.HTTPUtility]::UrlEncode($OrderId)) $LocalVarResult = Invoke-PSApiClient -Method 'DELETE' ` -Uri $LocalVarUri ` @@ -206,7 +206,7 @@ function Get-PSOrderById { if (!$OrderId) { throw "Error! The required parameter `OrderId` missing when calling getOrderById." } - $LocalVarUri = $LocalVarUri.replace('{orderId}', $OrderId) + $LocalVarUri = $LocalVarUri.replace('{orderId}', [System.Web.HTTPUtility]::UrlEncode($OrderId)) $LocalVarResult = Invoke-PSApiClient -Method 'GET' ` -Uri $LocalVarUri ` diff --git a/samples/client/petstore/powershell/src/PSPetstore/Api/PSUserApi.ps1 b/samples/client/petstore/powershell/src/PSPetstore/Api/PSUserApi.ps1 index cbf47aace79..b1bf3241a10 100644 --- a/samples/client/petstore/powershell/src/PSPetstore/Api/PSUserApi.ps1 +++ b/samples/client/petstore/powershell/src/PSPetstore/Api/PSUserApi.ps1 @@ -293,7 +293,7 @@ function Remove-PSUser { if (!$Username) { throw "Error! The required parameter `Username` missing when calling deleteUser." } - $LocalVarUri = $LocalVarUri.replace('{username}', $Username) + $LocalVarUri = $LocalVarUri.replace('{username}', [System.Web.HTTPUtility]::UrlEncode($Username)) if ($Configuration["Cookie"]) { $LocalVarCookieParameters['auth_cookie'] = $Configuration["Cookie"] @@ -383,7 +383,7 @@ function Get-PSUserByName { if (!$Username) { throw "Error! The required parameter `Username` missing when calling getUserByName." } - $LocalVarUri = $LocalVarUri.replace('{username}', $Username) + $LocalVarUri = $LocalVarUri.replace('{username}', [System.Web.HTTPUtility]::UrlEncode($Username)) $LocalVarResult = Invoke-PSApiClient -Method 'GET' ` -Uri $LocalVarUri ` @@ -624,7 +624,7 @@ function Update-PSUser { if (!$Username) { throw "Error! The required parameter `Username` missing when calling updateUser." } - $LocalVarUri = $LocalVarUri.replace('{username}', $Username) + $LocalVarUri = $LocalVarUri.replace('{username}', [System.Web.HTTPUtility]::UrlEncode($Username)) if (!$User) { throw "Error! The required parameter `User` missing when calling updateUser." From e600f7d149df999c7a549ba0b467658f87e0acec Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Tue, 8 Jun 2021 16:17:20 +0100 Subject: [PATCH 101/192] [kotlin][client] silence deprecation warning (#9656) * [kotlin][client] silence deprecated warning when used internally * [kotlin][client] update sample projects --- .../resources/kotlin-client/libraries/jvm-okhttp/api.mustache | 3 +++ .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 + .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 + .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 + .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 + .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 + .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 + .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 + .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 + .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 + .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 + .../src/main/kotlin/org/openapitools/client/apis/PetApi.kt | 1 + 12 files changed, 14 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/api.mustache index c31f0c2211b..dd97f0ae30f 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/api.mustache @@ -41,6 +41,9 @@ import {{packageName}}.infrastructure.toMultiValue @Deprecated(message = "This operation is deprecated.") {{/isDeprecated}} {{^doNotUseRxAndCoroutines}}{{#useCoroutines}}suspend {{/useCoroutines}}{{/doNotUseRxAndCoroutines}}fun {{operationId}}({{#allParams}}{{{paramName}}}: {{{dataType}}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : {{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}} { + {{#isDeprecated}} + @Suppress("DEPRECATION") + {{/isDeprecated}} val localVariableConfig = {{operationId}}RequestConfig({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}}) val localVarResponse = request<{{#hasBodyParam}}{{#bodyParams}}{{{dataType}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}Unit{{/hasFormParams}}{{#hasFormParams}}Map{{/hasFormParams}}{{/hasBodyParam}}, {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Unit{{/returnType}}>( diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 28273cdf35d..be50dd6c442 100644 --- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -210,6 +210,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { @Throws(UnsupportedOperationException::class, ClientException::class, ServerException::class) @Deprecated(message = "This operation is deprecated.") fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { + @Suppress("DEPRECATION") val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) val localVarResponse = request>( diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 28273cdf35d..be50dd6c442 100644 --- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -210,6 +210,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { @Throws(UnsupportedOperationException::class, ClientException::class, ServerException::class) @Deprecated(message = "This operation is deprecated.") fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { + @Suppress("DEPRECATION") val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) val localVarResponse = request>( diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 5197d04b8df..cb784ddba8b 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -154,6 +154,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { @Throws(UnsupportedOperationException::class, ClientException::class, ServerException::class) @Deprecated(message = "This operation is deprecated.") fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { + @Suppress("DEPRECATION") val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) val localVarResponse = request>( diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 1e40497d817..74174279b14 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -210,6 +210,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { @Throws(UnsupportedOperationException::class, ClientException::class, ServerException::class) @Deprecated(message = "This operation is deprecated.") suspend fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { + @Suppress("DEPRECATION") val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) val localVarResponse = request>( diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 28273cdf35d..be50dd6c442 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -210,6 +210,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { @Throws(UnsupportedOperationException::class, ClientException::class, ServerException::class) @Deprecated(message = "This operation is deprecated.") fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { + @Suppress("DEPRECATION") val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) val localVarResponse = request>( diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index aa38ba8d691..7919953d4b4 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -210,6 +210,7 @@ internal class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(bas @Throws(UnsupportedOperationException::class, ClientException::class, ServerException::class) @Deprecated(message = "This operation is deprecated.") fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { + @Suppress("DEPRECATION") val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) val localVarResponse = request>( diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 5954c156bcd..401a66cf94d 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -210,6 +210,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { @Throws(UnsupportedOperationException::class, ClientException::class, ServerException::class) @Deprecated(message = "This operation is deprecated.") fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List? { + @Suppress("DEPRECATION") val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) val localVarResponse = request>( diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 28273cdf35d..be50dd6c442 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -210,6 +210,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { @Throws(UnsupportedOperationException::class, ClientException::class, ServerException::class) @Deprecated(message = "This operation is deprecated.") fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { + @Suppress("DEPRECATION") val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) val localVarResponse = request>( diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index de97218c9e8..fde3a1918c9 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -210,6 +210,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { @Throws(UnsupportedOperationException::class, ClientException::class, ServerException::class) @Deprecated(message = "This operation is deprecated.") fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { + @Suppress("DEPRECATION") val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) val localVarResponse = request>( diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 28273cdf35d..be50dd6c442 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -210,6 +210,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { @Throws(UnsupportedOperationException::class, ClientException::class, ServerException::class) @Deprecated(message = "This operation is deprecated.") fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { + @Suppress("DEPRECATION") val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) val localVarResponse = request>( diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 28273cdf35d..be50dd6c442 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -210,6 +210,7 @@ class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) { @Throws(UnsupportedOperationException::class, ClientException::class, ServerException::class) @Deprecated(message = "This operation is deprecated.") fun findPetsByTags(tags: kotlin.collections.List) : kotlin.collections.List { + @Suppress("DEPRECATION") val localVariableConfig = findPetsByTagsRequestConfig(tags = tags) val localVarResponse = request>( From cd2ef91dc3c4cd7aeaa203efc481da15cc3f2eef Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 9 Jun 2021 10:03:17 +0800 Subject: [PATCH 102/192] Update logback to 1.2.0 (#9722) * update logback to 2.1.0 * udpate jax-rs samples --- .../Java/libraries/microprofile/pom.mustache | 2 +- .../resources/JavaJaxRS/cxf-ext/pom.mustache | 2 +- .../JavaJaxRS/cxf-ext/server/pom.mustache | 2 +- .../main/resources/JavaJaxRS/cxf/pom.mustache | 2 +- .../JavaJaxRS/cxf/server/pom.mustache | 2 +- .../src/main/resources/JavaJaxRS/pom.mustache | 2 +- .../java-undertow-server/pom.mustache | 2 +- .../java/microprofile-rest-client/pom.xml | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-cxf-client-jackson/pom.xml | 2 +- .../.openapi-generator/VERSION | 2 +- .../client/petstore/jaxrs-cxf-client/pom.xml | 4 +- samples/server/petstore/java-undertow/pom.xml | 2 +- .../jaxrs-cxf-annotated-base-path/pom.xml | 2 +- .../petstore/jaxrs-cxf-non-spring-app/pom.xml | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-cxf-test-data/pom.xml | 2 +- .../java/org/openapitools/api/FakeApi.java | 26 ++-- .../gen/java/org/openapitools/api/PetApi.java | 16 +-- .../java/org/openapitools/api/StoreApi.java | 6 +- .../java/org/openapitools/api/UserApi.java | 14 +-- .../java/org/openapitools/model/Animal.java | 4 +- .../java/org/openapitools/model/BigCat.java | 2 + .../org/openapitools/model/BigCatAllOf.java | 2 + .../org/openapitools/model/EnumArrays.java | 2 + .../java/org/openapitools/model/EnumTest.java | 2 + .../org/openapitools/model/FormatTest.java | 1 + .../java/org/openapitools/model/MapTest.java | 2 + .../java/org/openapitools/model/Order.java | 2 + .../gen/java/org/openapitools/model/Pet.java | 2 + samples/server/petstore/jaxrs-cxf/pom.xml | 2 +- .../server/petstore/jaxrs-datelib-j8/pom.xml | 2 +- samples/server/petstore/jaxrs-jersey/pom.xml | 2 +- .../.openapi-generator/VERSION | 2 +- .../jaxrs-spec-interface-response/pom.xml | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 46 +++---- .../api/FakeClassnameTestApi.java | 5 +- .../gen/java/org/openapitools/api/PetApi.java | 42 +++---- .../java/org/openapitools/api/StoreApi.java | 9 +- .../java/org/openapitools/api/UserApi.java | 22 ++-- .../model/AdditionalPropertiesAnyType.java | 1 + .../model/AdditionalPropertiesArray.java | 1 + .../model/AdditionalPropertiesBoolean.java | 1 + .../model/AdditionalPropertiesClass.java | 41 +++++-- .../model/AdditionalPropertiesInteger.java | 1 + .../model/AdditionalPropertiesNumber.java | 1 + .../model/AdditionalPropertiesObject.java | 1 + .../model/AdditionalPropertiesString.java | 1 + .../java/org/openapitools/model/Animal.java | 9 +- .../model/ArrayOfArrayOfNumberOnly.java | 1 + .../openapitools/model/ArrayOfNumberOnly.java | 1 + .../org/openapitools/model/ArrayTest.java | 9 +- .../java/org/openapitools/model/BigCat.java | 1 + .../org/openapitools/model/BigCatAllOf.java | 1 + .../openapitools/model/Capitalization.java | 21 +++- .../gen/java/org/openapitools/model/Cat.java | 1 + .../java/org/openapitools/model/CatAllOf.java | 1 + .../java/org/openapitools/model/Category.java | 5 +- .../org/openapitools/model/ClassModel.java | 1 + .../java/org/openapitools/model/Client.java | 1 + .../gen/java/org/openapitools/model/Dog.java | 1 + .../java/org/openapitools/model/DogAllOf.java | 1 + .../org/openapitools/model/EnumArrays.java | 5 +- .../java/org/openapitools/model/EnumTest.java | 17 ++- .../model/FileSchemaTestClass.java | 5 +- .../org/openapitools/model/FormatTest.java | 53 ++++++-- .../openapitools/model/HasOnlyReadOnly.java | 5 +- .../java/org/openapitools/model/MapTest.java | 13 +- ...ropertiesAndAdditionalPropertiesClass.java | 9 +- .../openapitools/model/Model200Response.java | 5 +- .../openapitools/model/ModelApiResponse.java | 9 +- .../org/openapitools/model/ModelReturn.java | 1 + .../gen/java/org/openapitools/model/Name.java | 13 +- .../org/openapitools/model/NumberOnly.java | 1 + .../java/org/openapitools/model/Order.java | 21 +++- .../openapitools/model/OuterComposite.java | 9 +- .../gen/java/org/openapitools/model/Pet.java | 21 +++- .../org/openapitools/model/ReadOnlyFirst.java | 5 +- .../openapitools/model/SpecialModelName.java | 1 + .../gen/java/org/openapitools/model/Tag.java | 5 +- .../openapitools/model/TypeHolderDefault.java | 17 ++- .../openapitools/model/TypeHolderExample.java | 21 +++- .../gen/java/org/openapitools/model/User.java | 29 +++-- .../java/org/openapitools/model/XmlItem.java | 113 +++++++++++++----- .../src/main/openapi/openapi.yaml | 4 + .../petstore/jaxrs/jersey2-useTags/pom.xml | 2 +- samples/server/petstore/jaxrs/jersey2/pom.xml | 2 +- 88 files changed, 508 insertions(+), 233 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pom.mustache index 63321ae28bb..b43a110aed7 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pom.mustache @@ -170,7 +170,7 @@ 1.5.18 9.2.9.v20150224 4.13.1 - 1.1.7 + 1.2.0 2.5 {{#useBeanValidation}} 1.1.0.Final diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/pom.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/pom.mustache index a0e068f8ce5..e9df52a01a6 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/pom.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/pom.mustache @@ -207,7 +207,7 @@ 1.5.22 9.2.9.v20150224 4.13.1 - 1.1.7 + 1.2.0 2.5 {{#useBeanValidation}} 1.1.0.Final diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/server/pom.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/server/pom.mustache index eabc448d6b2..8cb82501d51 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/server/pom.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-ext/server/pom.mustache @@ -338,7 +338,7 @@ {{/generateSpringApplication}} {{^generateSpringBootApplication}} 4.13 - 1.1.7 + 1.2.0 {{/generateSpringBootApplication}} 3.3.0 2.9.9 diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pom.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pom.mustache index d1596f47265..493fd683cf9 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pom.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pom.mustache @@ -207,7 +207,7 @@ 1.5.18 9.2.9.v20150224 4.13.1 - 1.1.7 + 1.2.0 2.5 {{#useBeanValidation}} 1.1.0.Final diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/server/pom.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/server/pom.mustache index 9d8c6df2b59..28a678bb612 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/server/pom.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/server/pom.mustache @@ -258,7 +258,7 @@ 1.5.22 9.2.9.v20150224 4.13 - 1.1.7 + 1.2.0 2.5 {{#useBeanValidation}} 1.1.0.Final diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/pom.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/pom.mustache index 8951701707d..dc2a043addb 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/pom.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/pom.mustache @@ -218,7 +218,7 @@ 3.5 {{/supportJava6}} 4.13.1 - 1.1.7 + 1.2.0 2.5 UTF-8 diff --git a/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache b/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache index b1459f92a78..9ad7d579940 100644 --- a/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache +++ b/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache @@ -26,7 +26,7 @@ 1.10 1.2 3.1.2 - 1.1.7 + 1.2.0 4.13 2.1.0-beta.124 1.4.0.Final diff --git a/samples/client/petstore/java/microprofile-rest-client/pom.xml b/samples/client/petstore/java/microprofile-rest-client/pom.xml index 5faf0c0c062..91b6ef610f5 100644 --- a/samples/client/petstore/java/microprofile-rest-client/pom.xml +++ b/samples/client/petstore/java/microprofile-rest-client/pom.xml @@ -141,7 +141,7 @@ 1.5.18 9.2.9.v20150224 4.13.1 - 1.1.7 + 1.2.0 2.5 3.2.7 2.9.7 diff --git a/samples/client/petstore/jaxrs-cxf-client-jackson/.openapi-generator/VERSION b/samples/client/petstore/jaxrs-cxf-client-jackson/.openapi-generator/VERSION index d99e7162d01..6555596f931 100644 --- a/samples/client/petstore/jaxrs-cxf-client-jackson/.openapi-generator/VERSION +++ b/samples/client/petstore/jaxrs-cxf-client-jackson/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0-SNAPSHOT \ No newline at end of file +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/jaxrs-cxf-client-jackson/pom.xml b/samples/client/petstore/jaxrs-cxf-client-jackson/pom.xml index e2d463a2cfe..aa59537336d 100644 --- a/samples/client/petstore/jaxrs-cxf-client-jackson/pom.xml +++ b/samples/client/petstore/jaxrs-cxf-client-jackson/pom.xml @@ -171,7 +171,7 @@ 1.5.18 9.2.9.v20150224 4.13.1 - 1.1.7 + 1.2.0 2.5 3.3.0 2.9.9 diff --git a/samples/client/petstore/jaxrs-cxf-client/.openapi-generator/VERSION b/samples/client/petstore/jaxrs-cxf-client/.openapi-generator/VERSION index d99e7162d01..6555596f931 100644 --- a/samples/client/petstore/jaxrs-cxf-client/.openapi-generator/VERSION +++ b/samples/client/petstore/jaxrs-cxf-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0-SNAPSHOT \ No newline at end of file +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/jaxrs-cxf-client/pom.xml b/samples/client/petstore/jaxrs-cxf-client/pom.xml index e3f53e0f7ba..fe612296899 100644 --- a/samples/client/petstore/jaxrs-cxf-client/pom.xml +++ b/samples/client/petstore/jaxrs-cxf-client/pom.xml @@ -170,8 +170,8 @@ ${java.version} 1.5.18 9.2.9.v20150224 - 4.13 - 1.1.7 + 4.13.1 + 1.2.0 2.5 3.3.0 2.9.9 diff --git a/samples/server/petstore/java-undertow/pom.xml b/samples/server/petstore/java-undertow/pom.xml index 2382e40a66e..53ccffba47d 100644 --- a/samples/server/petstore/java-undertow/pom.xml +++ b/samples/server/petstore/java-undertow/pom.xml @@ -26,7 +26,7 @@ 1.10 1.2 3.1.2 - 1.1.7 + 1.2.0 4.13 2.1.0-beta.124 1.4.0.Final diff --git a/samples/server/petstore/jaxrs-cxf-annotated-base-path/pom.xml b/samples/server/petstore/jaxrs-cxf-annotated-base-path/pom.xml index 7a0ffeda6b4..6e3398ecdf8 100644 --- a/samples/server/petstore/jaxrs-cxf-annotated-base-path/pom.xml +++ b/samples/server/petstore/jaxrs-cxf-annotated-base-path/pom.xml @@ -200,7 +200,7 @@ 1.5.22 9.2.9.v20150224 4.13 - 1.1.7 + 1.2.0 2.5 1.1.0.Final 3.3.0 diff --git a/samples/server/petstore/jaxrs-cxf-non-spring-app/pom.xml b/samples/server/petstore/jaxrs-cxf-non-spring-app/pom.xml index b969ba62f50..cf1b6b22218 100644 --- a/samples/server/petstore/jaxrs-cxf-non-spring-app/pom.xml +++ b/samples/server/petstore/jaxrs-cxf-non-spring-app/pom.xml @@ -200,7 +200,7 @@ 1.5.22 9.2.9.v20150224 4.13 - 1.1.7 + 1.2.0 2.5 1.1.0.Final 3.3.0 diff --git a/samples/server/petstore/jaxrs-cxf-test-data/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-test-data/.openapi-generator/VERSION index d99e7162d01..6555596f931 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-test-data/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0-SNAPSHOT \ No newline at end of file +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-test-data/pom.xml b/samples/server/petstore/jaxrs-cxf-test-data/pom.xml index 649cf9d0e98..f17dde84bad 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/pom.xml +++ b/samples/server/petstore/jaxrs-cxf-test-data/pom.xml @@ -233,7 +233,7 @@ org.openapitools openapi-generator - 5.0.0-SNAPSHOT + 5.2.0-SNAPSHOT diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/FakeApi.java index 35c97ab755a..21065b6fc8b 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/FakeApi.java @@ -48,7 +48,7 @@ public interface FakeApi { @POST @Path("/create_xml_item") @Consumes({ "application/xml", "application/xml; charset=utf-8", "application/xml; charset=utf-16", "text/xml", "text/xml; charset=utf-8", "text/xml; charset=utf-16" }) - @ApiOperation(value = "creates an XmlItem", tags={ "fake", }) + @ApiOperation(value = "creates an XmlItem", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) public void createXmlItem(@Valid XmlItem xmlItem); @@ -57,7 +57,7 @@ public interface FakeApi { @Path("/outer/boolean") @Consumes({ "text/plain" }) @Produces({ "*/*" }) - @ApiOperation(value = "", tags={ "fake", }) + @ApiOperation(value = "", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output boolean", response = Boolean.class) }) public Boolean fakeOuterBooleanSerialize(@Valid Boolean body); @@ -66,7 +66,7 @@ public interface FakeApi { @Path("/outer/composite") @Consumes({ "application/json" }) @Produces({ "*/*" }) - @ApiOperation(value = "", tags={ "fake", }) + @ApiOperation(value = "", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) }) public OuterComposite fakeOuterCompositeSerialize(@Valid OuterComposite body); @@ -75,7 +75,7 @@ public interface FakeApi { @Path("/outer/number") @Consumes({ "text/plain" }) @Produces({ "*/*" }) - @ApiOperation(value = "", tags={ "fake", }) + @ApiOperation(value = "", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output number", response = BigDecimal.class) }) public BigDecimal fakeOuterNumberSerialize(@Valid BigDecimal body); @@ -84,7 +84,7 @@ public interface FakeApi { @Path("/outer/string") @Consumes({ "text/plain" }) @Produces({ "*/*" }) - @ApiOperation(value = "", tags={ "fake", }) + @ApiOperation(value = "", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output string", response = String.class) }) public String fakeOuterStringSerialize(@Valid String body); @@ -92,7 +92,7 @@ public interface FakeApi { @PUT @Path("/body-with-file-schema") @Consumes({ "application/json" }) - @ApiOperation(value = "", tags={ "fake", }) + @ApiOperation(value = "", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) public void testBodyWithFileSchema(@Valid FileSchemaTestClass body); @@ -100,7 +100,7 @@ public interface FakeApi { @PUT @Path("/body-with-query-params") @Consumes({ "application/json" }) - @ApiOperation(value = "", tags={ "fake", }) + @ApiOperation(value = "", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) public void testBodyWithQueryParams(@QueryParam("query") @NotNull String query, @Valid User body); @@ -115,7 +115,7 @@ public interface FakeApi { @Consumes({ "application/json" }) @Produces({ "application/json" }) - @ApiOperation(value = "To test \"client\" model", tags={ "fake", }) + @ApiOperation(value = "To test \"client\" model", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) public Client testClientModel(@Valid Client body); @@ -129,7 +129,7 @@ public interface FakeApi { @POST @Consumes({ "application/x-www-form-urlencoded" }) - @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트", tags={ "fake", }) + @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @ApiResponse(code = 404, message = "User not found") }) @@ -144,7 +144,7 @@ public interface FakeApi { @GET @Consumes({ "application/x-www-form-urlencoded" }) - @ApiOperation(value = "To test enum parameters", tags={ "fake", }) + @ApiOperation(value = "To test enum parameters", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid request"), @ApiResponse(code = 404, message = "Not found") }) @@ -158,7 +158,7 @@ public interface FakeApi { */ @DELETE - @ApiOperation(value = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) + @ApiOperation(value = "Fake endpoint to test group parameters (optional)", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Someting wrong") }) public void testGroupParameters(@QueryParam("required_string_group") @NotNull Integer requiredStringGroup, @HeaderParam("required_boolean_group") @NotNull Boolean requiredBooleanGroup, @QueryParam("required_int64_group") @NotNull Long requiredInt64Group, @QueryParam("string_group") Integer stringGroup, @HeaderParam("boolean_group") Boolean booleanGroup, @QueryParam("int64_group") Long int64Group); @@ -170,7 +170,7 @@ public interface FakeApi { @POST @Path("/inline-additionalProperties") @Consumes({ "application/json" }) - @ApiOperation(value = "test inline additionalProperties", tags={ "fake", }) + @ApiOperation(value = "test inline additionalProperties", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) public void testInlineAdditionalProperties(@Valid Map param); @@ -182,7 +182,7 @@ public interface FakeApi { @GET @Path("/jsonFormData") @Consumes({ "application/x-www-form-urlencoded" }) - @ApiOperation(value = "test json serialization of form data", tags={ "fake", }) + @ApiOperation(value = "test json serialization of form data", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) public void testJsonFormData(@Multipart(value = "param") String param, @Multipart(value = "param2") String param2); diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/PetApi.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/PetApi.java index 8a6246e339f..a78ab96f161 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/PetApi.java @@ -42,7 +42,7 @@ public interface PetApi { @POST @Path("/pet") @Consumes({ "application/json", "application/xml" }) - @ApiOperation(value = "Add a new pet to the store", tags={ "pet", }) + @ApiOperation(value = "Add a new pet to the store", tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation"), @ApiResponse(code = 405, message = "Invalid input") }) @@ -54,7 +54,7 @@ public interface PetApi { */ @DELETE @Path("/pet/{petId}") - @ApiOperation(value = "Deletes a pet", tags={ "pet", }) + @ApiOperation(value = "Deletes a pet", tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation"), @ApiResponse(code = 400, message = "Invalid pet value") }) @@ -69,7 +69,7 @@ public interface PetApi { @GET @Path("/pet/findByStatus") @Produces({ "application/xml", "application/json" }) - @ApiOperation(value = "Finds Pets by status", tags={ "pet", }) + @ApiOperation(value = "Finds Pets by status", tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Pet.class, responseContainer = "List"), @ApiResponse(code = 400, message = "Invalid status value") }) @@ -84,7 +84,7 @@ public interface PetApi { @GET @Path("/pet/findByTags") @Produces({ "application/xml", "application/json" }) - @ApiOperation(value = "Finds Pets by tags", tags={ "pet", }) + @ApiOperation(value = "Finds Pets by tags", tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Pet.class, responseContainer = "Set"), @ApiResponse(code = 400, message = "Invalid tag value") }) @@ -99,7 +99,7 @@ public interface PetApi { @GET @Path("/pet/{petId}") @Produces({ "application/xml", "application/json" }) - @ApiOperation(value = "Find pet by ID", tags={ "pet", }) + @ApiOperation(value = "Find pet by ID", tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Pet.class), @ApiResponse(code = 400, message = "Invalid ID supplied"), @@ -113,7 +113,7 @@ public interface PetApi { @PUT @Path("/pet") @Consumes({ "application/json", "application/xml" }) - @ApiOperation(value = "Update an existing pet", tags={ "pet", }) + @ApiOperation(value = "Update an existing pet", tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation"), @ApiResponse(code = 400, message = "Invalid ID supplied"), @@ -128,7 +128,7 @@ public interface PetApi { @POST @Path("/pet/{petId}") @Consumes({ "application/x-www-form-urlencoded" }) - @ApiOperation(value = "Updates a pet in the store with form data", tags={ "pet", }) + @ApiOperation(value = "Updates a pet in the store with form data", tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 405, message = "Invalid input") }) public void updatePetWithForm(@PathParam("petId") Long petId, @Multipart(value = "name", required = false) String name, @Multipart(value = "status", required = false) String status); @@ -141,7 +141,7 @@ public interface PetApi { @Path("/pet/{petId}/uploadImage") @Consumes({ "multipart/form-data" }) @Produces({ "application/json" }) - @ApiOperation(value = "uploads an image", tags={ "pet", }) + @ApiOperation(value = "uploads an image", tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = ModelApiResponse.class) }) public ModelApiResponse uploadFile(@PathParam("petId") Long petId, @Multipart(value = "additionalMetadata", required = false) String additionalMetadata, @Multipart(value = "file" , required = false) Attachment fileDetail); diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/StoreApi.java index f440481f152..ac0a02f63fc 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/StoreApi.java @@ -39,7 +39,7 @@ public interface StoreApi { */ @DELETE @Path("/order/{order_id}") - @ApiOperation(value = "Delete purchase order by ID", tags={ "store", }) + @ApiOperation(value = "Delete purchase order by ID", tags={ "store" }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid ID supplied"), @ApiResponse(code = 404, message = "Order not found") }) @@ -54,7 +54,7 @@ public interface StoreApi { @GET @Path("/inventory") @Produces({ "application/json" }) - @ApiOperation(value = "Returns pet inventories by status", tags={ "store", }) + @ApiOperation(value = "Returns pet inventories by status", tags={ "store" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Map.class, responseContainer = "Map") }) public Map getInventory(); @@ -68,7 +68,7 @@ public interface StoreApi { @GET @Path("/order/{order_id}") @Produces({ "application/xml", "application/json" }) - @ApiOperation(value = "Find purchase order by ID", tags={ "store", }) + @ApiOperation(value = "Find purchase order by ID", tags={ "store" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @ApiResponse(code = 400, message = "Invalid ID supplied"), diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/UserApi.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/UserApi.java index edff4962812..a90c5ac242a 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/api/UserApi.java @@ -40,7 +40,7 @@ public interface UserApi { @POST @Consumes({ "application/json" }) - @ApiOperation(value = "Create user", tags={ "user", }) + @ApiOperation(value = "Create user", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) public void createUser(@Valid User body); @@ -52,7 +52,7 @@ public interface UserApi { @POST @Path("/createWithArray") @Consumes({ "application/json" }) - @ApiOperation(value = "Creates list of users with given input array", tags={ "user", }) + @ApiOperation(value = "Creates list of users with given input array", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) public void createUsersWithArrayInput(@Valid List body); @@ -64,7 +64,7 @@ public interface UserApi { @POST @Path("/createWithList") @Consumes({ "application/json" }) - @ApiOperation(value = "Creates list of users with given input array", tags={ "user", }) + @ApiOperation(value = "Creates list of users with given input array", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) public void createUsersWithListInput(@Valid List body); @@ -77,7 +77,7 @@ public interface UserApi { */ @DELETE @Path("/{username}") - @ApiOperation(value = "Delete user", tags={ "user", }) + @ApiOperation(value = "Delete user", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied"), @ApiResponse(code = 404, message = "User not found") }) @@ -90,7 +90,7 @@ public interface UserApi { @GET @Path("/{username}") @Produces({ "application/xml", "application/json" }) - @ApiOperation(value = "Get user by user name", tags={ "user", }) + @ApiOperation(value = "Get user by user name", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @ApiResponse(code = 400, message = "Invalid username supplied"), @@ -104,7 +104,7 @@ public interface UserApi { @GET @Path("/login") @Produces({ "application/xml", "application/json" }) - @ApiOperation(value = "Logs user into the system", tags={ "user", }) + @ApiOperation(value = "Logs user into the system", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @ApiResponse(code = 400, message = "Invalid username/password supplied") }) @@ -116,7 +116,7 @@ public interface UserApi { */ @GET @Path("/logout") - @ApiOperation(value = "Logs out current logged in user session", tags={ "user", }) + @ApiOperation(value = "Logs out current logged in user session", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation") }) public void logoutUser(); diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/Animal.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/Animal.java index 196b973164a..aff505263a5 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/Animal.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/Animal.java @@ -18,9 +18,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "className", visible = true) @JsonSubTypes({ - @JsonSubTypes.Type(value = Dog.class, name = "Dog"), - @JsonSubTypes.Type(value = Cat.class, name = "Cat"), @JsonSubTypes.Type(value = BigCat.class, name = "BigCat"), + @JsonSubTypes.Type(value = Cat.class, name = "Cat"), + @JsonSubTypes.Type(value = Dog.class, name = "Dog"), }) public class Animal { diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/BigCat.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/BigCat.java index ea440f03445..11d450e49d6 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/BigCat.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/BigCat.java @@ -1,5 +1,7 @@ package org.openapitools.model; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import org.openapitools.model.BigCatAllOf; import org.openapitools.model.Cat; import javax.validation.constraints.*; diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/BigCatAllOf.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/BigCatAllOf.java index 3ca25178105..c9d95b07dd4 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/BigCatAllOf.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/BigCatAllOf.java @@ -1,5 +1,7 @@ package org.openapitools.model; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import javax.validation.constraints.*; import javax.validation.Valid; diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/EnumArrays.java index ae16f4a7bf6..0671e7b13f8 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/EnumArrays.java @@ -1,5 +1,7 @@ package org.openapitools.model; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import java.util.ArrayList; import java.util.List; import javax.validation.constraints.*; diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/EnumTest.java index acd2762872f..cee18f27aab 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/EnumTest.java @@ -1,5 +1,7 @@ package org.openapitools.model; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import org.openapitools.model.OuterEnum; import javax.validation.constraints.*; import javax.validation.Valid; diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/FormatTest.java index 9e915d8f54c..560ef7288ef 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/FormatTest.java @@ -65,6 +65,7 @@ public class FormatTest { private String password; @ApiModelProperty(value = "") + @Valid private BigDecimal bigDecimal; /** * Get integer diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/MapTest.java index c9495d9f7d4..e5af440e022 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/MapTest.java @@ -1,5 +1,7 @@ package org.openapitools.model; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/Order.java index c17b378f5b9..baf2e5252bd 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/Order.java @@ -1,5 +1,7 @@ package org.openapitools.model; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import java.util.Date; import javax.validation.constraints.*; import javax.validation.Valid; diff --git a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/Pet.java index e23e730eeff..289c50b9f4a 100644 --- a/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-cxf-test-data/src/gen/java/org/openapitools/model/Pet.java @@ -1,5 +1,7 @@ package org.openapitools.model; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; diff --git a/samples/server/petstore/jaxrs-cxf/pom.xml b/samples/server/petstore/jaxrs-cxf/pom.xml index a98a3d7b11f..9403958f983 100644 --- a/samples/server/petstore/jaxrs-cxf/pom.xml +++ b/samples/server/petstore/jaxrs-cxf/pom.xml @@ -200,7 +200,7 @@ 1.5.22 9.2.9.v20150224 4.13 - 1.1.7 + 1.2.0 2.5 1.1.0.Final 3.3.0 diff --git a/samples/server/petstore/jaxrs-datelib-j8/pom.xml b/samples/server/petstore/jaxrs-datelib-j8/pom.xml index c183185efec..56dda9ce81e 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/pom.xml +++ b/samples/server/petstore/jaxrs-datelib-j8/pom.xml @@ -186,7 +186,7 @@ 2.22.2 2.9.9 4.13.1 - 1.1.7 + 1.2.0 2.5 UTF-8 diff --git a/samples/server/petstore/jaxrs-jersey/pom.xml b/samples/server/petstore/jaxrs-jersey/pom.xml index 5087e5621c3..242055058d7 100644 --- a/samples/server/petstore/jaxrs-jersey/pom.xml +++ b/samples/server/petstore/jaxrs-jersey/pom.xml @@ -186,7 +186,7 @@ 2.22.2 2.9.9 4.13.1 - 1.1.7 + 1.2.0 2.5 UTF-8 diff --git a/samples/server/petstore/jaxrs-spec-interface-response/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-spec-interface-response/.openapi-generator/VERSION index d99e7162d01..6555596f931 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-spec-interface-response/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0-SNAPSHOT \ No newline at end of file +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-spec-interface-response/pom.xml b/samples/server/petstore/jaxrs-spec-interface-response/pom.xml index 355d55d58d6..fdf423d8275 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/pom.xml +++ b/samples/server/petstore/jaxrs-spec-interface-response/pom.xml @@ -79,6 +79,6 @@ 2.9.9 - 4.8.1 + 4.13.1 diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/AnotherFakeApi.java index 396dbd24cfe..0d7fa5cb4d0 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/AnotherFakeApi.java @@ -23,5 +23,5 @@ import javax.validation.Valid; @ApiOperation(value = "To test special tags", notes = "To test special tags and operation ID starting with number", tags={ "$another-fake?" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) - Response call123testSpecialTags(@Valid Client body); + Response call123testSpecialTags(@Valid @NotNull Client body); } diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeApi.java index 3b7b4a9af83..e7cd7f519d1 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeApi.java @@ -30,15 +30,15 @@ import javax.validation.Valid; @POST @Path("/create_xml_item") @Consumes({ "application/xml", "application/xml; charset=utf-8", "application/xml; charset=utf-16", "text/xml", "text/xml; charset=utf-8", "text/xml; charset=utf-16" }) - @ApiOperation(value = "creates an XmlItem", notes = "this route creates an XmlItem", tags={ "fake", }) + @ApiOperation(value = "creates an XmlItem", notes = "this route creates an XmlItem", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Void.class) }) - Response createXmlItem(@Valid XmlItem xmlItem); + Response createXmlItem(@Valid @NotNull XmlItem xmlItem); @POST @Path("/outer/boolean") @Produces({ "*/*" }) - @ApiOperation(value = "", notes = "Test serialization of outer boolean types", tags={ "fake", }) + @ApiOperation(value = "", notes = "Test serialization of outer boolean types", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output boolean", response = Boolean.class) }) Response fakeOuterBooleanSerialize(@Valid Boolean body); @@ -46,7 +46,7 @@ import javax.validation.Valid; @POST @Path("/outer/composite") @Produces({ "*/*" }) - @ApiOperation(value = "", notes = "Test serialization of object with outer number type", tags={ "fake", }) + @ApiOperation(value = "", notes = "Test serialization of object with outer number type", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output composite", response = OuterComposite.class) }) Response fakeOuterCompositeSerialize(@Valid OuterComposite body); @@ -54,7 +54,7 @@ import javax.validation.Valid; @POST @Path("/outer/number") @Produces({ "*/*" }) - @ApiOperation(value = "", notes = "Test serialization of outer number types", tags={ "fake", }) + @ApiOperation(value = "", notes = "Test serialization of outer number types", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output number", response = BigDecimal.class) }) Response fakeOuterNumberSerialize(@Valid BigDecimal body); @@ -62,7 +62,7 @@ import javax.validation.Valid; @POST @Path("/outer/string") @Produces({ "*/*" }) - @ApiOperation(value = "", notes = "Test serialization of outer string types", tags={ "fake", }) + @ApiOperation(value = "", notes = "Test serialization of outer string types", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Output string", response = String.class) }) Response fakeOuterStringSerialize(@Valid String body); @@ -70,32 +70,33 @@ import javax.validation.Valid; @PUT @Path("/body-with-file-schema") @Consumes({ "application/json" }) - @ApiOperation(value = "", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake", }) + @ApiOperation(value = "", notes = "For this test, the body for this request much reference a schema named `File`.", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success", response = Void.class) }) - Response testBodyWithFileSchema(@Valid FileSchemaTestClass body); + Response testBodyWithFileSchema(@Valid @NotNull FileSchemaTestClass body); @PUT @Path("/body-with-query-params") @Consumes({ "application/json" }) - @ApiOperation(value = "", notes = "", tags={ "fake", }) + @ApiOperation(value = "", notes = "", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success", response = Void.class) }) - Response testBodyWithQueryParams(@QueryParam("query") @NotNull String query,@Valid User body); + Response testBodyWithQueryParams(@QueryParam("query") @NotNull String query,@Valid @NotNull User body); @PATCH @Consumes({ "application/json" }) @Produces({ "application/json" }) - @ApiOperation(value = "To test \"client\" model", notes = "To test \"client\" model", tags={ "fake", }) + @ApiOperation(value = "To test \"client\" model", notes = "To test \"client\" model", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) - Response testClientModel(@Valid Client body); + Response testClientModel(@Valid @NotNull Client body); @POST @Consumes({ "application/x-www-form-urlencoded" }) @ApiOperation(value = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트", notes = "Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트", authorizations = { + @Authorization(value = "http_basic_test") - }, tags={ "fake", }) + }, tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied", response = Void.class), @ApiResponse(code = 404, message = "User not found", response = Void.class) }) @@ -103,14 +104,14 @@ import javax.validation.Valid; @GET @Consumes({ "application/x-www-form-urlencoded" }) - @ApiOperation(value = "To test enum parameters", notes = "To test enum parameters", tags={ "fake", }) + @ApiOperation(value = "To test enum parameters", notes = "To test enum parameters", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid request", response = Void.class), @ApiResponse(code = 404, message = "Not found", response = Void.class) }) - Response testEnumParameters(@HeaderParam("enum_header_string_array") @DefaultValue("new ArrayList()") @ApiParam("Header parameter enum test (string array)") List enumHeaderStringArray,@HeaderParam("enum_header_string") @DefaultValue("-efg") @ApiParam("Header parameter enum test (string)") String enumHeaderString,@QueryParam("enum_query_string_array") @ApiParam("Query parameter enum test (string array)") List enumQueryStringArray,@QueryParam("enum_query_string") @DefaultValue("-efg") @ApiParam("Query parameter enum test (string)") String enumQueryString,@QueryParam("enum_query_integer") @ApiParam("Query parameter enum test (double)") Integer enumQueryInteger,@QueryParam("enum_query_double") @ApiParam("Query parameter enum test (double)") Double enumQueryDouble,@FormParam(value = "enum_form_string_array") List enumFormStringArray,@FormParam(value = "enum_form_string") String enumFormString); + Response testEnumParameters(@HeaderParam("enum_header_string_array") @ApiParam("Header parameter enum test (string array)") List enumHeaderStringArray,@HeaderParam("enum_header_string") @DefaultValue("-efg") @ApiParam("Header parameter enum test (string)") String enumHeaderString,@QueryParam("enum_query_string_array") @ApiParam("Query parameter enum test (string array)") List enumQueryStringArray,@QueryParam("enum_query_string") @DefaultValue("-efg") @ApiParam("Query parameter enum test (string)") String enumQueryString,@QueryParam("enum_query_integer") @ApiParam("Query parameter enum test (double)") Integer enumQueryInteger,@QueryParam("enum_query_double") @ApiParam("Query parameter enum test (double)") Double enumQueryDouble,@FormParam(value = "enum_form_string_array") List enumFormStringArray,@FormParam(value = "enum_form_string") String enumFormString); @DELETE - @ApiOperation(value = "Fake endpoint to test group parameters (optional)", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake", }) + @ApiOperation(value = "Fake endpoint to test group parameters (optional)", notes = "Fake endpoint to test group parameters (optional)", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Someting wrong", response = Void.class) }) Response testGroupParameters(@QueryParam("required_string_group") @NotNull @ApiParam("Required String in group parameters") Integer requiredStringGroup,@HeaderParam("required_boolean_group") @NotNull @ApiParam("Required Boolean in group parameters") Boolean requiredBooleanGroup,@QueryParam("required_int64_group") @NotNull @ApiParam("Required Integer in group parameters") Long requiredInt64Group,@QueryParam("string_group") @ApiParam("String in group parameters") Integer stringGroup,@HeaderParam("boolean_group") @ApiParam("Boolean in group parameters") Boolean booleanGroup,@QueryParam("int64_group") @ApiParam("Integer in group parameters") Long int64Group); @@ -118,22 +119,22 @@ import javax.validation.Valid; @POST @Path("/inline-additionalProperties") @Consumes({ "application/json" }) - @ApiOperation(value = "test inline additionalProperties", notes = "", tags={ "fake", }) + @ApiOperation(value = "test inline additionalProperties", notes = "", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Void.class) }) - Response testInlineAdditionalProperties(@Valid Map param); + Response testInlineAdditionalProperties(@Valid @NotNull Map param); @GET @Path("/jsonFormData") @Consumes({ "application/x-www-form-urlencoded" }) - @ApiOperation(value = "test json serialization of form data", notes = "", tags={ "fake", }) + @ApiOperation(value = "test json serialization of form data", notes = "", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Void.class) }) Response testJsonFormData(@FormParam(value = "param") String param,@FormParam(value = "param2") String param2); @PUT @Path("/test-query-paramters") - @ApiOperation(value = "", notes = "To test the collection format in query parameters", tags={ "fake", }) + @ApiOperation(value = "", notes = "To test the collection format in query parameters", tags={ "fake" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "Success", response = Void.class) }) Response testQueryParameterCollectionFormat(@QueryParam("pipe") @NotNull List pipe,@QueryParam("ioutil") @NotNull List ioutil,@QueryParam("http") @NotNull List http,@QueryParam("url") @NotNull List url,@QueryParam("context") @NotNull List context); @@ -145,9 +146,8 @@ import javax.validation.Valid; @ApiOperation(value = "uploads an image (required)", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), - @AuthorizationScope(scope = "read:pets", description = "read your pets") - }) - }, tags={ "pet" }) + @AuthorizationScope(scope = "read:pets", description = "read your pets") }) + }, tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = ModelApiResponse.class) }) Response uploadFileWithRequiredFile(@PathParam("petId") @ApiParam("ID of pet to update") Long petId, @FormParam(value = "requiredFile") InputStream requiredFileInputStream,@FormParam(value = "additionalMetadata") String additionalMetadata); diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeClassnameTestApi.java index 58c51e67a78..5d1c770b70a 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/FakeClassnameTestApi.java @@ -21,9 +21,10 @@ import javax.validation.Valid; @Consumes({ "application/json" }) @Produces({ "application/json" }) @ApiOperation(value = "To test class name in snake case", notes = "To test class name in snake case", authorizations = { + @Authorization(value = "api_key_query") - }, tags={ "fake_classname_tags 123#$%^" }) + }, tags={ "fake_classname_tags 123#$%^" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Client.class) }) - Response testClassname(@Valid Client body); + Response testClassname(@Valid @NotNull Client body); } diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/PetApi.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/PetApi.java index 2154b8d1e8a..480057d9367 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/PetApi.java @@ -25,22 +25,20 @@ import javax.validation.Valid; @ApiOperation(value = "Add a new pet to the store", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), - @AuthorizationScope(scope = "read:pets", description = "read your pets") - }) - }, tags={ "pet", }) + @AuthorizationScope(scope = "read:pets", description = "read your pets") }) + }, tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Void.class), @ApiResponse(code = 405, message = "Invalid input", response = Void.class) }) - Response addPet(@Valid Pet body); + Response addPet(@Valid @NotNull Pet body); @DELETE @Path("/{petId}") @ApiOperation(value = "Deletes a pet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), - @AuthorizationScope(scope = "read:pets", description = "read your pets") - }) - }, tags={ "pet", }) + @AuthorizationScope(scope = "read:pets", description = "read your pets") }) + }, tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Void.class), @ApiResponse(code = 400, message = "Invalid pet value", response = Void.class) }) @@ -52,9 +50,8 @@ import javax.validation.Valid; @ApiOperation(value = "Finds Pets by status", notes = "Multiple status values can be provided with comma separated strings", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), - @AuthorizationScope(scope = "read:pets", description = "read your pets") - }) - }, tags={ "pet", }) + @AuthorizationScope(scope = "read:pets", description = "read your pets") }) + }, tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Pet.class, responseContainer = "List"), @ApiResponse(code = 400, message = "Invalid status value", response = Void.class, responseContainer = "List") }) @@ -66,9 +63,8 @@ import javax.validation.Valid; @ApiOperation(value = "Finds Pets by tags", notes = "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), - @AuthorizationScope(scope = "read:pets", description = "read your pets") - }) - }, tags={ "pet", }) + @AuthorizationScope(scope = "read:pets", description = "read your pets") }) + }, tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Pet.class, responseContainer = "Set"), @ApiResponse(code = 400, message = "Invalid tag value", response = Void.class, responseContainer = "Set") }) @@ -78,8 +74,9 @@ import javax.validation.Valid; @Path("/{petId}") @Produces({ "application/xml", "application/json" }) @ApiOperation(value = "Find pet by ID", notes = "Returns a single pet", authorizations = { + @Authorization(value = "api_key") - }, tags={ "pet", }) + }, tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Pet.class), @ApiResponse(code = 400, message = "Invalid ID supplied", response = Void.class), @@ -91,15 +88,14 @@ import javax.validation.Valid; @ApiOperation(value = "Update an existing pet", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), - @AuthorizationScope(scope = "read:pets", description = "read your pets") - }) - }, tags={ "pet", }) + @AuthorizationScope(scope = "read:pets", description = "read your pets") }) + }, tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Void.class), @ApiResponse(code = 400, message = "Invalid ID supplied", response = Void.class), @ApiResponse(code = 404, message = "Pet not found", response = Void.class), @ApiResponse(code = 405, message = "Validation exception", response = Void.class) }) - Response updatePet(@Valid Pet body); + Response updatePet(@Valid @NotNull Pet body); @POST @Path("/{petId}") @@ -107,9 +103,8 @@ import javax.validation.Valid; @ApiOperation(value = "Updates a pet in the store with form data", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), - @AuthorizationScope(scope = "read:pets", description = "read your pets") - }) - }, tags={ "pet", }) + @AuthorizationScope(scope = "read:pets", description = "read your pets") }) + }, tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 405, message = "Invalid input", response = Void.class) }) Response updatePetWithForm(@PathParam("petId") @ApiParam("ID of pet that needs to be updated") Long petId,@FormParam(value = "name") String name,@FormParam(value = "status") String status); @@ -121,9 +116,8 @@ import javax.validation.Valid; @ApiOperation(value = "uploads an image", notes = "", authorizations = { @Authorization(value = "petstore_auth", scopes = { @AuthorizationScope(scope = "write:pets", description = "modify pets in your account"), - @AuthorizationScope(scope = "read:pets", description = "read your pets") - }) - }, tags={ "pet" }) + @AuthorizationScope(scope = "read:pets", description = "read your pets") }) + }, tags={ "pet" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = ModelApiResponse.class) }) Response uploadFile(@PathParam("petId") @ApiParam("ID of pet to update") Long petId,@FormParam(value = "additionalMetadata") String additionalMetadata, @FormParam(value = "file") InputStream fileInputStream); diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/StoreApi.java index 01593fedfec..06a7a2967ed 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/StoreApi.java @@ -20,7 +20,7 @@ import javax.validation.Valid; @DELETE @Path("/order/{order_id}") - @ApiOperation(value = "Delete purchase order by ID", notes = "For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors", tags={ "store", }) + @ApiOperation(value = "Delete purchase order by ID", notes = "For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors", tags={ "store" }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid ID supplied", response = Void.class), @ApiResponse(code = 404, message = "Order not found", response = Void.class) }) @@ -30,8 +30,9 @@ import javax.validation.Valid; @Path("/inventory") @Produces({ "application/json" }) @ApiOperation(value = "Returns pet inventories by status", notes = "Returns a map of status codes to quantities", authorizations = { + @Authorization(value = "api_key") - }, tags={ "store", }) + }, tags={ "store" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Map.class, responseContainer = "Map") }) Response getInventory(); @@ -39,7 +40,7 @@ import javax.validation.Valid; @GET @Path("/order/{order_id}") @Produces({ "application/xml", "application/json" }) - @ApiOperation(value = "Find purchase order by ID", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", tags={ "store", }) + @ApiOperation(value = "Find purchase order by ID", notes = "For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions", tags={ "store" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @ApiResponse(code = 400, message = "Invalid ID supplied", response = Void.class), @@ -53,5 +54,5 @@ import javax.validation.Valid; @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Order.class), @ApiResponse(code = 400, message = "Invalid Order", response = Void.class) }) - Response placeOrder(@Valid Order body); + Response placeOrder(@Valid @NotNull Order body); } diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/UserApi.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/UserApi.java index 7d821837153..77ea16dbeb8 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/api/UserApi.java @@ -19,28 +19,28 @@ import javax.validation.Valid; @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaJAXRSSpecServerCodegen")public interface UserApi { @POST - @ApiOperation(value = "Create user", notes = "This can only be done by the logged in user.", tags={ "user", }) + @ApiOperation(value = "Create user", notes = "This can only be done by the logged in user.", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Void.class) }) - Response createUser(@Valid User body); + Response createUser(@Valid @NotNull User body); @POST @Path("/createWithArray") - @ApiOperation(value = "Creates list of users with given input array", notes = "", tags={ "user", }) + @ApiOperation(value = "Creates list of users with given input array", notes = "", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Void.class) }) - Response createUsersWithArrayInput(@Valid List body); + Response createUsersWithArrayInput(@Valid @NotNull List body); @POST @Path("/createWithList") - @ApiOperation(value = "Creates list of users with given input array", notes = "", tags={ "user", }) + @ApiOperation(value = "Creates list of users with given input array", notes = "", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Void.class) }) - Response createUsersWithListInput(@Valid List body); + Response createUsersWithListInput(@Valid @NotNull List body); @DELETE @Path("/{username}") - @ApiOperation(value = "Delete user", notes = "This can only be done by the logged in user.", tags={ "user", }) + @ApiOperation(value = "Delete user", notes = "This can only be done by the logged in user.", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid username supplied", response = Void.class), @ApiResponse(code = 404, message = "User not found", response = Void.class) }) @@ -49,7 +49,7 @@ import javax.validation.Valid; @GET @Path("/{username}") @Produces({ "application/xml", "application/json" }) - @ApiOperation(value = "Get user by user name", notes = "", tags={ "user", }) + @ApiOperation(value = "Get user by user name", notes = "", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = User.class), @ApiResponse(code = 400, message = "Invalid username supplied", response = Void.class), @@ -59,7 +59,7 @@ import javax.validation.Valid; @GET @Path("/login") @Produces({ "application/xml", "application/json" }) - @ApiOperation(value = "Logs user into the system", notes = "", tags={ "user", }) + @ApiOperation(value = "Logs user into the system", notes = "", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = String.class), @ApiResponse(code = 400, message = "Invalid username/password supplied", response = Void.class) }) @@ -67,7 +67,7 @@ import javax.validation.Valid; @GET @Path("/logout") - @ApiOperation(value = "Logs out current logged in user session", notes = "", tags={ "user", }) + @ApiOperation(value = "Logs out current logged in user session", notes = "", tags={ "user" }) @ApiResponses(value = { @ApiResponse(code = 200, message = "successful operation", response = Void.class) }) Response logoutUser(); @@ -78,5 +78,5 @@ import javax.validation.Valid; @ApiResponses(value = { @ApiResponse(code = 400, message = "Invalid user supplied", response = Void.class), @ApiResponse(code = 404, message = "User not found", response = Void.class) }) - Response updateUser(@PathParam("username") @ApiParam("name that need to be deleted") String username,@Valid User body); + Response updateUser(@PathParam("username") @ApiParam("name that need to be deleted") String username,@Valid @NotNull User body); } diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java index f2521988441..6b9dcfa1ac6 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java @@ -40,6 +40,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.name = name; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java index 7cc3e609972..1b504c15f4e 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java @@ -41,6 +41,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.name = name; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java index 172c5f42dad..d842728a186 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java @@ -40,6 +40,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.name = name; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java index b646cfb0b0d..ab1baad9976 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java @@ -50,7 +50,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setMapString(Map mapString) { this.mapString = mapString; - }/** + } + +/** **/ public AdditionalPropertiesClass mapNumber(Map mapNumber) { this.mapNumber = mapNumber; @@ -68,7 +70,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setMapNumber(Map mapNumber) { this.mapNumber = mapNumber; - }/** + } + +/** **/ public AdditionalPropertiesClass mapInteger(Map mapInteger) { this.mapInteger = mapInteger; @@ -86,7 +90,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setMapInteger(Map mapInteger) { this.mapInteger = mapInteger; - }/** + } + +/** **/ public AdditionalPropertiesClass mapBoolean(Map mapBoolean) { this.mapBoolean = mapBoolean; @@ -104,7 +110,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setMapBoolean(Map mapBoolean) { this.mapBoolean = mapBoolean; - }/** + } + +/** **/ public AdditionalPropertiesClass mapArrayInteger(Map> mapArrayInteger) { this.mapArrayInteger = mapArrayInteger; @@ -122,7 +130,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setMapArrayInteger(Map> mapArrayInteger) { this.mapArrayInteger = mapArrayInteger; - }/** + } + +/** **/ public AdditionalPropertiesClass mapArrayAnytype(Map> mapArrayAnytype) { this.mapArrayAnytype = mapArrayAnytype; @@ -140,7 +150,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setMapArrayAnytype(Map> mapArrayAnytype) { this.mapArrayAnytype = mapArrayAnytype; - }/** + } + +/** **/ public AdditionalPropertiesClass mapMapString(Map> mapMapString) { this.mapMapString = mapMapString; @@ -158,7 +170,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setMapMapString(Map> mapMapString) { this.mapMapString = mapMapString; - }/** + } + +/** **/ public AdditionalPropertiesClass mapMapAnytype(Map> mapMapAnytype) { this.mapMapAnytype = mapMapAnytype; @@ -176,7 +190,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setMapMapAnytype(Map> mapMapAnytype) { this.mapMapAnytype = mapMapAnytype; - }/** + } + +/** **/ public AdditionalPropertiesClass anytype1(Object anytype1) { this.anytype1 = anytype1; @@ -194,7 +210,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setAnytype1(Object anytype1) { this.anytype1 = anytype1; - }/** + } + +/** **/ public AdditionalPropertiesClass anytype2(Object anytype2) { this.anytype2 = anytype2; @@ -212,7 +230,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setAnytype2(Object anytype2) { this.anytype2 = anytype2; - }/** + } + +/** **/ public AdditionalPropertiesClass anytype3(Object anytype3) { this.anytype3 = anytype3; @@ -232,6 +252,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.anytype3 = anytype3; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java index 2c2e51fb83b..6f925720aba 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java @@ -40,6 +40,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.name = name; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java index 4735b0fd5bd..884577dcdd0 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java @@ -41,6 +41,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.name = name; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java index 05f7408f9a8..cbe4428f3e3 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java @@ -40,6 +40,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.name = name; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java index 03739679cd0..16f6a60afd1 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java @@ -40,6 +40,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.name = name; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Animal.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Animal.java index 3b0eff6127c..8ddd9ed2f8c 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Animal.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Animal.java @@ -16,9 +16,9 @@ import com.fasterxml.jackson.annotation.JsonValue; @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "className", visible = true) @JsonSubTypes({ - @JsonSubTypes.Type(value = Dog.class, name = "Dog"), - @JsonSubTypes.Type(value = Cat.class, name = "Cat"), @JsonSubTypes.Type(value = BigCat.class, name = "BigCat"), + @JsonSubTypes.Type(value = Cat.class, name = "Cat"), + @JsonSubTypes.Type(value = Dog.class, name = "Dog"), }) @@ -46,7 +46,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setClassName(String className) { this.className = className; - }/** + } + +/** **/ public Animal color(String color) { this.color = color; @@ -66,6 +68,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.color = color; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java index 77a46a2186a..9643930053c 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java @@ -41,6 +41,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.arrayArrayNumber = arrayArrayNumber; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java index 36039422cf3..2c585cdc1e8 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java @@ -41,6 +41,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.arrayNumber = arrayNumber; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayTest.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayTest.java index 374527d8ad5..edc0b7a9484 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayTest.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ArrayTest.java @@ -41,7 +41,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setArrayOfString(List arrayOfString) { this.arrayOfString = arrayOfString; - }/** + } + +/** **/ public ArrayTest arrayArrayOfInteger(List> arrayArrayOfInteger) { this.arrayArrayOfInteger = arrayArrayOfInteger; @@ -59,7 +61,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setArrayArrayOfInteger(List> arrayArrayOfInteger) { this.arrayArrayOfInteger = arrayArrayOfInteger; - }/** + } + +/** **/ public ArrayTest arrayArrayOfModel(List> arrayArrayOfModel) { this.arrayArrayOfModel = arrayArrayOfModel; @@ -79,6 +83,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.arrayArrayOfModel = arrayArrayOfModel; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCat.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCat.java index 33dff05e836..1a3ddba789b 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCat.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCat.java @@ -73,6 +73,7 @@ public enum KindEnum { this.kind = kind; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCatAllOf.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCatAllOf.java index 0b5a153a074..080e86afaca 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCatAllOf.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/BigCatAllOf.java @@ -71,6 +71,7 @@ public enum KindEnum { this.kind = kind; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Capitalization.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Capitalization.java index 27f378125da..a65c79d984e 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Capitalization.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Capitalization.java @@ -41,7 +41,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setSmallCamel(String smallCamel) { this.smallCamel = smallCamel; - }/** + } + +/** **/ public Capitalization capitalCamel(String capitalCamel) { this.capitalCamel = capitalCamel; @@ -59,7 +61,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setCapitalCamel(String capitalCamel) { this.capitalCamel = capitalCamel; - }/** + } + +/** **/ public Capitalization smallSnake(String smallSnake) { this.smallSnake = smallSnake; @@ -77,7 +81,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setSmallSnake(String smallSnake) { this.smallSnake = smallSnake; - }/** + } + +/** **/ public Capitalization capitalSnake(String capitalSnake) { this.capitalSnake = capitalSnake; @@ -95,7 +101,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setCapitalSnake(String capitalSnake) { this.capitalSnake = capitalSnake; - }/** + } + +/** **/ public Capitalization scAETHFlowPoints(String scAETHFlowPoints) { this.scAETHFlowPoints = scAETHFlowPoints; @@ -113,7 +121,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setScAETHFlowPoints(String scAETHFlowPoints) { this.scAETHFlowPoints = scAETHFlowPoints; - }/** + } + +/** * Name of the pet **/ public Capitalization ATT_NAME(String ATT_NAME) { @@ -134,6 +144,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.ATT_NAME = ATT_NAME; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Cat.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Cat.java index b0a2eacada2..4cc078e2235 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Cat.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Cat.java @@ -40,6 +40,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.declawed = declawed; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/CatAllOf.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/CatAllOf.java index f405b41e872..e56df72d3be 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/CatAllOf.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/CatAllOf.java @@ -38,6 +38,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.declawed = declawed; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Category.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Category.java index 32076613c9d..9af6f93c7c4 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Category.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Category.java @@ -37,7 +37,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setId(Long id) { this.id = id; - }/** + } + +/** **/ public Category name(String name) { this.name = name; @@ -58,6 +60,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.name = name; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ClassModel.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ClassModel.java index e3153a9f03e..f050e12bb25 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ClassModel.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ClassModel.java @@ -40,6 +40,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.propertyClass = propertyClass; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Client.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Client.java index 81a1033e052..4cdbbef940d 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Client.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Client.java @@ -38,6 +38,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.client = client; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Dog.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Dog.java index 01e256a23d0..87c3a825ba8 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Dog.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Dog.java @@ -40,6 +40,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.breed = breed; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/DogAllOf.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/DogAllOf.java index 3291b8f7c78..5496e3c8915 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/DogAllOf.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/DogAllOf.java @@ -38,6 +38,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.breed = breed; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumArrays.java index c7ceed68c70..fc7770afa09 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumArrays.java @@ -105,7 +105,9 @@ public enum ArrayEnumEnum { public void setJustSymbol(JustSymbolEnum justSymbol) { this.justSymbol = justSymbol; - }/** + } + +/** **/ public EnumArrays arrayEnum(List arrayEnum) { this.arrayEnum = arrayEnum; @@ -125,6 +127,7 @@ public enum ArrayEnumEnum { this.arrayEnum = arrayEnum; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumTest.java index d74cb2ff037..6c02f0647c9 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/EnumTest.java @@ -173,7 +173,9 @@ public enum EnumNumberEnum { public void setEnumString(EnumStringEnum enumString) { this.enumString = enumString; - }/** + } + +/** **/ public EnumTest enumStringRequired(EnumStringRequiredEnum enumStringRequired) { this.enumStringRequired = enumStringRequired; @@ -192,7 +194,9 @@ public enum EnumNumberEnum { public void setEnumStringRequired(EnumStringRequiredEnum enumStringRequired) { this.enumStringRequired = enumStringRequired; - }/** + } + +/** **/ public EnumTest enumInteger(EnumIntegerEnum enumInteger) { this.enumInteger = enumInteger; @@ -210,7 +214,9 @@ public enum EnumNumberEnum { public void setEnumInteger(EnumIntegerEnum enumInteger) { this.enumInteger = enumInteger; - }/** + } + +/** **/ public EnumTest enumNumber(EnumNumberEnum enumNumber) { this.enumNumber = enumNumber; @@ -228,7 +234,9 @@ public enum EnumNumberEnum { public void setEnumNumber(EnumNumberEnum enumNumber) { this.enumNumber = enumNumber; - }/** + } + +/** **/ public EnumTest outerEnum(OuterEnum outerEnum) { this.outerEnum = outerEnum; @@ -248,6 +256,7 @@ public enum EnumNumberEnum { this.outerEnum = outerEnum; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FileSchemaTestClass.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FileSchemaTestClass.java index 8aa815da794..b8ba37d5cdc 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FileSchemaTestClass.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FileSchemaTestClass.java @@ -39,7 +39,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setFile(java.io.File file) { this.file = file; - }/** + } + +/** **/ public FileSchemaTestClass files(List files) { this.files = files; @@ -59,6 +61,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.files = files; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FormatTest.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FormatTest.java index 70a7eed2fdd..ca11645f9ae 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FormatTest.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/FormatTest.java @@ -56,7 +56,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setInteger(Integer integer) { this.integer = integer; - }/** + } + +/** * minimum: 20 * maximum: 200 **/ @@ -76,7 +78,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setInt32(Integer int32) { this.int32 = int32; - }/** + } + +/** **/ public FormatTest int64(Long int64) { this.int64 = int64; @@ -94,7 +98,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setInt64(Long int64) { this.int64 = int64; - }/** + } + +/** * minimum: 32.1 * maximum: 543.2 **/ @@ -115,7 +121,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNumber(BigDecimal number) { this.number = number; - }/** + } + +/** * minimum: 54.3 * maximum: 987.6 **/ @@ -135,7 +143,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setFloat(Float _float) { this._float = _float; - }/** + } + +/** * minimum: 67.8 * maximum: 123.4 **/ @@ -155,7 +165,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setDouble(Double _double) { this._double = _double; - }/** + } + +/** **/ public FormatTest string(String string) { this.string = string; @@ -173,7 +185,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setString(String string) { this.string = string; - }/** + } + +/** **/ public FormatTest _byte(byte[] _byte) { this._byte = _byte; @@ -192,7 +206,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setByte(byte[] _byte) { this._byte = _byte; - }/** + } + +/** **/ public FormatTest binary(File binary) { this.binary = binary; @@ -210,7 +226,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setBinary(File binary) { this.binary = binary; - }/** + } + +/** **/ public FormatTest date(LocalDate date) { this.date = date; @@ -229,7 +247,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setDate(LocalDate date) { this.date = date; - }/** + } + +/** **/ public FormatTest dateTime(Date dateTime) { this.dateTime = dateTime; @@ -247,7 +267,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setDateTime(Date dateTime) { this.dateTime = dateTime; - }/** + } + +/** **/ public FormatTest uuid(UUID uuid) { this.uuid = uuid; @@ -265,7 +287,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setUuid(UUID uuid) { this.uuid = uuid; - }/** + } + +/** **/ public FormatTest password(String password) { this.password = password; @@ -284,7 +308,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPassword(String password) { this.password = password; - }/** + } + +/** **/ public FormatTest bigDecimal(BigDecimal bigDecimal) { this.bigDecimal = bigDecimal; @@ -304,6 +330,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.bigDecimal = bigDecimal; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java index cebb1bb512b..6438846d569 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java @@ -37,7 +37,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setBar(String bar) { this.bar = bar; - }/** + } + +/** **/ public HasOnlyReadOnly foo(String foo) { this.foo = foo; @@ -57,6 +59,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.foo = foo; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MapTest.java index be225de067d..a8eff4c21b2 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MapTest.java @@ -75,7 +75,9 @@ public enum InnerEnum { public void setMapMapOfString(Map> mapMapOfString) { this.mapMapOfString = mapMapOfString; - }/** + } + +/** **/ public MapTest mapOfEnumString(Map mapOfEnumString) { this.mapOfEnumString = mapOfEnumString; @@ -93,7 +95,9 @@ public enum InnerEnum { public void setMapOfEnumString(Map mapOfEnumString) { this.mapOfEnumString = mapOfEnumString; - }/** + } + +/** **/ public MapTest directMap(Map directMap) { this.directMap = directMap; @@ -111,7 +115,9 @@ public enum InnerEnum { public void setDirectMap(Map directMap) { this.directMap = directMap; - }/** + } + +/** **/ public MapTest indirectMap(Map indirectMap) { this.indirectMap = indirectMap; @@ -131,6 +137,7 @@ public enum InnerEnum { this.indirectMap = indirectMap; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java index 136a4fab119..aace3762eb9 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java @@ -44,7 +44,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setUuid(UUID uuid) { this.uuid = uuid; - }/** + } + +/** **/ public MixedPropertiesAndAdditionalPropertiesClass dateTime(Date dateTime) { this.dateTime = dateTime; @@ -62,7 +64,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setDateTime(Date dateTime) { this.dateTime = dateTime; - }/** + } + +/** **/ public MixedPropertiesAndAdditionalPropertiesClass map(Map map) { this.map = map; @@ -82,6 +86,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.map = map; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Model200Response.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Model200Response.java index 3a8a04baa8f..d96df1aceae 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Model200Response.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Model200Response.java @@ -39,7 +39,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setName(Integer name) { this.name = name; - }/** + } + +/** **/ public Model200Response propertyClass(String propertyClass) { this.propertyClass = propertyClass; @@ -59,6 +61,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.propertyClass = propertyClass; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelApiResponse.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelApiResponse.java index f382361e58c..952439560b5 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelApiResponse.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelApiResponse.java @@ -38,7 +38,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setCode(Integer code) { this.code = code; - }/** + } + +/** **/ public ModelApiResponse type(String type) { this.type = type; @@ -56,7 +58,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setType(String type) { this.type = type; - }/** + } + +/** **/ public ModelApiResponse message(String message) { this.message = message; @@ -76,6 +80,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.message = message; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelReturn.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelReturn.java index 30180e1f251..6d6cb5b806f 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelReturn.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ModelReturn.java @@ -40,6 +40,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this._return = _return; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Name.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Name.java index 199e9772bf0..6fd504dbe9d 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Name.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Name.java @@ -42,7 +42,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setName(Integer name) { this.name = name; - }/** + } + +/** **/ public Name snakeCase(Integer snakeCase) { this.snakeCase = snakeCase; @@ -60,7 +62,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setSnakeCase(Integer snakeCase) { this.snakeCase = snakeCase; - }/** + } + +/** **/ public Name property(String property) { this.property = property; @@ -78,7 +82,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setProperty(String property) { this.property = property; - }/** + } + +/** **/ public Name _123number(Integer _123number) { this._123number = _123number; @@ -98,6 +104,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this._123number = _123number; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/NumberOnly.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/NumberOnly.java index 6e62b0792c7..07a70cd9da5 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/NumberOnly.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/NumberOnly.java @@ -39,6 +39,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.justNumber = justNumber; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Order.java index 6a877eda5db..9929a0d5043 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Order.java @@ -75,7 +75,9 @@ public enum StatusEnum { public void setId(Long id) { this.id = id; - }/** + } + +/** **/ public Order petId(Long petId) { this.petId = petId; @@ -93,7 +95,9 @@ public enum StatusEnum { public void setPetId(Long petId) { this.petId = petId; - }/** + } + +/** **/ public Order quantity(Integer quantity) { this.quantity = quantity; @@ -111,7 +115,9 @@ public enum StatusEnum { public void setQuantity(Integer quantity) { this.quantity = quantity; - }/** + } + +/** **/ public Order shipDate(Date shipDate) { this.shipDate = shipDate; @@ -129,7 +135,9 @@ public enum StatusEnum { public void setShipDate(Date shipDate) { this.shipDate = shipDate; - }/** + } + +/** * Order Status **/ public Order status(StatusEnum status) { @@ -148,7 +156,9 @@ public enum StatusEnum { public void setStatus(StatusEnum status) { this.status = status; - }/** + } + +/** **/ public Order complete(Boolean complete) { this.complete = complete; @@ -168,6 +178,7 @@ public enum StatusEnum { this.complete = complete; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/OuterComposite.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/OuterComposite.java index 118a92239cb..6e34a0e0a80 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/OuterComposite.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/OuterComposite.java @@ -39,7 +39,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setMyNumber(BigDecimal myNumber) { this.myNumber = myNumber; - }/** + } + +/** **/ public OuterComposite myString(String myString) { this.myString = myString; @@ -57,7 +59,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setMyString(String myString) { this.myString = myString; - }/** + } + +/** **/ public OuterComposite myBoolean(Boolean myBoolean) { this.myBoolean = myBoolean; @@ -77,6 +81,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.myBoolean = myBoolean; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Pet.java index c0e131f545d..63e1d1abbd3 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Pet.java @@ -80,7 +80,9 @@ public enum StatusEnum { public void setId(Long id) { this.id = id; - }/** + } + +/** **/ public Pet category(Category category) { this.category = category; @@ -98,7 +100,9 @@ public enum StatusEnum { public void setCategory(Category category) { this.category = category; - }/** + } + +/** **/ public Pet name(String name) { this.name = name; @@ -117,7 +121,9 @@ public enum StatusEnum { public void setName(String name) { this.name = name; - }/** + } + +/** **/ public Pet photoUrls(Set photoUrls) { this.photoUrls = photoUrls; @@ -136,7 +142,9 @@ public enum StatusEnum { public void setPhotoUrls(Set photoUrls) { this.photoUrls = photoUrls; - }/** + } + +/** **/ public Pet tags(List tags) { this.tags = tags; @@ -154,7 +162,9 @@ public enum StatusEnum { public void setTags(List tags) { this.tags = tags; - }/** + } + +/** * pet status in the store **/ public Pet status(StatusEnum status) { @@ -175,6 +185,7 @@ public enum StatusEnum { this.status = status; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ReadOnlyFirst.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ReadOnlyFirst.java index 8ab6292e7f6..72efcebf52c 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ReadOnlyFirst.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/ReadOnlyFirst.java @@ -37,7 +37,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setBar(String bar) { this.bar = bar; - }/** + } + +/** **/ public ReadOnlyFirst baz(String baz) { this.baz = baz; @@ -57,6 +59,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.baz = baz; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/SpecialModelName.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/SpecialModelName.java index 61f7ae1e722..ece6b68dc3a 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/SpecialModelName.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/SpecialModelName.java @@ -38,6 +38,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.$specialPropertyName = $specialPropertyName; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Tag.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Tag.java index 5f855730981..1c7c5198894 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Tag.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/Tag.java @@ -37,7 +37,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setId(Long id) { this.id = id; - }/** + } + +/** **/ public Tag name(String name) { this.name = name; @@ -57,6 +59,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.name = name; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderDefault.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderDefault.java index 8ad93d7553d..502c22c455e 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderDefault.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderDefault.java @@ -44,7 +44,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setStringItem(String stringItem) { this.stringItem = stringItem; - }/** + } + +/** **/ public TypeHolderDefault numberItem(BigDecimal numberItem) { this.numberItem = numberItem; @@ -63,7 +65,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNumberItem(BigDecimal numberItem) { this.numberItem = numberItem; - }/** + } + +/** **/ public TypeHolderDefault integerItem(Integer integerItem) { this.integerItem = integerItem; @@ -82,7 +86,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setIntegerItem(Integer integerItem) { this.integerItem = integerItem; - }/** + } + +/** **/ public TypeHolderDefault boolItem(Boolean boolItem) { this.boolItem = boolItem; @@ -101,7 +107,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setBoolItem(Boolean boolItem) { this.boolItem = boolItem; - }/** + } + +/** **/ public TypeHolderDefault arrayItem(List arrayItem) { this.arrayItem = arrayItem; @@ -122,6 +130,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.arrayItem = arrayItem; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderExample.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderExample.java index fe7be2d28e3..fb31859dedd 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderExample.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/TypeHolderExample.java @@ -45,7 +45,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setStringItem(String stringItem) { this.stringItem = stringItem; - }/** + } + +/** **/ public TypeHolderExample numberItem(BigDecimal numberItem) { this.numberItem = numberItem; @@ -64,7 +66,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNumberItem(BigDecimal numberItem) { this.numberItem = numberItem; - }/** + } + +/** **/ public TypeHolderExample floatItem(Float floatItem) { this.floatItem = floatItem; @@ -83,7 +87,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setFloatItem(Float floatItem) { this.floatItem = floatItem; - }/** + } + +/** **/ public TypeHolderExample integerItem(Integer integerItem) { this.integerItem = integerItem; @@ -102,7 +108,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setIntegerItem(Integer integerItem) { this.integerItem = integerItem; - }/** + } + +/** **/ public TypeHolderExample boolItem(Boolean boolItem) { this.boolItem = boolItem; @@ -121,7 +129,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setBoolItem(Boolean boolItem) { this.boolItem = boolItem; - }/** + } + +/** **/ public TypeHolderExample arrayItem(List arrayItem) { this.arrayItem = arrayItem; @@ -142,6 +152,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.arrayItem = arrayItem; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/User.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/User.java index 6e82dd75fed..ad16074f63b 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/User.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/User.java @@ -43,7 +43,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setId(Long id) { this.id = id; - }/** + } + +/** **/ public User username(String username) { this.username = username; @@ -61,7 +63,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setUsername(String username) { this.username = username; - }/** + } + +/** **/ public User firstName(String firstName) { this.firstName = firstName; @@ -79,7 +83,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setFirstName(String firstName) { this.firstName = firstName; - }/** + } + +/** **/ public User lastName(String lastName) { this.lastName = lastName; @@ -97,7 +103,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setLastName(String lastName) { this.lastName = lastName; - }/** + } + +/** **/ public User email(String email) { this.email = email; @@ -115,7 +123,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setEmail(String email) { this.email = email; - }/** + } + +/** **/ public User password(String password) { this.password = password; @@ -133,7 +143,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPassword(String password) { this.password = password; - }/** + } + +/** **/ public User phone(String phone) { this.phone = phone; @@ -151,7 +163,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPhone(String phone) { this.phone = phone; - }/** + } + +/** * User Status **/ public User userStatus(Integer userStatus) { @@ -172,6 +186,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.userStatus = userStatus; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/XmlItem.java b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/XmlItem.java index 596002cf3a0..15a5d35673f 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/XmlItem.java +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/gen/java/org/openapitools/model/XmlItem.java @@ -67,7 +67,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setAttributeString(String attributeString) { this.attributeString = attributeString; - }/** + } + +/** **/ public XmlItem attributeNumber(BigDecimal attributeNumber) { this.attributeNumber = attributeNumber; @@ -85,7 +87,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setAttributeNumber(BigDecimal attributeNumber) { this.attributeNumber = attributeNumber; - }/** + } + +/** **/ public XmlItem attributeInteger(Integer attributeInteger) { this.attributeInteger = attributeInteger; @@ -103,7 +107,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setAttributeInteger(Integer attributeInteger) { this.attributeInteger = attributeInteger; - }/** + } + +/** **/ public XmlItem attributeBoolean(Boolean attributeBoolean) { this.attributeBoolean = attributeBoolean; @@ -121,7 +127,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setAttributeBoolean(Boolean attributeBoolean) { this.attributeBoolean = attributeBoolean; - }/** + } + +/** **/ public XmlItem wrappedArray(List wrappedArray) { this.wrappedArray = wrappedArray; @@ -139,7 +147,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setWrappedArray(List wrappedArray) { this.wrappedArray = wrappedArray; - }/** + } + +/** **/ public XmlItem nameString(String nameString) { this.nameString = nameString; @@ -157,7 +167,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNameString(String nameString) { this.nameString = nameString; - }/** + } + +/** **/ public XmlItem nameNumber(BigDecimal nameNumber) { this.nameNumber = nameNumber; @@ -175,7 +187,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNameNumber(BigDecimal nameNumber) { this.nameNumber = nameNumber; - }/** + } + +/** **/ public XmlItem nameInteger(Integer nameInteger) { this.nameInteger = nameInteger; @@ -193,7 +207,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNameInteger(Integer nameInteger) { this.nameInteger = nameInteger; - }/** + } + +/** **/ public XmlItem nameBoolean(Boolean nameBoolean) { this.nameBoolean = nameBoolean; @@ -211,7 +227,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNameBoolean(Boolean nameBoolean) { this.nameBoolean = nameBoolean; - }/** + } + +/** **/ public XmlItem nameArray(List nameArray) { this.nameArray = nameArray; @@ -229,7 +247,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNameArray(List nameArray) { this.nameArray = nameArray; - }/** + } + +/** **/ public XmlItem nameWrappedArray(List nameWrappedArray) { this.nameWrappedArray = nameWrappedArray; @@ -247,7 +267,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNameWrappedArray(List nameWrappedArray) { this.nameWrappedArray = nameWrappedArray; - }/** + } + +/** **/ public XmlItem prefixString(String prefixString) { this.prefixString = prefixString; @@ -265,7 +287,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPrefixString(String prefixString) { this.prefixString = prefixString; - }/** + } + +/** **/ public XmlItem prefixNumber(BigDecimal prefixNumber) { this.prefixNumber = prefixNumber; @@ -283,7 +307,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPrefixNumber(BigDecimal prefixNumber) { this.prefixNumber = prefixNumber; - }/** + } + +/** **/ public XmlItem prefixInteger(Integer prefixInteger) { this.prefixInteger = prefixInteger; @@ -301,7 +327,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPrefixInteger(Integer prefixInteger) { this.prefixInteger = prefixInteger; - }/** + } + +/** **/ public XmlItem prefixBoolean(Boolean prefixBoolean) { this.prefixBoolean = prefixBoolean; @@ -319,7 +347,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPrefixBoolean(Boolean prefixBoolean) { this.prefixBoolean = prefixBoolean; - }/** + } + +/** **/ public XmlItem prefixArray(List prefixArray) { this.prefixArray = prefixArray; @@ -337,7 +367,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPrefixArray(List prefixArray) { this.prefixArray = prefixArray; - }/** + } + +/** **/ public XmlItem prefixWrappedArray(List prefixWrappedArray) { this.prefixWrappedArray = prefixWrappedArray; @@ -355,7 +387,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPrefixWrappedArray(List prefixWrappedArray) { this.prefixWrappedArray = prefixWrappedArray; - }/** + } + +/** **/ public XmlItem namespaceString(String namespaceString) { this.namespaceString = namespaceString; @@ -373,7 +407,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNamespaceString(String namespaceString) { this.namespaceString = namespaceString; - }/** + } + +/** **/ public XmlItem namespaceNumber(BigDecimal namespaceNumber) { this.namespaceNumber = namespaceNumber; @@ -391,7 +427,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNamespaceNumber(BigDecimal namespaceNumber) { this.namespaceNumber = namespaceNumber; - }/** + } + +/** **/ public XmlItem namespaceInteger(Integer namespaceInteger) { this.namespaceInteger = namespaceInteger; @@ -409,7 +447,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNamespaceInteger(Integer namespaceInteger) { this.namespaceInteger = namespaceInteger; - }/** + } + +/** **/ public XmlItem namespaceBoolean(Boolean namespaceBoolean) { this.namespaceBoolean = namespaceBoolean; @@ -427,7 +467,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNamespaceBoolean(Boolean namespaceBoolean) { this.namespaceBoolean = namespaceBoolean; - }/** + } + +/** **/ public XmlItem namespaceArray(List namespaceArray) { this.namespaceArray = namespaceArray; @@ -445,7 +487,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNamespaceArray(List namespaceArray) { this.namespaceArray = namespaceArray; - }/** + } + +/** **/ public XmlItem namespaceWrappedArray(List namespaceWrappedArray) { this.namespaceWrappedArray = namespaceWrappedArray; @@ -463,7 +507,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setNamespaceWrappedArray(List namespaceWrappedArray) { this.namespaceWrappedArray = namespaceWrappedArray; - }/** + } + +/** **/ public XmlItem prefixNsString(String prefixNsString) { this.prefixNsString = prefixNsString; @@ -481,7 +527,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPrefixNsString(String prefixNsString) { this.prefixNsString = prefixNsString; - }/** + } + +/** **/ public XmlItem prefixNsNumber(BigDecimal prefixNsNumber) { this.prefixNsNumber = prefixNsNumber; @@ -499,7 +547,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPrefixNsNumber(BigDecimal prefixNsNumber) { this.prefixNsNumber = prefixNsNumber; - }/** + } + +/** **/ public XmlItem prefixNsInteger(Integer prefixNsInteger) { this.prefixNsInteger = prefixNsInteger; @@ -517,7 +567,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPrefixNsInteger(Integer prefixNsInteger) { this.prefixNsInteger = prefixNsInteger; - }/** + } + +/** **/ public XmlItem prefixNsBoolean(Boolean prefixNsBoolean) { this.prefixNsBoolean = prefixNsBoolean; @@ -535,7 +587,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPrefixNsBoolean(Boolean prefixNsBoolean) { this.prefixNsBoolean = prefixNsBoolean; - }/** + } + +/** **/ public XmlItem prefixNsArray(List prefixNsArray) { this.prefixNsArray = prefixNsArray; @@ -553,7 +607,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public void setPrefixNsArray(List prefixNsArray) { this.prefixNsArray = prefixNsArray; - }/** + } + +/** **/ public XmlItem prefixNsWrappedArray(List prefixNsWrappedArray) { this.prefixNsWrappedArray = prefixNsWrappedArray; @@ -573,6 +629,7 @@ import com.fasterxml.jackson.annotation.JsonValue; this.prefixNsWrappedArray = prefixNsWrappedArray; } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/samples/server/petstore/jaxrs-spec-interface-response/src/main/openapi/openapi.yaml b/samples/server/petstore/jaxrs-spec-interface-response/src/main/openapi/openapi.yaml index da95378bbc8..7d2de524fc6 100644 --- a/samples/server/petstore/jaxrs-spec-interface-response/src/main/openapi/openapi.yaml +++ b/samples/server/petstore/jaxrs-spec-interface-response/src/main/openapi/openapi.yaml @@ -2225,10 +2225,12 @@ components: properties: breed: type: string + type: object Cat_allOf: properties: declawed: type: boolean + type: object BigCat_allOf: properties: kind: @@ -2238,6 +2240,7 @@ components: - leopards - jaguars type: string + type: object securitySchemes: petstore_auth: flows: @@ -2258,3 +2261,4 @@ components: http_basic_test: scheme: basic type: http +x-original-swagger-version: "2.0" diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/pom.xml b/samples/server/petstore/jaxrs/jersey2-useTags/pom.xml index d534555f77d..68907b27d0d 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/pom.xml +++ b/samples/server/petstore/jaxrs/jersey2-useTags/pom.xml @@ -186,7 +186,7 @@ 2.22.2 2.9.9 4.13.1 - 1.1.7 + 1.2.0 2.5 UTF-8 diff --git a/samples/server/petstore/jaxrs/jersey2/pom.xml b/samples/server/petstore/jaxrs/jersey2/pom.xml index 3acc7ea707b..9f547514d92 100644 --- a/samples/server/petstore/jaxrs/jersey2/pom.xml +++ b/samples/server/petstore/jaxrs/jersey2/pom.xml @@ -186,7 +186,7 @@ 2.22.2 2.9.9 4.13.1 - 1.1.7 + 1.2.0 2.5 UTF-8 From 8d2d4ac154ee2cfb49290702d18a7f09b29565d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Jun 2021 10:06:49 +0800 Subject: [PATCH 103/192] Bump actions/download-artifact from 2.0.8 to 2.0.9 (#9458) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2.0.8 to 2.0.9. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v2.0.8...v2.0.9) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/check-supported-versions.yaml | 2 +- .github/workflows/openapi-generator.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check-supported-versions.yaml b/.github/workflows/check-supported-versions.yaml index 56992b9811e..aa6e81f29b5 100644 --- a/.github/workflows/check-supported-versions.yaml +++ b/.github/workflows/check-supported-versions.yaml @@ -81,7 +81,7 @@ jobs: - name: Check out code uses: actions/checkout@v2 - name: Download build artifact - uses: actions/download-artifact@v2.0.8 + uses: actions/download-artifact@v2.0.9 with: name: artifact - name: Run Ensures Script diff --git a/.github/workflows/openapi-generator.yaml b/.github/workflows/openapi-generator.yaml index 5bb78a6f3b0..34e3c901848 100644 --- a/.github/workflows/openapi-generator.yaml +++ b/.github/workflows/openapi-generator.yaml @@ -90,7 +90,7 @@ jobs: with: java-version: 8 - name: Download openapi-generator-cli.jar artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v2.0.9 with: name: openapi-generator-cli.jar path: modules/openapi-generator-cli/target @@ -128,7 +128,7 @@ jobs: with: java-version: 8 - name: Download openapi-generator-cli.jar artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v2.0.9 with: name: openapi-generator-cli.jar path: modules/openapi-generator-cli/target From 85e77e77fcc2c64104d40d482dcd655e07f8f686 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 9 Jun 2021 13:21:10 +0800 Subject: [PATCH 104/192] [Android] update httpclient version, fix compilation issue in the sample (#9728) * update httpclient version, fix compilation issue in the sample * add new file --- .../src/main/resources/android/build.mustache | 2 +- .../main/resources/android/jsonUtil.mustache | 2 - .../src/main/resources/android/pom.mustache | 2 +- .../httpclient/.openapi-generator/FILES | 34 +++++ .../httpclient/.openapi-generator/VERSION | 2 +- .../petstore/android/httpclient/README.md | 10 +- .../petstore/android/httpclient/build.gradle | 4 +- .../android/httpclient/docs/ApiResponse.md | 3 + .../android/httpclient/docs/Category.md | 3 + .../petstore/android/httpclient/docs/Order.md | 5 +- .../petstore/android/httpclient/docs/Pet.md | 5 +- .../android/httpclient/docs/PetApi.md | 104 +++++++++------ .../android/httpclient/docs/StoreApi.md | 52 +++++--- .../petstore/android/httpclient/docs/Tag.md | 3 + .../petstore/android/httpclient/docs/User.md | 3 + .../android/httpclient/docs/UserApi.md | 120 +++++++++++------- .../petstore/android/httpclient/git_push.sh | 14 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../petstore/android/httpclient/gradlew | 53 +++++--- .../petstore/android/httpclient/gradlew.bat | 43 ++++--- .../petstore/android/httpclient/pom.xml | 4 +- .../org/openapitools/client/ApiException.java | 2 +- .../org/openapitools/client/ApiInvoker.java | 2 +- .../org/openapitools/client/HttpPatch.java | 2 +- .../org/openapitools/client/JsonUtil.java | 1 + .../java/org/openapitools/client/Pair.java | 2 +- .../org/openapitools/client/api/PetApi.java | 26 ++-- .../org/openapitools/client/api/StoreApi.java | 14 +- .../org/openapitools/client/api/UserApi.java | 50 ++++---- .../android/volley/.openapi-generator/VERSION | 2 +- 31 files changed, 354 insertions(+), 217 deletions(-) create mode 100644 samples/client/petstore/android/httpclient/.openapi-generator/FILES diff --git a/modules/openapi-generator/src/main/resources/android/build.mustache b/modules/openapi-generator/src/main/resources/android/build.mustache index c26f9b8967d..4d465c7b9a8 100644 --- a/modules/openapi-generator/src/main/resources/android/build.mustache +++ b/modules/openapi-generator/src/main/resources/android/build.mustache @@ -89,7 +89,7 @@ android { ext { swagger_annotations_version = "1.5.0" gson_version = "2.3.1" - httpclient_version = "4.5.2" + httpclient_version = "4.5.13" httpcore_version = "4.4.4" junit_version = "4.13" } diff --git a/modules/openapi-generator/src/main/resources/android/jsonUtil.mustache b/modules/openapi-generator/src/main/resources/android/jsonUtil.mustache index 5995c0150f0..ae8d18d3731 100644 --- a/modules/openapi-generator/src/main/resources/android/jsonUtil.mustache +++ b/modules/openapi-generator/src/main/resources/android/jsonUtil.mustache @@ -5,9 +5,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.List; -{{#hasModel}} import {{modelPackage}}.*; -{{/hasModel}} public class JsonUtil { public static GsonBuilder gsonBuilder; diff --git a/modules/openapi-generator/src/main/resources/android/pom.mustache b/modules/openapi-generator/src/main/resources/android/pom.mustache index ff001f6c572..fea7ca217b0 100644 --- a/modules/openapi-generator/src/main/resources/android/pom.mustache +++ b/modules/openapi-generator/src/main/resources/android/pom.mustache @@ -176,6 +176,6 @@ 4.13.1 1.0.0 4.8.1 - 4.3.6 + 4.5.13 diff --git a/samples/client/petstore/android/httpclient/.openapi-generator/FILES b/samples/client/petstore/android/httpclient/.openapi-generator/FILES new file mode 100644 index 00000000000..9b30755ee5b --- /dev/null +++ b/samples/client/petstore/android/httpclient/.openapi-generator/FILES @@ -0,0 +1,34 @@ +.gitignore +README.md +build.gradle +docs/ApiResponse.md +docs/Category.md +docs/Order.md +docs/Pet.md +docs/PetApi.md +docs/StoreApi.md +docs/Tag.md +docs/User.md +docs/UserApi.md +git_push.sh +gradle/wrapper/gradle-wrapper.jar +gradle/wrapper/gradle-wrapper.properties +gradlew +gradlew.bat +pom.xml +settings.gradle +src/main/AndroidManifest.xml +src/main/java/org/openapitools/client/ApiException.java +src/main/java/org/openapitools/client/ApiInvoker.java +src/main/java/org/openapitools/client/HttpPatch.java +src/main/java/org/openapitools/client/JsonUtil.java +src/main/java/org/openapitools/client/Pair.java +src/main/java/org/openapitools/client/api/PetApi.java +src/main/java/org/openapitools/client/api/StoreApi.java +src/main/java/org/openapitools/client/api/UserApi.java +src/main/java/org/openapitools/client/model/ApiResponse.java +src/main/java/org/openapitools/client/model/Category.java +src/main/java/org/openapitools/client/model/Order.java +src/main/java/org/openapitools/client/model/Pet.java +src/main/java/org/openapitools/client/model/Tag.java +src/main/java/org/openapitools/client/model/User.java diff --git a/samples/client/petstore/android/httpclient/.openapi-generator/VERSION b/samples/client/petstore/android/httpclient/.openapi-generator/VERSION index afa63656064..6555596f931 100644 --- a/samples/client/petstore/android/httpclient/.openapi-generator/VERSION +++ b/samples/client/petstore/android/httpclient/.openapi-generator/VERSION @@ -1 +1 @@ -4.0.0-SNAPSHOT \ No newline at end of file +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/android/httpclient/README.md b/samples/client/petstore/android/httpclient/README.md index 309ba5d7811..325ce22b90c 100644 --- a/samples/client/petstore/android/httpclient/README.md +++ b/samples/client/petstore/android/httpclient/README.md @@ -49,8 +49,8 @@ At first generate the JAR by executing: Then manually install the following JARs: -* target/openapi-android-client-1.0.0.jar -* target/lib/*.jar +- target/openapi-android-client-1.0.0.jar +- target/lib/*.jar ## Getting Started @@ -64,9 +64,9 @@ public class PetApiExample { public static void main(String[] args) { PetApi apiInstance = new PetApi(); - Pet pet = new Pet(); // Pet | Pet object that needs to be added to the store + Pet body = new Pet(); // Pet | Pet object that needs to be added to the store try { - apiInstance.addPet(pet); + apiInstance.addPet(body); } catch (ApiException e) { System.err.println("Exception when calling PetApi#addPet"); e.printStackTrace(); @@ -120,11 +120,13 @@ Authentication schemes defined for the API: ### api_key - **Type**: API key + - **API key parameter name**: api_key - **Location**: HTTP header ### petstore_auth + - **Type**: OAuth - **Flow**: implicit - **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog diff --git a/samples/client/petstore/android/httpclient/build.gradle b/samples/client/petstore/android/httpclient/build.gradle index 6be898ef01d..5f4c815d2ed 100644 --- a/samples/client/petstore/android/httpclient/build.gradle +++ b/samples/client/petstore/android/httpclient/build.gradle @@ -3,7 +3,7 @@ project.version = '1.0.0' buildscript { repositories { - mavenCentral() + maven { url "https://repo1.maven.org/maven2" } jcenter() } dependencies { @@ -51,7 +51,7 @@ android { ext { swagger_annotations_version = "1.5.0" gson_version = "2.3.1" - httpclient_version = "4.5.2" + httpclient_version = "4.5.13" httpcore_version = "4.4.4" junit_version = "4.13" } diff --git a/samples/client/petstore/android/httpclient/docs/ApiResponse.md b/samples/client/petstore/android/httpclient/docs/ApiResponse.md index 1c17767c2b7..a169bf232e1 100644 --- a/samples/client/petstore/android/httpclient/docs/ApiResponse.md +++ b/samples/client/petstore/android/httpclient/docs/ApiResponse.md @@ -1,7 +1,9 @@ + # ApiResponse ## Properties + Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **code** | **Integer** | | [optional] @@ -10,3 +12,4 @@ Name | Type | Description | Notes + diff --git a/samples/client/petstore/android/httpclient/docs/Category.md b/samples/client/petstore/android/httpclient/docs/Category.md index e2df0803278..53c9fedc8bc 100644 --- a/samples/client/petstore/android/httpclient/docs/Category.md +++ b/samples/client/petstore/android/httpclient/docs/Category.md @@ -1,7 +1,9 @@ + # Category ## Properties + Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **Long** | | [optional] @@ -9,3 +11,4 @@ Name | Type | Description | Notes + diff --git a/samples/client/petstore/android/httpclient/docs/Order.md b/samples/client/petstore/android/httpclient/docs/Order.md index 5746ce97fad..f49e8704e08 100644 --- a/samples/client/petstore/android/httpclient/docs/Order.md +++ b/samples/client/petstore/android/httpclient/docs/Order.md @@ -1,7 +1,9 @@ + # Order ## Properties + Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **Long** | | [optional] @@ -12,10 +14,11 @@ Name | Type | Description | Notes **complete** | **Boolean** | | [optional] - ## Enum: StatusEnum + Name | Value ---- | ----- + diff --git a/samples/client/petstore/android/httpclient/docs/Pet.md b/samples/client/petstore/android/httpclient/docs/Pet.md index a4daa24feb6..72e3338dfb8 100644 --- a/samples/client/petstore/android/httpclient/docs/Pet.md +++ b/samples/client/petstore/android/httpclient/docs/Pet.md @@ -1,7 +1,9 @@ + # Pet ## Properties + Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **Long** | | [optional] @@ -12,10 +14,11 @@ Name | Type | Description | Notes **status** | [**StatusEnum**](#StatusEnum) | pet status in the store | [optional] - ## Enum: StatusEnum + Name | Value ---- | ----- + diff --git a/samples/client/petstore/android/httpclient/docs/PetApi.md b/samples/client/petstore/android/httpclient/docs/PetApi.md index 7cf076f29c5..4f91f08bc47 100644 --- a/samples/client/petstore/android/httpclient/docs/PetApi.md +++ b/samples/client/petstore/android/httpclient/docs/PetApi.md @@ -14,21 +14,23 @@ Method | HTTP request | Description [**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image - -# **addPet** -> addPet(pet) + +## addPet + +> addPet(body) Add a new pet to the store ### Example + ```java // Import classes: //import org.openapitools.client.api.PetApi; PetApi apiInstance = new PetApi(); -Pet pet = new Pet(); // Pet | Pet object that needs to be added to the store +Pet body = new Pet(); // Pet | Pet object that needs to be added to the store try { - apiInstance.addPet(pet); + apiInstance.addPet(body); } catch (ApiException e) { System.err.println("Exception when calling PetApi#addPet"); e.printStackTrace(); @@ -37,9 +39,10 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -51,16 +54,18 @@ null (empty response body) ### HTTP request headers - - **Content-Type**: application/json, application/xml - - **Accept**: Not defined +- **Content-Type**: application/json, application/xml +- **Accept**: Not defined + + +## deletePet - -# **deletePet** > deletePet(petId, apiKey) Deletes a pet ### Example + ```java // Import classes: //import org.openapitools.client.api.PetApi; @@ -78,6 +83,7 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **petId** | **Long**| Pet id to delete | [default to null] @@ -93,11 +99,12 @@ null (empty response body) ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: Not defined +- **Content-Type**: Not defined +- **Accept**: Not defined + + +## findPetsByStatus - -# **findPetsByStatus** > List<Pet> findPetsByStatus(status) Finds Pets by status @@ -105,6 +112,7 @@ Finds Pets by status Multiple status values can be provided with comma separated strings ### Example + ```java // Import classes: //import org.openapitools.client.api.PetApi; @@ -122,6 +130,7 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **status** | [**List<String>**](String.md)| Status values that need to be considered for filter | [default to null] [enum: available, pending, sold] @@ -136,11 +145,12 @@ Name | Type | Description | Notes ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json +- **Content-Type**: Not defined +- **Accept**: application/xml, application/json + + +## findPetsByTags - -# **findPetsByTags** > List<Pet> findPetsByTags(tags) Finds Pets by tags @@ -148,6 +158,7 @@ Finds Pets by tags Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. ### Example + ```java // Import classes: //import org.openapitools.client.api.PetApi; @@ -165,6 +176,7 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **tags** | [**List<String>**](String.md)| Tags to filter by | [default to null] @@ -179,11 +191,12 @@ Name | Type | Description | Notes ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json +- **Content-Type**: Not defined +- **Accept**: application/xml, application/json + + +## getPetById - -# **getPetById** > Pet getPetById(petId) Find pet by ID @@ -191,6 +204,7 @@ Find pet by ID Returns a single pet ### Example + ```java // Import classes: //import org.openapitools.client.api.PetApi; @@ -208,6 +222,7 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **petId** | **Long**| ID of pet to return | [default to null] @@ -222,24 +237,26 @@ Name | Type | Description | Notes ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json +- **Content-Type**: Not defined +- **Accept**: application/xml, application/json - -# **updatePet** -> updatePet(pet) + +## updatePet + +> updatePet(body) Update an existing pet ### Example + ```java // Import classes: //import org.openapitools.client.api.PetApi; PetApi apiInstance = new PetApi(); -Pet pet = new Pet(); // Pet | Pet object that needs to be added to the store +Pet body = new Pet(); // Pet | Pet object that needs to be added to the store try { - apiInstance.updatePet(pet); + apiInstance.updatePet(body); } catch (ApiException e) { System.err.println("Exception when calling PetApi#updatePet"); e.printStackTrace(); @@ -248,9 +265,10 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -262,16 +280,18 @@ null (empty response body) ### HTTP request headers - - **Content-Type**: application/json, application/xml - - **Accept**: Not defined +- **Content-Type**: application/json, application/xml +- **Accept**: Not defined + + +## updatePetWithForm - -# **updatePetWithForm** > updatePetWithForm(petId, name, status) Updates a pet in the store with form data ### Example + ```java // Import classes: //import org.openapitools.client.api.PetApi; @@ -290,6 +310,7 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **petId** | **Long**| ID of pet that needs to be updated | [default to null] @@ -306,16 +327,18 @@ null (empty response body) ### HTTP request headers - - **Content-Type**: application/x-www-form-urlencoded - - **Accept**: Not defined +- **Content-Type**: application/x-www-form-urlencoded +- **Accept**: Not defined + + +## uploadFile - -# **uploadFile** > ApiResponse uploadFile(petId, additionalMetadata, file) uploads an image ### Example + ```java // Import classes: //import org.openapitools.client.api.PetApi; @@ -335,6 +358,7 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **petId** | **Long**| ID of pet to update | [default to null] @@ -351,6 +375,6 @@ Name | Type | Description | Notes ### HTTP request headers - - **Content-Type**: multipart/form-data - - **Accept**: application/json +- **Content-Type**: multipart/form-data +- **Accept**: application/json diff --git a/samples/client/petstore/android/httpclient/docs/StoreApi.md b/samples/client/petstore/android/httpclient/docs/StoreApi.md index b768ad5ba98..d2229bfd71f 100644 --- a/samples/client/petstore/android/httpclient/docs/StoreApi.md +++ b/samples/client/petstore/android/httpclient/docs/StoreApi.md @@ -10,8 +10,9 @@ Method | HTTP request | Description [**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet - -# **deleteOrder** + +## deleteOrder + > deleteOrder(orderId) Delete purchase order by ID @@ -19,6 +20,7 @@ Delete purchase order by ID For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors ### Example + ```java // Import classes: //import org.openapitools.client.api.StoreApi; @@ -35,6 +37,7 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **orderId** | **String**| ID of the order that needs to be deleted | [default to null] @@ -49,11 +52,12 @@ No authorization required ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: Not defined +- **Content-Type**: Not defined +- **Accept**: Not defined + + +## getInventory - -# **getInventory** > Map<String, Integer> getInventory() Returns pet inventories by status @@ -61,6 +65,7 @@ Returns pet inventories by status Returns a map of status codes to quantities ### Example + ```java // Import classes: //import org.openapitools.client.api.StoreApi; @@ -76,6 +81,7 @@ try { ``` ### Parameters + This endpoint does not need any parameter. ### Return type @@ -88,11 +94,12 @@ This endpoint does not need any parameter. ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: application/json +- **Content-Type**: Not defined +- **Accept**: application/json + + +## getOrderById - -# **getOrderById** > Order getOrderById(orderId) Find purchase order by ID @@ -100,6 +107,7 @@ Find purchase order by ID For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions ### Example + ```java // Import classes: //import org.openapitools.client.api.StoreApi; @@ -117,6 +125,7 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **orderId** | **Long**| ID of pet that needs to be fetched | [default to null] @@ -131,24 +140,26 @@ No authorization required ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json +- **Content-Type**: Not defined +- **Accept**: application/xml, application/json - -# **placeOrder** -> Order placeOrder(order) + +## placeOrder + +> Order placeOrder(body) Place an order for a pet ### Example + ```java // Import classes: //import org.openapitools.client.api.StoreApi; StoreApi apiInstance = new StoreApi(); -Order order = new Order(); // Order | order placed for purchasing the pet +Order body = new Order(); // Order | order placed for purchasing the pet try { - Order result = apiInstance.placeOrder(order); + Order result = apiInstance.placeOrder(body); System.out.println(result); } catch (ApiException e) { System.err.println("Exception when calling StoreApi#placeOrder"); @@ -158,9 +169,10 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **order** | [**Order**](Order.md)| order placed for purchasing the pet | + **body** | [**Order**](Order.md)| order placed for purchasing the pet | ### Return type @@ -172,6 +184,6 @@ No authorization required ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json +- **Content-Type**: Not defined +- **Accept**: application/xml, application/json diff --git a/samples/client/petstore/android/httpclient/docs/Tag.md b/samples/client/petstore/android/httpclient/docs/Tag.md index de6814b55d5..b540cab453f 100644 --- a/samples/client/petstore/android/httpclient/docs/Tag.md +++ b/samples/client/petstore/android/httpclient/docs/Tag.md @@ -1,7 +1,9 @@ + # Tag ## Properties + Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **Long** | | [optional] @@ -9,3 +11,4 @@ Name | Type | Description | Notes + diff --git a/samples/client/petstore/android/httpclient/docs/User.md b/samples/client/petstore/android/httpclient/docs/User.md index 8b6753dd284..5e51c05150c 100644 --- a/samples/client/petstore/android/httpclient/docs/User.md +++ b/samples/client/petstore/android/httpclient/docs/User.md @@ -1,7 +1,9 @@ + # User ## Properties + Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **Long** | | [optional] @@ -15,3 +17,4 @@ Name | Type | Description | Notes + diff --git a/samples/client/petstore/android/httpclient/docs/UserApi.md b/samples/client/petstore/android/httpclient/docs/UserApi.md index e5a16428112..4c54ee4c77c 100644 --- a/samples/client/petstore/android/httpclient/docs/UserApi.md +++ b/samples/client/petstore/android/httpclient/docs/UserApi.md @@ -14,23 +14,25 @@ Method | HTTP request | Description [**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user - -# **createUser** -> createUser(user) + +## createUser + +> createUser(body) Create user This can only be done by the logged in user. ### Example + ```java // Import classes: //import org.openapitools.client.api.UserApi; UserApi apiInstance = new UserApi(); -User user = new User(); // User | Created user object +User body = new User(); // User | Created user object try { - apiInstance.createUser(user); + apiInstance.createUser(body); } catch (ApiException e) { System.err.println("Exception when calling UserApi#createUser"); e.printStackTrace(); @@ -39,9 +41,10 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **user** | [**User**](User.md)| Created user object | + **body** | [**User**](User.md)| Created user object | ### Return type @@ -53,24 +56,26 @@ No authorization required ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: Not defined +- **Content-Type**: Not defined +- **Accept**: Not defined - -# **createUsersWithArrayInput** -> createUsersWithArrayInput(user) + +## createUsersWithArrayInput + +> createUsersWithArrayInput(body) Creates list of users with given input array ### Example + ```java // Import classes: //import org.openapitools.client.api.UserApi; UserApi apiInstance = new UserApi(); -List user = Arrays.asList(new List()); // List | List of user object +List body = Arrays.asList(new User()); // List | List of user object try { - apiInstance.createUsersWithArrayInput(user); + apiInstance.createUsersWithArrayInput(body); } catch (ApiException e) { System.err.println("Exception when calling UserApi#createUsersWithArrayInput"); e.printStackTrace(); @@ -79,9 +84,10 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **user** | [**List<User>**](List.md)| List of user object | + **body** | [**List<User>**](User.md)| List of user object | ### Return type @@ -93,24 +99,26 @@ No authorization required ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: Not defined +- **Content-Type**: Not defined +- **Accept**: Not defined - -# **createUsersWithListInput** -> createUsersWithListInput(user) + +## createUsersWithListInput + +> createUsersWithListInput(body) Creates list of users with given input array ### Example + ```java // Import classes: //import org.openapitools.client.api.UserApi; UserApi apiInstance = new UserApi(); -List user = Arrays.asList(new List()); // List | List of user object +List body = Arrays.asList(new User()); // List | List of user object try { - apiInstance.createUsersWithListInput(user); + apiInstance.createUsersWithListInput(body); } catch (ApiException e) { System.err.println("Exception when calling UserApi#createUsersWithListInput"); e.printStackTrace(); @@ -119,9 +127,10 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **user** | [**List<User>**](List.md)| List of user object | + **body** | [**List<User>**](User.md)| List of user object | ### Return type @@ -133,11 +142,12 @@ No authorization required ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: Not defined +- **Content-Type**: Not defined +- **Accept**: Not defined + + +## deleteUser - -# **deleteUser** > deleteUser(username) Delete user @@ -145,6 +155,7 @@ Delete user This can only be done by the logged in user. ### Example + ```java // Import classes: //import org.openapitools.client.api.UserApi; @@ -161,6 +172,7 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **username** | **String**| The name that needs to be deleted | [default to null] @@ -175,16 +187,18 @@ No authorization required ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: Not defined +- **Content-Type**: Not defined +- **Accept**: Not defined + + +## getUserByName - -# **getUserByName** > User getUserByName(username) Get user by user name ### Example + ```java // Import classes: //import org.openapitools.client.api.UserApi; @@ -202,6 +216,7 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **username** | **String**| The name that needs to be fetched. Use user1 for testing. | [default to null] @@ -216,16 +231,18 @@ No authorization required ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json +- **Content-Type**: Not defined +- **Accept**: application/xml, application/json + + +## loginUser - -# **loginUser** > String loginUser(username, password) Logs user into the system ### Example + ```java // Import classes: //import org.openapitools.client.api.UserApi; @@ -244,6 +261,7 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **username** | **String**| The user name for login | [default to null] @@ -259,16 +277,18 @@ No authorization required ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json +- **Content-Type**: Not defined +- **Accept**: application/xml, application/json + + +## logoutUser - -# **logoutUser** > logoutUser() Logs out current logged in user session ### Example + ```java // Import classes: //import org.openapitools.client.api.UserApi; @@ -283,6 +303,7 @@ try { ``` ### Parameters + This endpoint does not need any parameter. ### Return type @@ -295,27 +316,29 @@ No authorization required ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: Not defined +- **Content-Type**: Not defined +- **Accept**: Not defined - -# **updateUser** -> updateUser(username, user) + +## updateUser + +> updateUser(username, body) Updated user This can only be done by the logged in user. ### Example + ```java // Import classes: //import org.openapitools.client.api.UserApi; UserApi apiInstance = new UserApi(); String username = null; // String | name that need to be deleted -User user = new User(); // User | Updated user object +User body = new User(); // User | Updated user object try { - apiInstance.updateUser(username, user); + apiInstance.updateUser(username, body); } catch (ApiException e) { System.err.println("Exception when calling UserApi#updateUser"); e.printStackTrace(); @@ -324,10 +347,11 @@ try { ### Parameters + Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **username** | **String**| name that need to be deleted | [default to null] - **user** | [**User**](User.md)| Updated user object | + **body** | [**User**](User.md)| Updated user object | ### Return type @@ -339,6 +363,6 @@ No authorization required ### HTTP request headers - - **Content-Type**: Not defined - - **Accept**: Not defined +- **Content-Type**: Not defined +- **Accept**: Not defined diff --git a/samples/client/petstore/android/httpclient/git_push.sh b/samples/client/petstore/android/httpclient/git_push.sh index 20057f67ade..ced3be2b0c7 100644 --- a/samples/client/petstore/android/httpclient/git_push.sh +++ b/samples/client/petstore/android/httpclient/git_push.sh @@ -1,11 +1,17 @@ #!/bin/sh # ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ # -# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" +# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" git_user_id=$1 git_repo_id=$2 release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi if [ "$git_user_id" = "" ]; then git_user_id="GIT_USER_ID" @@ -37,9 +43,9 @@ if [ "$git_remote" = "" ]; then # git remote not defined if [ "$GIT_TOKEN" = "" ]; then echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." - git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git else - git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git + git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git fi fi @@ -47,6 +53,6 @@ fi git pull origin master # Pushes (Forces) the changes in the local repository up to the remote repository -echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git" +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" git push origin master 2>&1 | grep -v 'To https' diff --git a/samples/client/petstore/android/httpclient/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/android/httpclient/gradle/wrapper/gradle-wrapper.jar index 87b738cbd051603d91cc39de6cb000dd98fe6b02..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f 100644 GIT binary patch delta 26193 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

    $|c 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∨fd|u2@Kuk2 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 F_djzcFxCJ7 diff --git a/samples/client/petstore/android/httpclient/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/android/httpclient/gradle/wrapper/gradle-wrapper.properties index e496c054f69..4d9ca164914 100644 --- a/samples/client/petstore/android/httpclient/gradle/wrapper/gradle-wrapper.properties +++ b/samples/client/petstore/android/httpclient/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/samples/client/petstore/android/httpclient/gradlew b/samples/client/petstore/android/httpclient/gradlew index af6708ff229..4f906e0c811 100755 --- a/samples/client/petstore/android/httpclient/gradlew +++ b/samples/client/petstore/android/httpclient/gradlew @@ -1,5 +1,21 @@ #!/usr/bin/env sh +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + ############################################################################## ## ## Gradle start up script for UN*X @@ -28,7 +44,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -66,6 +82,7 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -109,10 +126,11 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath @@ -138,19 +156,19 @@ if $cygwin ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi @@ -159,14 +177,9 @@ save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=$(save "$@") +APP_ARGS=`save "$@"` # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - exec "$JAVACMD" "$@" diff --git a/samples/client/petstore/android/httpclient/gradlew.bat b/samples/client/petstore/android/httpclient/gradlew.bat index f9553162f12..107acd32c4e 100644 --- a/samples/client/petstore/android/httpclient/gradlew.bat +++ b/samples/client/petstore/android/httpclient/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/samples/client/petstore/android/httpclient/pom.xml b/samples/client/petstore/android/httpclient/pom.xml index 455f6be5ff8..9335f3e0504 100644 --- a/samples/client/petstore/android/httpclient/pom.xml +++ b/samples/client/petstore/android/httpclient/pom.xml @@ -173,9 +173,9 @@ UTF-8 1.5.18 2.3.1 - 4.8.1 + 4.13.1 1.0.0 4.8.1 - 4.3.6 + 4.5.13 diff --git a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/ApiException.java b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/ApiException.java index 7e9a6ef4d56..2e0db8b1bf7 100644 --- a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/ApiException.java +++ b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/ApiException.java @@ -2,7 +2,7 @@ * 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. * - * OpenAPI spec version: 1.0.0 + * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/ApiInvoker.java b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/ApiInvoker.java index 18403b1972c..fd1eba49be8 100644 --- a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/ApiInvoker.java +++ b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/ApiInvoker.java @@ -2,7 +2,7 @@ * 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. * - * OpenAPI spec version: 1.0.0 + * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/HttpPatch.java b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/HttpPatch.java index 33fd7b63bd2..5f6c62e79d8 100644 --- a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/HttpPatch.java +++ b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/HttpPatch.java @@ -2,7 +2,7 @@ * 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. * - * OpenAPI spec version: 1.0.0 + * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/JsonUtil.java b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/JsonUtil.java index 624c820ebce..b603422c4e3 100644 --- a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/JsonUtil.java +++ b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/JsonUtil.java @@ -5,6 +5,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.List; +import org.openapitools.client.model.*; public class JsonUtil { public static GsonBuilder gsonBuilder; diff --git a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/Pair.java b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/Pair.java index 21a436455a1..06288352310 100644 --- a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/Pair.java +++ b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/Pair.java @@ -2,7 +2,7 @@ * 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. * - * OpenAPI spec version: 1.0.0 + * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/api/PetApi.java b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/api/PetApi.java index 10e4466ae0b..361994a058f 100644 --- a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/api/PetApi.java +++ b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/api/PetApi.java @@ -2,7 +2,7 @@ * 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. * - * OpenAPI spec version: 1.0.0 + * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -53,14 +53,14 @@ public class PetApi { /** * Add a new pet to the store * - * @param pet Pet object that needs to be added to the store + * @param body Pet object that needs to be added to the store * @return void */ - public void addPet (Pet pet) throws ApiException { - Object localVarPostBody = pet; - // verify the required parameter 'pet' is set - if (pet == null) { - throw new ApiException(400, "Missing the required parameter 'pet' when calling addPet"); + public void addPet (Pet body) throws ApiException { + Object localVarPostBody = body; + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException(400, "Missing the required parameter 'body' when calling addPet"); } // create path and map variables @@ -317,14 +317,14 @@ public class PetApi { /** * Update an existing pet * - * @param pet Pet object that needs to be added to the store + * @param body Pet object that needs to be added to the store * @return void */ - public void updatePet (Pet pet) throws ApiException { - Object localVarPostBody = pet; - // verify the required parameter 'pet' is set - if (pet == null) { - throw new ApiException(400, "Missing the required parameter 'pet' when calling updatePet"); + public void updatePet (Pet body) throws ApiException { + Object localVarPostBody = body; + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException(400, "Missing the required parameter 'body' when calling updatePet"); } // create path and map variables diff --git a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/api/StoreApi.java index 91dadd5646d..17ad5b2c084 100644 --- a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/api/StoreApi.java +++ b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/api/StoreApi.java @@ -2,7 +2,7 @@ * 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. * - * OpenAPI spec version: 1.0.0 + * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -203,14 +203,14 @@ public class StoreApi { /** * Place an order for a pet * - * @param order order placed for purchasing the pet + * @param body order placed for purchasing the pet * @return Order */ - public Order placeOrder (Order order) throws ApiException { - Object localVarPostBody = order; - // verify the required parameter 'order' is set - if (order == null) { - throw new ApiException(400, "Missing the required parameter 'order' when calling placeOrder"); + public Order placeOrder (Order body) throws ApiException { + Object localVarPostBody = body; + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException(400, "Missing the required parameter 'body' when calling placeOrder"); } // create path and map variables diff --git a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/api/UserApi.java b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/api/UserApi.java index 6189aff41a3..c6a854dec57 100644 --- a/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/api/UserApi.java +++ b/samples/client/petstore/android/httpclient/src/main/java/org/openapitools/client/api/UserApi.java @@ -2,7 +2,7 @@ * 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. * - * OpenAPI spec version: 1.0.0 + * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -52,14 +52,14 @@ public class UserApi { /** * Create user * This can only be done by the logged in user. - * @param user Created user object + * @param body Created user object * @return void */ - public void createUser (User user) throws ApiException { - Object localVarPostBody = user; - // verify the required parameter 'user' is set - if (user == null) { - throw new ApiException(400, "Missing the required parameter 'user' when calling createUser"); + public void createUser (User body) throws ApiException { + Object localVarPostBody = body; + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException(400, "Missing the required parameter 'body' when calling createUser"); } // create path and map variables @@ -104,14 +104,14 @@ public class UserApi { /** * Creates list of users with given input array * - * @param user List of user object + * @param body List of user object * @return void */ - public void createUsersWithArrayInput (List user) throws ApiException { - Object localVarPostBody = user; - // verify the required parameter 'user' is set - if (user == null) { - throw new ApiException(400, "Missing the required parameter 'user' when calling createUsersWithArrayInput"); + public void createUsersWithArrayInput (List body) throws ApiException { + Object localVarPostBody = body; + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException(400, "Missing the required parameter 'body' when calling createUsersWithArrayInput"); } // create path and map variables @@ -156,14 +156,14 @@ public class UserApi { /** * Creates list of users with given input array * - * @param user List of user object + * @param body List of user object * @return void */ - public void createUsersWithListInput (List user) throws ApiException { - Object localVarPostBody = user; - // verify the required parameter 'user' is set - if (user == null) { - throw new ApiException(400, "Missing the required parameter 'user' when calling createUsersWithListInput"); + public void createUsersWithListInput (List body) throws ApiException { + Object localVarPostBody = body; + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException(400, "Missing the required parameter 'body' when calling createUsersWithListInput"); } // create path and map variables @@ -419,18 +419,18 @@ public class UserApi { * Updated user * This can only be done by the logged in user. * @param username name that need to be deleted - * @param user Updated user object + * @param body Updated user object * @return void */ - public void updateUser (String username, User user) throws ApiException { - Object localVarPostBody = user; + public void updateUser (String username, User body) throws ApiException { + Object localVarPostBody = body; // verify the required parameter 'username' is set if (username == null) { throw new ApiException(400, "Missing the required parameter 'username' when calling updateUser"); } - // verify the required parameter 'user' is set - if (user == null) { - throw new ApiException(400, "Missing the required parameter 'user' when calling updateUser"); + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException(400, "Missing the required parameter 'body' when calling updateUser"); } // create path and map variables diff --git a/samples/client/petstore/android/volley/.openapi-generator/VERSION b/samples/client/petstore/android/volley/.openapi-generator/VERSION index c30f0ec2be7..6555596f931 100644 --- a/samples/client/petstore/android/volley/.openapi-generator/VERSION +++ b/samples/client/petstore/android/volley/.openapi-generator/VERSION @@ -1 +1 @@ -5.1.0-SNAPSHOT \ No newline at end of file +5.2.0-SNAPSHOT \ No newline at end of file From d33660453aa9f9ee5d55b40c1abfa763709f3613 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 9 Jun 2021 14:12:08 +0800 Subject: [PATCH 105/192] Add a link to flutter blog post (#9730) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f02a8ada352..cb8d1116714 100644 --- a/README.md +++ b/README.md @@ -815,6 +815,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2021-04-19 - [Introducing Twilio’s OpenAPI Specification Beta](https://www.twilio.com/blog/introducing-twilio-open-api-specification-beta) by [GARETH PAUL JONES](https://www.twilio.com/blog/author/gpj) at [Twilio Blog](https://www.twilio.com/blog) - 2021-04-22 - [Leveraging OpenApi strengths in a Micro-Service environment](https://medium.com/unibuddy-technology-blog/leveraging-openapi-strengths-in-a-micro-service-environment-3d7f9e7c26ff) by Nicolas Jellab at [Unibuddy Technology Blog](https://medium.com/unibuddy-technology-blog) - 2021-04-27 - [From zero to publishing PowerShell API clients in PowerShell Gallery within minutes](https://speakerdeck.com/wing328/from-zero-to-publishing-powershell-api-clients-in-powershell-gallery-within-minutes) by [William Cheng](https://github.com/wing328) at [PowerShell + DevOps Global Summit 2021](https://events.devopscollective.org/event/powershell-devops-global-summit-2021/) +- 2021-05-31 - [FlutterでOpen Api Generator(Swagger)を使う](https://aakira.app/blog/2021/05/flutter-open-api/) by [AAkira](https://twitter.com/_a_akira) ## [6 - About Us](#table-of-contents) From 0e93e79cd66c119eb8804fd08e0f2dec2e3b2062 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 9 Jun 2021 14:53:44 +0800 Subject: [PATCH 106/192] Fix Appveyor CI issues (#9731) * sleep for 15 seconds after starting the server * fix sleep * set clone depth to 1 --- appveyor.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index ec69f197198..04de25f2e66 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -29,8 +29,9 @@ install: - cmd: java -version - cmd: gradle -v - cmd: dir/w - - git clone https://github.com/wing328/swagger-samples + - git clone https://github.com/wing328/swagger-samples --depth 1 - ps: Start-Process -FilePath 'C:\maven\apache-maven-3.2.5\bin\mvn' -ArgumentList 'jetty:run' -WorkingDirectory "$env:appveyor_build_folder\swagger-samples\java\java-jersey-jaxrs-ci" + - ps: Start-Sleep -s 15 - ps: $PSVersionTable.PSVersion - ps: Install-Module -Name Pester -Force -Scope CurrentUser build_script: From cce0d0a222e58036fa039ca0de225fe59700e4a4 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 9 Jun 2021 15:43:55 +0800 Subject: [PATCH 107/192] update resteasy dependencies (#9729) --- .../languages/AbstractJavaCodegen.java | 16 ++++--- .../codegen/languages/JavaClientCodegen.java | 14 +++--- .../Java/libraries/resteasy/JSON.mustache | 10 ----- .../libraries/resteasy/build.gradle.mustache | 24 +--------- .../libraries/resteasy/build.sbt.mustache | 11 +---- .../Java/libraries/resteasy/pom.mustache | 44 +++---------------- .../client/petstore/java/resteasy/README.md | 2 +- .../petstore/java/resteasy/build.gradle | 15 +++---- .../client/petstore/java/resteasy/build.sbt | 8 ++-- samples/client/petstore/java/resteasy/pom.xml | 29 +++--------- .../java/org/openapitools/client/JSON.java | 4 +- .../client/auth/HttpBasicAuth.java | 10 ++--- .../model/AdditionalPropertiesClass.java | 16 +++---- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 6 +-- .../openapitools/client/model/EnumArrays.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/MapTest.java | 8 ++-- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../org/openapitools/client/model/Pet.java | 4 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../openapitools/client/model/XmlItem.java | 18 ++++---- 24 files changed, 77 insertions(+), 176 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index 320da10803f..c50caf9c3aa 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -539,12 +539,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code importMapping.put("com.fasterxml.jackson.annotation.JsonProperty", "com.fasterxml.jackson.annotation.JsonCreator"); if (additionalProperties.containsKey(JAVA8_MODE)) { - setJava8Mode(Boolean.parseBoolean(additionalProperties.get(JAVA8_MODE).toString())); - if (java8Mode) { - additionalProperties.put("java8", true); - } else { - additionalProperties.put("java8", false); - } + setJava8ModeAndAdditionalProperties(Boolean.parseBoolean(additionalProperties.get(JAVA8_MODE).toString())); } if (additionalProperties.containsKey(SUPPORT_ASYNC)) { @@ -1692,6 +1687,15 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code this.java8Mode = enabled; } + public void setJava8ModeAndAdditionalProperties(boolean enabled) { + this.java8Mode = enabled; + if (this.java8Mode) { + this.additionalProperties.put("java8", true); + } else { + this.additionalProperties.put("java8", false); + } + } + public void setSupportAsync(boolean enabled) { this.supportAsync = enabled; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index 4fa28b3cb5f..ad4e1be8959 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -436,13 +436,13 @@ public class JavaClientCodegen extends AbstractJavaCodegen supportsAdditionalPropertiesWithComposedSchema = true; } else if (NATIVE.equals(getLibrary())) { - setJava8Mode(true); - additionalProperties.put("java8", "true"); + setJava8ModeAndAdditionalProperties(true); supportingFiles.add(new SupportingFile("ApiResponse.mustache", invokerFolder, "ApiResponse.java")); supportingFiles.add(new SupportingFile("JSON.mustache", invokerFolder, "JSON.java")); supportingFiles.add(new SupportingFile("AbstractOpenApiSchema.mustache", (sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar), "AbstractOpenApiSchema.java")); forceSerializationLibrary(SERIALIZATION_LIBRARY_JACKSON); } else if (RESTEASY.equals(getLibrary())) { + setJava8ModeAndAdditionalProperties(true); supportingFiles.add(new SupportingFile("JSON.mustache", invokerFolder, "JSON.java")); forceSerializationLibrary(SERIALIZATION_LIBRARY_JACKSON); } else if (JERSEY1.equals(getLibrary())) { @@ -451,14 +451,12 @@ public class JavaClientCodegen extends AbstractJavaCodegen forceSerializationLibrary(SERIALIZATION_LIBRARY_JACKSON); supportingFiles.add(new SupportingFile("auth/Authentication.mustache", authFolder, "Authentication.java")); } else if (WEBCLIENT.equals(getLibrary())) { - setJava8Mode(true); - additionalProperties.put("java8", "true"); + setJava8ModeAndAdditionalProperties(true); forceSerializationLibrary(SERIALIZATION_LIBRARY_JACKSON); } else if (VERTX.equals(getLibrary())) { typeMapping.put("file", "AsyncFile"); importMapping.put("AsyncFile", "io.vertx.core.file.AsyncFile"); - setJava8Mode(true); - additionalProperties.put("java8", "true"); + setJava8ModeAndAdditionalProperties(true); forceSerializationLibrary(SERIALIZATION_LIBRARY_JACKSON); apiTemplateFiles.put("apiImpl.mustache", "Impl.java"); apiTemplateFiles.put("rxApiImpl.mustache", ".java"); @@ -531,7 +529,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen supportingFiles.add(new SupportingFile("play25/Play25CallFactory.mustache", invokerFolder, "Play25CallFactory.java")); supportingFiles.add(new SupportingFile("play25/Play25CallAdapterFactory.mustache", invokerFolder, "Play25CallAdapterFactory.java")); - additionalProperties.put("java8", "true"); + setJava8ModeAndAdditionalProperties(true); } if (PLAY_26.equals(playVersion)) { @@ -542,7 +540,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen supportingFiles.add(new SupportingFile("play26/Play26CallFactory.mustache", invokerFolder, "Play26CallFactory.java")); supportingFiles.add(new SupportingFile("play26/Play26CallAdapterFactory.mustache", invokerFolder, "Play26CallAdapterFactory.java")); - additionalProperties.put("java8", "true"); + setJava8ModeAndAdditionalProperties(true); } supportingFiles.add(new SupportingFile("play-common/auth/ApiKeyAuth.mustache", authFolder, "ApiKeyAuth.java")); diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/JSON.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/JSON.mustache index 338d0455d14..71bd624f7ed 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/JSON.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/JSON.mustache @@ -5,12 +5,7 @@ import com.fasterxml.jackson.databind.*; {{#openApiNullable}} import org.openapitools.jackson.nullable.JsonNullableModule; {{/openApiNullable}} -{{#java8}} import com.fasterxml.jackson.datatype.jsr310.*; -{{/java8}} -{{^java8}} -import com.fasterxml.jackson.datatype.joda.*; -{{/java8}} import java.text.DateFormat; @@ -33,12 +28,7 @@ public class JSON implements ContextResolver { JsonNullableModule jnm = new JsonNullableModule(); mapper.registerModule(jnm); {{/openApiNullable}} - {{#java8}} mapper.registerModule(new JavaTimeModule()); - {{/java8}} - {{^java8}} - mapper.registerModule(new JodaModule()); - {{/java8}} } /** diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache index fe6c7b1f8d0..852a2f638a5 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.gradle.mustache @@ -33,14 +33,8 @@ if(hasProperty('target') && target == 'android') { targetSdkVersion 23 } compileOptions { - {{#java8}} sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 - {{/java8}} - {{^java8}} - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 - {{/java8}} } // Rename the aar correctly @@ -84,14 +78,8 @@ if(hasProperty('target') && target == 'android') { apply plugin: 'java' apply plugin: 'maven' - {{#java8}} sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 - {{/java8}} - {{^java8}} - sourceCompatibility = JavaVersion.VERSION_1_7 - targetCompatibility = JavaVersion.VERSION_1_7 - {{/java8}} install { repositories.mavenInstaller { @@ -113,10 +101,7 @@ ext { jackson_databind_nullable_version = "0.2.1" {{/openApiNullable}} threetenbp_version = "2.9.10" - resteasy_version = "3.1.3.Final" - {{^java8}} - jodatime_version = "2.9.9" - {{/java8}} + resteasy_version = "4.5.11.Final" junit_version = "4.13" } @@ -133,14 +118,7 @@ dependencies { {{#openApiNullable}} implementation "org.openapitools:jackson-databind-nullable:$jackson_databind_nullable_version" {{/openApiNullable}} - {{#java8}} implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version" - {{/java8}} - {{^java8}} - implementation "com.fasterxml.jackson.datatype:jackson-datatype-joda:$jackson_version" - implementation "joda-time:joda-time:$jodatime_version" - implementation "com.brsanthu:migbase64:2.2" - {{/java8}} implementation 'javax.annotation:javax.annotation-api:1.3.2' testImplementation "junit:junit:$junit_version" } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.sbt.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.sbt.mustache index c2dfff284b0..785100fb678 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.sbt.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/build.sbt.mustache @@ -11,20 +11,13 @@ lazy val root = (project in file(".")). libraryDependencies ++= Seq( "io.swagger" % "swagger-annotations" % "1.5.22" % "compile", "org.jboss.resteasy" % "resteasy-client" % "3.1.3.Final" % "compile", - "org.jboss.resteasy" % "resteasy-multipart-provider" % "3.1.3.Final" % "compile", - "org.jboss.resteasy" % "resteasy-jackson2-provider" % "3.1.3.Final" % "compile", + "org.jboss.resteasy" % "resteasy-multipart-provider" % "4.5.11.Final" % "compile", + "org.jboss.resteasy" % "resteasy-jackson2-provider" % "4.5.11.Final" % "compile", "com.fasterxml.jackson.core" % "jackson-core" % "2.10.5" % "compile", "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.5" % "compile", "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", "com.github.joschi.jackson" % "jackson-datatype-threetenbp" % "2.9.10" % "compile", - {{#java8}} "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.9.10" % "compile", - {{/java8}} - {{^java8}} - "com.fasterxml.jackson.datatype" % "jackson-datatype-joda" % "2.9.10" % "compile", - "joda-time" % "joda-time" % "2.9.9" % "compile", - "com.brsanthu" % "migbase64" % "2.2" % "compile", - {{/java8}} "javax.annotation" % "javax.annotation-api" % "1.3.2" % "compile", "junit" % "junit" % "4.13" % "test", "com.novocode" % "junit-interface" % "0.10" % "test" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/pom.mustache index 084f42df9bd..8aa2a956ffc 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resteasy/pom.mustache @@ -142,14 +142,8 @@ maven-compiler-plugin 2.5.1 - {{#java8}} - 1.8 - 1.8 - {{/java8}} - {{^java8}} - 1.7 - 1.7 - {{/java8}} + 1.8 + 1.8 @@ -158,12 +152,7 @@ 3.1.1 none - {{#java8}} - 1.8 - {{/java8}} - {{^java8}} - 1.7 - {{/java8}} + 1.8 @@ -232,30 +221,10 @@ {{/withXml}} - {{^java8}} - - com.fasterxml.jackson.datatype - jackson-datatype-joda - ${jackson-version} - - - joda-time - joda-time - ${jodatime-version} - - - - - com.brsanthu - migbase64 - 2.2 - - {{/java8}} - org.jboss.resteasy resteasy-jackson2-provider - 3.1.3.Final + ${resteasy-version} com.fasterxml.jackson.datatype @@ -284,15 +253,12 @@ UTF-8 1.5.22 - 3.1.3.Final + 4.5.11.Final 2.10.5 2.10.5.1 0.2.1 1.3.2 2.9.10 - {{^java8}} - 2.9.9 - {{/java8}} 1.0.0 4.13 diff --git a/samples/client/petstore/java/resteasy/README.md b/samples/client/petstore/java/resteasy/README.md index 6a6d3e6b69d..35b1b3e8770 100644 --- a/samples/client/petstore/java/resteasy/README.md +++ b/samples/client/petstore/java/resteasy/README.md @@ -13,7 +13,7 @@ This spec is mainly for testing Petstore server and contains fake endpoints, mod Building the API client library requires: -1. Java 1.7+ +1. Java 1.8+ 2. Maven/Gradle ## Installation diff --git a/samples/client/petstore/java/resteasy/build.gradle b/samples/client/petstore/java/resteasy/build.gradle index 5d2d24177fc..47a46676967 100644 --- a/samples/client/petstore/java/resteasy/build.gradle +++ b/samples/client/petstore/java/resteasy/build.gradle @@ -33,8 +33,8 @@ if(hasProperty('target') && target == 'android') { targetSdkVersion 23 } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 } // Rename the aar correctly @@ -78,8 +78,8 @@ if(hasProperty('target') && target == 'android') { apply plugin: 'java' apply plugin: 'maven' - sourceCompatibility = JavaVersion.VERSION_1_7 - targetCompatibility = JavaVersion.VERSION_1_7 + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 install { repositories.mavenInstaller { @@ -99,8 +99,7 @@ ext { jackson_databind_version = "2.10.5.1" jackson_databind_nullable_version = "0.2.1" threetenbp_version = "2.9.10" - resteasy_version = "3.1.3.Final" - jodatime_version = "2.9.9" + resteasy_version = "4.5.11.Final" junit_version = "4.13" } @@ -115,9 +114,7 @@ dependencies { implementation "com.fasterxml.jackson.core:jackson-databind:$jackson_databind_version" implementation "com.github.joschi.jackson:jackson-datatype-threetenbp:$threetenbp_version" implementation "org.openapitools:jackson-databind-nullable:$jackson_databind_nullable_version" - implementation "com.fasterxml.jackson.datatype:jackson-datatype-joda:$jackson_version" - implementation "joda-time:joda-time:$jodatime_version" - implementation "com.brsanthu:migbase64:2.2" + implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version" implementation 'javax.annotation:javax.annotation-api:1.3.2' testImplementation "junit:junit:$junit_version" } diff --git a/samples/client/petstore/java/resteasy/build.sbt b/samples/client/petstore/java/resteasy/build.sbt index 92192b08f14..2686e7b74de 100644 --- a/samples/client/petstore/java/resteasy/build.sbt +++ b/samples/client/petstore/java/resteasy/build.sbt @@ -11,15 +11,13 @@ lazy val root = (project in file(".")). libraryDependencies ++= Seq( "io.swagger" % "swagger-annotations" % "1.5.22" % "compile", "org.jboss.resteasy" % "resteasy-client" % "3.1.3.Final" % "compile", - "org.jboss.resteasy" % "resteasy-multipart-provider" % "3.1.3.Final" % "compile", - "org.jboss.resteasy" % "resteasy-jackson2-provider" % "3.1.3.Final" % "compile", + "org.jboss.resteasy" % "resteasy-multipart-provider" % "4.5.11.Final" % "compile", + "org.jboss.resteasy" % "resteasy-jackson2-provider" % "4.5.11.Final" % "compile", "com.fasterxml.jackson.core" % "jackson-core" % "2.10.5" % "compile", "com.fasterxml.jackson.core" % "jackson-annotations" % "2.10.5" % "compile", "com.fasterxml.jackson.core" % "jackson-databind" % "2.10.5.1" % "compile", "com.github.joschi.jackson" % "jackson-datatype-threetenbp" % "2.9.10" % "compile", - "com.fasterxml.jackson.datatype" % "jackson-datatype-joda" % "2.9.10" % "compile", - "joda-time" % "joda-time" % "2.9.9" % "compile", - "com.brsanthu" % "migbase64" % "2.2" % "compile", + "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.9.10" % "compile", "javax.annotation" % "javax.annotation-api" % "1.3.2" % "compile", "junit" % "junit" % "4.13" % "test", "com.novocode" % "junit-interface" % "0.10" % "test" diff --git a/samples/client/petstore/java/resteasy/pom.xml b/samples/client/petstore/java/resteasy/pom.xml index 5a197bb9ecb..617e97d0a22 100644 --- a/samples/client/petstore/java/resteasy/pom.xml +++ b/samples/client/petstore/java/resteasy/pom.xml @@ -135,8 +135,8 @@ maven-compiler-plugin 2.5.1 - 1.7 - 1.7 + 1.8 + 1.8 @@ -145,7 +145,7 @@ 3.1.1 none - 1.7 + 1.8 @@ -202,28 +202,10 @@ jackson-databind-nullable ${jackson-databind-nullable-version} - - com.fasterxml.jackson.datatype - jackson-datatype-joda - ${jackson-version} - - - joda-time - joda-time - ${jodatime-version} - - - - - com.brsanthu - migbase64 - 2.2 - - org.jboss.resteasy resteasy-jackson2-provider - 3.1.3.Final + ${resteasy-version} com.fasterxml.jackson.datatype @@ -252,13 +234,12 @@ UTF-8 1.5.22 - 3.1.3.Final + 4.5.11.Final 2.10.5 2.10.5.1 0.2.1 1.3.2 2.9.10 - 2.9.9 1.0.0 4.13 diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/JSON.java index 9368681606c..85ff9ce7928 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/JSON.java @@ -3,7 +3,7 @@ package org.openapitools.client; import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.*; import org.openapitools.jackson.nullable.JsonNullableModule; -import com.fasterxml.jackson.datatype.joda.*; +import com.fasterxml.jackson.datatype.jsr310.*; import java.text.DateFormat; @@ -24,7 +24,7 @@ public class JSON implements ContextResolver { mapper.setDateFormat(new RFC3339DateFormat()); JsonNullableModule jnm = new JsonNullableModule(); mapper.registerModule(jnm); - mapper.registerModule(new JodaModule()); + mapper.registerModule(new JavaTimeModule()); } /** diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java index bd1f1225416..b7558356542 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java @@ -15,12 +15,12 @@ package org.openapitools.client.auth; import org.openapitools.client.Pair; -import com.migcomponents.migbase64.Base64; +import java.util.Base64; +import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.List; -import java.io.UnsupportedEncodingException; @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class HttpBasicAuth implements Authentication { @@ -49,10 +49,6 @@ public class HttpBasicAuth implements Authentication { return; } String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); - try { - headerParams.put("Authorization", "Basic " + Base64.encodeToString(str.getBytes("UTF-8"), false)); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } + headerParams.put("Authorization", "Basic " + Base64.getEncoder().encodeToString(str.getBytes(StandardCharsets.UTF_8))); } } diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java index 4e476cf79de..450b245ab2b 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java @@ -89,7 +89,7 @@ public class AdditionalPropertiesClass { public AdditionalPropertiesClass putMapStringItem(String key, String mapStringItem) { if (this.mapString == null) { - this.mapString = new HashMap(); + this.mapString = new HashMap<>(); } this.mapString.put(key, mapStringItem); return this; @@ -124,7 +124,7 @@ public class AdditionalPropertiesClass { public AdditionalPropertiesClass putMapNumberItem(String key, BigDecimal mapNumberItem) { if (this.mapNumber == null) { - this.mapNumber = new HashMap(); + this.mapNumber = new HashMap<>(); } this.mapNumber.put(key, mapNumberItem); return this; @@ -159,7 +159,7 @@ public class AdditionalPropertiesClass { public AdditionalPropertiesClass putMapIntegerItem(String key, Integer mapIntegerItem) { if (this.mapInteger == null) { - this.mapInteger = new HashMap(); + this.mapInteger = new HashMap<>(); } this.mapInteger.put(key, mapIntegerItem); return this; @@ -194,7 +194,7 @@ public class AdditionalPropertiesClass { public AdditionalPropertiesClass putMapBooleanItem(String key, Boolean mapBooleanItem) { if (this.mapBoolean == null) { - this.mapBoolean = new HashMap(); + this.mapBoolean = new HashMap<>(); } this.mapBoolean.put(key, mapBooleanItem); return this; @@ -229,7 +229,7 @@ public class AdditionalPropertiesClass { public AdditionalPropertiesClass putMapArrayIntegerItem(String key, List mapArrayIntegerItem) { if (this.mapArrayInteger == null) { - this.mapArrayInteger = new HashMap>(); + this.mapArrayInteger = new HashMap<>(); } this.mapArrayInteger.put(key, mapArrayIntegerItem); return this; @@ -264,7 +264,7 @@ public class AdditionalPropertiesClass { public AdditionalPropertiesClass putMapArrayAnytypeItem(String key, List mapArrayAnytypeItem) { if (this.mapArrayAnytype == null) { - this.mapArrayAnytype = new HashMap>(); + this.mapArrayAnytype = new HashMap<>(); } this.mapArrayAnytype.put(key, mapArrayAnytypeItem); return this; @@ -299,7 +299,7 @@ public class AdditionalPropertiesClass { public AdditionalPropertiesClass putMapMapStringItem(String key, Map mapMapStringItem) { if (this.mapMapString == null) { - this.mapMapString = new HashMap>(); + this.mapMapString = new HashMap<>(); } this.mapMapString.put(key, mapMapStringItem); return this; @@ -334,7 +334,7 @@ public class AdditionalPropertiesClass { public AdditionalPropertiesClass putMapMapAnytypeItem(String key, Map mapMapAnytypeItem) { if (this.mapMapAnytype == null) { - this.mapMapAnytype = new HashMap>(); + this.mapMapAnytype = new HashMap<>(); } this.mapMapAnytype.put(key, mapMapAnytypeItem); return this; diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java index e558e02ebe5..50ec3008bd6 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java @@ -48,7 +48,7 @@ public class ArrayOfArrayOfNumberOnly { public ArrayOfArrayOfNumberOnly addArrayArrayNumberItem(List arrayArrayNumberItem) { if (this.arrayArrayNumber == null) { - this.arrayArrayNumber = new ArrayList>(); + this.arrayArrayNumber = new ArrayList<>(); } this.arrayArrayNumber.add(arrayArrayNumberItem); return this; diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java index fd5f507f169..e4bd3504968 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java @@ -48,7 +48,7 @@ public class ArrayOfNumberOnly { public ArrayOfNumberOnly addArrayNumberItem(BigDecimal arrayNumberItem) { if (this.arrayNumber == null) { - this.arrayNumber = new ArrayList(); + this.arrayNumber = new ArrayList<>(); } this.arrayNumber.add(arrayNumberItem); return this; diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/ArrayTest.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/ArrayTest.java index 281f50c3fb3..e2faf5ed423 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/ArrayTest.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/ArrayTest.java @@ -56,7 +56,7 @@ public class ArrayTest { public ArrayTest addArrayOfStringItem(String arrayOfStringItem) { if (this.arrayOfString == null) { - this.arrayOfString = new ArrayList(); + this.arrayOfString = new ArrayList<>(); } this.arrayOfString.add(arrayOfStringItem); return this; @@ -91,7 +91,7 @@ public class ArrayTest { public ArrayTest addArrayArrayOfIntegerItem(List arrayArrayOfIntegerItem) { if (this.arrayArrayOfInteger == null) { - this.arrayArrayOfInteger = new ArrayList>(); + this.arrayArrayOfInteger = new ArrayList<>(); } this.arrayArrayOfInteger.add(arrayArrayOfIntegerItem); return this; @@ -126,7 +126,7 @@ public class ArrayTest { public ArrayTest addArrayArrayOfModelItem(List arrayArrayOfModelItem) { if (this.arrayArrayOfModel == null) { - this.arrayArrayOfModel = new ArrayList>(); + this.arrayArrayOfModel = new ArrayList<>(); } this.arrayArrayOfModel.add(arrayArrayOfModelItem); return this; diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumArrays.java index 6f8c2056318..7cdb3158948 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -148,7 +148,7 @@ public class EnumArrays { public EnumArrays addArrayEnumItem(ArrayEnumEnum arrayEnumItem) { if (this.arrayEnum == null) { - this.arrayEnum = new ArrayList(); + this.arrayEnum = new ArrayList<>(); } this.arrayEnum.add(arrayEnumItem); return this; diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java index fdc4c5a0920..69eeeaea732 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java @@ -78,7 +78,7 @@ public class FileSchemaTestClass { public FileSchemaTestClass addFilesItem(java.io.File filesItem) { if (this.files == null) { - this.files = new ArrayList(); + this.files = new ArrayList<>(); } this.files.add(filesItem); return this; diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/MapTest.java index 3561bb9ac0c..e795f5b836f 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/MapTest.java @@ -95,7 +95,7 @@ public class MapTest { public MapTest putMapMapOfStringItem(String key, Map mapMapOfStringItem) { if (this.mapMapOfString == null) { - this.mapMapOfString = new HashMap>(); + this.mapMapOfString = new HashMap<>(); } this.mapMapOfString.put(key, mapMapOfStringItem); return this; @@ -130,7 +130,7 @@ public class MapTest { public MapTest putMapOfEnumStringItem(String key, InnerEnum mapOfEnumStringItem) { if (this.mapOfEnumString == null) { - this.mapOfEnumString = new HashMap(); + this.mapOfEnumString = new HashMap<>(); } this.mapOfEnumString.put(key, mapOfEnumStringItem); return this; @@ -165,7 +165,7 @@ public class MapTest { public MapTest putDirectMapItem(String key, Boolean directMapItem) { if (this.directMap == null) { - this.directMap = new HashMap(); + this.directMap = new HashMap<>(); } this.directMap.put(key, directMapItem); return this; @@ -200,7 +200,7 @@ public class MapTest { public MapTest putIndirectMapItem(String key, Boolean indirectMapItem) { if (this.indirectMap == null) { - this.indirectMap = new HashMap(); + this.indirectMap = new HashMap<>(); } this.indirectMap.put(key, indirectMapItem); return this; diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java index f8973bf9835..b61d9919217 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java @@ -113,7 +113,7 @@ public class MixedPropertiesAndAdditionalPropertiesClass { public MixedPropertiesAndAdditionalPropertiesClass putMapItem(String key, Animal mapItem) { if (this.map == null) { - this.map = new HashMap(); + this.map = new HashMap<>(); } this.map.put(key, mapItem); return this; diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/Pet.java index 3b5363bdd40..8dba5c55885 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/Pet.java @@ -54,7 +54,7 @@ public class Pet { private String name; public static final String JSON_PROPERTY_PHOTO_URLS = "photoUrls"; - private Set photoUrls = new LinkedHashSet(); + private Set photoUrls = new LinkedHashSet<>(); public static final String JSON_PROPERTY_TAGS = "tags"; private List tags = null; @@ -219,7 +219,7 @@ public class Pet { public Pet addTagsItem(Tag tagsItem) { if (this.tags == null) { - this.tags = new ArrayList(); + this.tags = new ArrayList<>(); } this.tags.add(tagsItem); return this; diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/TypeHolderDefault.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/TypeHolderDefault.java index a5086c76768..e918613f558 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/TypeHolderDefault.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/TypeHolderDefault.java @@ -53,7 +53,7 @@ public class TypeHolderDefault { private Boolean boolItem = true; public static final String JSON_PROPERTY_ARRAY_ITEM = "array_item"; - private List arrayItem = new ArrayList(); + private List arrayItem = new ArrayList<>(); public TypeHolderDefault stringItem(String stringItem) { diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/TypeHolderExample.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/TypeHolderExample.java index a2767367b35..d718b404737 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/TypeHolderExample.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/TypeHolderExample.java @@ -57,7 +57,7 @@ public class TypeHolderExample { private Boolean boolItem; public static final String JSON_PROPERTY_ARRAY_ITEM = "array_item"; - private List arrayItem = new ArrayList(); + private List arrayItem = new ArrayList<>(); public TypeHolderExample stringItem(String stringItem) { diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/XmlItem.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/XmlItem.java index 0d54cd8ba26..1090a5110a2 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/XmlItem.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/XmlItem.java @@ -268,7 +268,7 @@ public class XmlItem { public XmlItem addWrappedArrayItem(Integer wrappedArrayItem) { if (this.wrappedArray == null) { - this.wrappedArray = new ArrayList(); + this.wrappedArray = new ArrayList<>(); } this.wrappedArray.add(wrappedArrayItem); return this; @@ -411,7 +411,7 @@ public class XmlItem { public XmlItem addNameArrayItem(Integer nameArrayItem) { if (this.nameArray == null) { - this.nameArray = new ArrayList(); + this.nameArray = new ArrayList<>(); } this.nameArray.add(nameArrayItem); return this; @@ -446,7 +446,7 @@ public class XmlItem { public XmlItem addNameWrappedArrayItem(Integer nameWrappedArrayItem) { if (this.nameWrappedArray == null) { - this.nameWrappedArray = new ArrayList(); + this.nameWrappedArray = new ArrayList<>(); } this.nameWrappedArray.add(nameWrappedArrayItem); return this; @@ -589,7 +589,7 @@ public class XmlItem { public XmlItem addPrefixArrayItem(Integer prefixArrayItem) { if (this.prefixArray == null) { - this.prefixArray = new ArrayList(); + this.prefixArray = new ArrayList<>(); } this.prefixArray.add(prefixArrayItem); return this; @@ -624,7 +624,7 @@ public class XmlItem { public XmlItem addPrefixWrappedArrayItem(Integer prefixWrappedArrayItem) { if (this.prefixWrappedArray == null) { - this.prefixWrappedArray = new ArrayList(); + this.prefixWrappedArray = new ArrayList<>(); } this.prefixWrappedArray.add(prefixWrappedArrayItem); return this; @@ -767,7 +767,7 @@ public class XmlItem { public XmlItem addNamespaceArrayItem(Integer namespaceArrayItem) { if (this.namespaceArray == null) { - this.namespaceArray = new ArrayList(); + this.namespaceArray = new ArrayList<>(); } this.namespaceArray.add(namespaceArrayItem); return this; @@ -802,7 +802,7 @@ public class XmlItem { public XmlItem addNamespaceWrappedArrayItem(Integer namespaceWrappedArrayItem) { if (this.namespaceWrappedArray == null) { - this.namespaceWrappedArray = new ArrayList(); + this.namespaceWrappedArray = new ArrayList<>(); } this.namespaceWrappedArray.add(namespaceWrappedArrayItem); return this; @@ -945,7 +945,7 @@ public class XmlItem { public XmlItem addPrefixNsArrayItem(Integer prefixNsArrayItem) { if (this.prefixNsArray == null) { - this.prefixNsArray = new ArrayList(); + this.prefixNsArray = new ArrayList<>(); } this.prefixNsArray.add(prefixNsArrayItem); return this; @@ -980,7 +980,7 @@ public class XmlItem { public XmlItem addPrefixNsWrappedArrayItem(Integer prefixNsWrappedArrayItem) { if (this.prefixNsWrappedArray == null) { - this.prefixNsWrappedArray = new ArrayList(); + this.prefixNsWrappedArray = new ArrayList<>(); } this.prefixNsWrappedArray.add(prefixNsWrappedArrayItem); return this; From f1ee1cbe2eb7b482e0cc08bc13ad0ef46bd7b6c0 Mon Sep 17 00:00:00 2001 From: Samuel Kahn <48932506+Kahncode@users.noreply.github.com> Date: Wed, 9 Jun 2021 09:45:45 +0200 Subject: [PATCH 108/192] [cpp-ue4] Updated generator to return the http request so that it can be canceled or further manipulated. (#9693) --- .../src/main/resources/cpp-ue4/api-header.mustache | 2 +- .../src/main/resources/cpp-ue4/api-source.mustache | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-ue4/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-ue4/api-header.mustache index 17b42e942ea..b6059901809 100644 --- a/modules/openapi-generator/src/main/resources/cpp-ue4/api-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-ue4/api-header.mustache @@ -35,7 +35,7 @@ public: {{#operations}}{{#operation}}DECLARE_DELEGATE_OneParam(F{{operationIdCamelCase}}Delegate, const {{operationIdCamelCase}}Response&); {{/operation}}{{/operations}} {{#operations}}{{#operation}}{{#description}}/* {{{description}}} */ - {{/description}}bool {{operationIdCamelCase}}(const {{operationIdCamelCase}}Request& Request, const F{{operationIdCamelCase}}Delegate& Delegate = F{{operationIdCamelCase}}Delegate()) const; + {{/description}}FHttpRequestPtr {{operationIdCamelCase}}(const {{operationIdCamelCase}}Request& Request, const F{{operationIdCamelCase}}Delegate& Delegate = F{{operationIdCamelCase}}Delegate()) const; {{/operation}}{{/operations}} private: {{#operations}}{{#operation}}void On{{operationIdCamelCase}}Response(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, F{{operationIdCamelCase}}Delegate Delegate) const; diff --git a/modules/openapi-generator/src/main/resources/cpp-ue4/api-source.mustache b/modules/openapi-generator/src/main/resources/cpp-ue4/api-source.mustache index 9bd9f3b87bd..2ab5b0db9cd 100644 --- a/modules/openapi-generator/src/main/resources/cpp-ue4/api-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-ue4/api-source.mustache @@ -125,10 +125,10 @@ void {{classname}}::HandleResponse(FHttpResponsePtr HttpResponse, bool bSucceede {{#operations}} {{#operation}} -bool {{classname}}::{{operationIdCamelCase}}(const {{operationIdCamelCase}}Request& Request, const F{{operationIdCamelCase}}Delegate& Delegate /*= F{{operationIdCamelCase}}Delegate()*/) const +FHttpRequestPtr {{classname}}::{{operationIdCamelCase}}(const {{operationIdCamelCase}}Request& Request, const F{{operationIdCamelCase}}Delegate& Delegate /*= F{{operationIdCamelCase}}Delegate()*/) const { if (!IsValid()) - return false; + return nullptr; FHttpRequestRef HttpRequest = CreateHttpRequest(Request); HttpRequest->SetURL(*(Url + Request.ComputePath())); @@ -141,7 +141,8 @@ bool {{classname}}::{{operationIdCamelCase}}(const {{operationIdCamelCase}}Reque Request.SetupHttpRequest(HttpRequest); HttpRequest->OnProcessRequestComplete().BindRaw(this, &{{classname}}::On{{operationIdCamelCase}}Response, Delegate); - return HttpRequest->ProcessRequest(); + HttpRequest->ProcessRequest(); + return HttpRequest; } void {{classname}}::On{{operationIdCamelCase}}Response(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, F{{operationIdCamelCase}}Delegate Delegate) const From 46f8a6733a652544a2914b6bd6dcabf09e49b78c Mon Sep 17 00:00:00 2001 From: devhl-labs Date: Wed, 9 Jun 2021 04:09:39 -0400 Subject: [PATCH 109/192] [csharp] Move nullable reference types switch to abstract (#9661) * moved switch to abstract * build samples * added nullable option to csproj * removed unused method * added switch back to aspnetcore * build samples --- docs/generators/aspnetcore.md | 2 +- docs/generators/csharp-netcore.md | 1 + .../codegen/CodegenConstants.java | 3 ++ .../languages/AbstractCSharpCodegen.java | 14 ++++++++++ .../languages/AspNetCoreServerCodegen.java | 28 ++++--------------- .../languages/CSharpNetCoreClientCodegen.java | 4 +++ .../csharp-netcore/netcore_project.mustache | 3 ++ .../resources/csharp/netcore_project.mustache | 3 ++ .../codegen/csharp/CSharpModelTest.java | 3 +- 9 files changed, 36 insertions(+), 25 deletions(-) diff --git a/docs/generators/aspnetcore.md b/docs/generators/aspnetcore.md index 14d54f778d4..d7e282c8279 100644 --- a/docs/generators/aspnetcore.md +++ b/docs/generators/aspnetcore.md @@ -19,7 +19,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |licenseUrl|The URL of the license| |http://localhost| |modelClassModifier|Model Class Modifier can be nothing or partial| |partial| |newtonsoftVersion|Version for Microsoft.AspNetCore.Mvc.NewtonsoftJson for ASP.NET Core 3.0+| |3.0.0| -|nullableReferenceTypes|Annotate Project with <Nullable>annotations</Nullable> and use ? annotation on all nullable attributes. Only supported on C# 8 / ASP.NET Core 3.0 or newer.| |false| +|nullableReferenceTypes|Use nullable annotations in the project. Only supported on C# 8 / ASP.NET Core 3.0 or newer.| |false| |operationIsAsync|Set methods to async or sync (default).| |false| |operationModifier|Operation Modifier can be virtual or abstract|
    **virtual**
    Keep method virtual
    **abstract**
    Make method abstract
    |virtual| |operationResultTask|Set methods result to Task<>.| |false| diff --git a/docs/generators/csharp-netcore.md b/docs/generators/csharp-netcore.md index 0887dcbfeca..e7b92383494 100644 --- a/docs/generators/csharp-netcore.md +++ b/docs/generators/csharp-netcore.md @@ -17,6 +17,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |PascalCase| |netCoreProjectFile|Use the new format (.NET Core) for .NET project files (.csproj).| |false| |nonPublicApi|Generates code with reduced access modifiers; allows embedding elsewhere without exposing non-public API calls to consumers.| |false| +|nullableReferenceTypes|Use nullable annotations in the project. Only supported on C# 8 / ASP.NET Core 3.0 or newer.| |false| |optionalAssemblyInfo|Generate AssemblyInfo.cs.| |true| |optionalEmitDefaultValues|Set DataMember's EmitDefaultValue.| |false| |optionalMethodArgument|C# Optional method argument, e.g. void square(int x=10) (.net 4.0+ only).| |true| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java index b8caef27e9f..72a3d57ce0f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java @@ -211,6 +211,9 @@ public class CodegenConstants { public static final String DOTNET_FRAMEWORK = "targetFramework"; public static final String DOTNET_FRAMEWORK_DESC = "The target .NET framework version. To target multiple frameworks, use `;` as the separator, e.g. `netstandard2.1;netcoreapp3.0`"; + public static final String NULLABLE_REFERENCE_TYPES = "nullableReferenceTypes"; + public static final String NULLABLE_REFERENCE_TYPES_DESC = "Use nullable annotations in the project. Only supported on C# 8 / ASP.NET Core 3.0 or newer."; + public static final String TEMPLATING_ENGINE = "templatingEngine"; public static final String TEMPLATING_ENGINE_DESC = "The templating engine plugin to use: \"mustache\" (default) or \"handlebars\" (beta)"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index 883f6cb078b..b939826b1ff 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -47,6 +47,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co protected boolean useCollection = false; protected boolean returnICollection = false; protected boolean netCoreProjectFileFlag = false; + protected boolean nullReferenceTypesFlag = false; protected String modelPropertyNaming = CodegenConstants.MODEL_PROPERTY_NAMING_TYPE.PascalCase.name(); @@ -356,6 +357,12 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co additionalProperties.put(CodegenConstants.NETCORE_PROJECT_FILE, netCoreProjectFileFlag); } + if (additionalProperties.containsKey(CodegenConstants.NULLABLE_REFERENCE_TYPES)) { + setNullableReferenceTypes(convertPropertyToBooleanAndWriteBack(CodegenConstants.NULLABLE_REFERENCE_TYPES)); + } else { + additionalProperties.put(CodegenConstants.NULLABLE_REFERENCE_TYPES, nullReferenceTypesFlag); + } + if (additionalProperties.containsKey(CodegenConstants.INTERFACE_PREFIX)) { String useInterfacePrefix = additionalProperties.get(CodegenConstants.INTERFACE_PREFIX).toString(); if ("false".equals(useInterfacePrefix.toLowerCase(Locale.ROOT))) { @@ -1112,6 +1119,13 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co return interfacePrefix; } + public void setNullableReferenceTypes(final Boolean nullReferenceTypesFlag){ + this.nullReferenceTypesFlag = nullReferenceTypesFlag; + if (nullReferenceTypesFlag == true){ + this.nullableType.add("string"); + } + } + public void setInterfacePrefix(final String interfacePrefix) { this.interfacePrefix = interfacePrefix; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java index ca50b0ff1f4..16957ff6b3b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java @@ -60,7 +60,6 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { public static final String USE_NEWTONSOFT = "useNewtonsoft"; public static final String USE_DEFAULT_ROUTING = "useDefaultRouting"; public static final String NEWTONSOFT_VERSION = "newtonsoftVersion"; - public static final String NULLABLE_REFERENCE_TYPES = "nullableReferenceTypes"; private String packageGuid = "{" + randomUUID().toString().toUpperCase(Locale.ROOT) + "}"; private String userSecretsGuid = randomUUID().toString(); @@ -85,7 +84,6 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { private boolean useFrameworkReference = false; private boolean useNewtonsoft = true; private boolean useDefaultRouting = true; - private boolean nullableReferenceTypes = false; private String newtonsoftVersion = "3.0.0"; public AspNetCoreServerCodegen() { @@ -211,6 +209,10 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { cliOptions.add(swashbuckleVersion); // CLI Switches + addSwitch(CodegenConstants.NULLABLE_REFERENCE_TYPES, + CodegenConstants.NULLABLE_REFERENCE_TYPES_DESC, + this.nullReferenceTypesFlag); + addSwitch(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC, sortParamsByRequiredFlag); @@ -251,11 +253,6 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { "Use default routing for the ASP.NET Core version.", useDefaultRouting); - addSwitch(NULLABLE_REFERENCE_TYPES, - "Annotate Project with annotations and use ? annotation on all nullable attributes. " + - "Only supported on C# 8 / ASP.NET Core 3.0 or newer.", - nullableReferenceTypes); - addOption(CodegenConstants.ENUM_NAME_SUFFIX, CodegenConstants.ENUM_NAME_SUFFIX_DESC, enumNameSuffix); @@ -373,7 +370,6 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { setIsFramework(); setUseNewtonsoft(); setUseEndpointRouting(); - setNullableReferenceTypes(); supportingFiles.add(new SupportingFile("build.sh.mustache", "", "build.sh")); supportingFiles.add(new SupportingFile("build.bat.mustache", "", "build.bat")); @@ -528,7 +524,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { @Override public String getNullableType(Schema p, String type) { if (languageSpecificPrimitives.contains(type)) { - if (isSupportNullable() && ModelUtils.isNullable(p) && (nullableType.contains(type) || nullableReferenceTypes)) { + if (isSupportNullable() && ModelUtils.isNullable(p) && (nullableType.contains(type) || nullReferenceTypesFlag)) { return type + "?"; } else { return type; @@ -657,20 +653,6 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen { } } - private void setNullableReferenceTypes() { - if (additionalProperties.containsKey(NULLABLE_REFERENCE_TYPES)) { - if (aspnetCoreVersion.getOptValue().startsWith("2.")) { - LOGGER.warn("Nullable annotation are not supported in ASP.NET core version 2. Setting {} to false", - NULLABLE_REFERENCE_TYPES); - additionalProperties.put(NULLABLE_REFERENCE_TYPES, false); - } else { - nullableReferenceTypes = convertPropertyToBooleanAndWriteBack(NULLABLE_REFERENCE_TYPES); - } - } else { - additionalProperties.put(NULLABLE_REFERENCE_TYPES, nullableReferenceTypes); - } - } - private void setOperationIsAsync() { if (isLibrary) { operationIsAsync = false; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java index 2b0a5fe068d..d0bb7c24b6e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java @@ -230,6 +230,10 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { cliOptions.add(modelPropertyNaming.defaultValue("PascalCase")); // CLI Switches + addSwitch(CodegenConstants.NULLABLE_REFERENCE_TYPES, + CodegenConstants.NULLABLE_REFERENCE_TYPES_DESC, + this.nullReferenceTypesFlag); + addSwitch(CodegenConstants.HIDE_GENERATION_TIMESTAMP, CodegenConstants.HIDE_GENERATION_TIMESTAMP_DESC, this.hideGenerationTimestamp); diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/netcore_project.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/netcore_project.mustache index 7d77d34b4d8..4f29dcf3d34 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/netcore_project.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/netcore_project.mustache @@ -19,6 +19,9 @@ git{{#releaseNote}} {{releaseNote}}{{/releaseNote}}{{#packageTags}} {{{packageTags}}}{{/packageTags}} + {{#nullableReferenceTypes}} + annotations + {{/nullableReferenceTypes}} diff --git a/modules/openapi-generator/src/main/resources/csharp/netcore_project.mustache b/modules/openapi-generator/src/main/resources/csharp/netcore_project.mustache index 2cb30d650a5..fd4168d0d4c 100644 --- a/modules/openapi-generator/src/main/resources/csharp/netcore_project.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/netcore_project.mustache @@ -15,6 +15,9 @@ true {{packageName}} {{packageVersion}} + {{#nullableReferenceTypes}} + annotations + {{/nullableReferenceTypes}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java index 4a8f8f3e3bc..b387a0a2986 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java @@ -21,6 +21,7 @@ import com.google.common.collect.Sets; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.media.*; import io.swagger.v3.parser.util.SchemaTypeUtil; +import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.DefaultCodegen; @@ -335,7 +336,7 @@ public class CSharpModelTest { .addProperties("subObject", new Schema().addProperties("name", new StringSchema()).nullable(true)) .addRequiredItem("id"); final DefaultCodegen codegen = new AspNetCoreServerCodegen(); - codegen.additionalProperties().put(AspNetCoreServerCodegen.NULLABLE_REFERENCE_TYPES, true); + codegen.additionalProperties().put(CodegenConstants.NULLABLE_REFERENCE_TYPES, true); codegen.processOpts(); OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", model); codegen.setOpenAPI(openAPI); From 32c1e925dc63b3230ab8dbde5311018a71fc89bc Mon Sep 17 00:00:00 2001 From: Fabian Sellmann <9982477+FabianSellmann@users.noreply.github.com> Date: Thu, 10 Jun 2021 00:23:50 +0800 Subject: [PATCH 110/192] [typescript-fetch] runtime: pass init and url as returned by the premiddleware to the postmiddleware (#9716) * pass init and url as returned by the premiddleware to the postmiddleware Current implementation will always pass the initial url and init object. However if a pre middleware changes returns an object whose `init` or `url` property refer to a different url string or object, any following post middleware wont have access to it. Effectively providing the post middleware with a completely different request information then what was actually used to make the fetch call. * update samples and docs --- .../src/main/resources/typescript-fetch/runtime.mustache | 4 ++-- .../petstore/typescript-fetch/builds/default-v3.0/runtime.ts | 4 ++-- .../petstore/typescript-fetch/builds/default/runtime.ts | 4 ++-- .../client/petstore/typescript-fetch/builds/enum/runtime.ts | 4 ++-- .../typescript-fetch/builds/es6-target/src/runtime.ts | 4 ++-- .../typescript-fetch/builds/multiple-parameters/runtime.ts | 4 ++-- .../builds/prefix-parameter-interfaces/src/runtime.ts | 4 ++-- .../builds/typescript-three-plus/src/runtime.ts | 4 ++-- .../typescript-fetch/builds/with-interfaces/runtime.ts | 4 ++-- .../typescript-fetch/builds/with-npm-version/src/runtime.ts | 4 ++-- .../builds/without-runtime-checks/src/runtime.ts | 4 ++-- 11 files changed, 22 insertions(+), 22 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache index e0498e0e316..8df16e9074e 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache @@ -79,8 +79,8 @@ export class BaseAPI { if (middleware.post) { response = await middleware.post({ fetch: this.fetchApi, - url, - init, + url: fetchParams.url, + init: fetchParams.init, response: response.clone(), }) || response; } diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/runtime.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/runtime.ts index be992e2dac8..6924269e546 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/runtime.ts @@ -90,8 +90,8 @@ export class BaseAPI { if (middleware.post) { response = await middleware.post({ fetch: this.fetchApi, - url, - init, + url: fetchParams.url, + init: fetchParams.init, response: response.clone(), }) || response; } diff --git a/samples/client/petstore/typescript-fetch/builds/default/runtime.ts b/samples/client/petstore/typescript-fetch/builds/default/runtime.ts index 20374a38659..8ae5f65348c 100644 --- a/samples/client/petstore/typescript-fetch/builds/default/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/default/runtime.ts @@ -90,8 +90,8 @@ export class BaseAPI { if (middleware.post) { response = await middleware.post({ fetch: this.fetchApi, - url, - init, + url: fetchParams.url, + init: fetchParams.init, response: response.clone(), }) || response; } diff --git a/samples/client/petstore/typescript-fetch/builds/enum/runtime.ts b/samples/client/petstore/typescript-fetch/builds/enum/runtime.ts index d558d0ad7de..c4d82bccb8f 100644 --- a/samples/client/petstore/typescript-fetch/builds/enum/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/enum/runtime.ts @@ -90,8 +90,8 @@ export class BaseAPI { if (middleware.post) { response = await middleware.post({ fetch: this.fetchApi, - url, - init, + url: fetchParams.url, + init: fetchParams.init, response: response.clone(), }) || response; } diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/src/runtime.ts index 20374a38659..8ae5f65348c 100644 --- a/samples/client/petstore/typescript-fetch/builds/es6-target/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/src/runtime.ts @@ -90,8 +90,8 @@ export class BaseAPI { if (middleware.post) { response = await middleware.post({ fetch: this.fetchApi, - url, - init, + url: fetchParams.url, + init: fetchParams.init, response: response.clone(), }) || response; } diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts index 20374a38659..8ae5f65348c 100644 --- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/runtime.ts @@ -90,8 +90,8 @@ export class BaseAPI { if (middleware.post) { response = await middleware.post({ fetch: this.fetchApi, - url, - init, + url: fetchParams.url, + init: fetchParams.init, response: response.clone(), }) || response; } diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/runtime.ts index 20374a38659..8ae5f65348c 100644 --- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/runtime.ts @@ -90,8 +90,8 @@ export class BaseAPI { if (middleware.post) { response = await middleware.post({ fetch: this.fetchApi, - url, - init, + url: fetchParams.url, + init: fetchParams.init, response: response.clone(), }) || response; } diff --git a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/runtime.ts index 95601f9e307..40ac35e9d19 100644 --- a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/src/runtime.ts @@ -90,8 +90,8 @@ export class BaseAPI { if (middleware.post) { response = await middleware.post({ fetch: this.fetchApi, - url, - init, + url: fetchParams.url, + init: fetchParams.init, response: response.clone(), }) || response; } diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts index 20374a38659..8ae5f65348c 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/runtime.ts @@ -90,8 +90,8 @@ export class BaseAPI { if (middleware.post) { response = await middleware.post({ fetch: this.fetchApi, - url, - init, + url: fetchParams.url, + init: fetchParams.init, response: response.clone(), }) || response; } diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/runtime.ts index 20374a38659..8ae5f65348c 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/runtime.ts @@ -90,8 +90,8 @@ export class BaseAPI { if (middleware.post) { response = await middleware.post({ fetch: this.fetchApi, - url, - init, + url: fetchParams.url, + init: fetchParams.init, response: response.clone(), }) || response; } diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/runtime.ts index 20374a38659..8ae5f65348c 100644 --- a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/runtime.ts @@ -90,8 +90,8 @@ export class BaseAPI { if (middleware.post) { response = await middleware.post({ fetch: this.fetchApi, - url, - init, + url: fetchParams.url, + init: fetchParams.init, response: response.clone(), }) || response; } From 46bf3e8e46d9061c7ef6860295c6b488285573e5 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Thu, 10 Jun 2021 05:08:23 +0200 Subject: [PATCH 111/192] [ci] Only run samples when they actually changed (#9636) * [ci] Only run samples when they actually changed * in pull requests only run the samples that matter * if a sample is outdated it will still fail in the build pipeline * Test Kotlin sample changes * Revert Kotlin sample change --- .github/workflows/samples-dart.yaml | 2 ++ .github/workflows/samples-kotlin.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/samples-dart.yaml b/.github/workflows/samples-dart.yaml index a1392d65e7c..1ac6441c025 100644 --- a/.github/workflows/samples-dart.yaml +++ b/.github/workflows/samples-dart.yaml @@ -9,6 +9,8 @@ on: branches: - master - '[5-9]+.[0-9]+.x' + paths: + - 'samples/openapi3/client/petstore/dart*/**' jobs: tests-dart-2-10: diff --git a/.github/workflows/samples-kotlin.yaml b/.github/workflows/samples-kotlin.yaml index faa5062c553..21114c9b304 100644 --- a/.github/workflows/samples-kotlin.yaml +++ b/.github/workflows/samples-kotlin.yaml @@ -9,6 +9,8 @@ on: branches: - master - '[5-9]+.[0-9]+.x' + paths: + - 'samples/client/petstore/kotlin*/**' env: GRADLE_VERSION: 6.9 From 99994945c7100ec900d6c2106068746a97be94b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Jun 2021 11:10:15 +0800 Subject: [PATCH 112/192] Bump actions/cache from 2.1.5 to 2.1.6 (#9614) Bumps [actions/cache](https://github.com/actions/cache) from 2.1.5 to 2.1.6. - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v2.1.5...v2.1.6) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/check-supported-versions.yaml | 4 ++-- .github/workflows/openapi-generator.yaml | 8 ++++---- .github/workflows/samples-dart.yaml | 8 ++++---- .github/workflows/samples-kotlin.yaml | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/check-supported-versions.yaml b/.github/workflows/check-supported-versions.yaml index aa6e81f29b5..65d3688ca07 100644 --- a/.github/workflows/check-supported-versions.yaml +++ b/.github/workflows/check-supported-versions.yaml @@ -29,14 +29,14 @@ jobs: distribution: 'adopt' java-version: ${{ matrix.java }} - - uses: actions/cache@v2.1.5 + - uses: actions/cache@v2.1.6 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('pom.xml', 'modules/**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- - - uses: actions/cache@v2.1.5 + - uses: actions/cache@v2.1.6 with: path: | ~/.gradle/caches diff --git a/.github/workflows/openapi-generator.yaml b/.github/workflows/openapi-generator.yaml index 34e3c901848..16b3d68c274 100644 --- a/.github/workflows/openapi-generator.yaml +++ b/.github/workflows/openapi-generator.yaml @@ -21,7 +21,7 @@ jobs: with: java-version: 8 - name: Cache maven dependencies - uses: actions/cache@v2 + uses: actions/cache@v2.1.6 env: cache-name: cache-maven-repository with: @@ -56,7 +56,7 @@ jobs: with: java-version: 8 - name: Cache maven dependencies - uses: actions/cache@v2 + uses: actions/cache@v2.1.6 env: cache-name: cache-maven-repository with: @@ -162,7 +162,7 @@ jobs: with: java-version: 11 - name: Cache maven dependencies - uses: actions/cache@v2 + uses: actions/cache@v2.1.6 env: cache-name: cache-maven-repository with: @@ -194,7 +194,7 @@ jobs: with: java-version: 11 - name: Cache maven dependencies - uses: actions/cache@v2 + uses: actions/cache@v2.1.6 env: cache-name: cache-maven-repository with: diff --git a/.github/workflows/samples-dart.yaml b/.github/workflows/samples-dart.yaml index 1ac6441c025..47ae424394d 100644 --- a/.github/workflows/samples-dart.yaml +++ b/.github/workflows/samples-dart.yaml @@ -23,7 +23,7 @@ jobs: distribution: 'adopt' java-version: 8 - name: Cache maven dependencies - uses: actions/cache@v2 + uses: actions/cache@v2.1.6 env: cache-name: maven-repository with: @@ -32,7 +32,7 @@ jobs: ~/.gradle key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} - name: Cache test dependencies - uses: actions/cache@v2 + uses: actions/cache@v2.1.6 env: cache-name: pub-cache with: @@ -56,7 +56,7 @@ jobs: distribution: 'adopt' java-version: 8 - name: Cache maven dependencies - uses: actions/cache@v2 + uses: actions/cache@v2.1.6 env: cache-name: maven-repository with: @@ -65,7 +65,7 @@ jobs: ~/.gradle key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} - name: Cache test dependencies - uses: actions/cache@v2 + uses: actions/cache@v2.1.6 env: cache-name: pub-cache with: diff --git a/.github/workflows/samples-kotlin.yaml b/.github/workflows/samples-kotlin.yaml index 21114c9b304..46c944fd74e 100644 --- a/.github/workflows/samples-kotlin.yaml +++ b/.github/workflows/samples-kotlin.yaml @@ -48,7 +48,7 @@ jobs: distribution: 'adopt' java-version: 8 - name: Cache maven dependencies - uses: actions/cache@v2 + uses: actions/cache@v2.1.6 env: cache-name: maven-repository with: From 6611ae64bbb5350ed7a65bda801f3f98f6592ade Mon Sep 17 00:00:00 2001 From: FallenRiteMonk Date: Thu, 10 Jun 2021 05:11:08 +0200 Subject: [PATCH 113/192] [dart] fix Date.toDateTime utc (#9717) --- .../libraries/dio/serialization/built_value/date.mustache | 7 ++++--- .../petstore_client_lib_fake/lib/src/model/date.dart | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/date.mustache b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/date.mustache index c3a87eae259..b21c7f544be 100644 --- a/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/date.mustache +++ b/modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/date.mustache @@ -24,9 +24,10 @@ class Date implements Comparable { /// Convert to a [DateTime]. DateTime toDateTime({bool utc = false}) { if (utc) { - DateTime.utc(year, month, day); + return DateTime.utc(year, month, day); + } else { + return DateTime(year, month, day); } - return DateTime(year, month, day); } @override @@ -66,4 +67,4 @@ class Date implements Comparable { extension DateTimeToDate on DateTime { Date toDate() => Date(year, month, day); -} \ No newline at end of file +} diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/date.dart b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/date.dart index c3a87eae259..b21c7f544be 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/date.dart +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/lib/src/model/date.dart @@ -24,9 +24,10 @@ class Date implements Comparable { /// Convert to a [DateTime]. DateTime toDateTime({bool utc = false}) { if (utc) { - DateTime.utc(year, month, day); + return DateTime.utc(year, month, day); + } else { + return DateTime(year, month, day); } - return DateTime(year, month, day); } @override @@ -66,4 +67,4 @@ class Date implements Comparable { extension DateTimeToDate on DateTime { Date toDate() => Date(year, month, day); -} \ No newline at end of file +} From bd18ba6b418a0cddc31e73fdd10d8d013244601d Mon Sep 17 00:00:00 2001 From: Ygal Blum Date: Thu, 10 Jun 2021 12:02:03 -0400 Subject: [PATCH 114/192] operationId: Allow getting only the method name (#9719) (#9724) Add new configuration flags: REMOVE_OPERATION_ID_PREFIX_DELIMITER and REMOVE_OPERATION_ID_PREFIX_COUNT Add the corresponding fields in the DefaultCodegen Sanitize the operationId according to the new fields Add delimiter to list of nonNameElementPattern Add unit test --- .../codegen/CodegenConstants.java | 6 ++ .../openapitools/codegen/DefaultCodegen.java | 41 ++++++++++-- .../codegen/DefaultCodegenTest.java | 66 +++++++++++++++++++ .../src/test/resources/bugs/issue_9719.yaml | 48 ++++++++++++++ 4 files changed, 157 insertions(+), 4 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/bugs/issue_9719.yaml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java index 72a3d57ce0f..81348f4a774 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java @@ -317,6 +317,12 @@ public class CodegenConstants { public static final String REMOVE_OPERATION_ID_PREFIX = "removeOperationIdPrefix"; public static final String REMOVE_OPERATION_ID_PREFIX_DESC = "Remove prefix of operationId, e.g. config_getId => getId"; + public static final String REMOVE_OPERATION_ID_PREFIX_DELIMITER = "removeOperationIdPrefixDelimiter"; + public static final String REMOVE_OPERATION_ID_PREFIX_DELIMITER_DESC = "Character to use as a delimiter for the prefix. Default: '_'"; + + public static final String REMOVE_OPERATION_ID_PREFIX_COUNT = "removeOperationIdPrefixCount"; + public static final String REMOVE_OPERATION_ID_PREFIX_COUNT_DESC = "Count of delimiter for the prefix. Use -1 for last Default: 1"; + public static final String SKIP_OPERATION_EXAMPLE = "skipOperationExample"; public static final String SKIP_OPERATION_EXAMPLE_DESC = "Skip examples defined in operations to avoid out of memory errors."; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index f6972cb575f..912167c968d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -177,6 +177,8 @@ public class DefaultCodegen implements CodegenConfig { protected List cliOptions = new ArrayList(); protected boolean skipOverwrite; protected boolean removeOperationIdPrefix; + protected String removeOperationIdPrefixDelimiter = "_"; + protected int removeOperationIdPrefixCount = 1; protected boolean skipOperationExample; protected final static Pattern JSON_MIME_PATTERN = Pattern.compile("(?i)application\\/json(;.*)?"); @@ -323,6 +325,16 @@ public class DefaultCodegen implements CodegenConfig { .get(CodegenConstants.REMOVE_OPERATION_ID_PREFIX).toString())); } + if (additionalProperties.containsKey(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_DELIMITER)) { + this.setRemoveOperationIdPrefixDelimiter(additionalProperties + .get(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_DELIMITER).toString()); + } + + if (additionalProperties.containsKey(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_COUNT)) { + this.setRemoveOperationIdPrefixCount(Integer.parseInt(additionalProperties + .get(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_COUNT).toString())); + } + if (additionalProperties.containsKey(CodegenConstants.SKIP_OPERATION_EXAMPLE)) { this.setSkipOperationExample(Boolean.parseBoolean(additionalProperties .get(CodegenConstants.SKIP_OPERATION_EXAMPLE).toString())); @@ -3725,9 +3737,14 @@ public class DefaultCodegen implements CodegenConfig { String operationId = getOrGenerateOperationId(operation, path, httpMethod); // remove prefix in operationId if (removeOperationIdPrefix) { - int offset = operationId.indexOf('_'); - if (offset > -1) { - operationId = operationId.substring(offset + 1); + // The prefix is everything before the removeOperationIdPrefixCount occurrence of removeOperationIdPrefixDelimiter + String[] componenets = operationId.split("[" + removeOperationIdPrefixDelimiter + "]"); + if (componenets.length > 1) { + // If removeOperationIdPrefixCount is -1 or bigger that the number of occurrences, uses the last one + int componenet_number = removeOperationIdPrefixCount == -1 ? componenets.length - 1 : removeOperationIdPrefixCount; + componenet_number = Math.min(componenet_number, componenets.length - 1); + // Reconstruct the operationId from its split elements and the delimiter + operationId = String.join(removeOperationIdPrefixDelimiter, Arrays.copyOfRange(componenets, componenet_number, componenets.length)); } } operationId = removeNonNameElementToCamelCase(operationId); @@ -4990,7 +5007,7 @@ public class DefaultCodegen implements CodegenConfig { */ @SuppressWarnings("static-method") public String removeNonNameElementToCamelCase(String name) { - return removeNonNameElementToCamelCase(name, "[-_:;#]"); + return removeNonNameElementToCamelCase(name, "[-_:;#" + removeOperationIdPrefixDelimiter + "]"); } /** @@ -5069,6 +5086,22 @@ public class DefaultCodegen implements CodegenConfig { this.removeOperationIdPrefix = removeOperationIdPrefix; } + public String getRemoveOperationIdPrefixDelimiter() { + return removeOperationIdPrefixDelimiter; + } + + public void setRemoveOperationIdPrefixDelimiter(String removeOperationIdPrefixDelimiter) { + this.removeOperationIdPrefixDelimiter = removeOperationIdPrefixDelimiter; + } + + public int getRemoveOperationIdPrefixCount() { + return removeOperationIdPrefixCount; + } + + public void setRemoveOperationIdPrefixCount(int removeOperationIdPrefixCount) { + this.removeOperationIdPrefixCount = removeOperationIdPrefixCount; + } + public void setSkipOperationExample(boolean skipOperationExample) { this.skipOperationExample = skipOperationExample; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index 1d249e687e4..7b2866bffbc 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -3560,4 +3560,70 @@ public class DefaultCodegenTest { assertEquals(cr.isShort, false); assertEquals(cr.isLong, true); } + + @Test + public void testRemoveOperationIdPrefix() { + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/bugs/issue_9719.yaml"); + final DefaultCodegen codegen = new DefaultCodegen(); + codegen.setOpenAPI(openAPI); + codegen.setDisallowAdditionalPropertiesIfNotPresent(false); + + String path; + Operation operation; + CodegenOperation co; + + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX, "True"); + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_DELIMITER, "."); + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_COUNT, 2); + codegen.processOpts(); + path = "/dotDelimiter"; + operation = openAPI.getPaths().get(path).getGet(); + co = codegen.fromOperation(path, "GET", operation, null); + assertEquals(co.operationId, "usersGetAll"); + + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX, "True"); + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_DELIMITER, "."); + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_COUNT, -1); + codegen.processOpts(); + path = "/dotDelimiter"; + operation = openAPI.getPaths().get(path).getGet(); + co = codegen.fromOperation(path, "GET", operation, null); + assertEquals(co.operationId, "getAll"); + + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX, "True"); + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_DELIMITER, "."); + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_COUNT, 10); + codegen.processOpts(); + path = "/dotDelimiter"; + operation = openAPI.getPaths().get(path).getGet(); + co = codegen.fromOperation(path, "GET", operation, null); + assertEquals(co.operationId, "getAll"); + + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX, "True"); + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_DELIMITER, "_"); + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_COUNT, 2); + codegen.processOpts(); + path = "/underscoreDelimiter"; + operation = openAPI.getPaths().get(path).getGet(); + co = codegen.fromOperation(path, "GET", operation, null); + assertEquals(co.operationId, "usersGetAll"); + + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX, "True"); + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_DELIMITER, "_"); + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_COUNT, -1); + codegen.processOpts(); + path = "/underscoreDelimiter"; + operation = openAPI.getPaths().get(path).getGet(); + co = codegen.fromOperation(path, "GET", operation, null); + assertEquals(co.operationId, "getAll"); + + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX, "True"); + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_DELIMITER, "_"); + codegen.additionalProperties().put(CodegenConstants.REMOVE_OPERATION_ID_PREFIX_COUNT, 10); + codegen.processOpts(); + path = "/underscoreDelimiter"; + operation = openAPI.getPaths().get(path).getGet(); + co = codegen.fromOperation(path, "GET", operation, null); + assertEquals(co.operationId, "getAll"); + } } diff --git a/modules/openapi-generator/src/test/resources/bugs/issue_9719.yaml b/modules/openapi-generator/src/test/resources/bugs/issue_9719.yaml new file mode 100644 index 00000000000..4685794206c --- /dev/null +++ b/modules/openapi-generator/src/test/resources/bugs/issue_9719.yaml @@ -0,0 +1,48 @@ +openapi: 3.0.1 +info: + title: OpenAPI Petstore + description: "sample to vet integer handling" + license: + name: Apache-2.0 + url: https://www.apache.org/licenses/LICENSE-2.0.html + version: 1.0.0 +servers: + - url: http://petstore.swagger.io:80/v2 +tags: [] +paths: + /dotDelimiter: + get: + summary: List all users + operationId: petstore.api.users.get_all + tags: + - users + responses: + '200': + description: A paged array of users + headers: + x-next: + description: A link to the next page of responses + schema: + type: string + content: + application/json: + schema: + type: string + /underscoreDelimiter: + get: + summary: List all users + operationId: petstore_api_users_getAll + tags: + - users + responses: + '200': + description: A paged array of users + headers: + x-next: + description: A link to the next page of responses + schema: + type: string + content: + application/json: + schema: + type: string \ No newline at end of file From 98ae4ab614190d086018098507c19e17fd37c5e5 Mon Sep 17 00:00:00 2001 From: Payal Gadura Date: Thu, 10 Jun 2021 12:59:22 -0400 Subject: [PATCH 115/192] Filter out problem+json mime type from JSON mime types (#9680) --- .../Java/libraries/webclient/ApiClient.mustache | 11 ++++++++++- .../main/java/org/openapitools/client/ApiClient.java | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache index 6491013f5a8..8c3ae87ef01 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache @@ -512,6 +512,15 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} { return mediaType != null && (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType) || mediaType.getSubtype().matches("^.*\\+json[;]?\\s*$")); } + /** + * Check if the given {@code String} is a Problem JSON MIME (RFC-7807). + * @param mediaType the input MediaType + * @return boolean true if the MediaType represents Problem JSON, false otherwise + */ + public boolean isProblemJsonMime(String mediaType) { + return "application/problem+json".equalsIgnoreCase(mediaType); + } + /** * Select the Accept header's value from the given accepts array: * if JSON exists in the given array, use it; @@ -526,7 +535,7 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} { } for (String accept : accepts) { MediaType mediaType = MediaType.parseMediaType(accept); - if (isJsonMime(mediaType)) { + if (isJsonMime(mediaType) && !isProblemJsonMime(accept)) { return Collections.singletonList(mediaType); } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/ApiClient.java index b8a53e2f947..a5823b9bbb3 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/ApiClient.java @@ -497,6 +497,15 @@ public class ApiClient extends JavaTimeFormatter { return mediaType != null && (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType) || mediaType.getSubtype().matches("^.*\\+json[;]?\\s*$")); } + /** + * Check if the given {@code String} is a Problem JSON MIME (RFC-7807). + * @param mediaType the input MediaType + * @return boolean true if the MediaType represents Problem JSON, false otherwise + */ + public boolean isProblemJsonMime(String mediaType) { + return "application/problem+json".equalsIgnoreCase(mediaType); + } + /** * Select the Accept header's value from the given accepts array: * if JSON exists in the given array, use it; @@ -511,7 +520,7 @@ public class ApiClient extends JavaTimeFormatter { } for (String accept : accepts) { MediaType mediaType = MediaType.parseMediaType(accept); - if (isJsonMime(mediaType)) { + if (isJsonMime(mediaType) && !isProblemJsonMime(accept)) { return Collections.singletonList(mediaType); } } From 624b6a7a85a22579f26be47698c99e583f582c64 Mon Sep 17 00:00:00 2001 From: NouemanKHAL Date: Sat, 12 Jun 2021 09:31:40 +0200 Subject: [PATCH 116/192] [typescript] Generate documentation and examples (#9413) * generate docs for typescript * commit changed files --- bin/configs/typescript-consolidated-deno.yaml | 2 + .../typescript-consolidated-inversify.yaml | 2 + .../typescript-consolidated-jquery.yaml | 2 + ...t-consolidated-node-object-parameters.yaml | 2 + bin/configs/typescript-consolidated-node.yaml | 2 + .../languages/TypeScriptClientCodegen.java | 633 ++++++++++++++++++ .../resources/typescript/api_doc.mustache | 84 +++ .../builds/default/.openapi-generator/FILES | 3 + .../typescript/builds/default/PetApi.md | 505 ++++++++++++++ .../typescript/builds/default/StoreApi.md | 233 +++++++ .../typescript/builds/default/UserApi.md | 489 ++++++++++++++ .../builds/deno/.openapi-generator/FILES | 3 + .../petstore/typescript/builds/deno/PetApi.md | 505 ++++++++++++++ .../typescript/builds/deno/StoreApi.md | 233 +++++++ .../typescript/builds/deno/UserApi.md | 489 ++++++++++++++ .../builds/inversify/.openapi-generator/FILES | 3 + .../typescript/builds/inversify/PetApi.md | 505 ++++++++++++++ .../typescript/builds/inversify/StoreApi.md | 233 +++++++ .../typescript/builds/inversify/UserApi.md | 489 ++++++++++++++ .../builds/jquery/.openapi-generator/FILES | 3 + .../typescript/builds/jquery/PetApi.md | 505 ++++++++++++++ .../typescript/builds/jquery/StoreApi.md | 233 +++++++ .../typescript/builds/jquery/UserApi.md | 489 ++++++++++++++ .../object_params/.openapi-generator/FILES | 3 + .../typescript/builds/object_params/PetApi.md | 505 ++++++++++++++ .../builds/object_params/StoreApi.md | 233 +++++++ .../builds/object_params/UserApi.md | 489 ++++++++++++++ 27 files changed, 6877 insertions(+) create mode 100644 modules/openapi-generator/src/main/resources/typescript/api_doc.mustache create mode 100644 samples/openapi3/client/petstore/typescript/builds/default/PetApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/default/StoreApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/default/UserApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/deno/PetApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/deno/StoreApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/deno/UserApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/inversify/PetApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/inversify/StoreApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/inversify/UserApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/jquery/PetApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/jquery/StoreApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/jquery/UserApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/object_params/PetApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/object_params/StoreApi.md create mode 100644 samples/openapi3/client/petstore/typescript/builds/object_params/UserApi.md diff --git a/bin/configs/typescript-consolidated-deno.yaml b/bin/configs/typescript-consolidated-deno.yaml index 67fdb69573d..63140ab6c87 100644 --- a/bin/configs/typescript-consolidated-deno.yaml +++ b/bin/configs/typescript-consolidated-deno.yaml @@ -4,3 +4,5 @@ inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml additionalProperties: platform: deno npmName: ts-petstore-client + projectName: ts-petstore-client + moduleName: petstore diff --git a/bin/configs/typescript-consolidated-inversify.yaml b/bin/configs/typescript-consolidated-inversify.yaml index 70277c6e7ad..f300005abe5 100644 --- a/bin/configs/typescript-consolidated-inversify.yaml +++ b/bin/configs/typescript-consolidated-inversify.yaml @@ -5,3 +5,5 @@ additionalProperties: platform: node npmName: ts-petstore-client useInversify: true + projectName: ts-petstore-client + moduleName: petstore diff --git a/bin/configs/typescript-consolidated-jquery.yaml b/bin/configs/typescript-consolidated-jquery.yaml index 2a9e79af1b2..a4525aa01c4 100644 --- a/bin/configs/typescript-consolidated-jquery.yaml +++ b/bin/configs/typescript-consolidated-jquery.yaml @@ -4,3 +4,5 @@ inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml additionalProperties: framework: jquery npmName: ts-petstore-client + projectName: ts-petstore-client + moduleName: petstore diff --git a/bin/configs/typescript-consolidated-node-object-parameters.yaml b/bin/configs/typescript-consolidated-node-object-parameters.yaml index 40171df194d..8bcf85107e3 100644 --- a/bin/configs/typescript-consolidated-node-object-parameters.yaml +++ b/bin/configs/typescript-consolidated-node-object-parameters.yaml @@ -5,3 +5,5 @@ additionalProperties: platform: node npmName: ts-petstore-client useObjectParameters: true + projectName: ts-petstore-client + moduleName: petstore diff --git a/bin/configs/typescript-consolidated-node.yaml b/bin/configs/typescript-consolidated-node.yaml index 137a5242ed9..7a9acf4828b 100644 --- a/bin/configs/typescript-consolidated-node.yaml +++ b/bin/configs/typescript-consolidated-node.yaml @@ -4,3 +4,5 @@ inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml additionalProperties: platform: node npmName: ts-petstore-client + projectName: ts-petstore-client + moduleName: petstore diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java index c8fe4b4e042..b0d0ef7452c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java @@ -17,24 +17,43 @@ package org.openapitools.codegen.languages; +import com.google.common.collect.Sets; + +import io.swagger.v3.core.util.Json; +import io.swagger.v3.oas.models.media.*; +import io.swagger.v3.oas.models.media.MediaType; +import io.swagger.v3.oas.models.parameters.RequestBody; +import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.parameters.Parameter; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; +import org.openapitools.codegen.CodegenDiscriminator.MappedModel; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.github.curiousoddman.rgxgen.RgxGen; +import com.github.curiousoddman.rgxgen.config.RgxGenOption; +import com.github.curiousoddman.rgxgen.config.RgxGenProperties; import java.io.File; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.regex.Pattern; +import java.util.regex.Matcher; import java.text.SimpleDateFormat; import java.util.*; + import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; +import static org.openapitools.codegen.utils.OnceLogger.once; + public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenConfig { private final Logger LOGGER = LoggerFactory.getLogger(TypeScriptClientCodegen.class); @@ -77,6 +96,9 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo protected String modelPropertyNaming = "camelCase"; protected HashSet languageGenericTypes; + private DateTimeFormatter iso8601Date = DateTimeFormatter.ISO_DATE; + private DateTimeFormatter iso8601DateTime = DateTimeFormatter.ISO_DATE_TIME; + public TypeScriptClientCodegen() { super(); @@ -213,6 +235,7 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo supportingFiles.add(new SupportingFile("api" + File.separator + "middleware.mustache", "", "middleware.ts")); supportingFiles.add(new SupportingFile("api" + File.separator + "baseapi.mustache", "apis", "baseapi.ts")); apiTemplateFiles.put("api" + File.separator + "api.mustache", ".ts"); + apiDocTemplateFiles.put("api_doc.mustache", ".md"); } public String getNpmName() { @@ -853,4 +876,614 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo codegenModel.additionalPropertiesType = getTypeDeclaration((Schema) schema.getAdditionalProperties()); addImport(codegenModel, codegenModel.additionalPropertiesType); } + + public String typescriptDate(Object dateValue) { + String strValue = null; + if (dateValue instanceof OffsetDateTime) { + OffsetDateTime date = null; + try { + date = (OffsetDateTime) dateValue; + } catch (ClassCastException e) { + LOGGER.warn("Invalid `date` format for value {}", dateValue); + date = ((Date) dateValue).toInstant().atOffset(ZoneOffset.UTC); + } + strValue = date.format(iso8601Date); + } else { + strValue = dateValue.toString(); + } + return "new Date('" + strValue + "').toISOString().split('T')[0];"; + } + + public String typescriptDateTime(Object dateTimeValue) { + String strValue = null; + if (dateTimeValue instanceof OffsetDateTime) { + OffsetDateTime dateTime = null; + try { + dateTime = (OffsetDateTime) dateTimeValue; + } catch (ClassCastException e) { + LOGGER.warn("Invalid `date-time` format for value {}", dateTimeValue); + dateTime = ((Date) dateTimeValue).toInstant().atOffset(ZoneOffset.UTC); + } + strValue = dateTime.format(iso8601DateTime); + } else { + strValue = dateTimeValue.toString(); + } + return "new Date('" + strValue + "')"; + } + + public String getModelName(Schema sc) { + if (sc.get$ref() != null) { + Schema unaliasedSchema = unaliasSchema(sc, importMapping); + if (unaliasedSchema.get$ref() != null) { + return toModelName(ModelUtils.getSimpleRef(sc.get$ref())); + } + } + return null; + } + + /** + * Gets an example if it exists + * + * @param sc input schema + * @return the example value + */ + protected Object getObjectExample(Schema sc) { + Schema schema = sc; + String ref = sc.get$ref(); + if (ref != null) { + schema = ModelUtils.getSchema(this.openAPI, ModelUtils.getSimpleRef(ref)); + } + // TODO handle examples in object models in the future + Boolean objectModel = (ModelUtils.isObjectSchema(schema) || ModelUtils.isMapSchema(schema) || ModelUtils.isComposedSchema(schema)); + if (objectModel) { + return null; + } + if (schema.getExample() != null) { + return schema.getExample(); + } + if (schema.getDefault() != null) { + return schema.getDefault(); + } else if (schema.getEnum() != null && !schema.getEnum().isEmpty()) { + return schema.getEnum().get(0); + } + return null; + } + + /*** + * Ensures that the string has a leading and trailing quote + * + * @param in input string + * @return quoted string + */ + private String ensureQuotes(String in) { + Pattern pattern = Pattern.compile("\r\n|\r|\n"); + Matcher matcher = pattern.matcher(in); + if (matcher.find()) { + // if a string has a new line in it add backticks to make it a typescript multiline string + return "`" + in + "`"; + } + String strPattern = "^['\"].*?['\"]$"; + if (in.matches(strPattern)) { + return in; + } + return "\"" + in + "\""; + } + + @Override + public String toExampleValue(Schema schema) { + Object objExample = getObjectExample(schema); + return toExampleValue(schema, objExample); + } + + public String toExampleValue(Schema schema, Object objExample) { + String modelName = getModelName(schema); + return toExampleValueRecursive(modelName, schema, objExample, 1, "", 0, Sets.newHashSet()); + } + + private Boolean simpleStringSchema(Schema schema) { + Schema sc = schema; + String ref = schema.get$ref(); + if (ref != null) { + sc = ModelUtils.getSchema(this.openAPI, ModelUtils.getSimpleRef(ref)); + } + return ModelUtils.isStringSchema(sc) && !ModelUtils.isDateSchema(sc) && !ModelUtils.isDateTimeSchema(sc) && !"Number".equalsIgnoreCase(sc.getFormat()) && !ModelUtils.isByteArraySchema(sc) && !ModelUtils.isBinarySchema(sc) && schema.getPattern() == null; + } + + private MappedModel getDiscriminatorMappedModel(CodegenDiscriminator disc) { + for (MappedModel mm : disc.getMappedModels()) { + String modelName = mm.getModelName(); + Schema modelSchema = getModelNameToSchemaCache().get(modelName); + if (ModelUtils.isObjectSchema(modelSchema)) { + return mm; + } + } + return null; + } + + /*** + * Recursively generates string examples for schemas + * + * @param modelName the string name of the refed model that will be generated for the schema or null + * @param schema the schema that we need an example for + * @param objExample the example that applies to this schema, for now only string example are used + * @param indentationLevel integer indentation level that we are currently at + * we assume the indentaion amount is 2 spaces times this integer + * @param prefix the string prefix that we will use when assigning an example for this line + * this is used when setting key: value, pairs "key: " is the prefix + * and this is used when setting properties like some_property='some_property_example' + * @param exampleLine this is the current line that we are generatign an example for, starts at 0 + * we don't indentin the 0th line because using the example value looks like: + * prop = ModelName( line 0 + * some_property='some_property_example' line 1 + * ) line 2 + * and our example value is: + * ModelName( line 0 + * some_property='some_property_example' line 1 + * ) line 2 + * @param seenSchemas This set contains all the schemas passed into the recursive function. It is used to check + * if a schema was already passed into the function and breaks the infinite recursive loop. The + * only schemas that are not added are ones that contain $ref != null + * @return the string example + */ + private String toExampleValueRecursive(String modelName, Schema schema, Object objExample, int indentationLevel, String prefix, Integer exampleLine, Set seenSchemas) { + final String indentionConst = " "; + String currentIndentation = ""; + String closingIndentation = ""; + for (int i = 0; i < indentationLevel; i++) currentIndentation += indentionConst; + if (exampleLine.equals(0)) { + closingIndentation = currentIndentation; + currentIndentation = ""; + } else { + closingIndentation = currentIndentation; + } + String openChars = ""; + String closeChars = ""; + String fullPrefix = currentIndentation + prefix + openChars; + + String example = null; + if (objExample != null) { + example = objExample.toString(); + } + // checks if the current schema has already been passed in. If so, breaks the current recursive pass + if (seenSchemas.contains(schema)) { + if (modelName != null) { + return fullPrefix + closeChars; + } else { + // this is a recursive schema + // need to add a reasonable example to avoid + // infinite recursion + if (ModelUtils.isNullable(schema)) { + // if the schema is nullable, then 'null' is a valid value + return fullPrefix + "null" + closeChars; + } else if (ModelUtils.isArraySchema(schema)) { + // the schema is an array, add an empty array + return fullPrefix + "[]" + closeChars; + } else { + // the schema is an object, make an empty object + return fullPrefix + "{}" + closeChars; + } + } + } + + if (null != schema.get$ref()) { + Map allDefinitions = ModelUtils.getSchemas(this.openAPI); + String ref = ModelUtils.getSimpleRef(schema.get$ref()); + Schema refSchema = allDefinitions.get(ref); + if (null == refSchema) { + LOGGER.warn("Unable to find referenced schema " + schema.get$ref() + "\n"); + return fullPrefix + "null" + closeChars; + } + String refModelName = getModelName(schema); + return toExampleValueRecursive(refModelName, refSchema, objExample, indentationLevel, prefix, exampleLine, seenSchemas); + } else if (ModelUtils.isNullType(schema) || isAnyTypeSchema(schema)) { + // The 'null' type is allowed in OAS 3.1 and above. It is not supported by OAS 3.0.x, + // though this tooling supports it. + return fullPrefix + "null" + closeChars; + } else if (ModelUtils.isBooleanSchema(schema)) { + if (objExample == null) { + example = "true"; + } else { + if ("false".equalsIgnoreCase(objExample.toString())) { + example = "false"; + } else { + example = "true"; + } + } + return fullPrefix + example + closeChars; + } else if (ModelUtils.isDateSchema(schema)) { + if (objExample == null) { + example = typescriptDate("1970-01-01"); + } else { + example = typescriptDate(objExample); + } + return fullPrefix + example + closeChars; + } else if (ModelUtils.isDateTimeSchema(schema)) { + if (objExample == null) { + example = typescriptDateTime("1970-01-01T00:00:00.00Z"); + } else { + example = typescriptDateTime(objExample); + } + return fullPrefix + example + closeChars; + } else if (ModelUtils.isBinarySchema(schema)) { + if (objExample == null) { + example = "/path/to/file"; + } + example = "{ data: Buffer.from(fs.readFileSync('" + example + "', 'utf-8')), name: '" + example + "' }"; + return fullPrefix + example + closeChars; + } else if (ModelUtils.isByteArraySchema(schema)) { + if (objExample == null) { + example = "'YQ=='"; + } + return fullPrefix + example + closeChars; + } else if (ModelUtils.isStringSchema(schema)) { + if (objExample == null) { + // a BigDecimal: + if ("Number".equalsIgnoreCase(schema.getFormat())) { + example = "2"; + return fullPrefix + example + closeChars; + } else if (StringUtils.isNotBlank(schema.getPattern())) { + String pattern = schema.getPattern(); + /* + RxGen does not support our ECMA dialect https://github.com/curious-odd-man/RgxGen/issues/56 + So strip off the leading / and trailing / and turn on ignore case if we have it + */ + Pattern valueExtractor = Pattern.compile("^/?(.+?)/?(.?)$"); + Matcher m = valueExtractor.matcher(pattern); + RgxGen rgxGen = null; + if (m.find()) { + int groupCount = m.groupCount(); + if (groupCount == 1) { + // only pattern found + String isolatedPattern = m.group(1); + rgxGen = new RgxGen(isolatedPattern); + } else if (groupCount == 2) { + // patterns and flag found + String isolatedPattern = m.group(1); + String flags = m.group(2); + if (flags.contains("i")) { + rgxGen = new RgxGen(isolatedPattern); + RgxGenProperties properties = new RgxGenProperties(); + RgxGenOption.CASE_INSENSITIVE.setInProperties(properties, true); + rgxGen.setProperties(properties); + } else { + rgxGen = new RgxGen(isolatedPattern); + } + } + } else { + rgxGen = new RgxGen(pattern); + } + + // this seed makes it so if we have [a-z] we pick a + Random random = new Random(18); + example = rgxGen.generate(random); + } else if (schema.getMinLength() != null) { + example = ""; + int len = schema.getMinLength().intValue(); + for (int i = 0; i < len; i++) example += "a"; + } else if (ModelUtils.isUUIDSchema(schema)) { + example = "046b6c7f-0b8a-43b9-b35d-6489e6daee91"; + } else { + example = "string_example"; + } + } + return fullPrefix + ensureQuotes(example) + closeChars; + } else if (ModelUtils.isIntegerSchema(schema)) { + if (objExample == null) { + if (schema.getMinimum() != null) { + example = schema.getMinimum().toString(); + } else { + example = "1"; + } + } + return fullPrefix + example + closeChars; + } else if (ModelUtils.isNumberSchema(schema)) { + if (objExample == null) { + if (schema.getMinimum() != null) { + example = schema.getMinimum().toString(); + } else { + example = "3.14"; + } + } + return fullPrefix + example + closeChars; + } else if (ModelUtils.isArraySchema(schema)) { + ArraySchema arrayschema = (ArraySchema) schema; + Schema itemSchema = arrayschema.getItems(); + String itemModelName = getModelName(itemSchema); + if (objExample instanceof Iterable && itemModelName == null) { + // If the example is already a list, return it directly instead of wrongly wrap it in another list + return fullPrefix + objExample.toString() + closeChars; + } + Set newSeenSchemas = new HashSet<>(seenSchemas); + newSeenSchemas.add(schema); + example = fullPrefix + "[" + "\n" + toExampleValueRecursive(itemModelName, itemSchema, objExample, indentationLevel + 1, "", exampleLine + 1, newSeenSchemas) + ",\n" + closingIndentation + "]" + closeChars; + return example; + } else if (ModelUtils.isMapSchema(schema)) { + if (modelName == null) { + fullPrefix += "{"; + closeChars = "}"; + } + Object addPropsObj = schema.getAdditionalProperties(); + // TODO handle true case for additionalProperties + if (addPropsObj instanceof Schema) { + Schema addPropsSchema = (Schema) addPropsObj; + String key = "key"; + Object addPropsExample = getObjectExample(addPropsSchema); + if (addPropsSchema.getEnum() != null && !addPropsSchema.getEnum().isEmpty()) { + key = addPropsSchema.getEnum().get(0).toString(); + } + addPropsExample = exampleFromStringOrArraySchema(addPropsSchema, addPropsExample, key); + String addPropPrefix = key + ": "; + if (modelName == null) { + addPropPrefix = ensureQuotes(key) + ": "; + } + String addPropsModelName = "\"" + getModelName(addPropsSchema) + "\""; + Set newSeenSchemas = new HashSet<>(seenSchemas); + newSeenSchemas.add(schema); + example = fullPrefix + "\n" + toExampleValueRecursive(addPropsModelName, addPropsSchema, addPropsExample, indentationLevel + 1, addPropPrefix, exampleLine + 1, newSeenSchemas) + ",\n" + closingIndentation + closeChars; + } else { + example = fullPrefix + closeChars; + } + return example; + } else if (ModelUtils.isComposedSchema(schema)) { + ComposedSchema cm = (ComposedSchema) schema; + List ls = cm.getOneOf(); + if (!ls.isEmpty()) { + return fullPrefix + toExampleValue(ls.get(0)) + closeChars; + } + return fullPrefix + closeChars; + } else if (ModelUtils.isObjectSchema(schema)) { + fullPrefix += "{"; + closeChars = "}"; + CodegenDiscriminator disc = createDiscriminator(modelName, schema, openAPI); + if (disc != null) { + MappedModel mm = getDiscriminatorMappedModel(disc); + if (mm != null) { + String discPropNameValue = mm.getMappingName(); + String chosenModelName = mm.getModelName(); + // TODO handle this case in the future, this is when the discriminated + // schema allOf includes this schema, like Cat allOf includes Pet + // so this is the composed schema use case + } else { + return fullPrefix + closeChars; + } + } + + Set newSeenSchemas = new HashSet<>(seenSchemas); + newSeenSchemas.add(schema); + String exampleForObjectModel = exampleForObjectModel(schema, fullPrefix, closeChars, null, indentationLevel, exampleLine, closingIndentation, newSeenSchemas); + return exampleForObjectModel; + } else { + LOGGER.warn("Type " + schema.getType() + " not handled properly in toExampleValue"); + } + + return example; + } + + private String exampleForObjectModel(Schema schema, String fullPrefix, String closeChars, CodegenProperty discProp, int indentationLevel, int exampleLine, String closingIndentation, Set seenSchemas) { + Map requiredAndOptionalProps = schema.getProperties(); + if (requiredAndOptionalProps == null || requiredAndOptionalProps.isEmpty()) { + return fullPrefix + closeChars; + } + + String example = fullPrefix + "\n"; + for (Map.Entry entry : requiredAndOptionalProps.entrySet()) { + String propName = entry.getKey(); + Schema propSchema = entry.getValue(); + boolean readOnly = false; + if (propSchema.getReadOnly() != null) { + readOnly = propSchema.getReadOnly(); + } + if (readOnly) { + continue; + } + String ref = propSchema.get$ref(); + if (ref != null) { + Schema refSchema = ModelUtils.getSchema(this.openAPI, ModelUtils.getSimpleRef(ref)); + if (refSchema.getReadOnly() != null) { + readOnly = refSchema.getReadOnly(); + } + if (readOnly) { + continue; + } + } + propName = toVarName(propName); + String propModelName = null; + Object propExample = null; + if (discProp != null && propName.equals(discProp.name)) { + propModelName = null; + propExample = discProp.example; + } else { + propModelName = getModelName(propSchema); + propExample = exampleFromStringOrArraySchema(propSchema, null, propName); + } + example += toExampleValueRecursive(propModelName, propSchema, propExample, indentationLevel + 1, propName + ": ", exampleLine + 1, seenSchemas) + ",\n"; + } + // TODO handle additionalProperties also + example += closingIndentation + closeChars; + return example; + } + + private Object exampleFromStringOrArraySchema(Schema sc, Object currentExample, String propName) { + if (currentExample != null) { + return currentExample; + } + Schema schema = sc; + String ref = sc.get$ref(); + if (ref != null) { + schema = ModelUtils.getSchema(this.openAPI, ModelUtils.getSimpleRef(ref)); + } + Object example = getObjectExample(schema); + if (example != null) { + return example; + } else if (simpleStringSchema(schema)) { + return propName + "_example"; + } else if (ModelUtils.isArraySchema(schema)) { + ArraySchema arraySchema = (ArraySchema) schema; + Schema itemSchema = arraySchema.getItems(); + example = getObjectExample(itemSchema); + if (example != null) { + return example; + } else if (simpleStringSchema(itemSchema)) { + return propName + "_example"; + } + } + return null; + } + + protected String setPropertyExampleValue(CodegenProperty p) { + String example; + + if (p == null) { + return "null"; + } + + if (p.defaultValue == null) { + example = p.example; + } else { + example = p.defaultValue; + } + + String type = p.baseType; + if (type == null) { + type = p.dataType; + } + + if (Boolean.TRUE.equals(p.isInteger)) { + if (example == null) { + example = "56"; + } + } else if (Boolean.TRUE.equals(p.isLong)) { + if (example == null) { + example = "789"; + } + } else if (Boolean.TRUE.equals(p.isDouble) + || Boolean.TRUE.equals(p.isFloat) + || Boolean.TRUE.equals(p.isNumber)) { + if (example == null) { + example = "3.4"; + } + } else if (Boolean.TRUE.equals(p.isBoolean)) { + if (example == null) { + example = "true"; + } + } else if (Boolean.TRUE.equals(p.isFile) || Boolean.TRUE.equals(p.isBinary)) { + if (example == null) { + example = "/path/to/file"; + } + example = "\"" + escapeText(example) + "\""; + } else if (Boolean.TRUE.equals(p.isDate)) { + if (example == null) { + example = "2013-10-20"; + } + example = "new Date(\"" + escapeText(example) + "\")"; + } else if (Boolean.TRUE.equals(p.isDateTime)) { + if (example == null) { + example = "2013-10-20T19:20:30+01:00"; + } + example = "new Date(\"" + escapeText(example) + "\")"; + } else if (Boolean.TRUE.equals(p.isString)) { + if (example == null) { + example = p.name + "_example"; + } + example = "\"" + escapeText(example) + "\""; + } else if (!languageSpecificPrimitives.contains(type)) { + // type is a model class, e.g. User + example = "new " + "{{moduleName}}" + "." + type + "()"; + } + + return example; + } + + + /*** + * + * Set the codegenParameter example value + * We have a custom version of this function so we can invoke toExampleValue + * + * @param codegenParameter the item we are setting the example on + * @param parameter the base parameter that came from the spec + */ + @Override + public void setParameterExampleValue(CodegenParameter codegenParameter, Parameter parameter) { + Schema schema = parameter.getSchema(); + if (schema == null) { + LOGGER.warn("CodegenParameter.example defaulting to null because parameter lacks a schema"); + return; + } + + Object example = null; + if (codegenParameter.vendorExtensions != null && codegenParameter.vendorExtensions.containsKey("x-example")) { + example = codegenParameter.vendorExtensions.get("x-example"); + } else if (parameter.getExample() != null) { + example = parameter.getExample(); + } else if (parameter.getExamples() != null && !parameter.getExamples().isEmpty() && parameter.getExamples().values().iterator().next().getValue() != null) { + example = parameter.getExamples().values().iterator().next().getValue(); + } else { + example = getObjectExample(schema); + } + example = exampleFromStringOrArraySchema(schema, example, parameter.getName()); + String finalExample = toExampleValue(schema, example); + codegenParameter.example = finalExample; + } + + /** + * Return the example value of the parameter. + * + * @param codegenParameter Codegen parameter + * @param requestBody Request body + */ + @Override + public void setParameterExampleValue(CodegenParameter codegenParameter, RequestBody requestBody) { + if (codegenParameter.vendorExtensions != null && codegenParameter.vendorExtensions.containsKey("x-example")) { + codegenParameter.example = Json.pretty(codegenParameter.vendorExtensions.get("x-example")); + } + + Content content = requestBody.getContent(); + + if (content.size() > 1) { + // @see ModelUtils.getSchemaFromContent() + once(LOGGER).warn("Multiple MediaTypes found, using only the first one"); + } + + MediaType mediaType = content.values().iterator().next(); + Schema schema = mediaType.getSchema(); + if (schema == null) { + LOGGER.warn("CodegenParameter.example defaulting to null because requestBody content lacks a schema"); + return; + } + + Object example = null; + if (mediaType.getExample() != null) { + example = mediaType.getExample(); + } else if (mediaType.getExamples() != null && !mediaType.getExamples().isEmpty() && mediaType.getExamples().values().iterator().next().getValue() != null) { + example = mediaType.getExamples().values().iterator().next().getValue(); + } else { + example = getObjectExample(schema); + } + example = exampleFromStringOrArraySchema(schema, example, codegenParameter.paramName); + codegenParameter.example = toExampleValue(schema, example); + } + + /** + * Create a CodegenParameter for a Form Property + * We have a custom version of this method so we can invoke + * setParameterExampleValue(codegenParameter, parameter) + * rather than setParameterExampleValue(codegenParameter) + * This ensures that all of our samples are generated in + * toExampleValueRecursive + * + * @param name the property name + * @param propertySchema the property schema + * @param imports our import set + * @return the resultant CodegenParameter + */ + @Override + public CodegenParameter fromFormProperty(String name, Schema propertySchema, Set imports) { + CodegenParameter cp = super.fromFormProperty(name, propertySchema, imports); + Parameter p = new Parameter(); + p.setSchema(propertySchema); + p.setName(cp.paramName); + setParameterExampleValue(cp, p); + return cp; + } } diff --git a/modules/openapi-generator/src/main/resources/typescript/api_doc.mustache b/modules/openapi-generator/src/main/resources/typescript/api_doc.mustache new file mode 100644 index 00000000000..e58bf337875 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript/api_doc.mustache @@ -0,0 +1,84 @@ +# {{moduleName}}.{{classname}}{{#description}} + +{{description}}{{/description}} + +All URIs are relative to *{{basePath}}* + +Method | HTTP request | Description +------------- | ------------- | ------------- +{{#operations}}{{#operation}}[**{{operationId}}**]({{classname}}.md#{{operationId}}) | **{{httpMethod}}** {{path}} | {{#summary}}{{summary}}{{/summary}} +{{/operation}}{{/operations}} + +{{#operations}} +{{#operation}} +# **{{{operationId}}}** +> {{#returnType}}{{{returnType}}} {{/returnType}}{{{operationId}}}({{#requiredParams}}{{^defaultValue}}{{paramName}}{{^-last}}, {{/-last}}{{/defaultValue}}{{/requiredParams}}) + +{{#notes}} +{{{notes}}} +{{/notes}} + +### Example + + +```typescript +import { {{{moduleName}}} } from '{{{projectName}}}'; +import * as fs from 'fs'; + +const configuration = {{{moduleName}}}.createConfiguration(); +const apiInstance = new {{{moduleName}}}.{{classname}}(configuration); + +{{#hasParams}} +let body:{{{moduleName}}}.{{classname}}{{operationIdCamelCase}}Request = { +{{#allParams}} + // {{{dataType}}}{{#description}} | {{{description}}}{{/description}}{{^required}} (optional){{/required}} + {{paramName}}: {{{example}}}, +{{/allParams}} +}; +{{/hasParams}} +{{^hasParams}} +let body:any = {}; +{{/hasParams}} + +apiInstance.{{{operationId}}}(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters +{{^hasParams}}This endpoint does not need any parameter.{{/hasParams}}{{#allParams}}{{#-last}} +Name | Type | Description | Notes +------------- | ------------- | ------------- | -------------{{/-last}}{{/allParams}} +{{#allParams}}{{^defaultValue}} **{{paramName}}** | {{^isPrimitiveType}}**{{{dataType}}}**{{/isPrimitiveType}}{{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}| {{description}} | +{{/defaultValue}}{{/allParams}}{{#allParams}}{{#defaultValue}} **{{paramName}}** | {{^isPrimitiveType}}{{^isEnum}}**{{dataType}}**{{/isEnum}}{{/isPrimitiveType}}{{#isPrimitiveType}}[**{{dataType}}**]{{/isPrimitiveType}}{{#isEnum}}{{#allowableValues}}{{#enumVars}}{{#-first}}**Array<{{/-first}}{{value}}{{^-last}} | {{/-last}}{{#-last}}>**{{/-last}}{{/enumVars}}{{/allowableValues}}{{/isEnum}} | {{description}} |{{^required}} (optional){{/required}} defaults to {{{.}}} +{{/defaultValue}}{{/allParams}} + +### Return type + +{{#returnType}}{{#returnTypeIsPrimitive}}**{{{returnType}}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}**{{{returnType}}}**{{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}void (empty response body){{/returnType}} + +### Authorization + +{{^authMethods}}No authorization required{{/authMethods}}{{#authMethods}}[{{{name}}}](README.md#{{{name}}}){{^-last}}, {{/-last}}{{/authMethods}} + +### HTTP request headers + + - **Content-Type**: {{#consumes}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/consumes}}{{^consumes}}Not defined{{/consumes}} + - **Accept**: {{#produces}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/produces}}{{^produces}}Not defined{{/produces}} + +{{#responses.0}} + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +{{#responses}} +**{{code}}** | {{message}} | {{#headers}} * {{baseName}} - {{description}}
    {{/headers}}{{^headers.0}} - {{/headers.0}} | +{{/responses}} +{{/responses.0}} + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +{{/operation}} +{{/operations}} + diff --git a/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/FILES b/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/FILES index 29f9ff544d9..4137d52d1cd 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/FILES @@ -1,5 +1,8 @@ .gitignore +PetApi.md README.md +StoreApi.md +UserApi.md apis/PetApi.ts apis/StoreApi.ts apis/UserApi.ts diff --git a/samples/openapi3/client/petstore/typescript/builds/default/PetApi.md b/samples/openapi3/client/petstore/typescript/builds/default/PetApi.md new file mode 100644 index 00000000000..2fe727d84fa --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/default/PetApi.md @@ -0,0 +1,505 @@ +# petstore.PetApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store +[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags +[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID +[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet +[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image + + +# **addPet** +> Pet addPet(pet) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiAddPetRequest = { + // Pet | Pet object that needs to be added to the store + pet: { + id: 1, + category: { + id: 1, + name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + }, + name: "doggie", + photoUrls: [ + "photoUrls_example", + ], + tags: [ + { + id: 1, + name: "name_example", + }, + ], + status: "available", + }, +}; + +apiInstance.addPet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | **Pet**| Pet object that needs to be added to the store | + + +### Return type + +**Pet** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **deletePet** +> deletePet() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiDeletePetRequest = { + // number | Pet id to delete + petId: 1, + // string (optional) + apiKey: "api_key_example", +}; + +apiInstance.deletePet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | Pet id to delete | defaults to undefined + **apiKey** | [**string**] | | (optional) defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid pet value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **findPetsByStatus** +> Array findPetsByStatus() + +Multiple status values can be provided with comma separated strings + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiFindPetsByStatusRequest = { + // Array<'available' | 'pending' | 'sold'> | Status values that need to be considered for filter + status: [ + "available", + ], +}; + +apiInstance.findPetsByStatus(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | **Array<'available' | 'pending' | 'sold'>** | Status values that need to be considered for filter | defaults to undefined + + +### Return type + +**Array** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid status value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **findPetsByTags** +> Array findPetsByTags() + +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiFindPetsByTagsRequest = { + // Array | Tags to filter by + tags: [ + "tags_example", + ], +}; + +apiInstance.findPetsByTags(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | **Array<string>** | Tags to filter by | defaults to undefined + + +### Return type + +**Array** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid tag value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getPetById** +> Pet getPetById() + +Returns a single pet + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiGetPetByIdRequest = { + // number | ID of pet to return + petId: 1, +}; + +apiInstance.getPetById(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet to return | defaults to undefined + + +### Return type + +**Pet** + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Pet not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updatePet** +> Pet updatePet(pet) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUpdatePetRequest = { + // Pet | Pet object that needs to be added to the store + pet: { + id: 1, + category: { + id: 1, + name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + }, + name: "doggie", + photoUrls: [ + "photoUrls_example", + ], + tags: [ + { + id: 1, + name: "name_example", + }, + ], + status: "available", + }, +}; + +apiInstance.updatePet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | **Pet**| Pet object that needs to be added to the store | + + +### Return type + +**Pet** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Pet not found | - | +**405** | Validation exception | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updatePetWithForm** +> updatePetWithForm() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUpdatePetWithFormRequest = { + // number | ID of pet that needs to be updated + petId: 1, + // string | Updated name of the pet (optional) + name: "name_example", + // string | Updated status of the pet (optional) + status: "status_example", +}; + +apiInstance.updatePetWithForm(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet that needs to be updated | defaults to undefined + **name** | [**string**] | Updated name of the pet | (optional) defaults to undefined + **status** | [**string**] | Updated status of the pet | (optional) defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **uploadFile** +> ApiResponse uploadFile() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUploadFileRequest = { + // number | ID of pet to update + petId: 1, + // string | Additional data to pass to server (optional) + additionalMetadata: "additionalMetadata_example", + // HttpFile | file to upload (optional) + file: { data: Buffer.from(fs.readFileSync('/path/to/file', 'utf-8')), name: '/path/to/file' }, +}; + +apiInstance.uploadFile(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet to update | defaults to undefined + **additionalMetadata** | [**string**] | Additional data to pass to server | (optional) defaults to undefined + **file** | [**HttpFile**] | file to upload | (optional) defaults to undefined + + +### Return type + +**ApiResponse** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/default/StoreApi.md b/samples/openapi3/client/petstore/typescript/builds/default/StoreApi.md new file mode 100644 index 00000000000..b2a63f78219 --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/default/StoreApi.md @@ -0,0 +1,233 @@ +# petstore.StoreApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status +[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID +[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet + + +# **deleteOrder** +> deleteOrder() + +For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiDeleteOrderRequest = { + // string | ID of the order that needs to be deleted + orderId: "orderId_example", +}; + +apiInstance.deleteOrder(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | [**string**] | ID of the order that needs to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid ID supplied | - | +**404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getInventory** +> { [key: string]: number; } getInventory() + +Returns a map of status codes to quantities + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:any = {}; + +apiInstance.getInventory(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters +This endpoint does not need any parameter. + + +### Return type + +**{ [key: string]: number; }** + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getOrderById** +> Order getOrderById() + +For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiGetOrderByIdRequest = { + // number | ID of pet that needs to be fetched + orderId: 1, +}; + +apiInstance.getOrderById(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | [**number**] | ID of pet that needs to be fetched | defaults to undefined + + +### Return type + +**Order** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **placeOrder** +> Order placeOrder(order) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiPlaceOrderRequest = { + // Order | order placed for purchasing the pet + order: { + id: 1, + petId: 1, + quantity: 1, + shipDate: new Date('1970-01-01T00:00:00.00Z'), + status: "placed", + complete: false, + }, +}; + +apiInstance.placeOrder(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **order** | **Order**| order placed for purchasing the pet | + + +### Return type + +**Order** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid Order | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/default/UserApi.md b/samples/openapi3/client/petstore/typescript/builds/default/UserApi.md new file mode 100644 index 00000000000..e5ac670bd7c --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/default/UserApi.md @@ -0,0 +1,489 @@ +# petstore.UserApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**createUser**](UserApi.md#createUser) | **POST** /user | Create user +[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array +[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user +[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name +[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system +[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session +[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user + + +# **createUser** +> createUser(user) + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUserRequest = { + // User | Created user object + user: { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, +}; + +apiInstance.createUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **User**| Created user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **createUsersWithArrayInput** +> createUsersWithArrayInput(user) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUsersWithArrayInputRequest = { + // Array | List of user object + user: [ + { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, + ], +}; + +apiInstance.createUsersWithArrayInput(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **Array**| List of user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **createUsersWithListInput** +> createUsersWithListInput(user) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUsersWithListInputRequest = { + // Array | List of user object + user: [ + { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, + ], +}; + +apiInstance.createUsersWithListInput(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **Array**| List of user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **deleteUser** +> deleteUser() + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiDeleteUserRequest = { + // string | The name that needs to be deleted + username: "username_example", +}; + +apiInstance.deleteUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The name that needs to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid username supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getUserByName** +> User getUserByName() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiGetUserByNameRequest = { + // string | The name that needs to be fetched. Use user1 for testing. + username: "username_example", +}; + +apiInstance.getUserByName(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The name that needs to be fetched. Use user1 for testing. | defaults to undefined + + +### Return type + +**User** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid username supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **loginUser** +> string loginUser() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiLoginUserRequest = { + // string | The user name for login + username: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + // string | The password for login in clear text + password: "password_example", +}; + +apiInstance.loginUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The user name for login | defaults to undefined + **password** | [**string**] | The password for login in clear text | defaults to undefined + + +### Return type + +**string** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | * Set-Cookie - Cookie authentication key for use with the `api_key` apiKey authentication.
    * X-Rate-Limit - calls per hour allowed by the user
    * X-Expires-After - date in UTC when toekn expires
    | +**400** | Invalid username/password supplied | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **logoutUser** +> logoutUser() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:any = {}; + +apiInstance.logoutUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters +This endpoint does not need any parameter. + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updateUser** +> updateUser(user) + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiUpdateUserRequest = { + // string | name that need to be deleted + username: "username_example", + // User | Updated user object + user: { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, +}; + +apiInstance.updateUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **User**| Updated user object | + **username** | [**string**] | name that need to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid user supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/FILES b/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/FILES index 3b444ce2b10..156ef7ba37f 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/FILES @@ -1,4 +1,7 @@ .gitignore +PetApi.md +StoreApi.md +UserApi.md apis/PetApi.ts apis/StoreApi.ts apis/UserApi.ts diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/PetApi.md b/samples/openapi3/client/petstore/typescript/builds/deno/PetApi.md new file mode 100644 index 00000000000..2fe727d84fa --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/deno/PetApi.md @@ -0,0 +1,505 @@ +# petstore.PetApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store +[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags +[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID +[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet +[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image + + +# **addPet** +> Pet addPet(pet) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiAddPetRequest = { + // Pet | Pet object that needs to be added to the store + pet: { + id: 1, + category: { + id: 1, + name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + }, + name: "doggie", + photoUrls: [ + "photoUrls_example", + ], + tags: [ + { + id: 1, + name: "name_example", + }, + ], + status: "available", + }, +}; + +apiInstance.addPet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | **Pet**| Pet object that needs to be added to the store | + + +### Return type + +**Pet** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **deletePet** +> deletePet() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiDeletePetRequest = { + // number | Pet id to delete + petId: 1, + // string (optional) + apiKey: "api_key_example", +}; + +apiInstance.deletePet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | Pet id to delete | defaults to undefined + **apiKey** | [**string**] | | (optional) defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid pet value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **findPetsByStatus** +> Array findPetsByStatus() + +Multiple status values can be provided with comma separated strings + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiFindPetsByStatusRequest = { + // Array<'available' | 'pending' | 'sold'> | Status values that need to be considered for filter + status: [ + "available", + ], +}; + +apiInstance.findPetsByStatus(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | **Array<'available' | 'pending' | 'sold'>** | Status values that need to be considered for filter | defaults to undefined + + +### Return type + +**Array** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid status value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **findPetsByTags** +> Array findPetsByTags() + +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiFindPetsByTagsRequest = { + // Array | Tags to filter by + tags: [ + "tags_example", + ], +}; + +apiInstance.findPetsByTags(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | **Array<string>** | Tags to filter by | defaults to undefined + + +### Return type + +**Array** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid tag value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getPetById** +> Pet getPetById() + +Returns a single pet + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiGetPetByIdRequest = { + // number | ID of pet to return + petId: 1, +}; + +apiInstance.getPetById(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet to return | defaults to undefined + + +### Return type + +**Pet** + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Pet not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updatePet** +> Pet updatePet(pet) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUpdatePetRequest = { + // Pet | Pet object that needs to be added to the store + pet: { + id: 1, + category: { + id: 1, + name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + }, + name: "doggie", + photoUrls: [ + "photoUrls_example", + ], + tags: [ + { + id: 1, + name: "name_example", + }, + ], + status: "available", + }, +}; + +apiInstance.updatePet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | **Pet**| Pet object that needs to be added to the store | + + +### Return type + +**Pet** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Pet not found | - | +**405** | Validation exception | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updatePetWithForm** +> updatePetWithForm() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUpdatePetWithFormRequest = { + // number | ID of pet that needs to be updated + petId: 1, + // string | Updated name of the pet (optional) + name: "name_example", + // string | Updated status of the pet (optional) + status: "status_example", +}; + +apiInstance.updatePetWithForm(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet that needs to be updated | defaults to undefined + **name** | [**string**] | Updated name of the pet | (optional) defaults to undefined + **status** | [**string**] | Updated status of the pet | (optional) defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **uploadFile** +> ApiResponse uploadFile() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUploadFileRequest = { + // number | ID of pet to update + petId: 1, + // string | Additional data to pass to server (optional) + additionalMetadata: "additionalMetadata_example", + // HttpFile | file to upload (optional) + file: { data: Buffer.from(fs.readFileSync('/path/to/file', 'utf-8')), name: '/path/to/file' }, +}; + +apiInstance.uploadFile(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet to update | defaults to undefined + **additionalMetadata** | [**string**] | Additional data to pass to server | (optional) defaults to undefined + **file** | [**HttpFile**] | file to upload | (optional) defaults to undefined + + +### Return type + +**ApiResponse** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/StoreApi.md b/samples/openapi3/client/petstore/typescript/builds/deno/StoreApi.md new file mode 100644 index 00000000000..b2a63f78219 --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/deno/StoreApi.md @@ -0,0 +1,233 @@ +# petstore.StoreApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status +[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID +[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet + + +# **deleteOrder** +> deleteOrder() + +For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiDeleteOrderRequest = { + // string | ID of the order that needs to be deleted + orderId: "orderId_example", +}; + +apiInstance.deleteOrder(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | [**string**] | ID of the order that needs to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid ID supplied | - | +**404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getInventory** +> { [key: string]: number; } getInventory() + +Returns a map of status codes to quantities + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:any = {}; + +apiInstance.getInventory(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters +This endpoint does not need any parameter. + + +### Return type + +**{ [key: string]: number; }** + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getOrderById** +> Order getOrderById() + +For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiGetOrderByIdRequest = { + // number | ID of pet that needs to be fetched + orderId: 1, +}; + +apiInstance.getOrderById(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | [**number**] | ID of pet that needs to be fetched | defaults to undefined + + +### Return type + +**Order** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **placeOrder** +> Order placeOrder(order) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiPlaceOrderRequest = { + // Order | order placed for purchasing the pet + order: { + id: 1, + petId: 1, + quantity: 1, + shipDate: new Date('1970-01-01T00:00:00.00Z'), + status: "placed", + complete: false, + }, +}; + +apiInstance.placeOrder(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **order** | **Order**| order placed for purchasing the pet | + + +### Return type + +**Order** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid Order | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/UserApi.md b/samples/openapi3/client/petstore/typescript/builds/deno/UserApi.md new file mode 100644 index 00000000000..e5ac670bd7c --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/deno/UserApi.md @@ -0,0 +1,489 @@ +# petstore.UserApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**createUser**](UserApi.md#createUser) | **POST** /user | Create user +[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array +[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user +[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name +[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system +[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session +[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user + + +# **createUser** +> createUser(user) + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUserRequest = { + // User | Created user object + user: { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, +}; + +apiInstance.createUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **User**| Created user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **createUsersWithArrayInput** +> createUsersWithArrayInput(user) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUsersWithArrayInputRequest = { + // Array | List of user object + user: [ + { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, + ], +}; + +apiInstance.createUsersWithArrayInput(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **Array**| List of user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **createUsersWithListInput** +> createUsersWithListInput(user) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUsersWithListInputRequest = { + // Array | List of user object + user: [ + { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, + ], +}; + +apiInstance.createUsersWithListInput(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **Array**| List of user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **deleteUser** +> deleteUser() + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiDeleteUserRequest = { + // string | The name that needs to be deleted + username: "username_example", +}; + +apiInstance.deleteUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The name that needs to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid username supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getUserByName** +> User getUserByName() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiGetUserByNameRequest = { + // string | The name that needs to be fetched. Use user1 for testing. + username: "username_example", +}; + +apiInstance.getUserByName(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The name that needs to be fetched. Use user1 for testing. | defaults to undefined + + +### Return type + +**User** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid username supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **loginUser** +> string loginUser() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiLoginUserRequest = { + // string | The user name for login + username: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + // string | The password for login in clear text + password: "password_example", +}; + +apiInstance.loginUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The user name for login | defaults to undefined + **password** | [**string**] | The password for login in clear text | defaults to undefined + + +### Return type + +**string** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | * Set-Cookie - Cookie authentication key for use with the `api_key` apiKey authentication.
    * X-Rate-Limit - calls per hour allowed by the user
    * X-Expires-After - date in UTC when toekn expires
    | +**400** | Invalid username/password supplied | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **logoutUser** +> logoutUser() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:any = {}; + +apiInstance.logoutUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters +This endpoint does not need any parameter. + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updateUser** +> updateUser(user) + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiUpdateUserRequest = { + // string | name that need to be deleted + username: "username_example", + // User | Updated user object + user: { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, +}; + +apiInstance.updateUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **User**| Updated user object | + **username** | [**string**] | name that need to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid user supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/FILES b/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/FILES index 4f2382c7e38..2546d613ef9 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/FILES @@ -1,5 +1,8 @@ .gitignore +PetApi.md README.md +StoreApi.md +UserApi.md apis/PetApi.service.ts apis/PetApi.ts apis/StoreApi.service.ts diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/PetApi.md b/samples/openapi3/client/petstore/typescript/builds/inversify/PetApi.md new file mode 100644 index 00000000000..2fe727d84fa --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/PetApi.md @@ -0,0 +1,505 @@ +# petstore.PetApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store +[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags +[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID +[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet +[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image + + +# **addPet** +> Pet addPet(pet) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiAddPetRequest = { + // Pet | Pet object that needs to be added to the store + pet: { + id: 1, + category: { + id: 1, + name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + }, + name: "doggie", + photoUrls: [ + "photoUrls_example", + ], + tags: [ + { + id: 1, + name: "name_example", + }, + ], + status: "available", + }, +}; + +apiInstance.addPet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | **Pet**| Pet object that needs to be added to the store | + + +### Return type + +**Pet** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **deletePet** +> deletePet() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiDeletePetRequest = { + // number | Pet id to delete + petId: 1, + // string (optional) + apiKey: "api_key_example", +}; + +apiInstance.deletePet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | Pet id to delete | defaults to undefined + **apiKey** | [**string**] | | (optional) defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid pet value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **findPetsByStatus** +> Array findPetsByStatus() + +Multiple status values can be provided with comma separated strings + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiFindPetsByStatusRequest = { + // Array<'available' | 'pending' | 'sold'> | Status values that need to be considered for filter + status: [ + "available", + ], +}; + +apiInstance.findPetsByStatus(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | **Array<'available' | 'pending' | 'sold'>** | Status values that need to be considered for filter | defaults to undefined + + +### Return type + +**Array** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid status value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **findPetsByTags** +> Array findPetsByTags() + +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiFindPetsByTagsRequest = { + // Array | Tags to filter by + tags: [ + "tags_example", + ], +}; + +apiInstance.findPetsByTags(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | **Array<string>** | Tags to filter by | defaults to undefined + + +### Return type + +**Array** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid tag value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getPetById** +> Pet getPetById() + +Returns a single pet + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiGetPetByIdRequest = { + // number | ID of pet to return + petId: 1, +}; + +apiInstance.getPetById(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet to return | defaults to undefined + + +### Return type + +**Pet** + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Pet not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updatePet** +> Pet updatePet(pet) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUpdatePetRequest = { + // Pet | Pet object that needs to be added to the store + pet: { + id: 1, + category: { + id: 1, + name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + }, + name: "doggie", + photoUrls: [ + "photoUrls_example", + ], + tags: [ + { + id: 1, + name: "name_example", + }, + ], + status: "available", + }, +}; + +apiInstance.updatePet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | **Pet**| Pet object that needs to be added to the store | + + +### Return type + +**Pet** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Pet not found | - | +**405** | Validation exception | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updatePetWithForm** +> updatePetWithForm() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUpdatePetWithFormRequest = { + // number | ID of pet that needs to be updated + petId: 1, + // string | Updated name of the pet (optional) + name: "name_example", + // string | Updated status of the pet (optional) + status: "status_example", +}; + +apiInstance.updatePetWithForm(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet that needs to be updated | defaults to undefined + **name** | [**string**] | Updated name of the pet | (optional) defaults to undefined + **status** | [**string**] | Updated status of the pet | (optional) defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **uploadFile** +> ApiResponse uploadFile() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUploadFileRequest = { + // number | ID of pet to update + petId: 1, + // string | Additional data to pass to server (optional) + additionalMetadata: "additionalMetadata_example", + // HttpFile | file to upload (optional) + file: { data: Buffer.from(fs.readFileSync('/path/to/file', 'utf-8')), name: '/path/to/file' }, +}; + +apiInstance.uploadFile(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet to update | defaults to undefined + **additionalMetadata** | [**string**] | Additional data to pass to server | (optional) defaults to undefined + **file** | [**HttpFile**] | file to upload | (optional) defaults to undefined + + +### Return type + +**ApiResponse** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/StoreApi.md b/samples/openapi3/client/petstore/typescript/builds/inversify/StoreApi.md new file mode 100644 index 00000000000..b2a63f78219 --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/StoreApi.md @@ -0,0 +1,233 @@ +# petstore.StoreApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status +[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID +[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet + + +# **deleteOrder** +> deleteOrder() + +For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiDeleteOrderRequest = { + // string | ID of the order that needs to be deleted + orderId: "orderId_example", +}; + +apiInstance.deleteOrder(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | [**string**] | ID of the order that needs to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid ID supplied | - | +**404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getInventory** +> { [key: string]: number; } getInventory() + +Returns a map of status codes to quantities + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:any = {}; + +apiInstance.getInventory(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters +This endpoint does not need any parameter. + + +### Return type + +**{ [key: string]: number; }** + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getOrderById** +> Order getOrderById() + +For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiGetOrderByIdRequest = { + // number | ID of pet that needs to be fetched + orderId: 1, +}; + +apiInstance.getOrderById(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | [**number**] | ID of pet that needs to be fetched | defaults to undefined + + +### Return type + +**Order** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **placeOrder** +> Order placeOrder(order) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiPlaceOrderRequest = { + // Order | order placed for purchasing the pet + order: { + id: 1, + petId: 1, + quantity: 1, + shipDate: new Date('1970-01-01T00:00:00.00Z'), + status: "placed", + complete: false, + }, +}; + +apiInstance.placeOrder(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **order** | **Order**| order placed for purchasing the pet | + + +### Return type + +**Order** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid Order | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/UserApi.md b/samples/openapi3/client/petstore/typescript/builds/inversify/UserApi.md new file mode 100644 index 00000000000..e5ac670bd7c --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/UserApi.md @@ -0,0 +1,489 @@ +# petstore.UserApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**createUser**](UserApi.md#createUser) | **POST** /user | Create user +[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array +[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user +[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name +[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system +[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session +[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user + + +# **createUser** +> createUser(user) + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUserRequest = { + // User | Created user object + user: { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, +}; + +apiInstance.createUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **User**| Created user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **createUsersWithArrayInput** +> createUsersWithArrayInput(user) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUsersWithArrayInputRequest = { + // Array | List of user object + user: [ + { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, + ], +}; + +apiInstance.createUsersWithArrayInput(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **Array**| List of user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **createUsersWithListInput** +> createUsersWithListInput(user) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUsersWithListInputRequest = { + // Array | List of user object + user: [ + { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, + ], +}; + +apiInstance.createUsersWithListInput(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **Array**| List of user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **deleteUser** +> deleteUser() + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiDeleteUserRequest = { + // string | The name that needs to be deleted + username: "username_example", +}; + +apiInstance.deleteUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The name that needs to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid username supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getUserByName** +> User getUserByName() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiGetUserByNameRequest = { + // string | The name that needs to be fetched. Use user1 for testing. + username: "username_example", +}; + +apiInstance.getUserByName(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The name that needs to be fetched. Use user1 for testing. | defaults to undefined + + +### Return type + +**User** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid username supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **loginUser** +> string loginUser() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiLoginUserRequest = { + // string | The user name for login + username: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + // string | The password for login in clear text + password: "password_example", +}; + +apiInstance.loginUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The user name for login | defaults to undefined + **password** | [**string**] | The password for login in clear text | defaults to undefined + + +### Return type + +**string** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | * Set-Cookie - Cookie authentication key for use with the `api_key` apiKey authentication.
    * X-Rate-Limit - calls per hour allowed by the user
    * X-Expires-After - date in UTC when toekn expires
    | +**400** | Invalid username/password supplied | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **logoutUser** +> logoutUser() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:any = {}; + +apiInstance.logoutUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters +This endpoint does not need any parameter. + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updateUser** +> updateUser(user) + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiUpdateUserRequest = { + // string | name that need to be deleted + username: "username_example", + // User | Updated user object + user: { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, +}; + +apiInstance.updateUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **User**| Updated user object | + **username** | [**string**] | name that need to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid user supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/FILES b/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/FILES index 031c2957055..dfa2fadc5b0 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/FILES @@ -1,5 +1,8 @@ .gitignore +PetApi.md README.md +StoreApi.md +UserApi.md apis/PetApi.ts apis/StoreApi.ts apis/UserApi.ts diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/PetApi.md b/samples/openapi3/client/petstore/typescript/builds/jquery/PetApi.md new file mode 100644 index 00000000000..2fe727d84fa --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/PetApi.md @@ -0,0 +1,505 @@ +# petstore.PetApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store +[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags +[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID +[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet +[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image + + +# **addPet** +> Pet addPet(pet) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiAddPetRequest = { + // Pet | Pet object that needs to be added to the store + pet: { + id: 1, + category: { + id: 1, + name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + }, + name: "doggie", + photoUrls: [ + "photoUrls_example", + ], + tags: [ + { + id: 1, + name: "name_example", + }, + ], + status: "available", + }, +}; + +apiInstance.addPet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | **Pet**| Pet object that needs to be added to the store | + + +### Return type + +**Pet** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **deletePet** +> deletePet() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiDeletePetRequest = { + // number | Pet id to delete + petId: 1, + // string (optional) + apiKey: "api_key_example", +}; + +apiInstance.deletePet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | Pet id to delete | defaults to undefined + **apiKey** | [**string**] | | (optional) defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid pet value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **findPetsByStatus** +> Array findPetsByStatus() + +Multiple status values can be provided with comma separated strings + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiFindPetsByStatusRequest = { + // Array<'available' | 'pending' | 'sold'> | Status values that need to be considered for filter + status: [ + "available", + ], +}; + +apiInstance.findPetsByStatus(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | **Array<'available' | 'pending' | 'sold'>** | Status values that need to be considered for filter | defaults to undefined + + +### Return type + +**Array** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid status value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **findPetsByTags** +> Array findPetsByTags() + +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiFindPetsByTagsRequest = { + // Array | Tags to filter by + tags: [ + "tags_example", + ], +}; + +apiInstance.findPetsByTags(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | **Array<string>** | Tags to filter by | defaults to undefined + + +### Return type + +**Array** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid tag value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getPetById** +> Pet getPetById() + +Returns a single pet + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiGetPetByIdRequest = { + // number | ID of pet to return + petId: 1, +}; + +apiInstance.getPetById(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet to return | defaults to undefined + + +### Return type + +**Pet** + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Pet not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updatePet** +> Pet updatePet(pet) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUpdatePetRequest = { + // Pet | Pet object that needs to be added to the store + pet: { + id: 1, + category: { + id: 1, + name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + }, + name: "doggie", + photoUrls: [ + "photoUrls_example", + ], + tags: [ + { + id: 1, + name: "name_example", + }, + ], + status: "available", + }, +}; + +apiInstance.updatePet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | **Pet**| Pet object that needs to be added to the store | + + +### Return type + +**Pet** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Pet not found | - | +**405** | Validation exception | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updatePetWithForm** +> updatePetWithForm() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUpdatePetWithFormRequest = { + // number | ID of pet that needs to be updated + petId: 1, + // string | Updated name of the pet (optional) + name: "name_example", + // string | Updated status of the pet (optional) + status: "status_example", +}; + +apiInstance.updatePetWithForm(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet that needs to be updated | defaults to undefined + **name** | [**string**] | Updated name of the pet | (optional) defaults to undefined + **status** | [**string**] | Updated status of the pet | (optional) defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **uploadFile** +> ApiResponse uploadFile() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUploadFileRequest = { + // number | ID of pet to update + petId: 1, + // string | Additional data to pass to server (optional) + additionalMetadata: "additionalMetadata_example", + // HttpFile | file to upload (optional) + file: { data: Buffer.from(fs.readFileSync('/path/to/file', 'utf-8')), name: '/path/to/file' }, +}; + +apiInstance.uploadFile(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet to update | defaults to undefined + **additionalMetadata** | [**string**] | Additional data to pass to server | (optional) defaults to undefined + **file** | [**HttpFile**] | file to upload | (optional) defaults to undefined + + +### Return type + +**ApiResponse** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/StoreApi.md b/samples/openapi3/client/petstore/typescript/builds/jquery/StoreApi.md new file mode 100644 index 00000000000..b2a63f78219 --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/StoreApi.md @@ -0,0 +1,233 @@ +# petstore.StoreApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status +[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID +[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet + + +# **deleteOrder** +> deleteOrder() + +For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiDeleteOrderRequest = { + // string | ID of the order that needs to be deleted + orderId: "orderId_example", +}; + +apiInstance.deleteOrder(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | [**string**] | ID of the order that needs to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid ID supplied | - | +**404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getInventory** +> { [key: string]: number; } getInventory() + +Returns a map of status codes to quantities + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:any = {}; + +apiInstance.getInventory(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters +This endpoint does not need any parameter. + + +### Return type + +**{ [key: string]: number; }** + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getOrderById** +> Order getOrderById() + +For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiGetOrderByIdRequest = { + // number | ID of pet that needs to be fetched + orderId: 1, +}; + +apiInstance.getOrderById(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | [**number**] | ID of pet that needs to be fetched | defaults to undefined + + +### Return type + +**Order** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **placeOrder** +> Order placeOrder(order) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiPlaceOrderRequest = { + // Order | order placed for purchasing the pet + order: { + id: 1, + petId: 1, + quantity: 1, + shipDate: new Date('1970-01-01T00:00:00.00Z'), + status: "placed", + complete: false, + }, +}; + +apiInstance.placeOrder(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **order** | **Order**| order placed for purchasing the pet | + + +### Return type + +**Order** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid Order | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/UserApi.md b/samples/openapi3/client/petstore/typescript/builds/jquery/UserApi.md new file mode 100644 index 00000000000..e5ac670bd7c --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/UserApi.md @@ -0,0 +1,489 @@ +# petstore.UserApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**createUser**](UserApi.md#createUser) | **POST** /user | Create user +[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array +[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user +[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name +[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system +[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session +[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user + + +# **createUser** +> createUser(user) + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUserRequest = { + // User | Created user object + user: { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, +}; + +apiInstance.createUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **User**| Created user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **createUsersWithArrayInput** +> createUsersWithArrayInput(user) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUsersWithArrayInputRequest = { + // Array | List of user object + user: [ + { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, + ], +}; + +apiInstance.createUsersWithArrayInput(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **Array**| List of user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **createUsersWithListInput** +> createUsersWithListInput(user) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUsersWithListInputRequest = { + // Array | List of user object + user: [ + { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, + ], +}; + +apiInstance.createUsersWithListInput(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **Array**| List of user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **deleteUser** +> deleteUser() + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiDeleteUserRequest = { + // string | The name that needs to be deleted + username: "username_example", +}; + +apiInstance.deleteUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The name that needs to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid username supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getUserByName** +> User getUserByName() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiGetUserByNameRequest = { + // string | The name that needs to be fetched. Use user1 for testing. + username: "username_example", +}; + +apiInstance.getUserByName(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The name that needs to be fetched. Use user1 for testing. | defaults to undefined + + +### Return type + +**User** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid username supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **loginUser** +> string loginUser() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiLoginUserRequest = { + // string | The user name for login + username: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + // string | The password for login in clear text + password: "password_example", +}; + +apiInstance.loginUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The user name for login | defaults to undefined + **password** | [**string**] | The password for login in clear text | defaults to undefined + + +### Return type + +**string** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | * Set-Cookie - Cookie authentication key for use with the `api_key` apiKey authentication.
    * X-Rate-Limit - calls per hour allowed by the user
    * X-Expires-After - date in UTC when toekn expires
    | +**400** | Invalid username/password supplied | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **logoutUser** +> logoutUser() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:any = {}; + +apiInstance.logoutUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters +This endpoint does not need any parameter. + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updateUser** +> updateUser(user) + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiUpdateUserRequest = { + // string | name that need to be deleted + username: "username_example", + // User | Updated user object + user: { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, +}; + +apiInstance.updateUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **User**| Updated user object | + **username** | [**string**] | name that need to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid user supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/FILES b/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/FILES index 29f9ff544d9..4137d52d1cd 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/FILES @@ -1,5 +1,8 @@ .gitignore +PetApi.md README.md +StoreApi.md +UserApi.md apis/PetApi.ts apis/StoreApi.ts apis/UserApi.ts diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/PetApi.md b/samples/openapi3/client/petstore/typescript/builds/object_params/PetApi.md new file mode 100644 index 00000000000..2fe727d84fa --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/PetApi.md @@ -0,0 +1,505 @@ +# petstore.PetApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store +[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet +[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status +[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags +[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID +[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet +[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image + + +# **addPet** +> Pet addPet(pet) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiAddPetRequest = { + // Pet | Pet object that needs to be added to the store + pet: { + id: 1, + category: { + id: 1, + name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + }, + name: "doggie", + photoUrls: [ + "photoUrls_example", + ], + tags: [ + { + id: 1, + name: "name_example", + }, + ], + status: "available", + }, +}; + +apiInstance.addPet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | **Pet**| Pet object that needs to be added to the store | + + +### Return type + +**Pet** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **deletePet** +> deletePet() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiDeletePetRequest = { + // number | Pet id to delete + petId: 1, + // string (optional) + apiKey: "api_key_example", +}; + +apiInstance.deletePet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | Pet id to delete | defaults to undefined + **apiKey** | [**string**] | | (optional) defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid pet value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **findPetsByStatus** +> Array findPetsByStatus() + +Multiple status values can be provided with comma separated strings + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiFindPetsByStatusRequest = { + // Array<'available' | 'pending' | 'sold'> | Status values that need to be considered for filter + status: [ + "available", + ], +}; + +apiInstance.findPetsByStatus(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | **Array<'available' | 'pending' | 'sold'>** | Status values that need to be considered for filter | defaults to undefined + + +### Return type + +**Array** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid status value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **findPetsByTags** +> Array findPetsByTags() + +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiFindPetsByTagsRequest = { + // Array | Tags to filter by + tags: [ + "tags_example", + ], +}; + +apiInstance.findPetsByTags(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | **Array<string>** | Tags to filter by | defaults to undefined + + +### Return type + +**Array** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid tag value | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getPetById** +> Pet getPetById() + +Returns a single pet + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiGetPetByIdRequest = { + // number | ID of pet to return + petId: 1, +}; + +apiInstance.getPetById(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet to return | defaults to undefined + + +### Return type + +**Pet** + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Pet not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updatePet** +> Pet updatePet(pet) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUpdatePetRequest = { + // Pet | Pet object that needs to be added to the store + pet: { + id: 1, + category: { + id: 1, + name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + }, + name: "doggie", + photoUrls: [ + "photoUrls_example", + ], + tags: [ + { + id: 1, + name: "name_example", + }, + ], + status: "available", + }, +}; + +apiInstance.updatePet(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | **Pet**| Pet object that needs to be added to the store | + + +### Return type + +**Pet** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Pet not found | - | +**405** | Validation exception | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updatePetWithForm** +> updatePetWithForm() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUpdatePetWithFormRequest = { + // number | ID of pet that needs to be updated + petId: 1, + // string | Updated name of the pet (optional) + name: "name_example", + // string | Updated status of the pet (optional) + status: "status_example", +}; + +apiInstance.updatePetWithForm(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet that needs to be updated | defaults to undefined + **name** | [**string**] | Updated name of the pet | (optional) defaults to undefined + **status** | [**string**] | Updated status of the pet | (optional) defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **uploadFile** +> ApiResponse uploadFile() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.PetApi(configuration); + +let body:petstore.PetApiUploadFileRequest = { + // number | ID of pet to update + petId: 1, + // string | Additional data to pass to server (optional) + additionalMetadata: "additionalMetadata_example", + // HttpFile | file to upload (optional) + file: { data: Buffer.from(fs.readFileSync('/path/to/file', 'utf-8')), name: '/path/to/file' }, +}; + +apiInstance.uploadFile(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | [**number**] | ID of pet to update | defaults to undefined + **additionalMetadata** | [**string**] | Additional data to pass to server | (optional) defaults to undefined + **file** | [**HttpFile**] | file to upload | (optional) defaults to undefined + + +### Return type + +**ApiResponse** + +### Authorization + +[petstore_auth](README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/StoreApi.md b/samples/openapi3/client/petstore/typescript/builds/object_params/StoreApi.md new file mode 100644 index 00000000000..b2a63f78219 --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/StoreApi.md @@ -0,0 +1,233 @@ +# petstore.StoreApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status +[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID +[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet + + +# **deleteOrder** +> deleteOrder() + +For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiDeleteOrderRequest = { + // string | ID of the order that needs to be deleted + orderId: "orderId_example", +}; + +apiInstance.deleteOrder(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | [**string**] | ID of the order that needs to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid ID supplied | - | +**404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getInventory** +> { [key: string]: number; } getInventory() + +Returns a map of status codes to quantities + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:any = {}; + +apiInstance.getInventory(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters +This endpoint does not need any parameter. + + +### Return type + +**{ [key: string]: number; }** + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getOrderById** +> Order getOrderById() + +For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiGetOrderByIdRequest = { + // number | ID of pet that needs to be fetched + orderId: 1, +}; + +apiInstance.getOrderById(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | [**number**] | ID of pet that needs to be fetched | defaults to undefined + + +### Return type + +**Order** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid ID supplied | - | +**404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **placeOrder** +> Order placeOrder(order) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.StoreApi(configuration); + +let body:petstore.StoreApiPlaceOrderRequest = { + // Order | order placed for purchasing the pet + order: { + id: 1, + petId: 1, + quantity: 1, + shipDate: new Date('1970-01-01T00:00:00.00Z'), + status: "placed", + complete: false, + }, +}; + +apiInstance.placeOrder(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **order** | **Order**| order placed for purchasing the pet | + + +### Return type + +**Order** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid Order | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/UserApi.md b/samples/openapi3/client/petstore/typescript/builds/object_params/UserApi.md new file mode 100644 index 00000000000..e5ac670bd7c --- /dev/null +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/UserApi.md @@ -0,0 +1,489 @@ +# petstore.UserApi + +All URIs are relative to *http://petstore.swagger.io/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**createUser**](UserApi.md#createUser) | **POST** /user | Create user +[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array +[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array +[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user +[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name +[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system +[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session +[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user + + +# **createUser** +> createUser(user) + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUserRequest = { + // User | Created user object + user: { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, +}; + +apiInstance.createUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **User**| Created user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **createUsersWithArrayInput** +> createUsersWithArrayInput(user) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUsersWithArrayInputRequest = { + // Array | List of user object + user: [ + { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, + ], +}; + +apiInstance.createUsersWithArrayInput(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **Array**| List of user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **createUsersWithListInput** +> createUsersWithListInput(user) + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiCreateUsersWithListInputRequest = { + // Array | List of user object + user: [ + { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, + ], +}; + +apiInstance.createUsersWithListInput(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **Array**| List of user object | + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **deleteUser** +> deleteUser() + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiDeleteUserRequest = { + // string | The name that needs to be deleted + username: "username_example", +}; + +apiInstance.deleteUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The name that needs to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid username supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **getUserByName** +> User getUserByName() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiGetUserByNameRequest = { + // string | The name that needs to be fetched. Use user1 for testing. + username: "username_example", +}; + +apiInstance.getUserByName(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The name that needs to be fetched. Use user1 for testing. | defaults to undefined + + +### Return type + +**User** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | - | +**400** | Invalid username supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **loginUser** +> string loginUser() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiLoginUserRequest = { + // string | The user name for login + username: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", + // string | The password for login in clear text + password: "password_example", +}; + +apiInstance.loginUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | [**string**] | The user name for login | defaults to undefined + **password** | [**string**] | The password for login in clear text | defaults to undefined + + +### Return type + +**string** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | successful operation | * Set-Cookie - Cookie authentication key for use with the `api_key` apiKey authentication.
    * X-Rate-Limit - calls per hour allowed by the user
    * X-Expires-After - date in UTC when toekn expires
    | +**400** | Invalid username/password supplied | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **logoutUser** +> logoutUser() + + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:any = {}; + +apiInstance.logoutUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters +This endpoint does not need any parameter. + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + +# **updateUser** +> updateUser(user) + +This can only be done by the logged in user. + +### Example + + +```typescript +import { petstore } from 'ts-petstore-client'; +import * as fs from 'fs'; + +const configuration = petstore.createConfiguration(); +const apiInstance = new petstore.UserApi(configuration); + +let body:petstore.UserApiUpdateUserRequest = { + // string | name that need to be deleted + username: "username_example", + // User | Updated user object + user: { + id: 1, + username: "username_example", + firstName: "firstName_example", + lastName: "lastName_example", + email: "email_example", + password: "password_example", + phone: "phone_example", + userStatus: 1, + }, +}; + +apiInstance.updateUser(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); +}).catch((error:any) => console.error(error)); +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | **User**| Updated user object | + **username** | [**string**] | name that need to be deleted | defaults to undefined + + +### Return type + +void (empty response body) + +### Authorization + +[api_key](README.md#api_key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**400** | Invalid user supplied | - | +**404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) + + From 150dfa2ddd091306c4b8f8bbf5f22ebda6433491 Mon Sep 17 00:00:00 2001 From: Yuriy Belenko Date: Sat, 12 Jun 2021 20:24:56 +0300 Subject: [PATCH 117/192] Add ybelenko as php-slim4 template creator (#9754) Thanks to Julian(jfastnacht) who started Slim3 generator and maintained it until Nov 27, 2017(latest PR). Since Slim4 codegen is based on deprecated Slim3 I greatly appreciate your commitment. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cb8d1116714..ea5226bb88f 100644 --- a/README.md +++ b/README.md @@ -950,6 +950,7 @@ Here is a list of template creators: * PHP Laravel: @renepardon * PHP Lumen: @abcsun * PHP Slim: @jfastnacht + * PHP Slim4: @ybelenko * PHP Symfony: @ksm2 * PHP Zend Expressive (with Path Handler): @Articus * Python FastAPI: @krjakbrjak From 0dcae66e0c8c2c75963aca3944e631e41df4dbfd Mon Sep 17 00:00:00 2001 From: Tino Fuhrmann Date: Mon, 14 Jun 2021 08:12:41 +0200 Subject: [PATCH 118/192] Revert "[typescript] Generate documentation and examples (#9413)" (#9758) This reverts commit 624b6a7a85a22579f26be47698c99e583f582c64. --- bin/configs/typescript-consolidated-deno.yaml | 2 - .../typescript-consolidated-inversify.yaml | 2 - .../typescript-consolidated-jquery.yaml | 2 - ...t-consolidated-node-object-parameters.yaml | 2 - bin/configs/typescript-consolidated-node.yaml | 2 - .../languages/TypeScriptClientCodegen.java | 633 ------------------ .../resources/typescript/api_doc.mustache | 84 --- .../builds/default/.openapi-generator/FILES | 3 - .../typescript/builds/default/PetApi.md | 505 -------------- .../typescript/builds/default/StoreApi.md | 233 ------- .../typescript/builds/default/UserApi.md | 489 -------------- .../builds/deno/.openapi-generator/FILES | 3 - .../petstore/typescript/builds/deno/PetApi.md | 505 -------------- .../typescript/builds/deno/StoreApi.md | 233 ------- .../typescript/builds/deno/UserApi.md | 489 -------------- .../builds/inversify/.openapi-generator/FILES | 3 - .../typescript/builds/inversify/PetApi.md | 505 -------------- .../typescript/builds/inversify/StoreApi.md | 233 ------- .../typescript/builds/inversify/UserApi.md | 489 -------------- .../builds/jquery/.openapi-generator/FILES | 3 - .../typescript/builds/jquery/PetApi.md | 505 -------------- .../typescript/builds/jquery/StoreApi.md | 233 ------- .../typescript/builds/jquery/UserApi.md | 489 -------------- .../object_params/.openapi-generator/FILES | 3 - .../typescript/builds/object_params/PetApi.md | 505 -------------- .../builds/object_params/StoreApi.md | 233 ------- .../builds/object_params/UserApi.md | 489 -------------- 27 files changed, 6877 deletions(-) delete mode 100644 modules/openapi-generator/src/main/resources/typescript/api_doc.mustache delete mode 100644 samples/openapi3/client/petstore/typescript/builds/default/PetApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/default/StoreApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/default/UserApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/deno/PetApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/deno/StoreApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/deno/UserApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/inversify/PetApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/inversify/StoreApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/inversify/UserApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/jquery/PetApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/jquery/StoreApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/jquery/UserApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/object_params/PetApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/object_params/StoreApi.md delete mode 100644 samples/openapi3/client/petstore/typescript/builds/object_params/UserApi.md diff --git a/bin/configs/typescript-consolidated-deno.yaml b/bin/configs/typescript-consolidated-deno.yaml index 63140ab6c87..67fdb69573d 100644 --- a/bin/configs/typescript-consolidated-deno.yaml +++ b/bin/configs/typescript-consolidated-deno.yaml @@ -4,5 +4,3 @@ inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml additionalProperties: platform: deno npmName: ts-petstore-client - projectName: ts-petstore-client - moduleName: petstore diff --git a/bin/configs/typescript-consolidated-inversify.yaml b/bin/configs/typescript-consolidated-inversify.yaml index f300005abe5..70277c6e7ad 100644 --- a/bin/configs/typescript-consolidated-inversify.yaml +++ b/bin/configs/typescript-consolidated-inversify.yaml @@ -5,5 +5,3 @@ additionalProperties: platform: node npmName: ts-petstore-client useInversify: true - projectName: ts-petstore-client - moduleName: petstore diff --git a/bin/configs/typescript-consolidated-jquery.yaml b/bin/configs/typescript-consolidated-jquery.yaml index a4525aa01c4..2a9e79af1b2 100644 --- a/bin/configs/typescript-consolidated-jquery.yaml +++ b/bin/configs/typescript-consolidated-jquery.yaml @@ -4,5 +4,3 @@ inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml additionalProperties: framework: jquery npmName: ts-petstore-client - projectName: ts-petstore-client - moduleName: petstore diff --git a/bin/configs/typescript-consolidated-node-object-parameters.yaml b/bin/configs/typescript-consolidated-node-object-parameters.yaml index 8bcf85107e3..40171df194d 100644 --- a/bin/configs/typescript-consolidated-node-object-parameters.yaml +++ b/bin/configs/typescript-consolidated-node-object-parameters.yaml @@ -5,5 +5,3 @@ additionalProperties: platform: node npmName: ts-petstore-client useObjectParameters: true - projectName: ts-petstore-client - moduleName: petstore diff --git a/bin/configs/typescript-consolidated-node.yaml b/bin/configs/typescript-consolidated-node.yaml index 7a9acf4828b..137a5242ed9 100644 --- a/bin/configs/typescript-consolidated-node.yaml +++ b/bin/configs/typescript-consolidated-node.yaml @@ -4,5 +4,3 @@ inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml additionalProperties: platform: node npmName: ts-petstore-client - projectName: ts-petstore-client - moduleName: petstore diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java index b0d0ef7452c..c8fe4b4e042 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java @@ -17,43 +17,24 @@ package org.openapitools.codegen.languages; -import com.google.common.collect.Sets; - -import io.swagger.v3.core.util.Json; -import io.swagger.v3.oas.models.media.*; -import io.swagger.v3.oas.models.media.MediaType; -import io.swagger.v3.oas.models.parameters.RequestBody; -import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.parameters.Parameter; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; -import org.openapitools.codegen.CodegenDiscriminator.MappedModel; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.github.curiousoddman.rgxgen.RgxGen; -import com.github.curiousoddman.rgxgen.config.RgxGenOption; -import com.github.curiousoddman.rgxgen.config.RgxGenProperties; import java.io.File; -import java.time.OffsetDateTime; -import java.time.ZoneOffset; -import java.time.format.DateTimeFormatter; -import java.util.regex.Pattern; -import java.util.regex.Matcher; import java.text.SimpleDateFormat; import java.util.*; - import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; -import static org.openapitools.codegen.utils.OnceLogger.once; - public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenConfig { private final Logger LOGGER = LoggerFactory.getLogger(TypeScriptClientCodegen.class); @@ -96,9 +77,6 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo protected String modelPropertyNaming = "camelCase"; protected HashSet languageGenericTypes; - private DateTimeFormatter iso8601Date = DateTimeFormatter.ISO_DATE; - private DateTimeFormatter iso8601DateTime = DateTimeFormatter.ISO_DATE_TIME; - public TypeScriptClientCodegen() { super(); @@ -235,7 +213,6 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo supportingFiles.add(new SupportingFile("api" + File.separator + "middleware.mustache", "", "middleware.ts")); supportingFiles.add(new SupportingFile("api" + File.separator + "baseapi.mustache", "apis", "baseapi.ts")); apiTemplateFiles.put("api" + File.separator + "api.mustache", ".ts"); - apiDocTemplateFiles.put("api_doc.mustache", ".md"); } public String getNpmName() { @@ -876,614 +853,4 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo codegenModel.additionalPropertiesType = getTypeDeclaration((Schema) schema.getAdditionalProperties()); addImport(codegenModel, codegenModel.additionalPropertiesType); } - - public String typescriptDate(Object dateValue) { - String strValue = null; - if (dateValue instanceof OffsetDateTime) { - OffsetDateTime date = null; - try { - date = (OffsetDateTime) dateValue; - } catch (ClassCastException e) { - LOGGER.warn("Invalid `date` format for value {}", dateValue); - date = ((Date) dateValue).toInstant().atOffset(ZoneOffset.UTC); - } - strValue = date.format(iso8601Date); - } else { - strValue = dateValue.toString(); - } - return "new Date('" + strValue + "').toISOString().split('T')[0];"; - } - - public String typescriptDateTime(Object dateTimeValue) { - String strValue = null; - if (dateTimeValue instanceof OffsetDateTime) { - OffsetDateTime dateTime = null; - try { - dateTime = (OffsetDateTime) dateTimeValue; - } catch (ClassCastException e) { - LOGGER.warn("Invalid `date-time` format for value {}", dateTimeValue); - dateTime = ((Date) dateTimeValue).toInstant().atOffset(ZoneOffset.UTC); - } - strValue = dateTime.format(iso8601DateTime); - } else { - strValue = dateTimeValue.toString(); - } - return "new Date('" + strValue + "')"; - } - - public String getModelName(Schema sc) { - if (sc.get$ref() != null) { - Schema unaliasedSchema = unaliasSchema(sc, importMapping); - if (unaliasedSchema.get$ref() != null) { - return toModelName(ModelUtils.getSimpleRef(sc.get$ref())); - } - } - return null; - } - - /** - * Gets an example if it exists - * - * @param sc input schema - * @return the example value - */ - protected Object getObjectExample(Schema sc) { - Schema schema = sc; - String ref = sc.get$ref(); - if (ref != null) { - schema = ModelUtils.getSchema(this.openAPI, ModelUtils.getSimpleRef(ref)); - } - // TODO handle examples in object models in the future - Boolean objectModel = (ModelUtils.isObjectSchema(schema) || ModelUtils.isMapSchema(schema) || ModelUtils.isComposedSchema(schema)); - if (objectModel) { - return null; - } - if (schema.getExample() != null) { - return schema.getExample(); - } - if (schema.getDefault() != null) { - return schema.getDefault(); - } else if (schema.getEnum() != null && !schema.getEnum().isEmpty()) { - return schema.getEnum().get(0); - } - return null; - } - - /*** - * Ensures that the string has a leading and trailing quote - * - * @param in input string - * @return quoted string - */ - private String ensureQuotes(String in) { - Pattern pattern = Pattern.compile("\r\n|\r|\n"); - Matcher matcher = pattern.matcher(in); - if (matcher.find()) { - // if a string has a new line in it add backticks to make it a typescript multiline string - return "`" + in + "`"; - } - String strPattern = "^['\"].*?['\"]$"; - if (in.matches(strPattern)) { - return in; - } - return "\"" + in + "\""; - } - - @Override - public String toExampleValue(Schema schema) { - Object objExample = getObjectExample(schema); - return toExampleValue(schema, objExample); - } - - public String toExampleValue(Schema schema, Object objExample) { - String modelName = getModelName(schema); - return toExampleValueRecursive(modelName, schema, objExample, 1, "", 0, Sets.newHashSet()); - } - - private Boolean simpleStringSchema(Schema schema) { - Schema sc = schema; - String ref = schema.get$ref(); - if (ref != null) { - sc = ModelUtils.getSchema(this.openAPI, ModelUtils.getSimpleRef(ref)); - } - return ModelUtils.isStringSchema(sc) && !ModelUtils.isDateSchema(sc) && !ModelUtils.isDateTimeSchema(sc) && !"Number".equalsIgnoreCase(sc.getFormat()) && !ModelUtils.isByteArraySchema(sc) && !ModelUtils.isBinarySchema(sc) && schema.getPattern() == null; - } - - private MappedModel getDiscriminatorMappedModel(CodegenDiscriminator disc) { - for (MappedModel mm : disc.getMappedModels()) { - String modelName = mm.getModelName(); - Schema modelSchema = getModelNameToSchemaCache().get(modelName); - if (ModelUtils.isObjectSchema(modelSchema)) { - return mm; - } - } - return null; - } - - /*** - * Recursively generates string examples for schemas - * - * @param modelName the string name of the refed model that will be generated for the schema or null - * @param schema the schema that we need an example for - * @param objExample the example that applies to this schema, for now only string example are used - * @param indentationLevel integer indentation level that we are currently at - * we assume the indentaion amount is 2 spaces times this integer - * @param prefix the string prefix that we will use when assigning an example for this line - * this is used when setting key: value, pairs "key: " is the prefix - * and this is used when setting properties like some_property='some_property_example' - * @param exampleLine this is the current line that we are generatign an example for, starts at 0 - * we don't indentin the 0th line because using the example value looks like: - * prop = ModelName( line 0 - * some_property='some_property_example' line 1 - * ) line 2 - * and our example value is: - * ModelName( line 0 - * some_property='some_property_example' line 1 - * ) line 2 - * @param seenSchemas This set contains all the schemas passed into the recursive function. It is used to check - * if a schema was already passed into the function and breaks the infinite recursive loop. The - * only schemas that are not added are ones that contain $ref != null - * @return the string example - */ - private String toExampleValueRecursive(String modelName, Schema schema, Object objExample, int indentationLevel, String prefix, Integer exampleLine, Set seenSchemas) { - final String indentionConst = " "; - String currentIndentation = ""; - String closingIndentation = ""; - for (int i = 0; i < indentationLevel; i++) currentIndentation += indentionConst; - if (exampleLine.equals(0)) { - closingIndentation = currentIndentation; - currentIndentation = ""; - } else { - closingIndentation = currentIndentation; - } - String openChars = ""; - String closeChars = ""; - String fullPrefix = currentIndentation + prefix + openChars; - - String example = null; - if (objExample != null) { - example = objExample.toString(); - } - // checks if the current schema has already been passed in. If so, breaks the current recursive pass - if (seenSchemas.contains(schema)) { - if (modelName != null) { - return fullPrefix + closeChars; - } else { - // this is a recursive schema - // need to add a reasonable example to avoid - // infinite recursion - if (ModelUtils.isNullable(schema)) { - // if the schema is nullable, then 'null' is a valid value - return fullPrefix + "null" + closeChars; - } else if (ModelUtils.isArraySchema(schema)) { - // the schema is an array, add an empty array - return fullPrefix + "[]" + closeChars; - } else { - // the schema is an object, make an empty object - return fullPrefix + "{}" + closeChars; - } - } - } - - if (null != schema.get$ref()) { - Map allDefinitions = ModelUtils.getSchemas(this.openAPI); - String ref = ModelUtils.getSimpleRef(schema.get$ref()); - Schema refSchema = allDefinitions.get(ref); - if (null == refSchema) { - LOGGER.warn("Unable to find referenced schema " + schema.get$ref() + "\n"); - return fullPrefix + "null" + closeChars; - } - String refModelName = getModelName(schema); - return toExampleValueRecursive(refModelName, refSchema, objExample, indentationLevel, prefix, exampleLine, seenSchemas); - } else if (ModelUtils.isNullType(schema) || isAnyTypeSchema(schema)) { - // The 'null' type is allowed in OAS 3.1 and above. It is not supported by OAS 3.0.x, - // though this tooling supports it. - return fullPrefix + "null" + closeChars; - } else if (ModelUtils.isBooleanSchema(schema)) { - if (objExample == null) { - example = "true"; - } else { - if ("false".equalsIgnoreCase(objExample.toString())) { - example = "false"; - } else { - example = "true"; - } - } - return fullPrefix + example + closeChars; - } else if (ModelUtils.isDateSchema(schema)) { - if (objExample == null) { - example = typescriptDate("1970-01-01"); - } else { - example = typescriptDate(objExample); - } - return fullPrefix + example + closeChars; - } else if (ModelUtils.isDateTimeSchema(schema)) { - if (objExample == null) { - example = typescriptDateTime("1970-01-01T00:00:00.00Z"); - } else { - example = typescriptDateTime(objExample); - } - return fullPrefix + example + closeChars; - } else if (ModelUtils.isBinarySchema(schema)) { - if (objExample == null) { - example = "/path/to/file"; - } - example = "{ data: Buffer.from(fs.readFileSync('" + example + "', 'utf-8')), name: '" + example + "' }"; - return fullPrefix + example + closeChars; - } else if (ModelUtils.isByteArraySchema(schema)) { - if (objExample == null) { - example = "'YQ=='"; - } - return fullPrefix + example + closeChars; - } else if (ModelUtils.isStringSchema(schema)) { - if (objExample == null) { - // a BigDecimal: - if ("Number".equalsIgnoreCase(schema.getFormat())) { - example = "2"; - return fullPrefix + example + closeChars; - } else if (StringUtils.isNotBlank(schema.getPattern())) { - String pattern = schema.getPattern(); - /* - RxGen does not support our ECMA dialect https://github.com/curious-odd-man/RgxGen/issues/56 - So strip off the leading / and trailing / and turn on ignore case if we have it - */ - Pattern valueExtractor = Pattern.compile("^/?(.+?)/?(.?)$"); - Matcher m = valueExtractor.matcher(pattern); - RgxGen rgxGen = null; - if (m.find()) { - int groupCount = m.groupCount(); - if (groupCount == 1) { - // only pattern found - String isolatedPattern = m.group(1); - rgxGen = new RgxGen(isolatedPattern); - } else if (groupCount == 2) { - // patterns and flag found - String isolatedPattern = m.group(1); - String flags = m.group(2); - if (flags.contains("i")) { - rgxGen = new RgxGen(isolatedPattern); - RgxGenProperties properties = new RgxGenProperties(); - RgxGenOption.CASE_INSENSITIVE.setInProperties(properties, true); - rgxGen.setProperties(properties); - } else { - rgxGen = new RgxGen(isolatedPattern); - } - } - } else { - rgxGen = new RgxGen(pattern); - } - - // this seed makes it so if we have [a-z] we pick a - Random random = new Random(18); - example = rgxGen.generate(random); - } else if (schema.getMinLength() != null) { - example = ""; - int len = schema.getMinLength().intValue(); - for (int i = 0; i < len; i++) example += "a"; - } else if (ModelUtils.isUUIDSchema(schema)) { - example = "046b6c7f-0b8a-43b9-b35d-6489e6daee91"; - } else { - example = "string_example"; - } - } - return fullPrefix + ensureQuotes(example) + closeChars; - } else if (ModelUtils.isIntegerSchema(schema)) { - if (objExample == null) { - if (schema.getMinimum() != null) { - example = schema.getMinimum().toString(); - } else { - example = "1"; - } - } - return fullPrefix + example + closeChars; - } else if (ModelUtils.isNumberSchema(schema)) { - if (objExample == null) { - if (schema.getMinimum() != null) { - example = schema.getMinimum().toString(); - } else { - example = "3.14"; - } - } - return fullPrefix + example + closeChars; - } else if (ModelUtils.isArraySchema(schema)) { - ArraySchema arrayschema = (ArraySchema) schema; - Schema itemSchema = arrayschema.getItems(); - String itemModelName = getModelName(itemSchema); - if (objExample instanceof Iterable && itemModelName == null) { - // If the example is already a list, return it directly instead of wrongly wrap it in another list - return fullPrefix + objExample.toString() + closeChars; - } - Set newSeenSchemas = new HashSet<>(seenSchemas); - newSeenSchemas.add(schema); - example = fullPrefix + "[" + "\n" + toExampleValueRecursive(itemModelName, itemSchema, objExample, indentationLevel + 1, "", exampleLine + 1, newSeenSchemas) + ",\n" + closingIndentation + "]" + closeChars; - return example; - } else if (ModelUtils.isMapSchema(schema)) { - if (modelName == null) { - fullPrefix += "{"; - closeChars = "}"; - } - Object addPropsObj = schema.getAdditionalProperties(); - // TODO handle true case for additionalProperties - if (addPropsObj instanceof Schema) { - Schema addPropsSchema = (Schema) addPropsObj; - String key = "key"; - Object addPropsExample = getObjectExample(addPropsSchema); - if (addPropsSchema.getEnum() != null && !addPropsSchema.getEnum().isEmpty()) { - key = addPropsSchema.getEnum().get(0).toString(); - } - addPropsExample = exampleFromStringOrArraySchema(addPropsSchema, addPropsExample, key); - String addPropPrefix = key + ": "; - if (modelName == null) { - addPropPrefix = ensureQuotes(key) + ": "; - } - String addPropsModelName = "\"" + getModelName(addPropsSchema) + "\""; - Set newSeenSchemas = new HashSet<>(seenSchemas); - newSeenSchemas.add(schema); - example = fullPrefix + "\n" + toExampleValueRecursive(addPropsModelName, addPropsSchema, addPropsExample, indentationLevel + 1, addPropPrefix, exampleLine + 1, newSeenSchemas) + ",\n" + closingIndentation + closeChars; - } else { - example = fullPrefix + closeChars; - } - return example; - } else if (ModelUtils.isComposedSchema(schema)) { - ComposedSchema cm = (ComposedSchema) schema; - List ls = cm.getOneOf(); - if (!ls.isEmpty()) { - return fullPrefix + toExampleValue(ls.get(0)) + closeChars; - } - return fullPrefix + closeChars; - } else if (ModelUtils.isObjectSchema(schema)) { - fullPrefix += "{"; - closeChars = "}"; - CodegenDiscriminator disc = createDiscriminator(modelName, schema, openAPI); - if (disc != null) { - MappedModel mm = getDiscriminatorMappedModel(disc); - if (mm != null) { - String discPropNameValue = mm.getMappingName(); - String chosenModelName = mm.getModelName(); - // TODO handle this case in the future, this is when the discriminated - // schema allOf includes this schema, like Cat allOf includes Pet - // so this is the composed schema use case - } else { - return fullPrefix + closeChars; - } - } - - Set newSeenSchemas = new HashSet<>(seenSchemas); - newSeenSchemas.add(schema); - String exampleForObjectModel = exampleForObjectModel(schema, fullPrefix, closeChars, null, indentationLevel, exampleLine, closingIndentation, newSeenSchemas); - return exampleForObjectModel; - } else { - LOGGER.warn("Type " + schema.getType() + " not handled properly in toExampleValue"); - } - - return example; - } - - private String exampleForObjectModel(Schema schema, String fullPrefix, String closeChars, CodegenProperty discProp, int indentationLevel, int exampleLine, String closingIndentation, Set seenSchemas) { - Map requiredAndOptionalProps = schema.getProperties(); - if (requiredAndOptionalProps == null || requiredAndOptionalProps.isEmpty()) { - return fullPrefix + closeChars; - } - - String example = fullPrefix + "\n"; - for (Map.Entry entry : requiredAndOptionalProps.entrySet()) { - String propName = entry.getKey(); - Schema propSchema = entry.getValue(); - boolean readOnly = false; - if (propSchema.getReadOnly() != null) { - readOnly = propSchema.getReadOnly(); - } - if (readOnly) { - continue; - } - String ref = propSchema.get$ref(); - if (ref != null) { - Schema refSchema = ModelUtils.getSchema(this.openAPI, ModelUtils.getSimpleRef(ref)); - if (refSchema.getReadOnly() != null) { - readOnly = refSchema.getReadOnly(); - } - if (readOnly) { - continue; - } - } - propName = toVarName(propName); - String propModelName = null; - Object propExample = null; - if (discProp != null && propName.equals(discProp.name)) { - propModelName = null; - propExample = discProp.example; - } else { - propModelName = getModelName(propSchema); - propExample = exampleFromStringOrArraySchema(propSchema, null, propName); - } - example += toExampleValueRecursive(propModelName, propSchema, propExample, indentationLevel + 1, propName + ": ", exampleLine + 1, seenSchemas) + ",\n"; - } - // TODO handle additionalProperties also - example += closingIndentation + closeChars; - return example; - } - - private Object exampleFromStringOrArraySchema(Schema sc, Object currentExample, String propName) { - if (currentExample != null) { - return currentExample; - } - Schema schema = sc; - String ref = sc.get$ref(); - if (ref != null) { - schema = ModelUtils.getSchema(this.openAPI, ModelUtils.getSimpleRef(ref)); - } - Object example = getObjectExample(schema); - if (example != null) { - return example; - } else if (simpleStringSchema(schema)) { - return propName + "_example"; - } else if (ModelUtils.isArraySchema(schema)) { - ArraySchema arraySchema = (ArraySchema) schema; - Schema itemSchema = arraySchema.getItems(); - example = getObjectExample(itemSchema); - if (example != null) { - return example; - } else if (simpleStringSchema(itemSchema)) { - return propName + "_example"; - } - } - return null; - } - - protected String setPropertyExampleValue(CodegenProperty p) { - String example; - - if (p == null) { - return "null"; - } - - if (p.defaultValue == null) { - example = p.example; - } else { - example = p.defaultValue; - } - - String type = p.baseType; - if (type == null) { - type = p.dataType; - } - - if (Boolean.TRUE.equals(p.isInteger)) { - if (example == null) { - example = "56"; - } - } else if (Boolean.TRUE.equals(p.isLong)) { - if (example == null) { - example = "789"; - } - } else if (Boolean.TRUE.equals(p.isDouble) - || Boolean.TRUE.equals(p.isFloat) - || Boolean.TRUE.equals(p.isNumber)) { - if (example == null) { - example = "3.4"; - } - } else if (Boolean.TRUE.equals(p.isBoolean)) { - if (example == null) { - example = "true"; - } - } else if (Boolean.TRUE.equals(p.isFile) || Boolean.TRUE.equals(p.isBinary)) { - if (example == null) { - example = "/path/to/file"; - } - example = "\"" + escapeText(example) + "\""; - } else if (Boolean.TRUE.equals(p.isDate)) { - if (example == null) { - example = "2013-10-20"; - } - example = "new Date(\"" + escapeText(example) + "\")"; - } else if (Boolean.TRUE.equals(p.isDateTime)) { - if (example == null) { - example = "2013-10-20T19:20:30+01:00"; - } - example = "new Date(\"" + escapeText(example) + "\")"; - } else if (Boolean.TRUE.equals(p.isString)) { - if (example == null) { - example = p.name + "_example"; - } - example = "\"" + escapeText(example) + "\""; - } else if (!languageSpecificPrimitives.contains(type)) { - // type is a model class, e.g. User - example = "new " + "{{moduleName}}" + "." + type + "()"; - } - - return example; - } - - - /*** - * - * Set the codegenParameter example value - * We have a custom version of this function so we can invoke toExampleValue - * - * @param codegenParameter the item we are setting the example on - * @param parameter the base parameter that came from the spec - */ - @Override - public void setParameterExampleValue(CodegenParameter codegenParameter, Parameter parameter) { - Schema schema = parameter.getSchema(); - if (schema == null) { - LOGGER.warn("CodegenParameter.example defaulting to null because parameter lacks a schema"); - return; - } - - Object example = null; - if (codegenParameter.vendorExtensions != null && codegenParameter.vendorExtensions.containsKey("x-example")) { - example = codegenParameter.vendorExtensions.get("x-example"); - } else if (parameter.getExample() != null) { - example = parameter.getExample(); - } else if (parameter.getExamples() != null && !parameter.getExamples().isEmpty() && parameter.getExamples().values().iterator().next().getValue() != null) { - example = parameter.getExamples().values().iterator().next().getValue(); - } else { - example = getObjectExample(schema); - } - example = exampleFromStringOrArraySchema(schema, example, parameter.getName()); - String finalExample = toExampleValue(schema, example); - codegenParameter.example = finalExample; - } - - /** - * Return the example value of the parameter. - * - * @param codegenParameter Codegen parameter - * @param requestBody Request body - */ - @Override - public void setParameterExampleValue(CodegenParameter codegenParameter, RequestBody requestBody) { - if (codegenParameter.vendorExtensions != null && codegenParameter.vendorExtensions.containsKey("x-example")) { - codegenParameter.example = Json.pretty(codegenParameter.vendorExtensions.get("x-example")); - } - - Content content = requestBody.getContent(); - - if (content.size() > 1) { - // @see ModelUtils.getSchemaFromContent() - once(LOGGER).warn("Multiple MediaTypes found, using only the first one"); - } - - MediaType mediaType = content.values().iterator().next(); - Schema schema = mediaType.getSchema(); - if (schema == null) { - LOGGER.warn("CodegenParameter.example defaulting to null because requestBody content lacks a schema"); - return; - } - - Object example = null; - if (mediaType.getExample() != null) { - example = mediaType.getExample(); - } else if (mediaType.getExamples() != null && !mediaType.getExamples().isEmpty() && mediaType.getExamples().values().iterator().next().getValue() != null) { - example = mediaType.getExamples().values().iterator().next().getValue(); - } else { - example = getObjectExample(schema); - } - example = exampleFromStringOrArraySchema(schema, example, codegenParameter.paramName); - codegenParameter.example = toExampleValue(schema, example); - } - - /** - * Create a CodegenParameter for a Form Property - * We have a custom version of this method so we can invoke - * setParameterExampleValue(codegenParameter, parameter) - * rather than setParameterExampleValue(codegenParameter) - * This ensures that all of our samples are generated in - * toExampleValueRecursive - * - * @param name the property name - * @param propertySchema the property schema - * @param imports our import set - * @return the resultant CodegenParameter - */ - @Override - public CodegenParameter fromFormProperty(String name, Schema propertySchema, Set imports) { - CodegenParameter cp = super.fromFormProperty(name, propertySchema, imports); - Parameter p = new Parameter(); - p.setSchema(propertySchema); - p.setName(cp.paramName); - setParameterExampleValue(cp, p); - return cp; - } } diff --git a/modules/openapi-generator/src/main/resources/typescript/api_doc.mustache b/modules/openapi-generator/src/main/resources/typescript/api_doc.mustache deleted file mode 100644 index e58bf337875..00000000000 --- a/modules/openapi-generator/src/main/resources/typescript/api_doc.mustache +++ /dev/null @@ -1,84 +0,0 @@ -# {{moduleName}}.{{classname}}{{#description}} - -{{description}}{{/description}} - -All URIs are relative to *{{basePath}}* - -Method | HTTP request | Description -------------- | ------------- | ------------- -{{#operations}}{{#operation}}[**{{operationId}}**]({{classname}}.md#{{operationId}}) | **{{httpMethod}}** {{path}} | {{#summary}}{{summary}}{{/summary}} -{{/operation}}{{/operations}} - -{{#operations}} -{{#operation}} -# **{{{operationId}}}** -> {{#returnType}}{{{returnType}}} {{/returnType}}{{{operationId}}}({{#requiredParams}}{{^defaultValue}}{{paramName}}{{^-last}}, {{/-last}}{{/defaultValue}}{{/requiredParams}}) - -{{#notes}} -{{{notes}}} -{{/notes}} - -### Example - - -```typescript -import { {{{moduleName}}} } from '{{{projectName}}}'; -import * as fs from 'fs'; - -const configuration = {{{moduleName}}}.createConfiguration(); -const apiInstance = new {{{moduleName}}}.{{classname}}(configuration); - -{{#hasParams}} -let body:{{{moduleName}}}.{{classname}}{{operationIdCamelCase}}Request = { -{{#allParams}} - // {{{dataType}}}{{#description}} | {{{description}}}{{/description}}{{^required}} (optional){{/required}} - {{paramName}}: {{{example}}}, -{{/allParams}} -}; -{{/hasParams}} -{{^hasParams}} -let body:any = {}; -{{/hasParams}} - -apiInstance.{{{operationId}}}(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters -{{^hasParams}}This endpoint does not need any parameter.{{/hasParams}}{{#allParams}}{{#-last}} -Name | Type | Description | Notes -------------- | ------------- | ------------- | -------------{{/-last}}{{/allParams}} -{{#allParams}}{{^defaultValue}} **{{paramName}}** | {{^isPrimitiveType}}**{{{dataType}}}**{{/isPrimitiveType}}{{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}| {{description}} | -{{/defaultValue}}{{/allParams}}{{#allParams}}{{#defaultValue}} **{{paramName}}** | {{^isPrimitiveType}}{{^isEnum}}**{{dataType}}**{{/isEnum}}{{/isPrimitiveType}}{{#isPrimitiveType}}[**{{dataType}}**]{{/isPrimitiveType}}{{#isEnum}}{{#allowableValues}}{{#enumVars}}{{#-first}}**Array<{{/-first}}{{value}}{{^-last}} | {{/-last}}{{#-last}}>**{{/-last}}{{/enumVars}}{{/allowableValues}}{{/isEnum}} | {{description}} |{{^required}} (optional){{/required}} defaults to {{{.}}} -{{/defaultValue}}{{/allParams}} - -### Return type - -{{#returnType}}{{#returnTypeIsPrimitive}}**{{{returnType}}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}**{{{returnType}}}**{{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}void (empty response body){{/returnType}} - -### Authorization - -{{^authMethods}}No authorization required{{/authMethods}}{{#authMethods}}[{{{name}}}](README.md#{{{name}}}){{^-last}}, {{/-last}}{{/authMethods}} - -### HTTP request headers - - - **Content-Type**: {{#consumes}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/consumes}}{{^consumes}}Not defined{{/consumes}} - - **Accept**: {{#produces}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/produces}}{{^produces}}Not defined{{/produces}} - -{{#responses.0}} - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -{{#responses}} -**{{code}}** | {{message}} | {{#headers}} * {{baseName}} - {{description}}
    {{/headers}}{{^headers.0}} - {{/headers.0}} | -{{/responses}} -{{/responses.0}} - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -{{/operation}} -{{/operations}} - diff --git a/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/FILES b/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/FILES index 4137d52d1cd..29f9ff544d9 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/FILES @@ -1,8 +1,5 @@ .gitignore -PetApi.md README.md -StoreApi.md -UserApi.md apis/PetApi.ts apis/StoreApi.ts apis/UserApi.ts diff --git a/samples/openapi3/client/petstore/typescript/builds/default/PetApi.md b/samples/openapi3/client/petstore/typescript/builds/default/PetApi.md deleted file mode 100644 index 2fe727d84fa..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/default/PetApi.md +++ /dev/null @@ -1,505 +0,0 @@ -# petstore.PetApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store -[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet -[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status -[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags -[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID -[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet -[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data -[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image - - -# **addPet** -> Pet addPet(pet) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiAddPetRequest = { - // Pet | Pet object that needs to be added to the store - pet: { - id: 1, - category: { - id: 1, - name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - }, - name: "doggie", - photoUrls: [ - "photoUrls_example", - ], - tags: [ - { - id: 1, - name: "name_example", - }, - ], - status: "available", - }, -}; - -apiInstance.addPet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **pet** | **Pet**| Pet object that needs to be added to the store | - - -### Return type - -**Pet** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/json, application/xml - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**405** | Invalid input | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **deletePet** -> deletePet() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiDeletePetRequest = { - // number | Pet id to delete - petId: 1, - // string (optional) - apiKey: "api_key_example", -}; - -apiInstance.deletePet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | Pet id to delete | defaults to undefined - **apiKey** | [**string**] | | (optional) defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid pet value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **findPetsByStatus** -> Array findPetsByStatus() - -Multiple status values can be provided with comma separated strings - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiFindPetsByStatusRequest = { - // Array<'available' | 'pending' | 'sold'> | Status values that need to be considered for filter - status: [ - "available", - ], -}; - -apiInstance.findPetsByStatus(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **status** | **Array<'available' | 'pending' | 'sold'>** | Status values that need to be considered for filter | defaults to undefined - - -### Return type - -**Array** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid status value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **findPetsByTags** -> Array findPetsByTags() - -Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiFindPetsByTagsRequest = { - // Array | Tags to filter by - tags: [ - "tags_example", - ], -}; - -apiInstance.findPetsByTags(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **tags** | **Array<string>** | Tags to filter by | defaults to undefined - - -### Return type - -**Array** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid tag value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getPetById** -> Pet getPetById() - -Returns a single pet - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiGetPetByIdRequest = { - // number | ID of pet to return - petId: 1, -}; - -apiInstance.getPetById(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet to return | defaults to undefined - - -### Return type - -**Pet** - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Pet not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updatePet** -> Pet updatePet(pet) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUpdatePetRequest = { - // Pet | Pet object that needs to be added to the store - pet: { - id: 1, - category: { - id: 1, - name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - }, - name: "doggie", - photoUrls: [ - "photoUrls_example", - ], - tags: [ - { - id: 1, - name: "name_example", - }, - ], - status: "available", - }, -}; - -apiInstance.updatePet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **pet** | **Pet**| Pet object that needs to be added to the store | - - -### Return type - -**Pet** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/json, application/xml - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Pet not found | - | -**405** | Validation exception | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updatePetWithForm** -> updatePetWithForm() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUpdatePetWithFormRequest = { - // number | ID of pet that needs to be updated - petId: 1, - // string | Updated name of the pet (optional) - name: "name_example", - // string | Updated status of the pet (optional) - status: "status_example", -}; - -apiInstance.updatePetWithForm(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet that needs to be updated | defaults to undefined - **name** | [**string**] | Updated name of the pet | (optional) defaults to undefined - **status** | [**string**] | Updated status of the pet | (optional) defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/x-www-form-urlencoded - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**405** | Invalid input | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **uploadFile** -> ApiResponse uploadFile() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUploadFileRequest = { - // number | ID of pet to update - petId: 1, - // string | Additional data to pass to server (optional) - additionalMetadata: "additionalMetadata_example", - // HttpFile | file to upload (optional) - file: { data: Buffer.from(fs.readFileSync('/path/to/file', 'utf-8')), name: '/path/to/file' }, -}; - -apiInstance.uploadFile(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet to update | defaults to undefined - **additionalMetadata** | [**string**] | Additional data to pass to server | (optional) defaults to undefined - **file** | [**HttpFile**] | file to upload | (optional) defaults to undefined - - -### Return type - -**ApiResponse** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: multipart/form-data - - **Accept**: application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/default/StoreApi.md b/samples/openapi3/client/petstore/typescript/builds/default/StoreApi.md deleted file mode 100644 index b2a63f78219..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/default/StoreApi.md +++ /dev/null @@ -1,233 +0,0 @@ -# petstore.StoreApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status -[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID -[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet - - -# **deleteOrder** -> deleteOrder() - -For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiDeleteOrderRequest = { - // string | ID of the order that needs to be deleted - orderId: "orderId_example", -}; - -apiInstance.deleteOrder(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **orderId** | [**string**] | ID of the order that needs to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid ID supplied | - | -**404** | Order not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getInventory** -> { [key: string]: number; } getInventory() - -Returns a map of status codes to quantities - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:any = {}; - -apiInstance.getInventory(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters -This endpoint does not need any parameter. - - -### Return type - -**{ [key: string]: number; }** - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getOrderById** -> Order getOrderById() - -For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiGetOrderByIdRequest = { - // number | ID of pet that needs to be fetched - orderId: 1, -}; - -apiInstance.getOrderById(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **orderId** | [**number**] | ID of pet that needs to be fetched | defaults to undefined - - -### Return type - -**Order** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Order not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **placeOrder** -> Order placeOrder(order) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiPlaceOrderRequest = { - // Order | order placed for purchasing the pet - order: { - id: 1, - petId: 1, - quantity: 1, - shipDate: new Date('1970-01-01T00:00:00.00Z'), - status: "placed", - complete: false, - }, -}; - -apiInstance.placeOrder(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **order** | **Order**| order placed for purchasing the pet | - - -### Return type - -**Order** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid Order | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/default/UserApi.md b/samples/openapi3/client/petstore/typescript/builds/default/UserApi.md deleted file mode 100644 index e5ac670bd7c..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/default/UserApi.md +++ /dev/null @@ -1,489 +0,0 @@ -# petstore.UserApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**createUser**](UserApi.md#createUser) | **POST** /user | Create user -[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array -[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array -[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user -[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name -[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system -[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session -[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user - - -# **createUser** -> createUser(user) - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUserRequest = { - // User | Created user object - user: { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, -}; - -apiInstance.createUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **User**| Created user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **createUsersWithArrayInput** -> createUsersWithArrayInput(user) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUsersWithArrayInputRequest = { - // Array | List of user object - user: [ - { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, - ], -}; - -apiInstance.createUsersWithArrayInput(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **Array**| List of user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **createUsersWithListInput** -> createUsersWithListInput(user) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUsersWithListInputRequest = { - // Array | List of user object - user: [ - { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, - ], -}; - -apiInstance.createUsersWithListInput(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **Array**| List of user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **deleteUser** -> deleteUser() - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiDeleteUserRequest = { - // string | The name that needs to be deleted - username: "username_example", -}; - -apiInstance.deleteUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The name that needs to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid username supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getUserByName** -> User getUserByName() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiGetUserByNameRequest = { - // string | The name that needs to be fetched. Use user1 for testing. - username: "username_example", -}; - -apiInstance.getUserByName(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The name that needs to be fetched. Use user1 for testing. | defaults to undefined - - -### Return type - -**User** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid username supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **loginUser** -> string loginUser() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiLoginUserRequest = { - // string | The user name for login - username: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - // string | The password for login in clear text - password: "password_example", -}; - -apiInstance.loginUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The user name for login | defaults to undefined - **password** | [**string**] | The password for login in clear text | defaults to undefined - - -### Return type - -**string** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | * Set-Cookie - Cookie authentication key for use with the `api_key` apiKey authentication.
    * X-Rate-Limit - calls per hour allowed by the user
    * X-Expires-After - date in UTC when toekn expires
    | -**400** | Invalid username/password supplied | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **logoutUser** -> logoutUser() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:any = {}; - -apiInstance.logoutUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters -This endpoint does not need any parameter. - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updateUser** -> updateUser(user) - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiUpdateUserRequest = { - // string | name that need to be deleted - username: "username_example", - // User | Updated user object - user: { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, -}; - -apiInstance.updateUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **User**| Updated user object | - **username** | [**string**] | name that need to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid user supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/FILES b/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/FILES index 156ef7ba37f..3b444ce2b10 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/FILES @@ -1,7 +1,4 @@ .gitignore -PetApi.md -StoreApi.md -UserApi.md apis/PetApi.ts apis/StoreApi.ts apis/UserApi.ts diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/PetApi.md b/samples/openapi3/client/petstore/typescript/builds/deno/PetApi.md deleted file mode 100644 index 2fe727d84fa..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/deno/PetApi.md +++ /dev/null @@ -1,505 +0,0 @@ -# petstore.PetApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store -[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet -[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status -[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags -[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID -[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet -[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data -[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image - - -# **addPet** -> Pet addPet(pet) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiAddPetRequest = { - // Pet | Pet object that needs to be added to the store - pet: { - id: 1, - category: { - id: 1, - name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - }, - name: "doggie", - photoUrls: [ - "photoUrls_example", - ], - tags: [ - { - id: 1, - name: "name_example", - }, - ], - status: "available", - }, -}; - -apiInstance.addPet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **pet** | **Pet**| Pet object that needs to be added to the store | - - -### Return type - -**Pet** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/json, application/xml - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**405** | Invalid input | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **deletePet** -> deletePet() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiDeletePetRequest = { - // number | Pet id to delete - petId: 1, - // string (optional) - apiKey: "api_key_example", -}; - -apiInstance.deletePet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | Pet id to delete | defaults to undefined - **apiKey** | [**string**] | | (optional) defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid pet value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **findPetsByStatus** -> Array findPetsByStatus() - -Multiple status values can be provided with comma separated strings - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiFindPetsByStatusRequest = { - // Array<'available' | 'pending' | 'sold'> | Status values that need to be considered for filter - status: [ - "available", - ], -}; - -apiInstance.findPetsByStatus(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **status** | **Array<'available' | 'pending' | 'sold'>** | Status values that need to be considered for filter | defaults to undefined - - -### Return type - -**Array** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid status value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **findPetsByTags** -> Array findPetsByTags() - -Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiFindPetsByTagsRequest = { - // Array | Tags to filter by - tags: [ - "tags_example", - ], -}; - -apiInstance.findPetsByTags(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **tags** | **Array<string>** | Tags to filter by | defaults to undefined - - -### Return type - -**Array** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid tag value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getPetById** -> Pet getPetById() - -Returns a single pet - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiGetPetByIdRequest = { - // number | ID of pet to return - petId: 1, -}; - -apiInstance.getPetById(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet to return | defaults to undefined - - -### Return type - -**Pet** - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Pet not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updatePet** -> Pet updatePet(pet) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUpdatePetRequest = { - // Pet | Pet object that needs to be added to the store - pet: { - id: 1, - category: { - id: 1, - name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - }, - name: "doggie", - photoUrls: [ - "photoUrls_example", - ], - tags: [ - { - id: 1, - name: "name_example", - }, - ], - status: "available", - }, -}; - -apiInstance.updatePet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **pet** | **Pet**| Pet object that needs to be added to the store | - - -### Return type - -**Pet** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/json, application/xml - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Pet not found | - | -**405** | Validation exception | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updatePetWithForm** -> updatePetWithForm() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUpdatePetWithFormRequest = { - // number | ID of pet that needs to be updated - petId: 1, - // string | Updated name of the pet (optional) - name: "name_example", - // string | Updated status of the pet (optional) - status: "status_example", -}; - -apiInstance.updatePetWithForm(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet that needs to be updated | defaults to undefined - **name** | [**string**] | Updated name of the pet | (optional) defaults to undefined - **status** | [**string**] | Updated status of the pet | (optional) defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/x-www-form-urlencoded - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**405** | Invalid input | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **uploadFile** -> ApiResponse uploadFile() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUploadFileRequest = { - // number | ID of pet to update - petId: 1, - // string | Additional data to pass to server (optional) - additionalMetadata: "additionalMetadata_example", - // HttpFile | file to upload (optional) - file: { data: Buffer.from(fs.readFileSync('/path/to/file', 'utf-8')), name: '/path/to/file' }, -}; - -apiInstance.uploadFile(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet to update | defaults to undefined - **additionalMetadata** | [**string**] | Additional data to pass to server | (optional) defaults to undefined - **file** | [**HttpFile**] | file to upload | (optional) defaults to undefined - - -### Return type - -**ApiResponse** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: multipart/form-data - - **Accept**: application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/StoreApi.md b/samples/openapi3/client/petstore/typescript/builds/deno/StoreApi.md deleted file mode 100644 index b2a63f78219..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/deno/StoreApi.md +++ /dev/null @@ -1,233 +0,0 @@ -# petstore.StoreApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status -[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID -[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet - - -# **deleteOrder** -> deleteOrder() - -For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiDeleteOrderRequest = { - // string | ID of the order that needs to be deleted - orderId: "orderId_example", -}; - -apiInstance.deleteOrder(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **orderId** | [**string**] | ID of the order that needs to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid ID supplied | - | -**404** | Order not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getInventory** -> { [key: string]: number; } getInventory() - -Returns a map of status codes to quantities - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:any = {}; - -apiInstance.getInventory(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters -This endpoint does not need any parameter. - - -### Return type - -**{ [key: string]: number; }** - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getOrderById** -> Order getOrderById() - -For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiGetOrderByIdRequest = { - // number | ID of pet that needs to be fetched - orderId: 1, -}; - -apiInstance.getOrderById(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **orderId** | [**number**] | ID of pet that needs to be fetched | defaults to undefined - - -### Return type - -**Order** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Order not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **placeOrder** -> Order placeOrder(order) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiPlaceOrderRequest = { - // Order | order placed for purchasing the pet - order: { - id: 1, - petId: 1, - quantity: 1, - shipDate: new Date('1970-01-01T00:00:00.00Z'), - status: "placed", - complete: false, - }, -}; - -apiInstance.placeOrder(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **order** | **Order**| order placed for purchasing the pet | - - -### Return type - -**Order** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid Order | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/UserApi.md b/samples/openapi3/client/petstore/typescript/builds/deno/UserApi.md deleted file mode 100644 index e5ac670bd7c..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/deno/UserApi.md +++ /dev/null @@ -1,489 +0,0 @@ -# petstore.UserApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**createUser**](UserApi.md#createUser) | **POST** /user | Create user -[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array -[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array -[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user -[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name -[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system -[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session -[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user - - -# **createUser** -> createUser(user) - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUserRequest = { - // User | Created user object - user: { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, -}; - -apiInstance.createUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **User**| Created user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **createUsersWithArrayInput** -> createUsersWithArrayInput(user) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUsersWithArrayInputRequest = { - // Array | List of user object - user: [ - { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, - ], -}; - -apiInstance.createUsersWithArrayInput(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **Array**| List of user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **createUsersWithListInput** -> createUsersWithListInput(user) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUsersWithListInputRequest = { - // Array | List of user object - user: [ - { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, - ], -}; - -apiInstance.createUsersWithListInput(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **Array**| List of user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **deleteUser** -> deleteUser() - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiDeleteUserRequest = { - // string | The name that needs to be deleted - username: "username_example", -}; - -apiInstance.deleteUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The name that needs to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid username supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getUserByName** -> User getUserByName() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiGetUserByNameRequest = { - // string | The name that needs to be fetched. Use user1 for testing. - username: "username_example", -}; - -apiInstance.getUserByName(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The name that needs to be fetched. Use user1 for testing. | defaults to undefined - - -### Return type - -**User** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid username supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **loginUser** -> string loginUser() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiLoginUserRequest = { - // string | The user name for login - username: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - // string | The password for login in clear text - password: "password_example", -}; - -apiInstance.loginUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The user name for login | defaults to undefined - **password** | [**string**] | The password for login in clear text | defaults to undefined - - -### Return type - -**string** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | * Set-Cookie - Cookie authentication key for use with the `api_key` apiKey authentication.
    * X-Rate-Limit - calls per hour allowed by the user
    * X-Expires-After - date in UTC when toekn expires
    | -**400** | Invalid username/password supplied | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **logoutUser** -> logoutUser() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:any = {}; - -apiInstance.logoutUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters -This endpoint does not need any parameter. - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updateUser** -> updateUser(user) - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiUpdateUserRequest = { - // string | name that need to be deleted - username: "username_example", - // User | Updated user object - user: { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, -}; - -apiInstance.updateUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **User**| Updated user object | - **username** | [**string**] | name that need to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid user supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/FILES b/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/FILES index 2546d613ef9..4f2382c7e38 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/FILES @@ -1,8 +1,5 @@ .gitignore -PetApi.md README.md -StoreApi.md -UserApi.md apis/PetApi.service.ts apis/PetApi.ts apis/StoreApi.service.ts diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/PetApi.md b/samples/openapi3/client/petstore/typescript/builds/inversify/PetApi.md deleted file mode 100644 index 2fe727d84fa..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/PetApi.md +++ /dev/null @@ -1,505 +0,0 @@ -# petstore.PetApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store -[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet -[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status -[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags -[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID -[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet -[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data -[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image - - -# **addPet** -> Pet addPet(pet) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiAddPetRequest = { - // Pet | Pet object that needs to be added to the store - pet: { - id: 1, - category: { - id: 1, - name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - }, - name: "doggie", - photoUrls: [ - "photoUrls_example", - ], - tags: [ - { - id: 1, - name: "name_example", - }, - ], - status: "available", - }, -}; - -apiInstance.addPet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **pet** | **Pet**| Pet object that needs to be added to the store | - - -### Return type - -**Pet** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/json, application/xml - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**405** | Invalid input | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **deletePet** -> deletePet() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiDeletePetRequest = { - // number | Pet id to delete - petId: 1, - // string (optional) - apiKey: "api_key_example", -}; - -apiInstance.deletePet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | Pet id to delete | defaults to undefined - **apiKey** | [**string**] | | (optional) defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid pet value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **findPetsByStatus** -> Array findPetsByStatus() - -Multiple status values can be provided with comma separated strings - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiFindPetsByStatusRequest = { - // Array<'available' | 'pending' | 'sold'> | Status values that need to be considered for filter - status: [ - "available", - ], -}; - -apiInstance.findPetsByStatus(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **status** | **Array<'available' | 'pending' | 'sold'>** | Status values that need to be considered for filter | defaults to undefined - - -### Return type - -**Array** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid status value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **findPetsByTags** -> Array findPetsByTags() - -Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiFindPetsByTagsRequest = { - // Array | Tags to filter by - tags: [ - "tags_example", - ], -}; - -apiInstance.findPetsByTags(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **tags** | **Array<string>** | Tags to filter by | defaults to undefined - - -### Return type - -**Array** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid tag value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getPetById** -> Pet getPetById() - -Returns a single pet - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiGetPetByIdRequest = { - // number | ID of pet to return - petId: 1, -}; - -apiInstance.getPetById(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet to return | defaults to undefined - - -### Return type - -**Pet** - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Pet not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updatePet** -> Pet updatePet(pet) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUpdatePetRequest = { - // Pet | Pet object that needs to be added to the store - pet: { - id: 1, - category: { - id: 1, - name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - }, - name: "doggie", - photoUrls: [ - "photoUrls_example", - ], - tags: [ - { - id: 1, - name: "name_example", - }, - ], - status: "available", - }, -}; - -apiInstance.updatePet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **pet** | **Pet**| Pet object that needs to be added to the store | - - -### Return type - -**Pet** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/json, application/xml - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Pet not found | - | -**405** | Validation exception | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updatePetWithForm** -> updatePetWithForm() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUpdatePetWithFormRequest = { - // number | ID of pet that needs to be updated - petId: 1, - // string | Updated name of the pet (optional) - name: "name_example", - // string | Updated status of the pet (optional) - status: "status_example", -}; - -apiInstance.updatePetWithForm(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet that needs to be updated | defaults to undefined - **name** | [**string**] | Updated name of the pet | (optional) defaults to undefined - **status** | [**string**] | Updated status of the pet | (optional) defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/x-www-form-urlencoded - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**405** | Invalid input | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **uploadFile** -> ApiResponse uploadFile() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUploadFileRequest = { - // number | ID of pet to update - petId: 1, - // string | Additional data to pass to server (optional) - additionalMetadata: "additionalMetadata_example", - // HttpFile | file to upload (optional) - file: { data: Buffer.from(fs.readFileSync('/path/to/file', 'utf-8')), name: '/path/to/file' }, -}; - -apiInstance.uploadFile(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet to update | defaults to undefined - **additionalMetadata** | [**string**] | Additional data to pass to server | (optional) defaults to undefined - **file** | [**HttpFile**] | file to upload | (optional) defaults to undefined - - -### Return type - -**ApiResponse** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: multipart/form-data - - **Accept**: application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/StoreApi.md b/samples/openapi3/client/petstore/typescript/builds/inversify/StoreApi.md deleted file mode 100644 index b2a63f78219..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/StoreApi.md +++ /dev/null @@ -1,233 +0,0 @@ -# petstore.StoreApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status -[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID -[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet - - -# **deleteOrder** -> deleteOrder() - -For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiDeleteOrderRequest = { - // string | ID of the order that needs to be deleted - orderId: "orderId_example", -}; - -apiInstance.deleteOrder(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **orderId** | [**string**] | ID of the order that needs to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid ID supplied | - | -**404** | Order not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getInventory** -> { [key: string]: number; } getInventory() - -Returns a map of status codes to quantities - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:any = {}; - -apiInstance.getInventory(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters -This endpoint does not need any parameter. - - -### Return type - -**{ [key: string]: number; }** - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getOrderById** -> Order getOrderById() - -For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiGetOrderByIdRequest = { - // number | ID of pet that needs to be fetched - orderId: 1, -}; - -apiInstance.getOrderById(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **orderId** | [**number**] | ID of pet that needs to be fetched | defaults to undefined - - -### Return type - -**Order** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Order not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **placeOrder** -> Order placeOrder(order) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiPlaceOrderRequest = { - // Order | order placed for purchasing the pet - order: { - id: 1, - petId: 1, - quantity: 1, - shipDate: new Date('1970-01-01T00:00:00.00Z'), - status: "placed", - complete: false, - }, -}; - -apiInstance.placeOrder(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **order** | **Order**| order placed for purchasing the pet | - - -### Return type - -**Order** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid Order | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/UserApi.md b/samples/openapi3/client/petstore/typescript/builds/inversify/UserApi.md deleted file mode 100644 index e5ac670bd7c..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/UserApi.md +++ /dev/null @@ -1,489 +0,0 @@ -# petstore.UserApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**createUser**](UserApi.md#createUser) | **POST** /user | Create user -[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array -[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array -[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user -[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name -[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system -[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session -[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user - - -# **createUser** -> createUser(user) - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUserRequest = { - // User | Created user object - user: { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, -}; - -apiInstance.createUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **User**| Created user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **createUsersWithArrayInput** -> createUsersWithArrayInput(user) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUsersWithArrayInputRequest = { - // Array | List of user object - user: [ - { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, - ], -}; - -apiInstance.createUsersWithArrayInput(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **Array**| List of user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **createUsersWithListInput** -> createUsersWithListInput(user) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUsersWithListInputRequest = { - // Array | List of user object - user: [ - { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, - ], -}; - -apiInstance.createUsersWithListInput(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **Array**| List of user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **deleteUser** -> deleteUser() - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiDeleteUserRequest = { - // string | The name that needs to be deleted - username: "username_example", -}; - -apiInstance.deleteUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The name that needs to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid username supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getUserByName** -> User getUserByName() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiGetUserByNameRequest = { - // string | The name that needs to be fetched. Use user1 for testing. - username: "username_example", -}; - -apiInstance.getUserByName(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The name that needs to be fetched. Use user1 for testing. | defaults to undefined - - -### Return type - -**User** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid username supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **loginUser** -> string loginUser() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiLoginUserRequest = { - // string | The user name for login - username: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - // string | The password for login in clear text - password: "password_example", -}; - -apiInstance.loginUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The user name for login | defaults to undefined - **password** | [**string**] | The password for login in clear text | defaults to undefined - - -### Return type - -**string** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | * Set-Cookie - Cookie authentication key for use with the `api_key` apiKey authentication.
    * X-Rate-Limit - calls per hour allowed by the user
    * X-Expires-After - date in UTC when toekn expires
    | -**400** | Invalid username/password supplied | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **logoutUser** -> logoutUser() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:any = {}; - -apiInstance.logoutUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters -This endpoint does not need any parameter. - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updateUser** -> updateUser(user) - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiUpdateUserRequest = { - // string | name that need to be deleted - username: "username_example", - // User | Updated user object - user: { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, -}; - -apiInstance.updateUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **User**| Updated user object | - **username** | [**string**] | name that need to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid user supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/FILES b/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/FILES index dfa2fadc5b0..031c2957055 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/FILES @@ -1,8 +1,5 @@ .gitignore -PetApi.md README.md -StoreApi.md -UserApi.md apis/PetApi.ts apis/StoreApi.ts apis/UserApi.ts diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/PetApi.md b/samples/openapi3/client/petstore/typescript/builds/jquery/PetApi.md deleted file mode 100644 index 2fe727d84fa..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/PetApi.md +++ /dev/null @@ -1,505 +0,0 @@ -# petstore.PetApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store -[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet -[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status -[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags -[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID -[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet -[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data -[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image - - -# **addPet** -> Pet addPet(pet) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiAddPetRequest = { - // Pet | Pet object that needs to be added to the store - pet: { - id: 1, - category: { - id: 1, - name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - }, - name: "doggie", - photoUrls: [ - "photoUrls_example", - ], - tags: [ - { - id: 1, - name: "name_example", - }, - ], - status: "available", - }, -}; - -apiInstance.addPet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **pet** | **Pet**| Pet object that needs to be added to the store | - - -### Return type - -**Pet** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/json, application/xml - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**405** | Invalid input | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **deletePet** -> deletePet() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiDeletePetRequest = { - // number | Pet id to delete - petId: 1, - // string (optional) - apiKey: "api_key_example", -}; - -apiInstance.deletePet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | Pet id to delete | defaults to undefined - **apiKey** | [**string**] | | (optional) defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid pet value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **findPetsByStatus** -> Array findPetsByStatus() - -Multiple status values can be provided with comma separated strings - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiFindPetsByStatusRequest = { - // Array<'available' | 'pending' | 'sold'> | Status values that need to be considered for filter - status: [ - "available", - ], -}; - -apiInstance.findPetsByStatus(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **status** | **Array<'available' | 'pending' | 'sold'>** | Status values that need to be considered for filter | defaults to undefined - - -### Return type - -**Array** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid status value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **findPetsByTags** -> Array findPetsByTags() - -Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiFindPetsByTagsRequest = { - // Array | Tags to filter by - tags: [ - "tags_example", - ], -}; - -apiInstance.findPetsByTags(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **tags** | **Array<string>** | Tags to filter by | defaults to undefined - - -### Return type - -**Array** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid tag value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getPetById** -> Pet getPetById() - -Returns a single pet - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiGetPetByIdRequest = { - // number | ID of pet to return - petId: 1, -}; - -apiInstance.getPetById(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet to return | defaults to undefined - - -### Return type - -**Pet** - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Pet not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updatePet** -> Pet updatePet(pet) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUpdatePetRequest = { - // Pet | Pet object that needs to be added to the store - pet: { - id: 1, - category: { - id: 1, - name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - }, - name: "doggie", - photoUrls: [ - "photoUrls_example", - ], - tags: [ - { - id: 1, - name: "name_example", - }, - ], - status: "available", - }, -}; - -apiInstance.updatePet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **pet** | **Pet**| Pet object that needs to be added to the store | - - -### Return type - -**Pet** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/json, application/xml - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Pet not found | - | -**405** | Validation exception | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updatePetWithForm** -> updatePetWithForm() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUpdatePetWithFormRequest = { - // number | ID of pet that needs to be updated - petId: 1, - // string | Updated name of the pet (optional) - name: "name_example", - // string | Updated status of the pet (optional) - status: "status_example", -}; - -apiInstance.updatePetWithForm(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet that needs to be updated | defaults to undefined - **name** | [**string**] | Updated name of the pet | (optional) defaults to undefined - **status** | [**string**] | Updated status of the pet | (optional) defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/x-www-form-urlencoded - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**405** | Invalid input | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **uploadFile** -> ApiResponse uploadFile() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUploadFileRequest = { - // number | ID of pet to update - petId: 1, - // string | Additional data to pass to server (optional) - additionalMetadata: "additionalMetadata_example", - // HttpFile | file to upload (optional) - file: { data: Buffer.from(fs.readFileSync('/path/to/file', 'utf-8')), name: '/path/to/file' }, -}; - -apiInstance.uploadFile(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet to update | defaults to undefined - **additionalMetadata** | [**string**] | Additional data to pass to server | (optional) defaults to undefined - **file** | [**HttpFile**] | file to upload | (optional) defaults to undefined - - -### Return type - -**ApiResponse** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: multipart/form-data - - **Accept**: application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/StoreApi.md b/samples/openapi3/client/petstore/typescript/builds/jquery/StoreApi.md deleted file mode 100644 index b2a63f78219..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/StoreApi.md +++ /dev/null @@ -1,233 +0,0 @@ -# petstore.StoreApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status -[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID -[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet - - -# **deleteOrder** -> deleteOrder() - -For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiDeleteOrderRequest = { - // string | ID of the order that needs to be deleted - orderId: "orderId_example", -}; - -apiInstance.deleteOrder(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **orderId** | [**string**] | ID of the order that needs to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid ID supplied | - | -**404** | Order not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getInventory** -> { [key: string]: number; } getInventory() - -Returns a map of status codes to quantities - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:any = {}; - -apiInstance.getInventory(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters -This endpoint does not need any parameter. - - -### Return type - -**{ [key: string]: number; }** - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getOrderById** -> Order getOrderById() - -For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiGetOrderByIdRequest = { - // number | ID of pet that needs to be fetched - orderId: 1, -}; - -apiInstance.getOrderById(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **orderId** | [**number**] | ID of pet that needs to be fetched | defaults to undefined - - -### Return type - -**Order** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Order not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **placeOrder** -> Order placeOrder(order) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiPlaceOrderRequest = { - // Order | order placed for purchasing the pet - order: { - id: 1, - petId: 1, - quantity: 1, - shipDate: new Date('1970-01-01T00:00:00.00Z'), - status: "placed", - complete: false, - }, -}; - -apiInstance.placeOrder(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **order** | **Order**| order placed for purchasing the pet | - - -### Return type - -**Order** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid Order | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/UserApi.md b/samples/openapi3/client/petstore/typescript/builds/jquery/UserApi.md deleted file mode 100644 index e5ac670bd7c..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/UserApi.md +++ /dev/null @@ -1,489 +0,0 @@ -# petstore.UserApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**createUser**](UserApi.md#createUser) | **POST** /user | Create user -[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array -[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array -[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user -[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name -[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system -[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session -[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user - - -# **createUser** -> createUser(user) - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUserRequest = { - // User | Created user object - user: { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, -}; - -apiInstance.createUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **User**| Created user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **createUsersWithArrayInput** -> createUsersWithArrayInput(user) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUsersWithArrayInputRequest = { - // Array | List of user object - user: [ - { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, - ], -}; - -apiInstance.createUsersWithArrayInput(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **Array**| List of user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **createUsersWithListInput** -> createUsersWithListInput(user) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUsersWithListInputRequest = { - // Array | List of user object - user: [ - { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, - ], -}; - -apiInstance.createUsersWithListInput(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **Array**| List of user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **deleteUser** -> deleteUser() - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiDeleteUserRequest = { - // string | The name that needs to be deleted - username: "username_example", -}; - -apiInstance.deleteUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The name that needs to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid username supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getUserByName** -> User getUserByName() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiGetUserByNameRequest = { - // string | The name that needs to be fetched. Use user1 for testing. - username: "username_example", -}; - -apiInstance.getUserByName(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The name that needs to be fetched. Use user1 for testing. | defaults to undefined - - -### Return type - -**User** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid username supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **loginUser** -> string loginUser() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiLoginUserRequest = { - // string | The user name for login - username: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - // string | The password for login in clear text - password: "password_example", -}; - -apiInstance.loginUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The user name for login | defaults to undefined - **password** | [**string**] | The password for login in clear text | defaults to undefined - - -### Return type - -**string** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | * Set-Cookie - Cookie authentication key for use with the `api_key` apiKey authentication.
    * X-Rate-Limit - calls per hour allowed by the user
    * X-Expires-After - date in UTC when toekn expires
    | -**400** | Invalid username/password supplied | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **logoutUser** -> logoutUser() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:any = {}; - -apiInstance.logoutUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters -This endpoint does not need any parameter. - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updateUser** -> updateUser(user) - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiUpdateUserRequest = { - // string | name that need to be deleted - username: "username_example", - // User | Updated user object - user: { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, -}; - -apiInstance.updateUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **User**| Updated user object | - **username** | [**string**] | name that need to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid user supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/FILES b/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/FILES index 4137d52d1cd..29f9ff544d9 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/FILES @@ -1,8 +1,5 @@ .gitignore -PetApi.md README.md -StoreApi.md -UserApi.md apis/PetApi.ts apis/StoreApi.ts apis/UserApi.ts diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/PetApi.md b/samples/openapi3/client/petstore/typescript/builds/object_params/PetApi.md deleted file mode 100644 index 2fe727d84fa..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/PetApi.md +++ /dev/null @@ -1,505 +0,0 @@ -# petstore.PetApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store -[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet -[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status -[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags -[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID -[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet -[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data -[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image - - -# **addPet** -> Pet addPet(pet) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiAddPetRequest = { - // Pet | Pet object that needs to be added to the store - pet: { - id: 1, - category: { - id: 1, - name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - }, - name: "doggie", - photoUrls: [ - "photoUrls_example", - ], - tags: [ - { - id: 1, - name: "name_example", - }, - ], - status: "available", - }, -}; - -apiInstance.addPet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **pet** | **Pet**| Pet object that needs to be added to the store | - - -### Return type - -**Pet** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/json, application/xml - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**405** | Invalid input | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **deletePet** -> deletePet() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiDeletePetRequest = { - // number | Pet id to delete - petId: 1, - // string (optional) - apiKey: "api_key_example", -}; - -apiInstance.deletePet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | Pet id to delete | defaults to undefined - **apiKey** | [**string**] | | (optional) defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid pet value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **findPetsByStatus** -> Array findPetsByStatus() - -Multiple status values can be provided with comma separated strings - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiFindPetsByStatusRequest = { - // Array<'available' | 'pending' | 'sold'> | Status values that need to be considered for filter - status: [ - "available", - ], -}; - -apiInstance.findPetsByStatus(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **status** | **Array<'available' | 'pending' | 'sold'>** | Status values that need to be considered for filter | defaults to undefined - - -### Return type - -**Array** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid status value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **findPetsByTags** -> Array findPetsByTags() - -Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiFindPetsByTagsRequest = { - // Array | Tags to filter by - tags: [ - "tags_example", - ], -}; - -apiInstance.findPetsByTags(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **tags** | **Array<string>** | Tags to filter by | defaults to undefined - - -### Return type - -**Array** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid tag value | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getPetById** -> Pet getPetById() - -Returns a single pet - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiGetPetByIdRequest = { - // number | ID of pet to return - petId: 1, -}; - -apiInstance.getPetById(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet to return | defaults to undefined - - -### Return type - -**Pet** - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Pet not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updatePet** -> Pet updatePet(pet) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUpdatePetRequest = { - // Pet | Pet object that needs to be added to the store - pet: { - id: 1, - category: { - id: 1, - name: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - }, - name: "doggie", - photoUrls: [ - "photoUrls_example", - ], - tags: [ - { - id: 1, - name: "name_example", - }, - ], - status: "available", - }, -}; - -apiInstance.updatePet(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **pet** | **Pet**| Pet object that needs to be added to the store | - - -### Return type - -**Pet** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/json, application/xml - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Pet not found | - | -**405** | Validation exception | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updatePetWithForm** -> updatePetWithForm() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUpdatePetWithFormRequest = { - // number | ID of pet that needs to be updated - petId: 1, - // string | Updated name of the pet (optional) - name: "name_example", - // string | Updated status of the pet (optional) - status: "status_example", -}; - -apiInstance.updatePetWithForm(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet that needs to be updated | defaults to undefined - **name** | [**string**] | Updated name of the pet | (optional) defaults to undefined - **status** | [**string**] | Updated status of the pet | (optional) defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: application/x-www-form-urlencoded - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**405** | Invalid input | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **uploadFile** -> ApiResponse uploadFile() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.PetApi(configuration); - -let body:petstore.PetApiUploadFileRequest = { - // number | ID of pet to update - petId: 1, - // string | Additional data to pass to server (optional) - additionalMetadata: "additionalMetadata_example", - // HttpFile | file to upload (optional) - file: { data: Buffer.from(fs.readFileSync('/path/to/file', 'utf-8')), name: '/path/to/file' }, -}; - -apiInstance.uploadFile(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **petId** | [**number**] | ID of pet to update | defaults to undefined - **additionalMetadata** | [**string**] | Additional data to pass to server | (optional) defaults to undefined - **file** | [**HttpFile**] | file to upload | (optional) defaults to undefined - - -### Return type - -**ApiResponse** - -### Authorization - -[petstore_auth](README.md#petstore_auth) - -### HTTP request headers - - - **Content-Type**: multipart/form-data - - **Accept**: application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/StoreApi.md b/samples/openapi3/client/petstore/typescript/builds/object_params/StoreApi.md deleted file mode 100644 index b2a63f78219..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/StoreApi.md +++ /dev/null @@ -1,233 +0,0 @@ -# petstore.StoreApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID -[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status -[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID -[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet - - -# **deleteOrder** -> deleteOrder() - -For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiDeleteOrderRequest = { - // string | ID of the order that needs to be deleted - orderId: "orderId_example", -}; - -apiInstance.deleteOrder(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **orderId** | [**string**] | ID of the order that needs to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid ID supplied | - | -**404** | Order not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getInventory** -> { [key: string]: number; } getInventory() - -Returns a map of status codes to quantities - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:any = {}; - -apiInstance.getInventory(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters -This endpoint does not need any parameter. - - -### Return type - -**{ [key: string]: number; }** - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getOrderById** -> Order getOrderById() - -For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiGetOrderByIdRequest = { - // number | ID of pet that needs to be fetched - orderId: 1, -}; - -apiInstance.getOrderById(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **orderId** | [**number**] | ID of pet that needs to be fetched | defaults to undefined - - -### Return type - -**Order** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid ID supplied | - | -**404** | Order not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **placeOrder** -> Order placeOrder(order) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.StoreApi(configuration); - -let body:petstore.StoreApiPlaceOrderRequest = { - // Order | order placed for purchasing the pet - order: { - id: 1, - petId: 1, - quantity: 1, - shipDate: new Date('1970-01-01T00:00:00.00Z'), - status: "placed", - complete: false, - }, -}; - -apiInstance.placeOrder(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **order** | **Order**| order placed for purchasing the pet | - - -### Return type - -**Order** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid Order | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/UserApi.md b/samples/openapi3/client/petstore/typescript/builds/object_params/UserApi.md deleted file mode 100644 index e5ac670bd7c..00000000000 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/UserApi.md +++ /dev/null @@ -1,489 +0,0 @@ -# petstore.UserApi - -All URIs are relative to *http://petstore.swagger.io/v2* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**createUser**](UserApi.md#createUser) | **POST** /user | Create user -[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array -[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array -[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user -[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name -[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system -[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session -[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user - - -# **createUser** -> createUser(user) - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUserRequest = { - // User | Created user object - user: { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, -}; - -apiInstance.createUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **User**| Created user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **createUsersWithArrayInput** -> createUsersWithArrayInput(user) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUsersWithArrayInputRequest = { - // Array | List of user object - user: [ - { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, - ], -}; - -apiInstance.createUsersWithArrayInput(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **Array**| List of user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **createUsersWithListInput** -> createUsersWithListInput(user) - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiCreateUsersWithListInputRequest = { - // Array | List of user object - user: [ - { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, - ], -}; - -apiInstance.createUsersWithListInput(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **Array**| List of user object | - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **deleteUser** -> deleteUser() - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiDeleteUserRequest = { - // string | The name that needs to be deleted - username: "username_example", -}; - -apiInstance.deleteUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The name that needs to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid username supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **getUserByName** -> User getUserByName() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiGetUserByNameRequest = { - // string | The name that needs to be fetched. Use user1 for testing. - username: "username_example", -}; - -apiInstance.getUserByName(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The name that needs to be fetched. Use user1 for testing. | defaults to undefined - - -### Return type - -**User** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | - | -**400** | Invalid username supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **loginUser** -> string loginUser() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiLoginUserRequest = { - // string | The user name for login - username: "CbUUGjjNSwg0_bs9ZayIMrKdgNvb6gvxmPb9GcsM61ate1RA89q3w1l4eH4XxEz.5awLMdeXylwK0lMGUSM4jsrh4dstlnQUN5vVdMLPA", - // string | The password for login in clear text - password: "password_example", -}; - -apiInstance.loginUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | [**string**] | The user name for login | defaults to undefined - **password** | [**string**] | The password for login in clear text | defaults to undefined - - -### Return type - -**string** - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/xml, application/json - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | successful operation | * Set-Cookie - Cookie authentication key for use with the `api_key` apiKey authentication.
    * X-Rate-Limit - calls per hour allowed by the user
    * X-Expires-After - date in UTC when toekn expires
    | -**400** | Invalid username/password supplied | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **logoutUser** -> logoutUser() - - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:any = {}; - -apiInstance.logoutUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters -This endpoint does not need any parameter. - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**0** | successful operation | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - -# **updateUser** -> updateUser(user) - -This can only be done by the logged in user. - -### Example - - -```typescript -import { petstore } from 'ts-petstore-client'; -import * as fs from 'fs'; - -const configuration = petstore.createConfiguration(); -const apiInstance = new petstore.UserApi(configuration); - -let body:petstore.UserApiUpdateUserRequest = { - // string | name that need to be deleted - username: "username_example", - // User | Updated user object - user: { - id: 1, - username: "username_example", - firstName: "firstName_example", - lastName: "lastName_example", - email: "email_example", - password: "password_example", - phone: "phone_example", - userStatus: 1, - }, -}; - -apiInstance.updateUser(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); -}).catch((error:any) => console.error(error)); -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **user** | **User**| Updated user object | - **username** | [**string**] | name that need to be deleted | defaults to undefined - - -### Return type - -void (empty response body) - -### Authorization - -[api_key](README.md#api_key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: Not defined - - -### HTTP response details -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**400** | Invalid user supplied | - | -**404** | User not found | - | - -[[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) - - From 5c1270aa37c5b84cfeda01a64dd7c35fa8e187fe Mon Sep 17 00:00:00 2001 From: Daiki Ojima Date: Mon, 14 Jun 2021 16:08:21 +0900 Subject: [PATCH 119/192] fix(readme): update brew cask usage (#9757) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ea5226bb88f..02a792e2877 100644 --- a/README.md +++ b/README.md @@ -269,7 +269,7 @@ To reinstall with the latest master, run `brew uninstall openapi-generator && br To install OpenJDK (pre-requisites), please run ```sh brew tap AdoptOpenJDK/openjdk -brew cask install adoptopenjdk12 +brew install --cask adoptopenjdk12 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home/ ``` From 856eca4ee6ce8d9bc3cf54137c6bf1e77452be38 Mon Sep 17 00:00:00 2001 From: Ivan Date: Mon, 14 Jun 2021 10:39:55 +0300 Subject: [PATCH 120/192] Hide buildOauthRequestInterceptor under isOAuth section (#9147) (#9736) --- .../src/main/resources/Java/libraries/feign/ApiClient.mustache | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/feign/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/feign/ApiClient.mustache index 4e094dfccbe..caa2d37bb62 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/feign/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/feign/ApiClient.mustache @@ -162,6 +162,7 @@ public class ApiClient { return objectMapper; } + {{#isOAuth}} private RequestInterceptor buildOauthRequestInterceptor(OAuthFlow flow, String authorizationUrl, String tokenUrl, String scopes) { switch (flow) { case password: @@ -172,6 +173,7 @@ public class ApiClient { throw new RuntimeException("Oauth flow \"" + flow + "\" is not implemented"); } } + {{/isOAuth}} public ObjectMapper getObjectMapper(){ return objectMapper; From cdb92086db5a2799e4f07b1d83d14c67e32b7416 Mon Sep 17 00:00:00 2001 From: Profpatsch Date: Mon, 14 Jun 2021 11:00:11 +0200 Subject: [PATCH 121/192] [haskell][server]: Set "AnyType" to `Aeson.Value` (#9733) * [haskell][server]: Set "AnyType" to `Aeson.Value` `AnyType` would not be translated to the json value type. This fixes that. * [haskell][server] Fix haddock error in `API.hs` Haddock (the Haskell documentation generator) would choke on the misplaced docstring. The heading has to appear inside the list. --- .../openapitools/codegen/languages/HaskellServantCodegen.java | 1 + .../src/main/resources/haskell-servant/API.mustache | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java index e19e4d024a2..ad013a6bbef 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java @@ -201,6 +201,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf typeMapping.put("number", "Double"); typeMapping.put("BigDecimal", "Double"); typeMapping.put("any", "Value"); + typeMapping.put("AnyType", "Value"); typeMapping.put("UUID", "UUID"); typeMapping.put("URI", "Text"); typeMapping.put("ByteArray", "Text"); diff --git a/modules/openapi-generator/src/main/resources/haskell-servant/API.mustache b/modules/openapi-generator/src/main/resources/haskell-servant/API.mustache index ab052a4f468..87e7c874aee 100644 --- a/modules/openapi-generator/src/main/resources/haskell-servant/API.mustache +++ b/modules/openapi-generator/src/main/resources/haskell-servant/API.mustache @@ -14,8 +14,8 @@ -fno-warn-unused-binds -fno-warn-unused-imports -freduction-depth=328 #-} module {{title}}.API - -- * Client and Server - ( Config(..) + ( -- * Client and Server + Config(..) , {{title}}Backend(..) , create{{title}}Client , run{{title}}Server From 45175f018bf7e4a3d3ff4156def55e34a1c6b74b Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 14 Jun 2021 17:01:26 +0800 Subject: [PATCH 122/192] update haskell-servant samples --- .../petstore/haskell-servant/.openapi-generator/VERSION | 2 +- .../petstore/haskell-servant/lib/OpenAPIPetstore/API.hs | 4 ++-- .../petstore/haskell-servant/lib/OpenAPIPetstore/Types.hs | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/samples/server/petstore/haskell-servant/.openapi-generator/VERSION b/samples/server/petstore/haskell-servant/.openapi-generator/VERSION index d99e7162d01..6555596f931 100644 --- a/samples/server/petstore/haskell-servant/.openapi-generator/VERSION +++ b/samples/server/petstore/haskell-servant/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0-SNAPSHOT \ No newline at end of file +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/API.hs b/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/API.hs index a70eb607c7a..3d94427f99d 100644 --- a/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/API.hs +++ b/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/API.hs @@ -14,8 +14,8 @@ -fno-warn-unused-binds -fno-warn-unused-imports -freduction-depth=328 #-} module OpenAPIPetstore.API - -- * Client and Server - ( Config(..) + ( -- * Client and Server + Config(..) , OpenAPIPetstoreBackend(..) , createOpenAPIPetstoreClient , runOpenAPIPetstoreServer diff --git a/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/Types.hs b/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/Types.hs index d4f84e4288f..855f7062f23 100644 --- a/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/Types.hs +++ b/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/Types.hs @@ -194,6 +194,7 @@ removeFieldLabelPrefix forParsing prefix = , ("~", "'Tilde") , ("?", "'Question_Mark") , (">=", "'Greater_Than_Or_Equal_To") + , ("~=", "'Tilde_Equal") ] mkCharReplacement (replaceStr, searchStr) = T.unpack . replacer (T.pack searchStr) (T.pack replaceStr) . T.pack replacer = From 874d7d4f97eeed9bf2a725f2403c7a7938e7e563 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 14 Jun 2021 18:04:34 +0800 Subject: [PATCH 123/192] skip oauth files in java feign (#9760) --- .../codegen/languages/JavaClientCodegen.java | 9 ++++++--- .../resources/Java/libraries/feign/ApiClient.mustache | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index ad4e1be8959..509b2ebb778 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -395,9 +395,6 @@ public class JavaClientCodegen extends AbstractJavaCodegen supportingFiles.add(new SupportingFile("ParamExpander.mustache", invokerFolder, "ParamExpander.java")); supportingFiles.add(new SupportingFile("EncodingUtils.mustache", invokerFolder, "EncodingUtils.java")); supportingFiles.add(new SupportingFile("auth/DefaultApi20Impl.mustache", authFolder, "DefaultApi20Impl.java")); - supportingFiles.add(new SupportingFile("auth/OauthPasswordGrant.mustache", authFolder, "OauthPasswordGrant.java")); - supportingFiles.add(new SupportingFile("auth/OauthClientCredentialsGrant.mustache", authFolder, "OauthClientCredentialsGrant.java")); - } else if (OKHTTP_GSON.equals(getLibrary()) || StringUtils.isEmpty(getLibrary())) { // the "okhttp-gson" library template requires "ApiCallback.mustache" for async call supportingFiles.add(new SupportingFile("ApiCallback.mustache", invokerFolder, "ApiCallback.java")); @@ -598,6 +595,12 @@ public class JavaClientCodegen extends AbstractJavaCodegen supportingFiles.add(new SupportingFile("auth/OAuth.mustache", authFolder, "OAuth.java")); supportingFiles.add(new SupportingFile("auth/OAuthFlow.mustache", authFolder, "OAuthFlow.java")); } + + // Add OauthPasswordGrant.java and OauthClientCredentialsGrant.java for feign library + if (FEIGN.equals(getLibrary())) { + supportingFiles.add(new SupportingFile("auth/OauthPasswordGrant.mustache", authFolder, "OauthPasswordGrant.java")); + supportingFiles.add(new SupportingFile("auth/OauthClientCredentialsGrant.mustache", authFolder, "OauthClientCredentialsGrant.java")); + } } } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/feign/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/feign/ApiClient.mustache index caa2d37bb62..e0d3e01c386 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/feign/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/feign/ApiClient.mustache @@ -162,7 +162,7 @@ public class ApiClient { return objectMapper; } - {{#isOAuth}} + {{#hasOAuthMethods}} private RequestInterceptor buildOauthRequestInterceptor(OAuthFlow flow, String authorizationUrl, String tokenUrl, String scopes) { switch (flow) { case password: @@ -173,8 +173,8 @@ public class ApiClient { throw new RuntimeException("Oauth flow \"" + flow + "\" is not implemented"); } } - {{/isOAuth}} + {{/hasOAuthMethods}} public ObjectMapper getObjectMapper(){ return objectMapper; } From f3e3a724fbef5c0f19af93a6f29c66a57366dbcf Mon Sep 17 00:00:00 2001 From: Christoph Ludwig Date: Mon, 14 Jun 2021 12:05:36 +0200 Subject: [PATCH 124/192] Fix `python-fastapi` free-form objects mapping and forward ref type hints (#9723) * map free-form objects to Dict[str, Any] * support Forward Type References Forward type references will be supported by default from Python 3.10 on only. Until then (and starting with Python 3.7), we can opt in by a __future__ import, cf. https://docs.python.org/3.9/whatsnew/3.7.html?highlight=forward#pep-563-postponed-evaluation-of-annotations * re-created pet-store sample * bump required Python version to 3.7 for generated FastAPI projects * make pydantic modell classes process forward type references --- .../src/main/resources/python-fastapi/Dockerfile.mustache | 6 +++--- .../src/main/resources/python-fastapi/README.mustache | 2 +- .../src/main/resources/python-fastapi/model.mustache | 5 ++++- .../main/resources/python-fastapi/model_field_type.mustache | 2 +- .../src/main/resources/python-fastapi/setup_cfg.mustache | 4 ++-- samples/server/petstore/python-fastapi/Dockerfile | 6 +++--- samples/server/petstore/python-fastapi/README.md | 2 +- samples/server/petstore/python-fastapi/setup.cfg | 4 ++-- .../src/openapi_server/models/api_response.py | 5 ++++- .../python-fastapi/src/openapi_server/models/category.py | 5 ++++- .../python-fastapi/src/openapi_server/models/order.py | 5 ++++- .../python-fastapi/src/openapi_server/models/pet.py | 5 ++++- .../python-fastapi/src/openapi_server/models/tag.py | 5 ++++- .../python-fastapi/src/openapi_server/models/user.py | 5 ++++- 14 files changed, 41 insertions(+), 20 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/Dockerfile.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/Dockerfile.mustache index 395fed380e6..b66458eb417 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/Dockerfile.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/Dockerfile.mustache @@ -1,4 +1,4 @@ -FROM python:3.6 AS builder +FROM python:3.7 AS builder WORKDIR /usr/src/app @@ -11,7 +11,7 @@ COPY . . RUN pip install --no-cache-dir . -FROM python:3.6 AS test_runner +FROM python:3.7 AS test_runner WORKDIR /tmp COPY --from=builder /venv /venv COPY --from=builder /usr/src/app/tests tests @@ -24,7 +24,7 @@ RUN pip install pytest RUN pytest tests -FROM python:3.6 AS service +FROM python:3.7 AS service WORKDIR /root/app/site-packages COPY --from=test_runner /venv /venv ENV PATH=/venv/bin:$PATH diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/README.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/README.mustache index ae8428952fd..c426a965f0f 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/README.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/README.mustache @@ -10,7 +10,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https: ## Requirements. -Python >= 3.6 +Python >= 3.7 ## Installation & Usage diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/model.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/model.mustache index 4c5545e0795..65d40b93482 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/model.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/model.mustache @@ -1,9 +1,10 @@ # coding: utf-8 +from __future__ import annotations from datetime import date, datetime # noqa: F401 import re # noqa: F401 -from typing import Dict, List, Optional # noqa: F401 +from typing import Any, Dict, List, Optional # noqa: F401 from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401 {{#models}} @@ -71,3 +72,5 @@ class {{classname}}(BaseModel): {{/vars}} {{/model}} {{/models}} + +{{classname}}.update_forward_refs() diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/model_field_type.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/model_field_type.mustache index c7e36fc47fc..a27dc7e87fe 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/model_field_type.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/model_field_type.mustache @@ -1 +1 @@ -{{#isEmail}}EmailStr{{/isEmail}}{{#isUri}}AnyUrl{{/isUri}}{{^isEmail}}{{^isUri}}{{dataType}}{{/isUri}}{{/isEmail}} \ No newline at end of file +{{#isEmail}}EmailStr{{/isEmail}}{{#isUri}}AnyUrl{{/isUri}}{{#isFreeFormObject}}Dict[str, Any]{{/isFreeFormObject}}{{^isEmail}}{{^isUri}}{{^isFreeFormObject}}{{dataType}}{{/isFreeFormObject}}{{/isUri}}{{/isEmail}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/setup_cfg.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/setup_cfg.mustache index ff5cfe968e0..2934cb8fc53 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/setup_cfg.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/setup_cfg.mustache @@ -4,11 +4,11 @@ version = {{appVersion}} description = {{appDescription}} long_description = file: README.md keywords = OpenAPI {{appName}} -python_requires = >= 3.6.* +python_requires = >= 3.7.* classifiers = Operating System :: OS Independent Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 + Programming Language :: Python :: 3.7 [options] install_requires = diff --git a/samples/server/petstore/python-fastapi/Dockerfile b/samples/server/petstore/python-fastapi/Dockerfile index 395fed380e6..b66458eb417 100644 --- a/samples/server/petstore/python-fastapi/Dockerfile +++ b/samples/server/petstore/python-fastapi/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.6 AS builder +FROM python:3.7 AS builder WORKDIR /usr/src/app @@ -11,7 +11,7 @@ COPY . . RUN pip install --no-cache-dir . -FROM python:3.6 AS test_runner +FROM python:3.7 AS test_runner WORKDIR /tmp COPY --from=builder /venv /venv COPY --from=builder /usr/src/app/tests tests @@ -24,7 +24,7 @@ RUN pip install pytest RUN pytest tests -FROM python:3.6 AS service +FROM python:3.7 AS service WORKDIR /root/app/site-packages COPY --from=test_runner /venv /venv ENV PATH=/venv/bin:$PATH diff --git a/samples/server/petstore/python-fastapi/README.md b/samples/server/petstore/python-fastapi/README.md index 6cafe22445e..34a725321ea 100644 --- a/samples/server/petstore/python-fastapi/README.md +++ b/samples/server/petstore/python-fastapi/README.md @@ -7,7 +7,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https: ## Requirements. -Python >= 3.6 +Python >= 3.7 ## Installation & Usage diff --git a/samples/server/petstore/python-fastapi/setup.cfg b/samples/server/petstore/python-fastapi/setup.cfg index bc0f0d452d9..cafb7b8cf7d 100644 --- a/samples/server/petstore/python-fastapi/setup.cfg +++ b/samples/server/petstore/python-fastapi/setup.cfg @@ -4,11 +4,11 @@ version = 1.0.0 description = This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. long_description = file: README.md keywords = OpenAPI OpenAPI Petstore -python_requires = >= 3.6.* +python_requires = >= 3.7.* classifiers = Operating System :: OS Independent Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 + Programming Language :: Python :: 3.7 [options] install_requires = diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/api_response.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/api_response.py index d5d1d9280c4..fce5f94edc0 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/models/api_response.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/api_response.py @@ -1,9 +1,10 @@ # coding: utf-8 +from __future__ import annotations from datetime import date, datetime # noqa: F401 import re # noqa: F401 -from typing import Dict, List, Optional # noqa: F401 +from typing import Any, Dict, List, Optional # noqa: F401 from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401 @@ -23,3 +24,5 @@ class ApiResponse(BaseModel): code: Optional[int] = None type: Optional[str] = None message: Optional[str] = None + +ApiResponse.update_forward_refs() diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/category.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/category.py index c690b247acc..de57bf2d2ee 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/models/category.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/category.py @@ -1,9 +1,10 @@ # coding: utf-8 +from __future__ import annotations from datetime import date, datetime # noqa: F401 import re # noqa: F401 -from typing import Dict, List, Optional # noqa: F401 +from typing import Any, Dict, List, Optional # noqa: F401 from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401 @@ -26,3 +27,5 @@ class Category(BaseModel): def name_pattern(cls, value): assert value is not None and re.match(r"^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$", value) return value + +Category.update_forward_refs() diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/order.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/order.py index 8cf86bb6a55..384fec2a3a1 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/models/order.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/order.py @@ -1,9 +1,10 @@ # coding: utf-8 +from __future__ import annotations from datetime import date, datetime # noqa: F401 import re # noqa: F401 -from typing import Dict, List, Optional # noqa: F401 +from typing import Any, Dict, List, Optional # noqa: F401 from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401 @@ -29,3 +30,5 @@ class Order(BaseModel): ship_date: Optional[datetime] = None status: Optional[str] = None complete: Optional[bool] = None + +Order.update_forward_refs() diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/pet.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/pet.py index 9a688f83b1d..c44c38079ac 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/models/pet.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/pet.py @@ -1,9 +1,10 @@ # coding: utf-8 +from __future__ import annotations from datetime import date, datetime # noqa: F401 import re # noqa: F401 -from typing import Dict, List, Optional # noqa: F401 +from typing import Any, Dict, List, Optional # noqa: F401 from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401 from openapi_server.models.category import Category @@ -31,3 +32,5 @@ class Pet(BaseModel): photo_urls: List[str] tags: Optional[List[Tag]] = None status: Optional[str] = None + +Pet.update_forward_refs() diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/tag.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/tag.py index 47ad31d81d2..3e0b45cd787 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/models/tag.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/tag.py @@ -1,9 +1,10 @@ # coding: utf-8 +from __future__ import annotations from datetime import date, datetime # noqa: F401 import re # noqa: F401 -from typing import Dict, List, Optional # noqa: F401 +from typing import Any, Dict, List, Optional # noqa: F401 from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401 @@ -21,3 +22,5 @@ class Tag(BaseModel): id: Optional[int] = None name: Optional[str] = None + +Tag.update_forward_refs() diff --git a/samples/server/petstore/python-fastapi/src/openapi_server/models/user.py b/samples/server/petstore/python-fastapi/src/openapi_server/models/user.py index e6abfd9a5dd..1c75b77dbfc 100644 --- a/samples/server/petstore/python-fastapi/src/openapi_server/models/user.py +++ b/samples/server/petstore/python-fastapi/src/openapi_server/models/user.py @@ -1,9 +1,10 @@ # coding: utf-8 +from __future__ import annotations from datetime import date, datetime # noqa: F401 import re # noqa: F401 -from typing import Dict, List, Optional # noqa: F401 +from typing import Any, Dict, List, Optional # noqa: F401 from pydantic import AnyUrl, BaseModel, EmailStr, validator # noqa: F401 @@ -33,3 +34,5 @@ class User(BaseModel): password: Optional[str] = None phone: Optional[str] = None user_status: Optional[int] = None + +User.update_forward_refs() From d14a82f7a711559ed99eb282722c02ea460496e6 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 14 Jun 2021 18:22:57 +0800 Subject: [PATCH 125/192] update readme with travis-ci.com (#9762) --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 02a792e2877..4a969ca8259 100644 --- a/README.md +++ b/README.md @@ -10,17 +10,17 @@
    [Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`5.2.0`): -[![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/master.svg?label=Integration%20Test)](https://travis-ci.org/OpenAPITools/openapi-generator) +[![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/master.svg?label=Integration%20Test)](https://travis-ci.com/OpenAPITools/openapi-generator) [![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator) -[![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=master&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator-wh2wu) +[![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=master&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator) [![JDK11 Build](https://cloud.drone.io/api/badges/OpenAPITools/openapi-generator/status.svg?ref=refs/heads/master)](https://cloud.drone.io/OpenAPITools/openapi-generator) [![Bitrise](https://img.shields.io/bitrise/4a2b10a819d12b67/master?label=bitrise%3A%20Swift+4,5&token=859FMDR8QHwabCzwvZK6vQ)](https://app.bitrise.io/app/4a2b10a819d12b67) [![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/openapitools/openapi-generator/Check%20Supported%20Java%20Versions/master?label=Check%20Supported%20Java%20Versions&logo=github&logoColor=green)](https://github.com/OpenAPITools/openapi-generator/actions?query=workflow%3A%22Check+Supported+Java+Versions%22) [6.0.x](https://github.com/OpenAPITools/openapi-generator/tree/6.0.x) (`6.0.x`): -[![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/6.0.x.svg?label=Integration%20Test)](https://travis-ci.org/OpenAPITools/openapi-generator) +[![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/6.0.x.svg?label=Integration%20Test)](https://travis-ci.com/OpenAPITools/openapi-generator) [![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator/tree/6.0.x.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator) -[![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=6.0.x&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator-wh2wu) +[![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=6.0.x&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator) [![JDK11 Build](https://cloud.drone.io/api/badges/OpenAPITools/openapi-generator/status.svg?ref=refs/heads/6.0.x)](https://cloud.drone.io/OpenAPITools/openapi-generator) [![Bitrise](https://img.shields.io/bitrise/4a2b10a819d12b67/6.0.x?label=bitrise%3A%20Swift+4,5&token=859FMDR8QHwabCzwvZK6vQ)](https://app.bitrise.io/app/4a2b10a819d12b67) From 376e4192e104b7bccb7280f198a9498ef29063c9 Mon Sep 17 00:00:00 2001 From: parpa Date: Mon, 14 Jun 2021 19:48:55 +0900 Subject: [PATCH 126/192] Update routers.mustache (#9662) Add PATCH suppord. --- .../src/main/resources/go-gin-server/routers.mustache | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/go-gin-server/routers.mustache b/modules/openapi-generator/src/main/resources/go-gin-server/routers.mustache index 8eb63de4ea0..c8636474dc9 100644 --- a/modules/openapi-generator/src/main/resources/go-gin-server/routers.mustache +++ b/modules/openapi-generator/src/main/resources/go-gin-server/routers.mustache @@ -33,6 +33,8 @@ func NewRouter() *gin.Engine { router.POST(route.Pattern, route.HandlerFunc) case http.MethodPut: router.PUT(route.Pattern, route.HandlerFunc) + case http.MethodPatch: + router.PATCH(route.Pattern, route.HandlerFunc) case http.MethodDelete: router.DELETE(route.Pattern, route.HandlerFunc) } From 795c25d27352f4ddb11f161a794d89017056bd64 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 14 Jun 2021 18:50:21 +0800 Subject: [PATCH 127/192] update go gin server samples --- samples/server/petstore/go-gin-api-server/go/routers.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/samples/server/petstore/go-gin-api-server/go/routers.go b/samples/server/petstore/go-gin-api-server/go/routers.go index 0a1432a6269..d0fbe840a1b 100644 --- a/samples/server/petstore/go-gin-api-server/go/routers.go +++ b/samples/server/petstore/go-gin-api-server/go/routers.go @@ -41,6 +41,8 @@ func NewRouter() *gin.Engine { router.POST(route.Pattern, route.HandlerFunc) case http.MethodPut: router.PUT(route.Pattern, route.HandlerFunc) + case http.MethodPatch: + router.PATCH(route.Pattern, route.HandlerFunc) case http.MethodDelete: router.DELETE(route.Pattern, route.HandlerFunc) } From 3edeaeea076312f5f836834e572a15b9db91da54 Mon Sep 17 00:00:00 2001 From: randomswdev Date: Mon, 14 Jun 2021 12:56:02 +0200 Subject: [PATCH 128/192] Fix single inheritance code generation for goserver (#8356) Co-authored-by: Bernardo Pastorelli <13519917+randomswdev@users.noreply.github.com> --- .../src/main/resources/go-server/model.mustache | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/go-server/model.mustache b/modules/openapi-generator/src/main/resources/go-server/model.mustache index 2f67ffafc3b..89860a8fe72 100644 --- a/modules/openapi-generator/src/main/resources/go-server/model.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/model.mustache @@ -17,6 +17,16 @@ const ( ){{/isEnum}}{{^isEnum}}{{#description}} // {{classname}} - {{{description}}}{{/description}} type {{classname}} struct { +{{#parent}} +{{^isMap}} +{{^isArray}} + {{{parent}}} +{{/isArray}} +{{/isMap}} +{{#isArray}} + Items {{{parent}}} +{{/isArray}} +{{/parent}} {{#vars}}{{#description}} // {{{description}}}{{/description}} {{name}} {{#isNullable}}*{{/isNullable}}{{{dataType}}} `json:"{{baseName}}{{^required}},omitempty{{/required}}"{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}` From 3fcbf17536aebe77d4d8e3f25472e1248aa79335 Mon Sep 17 00:00:00 2001 From: Julian G <23147553+JulianGmp@users.noreply.github.com> Date: Tue, 15 Jun 2021 08:42:29 +0200 Subject: [PATCH 129/192] [C++][Pistache] Fix compile break, error handling (#9742) * fix compilation break with validate function * fix error handling in handleParsingException bug caused all errors to be regarded as an internal server error * generate samples --- .../resources/cpp-pistache-server/api-header.mustache | 6 ++++-- .../resources/cpp-pistache-server/api-source.mustache | 4 +++- .../resources/cpp-pistache-server/model-header.mustache | 9 ++++++--- samples/server/petstore/cpp-pistache/api/PetApi.cpp | 4 +++- samples/server/petstore/cpp-pistache/api/PetApi.h | 6 ++++-- samples/server/petstore/cpp-pistache/api/StoreApi.cpp | 4 +++- samples/server/petstore/cpp-pistache/api/StoreApi.h | 6 ++++-- samples/server/petstore/cpp-pistache/api/UserApi.cpp | 4 +++- samples/server/petstore/cpp-pistache/api/UserApi.h | 6 ++++-- samples/server/petstore/cpp-pistache/model/ApiResponse.h | 9 ++++++--- samples/server/petstore/cpp-pistache/model/Category.h | 9 ++++++--- samples/server/petstore/cpp-pistache/model/Order.h | 9 ++++++--- samples/server/petstore/cpp-pistache/model/Pet.h | 9 ++++++--- samples/server/petstore/cpp-pistache/model/Tag.h | 9 ++++++--- samples/server/petstore/cpp-pistache/model/User.h | 9 ++++++--- 15 files changed, 70 insertions(+), 33 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-header.mustache index f614d478e96..c79979173f4 100644 --- a/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-header.mustache @@ -42,13 +42,15 @@ private: /// /// Helper function to handle unexpected Exceptions during Parameter parsing and validation. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleParsingException(const std::exception& ex) const noexcept; /// /// Helper function to handle unexpected Exceptions during processing of the request in handler functions. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleOperationException(const std::exception& ex) const noexcept; diff --git a/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-source.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-source.mustache index 9814ba0cd62..dad2eb75c6c 100644 --- a/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-source.mustache @@ -36,11 +36,13 @@ void {{classname}}::setupRoutes() { std::pair {{classname}}::handleParsingException(const std::exception& ex) const noexcept { try { - throw ex; + throw; } catch (nlohmann::detail::exception &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); } catch ({{helpersNamespace}}::ValidationException &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); + } catch (std::exception &e) { + return std::make_pair(Pistache::Http::Code::Internal_Server_Error, e.what()) } } diff --git a/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache index cb6d8d98ee0..656109b155e 100644 --- a/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache @@ -46,6 +46,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const {{classname}}& rhs) const; bool operator!=(const {{classname}}& rhs) const; @@ -77,9 +83,6 @@ protected: {{#isEnum}} {{classname}}::e{{classname}} m_value = {{classname}}::e{{classname}}::INVALID_VALUE_OPENAPI_GENERATED; {{/isEnum}} - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace {{modelNamespace}} diff --git a/samples/server/petstore/cpp-pistache/api/PetApi.cpp b/samples/server/petstore/cpp-pistache/api/PetApi.cpp index 7b3641599ee..a05048ec790 100644 --- a/samples/server/petstore/cpp-pistache/api/PetApi.cpp +++ b/samples/server/petstore/cpp-pistache/api/PetApi.cpp @@ -49,11 +49,13 @@ void PetApi::setupRoutes() { std::pair PetApi::handleParsingException(const std::exception& ex) const noexcept { try { - throw ex; + throw; } catch (nlohmann::detail::exception &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); } catch (org::openapitools::server::helpers::ValidationException &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); + } catch (std::exception &e) { + return std::make_pair(Pistache::Http::Code::Internal_Server_Error, e.what()) } } diff --git a/samples/server/petstore/cpp-pistache/api/PetApi.h b/samples/server/petstore/cpp-pistache/api/PetApi.h index f689a0675e1..3f790af02c1 100644 --- a/samples/server/petstore/cpp-pistache/api/PetApi.h +++ b/samples/server/petstore/cpp-pistache/api/PetApi.h @@ -58,13 +58,15 @@ private: /// /// Helper function to handle unexpected Exceptions during Parameter parsing and validation. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleParsingException(const std::exception& ex) const noexcept; /// /// Helper function to handle unexpected Exceptions during processing of the request in handler functions. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleOperationException(const std::exception& ex) const noexcept; diff --git a/samples/server/petstore/cpp-pistache/api/StoreApi.cpp b/samples/server/petstore/cpp-pistache/api/StoreApi.cpp index ea0c0e1793b..480bdcc0334 100644 --- a/samples/server/petstore/cpp-pistache/api/StoreApi.cpp +++ b/samples/server/petstore/cpp-pistache/api/StoreApi.cpp @@ -45,11 +45,13 @@ void StoreApi::setupRoutes() { std::pair StoreApi::handleParsingException(const std::exception& ex) const noexcept { try { - throw ex; + throw; } catch (nlohmann::detail::exception &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); } catch (org::openapitools::server::helpers::ValidationException &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); + } catch (std::exception &e) { + return std::make_pair(Pistache::Http::Code::Internal_Server_Error, e.what()) } } diff --git a/samples/server/petstore/cpp-pistache/api/StoreApi.h b/samples/server/petstore/cpp-pistache/api/StoreApi.h index 6eb22438747..e354a2710f3 100644 --- a/samples/server/petstore/cpp-pistache/api/StoreApi.h +++ b/samples/server/petstore/cpp-pistache/api/StoreApi.h @@ -54,13 +54,15 @@ private: /// /// Helper function to handle unexpected Exceptions during Parameter parsing and validation. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleParsingException(const std::exception& ex) const noexcept; /// /// Helper function to handle unexpected Exceptions during processing of the request in handler functions. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleOperationException(const std::exception& ex) const noexcept; diff --git a/samples/server/petstore/cpp-pistache/api/UserApi.cpp b/samples/server/petstore/cpp-pistache/api/UserApi.cpp index 94903581dc4..7b67dd0846e 100644 --- a/samples/server/petstore/cpp-pistache/api/UserApi.cpp +++ b/samples/server/petstore/cpp-pistache/api/UserApi.cpp @@ -49,11 +49,13 @@ void UserApi::setupRoutes() { std::pair UserApi::handleParsingException(const std::exception& ex) const noexcept { try { - throw ex; + throw; } catch (nlohmann::detail::exception &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); } catch (org::openapitools::server::helpers::ValidationException &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); + } catch (std::exception &e) { + return std::make_pair(Pistache::Http::Code::Internal_Server_Error, e.what()) } } diff --git a/samples/server/petstore/cpp-pistache/api/UserApi.h b/samples/server/petstore/cpp-pistache/api/UserApi.h index 003b6db4df4..fadf0b046c2 100644 --- a/samples/server/petstore/cpp-pistache/api/UserApi.h +++ b/samples/server/petstore/cpp-pistache/api/UserApi.h @@ -58,13 +58,15 @@ private: /// /// Helper function to handle unexpected Exceptions during Parameter parsing and validation. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleParsingException(const std::exception& ex) const noexcept; /// /// Helper function to handle unexpected Exceptions during processing of the request in handler functions. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleOperationException(const std::exception& ex) const noexcept; diff --git a/samples/server/petstore/cpp-pistache/model/ApiResponse.h b/samples/server/petstore/cpp-pistache/model/ApiResponse.h index d963b76650b..c4227b21876 100644 --- a/samples/server/petstore/cpp-pistache/model/ApiResponse.h +++ b/samples/server/petstore/cpp-pistache/model/ApiResponse.h @@ -46,6 +46,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const ApiResponse& rhs) const; bool operator!=(const ApiResponse& rhs) const; @@ -83,9 +89,6 @@ protected: bool m_TypeIsSet; std::string m_Message; bool m_MessageIsSet; - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/Category.h b/samples/server/petstore/cpp-pistache/model/Category.h index 1929ce33e92..71682c36c3b 100644 --- a/samples/server/petstore/cpp-pistache/model/Category.h +++ b/samples/server/petstore/cpp-pistache/model/Category.h @@ -46,6 +46,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const Category& rhs) const; bool operator!=(const Category& rhs) const; @@ -74,9 +80,6 @@ protected: bool m_IdIsSet; std::string m_Name; bool m_NameIsSet; - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/Order.h b/samples/server/petstore/cpp-pistache/model/Order.h index 3d28e1eef6b..86a6e35f87f 100644 --- a/samples/server/petstore/cpp-pistache/model/Order.h +++ b/samples/server/petstore/cpp-pistache/model/Order.h @@ -46,6 +46,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const Order& rhs) const; bool operator!=(const Order& rhs) const; @@ -110,9 +116,6 @@ protected: bool m_StatusIsSet; bool m_Complete; bool m_CompleteIsSet; - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/Pet.h b/samples/server/petstore/cpp-pistache/model/Pet.h index 1cd841a08fa..af773cb3e5c 100644 --- a/samples/server/petstore/cpp-pistache/model/Pet.h +++ b/samples/server/petstore/cpp-pistache/model/Pet.h @@ -49,6 +49,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const Pet& rhs) const; bool operator!=(const Pet& rhs) const; @@ -109,9 +115,6 @@ protected: bool m_TagsIsSet; std::string m_Status; bool m_StatusIsSet; - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/Tag.h b/samples/server/petstore/cpp-pistache/model/Tag.h index ddebeadae43..1b607e27fd9 100644 --- a/samples/server/petstore/cpp-pistache/model/Tag.h +++ b/samples/server/petstore/cpp-pistache/model/Tag.h @@ -46,6 +46,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const Tag& rhs) const; bool operator!=(const Tag& rhs) const; @@ -74,9 +80,6 @@ protected: bool m_IdIsSet; std::string m_Name; bool m_NameIsSet; - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/User.h b/samples/server/petstore/cpp-pistache/model/User.h index 02bd5f4230a..38048fe58e4 100644 --- a/samples/server/petstore/cpp-pistache/model/User.h +++ b/samples/server/petstore/cpp-pistache/model/User.h @@ -46,6 +46,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const User& rhs) const; bool operator!=(const User& rhs) const; @@ -128,9 +134,6 @@ protected: bool m_PhoneIsSet; int32_t m_UserStatus; bool m_UserStatusIsSet; - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace org::openapitools::server::model From ef3186f4a6da28cbdafdd386b3aaab7f6c5008e2 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 15 Jun 2021 15:26:30 +0800 Subject: [PATCH 130/192] comment out python fastapi test due to failure in ci --- pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a78fee85d3c..c33cc976442 100644 --- a/pom.xml +++ b/pom.xml @@ -1187,7 +1187,8 @@ samples/server/petstore/python-aiohttp samples/server/petstore/python-aiohttp-srclayout - samples/server/petstore/python-fastapi + samples/server/petstore/python-flask samples/server/petstore/python-aiohttp samples/server/petstore/python-aiohttp-srclayout - + samples/server/petstore/python-fastapi samples/server/petstore/python-flask From d3baa93a62fde17486ce4d74f1d58565862cbc60 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 16 Jun 2021 16:02:58 +0800 Subject: [PATCH 134/192] update java resteasy samples --- samples/client/petstore/java/resteasy/pom.xml | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/samples/client/petstore/java/resteasy/pom.xml b/samples/client/petstore/java/resteasy/pom.xml index 617e97d0a22..6e429c2da2d 100644 --- a/samples/client/petstore/java/resteasy/pom.xml +++ b/samples/client/petstore/java/resteasy/pom.xml @@ -175,11 +175,43 @@ org.jboss.resteasy resteasy-client ${resteasy-version} + + + org.jboss.resteasy + resteasy-jaxrs-services + + + net.jcip + jcip-annotations + + + org.jboss.spec.javax.annotation + jboss-annotations-api_1.2_spec + + + javax.activation + activation + + org.jboss.resteasy resteasy-multipart-provider ${resteasy-version} + + + com.sun.xml.bind + jaxb-impl + + + com.sun.mail + javax.mail + + + javax.activation + activation + + From 77e1ca56cf329bfb22b05f853587263fd0ff6503 Mon Sep 17 00:00:00 2001 From: Ween Jiann <16207788+lwj5@users.noreply.github.com> Date: Wed, 16 Jun 2021 16:53:20 +0800 Subject: [PATCH 135/192] [go-server] Add go-chi generator to go-server via a `router` property (#9748) * Add go-chi generator to go-server * Add go-chi configs * Add go-chi generated output * Updated docs * Add some javadocs * Fix import issue * Regen files --- bin/configs/go-server-chi-api-server.yaml | 9 + docs/generators/go-server.md | 1 + .../codegen/languages/GoServerCodegen.java | 36 +- .../go-server/controller-api.mustache | 21 +- .../main/resources/go-server/go.mod.mustache | 13 + .../main/resources/go-server/routers.mustache | 31 +- .../go-chi-server/.openapi-generator-ignore | 23 + .../go-chi-server/.openapi-generator/FILES | 22 + .../go-chi-server/.openapi-generator/VERSION | 1 + .../server/petstore/go-chi-server/Dockerfile | 14 + .../server/petstore/go-chi-server/README.md | 35 + .../petstore/go-chi-server/api/openapi.yaml | 822 ++++++++++++++++++ samples/server/petstore/go-chi-server/go.mod | 5 + .../server/petstore/go-chi-server/go/api.go | 98 +++ .../petstore/go-chi-server/go/api_pet.go | 242 ++++++ .../go-chi-server/go/api_pet_service.go | 141 +++ .../petstore/go-chi-server/go/api_store.go | 123 +++ .../go-chi-server/go/api_store_service.go | 84 ++ .../petstore/go-chi-server/go/api_user.go | 215 +++++ .../go-chi-server/go/api_user_service.go | 131 +++ .../petstore/go-chi-server/go/helpers.go | 28 + .../server/petstore/go-chi-server/go/impl.go | 17 + .../petstore/go-chi-server/go/logger.go | 32 + .../go-chi-server/go/model_api_response.go | 20 + .../go-chi-server/go/model_category.go | 18 + .../petstore/go-chi-server/go/model_order.go | 31 + .../petstore/go-chi-server/go/model_pet.go | 27 + .../petstore/go-chi-server/go/model_tag.go | 18 + .../petstore/go-chi-server/go/model_user.go | 31 + .../petstore/go-chi-server/go/routers.go | 213 +++++ samples/server/petstore/go-chi-server/main.go | 34 + 31 files changed, 2526 insertions(+), 10 deletions(-) create mode 100644 bin/configs/go-server-chi-api-server.yaml create mode 100644 samples/server/petstore/go-chi-server/.openapi-generator-ignore create mode 100644 samples/server/petstore/go-chi-server/.openapi-generator/FILES create mode 100644 samples/server/petstore/go-chi-server/.openapi-generator/VERSION create mode 100644 samples/server/petstore/go-chi-server/Dockerfile create mode 100644 samples/server/petstore/go-chi-server/README.md create mode 100644 samples/server/petstore/go-chi-server/api/openapi.yaml create mode 100644 samples/server/petstore/go-chi-server/go.mod create mode 100644 samples/server/petstore/go-chi-server/go/api.go create mode 100644 samples/server/petstore/go-chi-server/go/api_pet.go create mode 100644 samples/server/petstore/go-chi-server/go/api_pet_service.go create mode 100644 samples/server/petstore/go-chi-server/go/api_store.go create mode 100644 samples/server/petstore/go-chi-server/go/api_store_service.go create mode 100644 samples/server/petstore/go-chi-server/go/api_user.go create mode 100644 samples/server/petstore/go-chi-server/go/api_user_service.go create mode 100644 samples/server/petstore/go-chi-server/go/helpers.go create mode 100644 samples/server/petstore/go-chi-server/go/impl.go create mode 100644 samples/server/petstore/go-chi-server/go/logger.go create mode 100644 samples/server/petstore/go-chi-server/go/model_api_response.go create mode 100644 samples/server/petstore/go-chi-server/go/model_category.go create mode 100644 samples/server/petstore/go-chi-server/go/model_order.go create mode 100644 samples/server/petstore/go-chi-server/go/model_pet.go create mode 100644 samples/server/petstore/go-chi-server/go/model_tag.go create mode 100644 samples/server/petstore/go-chi-server/go/model_user.go create mode 100644 samples/server/petstore/go-chi-server/go/routers.go create mode 100644 samples/server/petstore/go-chi-server/main.go diff --git a/bin/configs/go-server-chi-api-server.yaml b/bin/configs/go-server-chi-api-server.yaml new file mode 100644 index 00000000000..16db86a3d62 --- /dev/null +++ b/bin/configs/go-server-chi-api-server.yaml @@ -0,0 +1,9 @@ +generatorName: go-server +outputDir: samples/server/petstore/go-chi-server +inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml +templateDir: modules/openapi-generator/src/main/resources/go-server +additionalProperties: + hideGenerationTimestamp: "true" + packageName: petstoreserver + addResponseHeaders: true + router: "chi" diff --git a/docs/generators/go-server.md b/docs/generators/go-server.md index 36ac78aea6d..440b3461b0f 100644 --- a/docs/generators/go-server.md +++ b/docs/generators/go-server.md @@ -13,6 +13,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true| |packageName|Go package name (convention: lowercase).| |openapi| |packageVersion|Go package version.| |1.0.0| +|router|Specify the router which should be used.|
    **mux**
    mux
    **chi**
    chi
    |mux| |serverPort|The network port the generated server binds to| |8080| |sourceFolder|source folder for generated code| |go| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java index a0f76b8c299..49ab62e2b68 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java @@ -23,13 +23,25 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; -import java.util.Arrays; -import java.util.EnumSet; -import java.util.List; -import java.util.Map; +import java.util.*; public class GoServerCodegen extends AbstractGoCodegen { + /** + * Name of additional property for switching routers + */ + private static final String ROUTER_SWITCH = "router"; + + /** + * Description of additional property for switching routers + */ + private static final String ROUTER_SWITCH_DESC = "Specify the router which should be used."; + + /** + * List of available routers + */ + private static final String[] ROUTERS = { "mux", "chi" }; + private final Logger LOGGER = LoggerFactory.getLogger(GoServerCodegen.class); protected String packageVersion = "1.0.0"; @@ -69,6 +81,13 @@ public class GoServerCodegen extends AbstractGoCodegen { cliOptions.add(new CliOption(CodegenConstants.SOURCE_FOLDER, CodegenConstants.SOURCE_FOLDER_DESC) .defaultValue(sourceFolder)); + CliOption frameworkOption = new CliOption(ROUTER_SWITCH, ROUTER_SWITCH_DESC); + for (String option: ROUTERS) { + frameworkOption.addEnum(option, option); + } + frameworkOption.defaultValue(ROUTERS[0]); + cliOptions.add(frameworkOption); + CliOption optServerPort = new CliOption("serverPort", "The network port the generated server binds to"); optServerPort.setType("int"); optServerPort.defaultValue(Integer.toString(serverPort)); @@ -199,6 +218,15 @@ public class GoServerCodegen extends AbstractGoCodegen { } } + additionalProperties.putIfAbsent(ROUTER_SWITCH, ROUTERS[0]); + + final Object propRouter = additionalProperties.get(ROUTER_SWITCH); + final Map routers = new HashMap<>(); + for (String router: ROUTERS) { + routers.put(router, router.equals(propRouter)); + } + additionalProperties.put("routers", routers); + modelPackage = packageName; apiPackage = packageName; diff --git a/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache b/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache index 0039bf4a69c..6dd5138e525 100644 --- a/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache @@ -6,7 +6,14 @@ import ( "net/http" "strings" +{{#routers}} + {{#mux}} "github.com/gorilla/mux" + {{/mux}} + {{#chi}} + "github.com/go-chi/chi/v5" + {{/chi}} +{{/routers}} ) // A {{classname}}Controller binds http requests to an api service and writes the service results to the http response @@ -47,23 +54,27 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re } {{/isMultipart}} {{/hasFormParams}} - {{#hasPathParams}} + {{#routers}} + {{#mux}} + {{#hasPathParams}} params := mux.Vars(r) - {{/hasPathParams}} + {{/hasPathParams}} + {{/mux}} + {{/routers}} {{#hasQueryParams}} query := r.URL.Query() {{/hasQueryParams}} {{#allParams}} {{#isPathParam}} {{#isLong}} - {{paramName}}, err := parseInt64Parameter(params["{{baseName}}"], {{required}}) + {{paramName}}, err := parseInt64Parameter({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}}, {{required}}) if err != nil { w.WriteHeader(http.StatusBadRequest) return } {{/isLong}} {{#isInteger}} - {{paramName}}, err := parseInt32Parameter(params["{{baseName}}"], {{required}}) + {{paramName}}, err := parseInt32Parameter({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}}, {{required}}) if err != nil { w.WriteHeader(http.StatusBadRequest) return @@ -71,7 +82,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re {{/isInteger}} {{^isLong}} {{^isInteger}} - {{paramName}} := params["{{baseName}}"] + {{paramName}} := {{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}} {{/isInteger}}{{/isLong}} {{/isPathParam}} {{#isQueryParam}} diff --git a/modules/openapi-generator/src/main/resources/go-server/go.mod.mustache b/modules/openapi-generator/src/main/resources/go-server/go.mod.mustache index 18f7e897253..ad22f71f6ba 100644 --- a/modules/openapi-generator/src/main/resources/go-server/go.mod.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/go.mod.mustache @@ -2,4 +2,17 @@ module {{gitHost}}/{{gitUserId}}/{{gitRepoId}} go 1.13 +{{#routers}} + {{#mux}} require github.com/gorilla/mux v1.7.3 + {{#featureCORS}} +require github.com/gorilla/handlers v1.5.1 + {{/featureCORS}} + {{/mux}} + {{#chi}} +require github.com/go-chi/chi/v5 v5.0.3 + {{#featureCORS}} +require github.com/go-chi/cors v1.2.0 + {{/featureCORS}} + {{/chi}} +{{/routers}} diff --git a/modules/openapi-generator/src/main/resources/go-server/routers.mustache b/modules/openapi-generator/src/main/resources/go-server/routers.mustache index d76397166c6..d7e3642549c 100644 --- a/modules/openapi-generator/src/main/resources/go-server/routers.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/routers.mustache @@ -4,10 +4,21 @@ package {{packageName}} import ( "encoding/json" "errors" +{{#routers}} + {{#mux}} "github.com/gorilla/mux" {{#featureCORS}} "github.com/gorilla/handlers" {{/featureCORS}} + {{/mux}} + {{#chi}} + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" + {{#featureCORS}} + "github.com/go-chi/cors" + {{/featureCORS}} + {{/chi}} +{{/routers}} "io/ioutil" "mime/multipart" "net/http" @@ -35,12 +46,25 @@ type Router interface { const errMsgRequiredMissing = "required parameter is missing" // NewRouter creates a new router for any number of api routers -func NewRouter(routers ...Router) *mux.Router { +func NewRouter(routers ...Router) {{#routers}}{{#mux}}*mux.Router{{/mux}}{{#chi}}chi.Router{{/chi}}{{/routers}} { +{{#routers}} + {{#mux}} router := mux.NewRouter().StrictSlash(true) + {{/mux}} + {{#chi}} + router := chi.NewRouter() + router.Use(middleware.Logger) + {{#featureCORS}} + router.Use(cors.Handler(cors.Options{})) + {{/featureCORS}} + {{/chi}} +{{/routers}} for _, api := range routers { for _, route := range api.Routes() { var handler http.Handler handler = route.HandlerFunc +{{#routers}} + {{#mux}} handler = Logger(handler, route.Name) {{#featureCORS}} handler = handlers.CORS()(handler) @@ -51,6 +75,11 @@ func NewRouter(routers ...Router) *mux.Router { Path(route.Pattern). Name(route.Name). Handler(handler) + {{/mux}} + {{#chi}} + router.Method(route.Method, route.Pattern, handler) + {{/chi}} +{{/routers}} } } diff --git a/samples/server/petstore/go-chi-server/.openapi-generator-ignore b/samples/server/petstore/go-chi-server/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/server/petstore/go-chi-server/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/server/petstore/go-chi-server/.openapi-generator/FILES b/samples/server/petstore/go-chi-server/.openapi-generator/FILES new file mode 100644 index 00000000000..9135763258f --- /dev/null +++ b/samples/server/petstore/go-chi-server/.openapi-generator/FILES @@ -0,0 +1,22 @@ +Dockerfile +README.md +api/openapi.yaml +go.mod +go/api.go +go/api_pet.go +go/api_pet_service.go +go/api_store.go +go/api_store_service.go +go/api_user.go +go/api_user_service.go +go/helpers.go +go/impl.go +go/logger.go +go/model_api_response.go +go/model_category.go +go/model_order.go +go/model_pet.go +go/model_tag.go +go/model_user.go +go/routers.go +main.go diff --git a/samples/server/petstore/go-chi-server/.openapi-generator/VERSION b/samples/server/petstore/go-chi-server/.openapi-generator/VERSION new file mode 100644 index 00000000000..6555596f931 --- /dev/null +++ b/samples/server/petstore/go-chi-server/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/go-chi-server/Dockerfile b/samples/server/petstore/go-chi-server/Dockerfile new file mode 100644 index 00000000000..cfdfbaed080 --- /dev/null +++ b/samples/server/petstore/go-chi-server/Dockerfile @@ -0,0 +1,14 @@ +FROM golang:1.10 AS build +WORKDIR /go/src +COPY go ./go +COPY main.go . + +ENV CGO_ENABLED=0 +RUN go get -d -v ./... + +RUN go build -a -installsuffix cgo -o petstoreserver . + +FROM scratch AS runtime +COPY --from=build /go/src/petstoreserver ./ +EXPOSE 8080/tcp +ENTRYPOINT ["./petstoreserver"] diff --git a/samples/server/petstore/go-chi-server/README.md b/samples/server/petstore/go-chi-server/README.md new file mode 100644 index 00000000000..fbcf4ae661b --- /dev/null +++ b/samples/server/petstore/go-chi-server/README.md @@ -0,0 +1,35 @@ +# Go API Server for petstoreserver + +This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + +## Overview +This server was generated by the [openapi-generator] +(https://openapi-generator.tech) project. +By using the [OpenAPI-Spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate a server stub. +- + +To see how to make this your own, look here: + +[README](https://openapi-generator.tech) + +- API version: 1.0.0 + + +### Running the server +To run the server, follow these simple steps: + +``` +go run main.go +``` + +To run the server in a docker container +``` +docker build --network=host -t petstoreserver . +``` + +Once image is built use +``` +docker run --rm -it petstoreserver +``` + + diff --git a/samples/server/petstore/go-chi-server/api/openapi.yaml b/samples/server/petstore/go-chi-server/api/openapi.yaml new file mode 100644 index 00000000000..26aaeac34b7 --- /dev/null +++ b/samples/server/petstore/go-chi-server/api/openapi.yaml @@ -0,0 +1,822 @@ +openapi: 3.0.0 +info: + description: This is a sample server Petstore server. For this sample, you can use + the api key `special-key` to test the authorization filters. + license: + name: Apache-2.0 + url: https://www.apache.org/licenses/LICENSE-2.0.html + title: OpenAPI Petstore + version: 1.0.0 +externalDocs: + description: Find out more about Swagger + url: http://swagger.io +servers: +- url: http://petstore.swagger.io/v2 +tags: +- description: Everything about your Pets + name: pet +- description: Access to Petstore orders + name: store +- description: Operations about user + name: user +paths: + /pet: + post: + operationId: addPet + requestBody: + $ref: '#/components/requestBodies/Pet' + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/json: + schema: + $ref: '#/components/schemas/Pet' + description: successful operation + "405": + description: Invalid input + security: + - petstore_auth: + - write:pets + - read:pets + summary: Add a new pet to the store + tags: + - pet + put: + operationId: updatePet + requestBody: + $ref: '#/components/requestBodies/Pet' + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/json: + schema: + $ref: '#/components/schemas/Pet' + description: successful operation + "400": + description: Invalid ID supplied + "404": + description: Pet not found + "405": + description: Validation exception + security: + - petstore_auth: + - write:pets + - read:pets + summary: Update an existing pet + tags: + - pet + /pet/findByStatus: + get: + description: Multiple status values can be provided with comma separated strings + operationId: findPetsByStatus + parameters: + - description: Status values that need to be considered for filter + explode: false + in: query + name: status + required: true + schema: + items: + default: available + enum: + - available + - pending + - sold + type: string + type: array + style: form + responses: + "200": + content: + application/xml: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + application/json: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + description: successful operation + "400": + description: Invalid status value + security: + - petstore_auth: + - read:pets + summary: Finds Pets by status + tags: + - pet + /pet/findByTags: + get: + deprecated: true + description: Multiple tags can be provided with comma separated strings. Use + tag1, tag2, tag3 for testing. + operationId: findPetsByTags + parameters: + - description: Tags to filter by + explode: false + in: query + name: tags + required: true + schema: + items: + type: string + type: array + style: form + responses: + "200": + content: + application/xml: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + application/json: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + description: successful operation + "400": + description: Invalid tag value + security: + - petstore_auth: + - read:pets + summary: Finds Pets by tags + tags: + - pet + /pet/{petId}: + delete: + operationId: deletePet + parameters: + - explode: false + in: header + name: api_key + required: false + schema: + type: string + style: simple + - description: Pet id to delete + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + responses: + "400": + description: Invalid pet value + security: + - petstore_auth: + - write:pets + - read:pets + summary: Deletes a pet + tags: + - pet + get: + description: Returns a single pet + operationId: getPetById + parameters: + - description: ID of pet to return + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/json: + schema: + $ref: '#/components/schemas/Pet' + description: successful operation + "400": + description: Invalid ID supplied + "404": + description: Pet not found + security: + - api_key: [] + summary: Find pet by ID + tags: + - pet + post: + operationId: updatePetWithForm + parameters: + - description: ID of pet that needs to be updated + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + requestBody: + $ref: '#/components/requestBodies/inline_object' + content: + application/x-www-form-urlencoded: + schema: + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + type: object + responses: + "405": + description: Invalid input + security: + - petstore_auth: + - write:pets + - read:pets + summary: Updates a pet in the store with form data + tags: + - pet + /pet/{petId}/uploadImage: + post: + operationId: uploadFile + parameters: + - description: ID of pet to update + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + requestBody: + $ref: '#/components/requestBodies/inline_object_1' + content: + multipart/form-data: + schema: + properties: + additionalMetadata: + description: Additional data to pass to server + type: string + file: + description: file to upload + format: binary + type: string + type: object + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + description: successful operation + security: + - petstore_auth: + - write:pets + - read:pets + summary: uploads an image + tags: + - pet + /store/inventory: + get: + description: Returns a map of status codes to quantities + operationId: getInventory + responses: + "200": + content: + application/json: + schema: + additionalProperties: + format: int32 + type: integer + type: object + description: successful operation + security: + - api_key: [] + summary: Returns pet inventories by status + tags: + - store + /store/order: + post: + operationId: placeOrder + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + description: order placed for purchasing the pet + required: true + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + description: successful operation + "400": + description: Invalid Order + summary: Place an order for a pet + tags: + - store + /store/order/{orderId}: + delete: + description: For valid response try integer IDs with value < 1000. Anything + above 1000 or nonintegers will generate API errors + operationId: deleteOrder + parameters: + - description: ID of the order that needs to be deleted + explode: false + in: path + name: orderId + required: true + schema: + type: string + style: simple + responses: + "400": + description: Invalid ID supplied + "404": + description: Order not found + summary: Delete purchase order by ID + tags: + - store + get: + description: For valid response try integer IDs with value <= 5 or > 10. Other + values will generated exceptions + operationId: getOrderById + parameters: + - description: ID of pet that needs to be fetched + explode: false + in: path + name: orderId + required: true + schema: + format: int64 + maximum: 5 + minimum: 1 + type: integer + style: simple + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + description: successful operation + "400": + description: Invalid ID supplied + "404": + description: Order not found + summary: Find purchase order by ID + tags: + - store + /user: + post: + description: This can only be done by the logged in user. + operationId: createUser + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Created user object + required: true + responses: + default: + description: successful operation + security: + - api_key: [] + summary: Create user + tags: + - user + /user/createWithArray: + post: + operationId: createUsersWithArrayInput + requestBody: + $ref: '#/components/requestBodies/UserArray' + responses: + default: + description: successful operation + security: + - api_key: [] + summary: Creates list of users with given input array + tags: + - user + /user/createWithList: + post: + operationId: createUsersWithListInput + requestBody: + $ref: '#/components/requestBodies/UserArray' + responses: + default: + description: successful operation + security: + - api_key: [] + summary: Creates list of users with given input array + tags: + - user + /user/login: + get: + operationId: loginUser + parameters: + - description: The user name for login + explode: true + in: query + name: username + required: true + schema: + pattern: ^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$ + type: string + style: form + - description: The password for login in clear text + explode: true + in: query + name: password + required: true + schema: + type: string + style: form + responses: + "200": + content: + application/xml: + schema: + type: string + application/json: + schema: + type: string + description: successful operation + headers: + Set-Cookie: + description: Cookie authentication key for use with the `api_key` apiKey + authentication. + explode: false + schema: + example: AUTH_KEY=abcde12345; Path=/; HttpOnly + type: string + style: simple + X-Rate-Limit: + description: calls per hour allowed by the user + explode: false + schema: + format: int32 + type: integer + style: simple + X-Expires-After: + description: date in UTC when toekn expires + explode: false + schema: + format: date-time + type: string + style: simple + "400": + description: Invalid username/password supplied + summary: Logs user into the system + tags: + - user + /user/logout: + get: + operationId: logoutUser + responses: + default: + description: successful operation + security: + - api_key: [] + summary: Logs out current logged in user session + tags: + - user + /user/{username}: + delete: + description: This can only be done by the logged in user. + operationId: deleteUser + parameters: + - description: The name that needs to be deleted + explode: false + in: path + name: username + required: true + schema: + type: string + style: simple + responses: + "400": + description: Invalid username supplied + "404": + description: User not found + security: + - api_key: [] + summary: Delete user + tags: + - user + get: + operationId: getUserByName + parameters: + - description: The name that needs to be fetched. Use user1 for testing. + explode: false + in: path + name: username + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/User' + application/json: + schema: + $ref: '#/components/schemas/User' + description: successful operation + "400": + description: Invalid username supplied + "404": + description: User not found + summary: Get user by user name + tags: + - user + put: + description: This can only be done by the logged in user. + operationId: updateUser + parameters: + - description: name that need to be deleted + explode: false + in: path + name: username + required: true + schema: + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Updated user object + required: true + responses: + "400": + description: Invalid user supplied + "404": + description: User not found + security: + - api_key: [] + summary: Updated user + tags: + - user +components: + requestBodies: + UserArray: + content: + application/json: + schema: + items: + $ref: '#/components/schemas/User' + type: array + description: List of user object + required: true + Pet: + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + description: Pet object that needs to be added to the store + required: true + inline_object: + content: + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/inline_object' + inline_object_1: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/inline_object_1' + schemas: + Order: + description: An order for a pets from the pet store + example: + petId: 6 + quantity: 1 + id: 0 + shipDate: 2000-01-23T04:56:07.000+00:00 + complete: false + status: placed + properties: + id: + format: int64 + type: integer + petId: + format: int64 + type: integer + quantity: + format: int32 + type: integer + shipDate: + format: date-time + type: string + status: + description: Order Status + enum: + - placed + - approved + - delivered + type: string + complete: + default: false + type: boolean + title: Pet Order + type: object + xml: + name: Order + Category: + description: A category for a pet + example: + name: name + id: 6 + properties: + id: + format: int64 + type: integer + name: + pattern: ^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$ + type: string + title: Pet category + type: object + xml: + name: Category + User: + description: A User who is purchasing from the pet store + example: + firstName: firstName + lastName: lastName + password: password + userStatus: 6 + phone: phone + id: 0 + email: email + username: username + properties: + id: + format: int64 + type: integer + username: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + password: + type: string + phone: + type: string + userStatus: + description: User Status + format: int32 + type: integer + title: a User + type: object + xml: + name: User + Tag: + description: A tag for a pet + example: + name: name + id: 1 + properties: + id: + format: int64 + type: integer + name: + type: string + title: Pet Tag + type: object + xml: + name: Tag + Pet: + description: A pet for sale in the pet store + example: + photoUrls: + - photoUrls + - photoUrls + name: doggie + id: 0 + category: + name: name + id: 6 + tags: + - name: name + id: 1 + - name: name + id: 1 + status: available + properties: + id: + format: int64 + type: integer + category: + $ref: '#/components/schemas/Category' + name: + example: doggie + type: string + photoUrls: + items: + type: string + type: array + xml: + name: photoUrl + wrapped: true + tags: + items: + $ref: '#/components/schemas/Tag' + type: array + xml: + name: tag + wrapped: true + status: + description: pet status in the store + enum: + - available + - pending + - sold + type: string + required: + - name + - photoUrls + title: a Pet + type: object + xml: + name: Pet + ApiResponse: + description: Describes the result of uploading an image resource + example: + code: 0 + type: type + message: message + properties: + code: + format: int32 + type: integer + type: + type: string + message: + type: string + title: An uploaded response + type: object + inline_object: + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + type: object + inline_object_1: + properties: + additionalMetadata: + description: Additional data to pass to server + type: string + file: + description: file to upload + format: binary + type: string + type: object + securitySchemes: + petstore_auth: + flows: + implicit: + authorizationUrl: http://petstore.swagger.io/api/oauth/dialog + scopes: + write:pets: modify pets in your account + read:pets: read your pets + type: oauth2 + api_key: + in: header + name: api_key + type: apiKey diff --git a/samples/server/petstore/go-chi-server/go.mod b/samples/server/petstore/go-chi-server/go.mod new file mode 100644 index 00000000000..fa1221d2bed --- /dev/null +++ b/samples/server/petstore/go-chi-server/go.mod @@ -0,0 +1,5 @@ +module github.com/GIT_USER_ID/GIT_REPO_ID + +go 1.13 + +require github.com/go-chi/chi/v5 v5.0.3 diff --git a/samples/server/petstore/go-chi-server/go/api.go b/samples/server/petstore/go-chi-server/go/api.go new file mode 100644 index 00000000000..64321a00b2e --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/api.go @@ -0,0 +1,98 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +import ( + "context" + "net/http" + "os" +) + + + +// PetApiRouter defines the required methods for binding the api requests to a responses for the PetApi +// The PetApiRouter implementation should parse necessary information from the http request, +// pass the data to a PetApiServicer to perform the required actions, then write the service results to the http response. +type PetApiRouter interface { + AddPet(http.ResponseWriter, *http.Request) + DeletePet(http.ResponseWriter, *http.Request) + FindPetsByStatus(http.ResponseWriter, *http.Request) + FindPetsByTags(http.ResponseWriter, *http.Request) + GetPetById(http.ResponseWriter, *http.Request) + UpdatePet(http.ResponseWriter, *http.Request) + UpdatePetWithForm(http.ResponseWriter, *http.Request) + UploadFile(http.ResponseWriter, *http.Request) +} +// StoreApiRouter defines the required methods for binding the api requests to a responses for the StoreApi +// The StoreApiRouter implementation should parse necessary information from the http request, +// pass the data to a StoreApiServicer to perform the required actions, then write the service results to the http response. +type StoreApiRouter interface { + DeleteOrder(http.ResponseWriter, *http.Request) + GetInventory(http.ResponseWriter, *http.Request) + GetOrderById(http.ResponseWriter, *http.Request) + PlaceOrder(http.ResponseWriter, *http.Request) +} +// UserApiRouter defines the required methods for binding the api requests to a responses for the UserApi +// The UserApiRouter implementation should parse necessary information from the http request, +// pass the data to a UserApiServicer to perform the required actions, then write the service results to the http response. +type UserApiRouter interface { + CreateUser(http.ResponseWriter, *http.Request) + CreateUsersWithArrayInput(http.ResponseWriter, *http.Request) + CreateUsersWithListInput(http.ResponseWriter, *http.Request) + DeleteUser(http.ResponseWriter, *http.Request) + GetUserByName(http.ResponseWriter, *http.Request) + LoginUser(http.ResponseWriter, *http.Request) + LogoutUser(http.ResponseWriter, *http.Request) + UpdateUser(http.ResponseWriter, *http.Request) +} + + +// PetApiServicer defines the api actions for the PetApi service +// This interface intended to stay up to date with the openapi yaml used to generate it, +// while the service implementation can ignored with the .openapi-generator-ignore file +// and updated with the logic required for the API. +type PetApiServicer interface { + AddPet(context.Context, Pet) (ImplResponse, error) + DeletePet(context.Context, int64, string) (ImplResponse, error) + FindPetsByStatus(context.Context, []string) (ImplResponse, error) + FindPetsByTags(context.Context, []string) (ImplResponse, error) + GetPetById(context.Context, int64) (ImplResponse, error) + UpdatePet(context.Context, Pet) (ImplResponse, error) + UpdatePetWithForm(context.Context, int64, string, string) (ImplResponse, error) + UploadFile(context.Context, int64, string, *os.File) (ImplResponse, error) +} + + +// StoreApiServicer defines the api actions for the StoreApi service +// This interface intended to stay up to date with the openapi yaml used to generate it, +// while the service implementation can ignored with the .openapi-generator-ignore file +// and updated with the logic required for the API. +type StoreApiServicer interface { + DeleteOrder(context.Context, string) (ImplResponse, error) + GetInventory(context.Context) (ImplResponse, error) + GetOrderById(context.Context, int64) (ImplResponse, error) + PlaceOrder(context.Context, Order) (ImplResponse, error) +} + + +// UserApiServicer defines the api actions for the UserApi service +// This interface intended to stay up to date with the openapi yaml used to generate it, +// while the service implementation can ignored with the .openapi-generator-ignore file +// and updated with the logic required for the API. +type UserApiServicer interface { + CreateUser(context.Context, User) (ImplResponse, error) + CreateUsersWithArrayInput(context.Context, []User) (ImplResponse, error) + CreateUsersWithListInput(context.Context, []User) (ImplResponse, error) + DeleteUser(context.Context, string) (ImplResponse, error) + GetUserByName(context.Context, string) (ImplResponse, error) + LoginUser(context.Context, string, string) (ImplResponse, error) + LogoutUser(context.Context) (ImplResponse, error) + UpdateUser(context.Context, string, User) (ImplResponse, error) +} diff --git a/samples/server/petstore/go-chi-server/go/api_pet.go b/samples/server/petstore/go-chi-server/go/api_pet.go new file mode 100644 index 00000000000..6d964844301 --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/api_pet.go @@ -0,0 +1,242 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +import ( + "encoding/json" + "net/http" + "strings" + + "github.com/go-chi/chi/v5" +) + +// A PetApiController binds http requests to an api service and writes the service results to the http response +type PetApiController struct { + service PetApiServicer +} + +// NewPetApiController creates a default api controller +func NewPetApiController(s PetApiServicer) Router { + return &PetApiController{service: s} +} + +// Routes returns all of the api route for the PetApiController +func (c *PetApiController) Routes() Routes { + return Routes{ + { + "AddPet", + strings.ToUpper("Post"), + "/v2/pet", + c.AddPet, + }, + { + "DeletePet", + strings.ToUpper("Delete"), + "/v2/pet/{petId}", + c.DeletePet, + }, + { + "FindPetsByStatus", + strings.ToUpper("Get"), + "/v2/pet/findByStatus", + c.FindPetsByStatus, + }, + { + "FindPetsByTags", + strings.ToUpper("Get"), + "/v2/pet/findByTags", + c.FindPetsByTags, + }, + { + "GetPetById", + strings.ToUpper("Get"), + "/v2/pet/{petId}", + c.GetPetById, + }, + { + "UpdatePet", + strings.ToUpper("Put"), + "/v2/pet", + c.UpdatePet, + }, + { + "UpdatePetWithForm", + strings.ToUpper("Post"), + "/v2/pet/{petId}", + c.UpdatePetWithForm, + }, + { + "UploadFile", + strings.ToUpper("Post"), + "/v2/pet/{petId}/uploadImage", + c.UploadFile, + }, + } +} + +// AddPet - Add a new pet to the store +func (c *PetApiController) AddPet(w http.ResponseWriter, r *http.Request) { + pet := &Pet{} + if err := json.NewDecoder(r.Body).Decode(&pet); err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + result, err := c.service.AddPet(r.Context(), *pet) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// DeletePet - Deletes a pet +func (c *PetApiController) DeletePet(w http.ResponseWriter, r *http.Request) { + petId, err := parseInt64Parameter(chi.URLParam(r, "petId"), true) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + apiKey := r.Header.Get("api_key") + result, err := c.service.DeletePet(r.Context(), petId, apiKey) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// FindPetsByStatus - Finds Pets by status +func (c *PetApiController) FindPetsByStatus(w http.ResponseWriter, r *http.Request) { + query := r.URL.Query() + status := strings.Split(query.Get("status"), ",") + result, err := c.service.FindPetsByStatus(r.Context(), status) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// FindPetsByTags - Finds Pets by tags +func (c *PetApiController) FindPetsByTags(w http.ResponseWriter, r *http.Request) { + query := r.URL.Query() + tags := strings.Split(query.Get("tags"), ",") + result, err := c.service.FindPetsByTags(r.Context(), tags) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// GetPetById - Find pet by ID +func (c *PetApiController) GetPetById(w http.ResponseWriter, r *http.Request) { + petId, err := parseInt64Parameter(chi.URLParam(r, "petId"), true) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + result, err := c.service.GetPetById(r.Context(), petId) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// UpdatePet - Update an existing pet +func (c *PetApiController) UpdatePet(w http.ResponseWriter, r *http.Request) { + pet := &Pet{} + if err := json.NewDecoder(r.Body).Decode(&pet); err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + result, err := c.service.UpdatePet(r.Context(), *pet) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// UpdatePetWithForm - Updates a pet in the store with form data +func (c *PetApiController) UpdatePetWithForm(w http.ResponseWriter, r *http.Request) { + if err := r.ParseForm(); err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + petId, err := parseInt64Parameter(chi.URLParam(r, "petId"), true) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + name := r.FormValue("name") + status := r.FormValue("status") + result, err := c.service.UpdatePetWithForm(r.Context(), petId, name, status) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// UploadFile - uploads an image +func (c *PetApiController) UploadFile(w http.ResponseWriter, r *http.Request) { + if err := r.ParseMultipartForm(32 << 20); err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + petId, err := parseInt64Parameter(chi.URLParam(r, "petId"), true) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + additionalMetadata := r.FormValue("additionalMetadata") + + file, err := ReadFormFileToTempFile(r, "file") + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + result, err := c.service.UploadFile(r.Context(), petId, additionalMetadata, file) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} diff --git a/samples/server/petstore/go-chi-server/go/api_pet_service.go b/samples/server/petstore/go-chi-server/go/api_pet_service.go new file mode 100644 index 00000000000..d5f272f37a7 --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/api_pet_service.go @@ -0,0 +1,141 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +import ( + "context" + "net/http" + "errors" + "os" +) + +// PetApiService is a service that implents the logic for the PetApiServicer +// This service should implement the business logic for every endpoint for the PetApi API. +// Include any external packages or services that will be required by this service. +type PetApiService struct { +} + +// NewPetApiService creates a default api service +func NewPetApiService() PetApiServicer { + return &PetApiService{} +} + +// AddPet - Add a new pet to the store +func (s *PetApiService) AddPet(ctx context.Context, pet Pet) (ImplResponse, error) { + // TODO - update AddPet with the required logic for this service method. + // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ... + //return Response(200, Pet{}), nil + + //TODO: Uncomment the next line to return response Response(405, {}) or use other options such as http.Ok ... + //return Response(405, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("AddPet method not implemented") +} + +// DeletePet - Deletes a pet +func (s *PetApiService) DeletePet(ctx context.Context, petId int64, apiKey string) (ImplResponse, error) { + // TODO - update DeletePet with the required logic for this service method. + // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + //return Response(400, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("DeletePet method not implemented") +} + +// FindPetsByStatus - Finds Pets by status +func (s *PetApiService) FindPetsByStatus(ctx context.Context, status []string) (ImplResponse, error) { + // TODO - update FindPetsByStatus with the required logic for this service method. + // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(200, []Pet{}) or use other options such as http.Ok ... + //return Response(200, []Pet{}), nil + + //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + //return Response(400, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("FindPetsByStatus method not implemented") +} + +// FindPetsByTags - Finds Pets by tags +func (s *PetApiService) FindPetsByTags(ctx context.Context, tags []string) (ImplResponse, error) { + // TODO - update FindPetsByTags with the required logic for this service method. + // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(200, []Pet{}) or use other options such as http.Ok ... + //return Response(200, []Pet{}), nil + + //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + //return Response(400, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("FindPetsByTags method not implemented") +} + +// GetPetById - Find pet by ID +func (s *PetApiService) GetPetById(ctx context.Context, petId int64) (ImplResponse, error) { + // TODO - update GetPetById with the required logic for this service method. + // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ... + //return Response(200, Pet{}), nil + + //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + //return Response(400, nil),nil + + //TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ... + //return Response(404, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("GetPetById method not implemented") +} + +// UpdatePet - Update an existing pet +func (s *PetApiService) UpdatePet(ctx context.Context, pet Pet) (ImplResponse, error) { + // TODO - update UpdatePet with the required logic for this service method. + // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ... + //return Response(200, Pet{}), nil + + //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + //return Response(400, nil),nil + + //TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ... + //return Response(404, nil),nil + + //TODO: Uncomment the next line to return response Response(405, {}) or use other options such as http.Ok ... + //return Response(405, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("UpdatePet method not implemented") +} + +// UpdatePetWithForm - Updates a pet in the store with form data +func (s *PetApiService) UpdatePetWithForm(ctx context.Context, petId int64, name string, status string) (ImplResponse, error) { + // TODO - update UpdatePetWithForm with the required logic for this service method. + // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(405, {}) or use other options such as http.Ok ... + //return Response(405, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("UpdatePetWithForm method not implemented") +} + +// UploadFile - uploads an image +func (s *PetApiService) UploadFile(ctx context.Context, petId int64, additionalMetadata string, file *os.File) (ImplResponse, error) { + // TODO - update UploadFile with the required logic for this service method. + // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(200, ApiResponse{}) or use other options such as http.Ok ... + //return Response(200, ApiResponse{}), nil + + return Response(http.StatusNotImplemented, nil), errors.New("UploadFile method not implemented") +} + diff --git a/samples/server/petstore/go-chi-server/go/api_store.go b/samples/server/petstore/go-chi-server/go/api_store.go new file mode 100644 index 00000000000..33b3b85494f --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/api_store.go @@ -0,0 +1,123 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +import ( + "encoding/json" + "net/http" + "strings" + + "github.com/go-chi/chi/v5" +) + +// A StoreApiController binds http requests to an api service and writes the service results to the http response +type StoreApiController struct { + service StoreApiServicer +} + +// NewStoreApiController creates a default api controller +func NewStoreApiController(s StoreApiServicer) Router { + return &StoreApiController{service: s} +} + +// Routes returns all of the api route for the StoreApiController +func (c *StoreApiController) Routes() Routes { + return Routes{ + { + "DeleteOrder", + strings.ToUpper("Delete"), + "/v2/store/order/{orderId}", + c.DeleteOrder, + }, + { + "GetInventory", + strings.ToUpper("Get"), + "/v2/store/inventory", + c.GetInventory, + }, + { + "GetOrderById", + strings.ToUpper("Get"), + "/v2/store/order/{orderId}", + c.GetOrderById, + }, + { + "PlaceOrder", + strings.ToUpper("Post"), + "/v2/store/order", + c.PlaceOrder, + }, + } +} + +// DeleteOrder - Delete purchase order by ID +func (c *StoreApiController) DeleteOrder(w http.ResponseWriter, r *http.Request) { + orderId := chi.URLParam(r, "orderId") + + result, err := c.service.DeleteOrder(r.Context(), orderId) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// GetInventory - Returns pet inventories by status +func (c *StoreApiController) GetInventory(w http.ResponseWriter, r *http.Request) { + result, err := c.service.GetInventory(r.Context()) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// GetOrderById - Find purchase order by ID +func (c *StoreApiController) GetOrderById(w http.ResponseWriter, r *http.Request) { + orderId, err := parseInt64Parameter(chi.URLParam(r, "orderId"), true) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + result, err := c.service.GetOrderById(r.Context(), orderId) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// PlaceOrder - Place an order for a pet +func (c *StoreApiController) PlaceOrder(w http.ResponseWriter, r *http.Request) { + order := &Order{} + if err := json.NewDecoder(r.Body).Decode(&order); err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + result, err := c.service.PlaceOrder(r.Context(), *order) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} diff --git a/samples/server/petstore/go-chi-server/go/api_store_service.go b/samples/server/petstore/go-chi-server/go/api_store_service.go new file mode 100644 index 00000000000..27da55939a3 --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/api_store_service.go @@ -0,0 +1,84 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +import ( + "context" + "net/http" + "errors" +) + +// StoreApiService is a service that implents the logic for the StoreApiServicer +// This service should implement the business logic for every endpoint for the StoreApi API. +// Include any external packages or services that will be required by this service. +type StoreApiService struct { +} + +// NewStoreApiService creates a default api service +func NewStoreApiService() StoreApiServicer { + return &StoreApiService{} +} + +// DeleteOrder - Delete purchase order by ID +func (s *StoreApiService) DeleteOrder(ctx context.Context, orderId string) (ImplResponse, error) { + // TODO - update DeleteOrder with the required logic for this service method. + // Add api_store_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + //return Response(400, nil),nil + + //TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ... + //return Response(404, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("DeleteOrder method not implemented") +} + +// GetInventory - Returns pet inventories by status +func (s *StoreApiService) GetInventory(ctx context.Context) (ImplResponse, error) { + // TODO - update GetInventory with the required logic for this service method. + // Add api_store_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(200, map[string]int32{}) or use other options such as http.Ok ... + //return Response(200, map[string]int32{}), nil + + return Response(http.StatusNotImplemented, nil), errors.New("GetInventory method not implemented") +} + +// GetOrderById - Find purchase order by ID +func (s *StoreApiService) GetOrderById(ctx context.Context, orderId int64) (ImplResponse, error) { + // TODO - update GetOrderById with the required logic for this service method. + // Add api_store_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(200, Order{}) or use other options such as http.Ok ... + //return Response(200, Order{}), nil + + //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + //return Response(400, nil),nil + + //TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ... + //return Response(404, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("GetOrderById method not implemented") +} + +// PlaceOrder - Place an order for a pet +func (s *StoreApiService) PlaceOrder(ctx context.Context, order Order) (ImplResponse, error) { + // TODO - update PlaceOrder with the required logic for this service method. + // Add api_store_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(200, Order{}) or use other options such as http.Ok ... + //return Response(200, Order{}), nil + + //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + //return Response(400, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("PlaceOrder method not implemented") +} + diff --git a/samples/server/petstore/go-chi-server/go/api_user.go b/samples/server/petstore/go-chi-server/go/api_user.go new file mode 100644 index 00000000000..46f6ae9d90f --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/api_user.go @@ -0,0 +1,215 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +import ( + "encoding/json" + "net/http" + "strings" + + "github.com/go-chi/chi/v5" +) + +// A UserApiController binds http requests to an api service and writes the service results to the http response +type UserApiController struct { + service UserApiServicer +} + +// NewUserApiController creates a default api controller +func NewUserApiController(s UserApiServicer) Router { + return &UserApiController{service: s} +} + +// Routes returns all of the api route for the UserApiController +func (c *UserApiController) Routes() Routes { + return Routes{ + { + "CreateUser", + strings.ToUpper("Post"), + "/v2/user", + c.CreateUser, + }, + { + "CreateUsersWithArrayInput", + strings.ToUpper("Post"), + "/v2/user/createWithArray", + c.CreateUsersWithArrayInput, + }, + { + "CreateUsersWithListInput", + strings.ToUpper("Post"), + "/v2/user/createWithList", + c.CreateUsersWithListInput, + }, + { + "DeleteUser", + strings.ToUpper("Delete"), + "/v2/user/{username}", + c.DeleteUser, + }, + { + "GetUserByName", + strings.ToUpper("Get"), + "/v2/user/{username}", + c.GetUserByName, + }, + { + "LoginUser", + strings.ToUpper("Get"), + "/v2/user/login", + c.LoginUser, + }, + { + "LogoutUser", + strings.ToUpper("Get"), + "/v2/user/logout", + c.LogoutUser, + }, + { + "UpdateUser", + strings.ToUpper("Put"), + "/v2/user/{username}", + c.UpdateUser, + }, + } +} + +// CreateUser - Create user +func (c *UserApiController) CreateUser(w http.ResponseWriter, r *http.Request) { + user := &User{} + if err := json.NewDecoder(r.Body).Decode(&user); err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + result, err := c.service.CreateUser(r.Context(), *user) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// CreateUsersWithArrayInput - Creates list of users with given input array +func (c *UserApiController) CreateUsersWithArrayInput(w http.ResponseWriter, r *http.Request) { + user := &[]User{} + if err := json.NewDecoder(r.Body).Decode(&user); err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + result, err := c.service.CreateUsersWithArrayInput(r.Context(), *user) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// CreateUsersWithListInput - Creates list of users with given input array +func (c *UserApiController) CreateUsersWithListInput(w http.ResponseWriter, r *http.Request) { + user := &[]User{} + if err := json.NewDecoder(r.Body).Decode(&user); err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + result, err := c.service.CreateUsersWithListInput(r.Context(), *user) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// DeleteUser - Delete user +func (c *UserApiController) DeleteUser(w http.ResponseWriter, r *http.Request) { + username := chi.URLParam(r, "username") + + result, err := c.service.DeleteUser(r.Context(), username) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// GetUserByName - Get user by user name +func (c *UserApiController) GetUserByName(w http.ResponseWriter, r *http.Request) { + username := chi.URLParam(r, "username") + + result, err := c.service.GetUserByName(r.Context(), username) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// LoginUser - Logs user into the system +func (c *UserApiController) LoginUser(w http.ResponseWriter, r *http.Request) { + query := r.URL.Query() + username := query.Get("username") + password := query.Get("password") + result, err := c.service.LoginUser(r.Context(), username, password) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// LogoutUser - Logs out current logged in user session +func (c *UserApiController) LogoutUser(w http.ResponseWriter, r *http.Request) { + result, err := c.service.LogoutUser(r.Context()) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} + +// UpdateUser - Updated user +func (c *UserApiController) UpdateUser(w http.ResponseWriter, r *http.Request) { + username := chi.URLParam(r, "username") + + user := &User{} + if err := json.NewDecoder(r.Body).Decode(&user); err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + result, err := c.service.UpdateUser(r.Context(), username, *user) + // If an error occurred, encode the error with the status code + if err != nil { + EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + +} diff --git a/samples/server/petstore/go-chi-server/go/api_user_service.go b/samples/server/petstore/go-chi-server/go/api_user_service.go new file mode 100644 index 00000000000..c14d96ab368 --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/api_user_service.go @@ -0,0 +1,131 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +import ( + "context" + "net/http" + "errors" +) + +// UserApiService is a service that implents the logic for the UserApiServicer +// This service should implement the business logic for every endpoint for the UserApi API. +// Include any external packages or services that will be required by this service. +type UserApiService struct { +} + +// NewUserApiService creates a default api service +func NewUserApiService() UserApiServicer { + return &UserApiService{} +} + +// CreateUser - Create user +func (s *UserApiService) CreateUser(ctx context.Context, user User) (ImplResponse, error) { + // TODO - update CreateUser with the required logic for this service method. + // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... + //return Response(0, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("CreateUser method not implemented") +} + +// CreateUsersWithArrayInput - Creates list of users with given input array +func (s *UserApiService) CreateUsersWithArrayInput(ctx context.Context, user []User) (ImplResponse, error) { + // TODO - update CreateUsersWithArrayInput with the required logic for this service method. + // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... + //return Response(0, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithArrayInput method not implemented") +} + +// CreateUsersWithListInput - Creates list of users with given input array +func (s *UserApiService) CreateUsersWithListInput(ctx context.Context, user []User) (ImplResponse, error) { + // TODO - update CreateUsersWithListInput with the required logic for this service method. + // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... + //return Response(0, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithListInput method not implemented") +} + +// DeleteUser - Delete user +func (s *UserApiService) DeleteUser(ctx context.Context, username string) (ImplResponse, error) { + // TODO - update DeleteUser with the required logic for this service method. + // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + //return Response(400, nil),nil + + //TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ... + //return Response(404, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("DeleteUser method not implemented") +} + +// GetUserByName - Get user by user name +func (s *UserApiService) GetUserByName(ctx context.Context, username string) (ImplResponse, error) { + // TODO - update GetUserByName with the required logic for this service method. + // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(200, User{}) or use other options such as http.Ok ... + //return Response(200, User{}), nil + + //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + //return Response(400, nil),nil + + //TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ... + //return Response(404, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("GetUserByName method not implemented") +} + +// LoginUser - Logs user into the system +func (s *UserApiService) LoginUser(ctx context.Context, username string, password string) (ImplResponse, error) { + // TODO - update LoginUser with the required logic for this service method. + // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(200, string{}) or use other options such as http.Ok ... + //return Response(200, string{}), nil + + //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + //return Response(400, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("LoginUser method not implemented") +} + +// LogoutUser - Logs out current logged in user session +func (s *UserApiService) LogoutUser(ctx context.Context) (ImplResponse, error) { + // TODO - update LogoutUser with the required logic for this service method. + // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... + //return Response(0, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("LogoutUser method not implemented") +} + +// UpdateUser - Updated user +func (s *UserApiService) UpdateUser(ctx context.Context, username string, user User) (ImplResponse, error) { + // TODO - update UpdateUser with the required logic for this service method. + // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + //return Response(400, nil),nil + + //TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ... + //return Response(404, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("UpdateUser method not implemented") +} + diff --git a/samples/server/petstore/go-chi-server/go/helpers.go b/samples/server/petstore/go-chi-server/go/helpers.go new file mode 100644 index 00000000000..179ee893f7f --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/helpers.go @@ -0,0 +1,28 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +//Response return a ImplResponse struct filled +func Response(code int, body interface{}) ImplResponse { + return ImplResponse { + Code: code, + Headers: nil, + Body: body, + } +} + +//ResponseWithHeaders return a ImplResponse struct filled, including headers +func ResponseWithHeaders(code int, headers map[string][]string, body interface{}) ImplResponse { + return ImplResponse { + Code: code, + Headers: headers, + Body: body, + } +} diff --git a/samples/server/petstore/go-chi-server/go/impl.go b/samples/server/petstore/go-chi-server/go/impl.go new file mode 100644 index 00000000000..1da96f41252 --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/impl.go @@ -0,0 +1,17 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +//Implementation response defines an error code with the associated body +type ImplResponse struct { + Code int + Headers map[string][]string + Body interface{} +} diff --git a/samples/server/petstore/go-chi-server/go/logger.go b/samples/server/petstore/go-chi-server/go/logger.go new file mode 100644 index 00000000000..08cc0ea3f1d --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/logger.go @@ -0,0 +1,32 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +import ( + "log" + "net/http" + "time" +) + +func Logger(inner http.Handler, name string) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + start := time.Now() + + inner.ServeHTTP(w, r) + + log.Printf( + "%s %s %s %s", + r.Method, + r.RequestURI, + name, + time.Since(start), + ) + }) +} diff --git a/samples/server/petstore/go-chi-server/go/model_api_response.go b/samples/server/petstore/go-chi-server/go/model_api_response.go new file mode 100644 index 00000000000..2379e169080 --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/model_api_response.go @@ -0,0 +1,20 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +// ApiResponse - Describes the result of uploading an image resource +type ApiResponse struct { + + Code int32 `json:"code,omitempty"` + + Type string `json:"type,omitempty"` + + Message string `json:"message,omitempty"` +} diff --git a/samples/server/petstore/go-chi-server/go/model_category.go b/samples/server/petstore/go-chi-server/go/model_category.go new file mode 100644 index 00000000000..5e6f9d247fa --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/model_category.go @@ -0,0 +1,18 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +// Category - A category for a pet +type Category struct { + + Id int64 `json:"id,omitempty"` + + Name string `json:"name,omitempty"` +} diff --git a/samples/server/petstore/go-chi-server/go/model_order.go b/samples/server/petstore/go-chi-server/go/model_order.go new file mode 100644 index 00000000000..a9d8dbb7957 --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/model_order.go @@ -0,0 +1,31 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +import ( + "time" +) + +// Order - An order for a pets from the pet store +type Order struct { + + Id int64 `json:"id,omitempty"` + + PetId int64 `json:"petId,omitempty"` + + Quantity int32 `json:"quantity,omitempty"` + + ShipDate time.Time `json:"shipDate,omitempty"` + + // Order Status + Status string `json:"status,omitempty"` + + Complete bool `json:"complete,omitempty"` +} diff --git a/samples/server/petstore/go-chi-server/go/model_pet.go b/samples/server/petstore/go-chi-server/go/model_pet.go new file mode 100644 index 00000000000..fb206487ab0 --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/model_pet.go @@ -0,0 +1,27 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +// Pet - A pet for sale in the pet store +type Pet struct { + + Id int64 `json:"id,omitempty"` + + Category Category `json:"category,omitempty"` + + Name string `json:"name"` + + PhotoUrls []string `json:"photoUrls"` + + Tags []Tag `json:"tags,omitempty"` + + // pet status in the store + Status string `json:"status,omitempty"` +} diff --git a/samples/server/petstore/go-chi-server/go/model_tag.go b/samples/server/petstore/go-chi-server/go/model_tag.go new file mode 100644 index 00000000000..2fb07fb32c4 --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/model_tag.go @@ -0,0 +1,18 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +// Tag - A tag for a pet +type Tag struct { + + Id int64 `json:"id,omitempty"` + + Name string `json:"name,omitempty"` +} diff --git a/samples/server/petstore/go-chi-server/go/model_user.go b/samples/server/petstore/go-chi-server/go/model_user.go new file mode 100644 index 00000000000..8f40d0ac04c --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/model_user.go @@ -0,0 +1,31 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +// User - A User who is purchasing from the pet store +type User struct { + + Id int64 `json:"id,omitempty"` + + Username string `json:"username,omitempty"` + + FirstName string `json:"firstName,omitempty"` + + LastName string `json:"lastName,omitempty"` + + Email string `json:"email,omitempty"` + + Password string `json:"password,omitempty"` + + Phone string `json:"phone,omitempty"` + + // User Status + UserStatus int32 `json:"userStatus,omitempty"` +} diff --git a/samples/server/petstore/go-chi-server/go/routers.go b/samples/server/petstore/go-chi-server/go/routers.go new file mode 100644 index 00000000000..74b5392ac87 --- /dev/null +++ b/samples/server/petstore/go-chi-server/go/routers.go @@ -0,0 +1,213 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package petstoreserver + +import ( + "encoding/json" + "errors" + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" + "io/ioutil" + "mime/multipart" + "net/http" + "os" + "strconv" + "strings" +) + +// A Route defines the parameters for an api endpoint +type Route struct { + Name string + Method string + Pattern string + HandlerFunc http.HandlerFunc +} + +// Routes are a collection of defined api endpoints +type Routes []Route + +// Router defines the required methods for retrieving api routes +type Router interface { + Routes() Routes +} + +const errMsgRequiredMissing = "required parameter is missing" + +// NewRouter creates a new router for any number of api routers +func NewRouter(routers ...Router) chi.Router { + router := chi.NewRouter() + router.Use(middleware.Logger) + for _, api := range routers { + for _, route := range api.Routes() { + var handler http.Handler + handler = route.HandlerFunc + router.Method(route.Method, route.Pattern, handler) + } + } + + return router +} + +// EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code +func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + if status != nil { + w.WriteHeader(*status) + } else { + w.WriteHeader(http.StatusOK) + } + + return json.NewEncoder(w).Encode(i) +} + +// ReadFormFileToTempFile reads file data from a request form and writes it to a temporary file +func ReadFormFileToTempFile(r *http.Request, key string) (*os.File, error) { + _, fileHeader, err := r.FormFile(key) + if err != nil { + return nil, err + } + + return readFileHeaderToTempFile(fileHeader) +} + +// ReadFormFilesToTempFiles reads files array data from a request form and writes it to a temporary files +func ReadFormFilesToTempFiles(r *http.Request, key string) ([]*os.File, error) { + if err := r.ParseMultipartForm(32 << 20); err != nil { + return nil, err + } + + files := make([]*os.File, 0, len(r.MultipartForm.File[key])) + + for _, fileHeader := range r.MultipartForm.File[key] { + file, err := readFileHeaderToTempFile(fileHeader) + if err != nil { + return nil, err + } + + files = append(files, file) + } + + return files, nil +} + +// readFileHeaderToTempFile reads multipart.FileHeader and writes it to a temporary file +func readFileHeaderToTempFile(fileHeader *multipart.FileHeader) (*os.File, error) { + formFile, err := fileHeader.Open() + if err != nil { + return nil, err + } + + defer formFile.Close() + + fileBytes, err := ioutil.ReadAll(formFile) + if err != nil { + return nil, err + } + + file, err := ioutil.TempFile("", fileHeader.Filename) + if err != nil { + return nil, err + } + + defer file.Close() + + file.Write(fileBytes) + + return file, nil +} + +// parseInt64Parameter parses a string parameter to an int64. +func parseInt64Parameter(param string, required bool) (int64, error) { + if param == "" { + if required { + return 0, errors.New(errMsgRequiredMissing) + } + + return 0, nil + } + + return strconv.ParseInt(param, 10, 64) +} + +// parseInt32Parameter parses a string parameter to an int32. +func parseInt32Parameter(param string, required bool) (int32, error) { + if param == "" { + if required { + return 0, errors.New(errMsgRequiredMissing) + } + + return 0, nil + } + + val, err := strconv.ParseInt(param, 10, 32) + if err != nil { + return -1, err + } + + return int32(val), nil +} + +// parseBoolParameter parses a string parameter to a bool +func parseBoolParameter(param string) (bool, error) { + val, err := strconv.ParseBool(param) + if err != nil { + return false, err + } + + return bool(val), nil +} + +// parseInt64ArrayParameter parses a string parameter containing array of values to []int64. +func parseInt64ArrayParameter(param, delim string, required bool) ([]int64, error) { + if param == "" { + if required { + return nil, errors.New(errMsgRequiredMissing) + } + + return nil, nil + } + + str := strings.Split(param, delim) + ints := make([]int64, len(str)) + + for i, s := range str { + if v, err := strconv.ParseInt(s, 10, 64); err != nil { + return nil, err + } else { + ints[i] = v + } + } + + return ints, nil +} + +// parseInt32ArrayParameter parses a string parameter containing array of values to []int32. +func parseInt32ArrayParameter(param, delim string, required bool) ([]int32, error) { + if param == "" { + if required { + return nil, errors.New(errMsgRequiredMissing) + } + + return nil, nil + } + + str := strings.Split(param, delim) + ints := make([]int32, len(str)) + + for i, s := range str { + if v, err := strconv.ParseInt(s, 10, 32); err != nil { + return nil, err + } else { + ints[i] = int32(v) + } + } + + return ints, nil +} \ No newline at end of file diff --git a/samples/server/petstore/go-chi-server/main.go b/samples/server/petstore/go-chi-server/main.go new file mode 100644 index 00000000000..ddc5258297c --- /dev/null +++ b/samples/server/petstore/go-chi-server/main.go @@ -0,0 +1,34 @@ +/* + * 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. + * + * API version: 1.0.0 + * Generated by: OpenAPI Generator (https://openapi-generator.tech) + */ + +package main + +import ( + "log" + "net/http" + + petstoreserver "github.com/GIT_USER_ID/GIT_REPO_ID/go" +) + +func main() { + log.Printf("Server started") + + PetApiService := petstoreserver.NewPetApiService() + PetApiController := petstoreserver.NewPetApiController(PetApiService) + + StoreApiService := petstoreserver.NewStoreApiService() + StoreApiController := petstoreserver.NewStoreApiController(StoreApiService) + + UserApiService := petstoreserver.NewUserApiService() + UserApiController := petstoreserver.NewUserApiController(UserApiService) + + router := petstoreserver.NewRouter(PetApiController, StoreApiController, UserApiController) + + log.Fatal(http.ListenAndServe(":8080", router)) +} From 56260bf52229c057e7ea9854021202444ed36658 Mon Sep 17 00:00:00 2001 From: Anders Aaen Springborg Date: Wed, 16 Jun 2021 18:36:38 +0200 Subject: [PATCH 136/192] Update contributers (#9783) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We were four people who made the cpp-tiny client generator :) ❤️ --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a969ca8259..172b600e4d4 100644 --- a/README.md +++ b/README.md @@ -845,7 +845,7 @@ Here is a list of template creators: * Bash: @bkryza * C: @PowerOfCreation @zhemant [:heart:](https://www.patreon.com/zhemant) * C++ REST: @Danielku15 - * C++ Tiny: @AndersSpringborg + * C++ Tiny: @AndersSpringborg @kaareHH @michelealbano @mkakbas * C++ UE4: @Kahncode * C# (.NET 2.0): @who * C# (.NET Standard 1.3 ): @Gronsak From 687692cedc86b89310f2a4bddbd61182a26e9294 Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Wed, 16 Jun 2021 17:37:23 +0100 Subject: [PATCH 137/192] update AnyCodable and gitignore (#9777) --- .../main/resources/swift5/Cartfile.mustache | 2 +- .../resources/swift5/Package.swift.mustache | 10 +-- .../main/resources/swift5/Podspec.mustache | 2 +- .../main/resources/swift5/gitignore.mustache | 84 ++++++++++++++----- .../swift5/alamofireLibrary/.gitignore | 84 ++++++++++++++----- .../petstore/swift5/alamofireLibrary/Cartfile | 2 +- .../swift5/alamofireLibrary/Package.resolved | 4 +- .../swift5/alamofireLibrary/Package.swift | 4 +- .../alamofireLibrary/PetstoreClient.podspec | 2 +- .../SwaggerClientTests/.gitignore | 75 ++++++++++++----- .../petstore/swift5/combineLibrary/.gitignore | 84 ++++++++++++++----- .../petstore/swift5/combineLibrary/Cartfile | 2 +- .../swift5/combineLibrary/Package.resolved | 4 +- .../swift5/combineLibrary/Package.swift | 2 +- .../combineLibrary/PetstoreClient.podspec | 2 +- .../SwaggerClientTests/.gitignore | 75 ++++++++++++----- .../client/petstore/swift5/default/.gitignore | 84 ++++++++++++++----- .../client/petstore/swift5/default/Cartfile | 2 +- .../petstore/swift5/default/Package.resolved | 4 +- .../petstore/swift5/default/Package.swift | 2 +- .../swift5/default/PetstoreClient.podspec | 2 +- .../default/SwaggerClientTests/.gitignore | 75 ++++++++++++----- .../petstore/swift5/deprecated/.gitignore | 84 ++++++++++++++----- .../petstore/swift5/deprecated/Cartfile | 2 +- .../swift5/deprecated/Package.resolved | 4 +- .../petstore/swift5/deprecated/Package.swift | 2 +- .../swift5/deprecated/PetstoreClient.podspec | 2 +- .../petstore/swift5/nonPublicApi/.gitignore | 84 ++++++++++++++----- .../petstore/swift5/nonPublicApi/Cartfile | 2 +- .../swift5/nonPublicApi/Package.resolved | 4 +- .../swift5/nonPublicApi/Package.swift | 2 +- .../nonPublicApi/PetstoreClient.podspec | 2 +- .../petstore/swift5/objcCompatible/.gitignore | 84 ++++++++++++++----- .../petstore/swift5/objcCompatible/Cartfile | 2 +- .../swift5/objcCompatible/Package.resolved | 4 +- .../swift5/objcCompatible/Package.swift | 2 +- .../objcCompatible/PetstoreClient.podspec | 2 +- .../client/petstore/swift5/oneOf/.gitignore | 84 ++++++++++++++----- samples/client/petstore/swift5/oneOf/Cartfile | 2 +- .../petstore/swift5/oneOf/Package.resolved | 4 +- .../petstore/swift5/oneOf/Package.swift | 2 +- .../swift5/oneOf/PetstoreClient.podspec | 2 +- .../swift5/promisekitLibrary/.gitignore | 84 ++++++++++++++----- .../swift5/promisekitLibrary/Cartfile | 2 +- .../swift5/promisekitLibrary/Package.resolved | 4 +- .../swift5/promisekitLibrary/Package.swift | 4 +- .../promisekitLibrary/PetstoreClient.podspec | 2 +- .../SwaggerClientTests/.gitignore | 75 ++++++++++++----- .../swift5/readonlyProperties/.gitignore | 84 ++++++++++++++----- .../swift5/readonlyProperties/Cartfile | 2 +- .../readonlyProperties/Package.resolved | 4 +- .../swift5/readonlyProperties/Package.swift | 2 +- .../readonlyProperties/PetstoreClient.podspec | 2 +- .../petstore/swift5/resultLibrary/.gitignore | 84 ++++++++++++++----- .../petstore/swift5/resultLibrary/Cartfile | 2 +- .../swift5/resultLibrary/Package.resolved | 4 +- .../swift5/resultLibrary/Package.swift | 2 +- .../resultLibrary/PetstoreClient.podspec | 2 +- .../petstore/swift5/rxswiftLibrary/.gitignore | 84 ++++++++++++++----- .../petstore/swift5/rxswiftLibrary/Cartfile | 2 +- .../swift5/rxswiftLibrary/Package.resolved | 4 +- .../swift5/rxswiftLibrary/Package.swift | 4 +- .../rxswiftLibrary/PetstoreClient.podspec | 2 +- .../SwaggerClientTests/.gitignore | 75 ++++++++++++----- .../swift5/urlsessionLibrary/.gitignore | 84 ++++++++++++++----- .../swift5/urlsessionLibrary/Cartfile | 2 +- .../swift5/urlsessionLibrary/Package.resolved | 6 +- .../swift5/urlsessionLibrary/Package.swift | 2 +- .../urlsessionLibrary/PetstoreClient.podspec | 2 +- .../SwaggerClientTests/.gitignore | 75 ++++++++++++----- .../petstore/swift5/vaporLibrary/.gitignore | 84 ++++++++++++++----- .../swift5/vaporLibrary/Package.resolved | 4 +- .../swift5/vaporLibrary/Package.swift | 4 +- .../swift5/x-swift-hashable/.gitignore | 84 ++++++++++++++----- .../petstore/swift5/x-swift-hashable/Cartfile | 2 +- .../swift5/x-swift-hashable/Package.resolved | 6 +- .../swift5/x-swift-hashable/Package.swift | 2 +- .../x-swift-hashable/PetstoreClient.podspec | 2 +- 78 files changed, 1350 insertions(+), 522 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/swift5/Cartfile.mustache b/modules/openapi-generator/src/main/resources/swift5/Cartfile.mustache index 5dbbc457720..98d54ab04c8 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Cartfile.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Cartfile.mustache @@ -1,4 +1,4 @@ {{#useAlamofire}}github "Alamofire/Alamofire" ~> 4.9.1{{/useAlamofire}}{{#usePromiseKit}} github "mxcl/PromiseKit" ~> 6.15.3{{/usePromiseKit}}{{#useRxSwift}} github "ReactiveX/RxSwift" ~> 6.2.0{{/useRxSwift}} -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/modules/openapi-generator/src/main/resources/swift5/Package.swift.mustache b/modules/openapi-generator/src/main/resources/swift5/Package.swift.mustache index 5b106288b3c..cd573b4a96f 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Package.swift.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Package.swift.mustache @@ -24,18 +24,18 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), {{#useAlamofire}} - .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.9.1"), + .package(url: "https://github.com/Alamofire/Alamofire", from: "4.9.1"), {{/useAlamofire}} {{#useVapor}} - .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0") + .package(url: "https://github.com/vapor/vapor", from: "4.0.0") {{/useVapor}} {{#usePromiseKit}} - .package(url: "https://github.com/mxcl/PromiseKit.git", from: "6.15.3"), + .package(url: "https://github.com/mxcl/PromiseKit", from: "6.15.3"), {{/usePromiseKit}} {{#useRxSwift}} - .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "6.2.0"), + .package(url: "https://github.com/ReactiveX/RxSwift", from: "6.2.0"), {{/useRxSwift}} ], targets: [ diff --git a/modules/openapi-generator/src/main/resources/swift5/Podspec.mustache b/modules/openapi-generator/src/main/resources/swift5/Podspec.mustache index 7ad13354aac..3cf9daa69a8 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Podspec.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Podspec.mustache @@ -35,5 +35,5 @@ Pod::Spec.new do |s| {{#useAlamofire}} s.dependency 'Alamofire', '~> 4.9.1' {{/useAlamofire}} - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/modules/openapi-generator/src/main/resources/swift5/gitignore.mustache b/modules/openapi-generator/src/main/resources/swift5/gitignore.mustache index 5e5d5cebcf4..627d360a903 100644 --- a/modules/openapi-generator/src/main/resources/swift5/gitignore.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/gitignore.mustache @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/alamofireLibrary/.gitignore b/samples/client/petstore/swift5/alamofireLibrary/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/.gitignore +++ b/samples/client/petstore/swift5/alamofireLibrary/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/alamofireLibrary/Cartfile b/samples/client/petstore/swift5/alamofireLibrary/Cartfile index 01ae988a6d4..5404871742d 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/Cartfile +++ b/samples/client/petstore/swift5/alamofireLibrary/Cartfile @@ -1,2 +1,2 @@ github "Alamofire/Alamofire" ~> 4.9.1 -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/alamofireLibrary/Package.resolved b/samples/client/petstore/swift5/alamofireLibrary/Package.resolved index 4c8626cac13..bc55c313035 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/Package.resolved +++ b/samples/client/petstore/swift5/alamofireLibrary/Package.resolved @@ -15,8 +15,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } } ] diff --git a/samples/client/petstore/swift5/alamofireLibrary/Package.swift b/samples/client/petstore/swift5/alamofireLibrary/Package.swift index 153013e9e93..1860a02d85b 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/Package.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/Package.swift @@ -19,8 +19,8 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), - .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.9.1"), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), + .package(url: "https://github.com/Alamofire/Alamofire", from: "4.9.1"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient.podspec b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient.podspec index dbe8000cc21..7ce1a61d409 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient.podspec @@ -12,5 +12,5 @@ Pod::Spec.new do |s| s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' s.dependency 'Alamofire', '~> 4.9.1' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/.gitignore b/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/.gitignore index 0269c2f56db..22029d2f644 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/.gitignore +++ b/samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests/.gitignore @@ -1,14 +1,22 @@ -### https://raw.github.com/github/gitignore/7792e50daeaa6c07460484704671d1dc9f0045a7/Swift.gitignore +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) build/ DerivedData/ - -## Various settings +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -17,15 +25,11 @@ DerivedData/ !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata/ - -## Other -*.moved-aside -*.xccheckout -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa *.dSYM.zip *.dSYM @@ -35,38 +39,67 @@ timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ # Package.pins # Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# -Pods/ +# Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. -Carthage/Checkouts +# Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: # https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml fastlane/Preview.html -fastlane/screenshots +fastlane/screenshots/**/*.png fastlane/test_output +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode \ No newline at end of file diff --git a/samples/client/petstore/swift5/combineLibrary/.gitignore b/samples/client/petstore/swift5/combineLibrary/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/combineLibrary/.gitignore +++ b/samples/client/petstore/swift5/combineLibrary/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/combineLibrary/Cartfile b/samples/client/petstore/swift5/combineLibrary/Cartfile index 843f7adc779..a6a6bcacb1d 100644 --- a/samples/client/petstore/swift5/combineLibrary/Cartfile +++ b/samples/client/petstore/swift5/combineLibrary/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/combineLibrary/Package.resolved b/samples/client/petstore/swift5/combineLibrary/Package.resolved index d384b276b4b..79610c3b3b3 100644 --- a/samples/client/petstore/swift5/combineLibrary/Package.resolved +++ b/samples/client/petstore/swift5/combineLibrary/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } } ] diff --git a/samples/client/petstore/swift5/combineLibrary/Package.swift b/samples/client/petstore/swift5/combineLibrary/Package.swift index 5cde507bdcf..87bb775fb72 100644 --- a/samples/client/petstore/swift5/combineLibrary/Package.swift +++ b/samples/client/petstore/swift5/combineLibrary/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient.podspec b/samples/client/petstore/swift5/combineLibrary/PetstoreClient.podspec index 60f05891b24..0e6bf7ec024 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/.gitignore b/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/.gitignore index 0269c2f56db..22029d2f644 100644 --- a/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/.gitignore +++ b/samples/client/petstore/swift5/combineLibrary/SwaggerClientTests/.gitignore @@ -1,14 +1,22 @@ -### https://raw.github.com/github/gitignore/7792e50daeaa6c07460484704671d1dc9f0045a7/Swift.gitignore +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) build/ DerivedData/ - -## Various settings +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -17,15 +25,11 @@ DerivedData/ !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata/ - -## Other -*.moved-aside -*.xccheckout -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa *.dSYM.zip *.dSYM @@ -35,38 +39,67 @@ timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ # Package.pins # Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# -Pods/ +# Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. -Carthage/Checkouts +# Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: # https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml fastlane/Preview.html -fastlane/screenshots +fastlane/screenshots/**/*.png fastlane/test_output +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode \ No newline at end of file diff --git a/samples/client/petstore/swift5/default/.gitignore b/samples/client/petstore/swift5/default/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/default/.gitignore +++ b/samples/client/petstore/swift5/default/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/default/Cartfile b/samples/client/petstore/swift5/default/Cartfile index 843f7adc779..a6a6bcacb1d 100644 --- a/samples/client/petstore/swift5/default/Cartfile +++ b/samples/client/petstore/swift5/default/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/default/Package.resolved b/samples/client/petstore/swift5/default/Package.resolved index d384b276b4b..79610c3b3b3 100644 --- a/samples/client/petstore/swift5/default/Package.resolved +++ b/samples/client/petstore/swift5/default/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } } ] diff --git a/samples/client/petstore/swift5/default/Package.swift b/samples/client/petstore/swift5/default/Package.swift index 5cde507bdcf..87bb775fb72 100644 --- a/samples/client/petstore/swift5/default/Package.swift +++ b/samples/client/petstore/swift5/default/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/default/PetstoreClient.podspec b/samples/client/petstore/swift5/default/PetstoreClient.podspec index 60f05891b24..0e6bf7ec024 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/default/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/samples/client/petstore/swift5/default/SwaggerClientTests/.gitignore b/samples/client/petstore/swift5/default/SwaggerClientTests/.gitignore index 0269c2f56db..22029d2f644 100644 --- a/samples/client/petstore/swift5/default/SwaggerClientTests/.gitignore +++ b/samples/client/petstore/swift5/default/SwaggerClientTests/.gitignore @@ -1,14 +1,22 @@ -### https://raw.github.com/github/gitignore/7792e50daeaa6c07460484704671d1dc9f0045a7/Swift.gitignore +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) build/ DerivedData/ - -## Various settings +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -17,15 +25,11 @@ DerivedData/ !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata/ - -## Other -*.moved-aside -*.xccheckout -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa *.dSYM.zip *.dSYM @@ -35,38 +39,67 @@ timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ # Package.pins # Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# -Pods/ +# Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. -Carthage/Checkouts +# Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: # https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml fastlane/Preview.html -fastlane/screenshots +fastlane/screenshots/**/*.png fastlane/test_output +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode \ No newline at end of file diff --git a/samples/client/petstore/swift5/deprecated/.gitignore b/samples/client/petstore/swift5/deprecated/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/deprecated/.gitignore +++ b/samples/client/petstore/swift5/deprecated/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/deprecated/Cartfile b/samples/client/petstore/swift5/deprecated/Cartfile index 843f7adc779..a6a6bcacb1d 100644 --- a/samples/client/petstore/swift5/deprecated/Cartfile +++ b/samples/client/petstore/swift5/deprecated/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/deprecated/Package.resolved b/samples/client/petstore/swift5/deprecated/Package.resolved index d384b276b4b..79610c3b3b3 100644 --- a/samples/client/petstore/swift5/deprecated/Package.resolved +++ b/samples/client/petstore/swift5/deprecated/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } } ] diff --git a/samples/client/petstore/swift5/deprecated/Package.swift b/samples/client/petstore/swift5/deprecated/Package.swift index 5cde507bdcf..87bb775fb72 100644 --- a/samples/client/petstore/swift5/deprecated/Package.swift +++ b/samples/client/petstore/swift5/deprecated/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient.podspec b/samples/client/petstore/swift5/deprecated/PetstoreClient.podspec index 60f05891b24..0e6bf7ec024 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/samples/client/petstore/swift5/nonPublicApi/.gitignore b/samples/client/petstore/swift5/nonPublicApi/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/nonPublicApi/.gitignore +++ b/samples/client/petstore/swift5/nonPublicApi/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/nonPublicApi/Cartfile b/samples/client/petstore/swift5/nonPublicApi/Cartfile index 843f7adc779..a6a6bcacb1d 100644 --- a/samples/client/petstore/swift5/nonPublicApi/Cartfile +++ b/samples/client/petstore/swift5/nonPublicApi/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/nonPublicApi/Package.resolved b/samples/client/petstore/swift5/nonPublicApi/Package.resolved index d384b276b4b..79610c3b3b3 100644 --- a/samples/client/petstore/swift5/nonPublicApi/Package.resolved +++ b/samples/client/petstore/swift5/nonPublicApi/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } } ] diff --git a/samples/client/petstore/swift5/nonPublicApi/Package.swift b/samples/client/petstore/swift5/nonPublicApi/Package.swift index 5cde507bdcf..87bb775fb72 100644 --- a/samples/client/petstore/swift5/nonPublicApi/Package.swift +++ b/samples/client/petstore/swift5/nonPublicApi/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient.podspec b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient.podspec index 60f05891b24..0e6bf7ec024 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/samples/client/petstore/swift5/objcCompatible/.gitignore b/samples/client/petstore/swift5/objcCompatible/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/objcCompatible/.gitignore +++ b/samples/client/petstore/swift5/objcCompatible/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/objcCompatible/Cartfile b/samples/client/petstore/swift5/objcCompatible/Cartfile index 843f7adc779..a6a6bcacb1d 100644 --- a/samples/client/petstore/swift5/objcCompatible/Cartfile +++ b/samples/client/petstore/swift5/objcCompatible/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/objcCompatible/Package.resolved b/samples/client/petstore/swift5/objcCompatible/Package.resolved index d384b276b4b..79610c3b3b3 100644 --- a/samples/client/petstore/swift5/objcCompatible/Package.resolved +++ b/samples/client/petstore/swift5/objcCompatible/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } } ] diff --git a/samples/client/petstore/swift5/objcCompatible/Package.swift b/samples/client/petstore/swift5/objcCompatible/Package.swift index 5cde507bdcf..87bb775fb72 100644 --- a/samples/client/petstore/swift5/objcCompatible/Package.swift +++ b/samples/client/petstore/swift5/objcCompatible/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient.podspec b/samples/client/petstore/swift5/objcCompatible/PetstoreClient.podspec index 60f05891b24..0e6bf7ec024 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/samples/client/petstore/swift5/oneOf/.gitignore b/samples/client/petstore/swift5/oneOf/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/oneOf/.gitignore +++ b/samples/client/petstore/swift5/oneOf/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/oneOf/Cartfile b/samples/client/petstore/swift5/oneOf/Cartfile index 843f7adc779..a6a6bcacb1d 100644 --- a/samples/client/petstore/swift5/oneOf/Cartfile +++ b/samples/client/petstore/swift5/oneOf/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/oneOf/Package.resolved b/samples/client/petstore/swift5/oneOf/Package.resolved index d384b276b4b..79610c3b3b3 100644 --- a/samples/client/petstore/swift5/oneOf/Package.resolved +++ b/samples/client/petstore/swift5/oneOf/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } } ] diff --git a/samples/client/petstore/swift5/oneOf/Package.swift b/samples/client/petstore/swift5/oneOf/Package.swift index 5cde507bdcf..87bb775fb72 100644 --- a/samples/client/petstore/swift5/oneOf/Package.swift +++ b/samples/client/petstore/swift5/oneOf/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient.podspec b/samples/client/petstore/swift5/oneOf/PetstoreClient.podspec index 8355c5f50e6..0657f66982e 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/samples/client/petstore/swift5/promisekitLibrary/.gitignore b/samples/client/petstore/swift5/promisekitLibrary/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/.gitignore +++ b/samples/client/petstore/swift5/promisekitLibrary/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/promisekitLibrary/Cartfile b/samples/client/petstore/swift5/promisekitLibrary/Cartfile index e8692e8c204..19c497555a1 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/Cartfile +++ b/samples/client/petstore/swift5/promisekitLibrary/Cartfile @@ -1,3 +1,3 @@ github "mxcl/PromiseKit" ~> 6.15.3 -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/promisekitLibrary/Package.resolved b/samples/client/petstore/swift5/promisekitLibrary/Package.resolved index 63ce26f05eb..2db4b9c3ce3 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/Package.resolved +++ b/samples/client/petstore/swift5/promisekitLibrary/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } }, { diff --git a/samples/client/petstore/swift5/promisekitLibrary/Package.swift b/samples/client/petstore/swift5/promisekitLibrary/Package.swift index 831b4d0a740..1f18577a228 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/Package.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/Package.swift @@ -19,8 +19,8 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), - .package(url: "https://github.com/mxcl/PromiseKit.git", from: "6.15.3"), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), + .package(url: "https://github.com/mxcl/PromiseKit", from: "6.15.3"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient.podspec b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient.podspec index 5e3450043c0..a4bc33bd51b 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient.podspec @@ -12,5 +12,5 @@ Pod::Spec.new do |s| s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' s.dependency 'PromiseKit/CorePromise', '~> 6.15.3' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/.gitignore b/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/.gitignore index 0269c2f56db..22029d2f644 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/.gitignore +++ b/samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests/.gitignore @@ -1,14 +1,22 @@ -### https://raw.github.com/github/gitignore/7792e50daeaa6c07460484704671d1dc9f0045a7/Swift.gitignore +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) build/ DerivedData/ - -## Various settings +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -17,15 +25,11 @@ DerivedData/ !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata/ - -## Other -*.moved-aside -*.xccheckout -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa *.dSYM.zip *.dSYM @@ -35,38 +39,67 @@ timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ # Package.pins # Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# -Pods/ +# Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. -Carthage/Checkouts +# Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: # https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml fastlane/Preview.html -fastlane/screenshots +fastlane/screenshots/**/*.png fastlane/test_output +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode \ No newline at end of file diff --git a/samples/client/petstore/swift5/readonlyProperties/.gitignore b/samples/client/petstore/swift5/readonlyProperties/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/readonlyProperties/.gitignore +++ b/samples/client/petstore/swift5/readonlyProperties/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/readonlyProperties/Cartfile b/samples/client/petstore/swift5/readonlyProperties/Cartfile index 843f7adc779..a6a6bcacb1d 100644 --- a/samples/client/petstore/swift5/readonlyProperties/Cartfile +++ b/samples/client/petstore/swift5/readonlyProperties/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/readonlyProperties/Package.resolved b/samples/client/petstore/swift5/readonlyProperties/Package.resolved index d384b276b4b..79610c3b3b3 100644 --- a/samples/client/petstore/swift5/readonlyProperties/Package.resolved +++ b/samples/client/petstore/swift5/readonlyProperties/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } } ] diff --git a/samples/client/petstore/swift5/readonlyProperties/Package.swift b/samples/client/petstore/swift5/readonlyProperties/Package.swift index 5cde507bdcf..87bb775fb72 100644 --- a/samples/client/petstore/swift5/readonlyProperties/Package.swift +++ b/samples/client/petstore/swift5/readonlyProperties/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient.podspec b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient.podspec index 60f05891b24..0e6bf7ec024 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/samples/client/petstore/swift5/resultLibrary/.gitignore b/samples/client/petstore/swift5/resultLibrary/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/resultLibrary/.gitignore +++ b/samples/client/petstore/swift5/resultLibrary/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/resultLibrary/Cartfile b/samples/client/petstore/swift5/resultLibrary/Cartfile index 843f7adc779..a6a6bcacb1d 100644 --- a/samples/client/petstore/swift5/resultLibrary/Cartfile +++ b/samples/client/petstore/swift5/resultLibrary/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/resultLibrary/Package.resolved b/samples/client/petstore/swift5/resultLibrary/Package.resolved index d384b276b4b..79610c3b3b3 100644 --- a/samples/client/petstore/swift5/resultLibrary/Package.resolved +++ b/samples/client/petstore/swift5/resultLibrary/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } } ] diff --git a/samples/client/petstore/swift5/resultLibrary/Package.swift b/samples/client/petstore/swift5/resultLibrary/Package.swift index 5cde507bdcf..87bb775fb72 100644 --- a/samples/client/petstore/swift5/resultLibrary/Package.swift +++ b/samples/client/petstore/swift5/resultLibrary/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient.podspec b/samples/client/petstore/swift5/resultLibrary/PetstoreClient.podspec index 60f05891b24..0e6bf7ec024 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/samples/client/petstore/swift5/rxswiftLibrary/.gitignore b/samples/client/petstore/swift5/rxswiftLibrary/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/.gitignore +++ b/samples/client/petstore/swift5/rxswiftLibrary/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/rxswiftLibrary/Cartfile b/samples/client/petstore/swift5/rxswiftLibrary/Cartfile index a49f6c9da03..a095f11173e 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/Cartfile +++ b/samples/client/petstore/swift5/rxswiftLibrary/Cartfile @@ -1,3 +1,3 @@ github "ReactiveX/RxSwift" ~> 6.2.0 -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/rxswiftLibrary/Package.resolved b/samples/client/petstore/swift5/rxswiftLibrary/Package.resolved index 231d8536967..58d00d4dd63 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/Package.resolved +++ b/samples/client/petstore/swift5/rxswiftLibrary/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } }, { diff --git a/samples/client/petstore/swift5/rxswiftLibrary/Package.swift b/samples/client/petstore/swift5/rxswiftLibrary/Package.swift index 36541008daa..c70e60a1a8b 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/Package.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/Package.swift @@ -19,8 +19,8 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), - .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "6.2.0"), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), + .package(url: "https://github.com/ReactiveX/RxSwift", from: "6.2.0"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient.podspec b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient.podspec index 32a1ff8ae6f..12688d5c28d 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient.podspec @@ -12,5 +12,5 @@ Pod::Spec.new do |s| s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' s.dependency 'RxSwift', '~> 6.2.0' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/.gitignore b/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/.gitignore index 0269c2f56db..22029d2f644 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/.gitignore +++ b/samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests/.gitignore @@ -1,14 +1,22 @@ -### https://raw.github.com/github/gitignore/7792e50daeaa6c07460484704671d1dc9f0045a7/Swift.gitignore +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) build/ DerivedData/ - -## Various settings +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -17,15 +25,11 @@ DerivedData/ !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata/ - -## Other -*.moved-aside -*.xccheckout -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa *.dSYM.zip *.dSYM @@ -35,38 +39,67 @@ timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ # Package.pins # Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# -Pods/ +# Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. -Carthage/Checkouts +# Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: # https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml fastlane/Preview.html -fastlane/screenshots +fastlane/screenshots/**/*.png fastlane/test_output +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode \ No newline at end of file diff --git a/samples/client/petstore/swift5/urlsessionLibrary/.gitignore b/samples/client/petstore/swift5/urlsessionLibrary/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/.gitignore +++ b/samples/client/petstore/swift5/urlsessionLibrary/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Cartfile b/samples/client/petstore/swift5/urlsessionLibrary/Cartfile index 843f7adc779..a6a6bcacb1d 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Cartfile +++ b/samples/client/petstore/swift5/urlsessionLibrary/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Package.resolved b/samples/client/petstore/swift5/urlsessionLibrary/Package.resolved index d384b276b4b..cca1f0763b8 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Package.resolved +++ b/samples/client/petstore/swift5/urlsessionLibrary/Package.resolved @@ -3,11 +3,11 @@ "pins": [ { "package": "AnyCodable", - "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable.git", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } } ] diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Package.swift b/samples/client/petstore/swift5/urlsessionLibrary/Package.swift index eea99ce549e..300e7414279 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Package.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/urlsessionLibrary/PetstoreClient.podspec b/samples/client/petstore/swift5/urlsessionLibrary/PetstoreClient.podspec index 350282d85ae..571e1d8a518 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/urlsessionLibrary/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'Sources/PetstoreClient/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end diff --git a/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/.gitignore b/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/.gitignore index 0269c2f56db..22029d2f644 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/.gitignore +++ b/samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests/.gitignore @@ -1,14 +1,22 @@ -### https://raw.github.com/github/gitignore/7792e50daeaa6c07460484704671d1dc9f0045a7/Swift.gitignore +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) build/ DerivedData/ - -## Various settings +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -17,15 +25,11 @@ DerivedData/ !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata/ - -## Other -*.moved-aside -*.xccheckout -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa *.dSYM.zip *.dSYM @@ -35,38 +39,67 @@ timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ # Package.pins # Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# -Pods/ +# Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. -Carthage/Checkouts +# Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: # https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml fastlane/Preview.html -fastlane/screenshots +fastlane/screenshots/**/*.png fastlane/test_output +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode \ No newline at end of file diff --git a/samples/client/petstore/swift5/vaporLibrary/.gitignore b/samples/client/petstore/swift5/vaporLibrary/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/vaporLibrary/.gitignore +++ b/samples/client/petstore/swift5/vaporLibrary/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/vaporLibrary/Package.resolved b/samples/client/petstore/swift5/vaporLibrary/Package.resolved index 8f867e0061d..753725586cd 100644 --- a/samples/client/petstore/swift5/vaporLibrary/Package.resolved +++ b/samples/client/petstore/swift5/vaporLibrary/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } }, { diff --git a/samples/client/petstore/swift5/vaporLibrary/Package.swift b/samples/client/petstore/swift5/vaporLibrary/Package.swift index 3dec2555d09..d467b6e4a2e 100644 --- a/samples/client/petstore/swift5/vaporLibrary/Package.swift +++ b/samples/client/petstore/swift5/vaporLibrary/Package.swift @@ -16,8 +16,8 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), - .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0") + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), + .package(url: "https://github.com/vapor/vapor", from: "4.0.0") ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/x-swift-hashable/.gitignore b/samples/client/petstore/swift5/x-swift-hashable/.gitignore index 5e5d5cebcf4..627d360a903 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/.gitignore +++ b/samples/client/petstore/swift5/x-swift-hashable/.gitignore @@ -1,12 +1,22 @@ +# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode + +### Swift ### # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore -## Build generated -build/ -DerivedData +## User settings +xcuserdata/ -## Various settings +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside *.pbxuser !default.pbxuser *.mode1v3 @@ -15,49 +25,81 @@ DerivedData !default.mode2v3 *.perspectivev3 !default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint ## Obj-C/Swift specific *.hmap + +## App packaging *.ipa +*.dSYM.zip +*.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager -# # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + .build/ # CocoaPods -# # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# # Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace # Carthage -# # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/Build/ + +# Add this lines if you are using Accio dependency management (Deprecated since Xcode 12) +# Dependencies/ +# .accio/ # fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/#source-control fastlane/report.xml -fastlane/screenshots +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,xcode diff --git a/samples/client/petstore/swift5/x-swift-hashable/Cartfile b/samples/client/petstore/swift5/x-swift-hashable/Cartfile index 843f7adc779..a6a6bcacb1d 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/Cartfile +++ b/samples/client/petstore/swift5/x-swift-hashable/Cartfile @@ -1,2 +1,2 @@ -github "Flight-School/AnyCodable" ~> 0.6.0 +github "Flight-School/AnyCodable" ~> 0.6.1 diff --git a/samples/client/petstore/swift5/x-swift-hashable/Package.resolved b/samples/client/petstore/swift5/x-swift-hashable/Package.resolved index d384b276b4b..cca1f0763b8 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/Package.resolved +++ b/samples/client/petstore/swift5/x-swift-hashable/Package.resolved @@ -3,11 +3,11 @@ "pins": [ { "package": "AnyCodable", - "repositoryURL": "https://github.com/Flight-School/AnyCodable", + "repositoryURL": "https://github.com/Flight-School/AnyCodable.git", "state": { "branch": null, - "revision": "876d162385e9862ae8b3c8d65dc301312b040005", - "version": "0.6.0" + "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", + "version": "0.6.1" } } ] diff --git a/samples/client/petstore/swift5/x-swift-hashable/Package.swift b/samples/client/petstore/swift5/x-swift-hashable/Package.swift index 5cde507bdcf..87bb775fb72 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/Package.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "https://github.com/Flight-School/AnyCodable", .exact("0.6.0")), + .package(url: "https://github.com/Flight-School/AnyCodable", from: "0.6.1"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient.podspec b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient.podspec index 60f05891b24..0e6bf7ec024 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient.podspec +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient.podspec @@ -11,5 +11,5 @@ Pod::Spec.new do |s| s.homepage = 'https://github.com/openapitools/openapi-generator' s.summary = 'PetstoreClient' s.source_files = 'PetstoreClient/Classes/**/*.swift' - s.dependency 'AnyCodable-FlightSchool', '~> 0.6.0' + s.dependency 'AnyCodable-FlightSchool', '~> 0.6.1' end From 55600256b2ca1257ec106a8529363846f9e83b7c Mon Sep 17 00:00:00 2001 From: Albert Date: Thu, 17 Jun 2021 01:17:50 +0800 Subject: [PATCH 138/192] [rust-client]: fix reqwest not support client::options (#9745) * fix: https://github.com/OpenAPITools/openapi-generator/issues/9743 * update samples --- .../codegen/languages/RustClientCodegen.java | 2 +- .../main/resources/rust/reqwest/api.mustache | 2 +- .../rust/reqwest/petstore-async/README.md | 40 +++++++++---------- .../reqwest/petstore-async/docs/PetApi.md | 16 ++++---- .../reqwest/petstore-async/docs/StoreApi.md | 8 ++-- .../reqwest/petstore-async/docs/UserApi.md | 16 ++++---- .../petstore-async/src/apis/pet_api.rs | 16 ++++---- .../petstore-async/src/apis/store_api.rs | 8 ++-- .../petstore-async/src/apis/user_api.rs | 16 ++++---- .../petstore/rust/reqwest/petstore/README.md | 40 +++++++++---------- .../rust/reqwest/petstore/docs/PetApi.md | 16 ++++---- .../rust/reqwest/petstore/docs/StoreApi.md | 8 ++-- .../rust/reqwest/petstore/docs/UserApi.md | 16 ++++---- .../rust/reqwest/petstore/src/apis/pet_api.rs | 16 ++++---- .../reqwest/petstore/src/apis/store_api.rs | 8 ++-- .../reqwest/petstore/src/apis/user_api.rs | 16 ++++---- 16 files changed, 122 insertions(+), 122 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java index b6db793d9ae..2d9e445838b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java @@ -522,7 +522,7 @@ public class RustClientCodegen extends DefaultCodegen implements CodegenConfig { if (HYPER_LIBRARY.equals(getLibrary())) { operation.httpMethod = StringUtils.camelize(operation.httpMethod.toLowerCase(Locale.ROOT)); } else if (REQWEST_LIBRARY.equals(getLibrary())) { - operation.httpMethod = operation.httpMethod.toLowerCase(Locale.ROOT); + operation.httpMethod = operation.httpMethod.toUpperCase(Locale.ROOT); } // add support for single request parameter using x-group-parameters diff --git a/modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache b/modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache index 8ff7ce8d99e..6dd9d1e3823 100644 --- a/modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache +++ b/modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache @@ -94,7 +94,7 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration: let local_var_client = &configuration.client; let local_var_uri_str = format!("{}{{{path}}}", configuration.base_path{{#pathParams}}, {{{baseName}}}={{#isString}}crate::apis::urlencode({{/isString}}{{{paramName}}}{{^required}}.unwrap(){{/required}}{{#required}}{{#isNullable}}.unwrap(){{/isNullable}}{{/required}}{{#isArray}}.join(",").as_ref(){{/isArray}}{{#isString}}){{/isString}}{{/pathParams}}); - let mut local_var_req_builder = local_var_client.{{{httpMethod}}}(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::{{{httpMethod}}}, local_var_uri_str.as_str()); {{#queryParams}} {{#required}} diff --git a/samples/client/petstore/rust/reqwest/petstore-async/README.md b/samples/client/petstore/rust/reqwest/petstore-async/README.md index 4a3e0251107..6f195d6388d 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/README.md +++ b/samples/client/petstore/rust/reqwest/petstore-async/README.md @@ -24,26 +24,26 @@ All URIs are relative to *http://petstore.swagger.io/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*PetApi* | [**add_pet**](docs/PetApi.md#add_pet) | **post** /pet | Add a new pet to the store -*PetApi* | [**delete_pet**](docs/PetApi.md#delete_pet) | **delete** /pet/{petId} | Deletes a pet -*PetApi* | [**find_pets_by_status**](docs/PetApi.md#find_pets_by_status) | **get** /pet/findByStatus | Finds Pets by status -*PetApi* | [**find_pets_by_tags**](docs/PetApi.md#find_pets_by_tags) | **get** /pet/findByTags | Finds Pets by tags -*PetApi* | [**get_pet_by_id**](docs/PetApi.md#get_pet_by_id) | **get** /pet/{petId} | Find pet by ID -*PetApi* | [**update_pet**](docs/PetApi.md#update_pet) | **put** /pet | Update an existing pet -*PetApi* | [**update_pet_with_form**](docs/PetApi.md#update_pet_with_form) | **post** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**upload_file**](docs/PetApi.md#upload_file) | **post** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**delete_order**](docs/StoreApi.md#delete_order) | **delete** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**get_inventory**](docs/StoreApi.md#get_inventory) | **get** /store/inventory | Returns pet inventories by status -*StoreApi* | [**get_order_by_id**](docs/StoreApi.md#get_order_by_id) | **get** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**place_order**](docs/StoreApi.md#place_order) | **post** /store/order | Place an order for a pet -*UserApi* | [**create_user**](docs/UserApi.md#create_user) | **post** /user | Create user -*UserApi* | [**create_users_with_array_input**](docs/UserApi.md#create_users_with_array_input) | **post** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**create_users_with_list_input**](docs/UserApi.md#create_users_with_list_input) | **post** /user/createWithList | Creates list of users with given input array -*UserApi* | [**delete_user**](docs/UserApi.md#delete_user) | **delete** /user/{username} | Delete user -*UserApi* | [**get_user_by_name**](docs/UserApi.md#get_user_by_name) | **get** /user/{username} | Get user by user name -*UserApi* | [**login_user**](docs/UserApi.md#login_user) | **get** /user/login | Logs user into the system -*UserApi* | [**logout_user**](docs/UserApi.md#logout_user) | **get** /user/logout | Logs out current logged in user session -*UserApi* | [**update_user**](docs/UserApi.md#update_user) | **put** /user/{username} | Updated user +*PetApi* | [**add_pet**](docs/PetApi.md#add_pet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**delete_pet**](docs/PetApi.md#delete_pet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**find_pets_by_status**](docs/PetApi.md#find_pets_by_status) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**find_pets_by_tags**](docs/PetApi.md#find_pets_by_tags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**get_pet_by_id**](docs/PetApi.md#get_pet_by_id) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**update_pet**](docs/PetApi.md#update_pet) | **PUT** /pet | Update an existing pet +*PetApi* | [**update_pet_with_form**](docs/PetApi.md#update_pet_with_form) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**upload_file**](docs/PetApi.md#upload_file) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**delete_order**](docs/StoreApi.md#delete_order) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**get_inventory**](docs/StoreApi.md#get_inventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**get_order_by_id**](docs/StoreApi.md#get_order_by_id) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**place_order**](docs/StoreApi.md#place_order) | **POST** /store/order | Place an order for a pet +*UserApi* | [**create_user**](docs/UserApi.md#create_user) | **POST** /user | Create user +*UserApi* | [**create_users_with_array_input**](docs/UserApi.md#create_users_with_array_input) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**create_users_with_list_input**](docs/UserApi.md#create_users_with_list_input) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**delete_user**](docs/UserApi.md#delete_user) | **DELETE** /user/{username} | Delete user +*UserApi* | [**get_user_by_name**](docs/UserApi.md#get_user_by_name) | **GET** /user/{username} | Get user by user name +*UserApi* | [**login_user**](docs/UserApi.md#login_user) | **GET** /user/login | Logs user into the system +*UserApi* | [**logout_user**](docs/UserApi.md#logout_user) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**update_user**](docs/UserApi.md#update_user) | **PUT** /user/{username} | Updated user ## Documentation For Models diff --git a/samples/client/petstore/rust/reqwest/petstore-async/docs/PetApi.md b/samples/client/petstore/rust/reqwest/petstore-async/docs/PetApi.md index 4716e752b66..4833ebc6277 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/docs/PetApi.md +++ b/samples/client/petstore/rust/reqwest/petstore-async/docs/PetApi.md @@ -4,14 +4,14 @@ All URIs are relative to *http://petstore.swagger.io/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**add_pet**](PetApi.md#add_pet) | **post** /pet | Add a new pet to the store -[**delete_pet**](PetApi.md#delete_pet) | **delete** /pet/{petId} | Deletes a pet -[**find_pets_by_status**](PetApi.md#find_pets_by_status) | **get** /pet/findByStatus | Finds Pets by status -[**find_pets_by_tags**](PetApi.md#find_pets_by_tags) | **get** /pet/findByTags | Finds Pets by tags -[**get_pet_by_id**](PetApi.md#get_pet_by_id) | **get** /pet/{petId} | Find pet by ID -[**update_pet**](PetApi.md#update_pet) | **put** /pet | Update an existing pet -[**update_pet_with_form**](PetApi.md#update_pet_with_form) | **post** /pet/{petId} | Updates a pet in the store with form data -[**upload_file**](PetApi.md#upload_file) | **post** /pet/{petId}/uploadImage | uploads an image +[**add_pet**](PetApi.md#add_pet) | **POST** /pet | Add a new pet to the store +[**delete_pet**](PetApi.md#delete_pet) | **DELETE** /pet/{petId} | Deletes a pet +[**find_pets_by_status**](PetApi.md#find_pets_by_status) | **GET** /pet/findByStatus | Finds Pets by status +[**find_pets_by_tags**](PetApi.md#find_pets_by_tags) | **GET** /pet/findByTags | Finds Pets by tags +[**get_pet_by_id**](PetApi.md#get_pet_by_id) | **GET** /pet/{petId} | Find pet by ID +[**update_pet**](PetApi.md#update_pet) | **PUT** /pet | Update an existing pet +[**update_pet_with_form**](PetApi.md#update_pet_with_form) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**upload_file**](PetApi.md#upload_file) | **POST** /pet/{petId}/uploadImage | uploads an image diff --git a/samples/client/petstore/rust/reqwest/petstore-async/docs/StoreApi.md b/samples/client/petstore/rust/reqwest/petstore-async/docs/StoreApi.md index a310b538315..79c900d4ae4 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/docs/StoreApi.md +++ b/samples/client/petstore/rust/reqwest/petstore-async/docs/StoreApi.md @@ -4,10 +4,10 @@ All URIs are relative to *http://petstore.swagger.io/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**delete_order**](StoreApi.md#delete_order) | **delete** /store/order/{orderId} | Delete purchase order by ID -[**get_inventory**](StoreApi.md#get_inventory) | **get** /store/inventory | Returns pet inventories by status -[**get_order_by_id**](StoreApi.md#get_order_by_id) | **get** /store/order/{orderId} | Find purchase order by ID -[**place_order**](StoreApi.md#place_order) | **post** /store/order | Place an order for a pet +[**delete_order**](StoreApi.md#delete_order) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +[**get_inventory**](StoreApi.md#get_inventory) | **GET** /store/inventory | Returns pet inventories by status +[**get_order_by_id**](StoreApi.md#get_order_by_id) | **GET** /store/order/{orderId} | Find purchase order by ID +[**place_order**](StoreApi.md#place_order) | **POST** /store/order | Place an order for a pet diff --git a/samples/client/petstore/rust/reqwest/petstore-async/docs/UserApi.md b/samples/client/petstore/rust/reqwest/petstore-async/docs/UserApi.md index a6268f251a6..f8a2117f7f8 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/docs/UserApi.md +++ b/samples/client/petstore/rust/reqwest/petstore-async/docs/UserApi.md @@ -4,14 +4,14 @@ All URIs are relative to *http://petstore.swagger.io/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**create_user**](UserApi.md#create_user) | **post** /user | Create user -[**create_users_with_array_input**](UserApi.md#create_users_with_array_input) | **post** /user/createWithArray | Creates list of users with given input array -[**create_users_with_list_input**](UserApi.md#create_users_with_list_input) | **post** /user/createWithList | Creates list of users with given input array -[**delete_user**](UserApi.md#delete_user) | **delete** /user/{username} | Delete user -[**get_user_by_name**](UserApi.md#get_user_by_name) | **get** /user/{username} | Get user by user name -[**login_user**](UserApi.md#login_user) | **get** /user/login | Logs user into the system -[**logout_user**](UserApi.md#logout_user) | **get** /user/logout | Logs out current logged in user session -[**update_user**](UserApi.md#update_user) | **put** /user/{username} | Updated user +[**create_user**](UserApi.md#create_user) | **POST** /user | Create user +[**create_users_with_array_input**](UserApi.md#create_users_with_array_input) | **POST** /user/createWithArray | Creates list of users with given input array +[**create_users_with_list_input**](UserApi.md#create_users_with_list_input) | **POST** /user/createWithList | Creates list of users with given input array +[**delete_user**](UserApi.md#delete_user) | **DELETE** /user/{username} | Delete user +[**get_user_by_name**](UserApi.md#get_user_by_name) | **GET** /user/{username} | Get user by user name +[**login_user**](UserApi.md#login_user) | **GET** /user/login | Logs user into the system +[**logout_user**](UserApi.md#logout_user) | **GET** /user/logout | Logs out current logged in user session +[**update_user**](UserApi.md#update_user) | **PUT** /user/{username} | Updated user diff --git a/samples/client/petstore/rust/reqwest/petstore-async/src/apis/pet_api.rs b/samples/client/petstore/rust/reqwest/petstore-async/src/apis/pet_api.rs index e4162a33129..0aec41dc66d 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/src/apis/pet_api.rs +++ b/samples/client/petstore/rust/reqwest/petstore-async/src/apis/pet_api.rs @@ -215,7 +215,7 @@ pub async fn add_pet(configuration: &configuration::Configuration, params: AddPe let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet", configuration.base_path); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -251,7 +251,7 @@ pub async fn delete_pet(configuration: &configuration::Configuration, params: De let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet/{petId}", configuration.base_path, petId=pet_id); - let mut local_var_req_builder = local_var_client.delete(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -289,7 +289,7 @@ pub async fn find_pets_by_status(configuration: &configuration::Configuration, p let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet/findByStatus", configuration.base_path); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); local_var_req_builder = local_var_req_builder.query(&[("status", &status.into_iter().map(|p| p.to_string()).collect::>().join(",").to_string())]); if let Some(ref local_var_user_agent) = configuration.user_agent { @@ -325,7 +325,7 @@ pub async fn find_pets_by_tags(configuration: &configuration::Configuration, par let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet/findByTags", configuration.base_path); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); local_var_req_builder = local_var_req_builder.query(&[("tags", &tags.into_iter().map(|p| p.to_string()).collect::>().join(",").to_string())]); if let Some(ref local_var_user_agent) = configuration.user_agent { @@ -361,7 +361,7 @@ pub async fn get_pet_by_id(configuration: &configuration::Configuration, params: let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet/{petId}", configuration.base_path, petId=pet_id); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -400,7 +400,7 @@ pub async fn update_pet(configuration: &configuration::Configuration, params: Up let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet", configuration.base_path); - let mut local_var_req_builder = local_var_client.put(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -437,7 +437,7 @@ pub async fn update_pet_with_form(configuration: &configuration::Configuration, let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet/{petId}", configuration.base_path, petId=pet_id); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -481,7 +481,7 @@ pub async fn upload_file(configuration: &configuration::Configuration, params: U let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet/{petId}/uploadImage", configuration.base_path, petId=pet_id); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); diff --git a/samples/client/petstore/rust/reqwest/petstore-async/src/apis/store_api.rs b/samples/client/petstore/rust/reqwest/petstore-async/src/apis/store_api.rs index 21647faa062..c4c4ff3b207 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/src/apis/store_api.rs +++ b/samples/client/petstore/rust/reqwest/petstore-async/src/apis/store_api.rs @@ -110,7 +110,7 @@ pub async fn delete_order(configuration: &configuration::Configuration, params: let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/store/order/{orderId}", configuration.base_path, orderId=crate::apis::urlencode(order_id)); - let mut local_var_req_builder = local_var_client.delete(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -141,7 +141,7 @@ pub async fn get_inventory(configuration: &configuration::Configuration) -> Resu let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/store/inventory", configuration.base_path); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -181,7 +181,7 @@ pub async fn get_order_by_id(configuration: &configuration::Configuration, param let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/store/order/{orderId}", configuration.base_path, orderId=order_id); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -212,7 +212,7 @@ pub async fn place_order(configuration: &configuration::Configuration, params: P let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/store/order", configuration.base_path); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); diff --git a/samples/client/petstore/rust/reqwest/petstore-async/src/apis/user_api.rs b/samples/client/petstore/rust/reqwest/petstore-async/src/apis/user_api.rs index a791bfbc9bb..5bd62bf8553 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/src/apis/user_api.rs +++ b/samples/client/petstore/rust/reqwest/petstore-async/src/apis/user_api.rs @@ -203,7 +203,7 @@ pub async fn create_user(configuration: &configuration::Configuration, params: C let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user", configuration.base_path); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -235,7 +235,7 @@ pub async fn create_users_with_array_input(configuration: &configuration::Config let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/createWithArray", configuration.base_path); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -267,7 +267,7 @@ pub async fn create_users_with_list_input(configuration: &configuration::Configu let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/createWithList", configuration.base_path); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -300,7 +300,7 @@ pub async fn delete_user(configuration: &configuration::Configuration, params: D let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/{username}", configuration.base_path, username=crate::apis::urlencode(username)); - let mut local_var_req_builder = local_var_client.delete(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -331,7 +331,7 @@ pub async fn get_user_by_name(configuration: &configuration::Configuration, para let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/{username}", configuration.base_path, username=crate::apis::urlencode(username)); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -363,7 +363,7 @@ pub async fn login_user(configuration: &configuration::Configuration, params: Lo let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/login", configuration.base_path); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); local_var_req_builder = local_var_req_builder.query(&[("username", &username.to_string())]); local_var_req_builder = local_var_req_builder.query(&[("password", &password.to_string())]); @@ -395,7 +395,7 @@ pub async fn logout_user(configuration: &configuration::Configuration) -> Result let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/logout", configuration.base_path); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -428,7 +428,7 @@ pub async fn update_user(configuration: &configuration::Configuration, params: U let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/{username}", configuration.base_path, username=crate::apis::urlencode(username)); - let mut local_var_req_builder = local_var_client.put(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); diff --git a/samples/client/petstore/rust/reqwest/petstore/README.md b/samples/client/petstore/rust/reqwest/petstore/README.md index b83be74204c..57aa8f05026 100644 --- a/samples/client/petstore/rust/reqwest/petstore/README.md +++ b/samples/client/petstore/rust/reqwest/petstore/README.md @@ -24,26 +24,26 @@ All URIs are relative to *http://petstore.swagger.io/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*PetApi* | [**add_pet**](docs/PetApi.md#add_pet) | **post** /pet | Add a new pet to the store -*PetApi* | [**delete_pet**](docs/PetApi.md#delete_pet) | **delete** /pet/{petId} | Deletes a pet -*PetApi* | [**find_pets_by_status**](docs/PetApi.md#find_pets_by_status) | **get** /pet/findByStatus | Finds Pets by status -*PetApi* | [**find_pets_by_tags**](docs/PetApi.md#find_pets_by_tags) | **get** /pet/findByTags | Finds Pets by tags -*PetApi* | [**get_pet_by_id**](docs/PetApi.md#get_pet_by_id) | **get** /pet/{petId} | Find pet by ID -*PetApi* | [**update_pet**](docs/PetApi.md#update_pet) | **put** /pet | Update an existing pet -*PetApi* | [**update_pet_with_form**](docs/PetApi.md#update_pet_with_form) | **post** /pet/{petId} | Updates a pet in the store with form data -*PetApi* | [**upload_file**](docs/PetApi.md#upload_file) | **post** /pet/{petId}/uploadImage | uploads an image -*StoreApi* | [**delete_order**](docs/StoreApi.md#delete_order) | **delete** /store/order/{orderId} | Delete purchase order by ID -*StoreApi* | [**get_inventory**](docs/StoreApi.md#get_inventory) | **get** /store/inventory | Returns pet inventories by status -*StoreApi* | [**get_order_by_id**](docs/StoreApi.md#get_order_by_id) | **get** /store/order/{orderId} | Find purchase order by ID -*StoreApi* | [**place_order**](docs/StoreApi.md#place_order) | **post** /store/order | Place an order for a pet -*UserApi* | [**create_user**](docs/UserApi.md#create_user) | **post** /user | Create user -*UserApi* | [**create_users_with_array_input**](docs/UserApi.md#create_users_with_array_input) | **post** /user/createWithArray | Creates list of users with given input array -*UserApi* | [**create_users_with_list_input**](docs/UserApi.md#create_users_with_list_input) | **post** /user/createWithList | Creates list of users with given input array -*UserApi* | [**delete_user**](docs/UserApi.md#delete_user) | **delete** /user/{username} | Delete user -*UserApi* | [**get_user_by_name**](docs/UserApi.md#get_user_by_name) | **get** /user/{username} | Get user by user name -*UserApi* | [**login_user**](docs/UserApi.md#login_user) | **get** /user/login | Logs user into the system -*UserApi* | [**logout_user**](docs/UserApi.md#logout_user) | **get** /user/logout | Logs out current logged in user session -*UserApi* | [**update_user**](docs/UserApi.md#update_user) | **put** /user/{username} | Updated user +*PetApi* | [**add_pet**](docs/PetApi.md#add_pet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**delete_pet**](docs/PetApi.md#delete_pet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**find_pets_by_status**](docs/PetApi.md#find_pets_by_status) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**find_pets_by_tags**](docs/PetApi.md#find_pets_by_tags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**get_pet_by_id**](docs/PetApi.md#get_pet_by_id) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**update_pet**](docs/PetApi.md#update_pet) | **PUT** /pet | Update an existing pet +*PetApi* | [**update_pet_with_form**](docs/PetApi.md#update_pet_with_form) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**upload_file**](docs/PetApi.md#upload_file) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**delete_order**](docs/StoreApi.md#delete_order) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**get_inventory**](docs/StoreApi.md#get_inventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**get_order_by_id**](docs/StoreApi.md#get_order_by_id) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**place_order**](docs/StoreApi.md#place_order) | **POST** /store/order | Place an order for a pet +*UserApi* | [**create_user**](docs/UserApi.md#create_user) | **POST** /user | Create user +*UserApi* | [**create_users_with_array_input**](docs/UserApi.md#create_users_with_array_input) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**create_users_with_list_input**](docs/UserApi.md#create_users_with_list_input) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**delete_user**](docs/UserApi.md#delete_user) | **DELETE** /user/{username} | Delete user +*UserApi* | [**get_user_by_name**](docs/UserApi.md#get_user_by_name) | **GET** /user/{username} | Get user by user name +*UserApi* | [**login_user**](docs/UserApi.md#login_user) | **GET** /user/login | Logs user into the system +*UserApi* | [**logout_user**](docs/UserApi.md#logout_user) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**update_user**](docs/UserApi.md#update_user) | **PUT** /user/{username} | Updated user ## Documentation For Models diff --git a/samples/client/petstore/rust/reqwest/petstore/docs/PetApi.md b/samples/client/petstore/rust/reqwest/petstore/docs/PetApi.md index 4716e752b66..4833ebc6277 100644 --- a/samples/client/petstore/rust/reqwest/petstore/docs/PetApi.md +++ b/samples/client/petstore/rust/reqwest/petstore/docs/PetApi.md @@ -4,14 +4,14 @@ All URIs are relative to *http://petstore.swagger.io/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**add_pet**](PetApi.md#add_pet) | **post** /pet | Add a new pet to the store -[**delete_pet**](PetApi.md#delete_pet) | **delete** /pet/{petId} | Deletes a pet -[**find_pets_by_status**](PetApi.md#find_pets_by_status) | **get** /pet/findByStatus | Finds Pets by status -[**find_pets_by_tags**](PetApi.md#find_pets_by_tags) | **get** /pet/findByTags | Finds Pets by tags -[**get_pet_by_id**](PetApi.md#get_pet_by_id) | **get** /pet/{petId} | Find pet by ID -[**update_pet**](PetApi.md#update_pet) | **put** /pet | Update an existing pet -[**update_pet_with_form**](PetApi.md#update_pet_with_form) | **post** /pet/{petId} | Updates a pet in the store with form data -[**upload_file**](PetApi.md#upload_file) | **post** /pet/{petId}/uploadImage | uploads an image +[**add_pet**](PetApi.md#add_pet) | **POST** /pet | Add a new pet to the store +[**delete_pet**](PetApi.md#delete_pet) | **DELETE** /pet/{petId} | Deletes a pet +[**find_pets_by_status**](PetApi.md#find_pets_by_status) | **GET** /pet/findByStatus | Finds Pets by status +[**find_pets_by_tags**](PetApi.md#find_pets_by_tags) | **GET** /pet/findByTags | Finds Pets by tags +[**get_pet_by_id**](PetApi.md#get_pet_by_id) | **GET** /pet/{petId} | Find pet by ID +[**update_pet**](PetApi.md#update_pet) | **PUT** /pet | Update an existing pet +[**update_pet_with_form**](PetApi.md#update_pet_with_form) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**upload_file**](PetApi.md#upload_file) | **POST** /pet/{petId}/uploadImage | uploads an image diff --git a/samples/client/petstore/rust/reqwest/petstore/docs/StoreApi.md b/samples/client/petstore/rust/reqwest/petstore/docs/StoreApi.md index a310b538315..79c900d4ae4 100644 --- a/samples/client/petstore/rust/reqwest/petstore/docs/StoreApi.md +++ b/samples/client/petstore/rust/reqwest/petstore/docs/StoreApi.md @@ -4,10 +4,10 @@ All URIs are relative to *http://petstore.swagger.io/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**delete_order**](StoreApi.md#delete_order) | **delete** /store/order/{orderId} | Delete purchase order by ID -[**get_inventory**](StoreApi.md#get_inventory) | **get** /store/inventory | Returns pet inventories by status -[**get_order_by_id**](StoreApi.md#get_order_by_id) | **get** /store/order/{orderId} | Find purchase order by ID -[**place_order**](StoreApi.md#place_order) | **post** /store/order | Place an order for a pet +[**delete_order**](StoreApi.md#delete_order) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +[**get_inventory**](StoreApi.md#get_inventory) | **GET** /store/inventory | Returns pet inventories by status +[**get_order_by_id**](StoreApi.md#get_order_by_id) | **GET** /store/order/{orderId} | Find purchase order by ID +[**place_order**](StoreApi.md#place_order) | **POST** /store/order | Place an order for a pet diff --git a/samples/client/petstore/rust/reqwest/petstore/docs/UserApi.md b/samples/client/petstore/rust/reqwest/petstore/docs/UserApi.md index a6268f251a6..f8a2117f7f8 100644 --- a/samples/client/petstore/rust/reqwest/petstore/docs/UserApi.md +++ b/samples/client/petstore/rust/reqwest/petstore/docs/UserApi.md @@ -4,14 +4,14 @@ All URIs are relative to *http://petstore.swagger.io/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**create_user**](UserApi.md#create_user) | **post** /user | Create user -[**create_users_with_array_input**](UserApi.md#create_users_with_array_input) | **post** /user/createWithArray | Creates list of users with given input array -[**create_users_with_list_input**](UserApi.md#create_users_with_list_input) | **post** /user/createWithList | Creates list of users with given input array -[**delete_user**](UserApi.md#delete_user) | **delete** /user/{username} | Delete user -[**get_user_by_name**](UserApi.md#get_user_by_name) | **get** /user/{username} | Get user by user name -[**login_user**](UserApi.md#login_user) | **get** /user/login | Logs user into the system -[**logout_user**](UserApi.md#logout_user) | **get** /user/logout | Logs out current logged in user session -[**update_user**](UserApi.md#update_user) | **put** /user/{username} | Updated user +[**create_user**](UserApi.md#create_user) | **POST** /user | Create user +[**create_users_with_array_input**](UserApi.md#create_users_with_array_input) | **POST** /user/createWithArray | Creates list of users with given input array +[**create_users_with_list_input**](UserApi.md#create_users_with_list_input) | **POST** /user/createWithList | Creates list of users with given input array +[**delete_user**](UserApi.md#delete_user) | **DELETE** /user/{username} | Delete user +[**get_user_by_name**](UserApi.md#get_user_by_name) | **GET** /user/{username} | Get user by user name +[**login_user**](UserApi.md#login_user) | **GET** /user/login | Logs user into the system +[**logout_user**](UserApi.md#logout_user) | **GET** /user/logout | Logs out current logged in user session +[**update_user**](UserApi.md#update_user) | **PUT** /user/{username} | Updated user diff --git a/samples/client/petstore/rust/reqwest/petstore/src/apis/pet_api.rs b/samples/client/petstore/rust/reqwest/petstore/src/apis/pet_api.rs index 47cf47f1d59..dd7fc9ff0d4 100644 --- a/samples/client/petstore/rust/reqwest/petstore/src/apis/pet_api.rs +++ b/samples/client/petstore/rust/reqwest/petstore/src/apis/pet_api.rs @@ -87,7 +87,7 @@ pub fn add_pet(configuration: &configuration::Configuration, body: crate::models let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet", configuration.base_path); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -117,7 +117,7 @@ pub fn delete_pet(configuration: &configuration::Configuration, pet_id: i64, api let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet/{petId}", configuration.base_path, petId=pet_id); - let mut local_var_req_builder = local_var_client.delete(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -150,7 +150,7 @@ pub fn find_pets_by_status(configuration: &configuration::Configuration, status: let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet/findByStatus", configuration.base_path); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); local_var_req_builder = local_var_req_builder.query(&[("status", &status.into_iter().map(|p| p.to_string()).collect::>().join(",").to_string())]); if let Some(ref local_var_user_agent) = configuration.user_agent { @@ -181,7 +181,7 @@ pub fn find_pets_by_tags(configuration: &configuration::Configuration, tags: Vec let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet/findByTags", configuration.base_path); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); local_var_req_builder = local_var_req_builder.query(&[("tags", &tags.into_iter().map(|p| p.to_string()).collect::>().join(",").to_string())]); if let Some(ref local_var_user_agent) = configuration.user_agent { @@ -212,7 +212,7 @@ pub fn get_pet_by_id(configuration: &configuration::Configuration, pet_id: i64) let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet/{petId}", configuration.base_path, petId=pet_id); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -246,7 +246,7 @@ pub fn update_pet(configuration: &configuration::Configuration, body: crate::mod let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet", configuration.base_path); - let mut local_var_req_builder = local_var_client.put(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -276,7 +276,7 @@ pub fn update_pet_with_form(configuration: &configuration::Configuration, pet_id let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet/{petId}", configuration.base_path, petId=pet_id); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -313,7 +313,7 @@ pub fn upload_file(configuration: &configuration::Configuration, pet_id: i64, ad let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/pet/{petId}/uploadImage", configuration.base_path, petId=pet_id); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); diff --git a/samples/client/petstore/rust/reqwest/petstore/src/apis/store_api.rs b/samples/client/petstore/rust/reqwest/petstore/src/apis/store_api.rs index 898599f9b2f..f4fd247f8ca 100644 --- a/samples/client/petstore/rust/reqwest/petstore/src/apis/store_api.rs +++ b/samples/client/petstore/rust/reqwest/petstore/src/apis/store_api.rs @@ -55,7 +55,7 @@ pub fn delete_order(configuration: &configuration::Configuration, order_id: &str let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/store/order/{orderId}", configuration.base_path, orderId=crate::apis::urlencode(order_id)); - let mut local_var_req_builder = local_var_client.delete(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -82,7 +82,7 @@ pub fn get_inventory(configuration: &configuration::Configuration, ) -> Result<: let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/store/inventory", configuration.base_path); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -117,7 +117,7 @@ pub fn get_order_by_id(configuration: &configuration::Configuration, order_id: i let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/store/order/{orderId}", configuration.base_path, orderId=order_id); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -143,7 +143,7 @@ pub fn place_order(configuration: &configuration::Configuration, body: crate::mo let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/store/order", configuration.base_path); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); diff --git a/samples/client/petstore/rust/reqwest/petstore/src/apis/user_api.rs b/samples/client/petstore/rust/reqwest/petstore/src/apis/user_api.rs index 97f0f3c4e14..623b7ce22ff 100644 --- a/samples/client/petstore/rust/reqwest/petstore/src/apis/user_api.rs +++ b/samples/client/petstore/rust/reqwest/petstore/src/apis/user_api.rs @@ -89,7 +89,7 @@ pub fn create_user(configuration: &configuration::Configuration, body: crate::mo let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user", configuration.base_path); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -116,7 +116,7 @@ pub fn create_users_with_array_input(configuration: &configuration::Configuratio let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/createWithArray", configuration.base_path); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -143,7 +143,7 @@ pub fn create_users_with_list_input(configuration: &configuration::Configuration let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/createWithList", configuration.base_path); - let mut local_var_req_builder = local_var_client.post(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -171,7 +171,7 @@ pub fn delete_user(configuration: &configuration::Configuration, username: &str) let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/{username}", configuration.base_path, username=crate::apis::urlencode(username)); - let mut local_var_req_builder = local_var_client.delete(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -197,7 +197,7 @@ pub fn get_user_by_name(configuration: &configuration::Configuration, username: let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/{username}", configuration.base_path, username=crate::apis::urlencode(username)); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -223,7 +223,7 @@ pub fn login_user(configuration: &configuration::Configuration, username: &str, let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/login", configuration.base_path); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); local_var_req_builder = local_var_req_builder.query(&[("username", &username.to_string())]); local_var_req_builder = local_var_req_builder.query(&[("password", &password.to_string())]); @@ -251,7 +251,7 @@ pub fn logout_user(configuration: &configuration::Configuration, ) -> Result<(), let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/logout", configuration.base_path); - let mut local_var_req_builder = local_var_client.get(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); @@ -278,7 +278,7 @@ pub fn update_user(configuration: &configuration::Configuration, username: &str, let local_var_client = &configuration.client; let local_var_uri_str = format!("{}/user/{username}", configuration.base_path, username=crate::apis::urlencode(username)); - let mut local_var_req_builder = local_var_client.put(local_var_uri_str.as_str()); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str()); if let Some(ref local_var_user_agent) = configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); From 75fc1383bc246d0326075a188c10f75cf847c0b2 Mon Sep 17 00:00:00 2001 From: Tobias Tiemerding Date: Thu, 17 Jun 2021 07:44:12 +0200 Subject: [PATCH 139/192] Fix typo (Unsuported -> Unsupported) (#9790) --- .../libraries/alamofire/AlamofireImplementations.mustache | 6 +++--- .../libraries/urlsession/URLSessionImplementations.mustache | 4 ++-- .../Classes/OpenAPIs/AlamofireImplementations.swift | 6 +++--- .../Classes/OpenAPIs/URLSessionImplementations.swift | 4 ++-- .../Classes/OpenAPIs/URLSessionImplementations.swift | 4 ++-- .../Classes/OpenAPIs/URLSessionImplementations.swift | 4 ++-- .../Classes/OpenAPIs/URLSessionImplementations.swift | 4 ++-- .../Classes/OpenAPIs/URLSessionImplementations.swift | 4 ++-- .../Classes/OpenAPIs/URLSessionImplementations.swift | 4 ++-- .../Classes/OpenAPIs/URLSessionImplementations.swift | 4 ++-- .../Classes/OpenAPIs/URLSessionImplementations.swift | 4 ++-- .../Classes/OpenAPIs/URLSessionImplementations.swift | 4 ++-- .../Classes/OpenAPIs/URLSessionImplementations.swift | 4 ++-- .../Sources/PetstoreClient/URLSessionImplementations.swift | 4 ++-- .../Classes/OpenAPIs/URLSessionImplementations.swift | 4 ++-- 15 files changed, 32 insertions(+), 32 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache b/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache index b336fa9a7a6..4d53fe6680f 100644 --- a/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache @@ -40,7 +40,7 @@ private var managerStore = SynchronizedDictionary URLRequest? { guard let xMethod = Alamofire.HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -83,7 +83,7 @@ private var managerStore = SynchronizedDictionary() urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ private var urlSessionStore = SynchronizedDictionary() } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift index c5bab793d7b..aa8dcad9b65 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift @@ -40,7 +40,7 @@ open class AlamofireRequestBuilder: RequestBuilder { */ open func createURLRequest() -> URLRequest? { guard let xMethod = Alamofire.HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -83,7 +83,7 @@ open class AlamofireRequestBuilder: RequestBuilder { managerStore[managerId] = manager guard let xMethod = Alamofire.HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding? @@ -133,7 +133,7 @@ open class AlamofireRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = URLEncoding(destination: .httpBody) } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 774c0427eaa..41959190a26 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -100,7 +100,7 @@ open class URLSessionRequestBuilder: RequestBuilder { urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 774c0427eaa..41959190a26 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -100,7 +100,7 @@ open class URLSessionRequestBuilder: RequestBuilder { urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 774c0427eaa..41959190a26 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -100,7 +100,7 @@ open class URLSessionRequestBuilder: RequestBuilder { urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 05391a8fe6b..71361b388bb 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -100,7 +100,7 @@ internal class URLSessionRequestBuilder: RequestBuilder { urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ internal class URLSessionRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 774c0427eaa..41959190a26 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -100,7 +100,7 @@ open class URLSessionRequestBuilder: RequestBuilder { urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 774c0427eaa..41959190a26 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -100,7 +100,7 @@ open class URLSessionRequestBuilder: RequestBuilder { urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 774c0427eaa..41959190a26 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -100,7 +100,7 @@ open class URLSessionRequestBuilder: RequestBuilder { urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 774c0427eaa..41959190a26 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -100,7 +100,7 @@ open class URLSessionRequestBuilder: RequestBuilder { urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 774c0427eaa..41959190a26 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -100,7 +100,7 @@ open class URLSessionRequestBuilder: RequestBuilder { urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 774c0427eaa..41959190a26 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -100,7 +100,7 @@ open class URLSessionRequestBuilder: RequestBuilder { urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift index 774c0427eaa..41959190a26 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift @@ -100,7 +100,7 @@ open class URLSessionRequestBuilder: RequestBuilder { urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 774c0427eaa..41959190a26 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -100,7 +100,7 @@ open class URLSessionRequestBuilder: RequestBuilder { urlSessionStore[urlSessionId] = urlSession guard let xMethod = HTTPMethod(rawValue: method) else { - fatalError("Unsuported Http method - \(method)") + fatalError("Unsupported Http method - \(method)") } let encoding: ParameterEncoding @@ -119,7 +119,7 @@ open class URLSessionRequestBuilder: RequestBuilder { } else if contentType == "application/x-www-form-urlencoded" { encoding = FormURLEncoding() } else { - fatalError("Unsuported Media Type - \(contentType)") + fatalError("Unsupported Media Type - \(contentType)") } } From 8a310640280fbd114a5ab3843d758b6a462495f2 Mon Sep 17 00:00:00 2001 From: shartte Date: Fri, 18 Jun 2021 09:05:55 +0200 Subject: [PATCH 140/192] [Java] Remove JAX-RS dependency from generated java-native client. (#8320) (#9585) --- .../native/AbstractOpenApiSchema.mustache | 3 +-- .../Java/libraries/native/JSON.mustache | 21 +++++++------------ .../libraries/native/anyof_model.mustache | 10 +++------ .../libraries/native/build.gradle.mustache | 13 ++++++++++-- .../libraries/native/oneof_model.mustache | 10 +++------ .../Java/libraries/native/pom.mustache | 8 ------- .../petstore/java/native-async/build.gradle | 13 ++++++++++-- .../client/petstore/java/native-async/pom.xml | 8 ------- .../java/org/openapitools/client/JSON.java | 21 +++++++------------ .../client/model/AbstractOpenApiSchema.java | 3 +-- .../client/petstore/java/native/build.gradle | 13 ++++++++++-- samples/client/petstore/java/native/pom.xml | 8 ------- .../java/org/openapitools/client/JSON.java | 21 +++++++------------ .../client/model/AbstractOpenApiSchema.java | 3 +-- .../client/petstore/java/native/build.gradle | 13 ++++++++++-- .../client/petstore/java/native/pom.xml | 8 ------- .../java/org/openapitools/client/JSON.java | 21 +++++++------------ .../client/model/AbstractOpenApiSchema.java | 3 +-- .../org/openapitools/client/model/Fruit.java | 13 ++++-------- .../openapitools/client/model/FruitReq.java | 13 ++++-------- .../openapitools/client/model/GmFruit.java | 13 ++++-------- .../org/openapitools/client/model/Mammal.java | 16 +++++--------- .../client/model/NullableShape.java | 13 ++++-------- .../org/openapitools/client/model/Pig.java | 13 ++++-------- .../client/model/Quadrilateral.java | 13 ++++-------- .../org/openapitools/client/model/Shape.java | 13 ++++-------- .../client/model/ShapeOrNull.java | 13 ++++-------- .../openapitools/client/model/Triangle.java | 16 +++++--------- 28 files changed, 124 insertions(+), 212 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/AbstractOpenApiSchema.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/AbstractOpenApiSchema.mustache index d7d9ee9e740..11429c69b46 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/AbstractOpenApiSchema.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/AbstractOpenApiSchema.mustache @@ -6,7 +6,6 @@ import {{invokerPackage}}.ApiException; import java.util.Objects; import java.lang.reflect.Type; import java.util.Map; -import javax.ws.rs.core.GenericType; import com.fasterxml.jackson.annotation.JsonValue; @@ -35,7 +34,7 @@ public abstract class AbstractOpenApiSchema { * * @return an instance of the actual schema/object */ - public abstract Map getSchemas(); + public abstract Map> getSchemas(); /** * Get the actual instance diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/JSON.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/JSON.mustache index 16aa21e1403..961f23b4870 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/JSON.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/JSON.mustache @@ -26,11 +26,9 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.ext.ContextResolver; {{>generatedAnnotation}} -public class JSON implements ContextResolver { +public class JSON { private ObjectMapper mapper; public JSON() { @@ -70,11 +68,6 @@ public class JSON implements ContextResolver { mapper.setDateFormat(dateFormat); } - @Override - public ObjectMapper getContext(Class type) { - return mapper; - } - /** * Get the object mapper * @@ -207,10 +200,10 @@ public class JSON implements ContextResolver { visitedClasses.add(modelClass); // Traverse the oneOf/anyOf composed schemas. - Map descendants = modelDescendants.get(modelClass); + Map> descendants = modelDescendants.get(modelClass); if (descendants != null) { - for (GenericType childType : descendants.values()) { - if (isInstanceOf(childType.getRawType(), inst, visitedClasses)) { + for (Class childType : descendants.values()) { + if (isInstanceOf(childType, inst, visitedClasses)) { return true; } } @@ -221,12 +214,12 @@ public class JSON implements ContextResolver { /** * A map of discriminators for all model classes. */ - private static Map, ClassDiscriminatorMapping> modelDiscriminators = new HashMap, ClassDiscriminatorMapping>(); + private static Map, ClassDiscriminatorMapping> modelDiscriminators = new HashMap<>(); /** * A map of oneOf/anyOf descendants for each model class. */ - private static Map, Map> modelDescendants = new HashMap, Map>(); + private static Map, Map>> modelDescendants = new HashMap<>(); /** * Register a model class discriminator. @@ -246,7 +239,7 @@ public class JSON implements ContextResolver { * @param modelClass the model class * @param descendants a map of oneOf/anyOf descendants. */ - public static void registerDescendants(Class modelClass, Map descendants) { + public static void registerDescendants(Class modelClass, Map> descendants) { modelDescendants.put(modelClass, descendants); } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/anyof_model.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/anyof_model.mustache index 456f8309c09..17568b34dc0 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/anyof_model.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/anyof_model.mustache @@ -1,5 +1,3 @@ -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -10,7 +8,6 @@ import java.util.HashSet; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; @@ -99,7 +96,7 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im } // store a list of schema names defined in anyOf - public static final Map schemas = new HashMap(); + public static final Map> schemas = new HashMap>(); public {{classname}}() { super("anyOf", {{#isNullable}}Boolean.TRUE{{/isNullable}}{{^isNullable}}Boolean.FALSE{{/isNullable}}); @@ -128,8 +125,7 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im {{/anyOf}} static { {{#anyOf}} - schemas.put("{{{.}}}", new GenericType<{{{.}}}>() { - }); + schemas.put("{{{.}}}", {{{.}}}.class); {{/anyOf}} JSON.registerDescendants({{classname}}.class, Collections.unmodifiableMap(schemas)); {{#discriminator}} @@ -144,7 +140,7 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im } @Override - public Map getSchemas() { + public Map> getSchemas() { return {{classname}}.schemas; } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/build.gradle.mustache index e1967261a11..36504882370 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/build.gradle.mustache @@ -22,6 +22,17 @@ apply plugin: 'maven' sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 +// Some text from the schema is copy pasted into the source files as UTF-8 +// but the default still seems to be to use platform encoding +tasks.withType(JavaCompile) { + configure(options) { + options.encoding = 'UTF-8' + } +} +javadoc { + options.encoding = 'UTF-8' +} + install { repositories.mavenInstaller { pom.artifactId = '{{artifactId}}' @@ -53,7 +64,6 @@ ext { swagger_annotations_version = "1.5.22" jackson_version = "2.10.4" junit_version = "4.13.1" - ws_rs_version = "2.1.1" {{#threetenbp}} threetenbp_version = "2.9.10" {{/threetenbp}} @@ -68,7 +78,6 @@ dependencies { implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version" implementation "org.openapitools:jackson-databind-nullable:0.2.1" implementation 'javax.annotation:javax.annotation-api:1.3.2' - implementation "javax.ws.rs:javax.ws.rs-api:$ws_rs_version" {{#threetenbp}} implementation "com.github.joschi.jackson:jackson-datatype-threetenbp:$threetenbp_version" {{/threetenbp}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/oneof_model.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/oneof_model.mustache index f2345ab33be..ff1118ebdba 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/oneof_model.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/oneof_model.mustache @@ -1,5 +1,3 @@ -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -11,7 +9,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; @@ -132,7 +129,7 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im } // store a list of schema names defined in oneOf - public static final Map schemas = new HashMap(); + public static final Map> schemas = new HashMap<>(); public {{classname}}() { super("oneOf", {{#isNullable}}Boolean.TRUE{{/isNullable}}{{^isNullable}}Boolean.FALSE{{/isNullable}}); @@ -161,8 +158,7 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im {{/oneOf}} static { {{#oneOf}} - schemas.put("{{{.}}}", new GenericType<{{{.}}}>() { - }); + schemas.put("{{{.}}}", {{{.}}}.class); {{/oneOf}} JSON.registerDescendants({{classname}}.class, Collections.unmodifiableMap(schemas)); {{#discriminator}} @@ -177,7 +173,7 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im } @Override - public Map getSchemas() { + public Map> getSchemas() { return {{classname}}.schemas; } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/pom.mustache index a6445406227..4a90d80c3dc 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/pom.mustache @@ -214,13 +214,6 @@ provided
    - - - javax.ws.rs - javax.ws.rs-api - ${javax-ws-rs-api-version} - - junit @@ -238,7 +231,6 @@ 2.10.4 0.2.1 1.3.2 - 2.1.1 {{#threetenbp}} 2.9.10 {{/threetenbp}} diff --git a/samples/client/petstore/java/native-async/build.gradle b/samples/client/petstore/java/native-async/build.gradle index 80b7de54bf7..9e037855cba 100644 --- a/samples/client/petstore/java/native-async/build.gradle +++ b/samples/client/petstore/java/native-async/build.gradle @@ -22,6 +22,17 @@ apply plugin: 'maven' sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 +// Some text from the schema is copy pasted into the source files as UTF-8 +// but the default still seems to be to use platform encoding +tasks.withType(JavaCompile) { + configure(options) { + options.encoding = 'UTF-8' + } +} +javadoc { + options.encoding = 'UTF-8' +} + install { repositories.mavenInstaller { pom.artifactId = 'petstore-native' @@ -53,7 +64,6 @@ ext { swagger_annotations_version = "1.5.22" jackson_version = "2.10.4" junit_version = "4.13.1" - ws_rs_version = "2.1.1" } dependencies { @@ -65,6 +75,5 @@ dependencies { implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version" implementation "org.openapitools:jackson-databind-nullable:0.2.1" implementation 'javax.annotation:javax.annotation-api:1.3.2' - implementation "javax.ws.rs:javax.ws.rs-api:$ws_rs_version" testImplementation "junit:junit:$junit_version" } diff --git a/samples/client/petstore/java/native-async/pom.xml b/samples/client/petstore/java/native-async/pom.xml index b49e8a71559..de6911c94fd 100644 --- a/samples/client/petstore/java/native-async/pom.xml +++ b/samples/client/petstore/java/native-async/pom.xml @@ -200,13 +200,6 @@ provided - - - javax.ws.rs - javax.ws.rs-api - ${javax-ws-rs-api-version} - - junit @@ -224,7 +217,6 @@ 2.10.4 0.2.1 1.3.2 - 2.1.1 4.13.1 diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/JSON.java index 519cd35cc6a..04d3f7c1799 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/JSON.java @@ -11,11 +11,9 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.ext.ContextResolver; @javax.annotation.processing.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class JSON implements ContextResolver { +public class JSON { private ObjectMapper mapper; public JSON() { @@ -41,11 +39,6 @@ public class JSON implements ContextResolver { mapper.setDateFormat(dateFormat); } - @Override - public ObjectMapper getContext(Class type) { - return mapper; - } - /** * Get the object mapper * @@ -178,10 +171,10 @@ public class JSON implements ContextResolver { visitedClasses.add(modelClass); // Traverse the oneOf/anyOf composed schemas. - Map descendants = modelDescendants.get(modelClass); + Map> descendants = modelDescendants.get(modelClass); if (descendants != null) { - for (GenericType childType : descendants.values()) { - if (isInstanceOf(childType.getRawType(), inst, visitedClasses)) { + for (Class childType : descendants.values()) { + if (isInstanceOf(childType, inst, visitedClasses)) { return true; } } @@ -192,12 +185,12 @@ public class JSON implements ContextResolver { /** * A map of discriminators for all model classes. */ - private static Map, ClassDiscriminatorMapping> modelDiscriminators = new HashMap, ClassDiscriminatorMapping>(); + private static Map, ClassDiscriminatorMapping> modelDiscriminators = new HashMap<>(); /** * A map of oneOf/anyOf descendants for each model class. */ - private static Map, Map> modelDescendants = new HashMap, Map>(); + private static Map, Map>> modelDescendants = new HashMap<>(); /** * Register a model class discriminator. @@ -217,7 +210,7 @@ public class JSON implements ContextResolver { * @param modelClass the model class * @param descendants a map of oneOf/anyOf descendants. */ - public static void registerDescendants(Class modelClass, Map descendants) { + public static void registerDescendants(Class modelClass, Map> descendants) { modelDescendants.put(modelClass, descendants); } diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java index 1736eb73c5a..882bf6fc3af 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java @@ -17,7 +17,6 @@ import org.openapitools.client.ApiException; import java.util.Objects; import java.lang.reflect.Type; import java.util.Map; -import javax.ws.rs.core.GenericType; import com.fasterxml.jackson.annotation.JsonValue; @@ -46,7 +45,7 @@ public abstract class AbstractOpenApiSchema { * * @return an instance of the actual schema/object */ - public abstract Map getSchemas(); + public abstract Map> getSchemas(); /** * Get the actual instance diff --git a/samples/client/petstore/java/native/build.gradle b/samples/client/petstore/java/native/build.gradle index 80b7de54bf7..9e037855cba 100644 --- a/samples/client/petstore/java/native/build.gradle +++ b/samples/client/petstore/java/native/build.gradle @@ -22,6 +22,17 @@ apply plugin: 'maven' sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 +// Some text from the schema is copy pasted into the source files as UTF-8 +// but the default still seems to be to use platform encoding +tasks.withType(JavaCompile) { + configure(options) { + options.encoding = 'UTF-8' + } +} +javadoc { + options.encoding = 'UTF-8' +} + install { repositories.mavenInstaller { pom.artifactId = 'petstore-native' @@ -53,7 +64,6 @@ ext { swagger_annotations_version = "1.5.22" jackson_version = "2.10.4" junit_version = "4.13.1" - ws_rs_version = "2.1.1" } dependencies { @@ -65,6 +75,5 @@ dependencies { implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version" implementation "org.openapitools:jackson-databind-nullable:0.2.1" implementation 'javax.annotation:javax.annotation-api:1.3.2' - implementation "javax.ws.rs:javax.ws.rs-api:$ws_rs_version" testImplementation "junit:junit:$junit_version" } diff --git a/samples/client/petstore/java/native/pom.xml b/samples/client/petstore/java/native/pom.xml index b49e8a71559..de6911c94fd 100644 --- a/samples/client/petstore/java/native/pom.xml +++ b/samples/client/petstore/java/native/pom.xml @@ -200,13 +200,6 @@ provided - - - javax.ws.rs - javax.ws.rs-api - ${javax-ws-rs-api-version} - - junit @@ -224,7 +217,6 @@ 2.10.4 0.2.1 1.3.2 - 2.1.1 4.13.1 diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/JSON.java index 519cd35cc6a..04d3f7c1799 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/JSON.java @@ -11,11 +11,9 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.ext.ContextResolver; @javax.annotation.processing.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class JSON implements ContextResolver { +public class JSON { private ObjectMapper mapper; public JSON() { @@ -41,11 +39,6 @@ public class JSON implements ContextResolver { mapper.setDateFormat(dateFormat); } - @Override - public ObjectMapper getContext(Class type) { - return mapper; - } - /** * Get the object mapper * @@ -178,10 +171,10 @@ public class JSON implements ContextResolver { visitedClasses.add(modelClass); // Traverse the oneOf/anyOf composed schemas. - Map descendants = modelDescendants.get(modelClass); + Map> descendants = modelDescendants.get(modelClass); if (descendants != null) { - for (GenericType childType : descendants.values()) { - if (isInstanceOf(childType.getRawType(), inst, visitedClasses)) { + for (Class childType : descendants.values()) { + if (isInstanceOf(childType, inst, visitedClasses)) { return true; } } @@ -192,12 +185,12 @@ public class JSON implements ContextResolver { /** * A map of discriminators for all model classes. */ - private static Map, ClassDiscriminatorMapping> modelDiscriminators = new HashMap, ClassDiscriminatorMapping>(); + private static Map, ClassDiscriminatorMapping> modelDiscriminators = new HashMap<>(); /** * A map of oneOf/anyOf descendants for each model class. */ - private static Map, Map> modelDescendants = new HashMap, Map>(); + private static Map, Map>> modelDescendants = new HashMap<>(); /** * Register a model class discriminator. @@ -217,7 +210,7 @@ public class JSON implements ContextResolver { * @param modelClass the model class * @param descendants a map of oneOf/anyOf descendants. */ - public static void registerDescendants(Class modelClass, Map descendants) { + public static void registerDescendants(Class modelClass, Map> descendants) { modelDescendants.put(modelClass, descendants); } diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java index 1736eb73c5a..882bf6fc3af 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java @@ -17,7 +17,6 @@ import org.openapitools.client.ApiException; import java.util.Objects; import java.lang.reflect.Type; import java.util.Map; -import javax.ws.rs.core.GenericType; import com.fasterxml.jackson.annotation.JsonValue; @@ -46,7 +45,7 @@ public abstract class AbstractOpenApiSchema { * * @return an instance of the actual schema/object */ - public abstract Map getSchemas(); + public abstract Map> getSchemas(); /** * Get the actual instance diff --git a/samples/openapi3/client/petstore/java/native/build.gradle b/samples/openapi3/client/petstore/java/native/build.gradle index ee4c7276cf8..2979e384fef 100644 --- a/samples/openapi3/client/petstore/java/native/build.gradle +++ b/samples/openapi3/client/petstore/java/native/build.gradle @@ -22,6 +22,17 @@ apply plugin: 'maven' sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 +// Some text from the schema is copy pasted into the source files as UTF-8 +// but the default still seems to be to use platform encoding +tasks.withType(JavaCompile) { + configure(options) { + options.encoding = 'UTF-8' + } +} +javadoc { + options.encoding = 'UTF-8' +} + install { repositories.mavenInstaller { pom.artifactId = 'petstore-openapi3-native' @@ -53,7 +64,6 @@ ext { swagger_annotations_version = "1.5.22" jackson_version = "2.10.4" junit_version = "4.13.1" - ws_rs_version = "2.1.1" } dependencies { @@ -65,6 +75,5 @@ dependencies { implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version" implementation "org.openapitools:jackson-databind-nullable:0.2.1" implementation 'javax.annotation:javax.annotation-api:1.3.2' - implementation "javax.ws.rs:javax.ws.rs-api:$ws_rs_version" testImplementation "junit:junit:$junit_version" } diff --git a/samples/openapi3/client/petstore/java/native/pom.xml b/samples/openapi3/client/petstore/java/native/pom.xml index ed19e62e9ef..58e5bf25f54 100644 --- a/samples/openapi3/client/petstore/java/native/pom.xml +++ b/samples/openapi3/client/petstore/java/native/pom.xml @@ -200,13 +200,6 @@ provided - - - javax.ws.rs - javax.ws.rs-api - ${javax-ws-rs-api-version} - - junit @@ -224,7 +217,6 @@ 2.10.4 0.2.1 1.3.2 - 2.1.1 4.13.1 diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/JSON.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/JSON.java index 519cd35cc6a..04d3f7c1799 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/JSON.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/JSON.java @@ -11,11 +11,9 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.ext.ContextResolver; @javax.annotation.processing.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class JSON implements ContextResolver { +public class JSON { private ObjectMapper mapper; public JSON() { @@ -41,11 +39,6 @@ public class JSON implements ContextResolver { mapper.setDateFormat(dateFormat); } - @Override - public ObjectMapper getContext(Class type) { - return mapper; - } - /** * Get the object mapper * @@ -178,10 +171,10 @@ public class JSON implements ContextResolver { visitedClasses.add(modelClass); // Traverse the oneOf/anyOf composed schemas. - Map descendants = modelDescendants.get(modelClass); + Map> descendants = modelDescendants.get(modelClass); if (descendants != null) { - for (GenericType childType : descendants.values()) { - if (isInstanceOf(childType.getRawType(), inst, visitedClasses)) { + for (Class childType : descendants.values()) { + if (isInstanceOf(childType, inst, visitedClasses)) { return true; } } @@ -192,12 +185,12 @@ public class JSON implements ContextResolver { /** * A map of discriminators for all model classes. */ - private static Map, ClassDiscriminatorMapping> modelDiscriminators = new HashMap, ClassDiscriminatorMapping>(); + private static Map, ClassDiscriminatorMapping> modelDiscriminators = new HashMap<>(); /** * A map of oneOf/anyOf descendants for each model class. */ - private static Map, Map> modelDescendants = new HashMap, Map>(); + private static Map, Map>> modelDescendants = new HashMap<>(); /** * Register a model class discriminator. @@ -217,7 +210,7 @@ public class JSON implements ContextResolver { * @param modelClass the model class * @param descendants a map of oneOf/anyOf descendants. */ - public static void registerDescendants(Class modelClass, Map descendants) { + public static void registerDescendants(Class modelClass, Map> descendants) { modelDescendants.put(modelClass, descendants); } diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java index 1736eb73c5a..882bf6fc3af 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java @@ -17,7 +17,6 @@ import org.openapitools.client.ApiException; import java.util.Objects; import java.lang.reflect.Type; import java.util.Map; -import javax.ws.rs.core.GenericType; import com.fasterxml.jackson.annotation.JsonValue; @@ -46,7 +45,7 @@ public abstract class AbstractOpenApiSchema { * * @return an instance of the actual schema/object */ - public abstract Map getSchemas(); + public abstract Map> getSchemas(); /** * Get the actual instance diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Fruit.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Fruit.java index cf6d211a85b..548e7ab3c36 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Fruit.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Fruit.java @@ -31,8 +31,6 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.core.type.TypeReference; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -44,7 +42,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; @@ -163,7 +160,7 @@ public class Fruit extends AbstractOpenApiSchema { } // store a list of schema names defined in oneOf - public static final Map schemas = new HashMap(); + public static final Map> schemas = new HashMap<>(); public Fruit() { super("oneOf", Boolean.FALSE); @@ -180,15 +177,13 @@ public class Fruit extends AbstractOpenApiSchema { } static { - schemas.put("Apple", new GenericType() { - }); - schemas.put("Banana", new GenericType() { - }); + schemas.put("Apple", Apple.class); + schemas.put("Banana", Banana.class); JSON.registerDescendants(Fruit.class, Collections.unmodifiableMap(schemas)); } @Override - public Map getSchemas() { + public Map> getSchemas() { return Fruit.schemas; } diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FruitReq.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FruitReq.java index 714fdfacad2..c73123d08dd 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FruitReq.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/FruitReq.java @@ -31,8 +31,6 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.core.type.TypeReference; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -44,7 +42,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; @@ -165,7 +162,7 @@ public class FruitReq extends AbstractOpenApiSchema { } // store a list of schema names defined in oneOf - public static final Map schemas = new HashMap(); + public static final Map> schemas = new HashMap<>(); public FruitReq() { super("oneOf", Boolean.TRUE); @@ -182,15 +179,13 @@ public class FruitReq extends AbstractOpenApiSchema { } static { - schemas.put("AppleReq", new GenericType() { - }); - schemas.put("BananaReq", new GenericType() { - }); + schemas.put("AppleReq", AppleReq.class); + schemas.put("BananaReq", BananaReq.class); JSON.registerDescendants(FruitReq.class, Collections.unmodifiableMap(schemas)); } @Override - public Map getSchemas() { + public Map> getSchemas() { return FruitReq.schemas; } diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/GmFruit.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/GmFruit.java index cf55e466f13..c6c672512da 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/GmFruit.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/GmFruit.java @@ -30,8 +30,6 @@ import org.openapitools.client.model.Banana; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -42,7 +40,6 @@ import java.util.HashSet; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; @@ -123,7 +120,7 @@ public class GmFruit extends AbstractOpenApiSchema { } // store a list of schema names defined in anyOf - public static final Map schemas = new HashMap(); + public static final Map> schemas = new HashMap>(); public GmFruit() { super("anyOf", Boolean.FALSE); @@ -140,15 +137,13 @@ public class GmFruit extends AbstractOpenApiSchema { } static { - schemas.put("Apple", new GenericType() { - }); - schemas.put("Banana", new GenericType() { - }); + schemas.put("Apple", Apple.class); + schemas.put("Banana", Banana.class); JSON.registerDescendants(GmFruit.class, Collections.unmodifiableMap(schemas)); } @Override - public Map getSchemas() { + public Map> getSchemas() { return GmFruit.schemas; } diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Mammal.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Mammal.java index 3d2522dae64..9d1e871feb9 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Mammal.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Mammal.java @@ -33,8 +33,6 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.core.type.TypeReference; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -46,7 +44,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; @@ -211,7 +208,7 @@ public class Mammal extends AbstractOpenApiSchema { } // store a list of schema names defined in oneOf - public static final Map schemas = new HashMap(); + public static final Map> schemas = new HashMap<>(); public Mammal() { super("oneOf", Boolean.FALSE); @@ -233,12 +230,9 @@ public class Mammal extends AbstractOpenApiSchema { } static { - schemas.put("Pig", new GenericType() { - }); - schemas.put("Whale", new GenericType() { - }); - schemas.put("Zebra", new GenericType() { - }); + schemas.put("Pig", Pig.class); + schemas.put("Whale", Whale.class); + schemas.put("Zebra", Zebra.class); JSON.registerDescendants(Mammal.class, Collections.unmodifiableMap(schemas)); // Initialize and register the discriminator mappings. Map> mappings = new HashMap>(); @@ -250,7 +244,7 @@ public class Mammal extends AbstractOpenApiSchema { } @Override - public Map getSchemas() { + public Map> getSchemas() { return Mammal.schemas; } diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NullableShape.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NullableShape.java index f26f85dcbab..77d27e3e2c0 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NullableShape.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/NullableShape.java @@ -32,8 +32,6 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.core.type.TypeReference; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -45,7 +43,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; @@ -182,7 +179,7 @@ public class NullableShape extends AbstractOpenApiSchema { } // store a list of schema names defined in oneOf - public static final Map schemas = new HashMap(); + public static final Map> schemas = new HashMap<>(); public NullableShape() { super("oneOf", Boolean.TRUE); @@ -199,10 +196,8 @@ public class NullableShape extends AbstractOpenApiSchema { } static { - schemas.put("Quadrilateral", new GenericType() { - }); - schemas.put("Triangle", new GenericType() { - }); + schemas.put("Quadrilateral", Quadrilateral.class); + schemas.put("Triangle", Triangle.class); JSON.registerDescendants(NullableShape.class, Collections.unmodifiableMap(schemas)); // Initialize and register the discriminator mappings. Map> mappings = new HashMap>(); @@ -213,7 +208,7 @@ public class NullableShape extends AbstractOpenApiSchema { } @Override - public Map getSchemas() { + public Map> getSchemas() { return NullableShape.schemas; } diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pig.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pig.java index 3910494f419..e77218d922e 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pig.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Pig.java @@ -32,8 +32,6 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.core.type.TypeReference; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -45,7 +43,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; @@ -180,7 +177,7 @@ public class Pig extends AbstractOpenApiSchema { } // store a list of schema names defined in oneOf - public static final Map schemas = new HashMap(); + public static final Map> schemas = new HashMap<>(); public Pig() { super("oneOf", Boolean.FALSE); @@ -197,10 +194,8 @@ public class Pig extends AbstractOpenApiSchema { } static { - schemas.put("BasquePig", new GenericType() { - }); - schemas.put("DanishPig", new GenericType() { - }); + schemas.put("BasquePig", BasquePig.class); + schemas.put("DanishPig", DanishPig.class); JSON.registerDescendants(Pig.class, Collections.unmodifiableMap(schemas)); // Initialize and register the discriminator mappings. Map> mappings = new HashMap>(); @@ -211,7 +206,7 @@ public class Pig extends AbstractOpenApiSchema { } @Override - public Map getSchemas() { + public Map> getSchemas() { return Pig.schemas; } diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Quadrilateral.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Quadrilateral.java index 4898568a760..b2c184698db 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Quadrilateral.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Quadrilateral.java @@ -32,8 +32,6 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.core.type.TypeReference; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -45,7 +43,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; @@ -180,7 +177,7 @@ public class Quadrilateral extends AbstractOpenApiSchema { } // store a list of schema names defined in oneOf - public static final Map schemas = new HashMap(); + public static final Map> schemas = new HashMap<>(); public Quadrilateral() { super("oneOf", Boolean.FALSE); @@ -197,10 +194,8 @@ public class Quadrilateral extends AbstractOpenApiSchema { } static { - schemas.put("ComplexQuadrilateral", new GenericType() { - }); - schemas.put("SimpleQuadrilateral", new GenericType() { - }); + schemas.put("ComplexQuadrilateral", ComplexQuadrilateral.class); + schemas.put("SimpleQuadrilateral", SimpleQuadrilateral.class); JSON.registerDescendants(Quadrilateral.class, Collections.unmodifiableMap(schemas)); // Initialize and register the discriminator mappings. Map> mappings = new HashMap>(); @@ -211,7 +206,7 @@ public class Quadrilateral extends AbstractOpenApiSchema { } @Override - public Map getSchemas() { + public Map> getSchemas() { return Quadrilateral.schemas; } diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Shape.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Shape.java index 2ed635f06d6..b29a366dad9 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Shape.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Shape.java @@ -32,8 +32,6 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.core.type.TypeReference; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -45,7 +43,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; @@ -180,7 +177,7 @@ public class Shape extends AbstractOpenApiSchema { } // store a list of schema names defined in oneOf - public static final Map schemas = new HashMap(); + public static final Map> schemas = new HashMap<>(); public Shape() { super("oneOf", Boolean.FALSE); @@ -197,10 +194,8 @@ public class Shape extends AbstractOpenApiSchema { } static { - schemas.put("Quadrilateral", new GenericType() { - }); - schemas.put("Triangle", new GenericType() { - }); + schemas.put("Quadrilateral", Quadrilateral.class); + schemas.put("Triangle", Triangle.class); JSON.registerDescendants(Shape.class, Collections.unmodifiableMap(schemas)); // Initialize and register the discriminator mappings. Map> mappings = new HashMap>(); @@ -211,7 +206,7 @@ public class Shape extends AbstractOpenApiSchema { } @Override - public Map getSchemas() { + public Map> getSchemas() { return Shape.schemas; } diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ShapeOrNull.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ShapeOrNull.java index 732017cd9c5..05598727e13 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ShapeOrNull.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/ShapeOrNull.java @@ -32,8 +32,6 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.core.type.TypeReference; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -45,7 +43,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; @@ -182,7 +179,7 @@ public class ShapeOrNull extends AbstractOpenApiSchema { } // store a list of schema names defined in oneOf - public static final Map schemas = new HashMap(); + public static final Map> schemas = new HashMap<>(); public ShapeOrNull() { super("oneOf", Boolean.TRUE); @@ -199,10 +196,8 @@ public class ShapeOrNull extends AbstractOpenApiSchema { } static { - schemas.put("Quadrilateral", new GenericType() { - }); - schemas.put("Triangle", new GenericType() { - }); + schemas.put("Quadrilateral", Quadrilateral.class); + schemas.put("Triangle", Triangle.class); JSON.registerDescendants(ShapeOrNull.class, Collections.unmodifiableMap(schemas)); // Initialize and register the discriminator mappings. Map> mappings = new HashMap>(); @@ -213,7 +208,7 @@ public class ShapeOrNull extends AbstractOpenApiSchema { } @Override - public Map getSchemas() { + public Map> getSchemas() { return ShapeOrNull.schemas; } diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Triangle.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Triangle.java index 9638f2461f3..073b1c351f1 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Triangle.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/model/Triangle.java @@ -33,8 +33,6 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.core.type.TypeReference; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; @@ -46,7 +44,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; @@ -211,7 +208,7 @@ public class Triangle extends AbstractOpenApiSchema { } // store a list of schema names defined in oneOf - public static final Map schemas = new HashMap(); + public static final Map> schemas = new HashMap<>(); public Triangle() { super("oneOf", Boolean.FALSE); @@ -233,12 +230,9 @@ public class Triangle extends AbstractOpenApiSchema { } static { - schemas.put("EquilateralTriangle", new GenericType() { - }); - schemas.put("IsoscelesTriangle", new GenericType() { - }); - schemas.put("ScaleneTriangle", new GenericType() { - }); + schemas.put("EquilateralTriangle", EquilateralTriangle.class); + schemas.put("IsoscelesTriangle", IsoscelesTriangle.class); + schemas.put("ScaleneTriangle", ScaleneTriangle.class); JSON.registerDescendants(Triangle.class, Collections.unmodifiableMap(schemas)); // Initialize and register the discriminator mappings. Map> mappings = new HashMap>(); @@ -250,7 +244,7 @@ public class Triangle extends AbstractOpenApiSchema { } @Override - public Map getSchemas() { + public Map> getSchemas() { return Triangle.schemas; } From 2e65e6f62d37c76ff7ee5f78a9fba58922b24623 Mon Sep 17 00:00:00 2001 From: Daniel Krebs Date: Fri, 18 Jun 2021 09:09:55 +0200 Subject: [PATCH 141/192] [python][client] allow passing floats for _request_timeout (#9532) * [python][client] allow passing floats for _request_timeout While several method docstrings suggested that you could pass floats for _request_timeout and the underlying urllib3.Timeout can deal with them, the code only allowed integer values so far when passed as a single number. * [python][samples] update with fix for _request_timeout type --- .../src/main/resources/python/api.mustache | 4 +- .../main/resources/python/api_client.mustache | 6 +- .../petstore_api/api/another_fake_api.py | 4 +- .../python/petstore_api/api/fake_api.py | 64 +++++------ .../api/fake_classname_tags_123_api.py | 4 +- .../python/petstore_api/api/pet_api.py | 36 +++--- .../python/petstore_api/api/store_api.py | 16 +-- .../python/petstore_api/api/user_api.py | 32 +++--- .../python/petstore_api/api_client.py | 6 +- .../petstore_api/api/another_fake_api.py | 4 +- .../petstore_api/api/fake_api.py | 64 +++++------ .../api/fake_classname_tags_123_api.py | 4 +- .../petstore_api/api/pet_api.py | 36 +++--- .../petstore_api/api/store_api.py | 16 +-- .../petstore_api/api/user_api.py | 32 +++--- .../petstore_api/api_client.py | 6 +- .../python/x_auth_id_alias/api/usage_api.py | 16 +-- .../python/x_auth_id_alias/api_client.py | 6 +- .../python/dynamic_servers/api/usage_api.py | 8 +- .../python/dynamic_servers/api_client.py | 6 +- .../petstore_api/api/another_fake_api.py | 4 +- .../python/petstore_api/api/default_api.py | 4 +- .../python/petstore_api/api/fake_api.py | 108 +++++++++--------- .../api/fake_classname_tags_123_api.py | 4 +- .../python/petstore_api/api/pet_api.py | 28 ++--- .../python/petstore_api/api/store_api.py | 16 +-- .../python/petstore_api/api/user_api.py | 32 +++--- .../python/petstore_api/api_client.py | 6 +- 28 files changed, 286 insertions(+), 286 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python/api.mustache b/modules/openapi-generator/src/main/resources/python/api.mustache index 37339fc5115..4be68cdf12b 100644 --- a/modules/openapi-generator/src/main/resources/python/api.mustache +++ b/modules/openapi-generator/src/main/resources/python/api.mustache @@ -80,8 +80,8 @@ class {{classname}}(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/modules/openapi-generator/src/main/resources/python/api_client.mustache b/modules/openapi-generator/src/main/resources/python/api_client.mustache index 8d6395a4c2e..31d9e48354a 100644 --- a/modules/openapi-generator/src/main/resources/python/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/python/api_client.mustache @@ -127,7 +127,7 @@ class ApiClient(object): _return_http_data_only: typing.Optional[bool] = None, collection_formats: typing.Optional[typing.Dict[str, str]] = None, _preload_content: bool = True, - _request_timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None, + _request_timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, _host: typing.Optional[str] = None, _check_type: typing.Optional[bool] = None ): @@ -359,7 +359,7 @@ class ApiClient(object): _return_http_data_only: typing.Optional[bool] = None, collection_formats: typing.Optional[typing.Dict[str, str]] = None, _preload_content: bool = True, - _request_timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None, + _request_timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, _host: typing.Optional[str] = None, _check_type: typing.Optional[bool] = None ): @@ -695,7 +695,7 @@ class Endpoint(object): 'async_req': (bool,), '_host_index': (none_type, int), '_preload_content': (bool,), - '_request_timeout': (none_type, int, (int,), [int]), + '_request_timeout': (none_type, float, (float,), [float], int, (int,), [int]), '_return_http_data_only': (bool,), '_check_input_type': (bool,), '_check_return_type': (bool,) diff --git a/samples/client/petstore/python/petstore_api/api/another_fake_api.py b/samples/client/petstore/python/petstore_api/api/another_fake_api.py index 9c75f7d5a83..3a4931f84d4 100644 --- a/samples/client/petstore/python/petstore_api/api/another_fake_api.py +++ b/samples/client/petstore/python/petstore_api/api/another_fake_api.py @@ -59,8 +59,8 @@ class AnotherFakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/client/petstore/python/petstore_api/api/fake_api.py b/samples/client/petstore/python/petstore_api/api/fake_api.py index aaf44e6f64c..d821febabed 100644 --- a/samples/client/petstore/python/petstore_api/api/fake_api.py +++ b/samples/client/petstore/python/petstore_api/api/fake_api.py @@ -64,8 +64,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -174,8 +174,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -286,8 +286,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -405,8 +405,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -515,8 +515,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -625,8 +625,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -735,8 +735,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -847,8 +847,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -964,8 +964,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1088,8 +1088,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1214,8 +1214,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1402,8 +1402,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1649,8 +1649,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1858,8 +1858,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -2003,8 +2003,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -2120,8 +2120,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/client/petstore/python/petstore_api/api/fake_classname_tags_123_api.py b/samples/client/petstore/python/petstore_api/api/fake_classname_tags_123_api.py index 1d1afc214c1..1f8275b9eec 100644 --- a/samples/client/petstore/python/petstore_api/api/fake_classname_tags_123_api.py +++ b/samples/client/petstore/python/petstore_api/api/fake_classname_tags_123_api.py @@ -59,8 +59,8 @@ class FakeClassnameTags123Api(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/client/petstore/python/petstore_api/api/pet_api.py b/samples/client/petstore/python/petstore_api/api/pet_api.py index 2989ca8d4ab..52478be44a1 100644 --- a/samples/client/petstore/python/petstore_api/api/pet_api.py +++ b/samples/client/petstore/python/petstore_api/api/pet_api.py @@ -59,8 +59,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -178,8 +178,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -300,8 +300,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -428,8 +428,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -549,8 +549,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -668,8 +668,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -788,8 +788,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -919,8 +919,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1058,8 +1058,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/client/petstore/python/petstore_api/api/store_api.py b/samples/client/petstore/python/petstore_api/api/store_api.py index c30ca943b2d..81f1779174b 100644 --- a/samples/client/petstore/python/petstore_api/api/store_api.py +++ b/samples/client/petstore/python/petstore_api/api/store_api.py @@ -59,8 +59,8 @@ class StoreApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -171,8 +171,8 @@ class StoreApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -281,8 +281,8 @@ class StoreApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -404,8 +404,8 @@ class StoreApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/client/petstore/python/petstore_api/api/user_api.py b/samples/client/petstore/python/petstore_api/api/user_api.py index a5ef0d5c309..931b31d5ef8 100644 --- a/samples/client/petstore/python/petstore_api/api/user_api.py +++ b/samples/client/petstore/python/petstore_api/api/user_api.py @@ -59,8 +59,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -172,8 +172,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -285,8 +285,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -399,8 +399,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -513,8 +513,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -632,8 +632,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -754,8 +754,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -862,8 +862,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/client/petstore/python/petstore_api/api_client.py b/samples/client/petstore/python/petstore_api/api_client.py index a43e4ace242..9b8ea1d5d1a 100644 --- a/samples/client/petstore/python/petstore_api/api_client.py +++ b/samples/client/petstore/python/petstore_api/api_client.py @@ -129,7 +129,7 @@ class ApiClient(object): _return_http_data_only: typing.Optional[bool] = None, collection_formats: typing.Optional[typing.Dict[str, str]] = None, _preload_content: bool = True, - _request_timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None, + _request_timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, _host: typing.Optional[str] = None, _check_type: typing.Optional[bool] = None ): @@ -347,7 +347,7 @@ class ApiClient(object): _return_http_data_only: typing.Optional[bool] = None, collection_formats: typing.Optional[typing.Dict[str, str]] = None, _preload_content: bool = True, - _request_timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None, + _request_timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, _host: typing.Optional[str] = None, _check_type: typing.Optional[bool] = None ): @@ -674,7 +674,7 @@ class Endpoint(object): 'async_req': (bool,), '_host_index': (none_type, int), '_preload_content': (bool,), - '_request_timeout': (none_type, int, (int,), [int]), + '_request_timeout': (none_type, float, (float,), [float], int, (int,), [int]), '_return_http_data_only': (bool,), '_check_input_type': (bool,), '_check_return_type': (bool,) diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/another_fake_api.py b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/another_fake_api.py index 9c75f7d5a83..3a4931f84d4 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/another_fake_api.py +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/another_fake_api.py @@ -59,8 +59,8 @@ class AnotherFakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/fake_api.py b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/fake_api.py index aaf44e6f64c..d821febabed 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/fake_api.py +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/fake_api.py @@ -64,8 +64,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -174,8 +174,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -286,8 +286,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -405,8 +405,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -515,8 +515,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -625,8 +625,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -735,8 +735,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -847,8 +847,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -964,8 +964,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1088,8 +1088,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1214,8 +1214,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1402,8 +1402,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1649,8 +1649,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1858,8 +1858,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -2003,8 +2003,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -2120,8 +2120,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/fake_classname_tags_123_api.py b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/fake_classname_tags_123_api.py index 1d1afc214c1..1f8275b9eec 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/fake_classname_tags_123_api.py +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/fake_classname_tags_123_api.py @@ -59,8 +59,8 @@ class FakeClassnameTags123Api(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/pet_api.py b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/pet_api.py index 2989ca8d4ab..52478be44a1 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/pet_api.py +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/pet_api.py @@ -59,8 +59,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -178,8 +178,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -300,8 +300,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -428,8 +428,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -549,8 +549,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -668,8 +668,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -788,8 +788,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -919,8 +919,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1058,8 +1058,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/store_api.py b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/store_api.py index c30ca943b2d..81f1779174b 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/store_api.py +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/store_api.py @@ -59,8 +59,8 @@ class StoreApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -171,8 +171,8 @@ class StoreApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -281,8 +281,8 @@ class StoreApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -404,8 +404,8 @@ class StoreApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/user_api.py b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/user_api.py index a5ef0d5c309..931b31d5ef8 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/user_api.py +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api/user_api.py @@ -59,8 +59,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -172,8 +172,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -285,8 +285,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -399,8 +399,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -513,8 +513,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -632,8 +632,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -754,8 +754,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -862,8 +862,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api_client.py b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api_client.py index a43e4ace242..9b8ea1d5d1a 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api_client.py +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/api_client.py @@ -129,7 +129,7 @@ class ApiClient(object): _return_http_data_only: typing.Optional[bool] = None, collection_formats: typing.Optional[typing.Dict[str, str]] = None, _preload_content: bool = True, - _request_timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None, + _request_timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, _host: typing.Optional[str] = None, _check_type: typing.Optional[bool] = None ): @@ -347,7 +347,7 @@ class ApiClient(object): _return_http_data_only: typing.Optional[bool] = None, collection_formats: typing.Optional[typing.Dict[str, str]] = None, _preload_content: bool = True, - _request_timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None, + _request_timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, _host: typing.Optional[str] = None, _check_type: typing.Optional[bool] = None ): @@ -674,7 +674,7 @@ class Endpoint(object): 'async_req': (bool,), '_host_index': (none_type, int), '_preload_content': (bool,), - '_request_timeout': (none_type, int, (int,), [int]), + '_request_timeout': (none_type, float, (float,), [float], int, (int,), [int]), '_return_http_data_only': (bool,), '_check_input_type': (bool,), '_check_return_type': (bool,) diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/api/usage_api.py b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/api/usage_api.py index e05577ea119..865341d7c66 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/api/usage_api.py +++ b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/api/usage_api.py @@ -55,8 +55,8 @@ class UsageApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -163,8 +163,8 @@ class UsageApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -271,8 +271,8 @@ class UsageApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -378,8 +378,8 @@ class UsageApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/api_client.py b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/api_client.py index 9230d950d48..7e4fa034a6a 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/api_client.py +++ b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/api_client.py @@ -129,7 +129,7 @@ class ApiClient(object): _return_http_data_only: typing.Optional[bool] = None, collection_formats: typing.Optional[typing.Dict[str, str]] = None, _preload_content: bool = True, - _request_timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None, + _request_timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, _host: typing.Optional[str] = None, _check_type: typing.Optional[bool] = None ): @@ -347,7 +347,7 @@ class ApiClient(object): _return_http_data_only: typing.Optional[bool] = None, collection_formats: typing.Optional[typing.Dict[str, str]] = None, _preload_content: bool = True, - _request_timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None, + _request_timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, _host: typing.Optional[str] = None, _check_type: typing.Optional[bool] = None ): @@ -674,7 +674,7 @@ class Endpoint(object): 'async_req': (bool,), '_host_index': (none_type, int), '_preload_content': (bool,), - '_request_timeout': (none_type, int, (int,), [int]), + '_request_timeout': (none_type, float, (float,), [float], int, (int,), [int]), '_return_http_data_only': (bool,), '_check_input_type': (bool,), '_check_return_type': (bool,) diff --git a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/api/usage_api.py b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/api/usage_api.py index 5da74def3fb..c60c19b881b 100644 --- a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/api/usage_api.py +++ b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/api/usage_api.py @@ -55,8 +55,8 @@ class UsageApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -209,8 +209,8 @@ class UsageApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/api_client.py b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/api_client.py index 0b76cbb12b1..81247d2f6e5 100644 --- a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/api_client.py +++ b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/api_client.py @@ -129,7 +129,7 @@ class ApiClient(object): _return_http_data_only: typing.Optional[bool] = None, collection_formats: typing.Optional[typing.Dict[str, str]] = None, _preload_content: bool = True, - _request_timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None, + _request_timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, _host: typing.Optional[str] = None, _check_type: typing.Optional[bool] = None ): @@ -347,7 +347,7 @@ class ApiClient(object): _return_http_data_only: typing.Optional[bool] = None, collection_formats: typing.Optional[typing.Dict[str, str]] = None, _preload_content: bool = True, - _request_timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None, + _request_timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, _host: typing.Optional[str] = None, _check_type: typing.Optional[bool] = None ): @@ -674,7 +674,7 @@ class Endpoint(object): 'async_req': (bool,), '_host_index': (none_type, int), '_preload_content': (bool,), - '_request_timeout': (none_type, int, (int,), [int]), + '_request_timeout': (none_type, float, (float,), [float], int, (int,), [int]), '_return_http_data_only': (bool,), '_check_input_type': (bool,), '_check_return_type': (bool,) diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/another_fake_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/another_fake_api.py index 4e6f26e4e33..4072532f378 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/api/another_fake_api.py +++ b/samples/openapi3/client/petstore/python/petstore_api/api/another_fake_api.py @@ -59,8 +59,8 @@ class AnotherFakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/default_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/default_api.py index 070ae6b4f47..21f9ca13b05 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/api/default_api.py +++ b/samples/openapi3/client/petstore/python/petstore_api/api/default_api.py @@ -55,8 +55,8 @@ class DefaultApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/fake_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/fake_api.py index 7dea3785aec..37f1268be14 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/api/fake_api.py +++ b/samples/openapi3/client/petstore/python/petstore_api/api/fake_api.py @@ -71,8 +71,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -183,8 +183,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -294,8 +294,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -406,8 +406,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -518,8 +518,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -631,8 +631,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -750,8 +750,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -860,8 +860,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -968,8 +968,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1084,8 +1084,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1196,8 +1196,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1307,8 +1307,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1418,8 +1418,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1530,8 +1530,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1642,8 +1642,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1757,8 +1757,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1874,8 +1874,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -1998,8 +1998,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -2132,8 +2132,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -2379,8 +2379,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -2588,8 +2588,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -2735,8 +2735,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -2852,8 +2852,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -2985,8 +2985,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -3136,8 +3136,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -3254,8 +3254,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -3375,8 +3375,8 @@ class FakeApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/fake_classname_tags_123_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/fake_classname_tags_123_api.py index 6e20a712d6f..dd702d316bf 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/api/fake_classname_tags_123_api.py +++ b/samples/openapi3/client/petstore/python/petstore_api/api/fake_classname_tags_123_api.py @@ -59,8 +59,8 @@ class FakeClassnameTags123Api(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/pet_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/pet_api.py index 7b637be215b..102c1f26def 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/api/pet_api.py +++ b/samples/openapi3/client/petstore/python/petstore_api/api/pet_api.py @@ -58,8 +58,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -187,8 +187,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -309,8 +309,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -438,8 +438,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -560,8 +560,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -679,8 +679,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -809,8 +809,8 @@ class PetApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/store_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/store_api.py index efbf40c1607..aa701fc3b15 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/api/store_api.py +++ b/samples/openapi3/client/petstore/python/petstore_api/api/store_api.py @@ -59,8 +59,8 @@ class StoreApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -171,8 +171,8 @@ class StoreApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -281,8 +281,8 @@ class StoreApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -404,8 +404,8 @@ class StoreApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/user_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/user_api.py index 9af3abfd19f..8c8b26e26f6 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/api/user_api.py +++ b/samples/openapi3/client/petstore/python/petstore_api/api/user_api.py @@ -59,8 +59,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -174,8 +174,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -289,8 +289,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -405,8 +405,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -519,8 +519,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -638,8 +638,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -760,8 +760,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking @@ -868,8 +868,8 @@ class UserApi(object): _preload_content (bool): if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. - _request_timeout (float/tuple): timeout setting for this request. If one - number provided, it will be total request timeout. It can also + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. Default is None. _check_input_type (bool): specifies if type checking diff --git a/samples/openapi3/client/petstore/python/petstore_api/api_client.py b/samples/openapi3/client/petstore/python/petstore_api/api_client.py index 2c5f087123e..af5d8729ad3 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/api_client.py +++ b/samples/openapi3/client/petstore/python/petstore_api/api_client.py @@ -129,7 +129,7 @@ class ApiClient(object): _return_http_data_only: typing.Optional[bool] = None, collection_formats: typing.Optional[typing.Dict[str, str]] = None, _preload_content: bool = True, - _request_timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None, + _request_timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, _host: typing.Optional[str] = None, _check_type: typing.Optional[bool] = None ): @@ -347,7 +347,7 @@ class ApiClient(object): _return_http_data_only: typing.Optional[bool] = None, collection_formats: typing.Optional[typing.Dict[str, str]] = None, _preload_content: bool = True, - _request_timeout: typing.Optional[typing.Union[int, typing.Tuple]] = None, + _request_timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None, _host: typing.Optional[str] = None, _check_type: typing.Optional[bool] = None ): @@ -681,7 +681,7 @@ class Endpoint(object): 'async_req': (bool,), '_host_index': (none_type, int), '_preload_content': (bool,), - '_request_timeout': (none_type, int, (int,), [int]), + '_request_timeout': (none_type, float, (float,), [float], int, (int,), [int]), '_return_http_data_only': (bool,), '_check_input_type': (bool,), '_check_return_type': (bool,) From c7038d1b57fe3ad1631897129e5498db121213d0 Mon Sep 17 00:00:00 2001 From: Sandeep jindal Date: Fri, 18 Jun 2021 14:53:25 +0700 Subject: [PATCH 142/192] [scala][client] invoker package enhancement (#9381) * updated invoker remove unwanted set the invoker fixed the ordering of supported files added sample generated files regenerated samples added docs * sample files Co-authored-by: sjindal --- bin/configs/scala-legacy.yaml | 9 + .../languages/AbstractScalaCodegen.java | 4 + .../languages/ScalaHttpClientCodegen.java | 42 +- .../scala-httpclient-deprecated/.gitignore | 22 + .../.openapi-generator-ignore | 23 + .../.openapi-generator/FILES | 22 + .../.openapi-generator/VERSION | 1 + .../scala-httpclient-deprecated/build.gradle | 127 +++++ .../scala-httpclient-deprecated/build.sbt | 32 ++ .../scala-httpclient-deprecated/git_push.sh | 58 +++ .../gradle.properties | 2 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 55190 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + .../scala-httpclient-deprecated/gradlew | 172 +++++++ .../scala-httpclient-deprecated/gradlew.bat | 84 ++++ .../scala-httpclient-deprecated/pom.xml | 255 ++++++++++ .../project/build.properties | 1 + .../settings.gradle | 1 + .../client/model/ApiResponse.scala | 21 + .../openapitools/client/model/Category.scala | 20 + .../org/openapitools/client/model/Order.scala | 26 + .../org/openapitools/client/model/Pet.scala | 25 + .../org/openapitools/client/model/Tag.scala | 20 + .../org/openapitools/client/model/User.scala | 27 + .../org/openapitools/example/api/PetApi.scala | 476 ++++++++++++++++++ .../openapitools/example/api/StoreApi.scala | 265 ++++++++++ .../openapitools/example/api/UserApi.scala | 465 +++++++++++++++++ .../example/invoker/ApiInvoker.scala | 237 +++++++++ .../example/invoker/AsyncClient.scala | 20 + 29 files changed, 2441 insertions(+), 21 deletions(-) create mode 100644 bin/configs/scala-legacy.yaml create mode 100644 samples/client/petstore/scala-httpclient-deprecated/.gitignore create mode 100644 samples/client/petstore/scala-httpclient-deprecated/.openapi-generator-ignore create mode 100644 samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/FILES create mode 100644 samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION create mode 100644 samples/client/petstore/scala-httpclient-deprecated/build.gradle create mode 100644 samples/client/petstore/scala-httpclient-deprecated/build.sbt create mode 100644 samples/client/petstore/scala-httpclient-deprecated/git_push.sh create mode 100644 samples/client/petstore/scala-httpclient-deprecated/gradle.properties create mode 100644 samples/client/petstore/scala-httpclient-deprecated/gradle/wrapper/gradle-wrapper.jar create mode 100644 samples/client/petstore/scala-httpclient-deprecated/gradle/wrapper/gradle-wrapper.properties create mode 100644 samples/client/petstore/scala-httpclient-deprecated/gradlew create mode 100644 samples/client/petstore/scala-httpclient-deprecated/gradlew.bat create mode 100644 samples/client/petstore/scala-httpclient-deprecated/pom.xml create mode 100644 samples/client/petstore/scala-httpclient-deprecated/project/build.properties create mode 100644 samples/client/petstore/scala-httpclient-deprecated/settings.gradle create mode 100644 samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/ApiResponse.scala create mode 100644 samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Category.scala create mode 100644 samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Order.scala create mode 100644 samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Pet.scala create mode 100644 samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Tag.scala create mode 100644 samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/User.scala create mode 100644 samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/api/PetApi.scala create mode 100644 samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/api/StoreApi.scala create mode 100644 samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/api/UserApi.scala create mode 100644 samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/invoker/ApiInvoker.scala create mode 100644 samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/invoker/AsyncClient.scala diff --git a/bin/configs/scala-legacy.yaml b/bin/configs/scala-legacy.yaml new file mode 100644 index 00000000000..7c9c1865bc0 --- /dev/null +++ b/bin/configs/scala-legacy.yaml @@ -0,0 +1,9 @@ +# This is for generating scala legacy client +generatorName: scala-httpclient-deprecated +outputDir: samples/client/petstore/scala-httpclient-deprecated +inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml +templateDir: modules/openapi-generator/src/main/resources/scala-httpclient +additionalProperties: + apiPackage: org.openapitools.example.api + invokerPackage: org.openapitools.example.invoker + artifactId: scala-legacy-petstore \ No newline at end of file diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java index 7b7aef86da9..7278c7fbc02 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java @@ -164,6 +164,10 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen { LOGGER.info("NOTE: To enable file post-processing, 'enablePostProcessFile' must be set to `true` (--enable-post-process-file for CLI)."); } + if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { + this.setInvokerPackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); + } + if (additionalProperties.containsKey(CodegenConstants.SOURCE_FOLDER)) { this.setSourceFolder((String) additionalProperties.get(CodegenConstants.SOURCE_FOLDER)); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttpClientCodegen.java index 517d0e8c58a..de887007308 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttpClientCodegen.java @@ -105,27 +105,6 @@ public class ScalaHttpClientCodegen extends AbstractScalaCodegen implements Code additionalProperties.put("authPreemptive", authPreemptive); additionalProperties.put("clientName", clientName); - supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); - supportingFiles.add(new SupportingFile("apiInvoker.mustache", - (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiInvoker.scala")); - supportingFiles.add(new SupportingFile("client.mustache", - (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), clientName + ".scala")); - supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh")); - supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); - // gradle settings - supportingFiles.add(new SupportingFile("build.gradle.mustache", "", "build.gradle")); - supportingFiles.add(new SupportingFile("settings.gradle.mustache", "", "settings.gradle")); - supportingFiles.add(new SupportingFile("gradle.properties.mustache", "", "gradle.properties")); - // gradleWrapper files - supportingFiles.add(new SupportingFile("gradlew.mustache", "", "gradlew")); - supportingFiles.add(new SupportingFile("gradlew.bat.mustache", "", "gradlew.bat")); - supportingFiles.add(new SupportingFile("gradle-wrapper.properties.mustache", - gradleWrapperPackage.replace(".", File.separator), "gradle-wrapper.properties")); - supportingFiles.add(new SupportingFile("gradle-wrapper.jar", - gradleWrapperPackage.replace(".", File.separator), "gradle-wrapper.jar")); - - supportingFiles.add(new SupportingFile("build.sbt.mustache", "", "build.sbt")); - importMapping.remove("List"); importMapping.remove("Set"); importMapping.remove("Map"); @@ -163,6 +142,27 @@ public class ScalaHttpClientCodegen extends AbstractScalaCodegen implements Code LOGGER.warn("IMPORTANT: This generator (scala-http-client-deprecated) is no longer actively maintained and will be deprecated. " + "PLease use 'scala-akka' generator instead."); super.processOpts(); + + supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); + supportingFiles.add(new SupportingFile("apiInvoker.mustache", + (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiInvoker.scala")); + supportingFiles.add(new SupportingFile("client.mustache", + (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), clientName + ".scala")); + supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh")); + supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); + // gradle settings + supportingFiles.add(new SupportingFile("build.gradle.mustache", "", "build.gradle")); + supportingFiles.add(new SupportingFile("settings.gradle.mustache", "", "settings.gradle")); + supportingFiles.add(new SupportingFile("gradle.properties.mustache", "", "gradle.properties")); + // gradleWrapper files + supportingFiles.add(new SupportingFile("gradlew.mustache", "", "gradlew")); + supportingFiles.add(new SupportingFile("gradlew.bat.mustache", "", "gradlew.bat")); + supportingFiles.add(new SupportingFile("gradle-wrapper.properties.mustache", + gradleWrapperPackage.replace(".", File.separator), "gradle-wrapper.properties")); + supportingFiles.add(new SupportingFile("gradle-wrapper.jar", + gradleWrapperPackage.replace(".", File.separator), "gradle-wrapper.jar")); + + supportingFiles.add(new SupportingFile("build.sbt.mustache", "", "build.sbt")); } @Override diff --git a/samples/client/petstore/scala-httpclient-deprecated/.gitignore b/samples/client/petstore/scala-httpclient-deprecated/.gitignore new file mode 100644 index 00000000000..ad2b0d3ecd8 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/.gitignore @@ -0,0 +1,22 @@ +# scala specific +*.class +*.log + +# sbt specific +.cache +.history +.lib/ +dist/* +target/ +lib_managed/ +src_managed/ +project/boot/ +project/plugins/project/ + +# Scala-IDE specific +.scala_dependencies +.worksheet + +# IntelliJ specific +.idea +*.iml diff --git a/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator-ignore b/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/FILES b/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/FILES new file mode 100644 index 00000000000..77e4ca71c11 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/FILES @@ -0,0 +1,22 @@ +.gitignore +build.gradle +build.sbt +git_push.sh +gradle.properties +gradle/wrapper/gradle-wrapper.jar +gradle/wrapper/gradle-wrapper.properties +gradlew +gradlew.bat +pom.xml +settings.gradle +src/main/scala/org/openapitools/client/model/ApiResponse.scala +src/main/scala/org/openapitools/client/model/Category.scala +src/main/scala/org/openapitools/client/model/Order.scala +src/main/scala/org/openapitools/client/model/Pet.scala +src/main/scala/org/openapitools/client/model/Tag.scala +src/main/scala/org/openapitools/client/model/User.scala +src/main/scala/org/openapitools/example/api/PetApi.scala +src/main/scala/org/openapitools/example/api/StoreApi.scala +src/main/scala/org/openapitools/example/api/UserApi.scala +src/main/scala/org/openapitools/example/invoker/ApiInvoker.scala +src/main/scala/org/openapitools/example/invoker/AsyncClient.scala diff --git a/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION b/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION new file mode 100644 index 00000000000..6555596f931 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/scala-httpclient-deprecated/build.gradle b/samples/client/petstore/scala-httpclient-deprecated/build.gradle new file mode 100644 index 00000000000..d05105184ff --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/build.gradle @@ -0,0 +1,127 @@ +apply plugin: 'idea' +apply plugin: 'eclipse' + +group = 'org.openapitools' +version = '1.0.0' + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:1.5.+' + classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' + } +} + +repositories { + jcenter() +} + + +if(hasProperty('target') && target == 'android') { + + apply plugin: 'com.android.library' + apply plugin: 'com.github.dcendents.android-maven' + + android { + compileSdkVersion 23 + buildToolsVersion '23.0.2' + defaultConfig { + minSdkVersion 14 + targetSdkVersion 23 + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + // Rename the aar correctly + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.aar')) { + def fileName = "${project.name}-${variant.baseName}-${version}.aar" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } + + dependencies { + provided 'javax.annotation:jsr250-api:1.0' + } + } + + afterEvaluate { + android.libraryVariants.all { variant -> + def task = project.tasks.create "jar${variant.name.capitalize()}", Jar + task.description = "Create jar artifact for ${variant.name}" + task.dependsOn variant.javaCompile + task.from variant.javaCompile.destinationDir + task.destinationDir = project.file("${project.buildDir}/outputs/jar") + task.archiveName = "${project.name}-${variant.baseName}-${version}.jar" + artifacts.add('archives', task); + } + } + + task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' + } + + artifacts { + archives sourcesJar + } + +} else { + + apply plugin: 'scala' + apply plugin: 'java' + apply plugin: 'maven' + + sourceCompatibility = JavaVersion.VERSION_1_7 + targetCompatibility = JavaVersion.VERSION_1_7 + + install { + repositories.mavenInstaller { + pom.artifactId = 'scala-legacy-petstore' + } + } + + task execute(type:JavaExec) { + main = System.getProperty('mainClass') + classpath = sourceSets.main.runtimeClasspath + } +} + +ext { + scala_version = "2.10.4" + joda_version = "1.2" + jodatime_version = "2.2" + jersey_version = "1.19" + swagger_core_version = "1.5.8" + jersey_async_version = "1.0.5" + jackson_version = "2.4.2" + junit_version = "4.8.1" + scala_test_version = "2.2.4" + swagger_async_httpclient_version = "0.3.5" +} + +repositories { + mavenLocal() + maven { url "https://repo1.maven.org/maven2" } +} + +dependencies { + compile "com.fasterxml.jackson.module:jackson-module-scala_2.10:$jackson_version" + compile "com.sun.jersey:jersey-client:$jersey_version" + compile "com.sun.jersey.contribs:jersey-multipart:$jersey_version" + compile "org.jfarcand:jersey-ahc-client:$jersey_async_version" + compile "org.scala-lang:scala-library:$scala_version" + compile "io.swagger:swagger-core:$swagger_core_version" + testCompile "org.scalatest:scalatest_2.10:$scala_test_version" + testCompile "junit:junit:$junit_version" + compile "joda-time:joda-time:$jodatime_version" + compile "org.joda:joda-convert:$joda_version" + compile "com.wordnik.swagger:swagger-async-httpclient_2.10:$swagger_async_httpclient_version" +} diff --git a/samples/client/petstore/scala-httpclient-deprecated/build.sbt b/samples/client/petstore/scala-httpclient-deprecated/build.sbt new file mode 100644 index 00000000000..0565bb12ae1 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/build.sbt @@ -0,0 +1,32 @@ +version := "1.0.0" +name := "scala-legacy-petstore" +organization := "org.openapitools" +scalaVersion := "2.11.12" + +libraryDependencies ++= Seq( + "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.9.9", + "com.fasterxml.jackson.datatype" % "jackson-datatype-joda" % "2.9.9", + "com.sun.jersey" % "jersey-core" % "1.19.4", + "com.sun.jersey" % "jersey-client" % "1.19.4", + "com.sun.jersey.contribs" % "jersey-multipart" % "1.19.4", + "org.jfarcand" % "jersey-ahc-client" % "1.0.5", + "io.swagger" % "swagger-core" % "1.5.8", + "joda-time" % "joda-time" % "2.9.9", + "org.joda" % "joda-convert" % "1.9.2", + "org.scalatest" %% "scalatest" % "3.0.4" % "test", + "junit" % "junit" % "4.13" % "test", + "com.wordnik.swagger" %% "swagger-async-httpclient" % "0.3.5" +) + +resolvers ++= Seq( + Resolver.mavenLocal +) + +scalacOptions := Seq( + "-unchecked", + "-deprecation", + "-feature" +) + +publishArtifact in (Compile, packageDoc) := false + diff --git a/samples/client/petstore/scala-httpclient-deprecated/git_push.sh b/samples/client/petstore/scala-httpclient-deprecated/git_push.sh new file mode 100644 index 00000000000..ced3be2b0c7 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/git_push.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/samples/client/petstore/scala-httpclient-deprecated/gradle.properties b/samples/client/petstore/scala-httpclient-deprecated/gradle.properties new file mode 100644 index 00000000000..05644f0754a --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/gradle.properties @@ -0,0 +1,2 @@ +# Uncomment to build for Android +#target = android \ No newline at end of file diff --git a/samples/client/petstore/scala-httpclient-deprecated/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/scala-httpclient-deprecated/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..87b738cbd051603d91cc39de6cb000dd98fe6b02 GIT binary patch literal 55190 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 z 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/samples/client/petstore/scala-httpclient-deprecated/gradlew.bat b/samples/client/petstore/scala-httpclient-deprecated/gradlew.bat new file mode 100644 index 00000000000..f9553162f12 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/samples/client/petstore/scala-httpclient-deprecated/pom.xml b/samples/client/petstore/scala-httpclient-deprecated/pom.xml new file mode 100644 index 00000000000..26ed58c1b59 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/pom.xml @@ -0,0 +1,255 @@ + + 4.0.0 + org.openapitools + scala-legacy-petstore + jar + scala-legacy-petstore + 1.0.0 + + + + maven-mongodb-plugin-repo + maven mongodb plugin repository + + https://maven-mongodb-plugin.googlecode.com/svn/maven/repo + default + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.0.0-M1 + + + enforce-maven + + enforce + + + + + 2.2.0 + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.12 + + + + loggerPath + conf/log4j.properties + + + -Xms512m -Xmx1500m + methods + pertest + + + + maven-dependency-plugin + + + package + + copy-dependencies + + + ${project.build.directory}/lib + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.2 + + + + jar + test-jar + + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.9.1 + + + add_sources + generate-sources + + add-source + + + + + src/main/java + + + + + add_test_sources + generate-test-sources + + add-test-source + + + + + src/test/java + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.1 + + 1.7 + 1.7 + + + + net.alchim31.maven + scala-maven-plugin + ${scala-maven-plugin-version} + + + scala-compile-first + process-resources + + add-source + compile + + + + scala-test-compile + process-test-resources + + testCompile + + + + + + -Xms128m + -Xmx1500m + + + + + + + + + org.scala-tools + maven-scala-plugin + + ${scala-version} + + + + + + + com.fasterxml.jackson.module + jackson-module-scala_2.11 + ${jackson-version} + + + com.fasterxml.jackson.datatype + jackson-datatype-joda + ${jackson-version} + + + com.sun.jersey + jersey-client + ${jersey-version} + + + com.sun.jersey.contribs + jersey-multipart + ${jersey-version} + + + org.jfarcand + jersey-ahc-client + ${jersey-async-version} + compile + + + org.scala-lang + scala-library + ${scala-version} + + + io.swagger + swagger-core + ${swagger-core-version} + + + org.scalatest + scalatest_2.11 + ${scala-test-version} + test + + + junit + junit + ${junit-version} + test + + + joda-time + joda-time + ${joda-time-version} + + + org.joda + joda-convert + ${joda-version} + + + com.wordnik.swagger + swagger-async-httpclient_2.11 + ${async-httpclient-version} + + + + 2.11.12 + 1.9.2 + 2.9.9 + 1.19.4 + 1.5.18 + 1.0.5 + 1.0.0 + 2.9.9 + + 4.13 + 3.1.5 + 3.0.4 + 0.3.5 + + UTF-8 + + diff --git a/samples/client/petstore/scala-httpclient-deprecated/project/build.properties b/samples/client/petstore/scala-httpclient-deprecated/project/build.properties new file mode 100644 index 00000000000..c0bab04941d --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.2.8 diff --git a/samples/client/petstore/scala-httpclient-deprecated/settings.gradle b/samples/client/petstore/scala-httpclient-deprecated/settings.gradle new file mode 100644 index 00000000000..526dd2d0ab4 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "scala-legacy-petstore" \ No newline at end of file diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/ApiResponse.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/ApiResponse.scala new file mode 100644 index 00000000000..be741231329 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/ApiResponse.scala @@ -0,0 +1,21 @@ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.client.model + + +case class ApiResponse ( + code: Option[Integer] = None, + `type`: Option[String] = None, + message: Option[String] = None +) + diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Category.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Category.scala new file mode 100644 index 00000000000..be3307b8f8e --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Category.scala @@ -0,0 +1,20 @@ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.client.model + + +case class Category ( + id: Option[Long] = None, + name: Option[String] = None +) + diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Order.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Order.scala new file mode 100644 index 00000000000..d0ca63b5091 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Order.scala @@ -0,0 +1,26 @@ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.client.model + +import java.util.Date + +case class Order ( + id: Option[Long] = None, + petId: Option[Long] = None, + quantity: Option[Integer] = None, + shipDate: Option[Date] = None, + // Order Status + status: Option[String] = None, + complete: Option[Boolean] = None +) + diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Pet.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Pet.scala new file mode 100644 index 00000000000..2de76ae3588 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Pet.scala @@ -0,0 +1,25 @@ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.client.model + + +case class Pet ( + id: Option[Long] = None, + category: Option[Category] = None, + name: String, + photoUrls: List[String], + tags: Option[List[Tag]] = None, + // pet status in the store + status: Option[String] = None +) + diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Tag.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Tag.scala new file mode 100644 index 00000000000..6fbabf7ed63 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/Tag.scala @@ -0,0 +1,20 @@ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.client.model + + +case class Tag ( + id: Option[Long] = None, + name: Option[String] = None +) + diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/User.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/User.scala new file mode 100644 index 00000000000..fc24b101e8b --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/User.scala @@ -0,0 +1,27 @@ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.client.model + + +case class User ( + id: Option[Long] = None, + username: Option[String] = None, + firstName: Option[String] = None, + lastName: Option[String] = None, + email: Option[String] = None, + password: Option[String] = None, + phone: Option[String] = None, + // User Status + userStatus: Option[Integer] = None +) + diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/api/PetApi.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/api/PetApi.scala new file mode 100644 index 00000000000..bb58587307e --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/api/PetApi.scala @@ -0,0 +1,476 @@ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.example.api + +import java.text.SimpleDateFormat + +import org.openapitools.client.model.ApiResponse +import java.io.File +import org.openapitools.client.model.Pet +import org.openapitools.example.invoker.{ApiInvoker, ApiException} + +import collection.mutable +import com.sun.jersey.multipart.FormDataMultiPart +import com.sun.jersey.multipart.file.FileDataBodyPart +import com.wordnik.swagger.client._ +import com.wordnik.swagger.client.ClientResponseReaders.Json4sFormatsReader._ +import com.wordnik.swagger.client.RequestWriters.Json4sFormatsWriter._ +import javax.ws.rs.core.Response.Status.Family + +import java.net.URI +import java.io.File +import java.util.Date +import java.util.TimeZone +import javax.ws.rs.core.{MediaType, Response} + +import scala.concurrent.ExecutionContext.Implicits.global +import scala.concurrent._ +import scala.concurrent.duration._ +import scala.collection.mutable.HashMap +import scala.util.{Failure, Success, Try} + +import org.json4s._ + +class PetApi( + val defBasePath: String = "http://petstore.swagger.io/v2", + defApiInvoker: ApiInvoker = ApiInvoker +) { + private lazy val dateTimeFormatter = { + val formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ") + formatter.setTimeZone(TimeZone.getTimeZone("UTC")) + formatter + } + private val dateFormatter = { + val formatter = new SimpleDateFormat("yyyy-MM-dd") + formatter.setTimeZone(TimeZone.getTimeZone("UTC")) + formatter + } + implicit val formats = new org.json4s.DefaultFormats { + override def dateFormatter = dateTimeFormatter + } + implicit val stringReader: ClientResponseReader[String] = ClientResponseReaders.StringReader + implicit val unitReader: ClientResponseReader[Unit] = ClientResponseReaders.UnitReader + implicit val jvalueReader: ClientResponseReader[JValue] = ClientResponseReaders.JValueReader + implicit val jsonReader: ClientResponseReader[Nothing] = JsonFormatsReader + implicit val stringWriter: RequestWriter[String] = RequestWriters.StringWriter + implicit val jsonWriter: RequestWriter[Nothing] = JsonFormatsWriter + + var basePath: String = defBasePath + var apiInvoker: ApiInvoker = defApiInvoker + + def addHeader(key: String, value: String): mutable.HashMap[String, String] = { + apiInvoker.defaultHeaders += key -> value + } + + val config: SwaggerConfig = SwaggerConfig.forUrl(new URI(defBasePath)) + val client = new RestClient(config) + val helper = new PetApiAsyncHelper(client, config) + + /** + * Add a new pet to the store + * + * + * @param pet Pet object that needs to be added to the store + * @return Pet + */ + def addPet(pet: Pet): Option[Pet] = { + val await = Try(Await.result(addPetAsync(pet), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Add a new pet to the store asynchronously + * + * + * @param pet Pet object that needs to be added to the store + * @return Future(Pet) + */ + def addPetAsync(pet: Pet): Future[Pet] = { + helper.addPet(pet) + } + + /** + * Deletes a pet + * + * + * @param petId Pet id to delete + * @param apiKey (optional) + * @return void + */ + def deletePet(petId: Long, apiKey: Option[String] = None) = { + val await = Try(Await.result(deletePetAsync(petId, apiKey), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Deletes a pet asynchronously + * + * + * @param petId Pet id to delete + * @param apiKey (optional) + * @return Future(void) + */ + def deletePetAsync(petId: Long, apiKey: Option[String] = None) = { + helper.deletePet(petId, apiKey) + } + + /** + * Finds Pets by status + * Multiple status values can be provided with comma separated strings + * + * @param status Status values that need to be considered for filter + * @return List[Pet] + */ + def findPetsByStatus(status: List[String]): Option[List[Pet]] = { + val await = Try(Await.result(findPetsByStatusAsync(status), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Finds Pets by status asynchronously + * Multiple status values can be provided with comma separated strings + * + * @param status Status values that need to be considered for filter + * @return Future(List[Pet]) + */ + def findPetsByStatusAsync(status: List[String]): Future[List[Pet]] = { + helper.findPetsByStatus(status) + } + + /** + * Finds Pets by tags + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @param tags Tags to filter by + * @return List[Pet] + */ + def findPetsByTags(tags: List[String]): Option[List[Pet]] = { + val await = Try(Await.result(findPetsByTagsAsync(tags), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Finds Pets by tags asynchronously + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * + * @param tags Tags to filter by + * @return Future(List[Pet]) + */ + def findPetsByTagsAsync(tags: List[String]): Future[List[Pet]] = { + helper.findPetsByTags(tags) + } + + /** + * Find pet by ID + * Returns a single pet + * + * @param petId ID of pet to return + * @return Pet + */ + def getPetById(petId: Long): Option[Pet] = { + val await = Try(Await.result(getPetByIdAsync(petId), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Find pet by ID asynchronously + * Returns a single pet + * + * @param petId ID of pet to return + * @return Future(Pet) + */ + def getPetByIdAsync(petId: Long): Future[Pet] = { + helper.getPetById(petId) + } + + /** + * Update an existing pet + * + * + * @param pet Pet object that needs to be added to the store + * @return Pet + */ + def updatePet(pet: Pet): Option[Pet] = { + val await = Try(Await.result(updatePetAsync(pet), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Update an existing pet asynchronously + * + * + * @param pet Pet object that needs to be added to the store + * @return Future(Pet) + */ + def updatePetAsync(pet: Pet): Future[Pet] = { + helper.updatePet(pet) + } + + /** + * Updates a pet in the store with form data + * + * + * @param petId ID of pet that needs to be updated + * @param name Updated name of the pet (optional) + * @param status Updated status of the pet (optional) + * @return void + */ + def updatePetWithForm(petId: Long, name: Option[String] = None, status: Option[String] = None) = { + val await = Try(Await.result(updatePetWithFormAsync(petId, name, status), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Updates a pet in the store with form data asynchronously + * + * + * @param petId ID of pet that needs to be updated + * @param name Updated name of the pet (optional) + * @param status Updated status of the pet (optional) + * @return Future(void) + */ + def updatePetWithFormAsync(petId: Long, name: Option[String] = None, status: Option[String] = None) = { + helper.updatePetWithForm(petId, name, status) + } + + /** + * uploads an image + * + * + * @param petId ID of pet to update + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return ApiResponse + */ + def uploadFile(petId: Long, additionalMetadata: Option[String] = None, file: Option[File] = None): Option[ApiResponse] = { + val await = Try(Await.result(uploadFileAsync(petId, additionalMetadata, file), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * uploads an image asynchronously + * + * + * @param petId ID of pet to update + * @param additionalMetadata Additional data to pass to server (optional) + * @param file file to upload (optional) + * @return Future(ApiResponse) + */ + def uploadFileAsync(petId: Long, additionalMetadata: Option[String] = None, file: Option[File] = None): Future[ApiResponse] = { + helper.uploadFile(petId, additionalMetadata, file) + } + +} + +class PetApiAsyncHelper(client: TransportClient, config: SwaggerConfig) extends ApiClient(client, config) { + + def addPet(pet: Pet)(implicit reader: ClientResponseReader[Pet], writer: RequestWriter[Pet]): Future[Pet] = { + // create path and map variables + val path = (addFmt("/pet")) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (pet == null) throw new Exception("Missing required parameter 'pet' when calling PetApi->addPet") + + val resFuture = client.submit("POST", path, queryParams.toMap, headerParams.toMap, writer.write(pet)) + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def deletePet(petId: Long, + apiKey: Option[String] = None + )(implicit reader: ClientResponseReader[Unit]): Future[Unit] = { + // create path and map variables + val path = (addFmt("/pet/{petId}") + replaceAll("\\{" + "petId" + "\\}", petId.toString)) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + apiKey match { + case Some(param) => headerParams += "api_key" -> param.toString + case _ => headerParams + } + + val resFuture = client.submit("DELETE", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def findPetsByStatus(status: List[String])(implicit reader: ClientResponseReader[List[Pet]]): Future[List[Pet]] = { + // create path and map variables + val path = (addFmt("/pet/findByStatus")) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (status == null) throw new Exception("Missing required parameter 'status' when calling PetApi->findPetsByStatus") + queryParams += "status" -> status.toString + + val resFuture = client.submit("GET", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def findPetsByTags(tags: List[String])(implicit reader: ClientResponseReader[List[Pet]]): Future[List[Pet]] = { + // create path and map variables + val path = (addFmt("/pet/findByTags")) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (tags == null) throw new Exception("Missing required parameter 'tags' when calling PetApi->findPetsByTags") + queryParams += "tags" -> tags.toString + + val resFuture = client.submit("GET", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def getPetById(petId: Long)(implicit reader: ClientResponseReader[Pet]): Future[Pet] = { + // create path and map variables + val path = (addFmt("/pet/{petId}") + replaceAll("\\{" + "petId" + "\\}", petId.toString)) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + + val resFuture = client.submit("GET", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def updatePet(pet: Pet)(implicit reader: ClientResponseReader[Pet], writer: RequestWriter[Pet]): Future[Pet] = { + // create path and map variables + val path = (addFmt("/pet")) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (pet == null) throw new Exception("Missing required parameter 'pet' when calling PetApi->updatePet") + + val resFuture = client.submit("PUT", path, queryParams.toMap, headerParams.toMap, writer.write(pet)) + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def updatePetWithForm(petId: Long, + name: Option[String] = None, + status: Option[String] = None + )(implicit reader: ClientResponseReader[Unit]): Future[Unit] = { + // create path and map variables + val path = (addFmt("/pet/{petId}") + replaceAll("\\{" + "petId" + "\\}", petId.toString)) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + + val resFuture = client.submit("POST", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def uploadFile(petId: Long, + additionalMetadata: Option[String] = None, + file: Option[File] = None + )(implicit reader: ClientResponseReader[ApiResponse]): Future[ApiResponse] = { + // create path and map variables + val path = (addFmt("/pet/{petId}/uploadImage") + replaceAll("\\{" + "petId" + "\\}", petId.toString)) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + + val resFuture = client.submit("POST", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + +} diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/api/StoreApi.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/api/StoreApi.scala new file mode 100644 index 00000000000..949585575e9 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/api/StoreApi.scala @@ -0,0 +1,265 @@ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.example.api + +import java.text.SimpleDateFormat + +import org.openapitools.client.model.Order +import org.openapitools.example.invoker.{ApiInvoker, ApiException} + +import collection.mutable +import com.sun.jersey.multipart.FormDataMultiPart +import com.sun.jersey.multipart.file.FileDataBodyPart +import com.wordnik.swagger.client._ +import com.wordnik.swagger.client.ClientResponseReaders.Json4sFormatsReader._ +import com.wordnik.swagger.client.RequestWriters.Json4sFormatsWriter._ +import javax.ws.rs.core.Response.Status.Family + +import java.net.URI +import java.io.File +import java.util.Date +import java.util.TimeZone +import javax.ws.rs.core.{MediaType, Response} + +import scala.concurrent.ExecutionContext.Implicits.global +import scala.concurrent._ +import scala.concurrent.duration._ +import scala.collection.mutable.HashMap +import scala.util.{Failure, Success, Try} + +import org.json4s._ + +class StoreApi( + val defBasePath: String = "http://petstore.swagger.io/v2", + defApiInvoker: ApiInvoker = ApiInvoker +) { + private lazy val dateTimeFormatter = { + val formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ") + formatter.setTimeZone(TimeZone.getTimeZone("UTC")) + formatter + } + private val dateFormatter = { + val formatter = new SimpleDateFormat("yyyy-MM-dd") + formatter.setTimeZone(TimeZone.getTimeZone("UTC")) + formatter + } + implicit val formats = new org.json4s.DefaultFormats { + override def dateFormatter = dateTimeFormatter + } + implicit val stringReader: ClientResponseReader[String] = ClientResponseReaders.StringReader + implicit val unitReader: ClientResponseReader[Unit] = ClientResponseReaders.UnitReader + implicit val jvalueReader: ClientResponseReader[JValue] = ClientResponseReaders.JValueReader + implicit val jsonReader: ClientResponseReader[Nothing] = JsonFormatsReader + implicit val stringWriter: RequestWriter[String] = RequestWriters.StringWriter + implicit val jsonWriter: RequestWriter[Nothing] = JsonFormatsWriter + + var basePath: String = defBasePath + var apiInvoker: ApiInvoker = defApiInvoker + + def addHeader(key: String, value: String): mutable.HashMap[String, String] = { + apiInvoker.defaultHeaders += key -> value + } + + val config: SwaggerConfig = SwaggerConfig.forUrl(new URI(defBasePath)) + val client = new RestClient(config) + val helper = new StoreApiAsyncHelper(client, config) + + /** + * Delete purchase order by ID + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * + * @param orderId ID of the order that needs to be deleted + * @return void + */ + def deleteOrder(orderId: String) = { + val await = Try(Await.result(deleteOrderAsync(orderId), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Delete purchase order by ID asynchronously + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * + * @param orderId ID of the order that needs to be deleted + * @return Future(void) + */ + def deleteOrderAsync(orderId: String) = { + helper.deleteOrder(orderId) + } + + /** + * Returns pet inventories by status + * Returns a map of status codes to quantities + * + * @return Map[String, Integer] + */ + def getInventory(): Option[Map[String, Integer]] = { + val await = Try(Await.result(getInventoryAsync(), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Returns pet inventories by status asynchronously + * Returns a map of status codes to quantities + * + * @return Future(Map[String, Integer]) + */ + def getInventoryAsync(): Future[Map[String, Integer]] = { + helper.getInventory() + } + + /** + * Find purchase order by ID + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * + * @param orderId ID of pet that needs to be fetched + * @return Order + */ + def getOrderById(orderId: Long): Option[Order] = { + val await = Try(Await.result(getOrderByIdAsync(orderId), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Find purchase order by ID asynchronously + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * + * @param orderId ID of pet that needs to be fetched + * @return Future(Order) + */ + def getOrderByIdAsync(orderId: Long): Future[Order] = { + helper.getOrderById(orderId) + } + + /** + * Place an order for a pet + * + * + * @param order order placed for purchasing the pet + * @return Order + */ + def placeOrder(order: Order): Option[Order] = { + val await = Try(Await.result(placeOrderAsync(order), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Place an order for a pet asynchronously + * + * + * @param order order placed for purchasing the pet + * @return Future(Order) + */ + def placeOrderAsync(order: Order): Future[Order] = { + helper.placeOrder(order) + } + +} + +class StoreApiAsyncHelper(client: TransportClient, config: SwaggerConfig) extends ApiClient(client, config) { + + def deleteOrder(orderId: String)(implicit reader: ClientResponseReader[Unit]): Future[Unit] = { + // create path and map variables + val path = (addFmt("/store/order/{orderId}") + replaceAll("\\{" + "orderId" + "\\}", orderId.toString)) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (orderId == null) throw new Exception("Missing required parameter 'orderId' when calling StoreApi->deleteOrder") + + + val resFuture = client.submit("DELETE", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def getInventory()(implicit reader: ClientResponseReader[Map[String, Integer]]): Future[Map[String, Integer]] = { + // create path and map variables + val path = (addFmt("/store/inventory")) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + + val resFuture = client.submit("GET", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def getOrderById(orderId: Long)(implicit reader: ClientResponseReader[Order]): Future[Order] = { + // create path and map variables + val path = (addFmt("/store/order/{orderId}") + replaceAll("\\{" + "orderId" + "\\}", orderId.toString)) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + + val resFuture = client.submit("GET", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def placeOrder(order: Order)(implicit reader: ClientResponseReader[Order], writer: RequestWriter[Order]): Future[Order] = { + // create path and map variables + val path = (addFmt("/store/order")) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (order == null) throw new Exception("Missing required parameter 'order' when calling StoreApi->placeOrder") + + val resFuture = client.submit("POST", path, queryParams.toMap, headerParams.toMap, writer.write(order)) + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + +} diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/api/UserApi.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/api/UserApi.scala new file mode 100644 index 00000000000..d39a90e5741 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/api/UserApi.scala @@ -0,0 +1,465 @@ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.example.api + +import java.text.SimpleDateFormat + +import org.openapitools.client.model.User +import org.openapitools.example.invoker.{ApiInvoker, ApiException} + +import collection.mutable +import com.sun.jersey.multipart.FormDataMultiPart +import com.sun.jersey.multipart.file.FileDataBodyPart +import com.wordnik.swagger.client._ +import com.wordnik.swagger.client.ClientResponseReaders.Json4sFormatsReader._ +import com.wordnik.swagger.client.RequestWriters.Json4sFormatsWriter._ +import javax.ws.rs.core.Response.Status.Family + +import java.net.URI +import java.io.File +import java.util.Date +import java.util.TimeZone +import javax.ws.rs.core.{MediaType, Response} + +import scala.concurrent.ExecutionContext.Implicits.global +import scala.concurrent._ +import scala.concurrent.duration._ +import scala.collection.mutable.HashMap +import scala.util.{Failure, Success, Try} + +import org.json4s._ + +class UserApi( + val defBasePath: String = "http://petstore.swagger.io/v2", + defApiInvoker: ApiInvoker = ApiInvoker +) { + private lazy val dateTimeFormatter = { + val formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ") + formatter.setTimeZone(TimeZone.getTimeZone("UTC")) + formatter + } + private val dateFormatter = { + val formatter = new SimpleDateFormat("yyyy-MM-dd") + formatter.setTimeZone(TimeZone.getTimeZone("UTC")) + formatter + } + implicit val formats = new org.json4s.DefaultFormats { + override def dateFormatter = dateTimeFormatter + } + implicit val stringReader: ClientResponseReader[String] = ClientResponseReaders.StringReader + implicit val unitReader: ClientResponseReader[Unit] = ClientResponseReaders.UnitReader + implicit val jvalueReader: ClientResponseReader[JValue] = ClientResponseReaders.JValueReader + implicit val jsonReader: ClientResponseReader[Nothing] = JsonFormatsReader + implicit val stringWriter: RequestWriter[String] = RequestWriters.StringWriter + implicit val jsonWriter: RequestWriter[Nothing] = JsonFormatsWriter + + var basePath: String = defBasePath + var apiInvoker: ApiInvoker = defApiInvoker + + def addHeader(key: String, value: String): mutable.HashMap[String, String] = { + apiInvoker.defaultHeaders += key -> value + } + + val config: SwaggerConfig = SwaggerConfig.forUrl(new URI(defBasePath)) + val client = new RestClient(config) + val helper = new UserApiAsyncHelper(client, config) + + /** + * Create user + * This can only be done by the logged in user. + * + * @param user Created user object + * @return void + */ + def createUser(user: User) = { + val await = Try(Await.result(createUserAsync(user), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Create user asynchronously + * This can only be done by the logged in user. + * + * @param user Created user object + * @return Future(void) + */ + def createUserAsync(user: User) = { + helper.createUser(user) + } + + /** + * Creates list of users with given input array + * + * + * @param user List of user object + * @return void + */ + def createUsersWithArrayInput(user: List[User]) = { + val await = Try(Await.result(createUsersWithArrayInputAsync(user), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Creates list of users with given input array asynchronously + * + * + * @param user List of user object + * @return Future(void) + */ + def createUsersWithArrayInputAsync(user: List[User]) = { + helper.createUsersWithArrayInput(user) + } + + /** + * Creates list of users with given input array + * + * + * @param user List of user object + * @return void + */ + def createUsersWithListInput(user: List[User]) = { + val await = Try(Await.result(createUsersWithListInputAsync(user), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Creates list of users with given input array asynchronously + * + * + * @param user List of user object + * @return Future(void) + */ + def createUsersWithListInputAsync(user: List[User]) = { + helper.createUsersWithListInput(user) + } + + /** + * Delete user + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted + * @return void + */ + def deleteUser(username: String) = { + val await = Try(Await.result(deleteUserAsync(username), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Delete user asynchronously + * This can only be done by the logged in user. + * + * @param username The name that needs to be deleted + * @return Future(void) + */ + def deleteUserAsync(username: String) = { + helper.deleteUser(username) + } + + /** + * Get user by user name + * + * + * @param username The name that needs to be fetched. Use user1 for testing. + * @return User + */ + def getUserByName(username: String): Option[User] = { + val await = Try(Await.result(getUserByNameAsync(username), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Get user by user name asynchronously + * + * + * @param username The name that needs to be fetched. Use user1 for testing. + * @return Future(User) + */ + def getUserByNameAsync(username: String): Future[User] = { + helper.getUserByName(username) + } + + /** + * Logs user into the system + * + * + * @param username The user name for login + * @param password The password for login in clear text + * @return String + */ + def loginUser(username: String, password: String): Option[String] = { + val await = Try(Await.result(loginUserAsync(username, password), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Logs user into the system asynchronously + * + * + * @param username The user name for login + * @param password The password for login in clear text + * @return Future(String) + */ + def loginUserAsync(username: String, password: String): Future[String] = { + helper.loginUser(username, password) + } + + /** + * Logs out current logged in user session + * + * + * @return void + */ + def logoutUser() = { + val await = Try(Await.result(logoutUserAsync(), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Logs out current logged in user session asynchronously + * + * + * @return Future(void) + */ + def logoutUserAsync() = { + helper.logoutUser() + } + + /** + * Updated user + * This can only be done by the logged in user. + * + * @param username name that need to be deleted + * @param user Updated user object + * @return void + */ + def updateUser(username: String, user: User) = { + val await = Try(Await.result(updateUserAsync(username, user), Duration.Inf)) + await match { + case Success(i) => Some(await.get) + case Failure(t) => None + } + } + + /** + * Updated user asynchronously + * This can only be done by the logged in user. + * + * @param username name that need to be deleted + * @param user Updated user object + * @return Future(void) + */ + def updateUserAsync(username: String, user: User) = { + helper.updateUser(username, user) + } + +} + +class UserApiAsyncHelper(client: TransportClient, config: SwaggerConfig) extends ApiClient(client, config) { + + def createUser(user: User)(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[User]): Future[Unit] = { + // create path and map variables + val path = (addFmt("/user")) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (user == null) throw new Exception("Missing required parameter 'user' when calling UserApi->createUser") + + val resFuture = client.submit("POST", path, queryParams.toMap, headerParams.toMap, writer.write(user)) + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def createUsersWithArrayInput(user: List[User])(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[List[User]]): Future[Unit] = { + // create path and map variables + val path = (addFmt("/user/createWithArray")) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (user == null) throw new Exception("Missing required parameter 'user' when calling UserApi->createUsersWithArrayInput") + + val resFuture = client.submit("POST", path, queryParams.toMap, headerParams.toMap, writer.write(user)) + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def createUsersWithListInput(user: List[User])(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[List[User]]): Future[Unit] = { + // create path and map variables + val path = (addFmt("/user/createWithList")) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (user == null) throw new Exception("Missing required parameter 'user' when calling UserApi->createUsersWithListInput") + + val resFuture = client.submit("POST", path, queryParams.toMap, headerParams.toMap, writer.write(user)) + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def deleteUser(username: String)(implicit reader: ClientResponseReader[Unit]): Future[Unit] = { + // create path and map variables + val path = (addFmt("/user/{username}") + replaceAll("\\{" + "username" + "\\}", username.toString)) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (username == null) throw new Exception("Missing required parameter 'username' when calling UserApi->deleteUser") + + + val resFuture = client.submit("DELETE", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def getUserByName(username: String)(implicit reader: ClientResponseReader[User]): Future[User] = { + // create path and map variables + val path = (addFmt("/user/{username}") + replaceAll("\\{" + "username" + "\\}", username.toString)) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (username == null) throw new Exception("Missing required parameter 'username' when calling UserApi->getUserByName") + + + val resFuture = client.submit("GET", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def loginUser(username: String, + password: String)(implicit reader: ClientResponseReader[String]): Future[String] = { + // create path and map variables + val path = (addFmt("/user/login")) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (username == null) throw new Exception("Missing required parameter 'username' when calling UserApi->loginUser") + + if (password == null) throw new Exception("Missing required parameter 'password' when calling UserApi->loginUser") + + queryParams += "username" -> username.toString + queryParams += "password" -> password.toString + + val resFuture = client.submit("GET", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def logoutUser()(implicit reader: ClientResponseReader[Unit]): Future[Unit] = { + // create path and map variables + val path = (addFmt("/user/logout")) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + + val resFuture = client.submit("GET", path, queryParams.toMap, headerParams.toMap, "") + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + def updateUser(username: String, + user: User)(implicit reader: ClientResponseReader[Unit], writer: RequestWriter[User]): Future[Unit] = { + // create path and map variables + val path = (addFmt("/user/{username}") + replaceAll("\\{" + "username" + "\\}", username.toString)) + + // query params + val queryParams = new mutable.HashMap[String, String] + val headerParams = new mutable.HashMap[String, String] + + if (username == null) throw new Exception("Missing required parameter 'username' when calling UserApi->updateUser") + + if (user == null) throw new Exception("Missing required parameter 'user' when calling UserApi->updateUser") + + val resFuture = client.submit("PUT", path, queryParams.toMap, headerParams.toMap, writer.write(user)) + resFuture flatMap { resp => + val status = Response.Status.fromStatusCode(resp.statusCode) + status.getFamily match { + case Family.SUCCESSFUL | Family.REDIRECTION | Family.INFORMATIONAL => process(reader.read(resp)) + case _ => throw new ApiException(resp.statusCode, resp.statusText) + } + } + } + + +} diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/invoker/ApiInvoker.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/invoker/ApiInvoker.scala new file mode 100644 index 00000000000..f04c9fa6a1e --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/invoker/ApiInvoker.scala @@ -0,0 +1,237 @@ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.example.invoker + +import com.sun.jersey.api.client.Client +import com.sun.jersey.api.client.ClientResponse +import com.sun.jersey.api.client.config.ClientConfig +import com.sun.jersey.api.client.config.DefaultClientConfig +import com.sun.jersey.api.client.filter.LoggingFilter + +import com.sun.jersey.core.util.MultivaluedMapImpl +import com.sun.jersey.multipart.FormDataMultiPart +import com.sun.jersey.multipart.file.FileDataBodyPart + +import java.io.File +import java.net.URLEncoder +import java.util.UUID +import javax.ws.rs.core.MediaType + +import scala.collection.JavaConverters._ +import scala.collection.mutable + +import com.fasterxml.jackson.module.scala.DefaultScalaModule +import com.fasterxml.jackson.datatype.joda.JodaModule +import com.fasterxml.jackson.core.JsonGenerator.Feature +import com.fasterxml.jackson.databind._ +import com.fasterxml.jackson.annotation._ +import com.fasterxml.jackson.databind.annotation.JsonSerialize + +object ScalaJsonUtil { + def getJsonMapper: ObjectMapper = { + val mapper = new ObjectMapper() + mapper.registerModule(new DefaultScalaModule()) + mapper.registerModule(new JodaModule()) + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL) + mapper.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT) + mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) + mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY) + mapper + } +} + +class ApiInvoker(val mapper: ObjectMapper = ScalaJsonUtil.getJsonMapper, + httpHeaders: mutable.HashMap[String, String] = mutable.HashMap(), + hostMap: mutable.HashMap[String, Client] = mutable.HashMap(), + asyncHttpClient: Boolean = false, + authScheme: String = "", + authPreemptive: Boolean = false +) { + + var defaultHeaders: mutable.HashMap[String, String] = httpHeaders + + def escape(value: String): String = { + URLEncoder.encode(value, "utf-8").replaceAll("\\+", "%20") + } + def escape(values: List[String]): String = { + values.map(escape).mkString(",") + } + + def escape(value: Long): String = value.toString + def escape(value: Double): String = value.toString + def escape(value: Float): String = value.toString + def escape(value: UUID): String = value.toString + + def deserialize(json: String, containerType: String, cls: Class[_]) = { + if (cls == classOf[String]) { + json match { + case s: String => + if (s.startsWith("\"") && s.endsWith("\"") && s.length > 1) { + s.substring(1, s.length - 1) + } else { + s + } + case _ => null + } + } else { + containerType.toLowerCase match { + case "array" => + val typeInfo = mapper.getTypeFactory.constructCollectionType(classOf[java.util.List[_]], cls) + val response = mapper.readValue(json, typeInfo).asInstanceOf[java.util.List[_]] + response.asScala.toList + case "list" => + val typeInfo = mapper.getTypeFactory.constructCollectionType(classOf[java.util.List[_]], cls) + val response = mapper.readValue(json, typeInfo).asInstanceOf[java.util.List[_]] + response.asScala.toList + case _ => + json match { + case e: String if "\"\"" == e => null + case _ => mapper.readValue(json, cls) + } + } + } + } + + def serialize(obj: AnyRef): String = { + if (obj != null) { + obj match { + case e: List[_] => mapper.writeValueAsString(obj.asInstanceOf[List[_]].asJava) + case _ => mapper.writeValueAsString(obj) + } + } else { + null + } + } + + def invokeApi( + host: String, + path: String, + method: String, + queryParams: Map[String, String], + formParams: Map[String, String], + body: AnyRef, + headerParams: Map[String, String], + contentType: String +): String = { + val client = getClient(host) + + val querystring = queryParams.filter(k => k._2 != null).map(k => escape(k._1) + "=" + escape(k._2)).mkString("?", "&", "") + val builder = client.resource(host + path + querystring).accept(contentType) + headerParams.map(p => builder.header(p._1, p._2)) + defaultHeaders.foreach(p => { + if (!headerParams.contains(p._1) && p._2 != null) { + builder.header(p._1, p._2) + } + }) + var formData: MultivaluedMapImpl = null + if (contentType == "application/x-www-form-urlencoded") { + formData = new MultivaluedMapImpl() + formParams.foreach(p => formData.add(p._1, p._2)) + } + + val response: ClientResponse = method match { + case "GET" => builder.get(classOf[ClientResponse]) + case "POST" => + if (formData != null && formData.size() > 0) { + builder.post(classOf[ClientResponse], formData) + } else if (body != null && body.isInstanceOf[File]) { + val file = body.asInstanceOf[File] + val form = new FormDataMultiPart() + form.field("filename", file.getName) + form.bodyPart(new FileDataBodyPart("file", file, MediaType.MULTIPART_FORM_DATA_TYPE)) + builder.post(classOf[ClientResponse], form) + } else { + if (body == null) { + builder.post(classOf[ClientResponse], serialize(body)) + } else { + builder.`type`(contentType).post(classOf[ClientResponse], serialize(body)) + } + } + case "PUT" => + if (formData != null) { + builder.post(classOf[ClientResponse], formData) + } else if (body == null) { + builder.put(classOf[ClientResponse], null) + } else { + builder.`type`(contentType).put(classOf[ClientResponse], serialize(body)) + } + case "DELETE" => builder.delete(classOf[ClientResponse]) + case "PATCH" => + if(formData != null) { + builder.header("X-HTTP-Method-Override", "PATCH").post(classOf[ClientResponse], formData) + } else if(body == null) { + builder.header("X-HTTP-Method-Override", "PATCH").post(classOf[ClientResponse], null) + } else { + builder.header("X-HTTP-Method-Override", "PATCH").`type`(contentType).post(classOf[ClientResponse], serialize(body)) + } + case _ => null + } + response.getStatusInfo.getStatusCode match { + case 204 => "" + case code: Int if Range(200, 299).contains(code) => + if (response.hasEntity) { + response.getEntity(classOf[String]) + } else { + "" + } + case _ => + val entity = if (response.hasEntity) { + response.getEntity(classOf[String]) + } else { + "no data" + } + throw new ApiException(response.getStatusInfo.getStatusCode, entity) + } + } + + def getClient(host: String): Client = { + if (hostMap.contains(host)) { + hostMap(host) + } else { + val client = newClient(host) + // client.addFilter(new LoggingFilter()) + hostMap += host -> client + client + } + } + + def newClient(host: String): Client = if (asyncHttpClient) { + import com.ning.http.client.Realm + import org.sonatype.spice.jersey.client.ahc.AhcHttpClient + import org.sonatype.spice.jersey.client.ahc.config.DefaultAhcConfig + + val config: DefaultAhcConfig = new DefaultAhcConfig() + if (!authScheme.isEmpty) { + val authSchemeEnum = Realm.AuthScheme.valueOf(authScheme) + config + .getAsyncHttpClientConfigBuilder + .setRealm(new Realm.RealmBuilder().setScheme(authSchemeEnum) + .setUsePreemptiveAuth(authPreemptive).build) + } + AhcHttpClient.create(config) + } else { + Client.create() + } +} + +object ApiInvoker extends ApiInvoker( + mapper = ScalaJsonUtil.getJsonMapper, + httpHeaders = mutable.HashMap(), + hostMap = mutable.HashMap(), + asyncHttpClient = false, + authScheme = "", + authPreemptive = false +) + +class ApiException(val code: Int, msg: String) extends RuntimeException(msg) diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/invoker/AsyncClient.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/invoker/AsyncClient.scala new file mode 100644 index 00000000000..60e423b51cb --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/example/invoker/AsyncClient.scala @@ -0,0 +1,20 @@ +package org.openapitools.example.invoker + +import org.openapitools.example.api._ + +import com.wordnik.swagger.client._ + +import java.io.Closeable + +class AsyncClient(config: SwaggerConfig) extends Closeable { + lazy val locator: ServiceLocator = config.locator + lazy val name: String = config.name + + private[this] val client = transportClient + + protected def transportClient: TransportClient = new RestClient(config) + + def close() { + client.close() + } +} From 95a11a7f5d724d6517401fb1a5e9ad551d24dfdb Mon Sep 17 00:00:00 2001 From: Guillaume TOURBIER Date: Fri, 18 Jun 2021 10:03:38 +0200 Subject: [PATCH 143/192] [Java][WebClient] add ResponseEntity return for webclient (#9327) * feat: add ResponseEntity return for webclient fix: #5599 * refactor: merge functions simplification to avoir duplicated code --- .gitattributes | 1 + .../libraries/webclient/ApiClient.mustache | 27 +- .../Java/libraries/webclient/api.mustache | 28 +- .../org/openapitools/client/ApiClient.java | 27 +- .../client/api/AnotherFakeApi.java | 22 +- .../org/openapitools/client/api/FakeApi.java | 306 +++++++++++++++++- .../client/api/FakeClassnameTags123Api.java | 22 +- .../org/openapitools/client/api/PetApi.java | 198 +++++++++++- .../org/openapitools/client/api/StoreApi.java | 84 ++++- .../org/openapitools/client/api/UserApi.java | 162 +++++++++- 10 files changed, 788 insertions(+), 89 deletions(-) diff --git a/.gitattributes b/.gitattributes index def43c73b65..86e3f4ed4b1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ **/*.mustache linguist-vendored=true +* text=auto eol=lf diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache index 8c3ae87ef01..677b8304f80 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache @@ -31,6 +31,7 @@ import org.springframework.http.client.reactive.ClientHttpRequest; import org.springframework.web.client.RestClientException; import org.springframework.web.util.UriComponentsBuilder; import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClient.ResponseSpec; import org.springframework.web.reactive.function.client.ClientResponse; import org.springframework.web.reactive.function.BodyInserter; import org.springframework.web.reactive.function.BodyInserters; @@ -604,31 +605,9 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} { * @param returnType The return type into which to deserialize the response * @return The response body in chosen type */ - public Mono invokeAPI(String path, HttpMethod method, Map pathParams, MultiValueMap queryParams, Object body, HttpHeaders headerParams, MultiValueMap cookieParams, MultiValueMap formParams, List accept, MediaType contentType, String[] authNames, ParameterizedTypeReference returnType) throws RestClientException { + public ResponseSpec invokeAPI(String path, HttpMethod method, Map pathParams, MultiValueMap queryParams, Object body, HttpHeaders headerParams, MultiValueMap cookieParams, MultiValueMap formParams, List accept, MediaType contentType, String[] authNames, ParameterizedTypeReference returnType) throws RestClientException { final WebClient.RequestBodySpec requestBuilder = prepareRequest(path, method, pathParams, queryParams, body, headerParams, cookieParams, formParams, accept, contentType, authNames); - return requestBuilder.retrieve().bodyToMono(returnType); - } - - /** - * Invoke API by sending HTTP request with the given options. - * - * @param the return type to use - * @param path The sub-path of the HTTP URL - * @param method The request method - * @param pathParams The path parameters - * @param queryParams The query parameters - * @param body The request body object - * @param headerParams The header parameters - * @param formParams The form parameters - * @param accept The request's Accept header - * @param contentType The request's Content-Type header - * @param authNames The authentications to apply - * @param returnType The return type into which to deserialize the response - * @return The response body in chosen type - */ - public Flux invokeFluxAPI(String path, HttpMethod method, Map pathParams, MultiValueMap queryParams, Object body, HttpHeaders headerParams, MultiValueMap cookieParams, MultiValueMap formParams, List accept, MediaType contentType, String[] authNames, ParameterizedTypeReference returnType) throws RestClientException { - final WebClient.RequestBodySpec requestBuilder = prepareRequest(path, method, pathParams, queryParams, body, headerParams, cookieParams, formParams, accept, contentType, authNames); - return requestBuilder.retrieve().bodyToFlux(returnType); + return requestBuilder.retrieve(); } private WebClient.RequestBodySpec prepareRequest(String path, HttpMethod method, Map pathParams, MultiValueMap queryParams, Object body, HttpHeaders headerParams, MultiValueMap cookieParams, MultiValueMap formParams, List accept, MediaType contentType, String[] authNames) { diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/api.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/api.mustache index 5fbef45db81..dcd86e45fc9 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/api.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/api.mustache @@ -18,12 +18,14 @@ import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.util.UriComponentsBuilder; import org.springframework.core.ParameterizedTypeReference; +import org.springframework.web.reactive.function.client.WebClient.ResponseSpec; import org.springframework.web.reactive.function.client.WebClientResponseException; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import reactor.core.publisher.Mono; import reactor.core.publisher.Flux; @@ -62,7 +64,7 @@ public class {{classname}} { * @see {{summary}} Documentation {{/externalDocs}} */ - public {{#returnType}}{{#isArray}}Flux<{{{returnBaseType}}}>{{/isArray}}{{^isArray}}Mono<{{{returnType}}}>{{/isArray}} {{/returnType}}{{^returnType}}Mono {{/returnType}}{{operationId}}({{#allParams}}{{#isFile}}{{#useAbstractionForFiles}}{{#collectionFormat}}java.util.Collection{{/collectionFormat}}{{^collectionFormat}}org.springframework.core.io.AbstractResource{{/collectionFormat}}{{/useAbstractionForFiles}}{{^useAbstractionForFiles}}{{{dataType}}}{{/useAbstractionForFiles}}{{/isFile}}{{^isFile}}{{{dataType}}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) throws WebClientResponseException { + private ResponseSpec {{operationId}}RequestCreation({{#allParams}}{{#isFile}}{{#useAbstractionForFiles}}{{#collectionFormat}}java.util.Collection{{/collectionFormat}}{{^collectionFormat}}org.springframework.core.io.AbstractResource{{/collectionFormat}}{{/useAbstractionForFiles}}{{^useAbstractionForFiles}}{{{dataType}}}{{/useAbstractionForFiles}}{{/isFile}}{{^isFile}}{{{dataType}}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) throws WebClientResponseException { Object postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}; {{#allParams}} {{#required}} @@ -125,7 +127,29 @@ public class {{classname}} { String[] localVarAuthNames = new String[] { {{#authMethods}}"{{name}}"{{^-last}}, {{/-last}}{{/authMethods}} }; {{#returnType}}ParameterizedTypeReference<{{#isArray}}{{{returnBaseType}}}{{/isArray}}{{^isArray}}{{{returnType}}}{{/isArray}}> localVarReturnType = new ParameterizedTypeReference<{{#isArray}}{{{returnBaseType}}}{{/isArray}}{{^isArray}}{{{returnType}}}{{/isArray}}>() {};{{/returnType}}{{^returnType}}ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {};{{/returnType}} - return apiClient.{{#isArray}}invokeFluxAPI{{/isArray}}{{^isArray}}invokeAPI{{/isArray}}("{{{path}}}", HttpMethod.{{httpMethod}}, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); + return apiClient.invokeAPI("{{{path}}}", HttpMethod.{{httpMethod}}, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); + } + + /** + * {{summary}} + * {{notes}} +{{#responses}} *

    {{code}}{{#message}} - {{message}}{{/message}} +{{/responses}}{{#allParams}} * @param {{paramName}} {{description}}{{^description}}The {{paramName}} parameter{{/description}} +{{/allParams}}{{#returnType}} * @return {{returnType}} +{{/returnType}} * @throws WebClientResponseException if an error occurs while attempting to invoke the API +{{#externalDocs}} + * {{description}} + * @see {{summary}} Documentation +{{/externalDocs}} + */ + public {{#returnType}}{{#isArray}}Flux<{{{returnBaseType}}}>{{/isArray}}{{^isArray}}Mono<{{{returnType}}}>{{/isArray}} {{/returnType}}{{^returnType}}Mono {{/returnType}}{{operationId}}({{#allParams}}{{#isFile}}{{#useAbstractionForFiles}}{{#collectionFormat}}java.util.Collection{{/collectionFormat}}{{^collectionFormat}}org.springframework.core.io.AbstractResource{{/collectionFormat}}{{/useAbstractionForFiles}}{{^useAbstractionForFiles}}{{{dataType}}}{{/useAbstractionForFiles}}{{/isFile}}{{^isFile}}{{{dataType}}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) throws WebClientResponseException { + {{#returnType}}ParameterizedTypeReference<{{#isArray}}{{{returnBaseType}}}{{/isArray}}{{^isArray}}{{{returnType}}}{{/isArray}}> localVarReturnType = new ParameterizedTypeReference<{{#isArray}}{{{returnBaseType}}}{{/isArray}}{{^isArray}}{{{returnType}}}{{/isArray}}>() {};{{/returnType}}{{^returnType}}ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {};{{/returnType}} + return {{operationId}}RequestCreation({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).{{#isArray}}bodyToFlux{{/isArray}}{{^isArray}}bodyToMono{{/isArray}}(localVarReturnType); + } + + public {{#returnType}}{{#isArray}}Mono>>{{/isArray}}{{^isArray}}Mono>{{/isArray}} {{/returnType}}{{^returnType}}Mono> {{/returnType}}{{operationId}}WithHttpInfo({{#allParams}}{{#isFile}}{{#useAbstractionForFiles}}{{#collectionFormat}}java.util.Collection{{/collectionFormat}}{{^collectionFormat}}org.springframework.core.io.AbstractResource{{/collectionFormat}}{{/useAbstractionForFiles}}{{^useAbstractionForFiles}}{{{dataType}}}{{/useAbstractionForFiles}}{{/isFile}}{{^isFile}}{{{dataType}}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) throws WebClientResponseException { + {{#returnType}}ParameterizedTypeReference<{{#isArray}}{{{returnBaseType}}}{{/isArray}}{{^isArray}}{{{returnType}}}{{/isArray}}> localVarReturnType = new ParameterizedTypeReference<{{#isArray}}{{{returnBaseType}}}{{/isArray}}{{^isArray}}{{{returnType}}}{{/isArray}}>() {};{{/returnType}}{{^returnType}}ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {};{{/returnType}} + return {{operationId}}RequestCreation({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).{{#isArray}}toEntityList{{/isArray}}{{^isArray}}toEntity{{/isArray}}(localVarReturnType); } {{/operation}} } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/ApiClient.java index a5823b9bbb3..ecf56b68430 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/ApiClient.java @@ -29,6 +29,7 @@ import org.springframework.http.client.reactive.ClientHttpRequest; import org.springframework.web.client.RestClientException; import org.springframework.web.util.UriComponentsBuilder; import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClient.ResponseSpec; import org.springframework.web.reactive.function.client.ClientResponse; import org.springframework.web.reactive.function.BodyInserter; import org.springframework.web.reactive.function.BodyInserters; @@ -589,31 +590,9 @@ public class ApiClient extends JavaTimeFormatter { * @param returnType The return type into which to deserialize the response * @return The response body in chosen type */ - public Mono invokeAPI(String path, HttpMethod method, Map pathParams, MultiValueMap queryParams, Object body, HttpHeaders headerParams, MultiValueMap cookieParams, MultiValueMap formParams, List accept, MediaType contentType, String[] authNames, ParameterizedTypeReference returnType) throws RestClientException { + public ResponseSpec invokeAPI(String path, HttpMethod method, Map pathParams, MultiValueMap queryParams, Object body, HttpHeaders headerParams, MultiValueMap cookieParams, MultiValueMap formParams, List accept, MediaType contentType, String[] authNames, ParameterizedTypeReference returnType) throws RestClientException { final WebClient.RequestBodySpec requestBuilder = prepareRequest(path, method, pathParams, queryParams, body, headerParams, cookieParams, formParams, accept, contentType, authNames); - return requestBuilder.retrieve().bodyToMono(returnType); - } - - /** - * Invoke API by sending HTTP request with the given options. - * - * @param the return type to use - * @param path The sub-path of the HTTP URL - * @param method The request method - * @param pathParams The path parameters - * @param queryParams The query parameters - * @param body The request body object - * @param headerParams The header parameters - * @param formParams The form parameters - * @param accept The request's Accept header - * @param contentType The request's Content-Type header - * @param authNames The authentications to apply - * @param returnType The return type into which to deserialize the response - * @return The response body in chosen type - */ - public Flux invokeFluxAPI(String path, HttpMethod method, Map pathParams, MultiValueMap queryParams, Object body, HttpHeaders headerParams, MultiValueMap cookieParams, MultiValueMap formParams, List accept, MediaType contentType, String[] authNames, ParameterizedTypeReference returnType) throws RestClientException { - final WebClient.RequestBodySpec requestBuilder = prepareRequest(path, method, pathParams, queryParams, body, headerParams, cookieParams, formParams, accept, contentType, authNames); - return requestBuilder.retrieve().bodyToFlux(returnType); + return requestBuilder.retrieve(); } private WebClient.RequestBodySpec prepareRequest(String path, HttpMethod method, Map pathParams, MultiValueMap queryParams, Object body, HttpHeaders headerParams, MultiValueMap cookieParams, MultiValueMap formParams, List accept, MediaType contentType, String[] authNames) { diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/AnotherFakeApi.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/AnotherFakeApi.java index edc44d99937..20e60e88ad2 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/AnotherFakeApi.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/AnotherFakeApi.java @@ -15,12 +15,14 @@ import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.util.UriComponentsBuilder; import org.springframework.core.ParameterizedTypeReference; +import org.springframework.web.reactive.function.client.WebClient.ResponseSpec; import org.springframework.web.reactive.function.client.WebClientResponseException; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import reactor.core.publisher.Mono; import reactor.core.publisher.Flux; @@ -53,7 +55,7 @@ public class AnotherFakeApi { * @return Client * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono call123testSpecialTags(Client body) throws WebClientResponseException { + private ResponseSpec call123testSpecialTagsRequestCreation(Client body) throws WebClientResponseException { Object postBody = body; // verify the required parameter 'body' is set if (body == null) { @@ -81,4 +83,22 @@ public class AnotherFakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/another-fake/dummy", HttpMethod.PATCH, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * To test special tags + * To test special tags and operation ID starting with number + *

    200 - successful operation + * @param body client model + * @return Client + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono call123testSpecialTags(Client body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return call123testSpecialTagsRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> call123testSpecialTagsWithHttpInfo(Client body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return call123testSpecialTagsRequestCreation(body).toEntity(localVarReturnType); + } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/FakeApi.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/FakeApi.java index 95108f72e5e..aea0af298fa 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/FakeApi.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/FakeApi.java @@ -23,12 +23,14 @@ import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.util.UriComponentsBuilder; import org.springframework.core.ParameterizedTypeReference; +import org.springframework.web.reactive.function.client.WebClient.ResponseSpec; import org.springframework.web.reactive.function.client.WebClientResponseException; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import reactor.core.publisher.Mono; import reactor.core.publisher.Flux; @@ -60,7 +62,7 @@ public class FakeApi { * @param xmlItem XmlItem Body * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono createXmlItem(XmlItem xmlItem) throws WebClientResponseException { + private ResponseSpec createXmlItemRequestCreation(XmlItem xmlItem) throws WebClientResponseException { Object postBody = xmlItem; // verify the required parameter 'xmlItem' is set if (xmlItem == null) { @@ -86,6 +88,23 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake/create_xml_item", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * creates an XmlItem + * this route creates an XmlItem + *

    200 - successful operation + * @param xmlItem XmlItem Body + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono createXmlItem(XmlItem xmlItem) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return createXmlItemRequestCreation(xmlItem).bodyToMono(localVarReturnType); + } + + public Mono> createXmlItemWithHttpInfo(XmlItem xmlItem) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return createXmlItemRequestCreation(xmlItem).toEntity(localVarReturnType); + } /** * * Test serialization of outer boolean types @@ -94,7 +113,7 @@ public class FakeApi { * @return Boolean * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono fakeOuterBooleanSerialize(Boolean body) throws WebClientResponseException { + private ResponseSpec fakeOuterBooleanSerializeRequestCreation(Boolean body) throws WebClientResponseException { Object postBody = body; // create path and map variables final Map pathParams = new HashMap(); @@ -116,6 +135,24 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake/outer/boolean", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * + * Test serialization of outer boolean types + *

    200 - Output boolean + * @param body Input boolean as post body + * @return Boolean + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono fakeOuterBooleanSerialize(Boolean body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return fakeOuterBooleanSerializeRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> fakeOuterBooleanSerializeWithHttpInfo(Boolean body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return fakeOuterBooleanSerializeRequestCreation(body).toEntity(localVarReturnType); + } /** * * Test serialization of object with outer number type @@ -124,7 +161,7 @@ public class FakeApi { * @return OuterComposite * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono fakeOuterCompositeSerialize(OuterComposite body) throws WebClientResponseException { + private ResponseSpec fakeOuterCompositeSerializeRequestCreation(OuterComposite body) throws WebClientResponseException { Object postBody = body; // create path and map variables final Map pathParams = new HashMap(); @@ -146,6 +183,24 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake/outer/composite", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * + * Test serialization of object with outer number type + *

    200 - Output composite + * @param body Input composite as post body + * @return OuterComposite + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono fakeOuterCompositeSerialize(OuterComposite body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return fakeOuterCompositeSerializeRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> fakeOuterCompositeSerializeWithHttpInfo(OuterComposite body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return fakeOuterCompositeSerializeRequestCreation(body).toEntity(localVarReturnType); + } /** * * Test serialization of outer number types @@ -154,7 +209,7 @@ public class FakeApi { * @return BigDecimal * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono fakeOuterNumberSerialize(BigDecimal body) throws WebClientResponseException { + private ResponseSpec fakeOuterNumberSerializeRequestCreation(BigDecimal body) throws WebClientResponseException { Object postBody = body; // create path and map variables final Map pathParams = new HashMap(); @@ -176,6 +231,24 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake/outer/number", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * + * Test serialization of outer number types + *

    200 - Output number + * @param body Input number as post body + * @return BigDecimal + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono fakeOuterNumberSerialize(BigDecimal body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return fakeOuterNumberSerializeRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> fakeOuterNumberSerializeWithHttpInfo(BigDecimal body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return fakeOuterNumberSerializeRequestCreation(body).toEntity(localVarReturnType); + } /** * * Test serialization of outer string types @@ -184,7 +257,7 @@ public class FakeApi { * @return String * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono fakeOuterStringSerialize(String body) throws WebClientResponseException { + private ResponseSpec fakeOuterStringSerializeRequestCreation(String body) throws WebClientResponseException { Object postBody = body; // create path and map variables final Map pathParams = new HashMap(); @@ -206,6 +279,24 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake/outer/string", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * + * Test serialization of outer string types + *

    200 - Output string + * @param body Input string as post body + * @return String + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono fakeOuterStringSerialize(String body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return fakeOuterStringSerializeRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> fakeOuterStringSerializeWithHttpInfo(String body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return fakeOuterStringSerializeRequestCreation(body).toEntity(localVarReturnType); + } /** * * For this test, the body for this request much reference a schema named `File`. @@ -213,7 +304,7 @@ public class FakeApi { * @param body The body parameter * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono testBodyWithFileSchema(FileSchemaTestClass body) throws WebClientResponseException { + private ResponseSpec testBodyWithFileSchemaRequestCreation(FileSchemaTestClass body) throws WebClientResponseException { Object postBody = body; // verify the required parameter 'body' is set if (body == null) { @@ -239,6 +330,23 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake/body-with-file-schema", HttpMethod.PUT, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * + * For this test, the body for this request much reference a schema named `File`. + *

    200 - Success + * @param body The body parameter + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono testBodyWithFileSchema(FileSchemaTestClass body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testBodyWithFileSchemaRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> testBodyWithFileSchemaWithHttpInfo(FileSchemaTestClass body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testBodyWithFileSchemaRequestCreation(body).toEntity(localVarReturnType); + } /** * * @@ -247,7 +355,7 @@ public class FakeApi { * @param body The body parameter * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono testBodyWithQueryParams(String query, User body) throws WebClientResponseException { + private ResponseSpec testBodyWithQueryParamsRequestCreation(String query, User body) throws WebClientResponseException { Object postBody = body; // verify the required parameter 'query' is set if (query == null) { @@ -279,6 +387,24 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake/body-with-query-params", HttpMethod.PUT, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * + * + *

    200 - Success + * @param query The query parameter + * @param body The body parameter + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono testBodyWithQueryParams(String query, User body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testBodyWithQueryParamsRequestCreation(query, body).bodyToMono(localVarReturnType); + } + + public Mono> testBodyWithQueryParamsWithHttpInfo(String query, User body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testBodyWithQueryParamsRequestCreation(query, body).toEntity(localVarReturnType); + } /** * To test \"client\" model * To test \"client\" model @@ -287,7 +413,7 @@ public class FakeApi { * @return Client * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono testClientModel(Client body) throws WebClientResponseException { + private ResponseSpec testClientModelRequestCreation(Client body) throws WebClientResponseException { Object postBody = body; // verify the required parameter 'body' is set if (body == null) { @@ -315,6 +441,24 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake", HttpMethod.PATCH, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * To test \"client\" model + * To test \"client\" model + *

    200 - successful operation + * @param body client model + * @return Client + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono testClientModel(Client body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testClientModelRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> testClientModelWithHttpInfo(Client body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testClientModelRequestCreation(body).toEntity(localVarReturnType); + } /** * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -336,7 +480,7 @@ public class FakeApi { * @param paramCallback None * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono testEndpointParameters(BigDecimal number, Double _double, String patternWithoutDelimiter, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, String string, File binary, LocalDate date, OffsetDateTime dateTime, String password, String paramCallback) throws WebClientResponseException { + private ResponseSpec testEndpointParametersRequestCreation(BigDecimal number, Double _double, String patternWithoutDelimiter, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, String string, File binary, LocalDate date, OffsetDateTime dateTime, String password, String paramCallback) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'number' is set if (number == null) { @@ -403,6 +547,37 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + *

    400 - Invalid username supplied + *

    404 - User not found + * @param number None + * @param _double None + * @param patternWithoutDelimiter None + * @param _byte None + * @param integer None + * @param int32 None + * @param int64 None + * @param _float None + * @param string None + * @param binary None + * @param date None + * @param dateTime None + * @param password None + * @param paramCallback None + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono testEndpointParameters(BigDecimal number, Double _double, String patternWithoutDelimiter, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, String string, File binary, LocalDate date, OffsetDateTime dateTime, String password, String paramCallback) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testEndpointParametersRequestCreation(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, string, binary, date, dateTime, password, paramCallback).bodyToMono(localVarReturnType); + } + + public Mono> testEndpointParametersWithHttpInfo(BigDecimal number, Double _double, String patternWithoutDelimiter, byte[] _byte, Integer integer, Integer int32, Long int64, Float _float, String string, File binary, LocalDate date, OffsetDateTime dateTime, String password, String paramCallback) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testEndpointParametersRequestCreation(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, string, binary, date, dateTime, password, paramCallback).toEntity(localVarReturnType); + } /** * To test enum parameters * To test enum parameters @@ -418,7 +593,7 @@ public class FakeApi { * @param enumFormString Form parameter enum test (string) * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono testEnumParameters(List enumHeaderStringArray, String enumHeaderString, List enumQueryStringArray, String enumQueryString, Integer enumQueryInteger, Double enumQueryDouble, List enumFormStringArray, String enumFormString) throws WebClientResponseException { + private ResponseSpec testEnumParametersRequestCreation(List enumHeaderStringArray, String enumHeaderString, List enumQueryStringArray, String enumQueryString, Integer enumQueryInteger, Double enumQueryDouble, List enumFormStringArray, String enumFormString) throws WebClientResponseException { Object postBody = null; // create path and map variables final Map pathParams = new HashMap(); @@ -454,6 +629,31 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake", HttpMethod.GET, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * To test enum parameters + * To test enum parameters + *

    400 - Invalid request + *

    404 - Not found + * @param enumHeaderStringArray Header parameter enum test (string array) + * @param enumHeaderString Header parameter enum test (string) + * @param enumQueryStringArray Query parameter enum test (string array) + * @param enumQueryString Query parameter enum test (string) + * @param enumQueryInteger Query parameter enum test (double) + * @param enumQueryDouble Query parameter enum test (double) + * @param enumFormStringArray Form parameter enum test (string array) + * @param enumFormString Form parameter enum test (string) + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono testEnumParameters(List enumHeaderStringArray, String enumHeaderString, List enumQueryStringArray, String enumQueryString, Integer enumQueryInteger, Double enumQueryDouble, List enumFormStringArray, String enumFormString) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testEnumParametersRequestCreation(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString).bodyToMono(localVarReturnType); + } + + public Mono> testEnumParametersWithHttpInfo(List enumHeaderStringArray, String enumHeaderString, List enumQueryStringArray, String enumQueryString, Integer enumQueryInteger, Double enumQueryDouble, List enumFormStringArray, String enumFormString) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testEnumParametersRequestCreation(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString).toEntity(localVarReturnType); + } /** * Fake endpoint to test group parameters (optional) * Fake endpoint to test group parameters (optional) @@ -466,7 +666,7 @@ public class FakeApi { * @param int64Group Integer in group parameters * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono testGroupParameters(Integer requiredStringGroup, Boolean requiredBooleanGroup, Long requiredInt64Group, Integer stringGroup, Boolean booleanGroup, Long int64Group) throws WebClientResponseException { + private ResponseSpec testGroupParametersRequestCreation(Integer requiredStringGroup, Boolean requiredBooleanGroup, Long requiredInt64Group, Integer stringGroup, Boolean booleanGroup, Long int64Group) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'requiredStringGroup' is set if (requiredStringGroup == null) { @@ -507,6 +707,28 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake", HttpMethod.DELETE, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Fake endpoint to test group parameters (optional) + * Fake endpoint to test group parameters (optional) + *

    400 - Someting wrong + * @param requiredStringGroup Required String in group parameters + * @param requiredBooleanGroup Required Boolean in group parameters + * @param requiredInt64Group Required Integer in group parameters + * @param stringGroup String in group parameters + * @param booleanGroup Boolean in group parameters + * @param int64Group Integer in group parameters + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono testGroupParameters(Integer requiredStringGroup, Boolean requiredBooleanGroup, Long requiredInt64Group, Integer stringGroup, Boolean booleanGroup, Long int64Group) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testGroupParametersRequestCreation(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group).bodyToMono(localVarReturnType); + } + + public Mono> testGroupParametersWithHttpInfo(Integer requiredStringGroup, Boolean requiredBooleanGroup, Long requiredInt64Group, Integer stringGroup, Boolean booleanGroup, Long int64Group) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testGroupParametersRequestCreation(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group).toEntity(localVarReturnType); + } /** * test inline additionalProperties * @@ -514,7 +736,7 @@ public class FakeApi { * @param param request body * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono testInlineAdditionalProperties(Map param) throws WebClientResponseException { + private ResponseSpec testInlineAdditionalPropertiesRequestCreation(Map param) throws WebClientResponseException { Object postBody = param; // verify the required parameter 'param' is set if (param == null) { @@ -540,6 +762,23 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake/inline-additionalProperties", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * test inline additionalProperties + * + *

    200 - successful operation + * @param param request body + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono testInlineAdditionalProperties(Map param) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testInlineAdditionalPropertiesRequestCreation(param).bodyToMono(localVarReturnType); + } + + public Mono> testInlineAdditionalPropertiesWithHttpInfo(Map param) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testInlineAdditionalPropertiesRequestCreation(param).toEntity(localVarReturnType); + } /** * test json serialization of form data * @@ -548,7 +787,7 @@ public class FakeApi { * @param param2 field2 * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono testJsonFormData(String param, String param2) throws WebClientResponseException { + private ResponseSpec testJsonFormDataRequestCreation(String param, String param2) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'param' is set if (param == null) { @@ -583,6 +822,24 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake/jsonFormData", HttpMethod.GET, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * test json serialization of form data + * + *

    200 - successful operation + * @param param field1 + * @param param2 field2 + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono testJsonFormData(String param, String param2) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testJsonFormDataRequestCreation(param, param2).bodyToMono(localVarReturnType); + } + + public Mono> testJsonFormDataWithHttpInfo(String param, String param2) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testJsonFormDataRequestCreation(param, param2).toEntity(localVarReturnType); + } /** * * To test the collection format in query parameters @@ -594,7 +851,7 @@ public class FakeApi { * @param context The context parameter * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono testQueryParameterCollectionFormat(List pipe, List ioutil, List http, List url, List context) throws WebClientResponseException { + private ResponseSpec testQueryParameterCollectionFormatRequestCreation(List pipe, List ioutil, List http, List url, List context) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'pipe' is set if (pipe == null) { @@ -640,4 +897,25 @@ public class FakeApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake/test-query-paramters", HttpMethod.PUT, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * + * To test the collection format in query parameters + *

    200 - Success + * @param pipe The pipe parameter + * @param ioutil The ioutil parameter + * @param http The http parameter + * @param url The url parameter + * @param context The context parameter + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono testQueryParameterCollectionFormat(List pipe, List ioutil, List http, List url, List context) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testQueryParameterCollectionFormatRequestCreation(pipe, ioutil, http, url, context).bodyToMono(localVarReturnType); + } + + public Mono> testQueryParameterCollectionFormatWithHttpInfo(List pipe, List ioutil, List http, List url, List context) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testQueryParameterCollectionFormatRequestCreation(pipe, ioutil, http, url, context).toEntity(localVarReturnType); + } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java index 2a2d3f3e1d8..3ccd9ca33c6 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java @@ -15,12 +15,14 @@ import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.util.UriComponentsBuilder; import org.springframework.core.ParameterizedTypeReference; +import org.springframework.web.reactive.function.client.WebClient.ResponseSpec; import org.springframework.web.reactive.function.client.WebClientResponseException; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import reactor.core.publisher.Mono; import reactor.core.publisher.Flux; @@ -53,7 +55,7 @@ public class FakeClassnameTags123Api { * @return Client * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono testClassname(Client body) throws WebClientResponseException { + private ResponseSpec testClassnameRequestCreation(Client body) throws WebClientResponseException { Object postBody = body; // verify the required parameter 'body' is set if (body == null) { @@ -81,4 +83,22 @@ public class FakeClassnameTags123Api { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake_classname_test", HttpMethod.PATCH, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * To test class name in snake case + * To test class name in snake case + *

    200 - successful operation + * @param body client model + * @return Client + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono testClassname(Client body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testClassnameRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> testClassnameWithHttpInfo(Client body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return testClassnameRequestCreation(body).toEntity(localVarReturnType); + } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/PetApi.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/PetApi.java index 3749fe40927..7166d6b0336 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/PetApi.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/PetApi.java @@ -18,12 +18,14 @@ import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.util.UriComponentsBuilder; import org.springframework.core.ParameterizedTypeReference; +import org.springframework.web.reactive.function.client.WebClient.ResponseSpec; import org.springframework.web.reactive.function.client.WebClientResponseException; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import reactor.core.publisher.Mono; import reactor.core.publisher.Flux; @@ -56,7 +58,7 @@ public class PetApi { * @param body Pet object that needs to be added to the store * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono addPet(Pet body) throws WebClientResponseException { + private ResponseSpec addPetRequestCreation(Pet body) throws WebClientResponseException { Object postBody = body; // verify the required parameter 'body' is set if (body == null) { @@ -82,6 +84,24 @@ public class PetApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/pet", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Add a new pet to the store + * + *

    200 - successful operation + *

    405 - Invalid input + * @param body Pet object that needs to be added to the store + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono addPet(Pet body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return addPetRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> addPetWithHttpInfo(Pet body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return addPetRequestCreation(body).toEntity(localVarReturnType); + } /** * Deletes a pet * @@ -91,7 +111,7 @@ public class PetApi { * @param apiKey The apiKey parameter * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono deletePet(Long petId, String apiKey) throws WebClientResponseException { + private ResponseSpec deletePetRequestCreation(Long petId, String apiKey) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'petId' is set if (petId == null) { @@ -119,6 +139,25 @@ public class PetApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/pet/{petId}", HttpMethod.DELETE, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Deletes a pet + * + *

    200 - successful operation + *

    400 - Invalid pet value + * @param petId Pet id to delete + * @param apiKey The apiKey parameter + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono deletePet(Long petId, String apiKey) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return deletePetRequestCreation(petId, apiKey).bodyToMono(localVarReturnType); + } + + public Mono> deletePetWithHttpInfo(Long petId, String apiKey) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return deletePetRequestCreation(petId, apiKey).toEntity(localVarReturnType); + } /** * Finds Pets by status * Multiple status values can be provided with comma separated strings @@ -128,7 +167,7 @@ public class PetApi { * @return List<Pet> * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Flux findPetsByStatus(List status) throws WebClientResponseException { + private ResponseSpec findPetsByStatusRequestCreation(List status) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'status' is set if (status == null) { @@ -154,7 +193,26 @@ public class PetApi { String[] localVarAuthNames = new String[] { "petstore_auth" }; ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; - return apiClient.invokeFluxAPI("/pet/findByStatus", HttpMethod.GET, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); + return apiClient.invokeAPI("/pet/findByStatus", HttpMethod.GET, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); + } + + /** + * Finds Pets by status + * Multiple status values can be provided with comma separated strings + *

    200 - successful operation + *

    400 - Invalid status value + * @param status Status values that need to be considered for filter + * @return List<Pet> + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Flux findPetsByStatus(List status) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return findPetsByStatusRequestCreation(status).bodyToFlux(localVarReturnType); + } + + public Mono>> findPetsByStatusWithHttpInfo(List status) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return findPetsByStatusRequestCreation(status).toEntityList(localVarReturnType); } /** * Finds Pets by tags @@ -165,7 +223,7 @@ public class PetApi { * @return Set<Pet> * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Flux findPetsByTags(Set tags) throws WebClientResponseException { + private ResponseSpec findPetsByTagsRequestCreation(Set tags) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'tags' is set if (tags == null) { @@ -191,7 +249,26 @@ public class PetApi { String[] localVarAuthNames = new String[] { "petstore_auth" }; ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; - return apiClient.invokeFluxAPI("/pet/findByTags", HttpMethod.GET, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); + return apiClient.invokeAPI("/pet/findByTags", HttpMethod.GET, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); + } + + /** + * Finds Pets by tags + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + *

    200 - successful operation + *

    400 - Invalid tag value + * @param tags Tags to filter by + * @return Set<Pet> + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Flux findPetsByTags(Set tags) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return findPetsByTagsRequestCreation(tags).bodyToFlux(localVarReturnType); + } + + public Mono>> findPetsByTagsWithHttpInfo(Set tags) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return findPetsByTagsRequestCreation(tags).toEntityList(localVarReturnType); } /** * Find pet by ID @@ -203,7 +280,7 @@ public class PetApi { * @return Pet * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono getPetById(Long petId) throws WebClientResponseException { + private ResponseSpec getPetByIdRequestCreation(Long petId) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'petId' is set if (petId == null) { @@ -231,6 +308,26 @@ public class PetApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/pet/{petId}", HttpMethod.GET, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Find pet by ID + * Returns a single pet + *

    200 - successful operation + *

    400 - Invalid ID supplied + *

    404 - Pet not found + * @param petId ID of pet to return + * @return Pet + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono getPetById(Long petId) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return getPetByIdRequestCreation(petId).bodyToMono(localVarReturnType); + } + + public Mono> getPetByIdWithHttpInfo(Long petId) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return getPetByIdRequestCreation(petId).toEntity(localVarReturnType); + } /** * Update an existing pet * @@ -241,7 +338,7 @@ public class PetApi { * @param body Pet object that needs to be added to the store * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono updatePet(Pet body) throws WebClientResponseException { + private ResponseSpec updatePetRequestCreation(Pet body) throws WebClientResponseException { Object postBody = body; // verify the required parameter 'body' is set if (body == null) { @@ -267,6 +364,26 @@ public class PetApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/pet", HttpMethod.PUT, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Update an existing pet + * + *

    200 - successful operation + *

    400 - Invalid ID supplied + *

    404 - Pet not found + *

    405 - Validation exception + * @param body Pet object that needs to be added to the store + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono updatePet(Pet body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return updatePetRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> updatePetWithHttpInfo(Pet body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return updatePetRequestCreation(body).toEntity(localVarReturnType); + } /** * Updates a pet in the store with form data * @@ -276,7 +393,7 @@ public class PetApi { * @param status Updated status of the pet * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono updatePetWithForm(Long petId, String name, String status) throws WebClientResponseException { + private ResponseSpec updatePetWithFormRequestCreation(Long petId, String name, String status) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'petId' is set if (petId == null) { @@ -309,6 +426,25 @@ public class PetApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/pet/{petId}", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Updates a pet in the store with form data + * + *

    405 - Invalid input + * @param petId ID of pet that needs to be updated + * @param name Updated name of the pet + * @param status Updated status of the pet + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono updatePetWithForm(Long petId, String name, String status) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return updatePetWithFormRequestCreation(petId, name, status).bodyToMono(localVarReturnType); + } + + public Mono> updatePetWithFormWithHttpInfo(Long petId, String name, String status) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return updatePetWithFormRequestCreation(petId, name, status).toEntity(localVarReturnType); + } /** * uploads an image * @@ -319,7 +455,7 @@ public class PetApi { * @return ModelApiResponse * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono uploadFile(Long petId, String additionalMetadata, File file) throws WebClientResponseException { + private ResponseSpec uploadFileRequestCreation(Long petId, String additionalMetadata, File file) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'petId' is set if (petId == null) { @@ -354,6 +490,26 @@ public class PetApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/pet/{petId}/uploadImage", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * uploads an image + * + *

    200 - successful operation + * @param petId ID of pet to update + * @param additionalMetadata Additional data to pass to server + * @param file file to upload + * @return ModelApiResponse + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono uploadFile(Long petId, String additionalMetadata, File file) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return uploadFileRequestCreation(petId, additionalMetadata, file).bodyToMono(localVarReturnType); + } + + public Mono> uploadFileWithHttpInfo(Long petId, String additionalMetadata, File file) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return uploadFileRequestCreation(petId, additionalMetadata, file).toEntity(localVarReturnType); + } /** * uploads an image (required) * @@ -364,7 +520,7 @@ public class PetApi { * @return ModelApiResponse * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono uploadFileWithRequiredFile(Long petId, File requiredFile, String additionalMetadata) throws WebClientResponseException { + private ResponseSpec uploadFileWithRequiredFileRequestCreation(Long petId, File requiredFile, String additionalMetadata) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'petId' is set if (petId == null) { @@ -403,4 +559,24 @@ public class PetApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/fake/{petId}/uploadImageWithRequiredFile", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * uploads an image (required) + * + *

    200 - successful operation + * @param petId ID of pet to update + * @param requiredFile file to upload + * @param additionalMetadata Additional data to pass to server + * @return ModelApiResponse + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono uploadFileWithRequiredFile(Long petId, File requiredFile, String additionalMetadata) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return uploadFileWithRequiredFileRequestCreation(petId, requiredFile, additionalMetadata).bodyToMono(localVarReturnType); + } + + public Mono> uploadFileWithRequiredFileWithHttpInfo(Long petId, File requiredFile, String additionalMetadata) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return uploadFileWithRequiredFileRequestCreation(petId, requiredFile, additionalMetadata).toEntity(localVarReturnType); + } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/StoreApi.java index 98d603a2545..3cd8dd6270c 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/StoreApi.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/StoreApi.java @@ -15,12 +15,14 @@ import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.util.UriComponentsBuilder; import org.springframework.core.ParameterizedTypeReference; +import org.springframework.web.reactive.function.client.WebClient.ResponseSpec; import org.springframework.web.reactive.function.client.WebClientResponseException; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import reactor.core.publisher.Mono; import reactor.core.publisher.Flux; @@ -53,7 +55,7 @@ public class StoreApi { * @param orderId ID of the order that needs to be deleted * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono deleteOrder(String orderId) throws WebClientResponseException { + private ResponseSpec deleteOrderRequestCreation(String orderId) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'orderId' is set if (orderId == null) { @@ -79,6 +81,24 @@ public class StoreApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/store/order/{order_id}", HttpMethod.DELETE, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Delete purchase order by ID + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + *

    400 - Invalid ID supplied + *

    404 - Order not found + * @param orderId ID of the order that needs to be deleted + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono deleteOrder(String orderId) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return deleteOrderRequestCreation(orderId).bodyToMono(localVarReturnType); + } + + public Mono> deleteOrderWithHttpInfo(String orderId) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return deleteOrderRequestCreation(orderId).toEntity(localVarReturnType); + } /** * Returns pet inventories by status * Returns a map of status codes to quantities @@ -86,7 +106,7 @@ public class StoreApi { * @return Map<String, Integer> * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono> getInventory() throws WebClientResponseException { + private ResponseSpec getInventoryRequestCreation() throws WebClientResponseException { Object postBody = null; // create path and map variables final Map pathParams = new HashMap(); @@ -108,6 +128,23 @@ public class StoreApi { ParameterizedTypeReference> localVarReturnType = new ParameterizedTypeReference>() {}; return apiClient.invokeAPI("/store/inventory", HttpMethod.GET, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Returns pet inventories by status + * Returns a map of status codes to quantities + *

    200 - successful operation + * @return Map<String, Integer> + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono> getInventory() throws WebClientResponseException { + ParameterizedTypeReference> localVarReturnType = new ParameterizedTypeReference>() {}; + return getInventoryRequestCreation().bodyToMono(localVarReturnType); + } + + public Mono>> getInventoryWithHttpInfo() throws WebClientResponseException { + ParameterizedTypeReference> localVarReturnType = new ParameterizedTypeReference>() {}; + return getInventoryRequestCreation().toEntity(localVarReturnType); + } /** * Find purchase order by ID * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions @@ -118,7 +155,7 @@ public class StoreApi { * @return Order * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono getOrderById(Long orderId) throws WebClientResponseException { + private ResponseSpec getOrderByIdRequestCreation(Long orderId) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'orderId' is set if (orderId == null) { @@ -146,6 +183,26 @@ public class StoreApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/store/order/{order_id}", HttpMethod.GET, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Find purchase order by ID + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + *

    200 - successful operation + *

    400 - Invalid ID supplied + *

    404 - Order not found + * @param orderId ID of pet that needs to be fetched + * @return Order + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono getOrderById(Long orderId) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return getOrderByIdRequestCreation(orderId).bodyToMono(localVarReturnType); + } + + public Mono> getOrderByIdWithHttpInfo(Long orderId) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return getOrderByIdRequestCreation(orderId).toEntity(localVarReturnType); + } /** * Place an order for a pet * @@ -155,7 +212,7 @@ public class StoreApi { * @return Order * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono placeOrder(Order body) throws WebClientResponseException { + private ResponseSpec placeOrderRequestCreation(Order body) throws WebClientResponseException { Object postBody = body; // verify the required parameter 'body' is set if (body == null) { @@ -181,4 +238,23 @@ public class StoreApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/store/order", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Place an order for a pet + * + *

    200 - successful operation + *

    400 - Invalid Order + * @param body order placed for purchasing the pet + * @return Order + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono placeOrder(Order body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return placeOrderRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> placeOrderWithHttpInfo(Order body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return placeOrderRequestCreation(body).toEntity(localVarReturnType); + } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/UserApi.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/UserApi.java index 62188c93a1c..38eb9e61c3b 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/UserApi.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/api/UserApi.java @@ -15,12 +15,14 @@ import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.util.UriComponentsBuilder; import org.springframework.core.ParameterizedTypeReference; +import org.springframework.web.reactive.function.client.WebClient.ResponseSpec; import org.springframework.web.reactive.function.client.WebClientResponseException; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import reactor.core.publisher.Mono; import reactor.core.publisher.Flux; @@ -52,7 +54,7 @@ public class UserApi { * @param body Created user object * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono createUser(User body) throws WebClientResponseException { + private ResponseSpec createUserRequestCreation(User body) throws WebClientResponseException { Object postBody = body; // verify the required parameter 'body' is set if (body == null) { @@ -76,6 +78,23 @@ public class UserApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/user", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Create user + * This can only be done by the logged in user. + *

    0 - successful operation + * @param body Created user object + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono createUser(User body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return createUserRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> createUserWithHttpInfo(User body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return createUserRequestCreation(body).toEntity(localVarReturnType); + } /** * Creates list of users with given input array * @@ -83,7 +102,7 @@ public class UserApi { * @param body List of user object * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono createUsersWithArrayInput(List body) throws WebClientResponseException { + private ResponseSpec createUsersWithArrayInputRequestCreation(List body) throws WebClientResponseException { Object postBody = body; // verify the required parameter 'body' is set if (body == null) { @@ -107,6 +126,7 @@ public class UserApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/user/createWithArray", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + /** * Creates list of users with given input array * @@ -114,7 +134,23 @@ public class UserApi { * @param body List of user object * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono createUsersWithListInput(List body) throws WebClientResponseException { + public Mono createUsersWithArrayInput(List body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return createUsersWithArrayInputRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> createUsersWithArrayInputWithHttpInfo(List body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return createUsersWithArrayInputRequestCreation(body).toEntity(localVarReturnType); + } + /** + * Creates list of users with given input array + * + *

    0 - successful operation + * @param body List of user object + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + private ResponseSpec createUsersWithListInputRequestCreation(List body) throws WebClientResponseException { Object postBody = body; // verify the required parameter 'body' is set if (body == null) { @@ -138,6 +174,23 @@ public class UserApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/user/createWithList", HttpMethod.POST, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Creates list of users with given input array + * + *

    0 - successful operation + * @param body List of user object + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono createUsersWithListInput(List body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return createUsersWithListInputRequestCreation(body).bodyToMono(localVarReturnType); + } + + public Mono> createUsersWithListInputWithHttpInfo(List body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return createUsersWithListInputRequestCreation(body).toEntity(localVarReturnType); + } /** * Delete user * This can only be done by the logged in user. @@ -146,7 +199,7 @@ public class UserApi { * @param username The name that needs to be deleted * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono deleteUser(String username) throws WebClientResponseException { + private ResponseSpec deleteUserRequestCreation(String username) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'username' is set if (username == null) { @@ -172,6 +225,24 @@ public class UserApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/user/{username}", HttpMethod.DELETE, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Delete user + * This can only be done by the logged in user. + *

    400 - Invalid username supplied + *

    404 - User not found + * @param username The name that needs to be deleted + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono deleteUser(String username) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return deleteUserRequestCreation(username).bodyToMono(localVarReturnType); + } + + public Mono> deleteUserWithHttpInfo(String username) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return deleteUserRequestCreation(username).toEntity(localVarReturnType); + } /** * Get user by user name * @@ -182,7 +253,7 @@ public class UserApi { * @return User * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono getUserByName(String username) throws WebClientResponseException { + private ResponseSpec getUserByNameRequestCreation(String username) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'username' is set if (username == null) { @@ -210,6 +281,26 @@ public class UserApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/user/{username}", HttpMethod.GET, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Get user by user name + * + *

    200 - successful operation + *

    400 - Invalid username supplied + *

    404 - User not found + * @param username The name that needs to be fetched. Use user1 for testing. + * @return User + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono getUserByName(String username) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return getUserByNameRequestCreation(username).bodyToMono(localVarReturnType); + } + + public Mono> getUserByNameWithHttpInfo(String username) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return getUserByNameRequestCreation(username).toEntity(localVarReturnType); + } /** * Logs user into the system * @@ -220,7 +311,7 @@ public class UserApi { * @return String * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono loginUser(String username, String password) throws WebClientResponseException { + private ResponseSpec loginUserRequestCreation(String username, String password) throws WebClientResponseException { Object postBody = null; // verify the required parameter 'username' is set if (username == null) { @@ -253,13 +344,33 @@ public class UserApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/user/login", HttpMethod.GET, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Logs user into the system + * + *

    200 - successful operation + *

    400 - Invalid username/password supplied + * @param username The user name for login + * @param password The password for login in clear text + * @return String + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono loginUser(String username, String password) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return loginUserRequestCreation(username, password).bodyToMono(localVarReturnType); + } + + public Mono> loginUserWithHttpInfo(String username, String password) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return loginUserRequestCreation(username, password).toEntity(localVarReturnType); + } /** * Logs out current logged in user session * *

    0 - successful operation * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono logoutUser() throws WebClientResponseException { + private ResponseSpec logoutUserRequestCreation() throws WebClientResponseException { Object postBody = null; // create path and map variables final Map pathParams = new HashMap(); @@ -279,6 +390,22 @@ public class UserApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/user/logout", HttpMethod.GET, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Logs out current logged in user session + * + *

    0 - successful operation + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono logoutUser() throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return logoutUserRequestCreation().bodyToMono(localVarReturnType); + } + + public Mono> logoutUserWithHttpInfo() throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return logoutUserRequestCreation().toEntity(localVarReturnType); + } /** * Updated user * This can only be done by the logged in user. @@ -288,7 +415,7 @@ public class UserApi { * @param body Updated user object * @throws WebClientResponseException if an error occurs while attempting to invoke the API */ - public Mono updateUser(String username, User body) throws WebClientResponseException { + private ResponseSpec updateUserRequestCreation(String username, User body) throws WebClientResponseException { Object postBody = body; // verify the required parameter 'username' is set if (username == null) { @@ -318,4 +445,23 @@ public class UserApi { ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; return apiClient.invokeAPI("/user/{username}", HttpMethod.PUT, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType); } + + /** + * Updated user + * This can only be done by the logged in user. + *

    400 - Invalid user supplied + *

    404 - User not found + * @param username name that need to be deleted + * @param body Updated user object + * @throws WebClientResponseException if an error occurs while attempting to invoke the API + */ + public Mono updateUser(String username, User body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return updateUserRequestCreation(username, body).bodyToMono(localVarReturnType); + } + + public Mono> updateUserWithHttpInfo(String username, User body) throws WebClientResponseException { + ParameterizedTypeReference localVarReturnType = new ParameterizedTypeReference() {}; + return updateUserRequestCreation(username, body).toEntity(localVarReturnType); + } } From 7389446354dc044c1e5e7079d55115dead655c35 Mon Sep 17 00:00:00 2001 From: Hippolyte HENRY Date: Fri, 18 Jun 2021 10:08:03 +0200 Subject: [PATCH 144/192] Add imports for inner items of arrays/maps in composed schemas (#9268) * Add imports for inner items of arrays/maps in composedSchemas * Add test case for typescript-angular * tests * tests * disable generate alias * Create different config --- bin/configs/typescript-angular-v11-oneOf.yaml | 5 + .../openapitools/codegen/DefaultCodegen.java | 7 + .../resources/3_0/oneOfArrayMapImport.yaml | 49 +++++ .../builds/default/.gitignore | 4 + .../builds/default/.openapi-generator-ignore | 23 ++ .../builds/default/.openapi-generator/FILES | 14 ++ .../builds/default/.openapi-generator/VERSION | 1 + .../builds/default/README.md | 203 ++++++++++++++++++ .../builds/default/api.module.ts | 31 +++ .../builds/default/api/api.ts | 3 + .../builds/default/api/default.service.ts | 127 +++++++++++ .../builds/default/configuration.ts | 121 +++++++++++ .../builds/default/encoder.ts | 20 ++ .../builds/default/git_push.sh | 58 +++++ .../builds/default/index.ts | 5 + .../builds/default/model/apple.ts | 17 ++ .../builds/default/model/banana.ts | 17 ++ .../builds/default/model/fruit.ts | 21 ++ .../builds/default/model/grape.ts | 17 ++ .../builds/default/model/models.ts | 3 + .../builds/default/variables.ts | 9 + 21 files changed, 755 insertions(+) create mode 100644 bin/configs/typescript-angular-v11-oneOf.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/oneOfArrayMapImport.yaml create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.gitignore create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator-ignore create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/FILES create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/README.md create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api.module.ts create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/api.ts create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/default.service.ts create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/configuration.ts create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/encoder.ts create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/git_push.sh create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/index.ts create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/apple.ts create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/banana.ts create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/fruit.ts create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/grape.ts create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/models.ts create mode 100644 samples/client/petstore/typescript-angular-v11-oneOf/builds/default/variables.ts diff --git a/bin/configs/typescript-angular-v11-oneOf.yaml b/bin/configs/typescript-angular-v11-oneOf.yaml new file mode 100644 index 00000000000..e9d83262ac8 --- /dev/null +++ b/bin/configs/typescript-angular-v11-oneOf.yaml @@ -0,0 +1,5 @@ +generatorName: typescript-angular +outputDir: samples/client/petstore/typescript-angular-v11-oneOf/builds/default +inputSpec: modules/openapi-generator/src/test/resources/3_0/oneOfArrayMapImport.yaml +additionalProperties: + ngVersion: 11.0.0 diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 912167c968d..7ab6694f817 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -2415,6 +2415,13 @@ public class DefaultCodegen implements CodegenConfig { if (StringUtils.isBlank(interfaceSchema.get$ref())) { // primitive type String languageType = getTypeDeclaration(interfaceSchema); + if (ModelUtils.isArraySchema(interfaceSchema) || ModelUtils.isMapSchema(interfaceSchema)) { + CodegenProperty cp = fromProperty("composedSchemaImports", interfaceSchema); + while (cp != null) { + addImport(m, cp.complexType); + cp = cp.items; + } + } if (composed.getAnyOf() != null) { if (m.anyOf.contains(languageType)) { diff --git a/modules/openapi-generator/src/test/resources/3_0/oneOfArrayMapImport.yaml b/modules/openapi-generator/src/test/resources/3_0/oneOfArrayMapImport.yaml new file mode 100644 index 00000000000..9fb06fc38f0 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/oneOfArrayMapImport.yaml @@ -0,0 +1,49 @@ +openapi: 3.0.1 +info: + title: fruity + version: 0.0.1 +paths: + /: + get: + responses: + '200': + description: desc + content: + application/json: + schema: + $ref: '#/components/schemas/fruit' +components: + schemas: + fruit: + title: fruit + properties: + color: + type: string + oneOf: + - $ref: '#/components/schemas/apples' + - $ref: '#/components/schemas/grapes' + # additionalProperties: + # type: string + # uncomment this when https://github.com/swagger-api/swagger-parser/issues/1252 is resolved + apple: + title: apple + type: object + properties: + kind: + type: string + apples: + title: apples + type: object + additionalProperties: + $ref: '#/components/schemas/apple' + grape: + title: grape + type: object + properties: + color: + type: string + grapes: + title: grapes + type: array + items: + $ref: '#/components/schemas/grape' diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.gitignore b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.gitignore new file mode 100644 index 00000000000..149b5765472 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.gitignore @@ -0,0 +1,4 @@ +wwwroot/*.js +node_modules +typings +dist diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator-ignore b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/FILES b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/FILES new file mode 100644 index 00000000000..e646d434eee --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/FILES @@ -0,0 +1,14 @@ +.gitignore +README.md +api.module.ts +api/api.ts +api/default.service.ts +configuration.ts +encoder.ts +git_push.sh +index.ts +model/apple.ts +model/fruit.ts +model/grape.ts +model/models.ts +variables.ts diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION new file mode 100644 index 00000000000..d509cc92aa8 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.1.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/README.md b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/README.md new file mode 100644 index 00000000000..f16604dcfff --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/README.md @@ -0,0 +1,203 @@ +## @ + +### Building + +To install the required dependencies and to build the typescript sources run: +``` +npm install +npm run build +``` + +### publishing + +First build the package then run ```npm publish dist``` (don't forget to specify the `dist` folder!) + +### consuming + +Navigate to the folder of your consuming project and run one of next commands. + +_published:_ + +``` +npm install @ --save +``` + +_without publishing (not recommended):_ + +``` +npm install PATH_TO_GENERATED_PACKAGE/dist.tgz --save +``` + +_It's important to take the tgz file, otherwise you'll get trouble with links on windows_ + +_using `npm link`:_ + +In PATH_TO_GENERATED_PACKAGE/dist: +``` +npm link +``` + +In your project: +``` +npm link +``` + +__Note for Windows users:__ The Angular CLI has troubles to use linked npm packages. +Please refer to this issue https://github.com/angular/angular-cli/issues/8284 for a solution / workaround. +Published packages are not effected by this issue. + + +#### General usage + +In your Angular project: + + +``` +// without configuring providers +import { ApiModule } from ''; +import { HttpClientModule } from '@angular/common/http'; + +@NgModule({ + imports: [ + ApiModule, + // make sure to import the HttpClientModule in the AppModule only, + // see https://github.com/angular/angular/issues/20575 + HttpClientModule + ], + declarations: [ AppComponent ], + providers: [], + bootstrap: [ AppComponent ] +}) +export class AppModule {} +``` + +``` +// configuring providers +import { ApiModule, Configuration, ConfigurationParameters } from ''; + +export function apiConfigFactory (): Configuration { + const params: ConfigurationParameters = { + // set configuration parameters here. + } + return new Configuration(params); +} + +@NgModule({ + imports: [ ApiModule.forRoot(apiConfigFactory) ], + declarations: [ AppComponent ], + providers: [], + bootstrap: [ AppComponent ] +}) +export class AppModule {} +``` + +``` +// configuring providers with an authentication service that manages your access tokens +import { ApiModule, Configuration } from ''; + +@NgModule({ + imports: [ ApiModule ], + declarations: [ AppComponent ], + providers: [ + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration( + { + basePath: environment.apiUrl, + accessToken: authService.getAccessToken.bind(authService) + } + ), + deps: [AuthService], + multi: false + } + ], + bootstrap: [ AppComponent ] +}) +export class AppModule {} +``` + +``` +import { DefaultApi } from ''; + +export class AppComponent { + constructor(private apiGateway: DefaultApi) { } +} +``` + +Note: The ApiModule is restricted to being instantiated once app wide. +This is to ensure that all services are treated as singletons. + +#### Using multiple OpenAPI files / APIs / ApiModules +In order to use multiple `ApiModules` generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: +``` +import { ApiModule } from 'my-api-path'; +import { ApiModule as OtherApiModule } from 'my-other-api-path'; +import { HttpClientModule } from '@angular/common/http'; + +@NgModule({ + imports: [ + ApiModule, + OtherApiModule, + // make sure to import the HttpClientModule in the AppModule only, + // see https://github.com/angular/angular/issues/20575 + HttpClientModule + ] +}) +export class AppModule { + +} +``` + + +### Set service base path +If different than the generated base path, during app bootstrap, you can provide the base path to your service. + +``` +import { BASE_PATH } from ''; + +bootstrap(AppComponent, [ + { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, +]); +``` +or + +``` +import { BASE_PATH } from ''; + +@NgModule({ + imports: [], + declarations: [ AppComponent ], + providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], + bootstrap: [ AppComponent ] +}) +export class AppModule {} +``` + + +#### Using @angular/cli +First extend your `src/environments/*.ts` files by adding the corresponding base path: + +``` +export const environment = { + production: false, + API_BASE_PATH: 'http://127.0.0.1:8080' +}; +``` + +In the src/app/app.module.ts: +``` +import { BASE_PATH } from ''; +import { environment } from '../environments/environment'; + +@NgModule({ + declarations: [ + AppComponent + ], + imports: [ ], + providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], + bootstrap: [ AppComponent ] +}) +export class AppModule { } +``` diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api.module.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api.module.ts new file mode 100644 index 00000000000..6eca9cc5418 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api.module.ts @@ -0,0 +1,31 @@ +import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core'; +import { Configuration } from './configuration'; +import { HttpClient } from '@angular/common/http'; + +import { DefaultService } from './api/default.service'; + +@NgModule({ + imports: [], + declarations: [], + exports: [], + providers: [] +}) +export class ApiModule { + public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ { provide: Configuration, useFactory: configurationFactory } ] + }; + } + + constructor( @Optional() @SkipSelf() parentModule: ApiModule, + @Optional() http: HttpClient) { + if (parentModule) { + throw new Error('ApiModule is already loaded. Import in your base AppModule only.'); + } + if (!http) { + throw new Error('You need to import the HttpClientModule in your AppModule! \n' + + 'See also https://github.com/angular/angular/issues/20575'); + } + } +} diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/api.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/api.ts new file mode 100644 index 00000000000..8e76619647f --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/api.ts @@ -0,0 +1,3 @@ +export * from './default.service'; +import { DefaultService } from './default.service'; +export const APIS = [DefaultService]; diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/default.service.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/default.service.ts new file mode 100644 index 00000000000..a008d370d56 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/api/default.service.ts @@ -0,0 +1,127 @@ +/** + * fruity + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +import { Fruit } from '../model/models'; + +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class DefaultService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, + (value as Date).toISOString().substr(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public rootGet(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable; + public rootGet(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable>; + public rootGet(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable>; + public rootGet(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable { + + let headers = this.defaultHeaders; + + let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (httpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/json' + ]; + httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (httpHeaderAcceptSelected !== undefined) { + headers = headers.set('Accept', httpHeaderAcceptSelected); + } + + + let responseType_: 'text' | 'json' = 'json'; + if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } + + return this.httpClient.get(`${this.configuration.basePath}/`, + { + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: headers, + observe: observe, + reportProgress: reportProgress + } + ); + } + +} diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/configuration.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/configuration.ts new file mode 100644 index 00000000000..4ca3546927f --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/configuration.ts @@ -0,0 +1,121 @@ +import { HttpParameterCodec } from '@angular/common/http'; + +export interface ConfigurationParameters { + /** + * @deprecated Since 5.0. Use credentials instead + */ + apiKeys?: {[ key: string ]: string}; + username?: string; + password?: string; + /** + * @deprecated Since 5.0. Use credentials instead + */ + accessToken?: string | (() => string); + basePath?: string; + withCredentials?: boolean; + encoder?: HttpParameterCodec; + /** + * The keys are the names in the securitySchemes section of the OpenAPI + * document. They should map to the value used for authentication + * minus any standard prefixes such as 'Basic' or 'Bearer'. + */ + credentials?: {[ key: string ]: string | (() => string | undefined)}; +} + +export class Configuration { + /** + * @deprecated Since 5.0. Use credentials instead + */ + apiKeys?: {[ key: string ]: string}; + username?: string; + password?: string; + /** + * @deprecated Since 5.0. Use credentials instead + */ + accessToken?: string | (() => string); + basePath?: string; + withCredentials?: boolean; + encoder?: HttpParameterCodec; + /** + * The keys are the names in the securitySchemes section of the OpenAPI + * document. They should map to the value used for authentication + * minus any standard prefixes such as 'Basic' or 'Bearer'. + */ + credentials: {[ key: string ]: string | (() => string | undefined)}; + + constructor(configurationParameters: ConfigurationParameters = {}) { + this.apiKeys = configurationParameters.apiKeys; + this.username = configurationParameters.username; + this.password = configurationParameters.password; + this.accessToken = configurationParameters.accessToken; + this.basePath = configurationParameters.basePath; + this.withCredentials = configurationParameters.withCredentials; + this.encoder = configurationParameters.encoder; + if (configurationParameters.credentials) { + this.credentials = configurationParameters.credentials; + } + else { + this.credentials = {}; + } + } + + /** + * Select the correct content-type to use for a request. + * Uses {@link Configuration#isJsonMime} to determine the correct content-type. + * If no content type is found return the first found type if the contentTypes is not empty + * @param contentTypes - the array of content types that are available for selection + * @returns the selected content-type or undefined if no selection could be made. + */ + public selectHeaderContentType (contentTypes: string[]): string | undefined { + if (contentTypes.length === 0) { + return undefined; + } + + const type = contentTypes.find((x: string) => this.isJsonMime(x)); + if (type === undefined) { + return contentTypes[0]; + } + return type; + } + + /** + * Select the correct accept content-type to use for a request. + * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type. + * If no content type is found return the first found type if the contentTypes is not empty + * @param accepts - the array of content types that are available for selection. + * @returns the selected content-type or undefined if no selection could be made. + */ + public selectHeaderAccept(accepts: string[]): string | undefined { + if (accepts.length === 0) { + return undefined; + } + + const type = accepts.find((x: string) => this.isJsonMime(x)); + if (type === undefined) { + return accepts[0]; + } + return type; + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + public isJsonMime(mime: string): boolean { + const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i'); + return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json'); + } + + public lookupCredential(key: string): string | undefined { + const value = this.credentials[key]; + return typeof value === 'function' + ? value() + : value; + } +} diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/encoder.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/encoder.ts new file mode 100644 index 00000000000..138c4d5cf2c --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/encoder.ts @@ -0,0 +1,20 @@ +import { HttpParameterCodec } from '@angular/common/http'; + +/** + * Custom HttpParameterCodec + * Workaround for https://github.com/angular/angular/issues/18261 + */ +export class CustomHttpParameterCodec implements HttpParameterCodec { + encodeKey(k: string): string { + return encodeURIComponent(k); + } + encodeValue(v: string): string { + return encodeURIComponent(v); + } + decodeKey(k: string): string { + return decodeURIComponent(k); + } + decodeValue(v: string): string { + return decodeURIComponent(v); + } +} diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/git_push.sh b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/git_push.sh new file mode 100644 index 00000000000..ced3be2b0c7 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/git_push.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/index.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/index.ts new file mode 100644 index 00000000000..c312b70fa3e --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/index.ts @@ -0,0 +1,5 @@ +export * from './api/api'; +export * from './model/models'; +export * from './variables'; +export * from './configuration'; +export * from './api.module'; \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/apple.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/apple.ts new file mode 100644 index 00000000000..ced6d899e32 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/apple.ts @@ -0,0 +1,17 @@ +/** + * fruity + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface Apple { + kind?: string; +} + diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/banana.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/banana.ts new file mode 100644 index 00000000000..bf67fa8256d --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/banana.ts @@ -0,0 +1,17 @@ +/** + * fruity + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface Banana { + count?: number; +} + diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/fruit.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/fruit.ts new file mode 100644 index 00000000000..c7131e502f0 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/fruit.ts @@ -0,0 +1,21 @@ +/** + * fruity + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { Apple } from './apple'; +import { Grape } from './grape'; + + +/** + * @type Fruit + * @export + */ +export type Fruit = Array | { [key: string]: Apple; }; + diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/grape.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/grape.ts new file mode 100644 index 00000000000..0dc06634c30 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/grape.ts @@ -0,0 +1,17 @@ +/** + * fruity + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface Grape { + color?: string; +} + diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/models.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/models.ts new file mode 100644 index 00000000000..ca547da2ee3 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/model/models.ts @@ -0,0 +1,3 @@ +export * from './apple'; +export * from './fruit'; +export * from './grape'; diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/variables.ts b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/variables.ts new file mode 100644 index 00000000000..6fe58549f39 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/variables.ts @@ -0,0 +1,9 @@ +import { InjectionToken } from '@angular/core'; + +export const BASE_PATH = new InjectionToken('basePath'); +export const COLLECTION_FORMATS = { + 'csv': ',', + 'tsv': ' ', + 'ssv': ' ', + 'pipes': '|' +} From 41afcd0f8646f72a5d9975cd9abbb7c972124c16 Mon Sep 17 00:00:00 2001 From: Minjae Kim Date: Fri, 18 Jun 2021 17:34:38 +0900 Subject: [PATCH 145/192] Handle boolean enum correctly in typescript-axios (#9025) can't use enum because of TS18033 --- .../main/java/org/openapitools/codegen/CodegenModel.java | 2 +- .../main/java/org/openapitools/codegen/DefaultCodegen.java | 4 +++- .../codegen/languages/AbstractTypeScriptClientCodegen.java | 2 +- .../src/main/resources/typescript-axios/modelEnum.mustache | 6 ++++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java index 7669f837919..1ce5b200199 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java @@ -64,7 +64,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { public String defaultValue; public String arrayModelType; public boolean isAlias; // Is this effectively an alias of another simple type - public boolean isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble, isDate, isDateTime, isShort, isUnboundedInteger; + public boolean isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble, isDate, isDateTime, isShort, isUnboundedInteger, isBoolean; private boolean additionalPropertiesIsAnyType; public List vars = new ArrayList(); // all properties (without parent's properties) public List allVars = new ArrayList(); // all properties (with parent's properties) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 7ab6694f817..1f4fecb0395 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -728,7 +728,7 @@ public class DefaultCodegen implements CodegenConfig { * @return the sanitized value for enum */ public String toEnumValue(String value, String datatype) { - if ("number".equalsIgnoreCase(datatype)) { + if ("number".equalsIgnoreCase(datatype) || "boolean".equalsIgnoreCase(datatype)) { return value; } else { return "\"" + escapeText(value) + "\""; @@ -2578,6 +2578,8 @@ public class DefaultCodegen implements CodegenConfig { } else { // type is number and without format m.isNumber = Boolean.TRUE; } + } else if (ModelUtils.isBooleanSchema(schema)) { + m.isBoolean = Boolean.TRUE; } else if (ModelUtils.isFreeFormObject(openAPI, schema)) { addAdditionPropertiesToCodeGenModel(m, schema); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index c6762f1903e..8a7d8b97aaf 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -663,7 +663,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp @Override public String toEnumValue(String value, String datatype) { - if ("number".equals(datatype)) { + if ("number".equals(datatype) || "boolean".equals(datatype)) { return value; } else { return "\'" + escapeText(value) + "\'"; diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/modelEnum.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/modelEnum.mustache index 1e25a6e2f02..7ff0379b4c3 100644 --- a/modules/openapi-generator/src/main/resources/typescript-axios/modelEnum.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-axios/modelEnum.mustache @@ -3,6 +3,11 @@ * @export * @enum {string} */ +{{#isBoolean}} +export type {{classname}} = {{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}} | {{/-last}}{{/enumVars}}{{/allowableValues}} +{{/isBoolean}} + +{{^isBoolean}} export enum {{classname}} { {{#allowableValues}} {{#enumVars}} @@ -15,3 +20,4 @@ export enum {{classname}} { {{/enumVars}} {{/allowableValues}} } +{{/isBoolean}} From d13685a3ad8f56e81c7f7ae6e1fb87f442eda84b Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 19 Jun 2021 10:44:00 +0800 Subject: [PATCH 146/192] More updates for isBoolean (#9802) * more updates for isBoolean * update samples --- .../java/org/openapitools/codegen/CodegenModel.java | 12 +++++++++++- .../org/openapitools/codegen/CodegenParameter.java | 8 ++++++++ .../org/openapitools/codegen/CodegenProperty.java | 8 ++++++++ .../org/openapitools/codegen/CodegenResponse.java | 8 ++++++++ .../codegen/IJsonSchemaValidationProperties.java | 6 +++++- .../builds/default/.openapi-generator/VERSION | 2 +- .../api.ts | 5 +++++ 7 files changed, 46 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java index 1ce5b200199..a441659434a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java @@ -614,6 +614,14 @@ public class CodegenModel implements IJsonSchemaValidationProperties { this.isShort = isShort; } + @Override + public boolean getIsBoolean() { return isBoolean; } + + @Override + public void setIsBoolean(boolean isBoolean) { + this.isBoolean= isBoolean; + } + @Override public boolean getIsUnboundedInteger() { return isUnboundedInteger; } @@ -771,6 +779,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { isShort == that.isShort && isLong == that.isLong && isUnboundedInteger == that.isUnboundedInteger && + isBoolean == that.isBoolean && isNumber == that.isNumber && isNumeric == that.isNumeric && isFloat == that.isFloat && @@ -857,7 +866,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { getDescription(), getClassVarName(), getModelJson(), getDataType(), getXmlPrefix(), getXmlNamespace(), getXmlName(), getClassFilename(), getUnescapedDescription(), getDiscriminator(), getDefaultValue(), getArrayModelType(), isAlias, isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble, - isDate, isDateTime, isNull, hasValidation, isShort, isUnboundedInteger, + isDate, isDateTime, isNull, hasValidation, isShort, isUnboundedInteger, isBoolean, getVars(), getAllVars(), getRequiredVars(), getOptionalVars(), getReadOnlyVars(), getReadWriteVars(), getParentVars(), getAllowableValues(), getMandatory(), getAllMandatory(), getImports(), hasVars, isEmptyVars(), hasMoreModels, hasEnums, isEnum, isNullable, hasRequired, hasOptional, isArray, @@ -902,6 +911,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { sb.append(", isShort=").append(isShort); sb.append(", isLong=").append(isLong); sb.append(", isUnboundedInteger=").append(isUnboundedInteger); + sb.append(", isBoolean=").append(isBoolean); sb.append(", isNumber=").append(isNumber); sb.append(", isNumeric=").append(isNumeric); sb.append(", isFloat=").append(isFloat); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java index d2dc9fa9808..874ac93d152 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java @@ -574,6 +574,14 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { this.isShort = isShort; } + @Override + public boolean getIsBoolean() { return isBoolean; } + + @Override + public void setIsBoolean(boolean isBoolean) { + this.isBoolean = isBoolean; + } + @Override public boolean getIsUnboundedInteger() { return isUnboundedInteger; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java index 47e69fe89d4..c77abfbec98 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java @@ -517,6 +517,14 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti this.isShort = isShort; } + @Override + public boolean getIsBoolean() { return isBoolean; } + + @Override + public void setIsBoolean(boolean isBoolean) { + this.isBoolean = isBoolean; + } + @Override public boolean getIsUnboundedInteger() { return isUnboundedInteger; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java index d8c1756f446..22c85170bbb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java @@ -328,6 +328,14 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { this.isShort = isShort; } + @Override + public boolean getIsBoolean() { return isBoolean; } + + @Override + public void setIsBoolean(boolean isBoolean) { + this.isBoolean = isBoolean; + } + @Override public boolean getIsUnboundedInteger() { return isUnboundedInteger; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java index ea677853335..bf078ab792d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java @@ -83,6 +83,10 @@ public interface IJsonSchemaValidationProperties { void setIsShort(boolean isShort); + boolean getIsBoolean(); + + void setIsBoolean(boolean isBoolean); + boolean getIsUnboundedInteger(); void setIsUnboundedInteger(boolean isUnboundedInteger); @@ -118,4 +122,4 @@ public interface IJsonSchemaValidationProperties { boolean getHasRequired(); void setHasRequired(boolean hasRequired); -} \ No newline at end of file +} diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION index d509cc92aa8..6555596f931 100644 --- a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.1.1-SNAPSHOT \ No newline at end of file +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/api.ts b/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/api.ts index c9fba6a5167..afcfb41b258 100644 --- a/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/api.ts +++ b/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/api.ts @@ -383,6 +383,7 @@ export enum EnumArraysArrayEnumEnum { * @export * @enum {string} */ + export enum EnumClass { Abc = '_abc', Efg = '-efg', @@ -1017,6 +1018,7 @@ export interface OuterComposite { * @export * @enum {string} */ + export enum OuterEnum { Placed = 'placed', Approved = 'approved', @@ -1028,6 +1030,7 @@ export enum OuterEnum { * @export * @enum {string} */ + export enum OuterEnumDefaultValue { Placed = 'placed', Approved = 'approved', @@ -1039,6 +1042,7 @@ export enum OuterEnumDefaultValue { * @export * @enum {string} */ + export enum OuterEnumInteger { NUMBER_0 = 0, NUMBER_1 = 1, @@ -1050,6 +1054,7 @@ export enum OuterEnumInteger { * @export * @enum {string} */ + export enum OuterEnumIntegerDefaultValue { NUMBER_0 = 0, NUMBER_1 = 1, From 73350073b21188b1c6424ca453b3d5376580c9e3 Mon Sep 17 00:00:00 2001 From: Sebastian Weddmark Olsson Date: Sat, 19 Jun 2021 04:44:31 +0200 Subject: [PATCH 147/192] [erlang-server] spec fixes (#9784) --- .../src/main/resources/erlang-server/logic_handler.mustache | 3 +-- .../src/main/resources/erlang-server/server.mustache | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/erlang-server/logic_handler.mustache b/modules/openapi-generator/src/main/resources/erlang-server/logic_handler.mustache index c8af361cd96..eb0688e682c 100644 --- a/modules/openapi-generator/src/main/resources/erlang-server/logic_handler.mustache +++ b/modules/openapi-generator/src/main/resources/erlang-server/logic_handler.mustache @@ -15,8 +15,7 @@ -type handler_response() ::{ Status :: cowboy:http_status(), Headers :: cowboy:http_headers(), - Body :: #{} -}. + Body :: jsx:json_term()}. -export_type([handler_response/0]). diff --git a/modules/openapi-generator/src/main/resources/erlang-server/server.mustache b/modules/openapi-generator/src/main/resources/erlang-server/server.mustache index 204a8fd8659..cca0af57a84 100644 --- a/modules/openapi-generator/src/main/resources/erlang-server/server.mustache +++ b/modules/openapi-generator/src/main/resources/erlang-server/server.mustache @@ -64,4 +64,4 @@ get_default_opts(LogicHandler) -> #{env => get_default_dispatch(LogicHandler)}. store_key(Key, Value, Opts) -> - lists:keystore(Key, 1, Opts, {Key, Value}). + maps:put(Key, Value, Opts). From 513e242a3ee40cc8e3bc91b9b7df12fc47af0e40 Mon Sep 17 00:00:00 2001 From: Yoshiyuki Kurauchi Date: Sat, 19 Jun 2021 11:50:28 +0900 Subject: [PATCH 148/192] Return empty binary for 304 (#9800) --- .../src/main/resources/erlang-server/handler.mustache | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache b/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache index dc1c47cc20e..270d3ee7050 100644 --- a/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache +++ b/modules/openapi-generator/src/main/resources/erlang-server/handler.mustache @@ -244,5 +244,7 @@ validate_headers(_, Req) -> {true, Req}. prepare_body(204, Body) when map_size(Body) == 0; length(Body) == 0 -> <<>>; +prepare_body(304, Body) when map_size(Body) == 0; length(Body) == 0 -> + <<>>; prepare_body(_Code, Body) -> jsx:encode(Body). From 70fb429c98a91e418b2e890979c4caea79cb55b5 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 19 Jun 2021 10:50:52 +0800 Subject: [PATCH 149/192] update erlang server samples --- .../petstore/erlang-server/src/openapi_logic_handler.erl | 3 +-- .../server/petstore/erlang-server/src/openapi_pet_handler.erl | 2 ++ samples/server/petstore/erlang-server/src/openapi_server.erl | 2 +- .../petstore/erlang-server/src/openapi_store_handler.erl | 2 ++ .../server/petstore/erlang-server/src/openapi_user_handler.erl | 2 ++ 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/samples/server/petstore/erlang-server/src/openapi_logic_handler.erl b/samples/server/petstore/erlang-server/src/openapi_logic_handler.erl index 2c05ce24836..1a36f0a40f4 100644 --- a/samples/server/petstore/erlang-server/src/openapi_logic_handler.erl +++ b/samples/server/petstore/erlang-server/src/openapi_logic_handler.erl @@ -6,8 +6,7 @@ -type handler_response() ::{ Status :: cowboy:http_status(), Headers :: cowboy:http_headers(), - Body :: #{} -}. + Body :: jsx:json_term()}. -export_type([handler_response/0]). diff --git a/samples/server/petstore/erlang-server/src/openapi_pet_handler.erl b/samples/server/petstore/erlang-server/src/openapi_pet_handler.erl index 203cc07b28a..a6cbaab177c 100644 --- a/samples/server/petstore/erlang-server/src/openapi_pet_handler.erl +++ b/samples/server/petstore/erlang-server/src/openapi_pet_handler.erl @@ -475,5 +475,7 @@ validate_headers(_, Req) -> {true, Req}. prepare_body(204, Body) when map_size(Body) == 0; length(Body) == 0 -> <<>>; +prepare_body(304, Body) when map_size(Body) == 0; length(Body) == 0 -> + <<>>; prepare_body(_Code, Body) -> jsx:encode(Body). diff --git a/samples/server/petstore/erlang-server/src/openapi_server.erl b/samples/server/petstore/erlang-server/src/openapi_server.erl index 45f6d1a39d5..02500173821 100644 --- a/samples/server/petstore/erlang-server/src/openapi_server.erl +++ b/samples/server/petstore/erlang-server/src/openapi_server.erl @@ -64,4 +64,4 @@ get_default_opts(LogicHandler) -> #{env => get_default_dispatch(LogicHandler)}. store_key(Key, Value, Opts) -> - lists:keystore(Key, 1, Opts, {Key, Value}). + maps:put(Key, Value, Opts). diff --git a/samples/server/petstore/erlang-server/src/openapi_store_handler.erl b/samples/server/petstore/erlang-server/src/openapi_store_handler.erl index b7969837147..98341c066c2 100644 --- a/samples/server/petstore/erlang-server/src/openapi_store_handler.erl +++ b/samples/server/petstore/erlang-server/src/openapi_store_handler.erl @@ -270,5 +270,7 @@ validate_headers(_, Req) -> {true, Req}. prepare_body(204, Body) when map_size(Body) == 0; length(Body) == 0 -> <<>>; +prepare_body(304, Body) when map_size(Body) == 0; length(Body) == 0 -> + <<>>; prepare_body(_Code, Body) -> jsx:encode(Body). diff --git a/samples/server/petstore/erlang-server/src/openapi_user_handler.erl b/samples/server/petstore/erlang-server/src/openapi_user_handler.erl index f0d9179392c..ad9f11d7300 100644 --- a/samples/server/petstore/erlang-server/src/openapi_user_handler.erl +++ b/samples/server/petstore/erlang-server/src/openapi_user_handler.erl @@ -437,5 +437,7 @@ validate_headers(_, Req) -> {true, Req}. prepare_body(204, Body) when map_size(Body) == 0; length(Body) == 0 -> <<>>; +prepare_body(304, Body) when map_size(Body) == 0; length(Body) == 0 -> + <<>>; prepare_body(_Code, Body) -> jsx:encode(Body). From c5405aa59a57f59532eb704308778eeb22598107 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 19 Jun 2021 11:23:05 +0800 Subject: [PATCH 150/192] [Go-client] Fix inability to download files (#9812) * Revert a change to the Go Client code that broke the ability to download files. This reverts the change from https://github.com/OpenAPITools/openapi-generator/commit/14d41310b968b47bf2a6bc89bbc9c7dadffaca06 * Missed import for "io/ioutil" * update samples Co-authored-by: icubbon --- .../src/main/resources/go/client.mustache | 10 ++++++++++ samples/client/petstore/go/go-petstore/client.go | 10 ++++++++++ .../x-auth-id-alias/go-experimental/client.go | 10 ++++++++++ .../openapi3/client/petstore/go/go-petstore/client.go | 10 ++++++++++ 4 files changed, 40 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/go/client.mustache b/modules/openapi-generator/src/main/resources/go/client.mustache index 476a2081f88..572bd7f800c 100644 --- a/modules/openapi-generator/src/main/resources/go/client.mustache +++ b/modules/openapi-generator/src/main/resources/go/client.mustache @@ -9,6 +9,7 @@ import ( "errors" "fmt" "io" + "io/ioutil" "log" "mime/multipart" "net/http" @@ -419,6 +420,15 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err *s = string(b) return nil } + if f, ok := v.(**os.File); ok { + *f, err = ioutil.TempFile("", "HttpClientFile") + if err != nil { + return + } + _, err = (*f).Write(b) + _, err = (*f).Seek(0, io.SeekStart) + return + } if xmlCheck.MatchString(contentType) { if err = xml.Unmarshal(b, v); err != nil { return err diff --git a/samples/client/petstore/go/go-petstore/client.go b/samples/client/petstore/go/go-petstore/client.go index 251130b3c2c..411570ac871 100644 --- a/samples/client/petstore/go/go-petstore/client.go +++ b/samples/client/petstore/go/go-petstore/client.go @@ -18,6 +18,7 @@ import ( "errors" "fmt" "io" + "io/ioutil" "log" "mime/multipart" "net/http" @@ -374,6 +375,15 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err *s = string(b) return nil } + if f, ok := v.(**os.File); ok { + *f, err = ioutil.TempFile("", "HttpClientFile") + if err != nil { + return + } + _, err = (*f).Write(b) + _, err = (*f).Seek(0, io.SeekStart) + return + } if xmlCheck.MatchString(contentType) { if err = xml.Unmarshal(b, v); err != nil { return err diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go index ad7707a3b82..1d0dad0e27b 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go +++ b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go @@ -18,6 +18,7 @@ import ( "errors" "fmt" "io" + "io/ioutil" "log" "mime/multipart" "net/http" @@ -359,6 +360,15 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err *s = string(b) return nil } + if f, ok := v.(**os.File); ok { + *f, err = ioutil.TempFile("", "HttpClientFile") + if err != nil { + return + } + _, err = (*f).Write(b) + _, err = (*f).Seek(0, io.SeekStart) + return + } if xmlCheck.MatchString(contentType) { if err = xml.Unmarshal(b, v); err != nil { return err diff --git a/samples/openapi3/client/petstore/go/go-petstore/client.go b/samples/openapi3/client/petstore/go/go-petstore/client.go index 398927f7d7d..4902cfae215 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/client.go +++ b/samples/openapi3/client/petstore/go/go-petstore/client.go @@ -18,6 +18,7 @@ import ( "errors" "fmt" "io" + "io/ioutil" "log" "mime/multipart" "net/http" @@ -387,6 +388,15 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err *s = string(b) return nil } + if f, ok := v.(**os.File); ok { + *f, err = ioutil.TempFile("", "HttpClientFile") + if err != nil { + return + } + _, err = (*f).Write(b) + _, err = (*f).Seek(0, io.SeekStart) + return + } if xmlCheck.MatchString(contentType) { if err = xml.Unmarshal(b, v); err != nil { return err From 015886fdedf79b7a33fa7c2351ec41c40df89549 Mon Sep 17 00:00:00 2001 From: Prajon Shakya Date: Sat, 19 Jun 2021 00:42:33 -0400 Subject: [PATCH 151/192] [csharp][netcore] Update type "String" to "string" for consistent type (#9713) * Updated 'String' to 'string' for consistent use of keyword * Build project and update samples for csharp-netcore --- .../csharp-netcore/ApiClient.mustache | 10 +- .../csharp-netcore/ApiResponse.mustache | 4 +- .../csharp-netcore/ClientUtils.mustache | 14 +- .../csharp-netcore/Configuration.mustache | 6 +- .../HttpSigningConfiguration.mustache | 28 +- .../csharp-netcore/IApiAccessor.mustache | 2 +- .../IAsynchronousClient.mustache | 14 +- .../ISynchronousClient.mustache | 14 +- .../csharp-netcore/RequestOptions.mustache | 14 +- .../resources/csharp-netcore/api.mustache | 36 +- .../libraries/httpclient/ApiClient.mustache | 12 +- .../httpclient/RequestOptions.mustache | 14 +- .../libraries/httpclient/api.mustache | 38 +- .../csharp-netcore/modelAnyOf.mustache | 4 +- .../csharp-netcore/modelOneOf.mustache | 6 +- .../.openapi-generator/FILES | 374 +++++++++--------- .../Org.OpenAPITools/Api/AnotherFakeApi.cs | 14 +- .../src/Org.OpenAPITools/Api/DefaultApi.cs | 14 +- .../src/Org.OpenAPITools/Api/FakeApi.cs | 134 +++---- .../Api/FakeClassnameTags123Api.cs | 18 +- .../src/Org.OpenAPITools/Api/PetApi.cs | 114 +++--- .../src/Org.OpenAPITools/Api/StoreApi.cs | 42 +- .../src/Org.OpenAPITools/Api/UserApi.cs | 70 ++-- .../src/Org.OpenAPITools/Client/ApiClient.cs | 12 +- .../Org.OpenAPITools/Client/ApiResponse.cs | 4 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 14 +- .../Org.OpenAPITools/Client/Configuration.cs | 6 +- .../Client/HttpSigningConfiguration.cs | 28 +- .../Org.OpenAPITools/Client/IApiAccessor.cs | 2 +- .../Client/IAsynchronousClient.cs | 14 +- .../Client/ISynchronousClient.cs | 14 +- .../Org.OpenAPITools/Client/RequestOptions.cs | 14 +- .../src/Org.OpenAPITools/Model/Fruit.cs | 6 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 6 +- .../src/Org.OpenAPITools/Model/GmFruit.cs | 6 +- .../src/Org.OpenAPITools/Model/Mammal.cs | 10 +- .../Org.OpenAPITools/Model/NullableShape.cs | 8 +- .../src/Org.OpenAPITools/Model/Pig.cs | 8 +- .../Org.OpenAPITools/Model/Quadrilateral.cs | 8 +- .../src/Org.OpenAPITools/Model/Shape.cs | 8 +- .../src/Org.OpenAPITools/Model/ShapeOrNull.cs | 8 +- .../src/Org.OpenAPITools/Model/Triangle.cs | 10 +- .../.openapi-generator/FILES | 374 +++++++++--------- .../Org.OpenAPITools/Api/AnotherFakeApi.cs | 12 +- .../src/Org.OpenAPITools/Api/DefaultApi.cs | 12 +- .../src/Org.OpenAPITools/Api/FakeApi.cs | 132 +++---- .../Api/FakeClassnameTags123Api.cs | 16 +- .../src/Org.OpenAPITools/Api/PetApi.cs | 112 +++--- .../src/Org.OpenAPITools/Api/StoreApi.cs | 40 +- .../src/Org.OpenAPITools/Api/UserApi.cs | 68 ++-- .../src/Org.OpenAPITools/Client/ApiClient.cs | 10 +- .../Org.OpenAPITools/Client/ApiResponse.cs | 4 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 14 +- .../Org.OpenAPITools/Client/Configuration.cs | 6 +- .../Client/HttpSigningConfiguration.cs | 28 +- .../Org.OpenAPITools/Client/IApiAccessor.cs | 2 +- .../Client/IAsynchronousClient.cs | 14 +- .../Client/ISynchronousClient.cs | 14 +- .../Org.OpenAPITools/Client/RequestOptions.cs | 14 +- .../src/Org.OpenAPITools/Model/Fruit.cs | 6 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 6 +- .../src/Org.OpenAPITools/Model/GmFruit.cs | 6 +- .../src/Org.OpenAPITools/Model/Mammal.cs | 10 +- .../Org.OpenAPITools/Model/NullableShape.cs | 8 +- .../src/Org.OpenAPITools/Model/Pig.cs | 8 +- .../Org.OpenAPITools/Model/Quadrilateral.cs | 8 +- .../src/Org.OpenAPITools/Model/Shape.cs | 8 +- .../src/Org.OpenAPITools/Model/ShapeOrNull.cs | 8 +- .../src/Org.OpenAPITools/Model/Triangle.cs | 10 +- .../.openapi-generator/FILES | 374 +++++++++--------- .../Org.OpenAPITools/Api/AnotherFakeApi.cs | 12 +- .../src/Org.OpenAPITools/Api/DefaultApi.cs | 12 +- .../src/Org.OpenAPITools/Api/FakeApi.cs | 132 +++---- .../Api/FakeClassnameTags123Api.cs | 16 +- .../src/Org.OpenAPITools/Api/PetApi.cs | 112 +++--- .../src/Org.OpenAPITools/Api/StoreApi.cs | 40 +- .../src/Org.OpenAPITools/Api/UserApi.cs | 68 ++-- .../src/Org.OpenAPITools/Client/ApiClient.cs | 10 +- .../Org.OpenAPITools/Client/ApiResponse.cs | 4 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 14 +- .../Org.OpenAPITools/Client/Configuration.cs | 6 +- .../Client/HttpSigningConfiguration.cs | 28 +- .../Org.OpenAPITools/Client/IApiAccessor.cs | 2 +- .../Client/IAsynchronousClient.cs | 14 +- .../Client/ISynchronousClient.cs | 14 +- .../Org.OpenAPITools/Client/RequestOptions.cs | 14 +- .../src/Org.OpenAPITools/Model/Fruit.cs | 6 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 6 +- .../src/Org.OpenAPITools/Model/GmFruit.cs | 6 +- .../src/Org.OpenAPITools/Model/Mammal.cs | 10 +- .../Org.OpenAPITools/Model/NullableShape.cs | 8 +- .../src/Org.OpenAPITools/Model/Pig.cs | 8 +- .../Org.OpenAPITools/Model/Quadrilateral.cs | 8 +- .../src/Org.OpenAPITools/Model/Shape.cs | 8 +- .../src/Org.OpenAPITools/Model/ShapeOrNull.cs | 8 +- .../src/Org.OpenAPITools/Model/Triangle.cs | 10 +- .../OpenAPIClient/.openapi-generator/FILES | 372 ++++++++--------- .../Org.OpenAPITools/Api/AnotherFakeApi.cs | 12 +- .../src/Org.OpenAPITools/Api/DefaultApi.cs | 12 +- .../src/Org.OpenAPITools/Api/FakeApi.cs | 132 +++---- .../Api/FakeClassnameTags123Api.cs | 16 +- .../src/Org.OpenAPITools/Api/PetApi.cs | 112 +++--- .../src/Org.OpenAPITools/Api/StoreApi.cs | 40 +- .../src/Org.OpenAPITools/Api/UserApi.cs | 68 ++-- .../src/Org.OpenAPITools/Client/ApiClient.cs | 10 +- .../Org.OpenAPITools/Client/ApiResponse.cs | 4 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 14 +- .../Org.OpenAPITools/Client/Configuration.cs | 6 +- .../Client/HttpSigningConfiguration.cs | 28 +- .../Org.OpenAPITools/Client/IApiAccessor.cs | 2 +- .../Client/IAsynchronousClient.cs | 14 +- .../Client/ISynchronousClient.cs | 14 +- .../Org.OpenAPITools/Client/RequestOptions.cs | 14 +- .../src/Org.OpenAPITools/Model/Fruit.cs | 6 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 6 +- .../src/Org.OpenAPITools/Model/GmFruit.cs | 6 +- .../src/Org.OpenAPITools/Model/Mammal.cs | 10 +- .../Org.OpenAPITools/Model/NullableShape.cs | 8 +- .../src/Org.OpenAPITools/Model/Pig.cs | 8 +- .../Org.OpenAPITools/Model/Quadrilateral.cs | 8 +- .../src/Org.OpenAPITools/Model/Shape.cs | 8 +- .../src/Org.OpenAPITools/Model/ShapeOrNull.cs | 8 +- .../src/Org.OpenAPITools/Model/Triangle.cs | 10 +- .../.openapi-generator/FILES | 372 ++++++++--------- .../Org.OpenAPITools/Api/AnotherFakeApi.cs | 12 +- .../src/Org.OpenAPITools/Api/DefaultApi.cs | 12 +- .../src/Org.OpenAPITools/Api/FakeApi.cs | 132 +++---- .../Api/FakeClassnameTags123Api.cs | 16 +- .../src/Org.OpenAPITools/Api/PetApi.cs | 112 +++--- .../src/Org.OpenAPITools/Api/StoreApi.cs | 40 +- .../src/Org.OpenAPITools/Api/UserApi.cs | 68 ++-- .../src/Org.OpenAPITools/Client/ApiClient.cs | 10 +- .../Org.OpenAPITools/Client/ApiResponse.cs | 4 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 14 +- .../Org.OpenAPITools/Client/Configuration.cs | 6 +- .../Client/HttpSigningConfiguration.cs | 28 +- .../Org.OpenAPITools/Client/IApiAccessor.cs | 2 +- .../Client/IAsynchronousClient.cs | 14 +- .../Client/ISynchronousClient.cs | 14 +- .../Org.OpenAPITools/Client/RequestOptions.cs | 14 +- .../src/Org.OpenAPITools/Model/Fruit.cs | 6 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 6 +- .../src/Org.OpenAPITools/Model/GmFruit.cs | 6 +- .../src/Org.OpenAPITools/Model/Mammal.cs | 8 +- .../Org.OpenAPITools/Model/NullableShape.cs | 6 +- .../src/Org.OpenAPITools/Model/Pig.cs | 6 +- .../Org.OpenAPITools/Model/Quadrilateral.cs | 6 +- .../src/Org.OpenAPITools/Model/Shape.cs | 6 +- .../src/Org.OpenAPITools/Model/ShapeOrNull.cs | 6 +- .../src/Org.OpenAPITools/Model/Triangle.cs | 8 +- .../.openapi-generator/FILES | 84 ++-- .../src/Org.OpenAPITools/Api/PetApi.cs | 100 ++--- .../src/Org.OpenAPITools/Api/StoreApi.cs | 40 +- .../src/Org.OpenAPITools/Api/UserApi.cs | 92 ++--- .../src/Org.OpenAPITools/Client/ApiClient.cs | 10 +- .../Org.OpenAPITools/Client/ApiResponse.cs | 4 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 14 +- .../Org.OpenAPITools/Client/Configuration.cs | 6 +- .../Org.OpenAPITools/Client/IApiAccessor.cs | 2 +- .../Client/IAsynchronousClient.cs | 14 +- .../Client/ISynchronousClient.cs | 14 +- .../Org.OpenAPITools/Client/RequestOptions.cs | 14 +- 162 files changed, 2679 insertions(+), 2679 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache index 6d0e25d93f4..8f62efb7394 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache @@ -106,7 +106,7 @@ namespace {{packageName}}.Client var bytes = response.RawBytes; if (response.Headers != null) { - var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) + var filePath = string.IsNullOrEmpty(_configuration.TempFolderPath) ? Path.GetTempPath() : _configuration.TempFolderPath; var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); @@ -130,7 +130,7 @@ namespace {{packageName}}.Client return DateTime.Parse(response.Content, null, System.Globalization.DateTimeStyles.RoundtripKind); } - if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + if (type == typeof(string) || type.Name.StartsWith("System.Nullable")) // return primitive type { return Convert.ChangeType(response.Content, type); } @@ -163,7 +163,7 @@ namespace {{packageName}}.Client /// {{>visibility}} partial class ApiClient : ISynchronousClient{{#supportsAsync}}, IAsynchronousClient{{/supportsAsync}} { - private readonly String _baseUrl; + private readonly string _baseUrl; ///

    /// Specifies the settings on a object. @@ -208,7 +208,7 @@ namespace {{packageName}}.Client /// /// The target service's base path in URL format. /// - public ApiClient(String basePath) + public ApiClient(string basePath) { if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); @@ -269,7 +269,7 @@ namespace {{packageName}}.Client /// private RestRequest NewRequest( HttpMethod method, - String path, + string path, RequestOptions options, IReadableConfiguration configuration) { diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiResponse.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiResponse.mustache index 35bd9f72d31..161c2acd16c 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiResponse.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiResponse.mustache @@ -36,7 +36,7 @@ namespace {{packageName}}.Client /// /// Gets or sets any error text defined by the calling client. /// - String ErrorText { get; set; } + string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. @@ -77,7 +77,7 @@ namespace {{packageName}}.Client /// /// Gets or sets any error text defined by the calling client. /// - public String ErrorText { get; set; } + public string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/ClientUtils.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/ClientUtils.mustache index dd9a5f90fdc..3c04dcdbd0c 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/ClientUtils.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/ClientUtils.mustache @@ -120,7 +120,7 @@ namespace {{packageName}}.Client /// URL encode a string /// Credit/Ref: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Extensions/StringExtensions.cs#L50 /// - /// String to be URL encoded + /// string to be URL encoded /// Byte array public static string UrlEncode(string input) { @@ -154,7 +154,7 @@ namespace {{packageName}}.Client /// /// Encode string in base64 format. /// - /// String to be encoded. + /// string to be encoded. /// Encoded string. public static string Base64Encode(string text) { @@ -182,7 +182,7 @@ namespace {{packageName}}.Client /// /// The Content-Type array to select from. /// The Content-Type header to use. - public static String SelectHeaderContentType(String[] contentTypes) + public static string SelectHeaderContentType(string[] contentTypes) { if (contentTypes.Length == 0) return null; @@ -203,7 +203,7 @@ namespace {{packageName}}.Client /// /// The accepts array to select from. /// The Accept header to use. - public static String SelectHeaderAccept(String[] accepts) + public static string SelectHeaderAccept(string[] accepts) { if (accepts.Length == 0) return null; @@ -211,7 +211,7 @@ namespace {{packageName}}.Client if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) return "application/json"; - return String.Join(",", accepts); + return string.Join(",", accepts); } /// @@ -229,9 +229,9 @@ namespace {{packageName}}.Client /// /// MIME /// Returns True if MIME type is json. - public static bool IsJsonMime(String mime) + public static bool IsJsonMime(string mime) { - if (String.IsNullOrWhiteSpace(mime)) return false; + if (string.IsNullOrWhiteSpace(mime)) return false; return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"); } diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/Configuration.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/Configuration.mustache index 718db517d4e..ead56414441 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/Configuration.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/Configuration.mustache @@ -68,7 +68,7 @@ namespace {{packageName}}.Client /// Defines the base path of the target API server. /// Example: http://localhost:3000/v1/ /// - private String _basePath; + private string _basePath; /// /// Gets or sets the API key based on the authentication name. @@ -496,9 +496,9 @@ namespace {{packageName}}.Client /// /// Returns a string with essential information for debugging. /// - public static String ToDebugReport() + public static string ToDebugReport() { - String report = "C# SDK ({{{packageName}}}) Debug Report:\n"; + string report = "C# SDK ({{{packageName}}}) Debug Report:\n"; report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; report += " Version of the API: {{{version}}}\n"; diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/HttpSigningConfiguration.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/HttpSigningConfiguration.mustache index 597f503e558..cc8c275e40b 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/HttpSigningConfiguration.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/HttpSigningConfiguration.mustache @@ -120,7 +120,7 @@ namespace {{packageName}}.Client } } - var httpValues = HttpUtility.ParseQueryString(String.Empty); + var httpValues = HttpUtility.ParseQueryString(string.Empty); foreach (var parameter in requestOptions.QueryParameters) { #if (NETCOREAPP) @@ -153,7 +153,7 @@ namespace {{packageName}}.Client uriBuilder.Query = httpValues.ToString().Replace("+", "%20"); var dateTime = DateTime.Now; - String Digest = String.Empty; + string Digest = string.Empty; //get the body string requestBody = string.Empty; @@ -230,7 +230,7 @@ namespace {{packageName}}.Client } } - var headersKeysString = String.Join(" ", HttpSignatureHeader.Keys); + var headersKeysString = string.Join(" ", HttpSignatureHeader.Keys); var headerValuesList = new List(); foreach (var keyVal in HttpSignatureHeader) @@ -411,10 +411,10 @@ namespace {{packageName}}.Client return derBytes.ToArray(); } - private RSACryptoServiceProvider GetRSAProviderFromPemFile(String pemfile, SecureString keyPassPharse = null) + private RSACryptoServiceProvider GetRSAProviderFromPemFile(string pemfile, SecureString keyPassPharse = null) { - const String pempubheader = "-----BEGIN PUBLIC KEY-----"; - const String pempubfooter = "-----END PUBLIC KEY-----"; + const string pempubheader = "-----BEGIN PUBLIC KEY-----"; + const string pempubfooter = "-----END PUBLIC KEY-----"; bool isPrivateKeyFile = true; byte[] pemkey = null; @@ -441,11 +441,11 @@ namespace {{packageName}}.Client return null; } - private byte[] ConvertPrivateKeyToBytes(String instr, SecureString keyPassPharse = null) + private byte[] ConvertPrivateKeyToBytes(string instr, SecureString keyPassPharse = null) { - const String pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; - const String pemprivfooter = "-----END RSA PRIVATE KEY-----"; - String pemstr = instr.Trim(); + const string pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; + const string pemprivfooter = "-----END RSA PRIVATE KEY-----"; + string pemstr = instr.Trim(); byte[] binkey; if (!pemstr.StartsWith(pemprivheader) || !pemstr.EndsWith(pemprivfooter)) @@ -456,7 +456,7 @@ namespace {{packageName}}.Client StringBuilder sb = new StringBuilder(pemstr); sb.Replace(pemprivheader, ""); sb.Replace(pemprivfooter, ""); - String pvkstr = sb.ToString().Trim(); + string pvkstr = sb.ToString().Trim(); try { // if there are no PEM encryption info lines, this is an UNencrypted PEM private key @@ -472,12 +472,12 @@ namespace {{packageName}}.Client { return null; } - String saltline = str.ReadLine(); + string saltline = str.ReadLine(); if (!saltline.StartsWith("DEK-Info: DES-EDE3-CBC,")) { return null; } - String saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); + string saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); byte[] salt = new byte[saltstr.Length / 2]; for (int i = 0; i < salt.Length; i++) salt[i] = Convert.ToByte(saltstr.Substring(i * 2, 2), 16); @@ -487,7 +487,7 @@ namespace {{packageName}}.Client } //------ remaining b64 data is encrypted RSA key ---- - String encryptedstr = str.ReadToEnd(); + string encryptedstr = str.ReadToEnd(); try { //should have b64 encrypted RSA key now diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/IApiAccessor.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/IApiAccessor.mustache index 5ef01aa6c0d..a269f56e904 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/IApiAccessor.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/IApiAccessor.mustache @@ -19,7 +19,7 @@ namespace {{packageName}}.Client /// Gets the base path of the API client. /// /// The base path - String GetBasePath(); + string GetBasePath(); /// /// Provides a factory method hook for the creation of exceptions. diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/IAsynchronousClient.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/IAsynchronousClient.mustache index 8dca28d0f88..f0c88fae473 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/IAsynchronousClient.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/IAsynchronousClient.mustache @@ -21,7 +21,7 @@ namespace {{packageName}}.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> GetAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the POST http verb. @@ -32,7 +32,7 @@ namespace {{packageName}}.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PostAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PUT http verb. @@ -43,7 +43,7 @@ namespace {{packageName}}.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PutAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the DELETE http verb. @@ -54,7 +54,7 @@ namespace {{packageName}}.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> DeleteAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the HEAD http verb. @@ -65,7 +65,7 @@ namespace {{packageName}}.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> HeadAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the OPTIONS http verb. @@ -76,7 +76,7 @@ namespace {{packageName}}.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> OptionsAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PATCH http verb. @@ -87,6 +87,6 @@ namespace {{packageName}}.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PatchAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); } } diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/ISynchronousClient.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/ISynchronousClient.mustache index 1ac0b2a8691..c09bfbfed66 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/ISynchronousClient.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/ISynchronousClient.mustache @@ -20,7 +20,7 @@ namespace {{packageName}}.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Get(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the POST http verb. @@ -30,7 +30,7 @@ namespace {{packageName}}.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Post(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PUT http verb. @@ -40,7 +40,7 @@ namespace {{packageName}}.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Put(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the DELETE http verb. @@ -50,7 +50,7 @@ namespace {{packageName}}.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Delete(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the HEAD http verb. @@ -60,7 +60,7 @@ namespace {{packageName}}.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Head(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the OPTIONS http verb. @@ -70,7 +70,7 @@ namespace {{packageName}}.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Options(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PATCH http verb. @@ -80,6 +80,6 @@ namespace {{packageName}}.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Patch(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null); } } diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/RequestOptions.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/RequestOptions.mustache index 224eb497d28..dc924c733c1 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/RequestOptions.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/RequestOptions.mustache @@ -16,29 +16,29 @@ namespace {{packageName}}.Client /// /// Parameters to be bound to path parts of the Request's URL /// - public Dictionary PathParameters { get; set; } + public Dictionary PathParameters { get; set; } /// /// Query parameters to be applied to the request. /// Keys may have 1 or more values associated. /// - public Multimap QueryParameters { get; set; } + public Multimap QueryParameters { get; set; } /// /// Header parameters to be applied to to the request. /// Keys may have 1 or more values associated. /// - public Multimap HeaderParameters { get; set; } + public Multimap HeaderParameters { get; set; } /// /// Form parameters to be sent along with the request. /// - public Dictionary FormParameters { get; set; } + public Dictionary FormParameters { get; set; } /// /// File parameters to be sent along with the request. /// - public Dictionary FileParameters { get; set; } + public Dictionary FileParameters { get; set; } /// /// Cookies to be sent along with the request. @@ -59,8 +59,8 @@ namespace {{packageName}}.Client QueryParameters = new Multimap(); HeaderParameters = new Multimap(); FormParameters = new Dictionary(); - FileParameters = new Dictionary(); + FileParameters = new Dictionary(); Cookies = new List(); } } -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/api.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/api.mustache index 40d3bfd6596..8d84eecefb4 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/api.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/api.mustache @@ -115,7 +115,7 @@ namespace {{packageName}}.{{apiPackage}} /// Initializes a new instance of the class. /// /// - public {{classname}}(String basePath) + public {{classname}}(string basePath) { this.Configuration = {{packageName}}.Client.Configuration.MergeConfigurations( {{packageName}}.Client.GlobalConfiguration.Instance, @@ -188,7 +188,7 @@ namespace {{packageName}}.{{apiPackage}} /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -248,14 +248,14 @@ namespace {{packageName}}.{{apiPackage}} {{/allParams}} {{packageName}}.Client.RequestOptions localVarRequestOptions = new {{packageName}}.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { {{#consumes}} "{{{mediaType}}}"{{^-last}},{{/-last}} {{/consumes}} }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { {{#produces}} "{{{mediaType}}}"{{^-last}},{{/-last}} {{/produces}} @@ -353,19 +353,19 @@ namespace {{packageName}}.{{apiPackage}} {{#isApiKey}} {{#isKeyInCookie}} // cookie parameter support - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) { localVarRequestOptions.Cookies.Add(new Cookie("{{keyParamName}}", this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))); } {{/isKeyInCookie}} {{#isKeyInHeader}} - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) { localVarRequestOptions.HeaderParameters.Add("{{keyParamName}}", this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}")); } {{/isKeyInHeader}} {{#isKeyInQuery}} - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) { localVarRequestOptions.QueryParameters.Add({{packageName}}.Client.ClientUtils.ParameterToMultiMap("", "{{keyParamName}}", this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))); } @@ -373,21 +373,21 @@ namespace {{packageName}}.{{apiPackage}} {{/isApiKey}} {{#isBasicBasic}} // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + {{packageName}}.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } {{/isBasicBasic}} {{#isBasicBearer}} // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } {{/isBasicBearer}} {{#isOAuth}} // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -463,14 +463,14 @@ namespace {{packageName}}.{{apiPackage}} {{packageName}}.Client.RequestOptions localVarRequestOptions = new {{packageName}}.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { {{#consumes}} "{{{mediaType}}}"{{^-last}}, {{/-last}} {{/consumes}} }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { {{#produces}} "{{{mediaType}}}"{{^-last}},{{/-last}} {{/produces}} @@ -546,19 +546,19 @@ namespace {{packageName}}.{{apiPackage}} {{#isApiKey}} {{#isKeyInCookie}} // cookie parameter support - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) { localVarRequestOptions.Cookies.Add(new Cookie("{{keyParamName}}", this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))); } {{/isKeyInCookie}} {{#isKeyInHeader}} - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) { localVarRequestOptions.HeaderParameters.Add("{{keyParamName}}", this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}")); } {{/isKeyInHeader}} {{#isKeyInQuery}} - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) { localVarRequestOptions.QueryParameters.Add({{packageName}}.Client.ClientUtils.ParameterToMultiMap("", "{{keyParamName}}", this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))); } @@ -567,14 +567,14 @@ namespace {{packageName}}.{{apiPackage}} {{#isBasic}} {{#isBasicBasic}} // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + {{packageName}}.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } {{/isBasicBasic}} {{#isBasicBearer}} // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -582,7 +582,7 @@ namespace {{packageName}}.{{apiPackage}} {{/isBasic}} {{#isOAuth}} // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache index e48722f8fa7..e9c39ea9f6d 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/ApiClient.mustache @@ -107,7 +107,7 @@ namespace {{packageName}}.Client var bytes = await response.Content.ReadAsByteArrayAsync(); if (headers != null) { - var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) + var filePath = string.IsNullOrEmpty(_configuration.TempFolderPath) ? Path.GetTempPath() : _configuration.TempFolderPath; var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); @@ -131,7 +131,7 @@ namespace {{packageName}}.Client return DateTime.Parse(await response.Content.ReadAsStringAsync(), null, System.Globalization.DateTimeStyles.RoundtripKind); } - if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + if (type == typeof(string) || type.Name.StartsWith("System.Nullable")) // return primitive type { return Convert.ChangeType(await response.Content.ReadAsStringAsync(), type); } @@ -166,7 +166,7 @@ namespace {{packageName}}.Client /// {{>visibility}} partial class ApiClient : IDisposable, ISynchronousClient{{#supportsAsync}}, IAsynchronousClient{{/supportsAsync}} { - private readonly String _baseUrl; + private readonly string _baseUrl; private readonly HttpClientHandler _httpClientHandler; private readonly HttpClient _httpClient; @@ -206,7 +206,7 @@ namespace {{packageName}}.Client /// /// The target service's base path in URL format. /// - public ApiClient(String basePath) + public ApiClient(string basePath) { if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); @@ -243,7 +243,7 @@ namespace {{packageName}}.Client /// Some configuration settings will not be applied without passing an HttpClientHandler. /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. /// - public ApiClient(HttpClient client, String basePath, HttpClientHandler handler = null) + public ApiClient(HttpClient client, string basePath, HttpClientHandler handler = null) { if (client == null) throw new ArgumentNullException("client cannot be null"); if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); @@ -301,7 +301,7 @@ namespace {{packageName}}.Client /// private HttpRequestMessage NewRequest( HttpMethod method, - String path, + string path, RequestOptions options, IReadableConfiguration configuration) { diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/RequestOptions.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/RequestOptions.mustache index b0137d97997..bc5a8e348b8 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/RequestOptions.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/RequestOptions.mustache @@ -16,29 +16,29 @@ namespace {{packageName}}.Client /// /// Parameters to be bound to path parts of the Request's URL /// - public Dictionary PathParameters { get; set; } + public Dictionary PathParameters { get; set; } /// /// Query parameters to be applied to the request. /// Keys may have 1 or more values associated. /// - public Multimap QueryParameters { get; set; } + public Multimap QueryParameters { get; set; } /// /// Header parameters to be applied to to the request. /// Keys may have 1 or more values associated. /// - public Multimap HeaderParameters { get; set; } + public Multimap HeaderParameters { get; set; } /// /// Form parameters to be sent along with the request. /// - public Dictionary FormParameters { get; set; } + public Dictionary FormParameters { get; set; } /// /// File parameters to be sent along with the request. /// - public Dictionary FileParameters { get; set; } + public Dictionary FileParameters { get; set; } /// /// Cookies to be sent along with the request. @@ -59,8 +59,8 @@ namespace {{packageName}}.Client QueryParameters = new Multimap(); HeaderParameters = new Multimap(); FormParameters = new Dictionary(); - FileParameters = new Dictionary(); + FileParameters = new Dictionary(); Cookies = new List(); } } -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/api.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/api.mustache index 0a3389d0a45..20ddfe96b98 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/api.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/httpclient/api.mustache @@ -122,7 +122,7 @@ namespace {{packageName}}.{{apiPackage}} /// The target service's base path in URL format. /// /// - public {{classname}}(String basePath) + public {{classname}}(string basePath) { this.Configuration = {{packageName}}.Client.Configuration.MergeConfigurations( {{packageName}}.Client.GlobalConfiguration.Instance, @@ -188,7 +188,7 @@ namespace {{packageName}}.{{apiPackage}} /// Some configuration settings will not be applied without passing an HttpClientHandler. /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. /// - public {{classname}}(HttpClient client, String basePath, HttpClientHandler handler = null) + public {{classname}}(HttpClient client, string basePath, HttpClientHandler handler = null) { if (client == null) throw new ArgumentNullException("client"); @@ -286,7 +286,7 @@ namespace {{packageName}}.{{apiPackage}} /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -346,14 +346,14 @@ namespace {{packageName}}.{{apiPackage}} {{/allParams}} {{packageName}}.Client.RequestOptions localVarRequestOptions = new {{packageName}}.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { {{#consumes}} "{{{mediaType}}}"{{^-last}},{{/-last}} {{/consumes}} }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { {{#produces}} "{{{mediaType}}}"{{^-last}},{{/-last}} {{/produces}} @@ -451,19 +451,19 @@ namespace {{packageName}}.{{apiPackage}} {{#isApiKey}} {{#isKeyInCookie}} // cookie parameter support - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) { localVarRequestOptions.Cookies.Add(new Cookie("{{keyParamName}}", this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))); } {{/isKeyInCookie}} {{#isKeyInHeader}} - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) { localVarRequestOptions.HeaderParameters.Add("{{keyParamName}}", this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}")); } {{/isKeyInHeader}} {{#isKeyInQuery}} - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) { localVarRequestOptions.QueryParameters.Add({{packageName}}.Client.ClientUtils.ParameterToMultiMap("", "{{keyParamName}}", this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))); } @@ -471,21 +471,21 @@ namespace {{packageName}}.{{apiPackage}} {{/isApiKey}} {{#isBasicBasic}} // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + {{packageName}}.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } {{/isBasicBasic}} {{#isBasicBearer}} // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } {{/isBasicBearer}} {{#isOAuth}} // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -561,14 +561,14 @@ namespace {{packageName}}.{{apiPackage}} {{packageName}}.Client.RequestOptions localVarRequestOptions = new {{packageName}}.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { {{#consumes}} "{{{mediaType}}}"{{^-last}}, {{/-last}} {{/consumes}} }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { {{#produces}} "{{{mediaType}}}"{{^-last}},{{/-last}} {{/produces}} @@ -644,19 +644,19 @@ namespace {{packageName}}.{{apiPackage}} {{#isApiKey}} {{#isKeyInCookie}} // cookie parameter support - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) { localVarRequestOptions.Cookies.Add(new Cookie("{{keyParamName}}", this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))); } {{/isKeyInCookie}} {{#isKeyInHeader}} - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) { localVarRequestOptions.HeaderParameters.Add("{{keyParamName}}", this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}")); } {{/isKeyInHeader}} {{#isKeyInQuery}} - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))) { localVarRequestOptions.QueryParameters.Add({{packageName}}.Client.ClientUtils.ParameterToMultiMap("", "{{keyParamName}}", this.Configuration.GetApiKeyWithPrefix("{{keyParamName}}"))); } @@ -665,14 +665,14 @@ namespace {{packageName}}.{{apiPackage}} {{#isBasic}} {{#isBasicBasic}} // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + {{packageName}}.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } {{/isBasicBasic}} {{#isBasicBearer}} // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -680,7 +680,7 @@ namespace {{packageName}}.{{apiPackage}} {{/isBasic}} {{#isOAuth}} // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/modelAnyOf.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/modelAnyOf.mustache index 0bb2f488666..931f7646da8 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/modelAnyOf.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/modelAnyOf.mustache @@ -115,7 +115,7 @@ catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into {{{.}}}: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into {{{.}}}: {1}", jsonString, exception.ToString())); } {{/anyOf}} @@ -195,7 +195,7 @@ /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof({{classname}}).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof({{classname}}).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/modelOneOf.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/modelOneOf.mustache index 6b26e1245a0..d2d6e28b3f9 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/modelOneOf.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/modelOneOf.mustache @@ -116,7 +116,7 @@ return new{{classname}}; {{/mappedModels}} default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for {{classname}}. Possible values:{{#mappedModels}} {{{mappingName}}}{{/mappedModels}}", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for {{classname}}. Possible values:{{#mappedModels}} {{{mappingName}}}{{/mappedModels}}", discriminatorValue)); break; } @@ -143,7 +143,7 @@ catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into {{{.}}}: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into {{{.}}}: {1}", jsonString, exception.ToString())); } {{/oneOf}} @@ -232,7 +232,7 @@ /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof({{classname}}).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof({{classname}}).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES index d317e612051..5270579e128 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES @@ -1,187 +1,187 @@ -.gitignore -Org.OpenAPITools.sln -README.md -appveyor.yml -docs/AdditionalPropertiesClass.md -docs/Animal.md -docs/AnotherFakeApi.md -docs/ApiResponse.md -docs/Apple.md -docs/AppleReq.md -docs/ArrayOfArrayOfNumberOnly.md -docs/ArrayOfNumberOnly.md -docs/ArrayTest.md -docs/Banana.md -docs/BananaReq.md -docs/BasquePig.md -docs/Capitalization.md -docs/Cat.md -docs/CatAllOf.md -docs/Category.md -docs/ChildCat.md -docs/ChildCatAllOf.md -docs/ClassModel.md -docs/ComplexQuadrilateral.md -docs/DanishPig.md -docs/DefaultApi.md -docs/Dog.md -docs/DogAllOf.md -docs/Drawing.md -docs/EnumArrays.md -docs/EnumClass.md -docs/EnumTest.md -docs/EquilateralTriangle.md -docs/FakeApi.md -docs/FakeClassnameTags123Api.md -docs/File.md -docs/FileSchemaTestClass.md -docs/Foo.md -docs/FormatTest.md -docs/Fruit.md -docs/FruitReq.md -docs/GmFruit.md -docs/GrandparentAnimal.md -docs/HasOnlyReadOnly.md -docs/HealthCheckResult.md -docs/InlineResponseDefault.md -docs/IsoscelesTriangle.md -docs/List.md -docs/Mammal.md -docs/MapTest.md -docs/MixedPropertiesAndAdditionalPropertiesClass.md -docs/Model200Response.md -docs/ModelClient.md -docs/Name.md -docs/NullableClass.md -docs/NullableShape.md -docs/NumberOnly.md -docs/Order.md -docs/OuterComposite.md -docs/OuterEnum.md -docs/OuterEnumDefaultValue.md -docs/OuterEnumInteger.md -docs/OuterEnumIntegerDefaultValue.md -docs/ParentPet.md -docs/Pet.md -docs/PetApi.md -docs/Pig.md -docs/Quadrilateral.md -docs/QuadrilateralInterface.md -docs/ReadOnlyFirst.md -docs/Return.md -docs/ScaleneTriangle.md -docs/Shape.md -docs/ShapeInterface.md -docs/ShapeOrNull.md -docs/SimpleQuadrilateral.md -docs/SpecialModelName.md -docs/StoreApi.md -docs/Tag.md -docs/Triangle.md -docs/TriangleInterface.md -docs/User.md -docs/UserApi.md -docs/Whale.md -docs/Zebra.md -git_push.sh -src/Org.OpenAPITools/Api/AnotherFakeApi.cs -src/Org.OpenAPITools/Api/DefaultApi.cs -src/Org.OpenAPITools/Api/FakeApi.cs -src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs -src/Org.OpenAPITools/Api/PetApi.cs -src/Org.OpenAPITools/Api/StoreApi.cs -src/Org.OpenAPITools/Api/UserApi.cs -src/Org.OpenAPITools/Client/ApiClient.cs -src/Org.OpenAPITools/Client/ApiException.cs -src/Org.OpenAPITools/Client/ApiResponse.cs -src/Org.OpenAPITools/Client/ClientUtils.cs -src/Org.OpenAPITools/Client/Configuration.cs -src/Org.OpenAPITools/Client/ExceptionFactory.cs -src/Org.OpenAPITools/Client/FileParameter.cs -src/Org.OpenAPITools/Client/GlobalConfiguration.cs -src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs -src/Org.OpenAPITools/Client/IApiAccessor.cs -src/Org.OpenAPITools/Client/IAsynchronousClient.cs -src/Org.OpenAPITools/Client/IReadableConfiguration.cs -src/Org.OpenAPITools/Client/ISynchronousClient.cs -src/Org.OpenAPITools/Client/Multimap.cs -src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs -src/Org.OpenAPITools/Client/RequestOptions.cs -src/Org.OpenAPITools/Client/RetryConfiguration.cs -src/Org.OpenAPITools/Client/WebRequestPathBuilder.cs -src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs -src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Animal.cs -src/Org.OpenAPITools/Model/ApiResponse.cs -src/Org.OpenAPITools/Model/Apple.cs -src/Org.OpenAPITools/Model/AppleReq.cs -src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayTest.cs -src/Org.OpenAPITools/Model/Banana.cs -src/Org.OpenAPITools/Model/BananaReq.cs -src/Org.OpenAPITools/Model/BasquePig.cs -src/Org.OpenAPITools/Model/Capitalization.cs -src/Org.OpenAPITools/Model/Cat.cs -src/Org.OpenAPITools/Model/CatAllOf.cs -src/Org.OpenAPITools/Model/Category.cs -src/Org.OpenAPITools/Model/ChildCat.cs -src/Org.OpenAPITools/Model/ChildCatAllOf.cs -src/Org.OpenAPITools/Model/ClassModel.cs -src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs -src/Org.OpenAPITools/Model/DanishPig.cs -src/Org.OpenAPITools/Model/Dog.cs -src/Org.OpenAPITools/Model/DogAllOf.cs -src/Org.OpenAPITools/Model/Drawing.cs -src/Org.OpenAPITools/Model/EnumArrays.cs -src/Org.OpenAPITools/Model/EnumClass.cs -src/Org.OpenAPITools/Model/EnumTest.cs -src/Org.OpenAPITools/Model/EquilateralTriangle.cs -src/Org.OpenAPITools/Model/File.cs -src/Org.OpenAPITools/Model/FileSchemaTestClass.cs -src/Org.OpenAPITools/Model/Foo.cs -src/Org.OpenAPITools/Model/FormatTest.cs -src/Org.OpenAPITools/Model/Fruit.cs -src/Org.OpenAPITools/Model/FruitReq.cs -src/Org.OpenAPITools/Model/GmFruit.cs -src/Org.OpenAPITools/Model/GrandparentAnimal.cs -src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs -src/Org.OpenAPITools/Model/HealthCheckResult.cs -src/Org.OpenAPITools/Model/InlineResponseDefault.cs -src/Org.OpenAPITools/Model/IsoscelesTriangle.cs -src/Org.OpenAPITools/Model/List.cs -src/Org.OpenAPITools/Model/Mammal.cs -src/Org.OpenAPITools/Model/MapTest.cs -src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Model200Response.cs -src/Org.OpenAPITools/Model/ModelClient.cs -src/Org.OpenAPITools/Model/Name.cs -src/Org.OpenAPITools/Model/NullableClass.cs -src/Org.OpenAPITools/Model/NullableShape.cs -src/Org.OpenAPITools/Model/NumberOnly.cs -src/Org.OpenAPITools/Model/Order.cs -src/Org.OpenAPITools/Model/OuterComposite.cs -src/Org.OpenAPITools/Model/OuterEnum.cs -src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs -src/Org.OpenAPITools/Model/OuterEnumInteger.cs -src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs -src/Org.OpenAPITools/Model/ParentPet.cs -src/Org.OpenAPITools/Model/Pet.cs -src/Org.OpenAPITools/Model/Pig.cs -src/Org.OpenAPITools/Model/Quadrilateral.cs -src/Org.OpenAPITools/Model/QuadrilateralInterface.cs -src/Org.OpenAPITools/Model/ReadOnlyFirst.cs -src/Org.OpenAPITools/Model/Return.cs -src/Org.OpenAPITools/Model/ScaleneTriangle.cs -src/Org.OpenAPITools/Model/Shape.cs -src/Org.OpenAPITools/Model/ShapeInterface.cs -src/Org.OpenAPITools/Model/ShapeOrNull.cs -src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs -src/Org.OpenAPITools/Model/SpecialModelName.cs -src/Org.OpenAPITools/Model/Tag.cs -src/Org.OpenAPITools/Model/Triangle.cs -src/Org.OpenAPITools/Model/TriangleInterface.cs -src/Org.OpenAPITools/Model/User.cs -src/Org.OpenAPITools/Model/Whale.cs -src/Org.OpenAPITools/Model/Zebra.cs -src/Org.OpenAPITools/Org.OpenAPITools.csproj +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnotherFakeApi.md +docs/ApiResponse.md +docs/Apple.md +docs/AppleReq.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Banana.md +docs/BananaReq.md +docs/BasquePig.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ChildCat.md +docs/ChildCatAllOf.md +docs/ClassModel.md +docs/ComplexQuadrilateral.md +docs/DanishPig.md +docs/DefaultApi.md +docs/Dog.md +docs/DogAllOf.md +docs/Drawing.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/EquilateralTriangle.md +docs/FakeApi.md +docs/FakeClassnameTags123Api.md +docs/File.md +docs/FileSchemaTestClass.md +docs/Foo.md +docs/FormatTest.md +docs/Fruit.md +docs/FruitReq.md +docs/GmFruit.md +docs/GrandparentAnimal.md +docs/HasOnlyReadOnly.md +docs/HealthCheckResult.md +docs/InlineResponseDefault.md +docs/IsoscelesTriangle.md +docs/List.md +docs/Mammal.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/ModelClient.md +docs/Name.md +docs/NullableClass.md +docs/NullableShape.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/OuterEnumDefaultValue.md +docs/OuterEnumInteger.md +docs/OuterEnumIntegerDefaultValue.md +docs/ParentPet.md +docs/Pet.md +docs/PetApi.md +docs/Pig.md +docs/Quadrilateral.md +docs/QuadrilateralInterface.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/ScaleneTriangle.md +docs/Shape.md +docs/ShapeInterface.md +docs/ShapeOrNull.md +docs/SimpleQuadrilateral.md +docs/SpecialModelName.md +docs/StoreApi.md +docs/Tag.md +docs/Triangle.md +docs/TriangleInterface.md +docs/User.md +docs/UserApi.md +docs/Whale.md +docs/Zebra.md +git_push.sh +src/Org.OpenAPITools/Api/AnotherFakeApi.cs +src/Org.OpenAPITools/Api/DefaultApi.cs +src/Org.OpenAPITools/Api/FakeApi.cs +src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/FileParameter.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Client/WebRequestPathBuilder.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Animal.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Apple.cs +src/Org.OpenAPITools/Model/AppleReq.cs +src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayTest.cs +src/Org.OpenAPITools/Model/Banana.cs +src/Org.OpenAPITools/Model/BananaReq.cs +src/Org.OpenAPITools/Model/BasquePig.cs +src/Org.OpenAPITools/Model/Capitalization.cs +src/Org.OpenAPITools/Model/Cat.cs +src/Org.OpenAPITools/Model/CatAllOf.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/ChildCat.cs +src/Org.OpenAPITools/Model/ChildCatAllOf.cs +src/Org.OpenAPITools/Model/ClassModel.cs +src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +src/Org.OpenAPITools/Model/DanishPig.cs +src/Org.OpenAPITools/Model/Dog.cs +src/Org.OpenAPITools/Model/DogAllOf.cs +src/Org.OpenAPITools/Model/Drawing.cs +src/Org.OpenAPITools/Model/EnumArrays.cs +src/Org.OpenAPITools/Model/EnumClass.cs +src/Org.OpenAPITools/Model/EnumTest.cs +src/Org.OpenAPITools/Model/EquilateralTriangle.cs +src/Org.OpenAPITools/Model/File.cs +src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +src/Org.OpenAPITools/Model/Foo.cs +src/Org.OpenAPITools/Model/FormatTest.cs +src/Org.OpenAPITools/Model/Fruit.cs +src/Org.OpenAPITools/Model/FruitReq.cs +src/Org.OpenAPITools/Model/GmFruit.cs +src/Org.OpenAPITools/Model/GrandparentAnimal.cs +src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InlineResponseDefault.cs +src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +src/Org.OpenAPITools/Model/List.cs +src/Org.OpenAPITools/Model/Mammal.cs +src/Org.OpenAPITools/Model/MapTest.cs +src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Model200Response.cs +src/Org.OpenAPITools/Model/ModelClient.cs +src/Org.OpenAPITools/Model/Name.cs +src/Org.OpenAPITools/Model/NullableClass.cs +src/Org.OpenAPITools/Model/NullableShape.cs +src/Org.OpenAPITools/Model/NumberOnly.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/OuterComposite.cs +src/Org.OpenAPITools/Model/OuterEnum.cs +src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +src/Org.OpenAPITools/Model/OuterEnumInteger.cs +src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +src/Org.OpenAPITools/Model/ParentPet.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Pig.cs +src/Org.OpenAPITools/Model/Quadrilateral.cs +src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +src/Org.OpenAPITools/Model/Return.cs +src/Org.OpenAPITools/Model/ScaleneTriangle.cs +src/Org.OpenAPITools/Model/Shape.cs +src/Org.OpenAPITools/Model/ShapeInterface.cs +src/Org.OpenAPITools/Model/ShapeOrNull.cs +src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +src/Org.OpenAPITools/Model/SpecialModelName.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/Triangle.cs +src/Org.OpenAPITools/Model/TriangleInterface.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Model/Whale.cs +src/Org.OpenAPITools/Model/Zebra.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 8498781b05c..e12e4f11ae6 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Api /// The target service's base path in URL format. /// /// - public AnotherFakeApi(String basePath) + public AnotherFakeApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Api /// Some configuration settings will not be applied without passing an HttpClientHandler. /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. /// - public AnotherFakeApi(HttpClient client, String basePath, HttpClientHandler handler = null) + public AnotherFakeApi(HttpClient client, string basePath, HttpClientHandler handler = null) { if (client == null) throw new ArgumentNullException("client"); @@ -266,7 +266,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -319,12 +319,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -378,12 +378,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/DefaultApi.cs index 299f2875b21..f9443fab762 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -109,7 +109,7 @@ namespace Org.OpenAPITools.Api /// The target service's base path in URL format. /// /// - public DefaultApi(String basePath) + public DefaultApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -171,7 +171,7 @@ namespace Org.OpenAPITools.Api /// Some configuration settings will not be applied without passing an HttpClientHandler. /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. /// - public DefaultApi(HttpClient client, String basePath, HttpClientHandler handler = null) + public DefaultApi(HttpClient client, string basePath, HttpClientHandler handler = null) { if (client == null) throw new ArgumentNullException("client"); @@ -259,7 +259,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -306,11 +306,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -357,11 +357,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeApi.cs index 5631e484c0c..9a2358e3f4c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeApi.cs @@ -833,7 +833,7 @@ namespace Org.OpenAPITools.Api /// The target service's base path in URL format. /// /// - public FakeApi(String basePath) + public FakeApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -895,7 +895,7 @@ namespace Org.OpenAPITools.Api /// Some configuration settings will not be applied without passing an HttpClientHandler. /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. /// - public FakeApi(HttpClient client, String basePath, HttpClientHandler handler = null) + public FakeApi(HttpClient client, string basePath, HttpClientHandler handler = null) { if (client == null) throw new ArgumentNullException("client"); @@ -983,7 +983,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -1030,11 +1030,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1081,11 +1081,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1133,12 +1133,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1188,12 +1188,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1242,12 +1242,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1297,12 +1297,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1351,12 +1351,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1406,12 +1406,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1460,12 +1460,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1515,12 +1515,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1567,11 +1567,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1618,11 +1618,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1673,12 +1673,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1730,12 +1730,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1792,12 +1792,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1856,12 +1856,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1914,12 +1914,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1973,12 +1973,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -2060,12 +2060,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2121,7 +2121,7 @@ namespace Org.OpenAPITools.Api // authentication (http_basic_test) required // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } @@ -2196,12 +2196,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2258,7 +2258,7 @@ namespace Org.OpenAPITools.Api // authentication (http_basic_test) required // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } @@ -2311,12 +2311,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2409,12 +2409,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2502,11 +2502,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2533,7 +2533,7 @@ namespace Org.OpenAPITools.Api // authentication (bearer_test) required // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -2584,11 +2584,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2616,7 +2616,7 @@ namespace Org.OpenAPITools.Api // authentication (bearer_test) required // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -2659,12 +2659,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2716,12 +2716,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2778,12 +2778,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2842,12 +2842,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2923,11 +2923,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -3007,11 +3007,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index efec560791e..47d80c96307 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -116,7 +116,7 @@ namespace Org.OpenAPITools.Api /// The target service's base path in URL format. /// /// - public FakeClassnameTags123Api(String basePath) + public FakeClassnameTags123Api(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Api /// Some configuration settings will not be applied without passing an HttpClientHandler. /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. /// - public FakeClassnameTags123Api(HttpClient client, String basePath, HttpClientHandler handler = null) + public FakeClassnameTags123Api(HttpClient client, string basePath, HttpClientHandler handler = null) { if (client == null) throw new ArgumentNullException("client"); @@ -266,7 +266,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -319,12 +319,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -337,7 +337,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = modelClient; // authentication (api_key_query) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) { localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); } @@ -383,12 +383,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -402,7 +402,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = modelClient; // authentication (api_key_query) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) { localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/PetApi.cs index 1f74cee9c58..f835c81b4d5 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/PetApi.cs @@ -478,7 +478,7 @@ namespace Org.OpenAPITools.Api /// The target service's base path in URL format. /// /// - public PetApi(String basePath) + public PetApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -540,7 +540,7 @@ namespace Org.OpenAPITools.Api /// Some configuration settings will not be applied without passing an HttpClientHandler. /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. /// - public PetApi(HttpClient client, String basePath, HttpClientHandler handler = null) + public PetApi(HttpClient client, string basePath, HttpClientHandler handler = null) { if (client == null) throw new ArgumentNullException("client"); @@ -628,7 +628,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -680,13 +680,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -715,7 +715,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -760,13 +760,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -796,7 +796,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -837,11 +837,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -858,7 +858,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -901,11 +901,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -923,7 +923,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -967,11 +967,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1002,7 +1002,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1048,11 +1048,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1084,7 +1084,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1128,11 +1128,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1163,7 +1163,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1209,11 +1209,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1245,7 +1245,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1285,11 +1285,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1303,7 +1303,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1345,11 +1345,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1364,7 +1364,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1407,13 +1407,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1442,7 +1442,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1487,13 +1487,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1523,7 +1523,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1566,12 +1566,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1592,7 +1592,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1637,12 +1637,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1664,7 +1664,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1708,12 +1708,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1735,7 +1735,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1781,12 +1781,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1809,7 +1809,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1857,12 +1857,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1881,7 +1881,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1931,12 +1931,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1956,7 +1956,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/StoreApi.cs index d7b0b43698a..c4775513db3 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/StoreApi.cs @@ -241,7 +241,7 @@ namespace Org.OpenAPITools.Api /// The target service's base path in URL format. /// /// - public StoreApi(String basePath) + public StoreApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -303,7 +303,7 @@ namespace Org.OpenAPITools.Api /// Some configuration settings will not be applied without passing an HttpClientHandler. /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. /// - public StoreApi(HttpClient client, String basePath, HttpClientHandler handler = null) + public StoreApi(HttpClient client, string basePath, HttpClientHandler handler = null) { if (client == null) throw new ArgumentNullException("client"); @@ -391,7 +391,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -443,11 +443,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -499,11 +499,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -549,11 +549,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -565,7 +565,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -605,11 +605,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -622,7 +622,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -662,11 +662,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -717,11 +717,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -775,12 +775,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -835,12 +835,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/UserApi.cs index 9b4826f955e..889a90d75f2 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Api/UserApi.cs @@ -413,7 +413,7 @@ namespace Org.OpenAPITools.Api /// The target service's base path in URL format. /// /// - public UserApi(String basePath) + public UserApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -475,7 +475,7 @@ namespace Org.OpenAPITools.Api /// Some configuration settings will not be applied without passing an HttpClientHandler. /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. /// - public UserApi(HttpClient client, String basePath, HttpClientHandler handler = null) + public UserApi(HttpClient client, string basePath, HttpClientHandler handler = null) { if (client == null) throw new ArgumentNullException("client"); @@ -563,7 +563,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -615,12 +615,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -672,12 +672,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -728,12 +728,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -785,12 +785,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -841,12 +841,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -898,12 +898,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -954,11 +954,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1010,11 +1010,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1066,11 +1066,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1125,11 +1125,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1189,11 +1189,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1255,11 +1255,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1307,11 +1307,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1356,11 +1356,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1416,12 +1416,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1480,12 +1480,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs index bc7d7d84785..364fe9d25aa 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiClient.cs @@ -107,7 +107,7 @@ namespace Org.OpenAPITools.Client var bytes = await response.Content.ReadAsByteArrayAsync(); if (headers != null) { - var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) + var filePath = string.IsNullOrEmpty(_configuration.TempFolderPath) ? Path.GetTempPath() : _configuration.TempFolderPath; var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); @@ -131,7 +131,7 @@ namespace Org.OpenAPITools.Client return DateTime.Parse(await response.Content.ReadAsStringAsync(), null, System.Globalization.DateTimeStyles.RoundtripKind); } - if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + if (type == typeof(string) || type.Name.StartsWith("System.Nullable")) // return primitive type { return Convert.ChangeType(await response.Content.ReadAsStringAsync(), type); } @@ -166,7 +166,7 @@ namespace Org.OpenAPITools.Client /// public partial class ApiClient : IDisposable, ISynchronousClient, IAsynchronousClient { - private readonly String _baseUrl; + private readonly string _baseUrl; private readonly HttpClientHandler _httpClientHandler; private readonly HttpClient _httpClient; @@ -206,7 +206,7 @@ namespace Org.OpenAPITools.Client /// /// The target service's base path in URL format. /// - public ApiClient(String basePath) + public ApiClient(string basePath) { if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); @@ -243,7 +243,7 @@ namespace Org.OpenAPITools.Client /// Some configuration settings will not be applied without passing an HttpClientHandler. /// The features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. /// - public ApiClient(HttpClient client, String basePath, HttpClientHandler handler = null) + public ApiClient(HttpClient client, string basePath, HttpClientHandler handler = null) { if (client == null) throw new ArgumentNullException("client cannot be null"); if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); @@ -300,7 +300,7 @@ namespace Org.OpenAPITools.Client /// private HttpRequestMessage NewRequest( HttpMethod method, - String path, + string path, RequestOptions options, IReadableConfiguration configuration) { diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiResponse.cs index 1b7d787c84b..ca2de833a5a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiResponse.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ApiResponse.cs @@ -44,7 +44,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - String ErrorText { get; set; } + string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. @@ -85,7 +85,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - public String ErrorText { get; set; } + public string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ClientUtils.cs index 2b6e52d6065..3d038d5ce69 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -124,7 +124,7 @@ namespace Org.OpenAPITools.Client /// URL encode a string /// Credit/Ref: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Extensions/StringExtensions.cs#L50 /// - /// String to be URL encoded + /// string to be URL encoded /// Byte array public static string UrlEncode(string input) { @@ -158,7 +158,7 @@ namespace Org.OpenAPITools.Client /// /// Encode string in base64 format. /// - /// String to be encoded. + /// string to be encoded. /// Encoded string. public static string Base64Encode(string text) { @@ -186,7 +186,7 @@ namespace Org.OpenAPITools.Client /// /// The Content-Type array to select from. /// The Content-Type header to use. - public static String SelectHeaderContentType(String[] contentTypes) + public static string SelectHeaderContentType(string[] contentTypes) { if (contentTypes.Length == 0) return null; @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Client /// /// The accepts array to select from. /// The Accept header to use. - public static String SelectHeaderAccept(String[] accepts) + public static string SelectHeaderAccept(string[] accepts) { if (accepts.Length == 0) return null; @@ -215,7 +215,7 @@ namespace Org.OpenAPITools.Client if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) return "application/json"; - return String.Join(",", accepts); + return string.Join(",", accepts); } /// @@ -233,9 +233,9 @@ namespace Org.OpenAPITools.Client /// /// MIME /// Returns True if MIME type is json. - public static bool IsJsonMime(String mime) + public static bool IsJsonMime(string mime) { - if (String.IsNullOrWhiteSpace(mime)) return false; + if (string.IsNullOrWhiteSpace(mime)) return false; return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/Configuration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/Configuration.cs index bca7db624cd..06154ad382c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/Configuration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/Configuration.cs @@ -67,7 +67,7 @@ namespace Org.OpenAPITools.Client /// Defines the base path of the target API server. /// Example: http://localhost:3000/v1/ /// - private String _basePath; + private string _basePath; /// /// Gets or sets the API key based on the authentication name. @@ -511,9 +511,9 @@ namespace Org.OpenAPITools.Client /// /// Returns a string with essential information for debugging. /// - public static String ToDebugReport() + public static string ToDebugReport() { - String report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; + string report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; report += " Version of the API: 1.0.0\n"; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs index 1b9f9b7a99f..1d2d0019cae 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs @@ -120,7 +120,7 @@ namespace Org.OpenAPITools.Client } } - var httpValues = HttpUtility.ParseQueryString(String.Empty); + var httpValues = HttpUtility.ParseQueryString(string.Empty); foreach (var parameter in requestOptions.QueryParameters) { #if (NETCOREAPP) @@ -153,7 +153,7 @@ namespace Org.OpenAPITools.Client uriBuilder.Query = httpValues.ToString().Replace("+", "%20"); var dateTime = DateTime.Now; - String Digest = String.Empty; + string Digest = string.Empty; //get the body string requestBody = string.Empty; @@ -230,7 +230,7 @@ namespace Org.OpenAPITools.Client } } - var headersKeysString = String.Join(" ", HttpSignatureHeader.Keys); + var headersKeysString = string.Join(" ", HttpSignatureHeader.Keys); var headerValuesList = new List(); foreach (var keyVal in HttpSignatureHeader) @@ -411,10 +411,10 @@ namespace Org.OpenAPITools.Client return derBytes.ToArray(); } - private RSACryptoServiceProvider GetRSAProviderFromPemFile(String pemfile, SecureString keyPassPharse = null) + private RSACryptoServiceProvider GetRSAProviderFromPemFile(string pemfile, SecureString keyPassPharse = null) { - const String pempubheader = "-----BEGIN PUBLIC KEY-----"; - const String pempubfooter = "-----END PUBLIC KEY-----"; + const string pempubheader = "-----BEGIN PUBLIC KEY-----"; + const string pempubfooter = "-----END PUBLIC KEY-----"; bool isPrivateKeyFile = true; byte[] pemkey = null; @@ -441,11 +441,11 @@ namespace Org.OpenAPITools.Client return null; } - private byte[] ConvertPrivateKeyToBytes(String instr, SecureString keyPassPharse = null) + private byte[] ConvertPrivateKeyToBytes(string instr, SecureString keyPassPharse = null) { - const String pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; - const String pemprivfooter = "-----END RSA PRIVATE KEY-----"; - String pemstr = instr.Trim(); + const string pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; + const string pemprivfooter = "-----END RSA PRIVATE KEY-----"; + string pemstr = instr.Trim(); byte[] binkey; if (!pemstr.StartsWith(pemprivheader) || !pemstr.EndsWith(pemprivfooter)) @@ -456,7 +456,7 @@ namespace Org.OpenAPITools.Client StringBuilder sb = new StringBuilder(pemstr); sb.Replace(pemprivheader, ""); sb.Replace(pemprivfooter, ""); - String pvkstr = sb.ToString().Trim(); + string pvkstr = sb.ToString().Trim(); try { // if there are no PEM encryption info lines, this is an UNencrypted PEM private key @@ -472,12 +472,12 @@ namespace Org.OpenAPITools.Client { return null; } - String saltline = str.ReadLine(); + string saltline = str.ReadLine(); if (!saltline.StartsWith("DEK-Info: DES-EDE3-CBC,")) { return null; } - String saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); + string saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); byte[] salt = new byte[saltstr.Length / 2]; for (int i = 0; i < salt.Length; i++) salt[i] = Convert.ToByte(saltstr.Substring(i * 2, 2), 16); @@ -487,7 +487,7 @@ namespace Org.OpenAPITools.Client } //------ remaining b64 data is encrypted RSA key ---- - String encryptedstr = str.ReadToEnd(); + string encryptedstr = str.ReadToEnd(); try { //should have b64 encrypted RSA key now diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IApiAccessor.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IApiAccessor.cs index 59465ae8e90..2bd76416004 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IApiAccessor.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IApiAccessor.cs @@ -27,7 +27,7 @@ namespace Org.OpenAPITools.Client /// Gets the base path of the API client. /// /// The base path - String GetBasePath(); + string GetBasePath(); /// /// Provides a factory method hook for the creation of exceptions. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IAsynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IAsynchronousClient.cs index 8a6f726678a..601e86d561c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IAsynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/IAsynchronousClient.cs @@ -29,7 +29,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> GetAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the POST http verb. @@ -40,7 +40,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PostAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PUT http verb. @@ -51,7 +51,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PutAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the DELETE http verb. @@ -62,7 +62,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> DeleteAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the HEAD http verb. @@ -73,7 +73,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> HeadAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the OPTIONS http verb. @@ -84,7 +84,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> OptionsAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PATCH http verb. @@ -95,6 +95,6 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PatchAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ISynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ISynchronousClient.cs index d27f01a588b..0e0a7fedacf 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ISynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/ISynchronousClient.cs @@ -28,7 +28,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Get(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the POST http verb. @@ -38,7 +38,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Post(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PUT http verb. @@ -48,7 +48,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Put(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the DELETE http verb. @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Delete(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the HEAD http verb. @@ -68,7 +68,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Head(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the OPTIONS http verb. @@ -78,7 +78,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Options(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PATCH http verb. @@ -88,6 +88,6 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Patch(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RequestOptions.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RequestOptions.cs index 9c0a9a9f968..91a5fbf28f3 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RequestOptions.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Client/RequestOptions.cs @@ -24,29 +24,29 @@ namespace Org.OpenAPITools.Client /// /// Parameters to be bound to path parts of the Request's URL /// - public Dictionary PathParameters { get; set; } + public Dictionary PathParameters { get; set; } /// /// Query parameters to be applied to the request. /// Keys may have 1 or more values associated. /// - public Multimap QueryParameters { get; set; } + public Multimap QueryParameters { get; set; } /// /// Header parameters to be applied to to the request. /// Keys may have 1 or more values associated. /// - public Multimap HeaderParameters { get; set; } + public Multimap HeaderParameters { get; set; } /// /// Form parameters to be sent along with the request. /// - public Dictionary FormParameters { get; set; } + public Dictionary FormParameters { get; set; } /// /// File parameters to be sent along with the request. /// - public Dictionary FileParameters { get; set; } + public Dictionary FileParameters { get; set; } /// /// Cookies to be sent along with the request. @@ -67,8 +67,8 @@ namespace Org.OpenAPITools.Client QueryParameters = new Multimap(); HeaderParameters = new Multimap(); FormParameters = new Dictionary(); - FileParameters = new Dictionary(); + FileParameters = new Dictionary(); Cookies = new List(); } } -} \ No newline at end of file +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Fruit.cs index 40a654afced..6c0b8d06cfa 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Fruit.cs @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); } try @@ -183,7 +183,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -258,7 +258,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FruitReq.cs index 170960035f4..207a851e23f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/FruitReq.cs @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); } try @@ -192,7 +192,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -267,7 +267,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GmFruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GmFruit.cs index 4aef7618a37..49a39c4747e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GmFruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/GmFruit.cs @@ -152,7 +152,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); } try @@ -164,7 +164,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); } // no match found, throw an exception @@ -230,7 +230,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Mammal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Mammal.cs index 55f278a25ac..fb62820cbd2 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Mammal.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Mammal.cs @@ -184,7 +184,7 @@ namespace Org.OpenAPITools.Model newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); return newMammal; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Mammal. Possible values: Pig whale zebra", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Mammal. Possible values: Pig whale zebra", discriminatorValue)); break; } @@ -208,7 +208,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); } try @@ -228,7 +228,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); } try @@ -248,7 +248,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -323,7 +323,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableShape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableShape.cs index b2be225d54c..bb16eee3501 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableShape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/NullableShape.cs @@ -164,7 +164,7 @@ namespace Org.OpenAPITools.Model newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); return newNullableShape; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for NullableShape. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for NullableShape. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -188,7 +188,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -208,7 +208,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -283,7 +283,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pig.cs index b1c57219d9f..715aeb7327f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pig.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Pig.cs @@ -155,7 +155,7 @@ namespace Org.OpenAPITools.Model newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); return newPig; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Pig. Possible values: BasquePig DanishPig", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Pig. Possible values: BasquePig DanishPig", discriminatorValue)); break; } @@ -179,7 +179,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); } try @@ -199,7 +199,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -274,7 +274,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Quadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Quadrilateral.cs index 028b84f0752..7a2c6e8c98e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Quadrilateral.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Quadrilateral.cs @@ -155,7 +155,7 @@ namespace Org.OpenAPITools.Model newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); return newQuadrilateral; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Quadrilateral. Possible values: ComplexQuadrilateral SimpleQuadrilateral", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Quadrilateral. Possible values: ComplexQuadrilateral SimpleQuadrilateral", discriminatorValue)); break; } @@ -179,7 +179,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); } try @@ -199,7 +199,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -274,7 +274,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Shape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Shape.cs index 7186154a961..9afe7ae6564 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Shape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Shape.cs @@ -155,7 +155,7 @@ namespace Org.OpenAPITools.Model newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); return newShape; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Shape. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Shape. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -179,7 +179,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -199,7 +199,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -274,7 +274,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeOrNull.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeOrNull.cs index eb9191dbc4d..b39f95e0be1 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeOrNull.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ShapeOrNull.cs @@ -164,7 +164,7 @@ namespace Org.OpenAPITools.Model newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); return newShapeOrNull; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for ShapeOrNull. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for ShapeOrNull. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -188,7 +188,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -208,7 +208,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -283,7 +283,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Triangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Triangle.cs index ba1fd6d00ec..df5cae1e14f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Triangle.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Triangle.cs @@ -184,7 +184,7 @@ namespace Org.OpenAPITools.Model newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); return newTriangle; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Triangle. Possible values: EquilateralTriangle IsoscelesTriangle ScaleneTriangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Triangle. Possible values: EquilateralTriangle IsoscelesTriangle ScaleneTriangle", discriminatorValue)); break; } @@ -208,7 +208,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); } try @@ -228,7 +228,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); } try @@ -248,7 +248,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -323,7 +323,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/FILES index d258eb64b2f..28766b88f12 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/FILES @@ -1,187 +1,187 @@ -.gitignore -Org.OpenAPITools.sln -README.md -appveyor.yml -docs/AdditionalPropertiesClass.md -docs/Animal.md -docs/AnotherFakeApi.md -docs/ApiResponse.md -docs/Apple.md -docs/AppleReq.md -docs/ArrayOfArrayOfNumberOnly.md -docs/ArrayOfNumberOnly.md -docs/ArrayTest.md -docs/Banana.md -docs/BananaReq.md -docs/BasquePig.md -docs/Capitalization.md -docs/Cat.md -docs/CatAllOf.md -docs/Category.md -docs/ChildCat.md -docs/ChildCatAllOf.md -docs/ClassModel.md -docs/ComplexQuadrilateral.md -docs/DanishPig.md -docs/DefaultApi.md -docs/Dog.md -docs/DogAllOf.md -docs/Drawing.md -docs/EnumArrays.md -docs/EnumClass.md -docs/EnumTest.md -docs/EquilateralTriangle.md -docs/FakeApi.md -docs/FakeClassnameTags123Api.md -docs/File.md -docs/FileSchemaTestClass.md -docs/Foo.md -docs/FormatTest.md -docs/Fruit.md -docs/FruitReq.md -docs/GmFruit.md -docs/GrandparentAnimal.md -docs/HasOnlyReadOnly.md -docs/HealthCheckResult.md -docs/InlineResponseDefault.md -docs/IsoscelesTriangle.md -docs/List.md -docs/Mammal.md -docs/MapTest.md -docs/MixedPropertiesAndAdditionalPropertiesClass.md -docs/Model200Response.md -docs/ModelClient.md -docs/Name.md -docs/NullableClass.md -docs/NullableShape.md -docs/NumberOnly.md -docs/Order.md -docs/OuterComposite.md -docs/OuterEnum.md -docs/OuterEnumDefaultValue.md -docs/OuterEnumInteger.md -docs/OuterEnumIntegerDefaultValue.md -docs/ParentPet.md -docs/Pet.md -docs/PetApi.md -docs/Pig.md -docs/Quadrilateral.md -docs/QuadrilateralInterface.md -docs/ReadOnlyFirst.md -docs/Return.md -docs/ScaleneTriangle.md -docs/Shape.md -docs/ShapeInterface.md -docs/ShapeOrNull.md -docs/SimpleQuadrilateral.md -docs/SpecialModelName.md -docs/StoreApi.md -docs/Tag.md -docs/Triangle.md -docs/TriangleInterface.md -docs/User.md -docs/UserApi.md -docs/Whale.md -docs/Zebra.md -git_push.sh -src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj -src/Org.OpenAPITools/Api/AnotherFakeApi.cs -src/Org.OpenAPITools/Api/DefaultApi.cs -src/Org.OpenAPITools/Api/FakeApi.cs -src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs -src/Org.OpenAPITools/Api/PetApi.cs -src/Org.OpenAPITools/Api/StoreApi.cs -src/Org.OpenAPITools/Api/UserApi.cs -src/Org.OpenAPITools/Client/ApiClient.cs -src/Org.OpenAPITools/Client/ApiException.cs -src/Org.OpenAPITools/Client/ApiResponse.cs -src/Org.OpenAPITools/Client/ClientUtils.cs -src/Org.OpenAPITools/Client/Configuration.cs -src/Org.OpenAPITools/Client/ExceptionFactory.cs -src/Org.OpenAPITools/Client/GlobalConfiguration.cs -src/Org.OpenAPITools/Client/HttpMethod.cs -src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs -src/Org.OpenAPITools/Client/IApiAccessor.cs -src/Org.OpenAPITools/Client/IAsynchronousClient.cs -src/Org.OpenAPITools/Client/IReadableConfiguration.cs -src/Org.OpenAPITools/Client/ISynchronousClient.cs -src/Org.OpenAPITools/Client/Multimap.cs -src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs -src/Org.OpenAPITools/Client/RequestOptions.cs -src/Org.OpenAPITools/Client/RetryConfiguration.cs -src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs -src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Animal.cs -src/Org.OpenAPITools/Model/ApiResponse.cs -src/Org.OpenAPITools/Model/Apple.cs -src/Org.OpenAPITools/Model/AppleReq.cs -src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayTest.cs -src/Org.OpenAPITools/Model/Banana.cs -src/Org.OpenAPITools/Model/BananaReq.cs -src/Org.OpenAPITools/Model/BasquePig.cs -src/Org.OpenAPITools/Model/Capitalization.cs -src/Org.OpenAPITools/Model/Cat.cs -src/Org.OpenAPITools/Model/CatAllOf.cs -src/Org.OpenAPITools/Model/Category.cs -src/Org.OpenAPITools/Model/ChildCat.cs -src/Org.OpenAPITools/Model/ChildCatAllOf.cs -src/Org.OpenAPITools/Model/ClassModel.cs -src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs -src/Org.OpenAPITools/Model/DanishPig.cs -src/Org.OpenAPITools/Model/Dog.cs -src/Org.OpenAPITools/Model/DogAllOf.cs -src/Org.OpenAPITools/Model/Drawing.cs -src/Org.OpenAPITools/Model/EnumArrays.cs -src/Org.OpenAPITools/Model/EnumClass.cs -src/Org.OpenAPITools/Model/EnumTest.cs -src/Org.OpenAPITools/Model/EquilateralTriangle.cs -src/Org.OpenAPITools/Model/File.cs -src/Org.OpenAPITools/Model/FileSchemaTestClass.cs -src/Org.OpenAPITools/Model/Foo.cs -src/Org.OpenAPITools/Model/FormatTest.cs -src/Org.OpenAPITools/Model/Fruit.cs -src/Org.OpenAPITools/Model/FruitReq.cs -src/Org.OpenAPITools/Model/GmFruit.cs -src/Org.OpenAPITools/Model/GrandparentAnimal.cs -src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs -src/Org.OpenAPITools/Model/HealthCheckResult.cs -src/Org.OpenAPITools/Model/InlineResponseDefault.cs -src/Org.OpenAPITools/Model/IsoscelesTriangle.cs -src/Org.OpenAPITools/Model/List.cs -src/Org.OpenAPITools/Model/Mammal.cs -src/Org.OpenAPITools/Model/MapTest.cs -src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Model200Response.cs -src/Org.OpenAPITools/Model/ModelClient.cs -src/Org.OpenAPITools/Model/Name.cs -src/Org.OpenAPITools/Model/NullableClass.cs -src/Org.OpenAPITools/Model/NullableShape.cs -src/Org.OpenAPITools/Model/NumberOnly.cs -src/Org.OpenAPITools/Model/Order.cs -src/Org.OpenAPITools/Model/OuterComposite.cs -src/Org.OpenAPITools/Model/OuterEnum.cs -src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs -src/Org.OpenAPITools/Model/OuterEnumInteger.cs -src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs -src/Org.OpenAPITools/Model/ParentPet.cs -src/Org.OpenAPITools/Model/Pet.cs -src/Org.OpenAPITools/Model/Pig.cs -src/Org.OpenAPITools/Model/Quadrilateral.cs -src/Org.OpenAPITools/Model/QuadrilateralInterface.cs -src/Org.OpenAPITools/Model/ReadOnlyFirst.cs -src/Org.OpenAPITools/Model/Return.cs -src/Org.OpenAPITools/Model/ScaleneTriangle.cs -src/Org.OpenAPITools/Model/Shape.cs -src/Org.OpenAPITools/Model/ShapeInterface.cs -src/Org.OpenAPITools/Model/ShapeOrNull.cs -src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs -src/Org.OpenAPITools/Model/SpecialModelName.cs -src/Org.OpenAPITools/Model/Tag.cs -src/Org.OpenAPITools/Model/Triangle.cs -src/Org.OpenAPITools/Model/TriangleInterface.cs -src/Org.OpenAPITools/Model/User.cs -src/Org.OpenAPITools/Model/Whale.cs -src/Org.OpenAPITools/Model/Zebra.cs -src/Org.OpenAPITools/Org.OpenAPITools.csproj +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnotherFakeApi.md +docs/ApiResponse.md +docs/Apple.md +docs/AppleReq.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Banana.md +docs/BananaReq.md +docs/BasquePig.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ChildCat.md +docs/ChildCatAllOf.md +docs/ClassModel.md +docs/ComplexQuadrilateral.md +docs/DanishPig.md +docs/DefaultApi.md +docs/Dog.md +docs/DogAllOf.md +docs/Drawing.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/EquilateralTriangle.md +docs/FakeApi.md +docs/FakeClassnameTags123Api.md +docs/File.md +docs/FileSchemaTestClass.md +docs/Foo.md +docs/FormatTest.md +docs/Fruit.md +docs/FruitReq.md +docs/GmFruit.md +docs/GrandparentAnimal.md +docs/HasOnlyReadOnly.md +docs/HealthCheckResult.md +docs/InlineResponseDefault.md +docs/IsoscelesTriangle.md +docs/List.md +docs/Mammal.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/ModelClient.md +docs/Name.md +docs/NullableClass.md +docs/NullableShape.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/OuterEnumDefaultValue.md +docs/OuterEnumInteger.md +docs/OuterEnumIntegerDefaultValue.md +docs/ParentPet.md +docs/Pet.md +docs/PetApi.md +docs/Pig.md +docs/Quadrilateral.md +docs/QuadrilateralInterface.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/ScaleneTriangle.md +docs/Shape.md +docs/ShapeInterface.md +docs/ShapeOrNull.md +docs/SimpleQuadrilateral.md +docs/SpecialModelName.md +docs/StoreApi.md +docs/Tag.md +docs/Triangle.md +docs/TriangleInterface.md +docs/User.md +docs/UserApi.md +docs/Whale.md +docs/Zebra.md +git_push.sh +src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj +src/Org.OpenAPITools/Api/AnotherFakeApi.cs +src/Org.OpenAPITools/Api/DefaultApi.cs +src/Org.OpenAPITools/Api/FakeApi.cs +src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpMethod.cs +src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Animal.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Apple.cs +src/Org.OpenAPITools/Model/AppleReq.cs +src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayTest.cs +src/Org.OpenAPITools/Model/Banana.cs +src/Org.OpenAPITools/Model/BananaReq.cs +src/Org.OpenAPITools/Model/BasquePig.cs +src/Org.OpenAPITools/Model/Capitalization.cs +src/Org.OpenAPITools/Model/Cat.cs +src/Org.OpenAPITools/Model/CatAllOf.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/ChildCat.cs +src/Org.OpenAPITools/Model/ChildCatAllOf.cs +src/Org.OpenAPITools/Model/ClassModel.cs +src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +src/Org.OpenAPITools/Model/DanishPig.cs +src/Org.OpenAPITools/Model/Dog.cs +src/Org.OpenAPITools/Model/DogAllOf.cs +src/Org.OpenAPITools/Model/Drawing.cs +src/Org.OpenAPITools/Model/EnumArrays.cs +src/Org.OpenAPITools/Model/EnumClass.cs +src/Org.OpenAPITools/Model/EnumTest.cs +src/Org.OpenAPITools/Model/EquilateralTriangle.cs +src/Org.OpenAPITools/Model/File.cs +src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +src/Org.OpenAPITools/Model/Foo.cs +src/Org.OpenAPITools/Model/FormatTest.cs +src/Org.OpenAPITools/Model/Fruit.cs +src/Org.OpenAPITools/Model/FruitReq.cs +src/Org.OpenAPITools/Model/GmFruit.cs +src/Org.OpenAPITools/Model/GrandparentAnimal.cs +src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InlineResponseDefault.cs +src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +src/Org.OpenAPITools/Model/List.cs +src/Org.OpenAPITools/Model/Mammal.cs +src/Org.OpenAPITools/Model/MapTest.cs +src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Model200Response.cs +src/Org.OpenAPITools/Model/ModelClient.cs +src/Org.OpenAPITools/Model/Name.cs +src/Org.OpenAPITools/Model/NullableClass.cs +src/Org.OpenAPITools/Model/NullableShape.cs +src/Org.OpenAPITools/Model/NumberOnly.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/OuterComposite.cs +src/Org.OpenAPITools/Model/OuterEnum.cs +src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +src/Org.OpenAPITools/Model/OuterEnumInteger.cs +src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +src/Org.OpenAPITools/Model/ParentPet.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Pig.cs +src/Org.OpenAPITools/Model/Quadrilateral.cs +src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +src/Org.OpenAPITools/Model/Return.cs +src/Org.OpenAPITools/Model/ScaleneTriangle.cs +src/Org.OpenAPITools/Model/Shape.cs +src/Org.OpenAPITools/Model/ShapeInterface.cs +src/Org.OpenAPITools/Model/ShapeOrNull.cs +src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +src/Org.OpenAPITools/Model/SpecialModelName.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/Triangle.cs +src/Org.OpenAPITools/Model/TriangleInterface.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Model/Whale.cs +src/Org.OpenAPITools/Model/Zebra.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 94d8b854b0d..ad48306e00c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -109,7 +109,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public AnotherFakeApi(String basePath) + public AnotherFakeApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -225,12 +225,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -284,12 +284,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/DefaultApi.cs index 27789c4533a..8844aca4ab7 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -102,7 +102,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public DefaultApi(String basePath) + public DefaultApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -165,7 +165,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -212,11 +212,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -263,11 +263,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/FakeApi.cs index d7749151314..fe862283f1e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/FakeApi.cs @@ -826,7 +826,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeApi(String basePath) + public FakeApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -889,7 +889,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -936,11 +936,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -987,11 +987,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1039,12 +1039,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1094,12 +1094,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1148,12 +1148,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1203,12 +1203,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1257,12 +1257,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1312,12 +1312,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1366,12 +1366,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1421,12 +1421,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1473,11 +1473,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1524,11 +1524,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1579,12 +1579,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1636,12 +1636,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1698,12 +1698,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1762,12 +1762,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1820,12 +1820,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1879,12 +1879,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1966,12 +1966,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2027,7 +2027,7 @@ namespace Org.OpenAPITools.Api // authentication (http_basic_test) required // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } @@ -2102,12 +2102,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2164,7 +2164,7 @@ namespace Org.OpenAPITools.Api // authentication (http_basic_test) required // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } @@ -2217,12 +2217,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2315,12 +2315,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2408,11 +2408,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2439,7 +2439,7 @@ namespace Org.OpenAPITools.Api // authentication (bearer_test) required // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -2490,11 +2490,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2522,7 +2522,7 @@ namespace Org.OpenAPITools.Api // authentication (bearer_test) required // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -2565,12 +2565,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2622,12 +2622,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2684,12 +2684,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2748,12 +2748,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2829,11 +2829,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2913,11 +2913,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 56ebdf5fd10..d4fbb5868ad 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -109,7 +109,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeClassnameTags123Api(String basePath) + public FakeClassnameTags123Api(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -225,12 +225,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -243,7 +243,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = modelClient; // authentication (api_key_query) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) { localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); } @@ -289,12 +289,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -308,7 +308,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = modelClient; // authentication (api_key_query) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) { localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/PetApi.cs index 61759145f12..2bf19af1b1a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/PetApi.cs @@ -471,7 +471,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public PetApi(String basePath) + public PetApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -534,7 +534,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -586,13 +586,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -621,7 +621,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -666,13 +666,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -702,7 +702,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -743,11 +743,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -764,7 +764,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -807,11 +807,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -829,7 +829,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -873,11 +873,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -908,7 +908,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -954,11 +954,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -990,7 +990,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1034,11 +1034,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1069,7 +1069,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1115,11 +1115,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1151,7 +1151,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1191,11 +1191,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1209,7 +1209,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1251,11 +1251,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1270,7 +1270,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1313,13 +1313,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1348,7 +1348,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1393,13 +1393,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1429,7 +1429,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1472,12 +1472,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1498,7 +1498,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1543,12 +1543,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1570,7 +1570,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1614,12 +1614,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1641,7 +1641,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1687,12 +1687,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1715,7 +1715,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1763,12 +1763,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1787,7 +1787,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1837,12 +1837,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1862,7 +1862,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/StoreApi.cs index 6ab56c9e9bf..ad7387db705 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/StoreApi.cs @@ -234,7 +234,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public StoreApi(String basePath) + public StoreApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -297,7 +297,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -349,11 +349,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -405,11 +405,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -455,11 +455,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -471,7 +471,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -511,11 +511,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -528,7 +528,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -568,11 +568,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -623,11 +623,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -681,12 +681,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -741,12 +741,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/UserApi.cs index 80436c9b433..a2f2598c8ac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Api/UserApi.cs @@ -406,7 +406,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public UserApi(String basePath) + public UserApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -469,7 +469,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -521,12 +521,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -578,12 +578,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -634,12 +634,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -691,12 +691,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -747,12 +747,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -804,12 +804,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -860,11 +860,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -916,11 +916,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -972,11 +972,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1031,11 +1031,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1095,11 +1095,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1161,11 +1161,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1213,11 +1213,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1262,11 +1262,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1322,12 +1322,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1386,12 +1386,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs index db5a263b639..dd44f97a907 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs @@ -107,7 +107,7 @@ namespace Org.OpenAPITools.Client var bytes = response.RawBytes; if (response.Headers != null) { - var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) + var filePath = string.IsNullOrEmpty(_configuration.TempFolderPath) ? Path.GetTempPath() : _configuration.TempFolderPath; var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); @@ -131,7 +131,7 @@ namespace Org.OpenAPITools.Client return DateTime.Parse(response.Content, null, System.Globalization.DateTimeStyles.RoundtripKind); } - if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + if (type == typeof(string) || type.Name.StartsWith("System.Nullable")) // return primitive type { return Convert.ChangeType(response.Content, type); } @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Client /// public partial class ApiClient : ISynchronousClient, IAsynchronousClient { - private readonly String _baseUrl; + private readonly string _baseUrl; /// /// Specifies the settings on a object. @@ -208,7 +208,7 @@ namespace Org.OpenAPITools.Client /// /// The target service's base path in URL format. /// - public ApiClient(String basePath) + public ApiClient(string basePath) { if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); @@ -269,7 +269,7 @@ namespace Org.OpenAPITools.Client /// private RestRequest NewRequest( HttpMethod method, - String path, + string path, RequestOptions options, IReadableConfiguration configuration) { diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiResponse.cs index 1b7d787c84b..ca2de833a5a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiResponse.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiResponse.cs @@ -44,7 +44,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - String ErrorText { get; set; } + string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. @@ -85,7 +85,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - public String ErrorText { get; set; } + public string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ClientUtils.cs index 2b6e52d6065..3d038d5ce69 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -124,7 +124,7 @@ namespace Org.OpenAPITools.Client /// URL encode a string /// Credit/Ref: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Extensions/StringExtensions.cs#L50 /// - /// String to be URL encoded + /// string to be URL encoded /// Byte array public static string UrlEncode(string input) { @@ -158,7 +158,7 @@ namespace Org.OpenAPITools.Client /// /// Encode string in base64 format. /// - /// String to be encoded. + /// string to be encoded. /// Encoded string. public static string Base64Encode(string text) { @@ -186,7 +186,7 @@ namespace Org.OpenAPITools.Client /// /// The Content-Type array to select from. /// The Content-Type header to use. - public static String SelectHeaderContentType(String[] contentTypes) + public static string SelectHeaderContentType(string[] contentTypes) { if (contentTypes.Length == 0) return null; @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Client /// /// The accepts array to select from. /// The Accept header to use. - public static String SelectHeaderAccept(String[] accepts) + public static string SelectHeaderAccept(string[] accepts) { if (accepts.Length == 0) return null; @@ -215,7 +215,7 @@ namespace Org.OpenAPITools.Client if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) return "application/json"; - return String.Join(",", accepts); + return string.Join(",", accepts); } /// @@ -233,9 +233,9 @@ namespace Org.OpenAPITools.Client /// /// MIME /// Returns True if MIME type is json. - public static bool IsJsonMime(String mime) + public static bool IsJsonMime(string mime) { - if (String.IsNullOrWhiteSpace(mime)) return false; + if (string.IsNullOrWhiteSpace(mime)) return false; return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/Configuration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/Configuration.cs index 154091fc731..1b80ca62fad 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/Configuration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/Configuration.cs @@ -72,7 +72,7 @@ namespace Org.OpenAPITools.Client /// Defines the base path of the target API server. /// Example: http://localhost:3000/v1/ /// - private String _basePath; + private string _basePath; /// /// Gets or sets the API key based on the authentication name. @@ -516,9 +516,9 @@ namespace Org.OpenAPITools.Client /// /// Returns a string with essential information for debugging. /// - public static String ToDebugReport() + public static string ToDebugReport() { - String report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; + string report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; report += " Version of the API: 1.0.0\n"; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs index 1b9f9b7a99f..1d2d0019cae 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs @@ -120,7 +120,7 @@ namespace Org.OpenAPITools.Client } } - var httpValues = HttpUtility.ParseQueryString(String.Empty); + var httpValues = HttpUtility.ParseQueryString(string.Empty); foreach (var parameter in requestOptions.QueryParameters) { #if (NETCOREAPP) @@ -153,7 +153,7 @@ namespace Org.OpenAPITools.Client uriBuilder.Query = httpValues.ToString().Replace("+", "%20"); var dateTime = DateTime.Now; - String Digest = String.Empty; + string Digest = string.Empty; //get the body string requestBody = string.Empty; @@ -230,7 +230,7 @@ namespace Org.OpenAPITools.Client } } - var headersKeysString = String.Join(" ", HttpSignatureHeader.Keys); + var headersKeysString = string.Join(" ", HttpSignatureHeader.Keys); var headerValuesList = new List(); foreach (var keyVal in HttpSignatureHeader) @@ -411,10 +411,10 @@ namespace Org.OpenAPITools.Client return derBytes.ToArray(); } - private RSACryptoServiceProvider GetRSAProviderFromPemFile(String pemfile, SecureString keyPassPharse = null) + private RSACryptoServiceProvider GetRSAProviderFromPemFile(string pemfile, SecureString keyPassPharse = null) { - const String pempubheader = "-----BEGIN PUBLIC KEY-----"; - const String pempubfooter = "-----END PUBLIC KEY-----"; + const string pempubheader = "-----BEGIN PUBLIC KEY-----"; + const string pempubfooter = "-----END PUBLIC KEY-----"; bool isPrivateKeyFile = true; byte[] pemkey = null; @@ -441,11 +441,11 @@ namespace Org.OpenAPITools.Client return null; } - private byte[] ConvertPrivateKeyToBytes(String instr, SecureString keyPassPharse = null) + private byte[] ConvertPrivateKeyToBytes(string instr, SecureString keyPassPharse = null) { - const String pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; - const String pemprivfooter = "-----END RSA PRIVATE KEY-----"; - String pemstr = instr.Trim(); + const string pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; + const string pemprivfooter = "-----END RSA PRIVATE KEY-----"; + string pemstr = instr.Trim(); byte[] binkey; if (!pemstr.StartsWith(pemprivheader) || !pemstr.EndsWith(pemprivfooter)) @@ -456,7 +456,7 @@ namespace Org.OpenAPITools.Client StringBuilder sb = new StringBuilder(pemstr); sb.Replace(pemprivheader, ""); sb.Replace(pemprivfooter, ""); - String pvkstr = sb.ToString().Trim(); + string pvkstr = sb.ToString().Trim(); try { // if there are no PEM encryption info lines, this is an UNencrypted PEM private key @@ -472,12 +472,12 @@ namespace Org.OpenAPITools.Client { return null; } - String saltline = str.ReadLine(); + string saltline = str.ReadLine(); if (!saltline.StartsWith("DEK-Info: DES-EDE3-CBC,")) { return null; } - String saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); + string saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); byte[] salt = new byte[saltstr.Length / 2]; for (int i = 0; i < salt.Length; i++) salt[i] = Convert.ToByte(saltstr.Substring(i * 2, 2), 16); @@ -487,7 +487,7 @@ namespace Org.OpenAPITools.Client } //------ remaining b64 data is encrypted RSA key ---- - String encryptedstr = str.ReadToEnd(); + string encryptedstr = str.ReadToEnd(); try { //should have b64 encrypted RSA key now diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/IApiAccessor.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/IApiAccessor.cs index 59465ae8e90..2bd76416004 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/IApiAccessor.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/IApiAccessor.cs @@ -27,7 +27,7 @@ namespace Org.OpenAPITools.Client /// Gets the base path of the API client. /// /// The base path - String GetBasePath(); + string GetBasePath(); /// /// Provides a factory method hook for the creation of exceptions. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/IAsynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/IAsynchronousClient.cs index 8a6f726678a..601e86d561c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/IAsynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/IAsynchronousClient.cs @@ -29,7 +29,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> GetAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the POST http verb. @@ -40,7 +40,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PostAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PUT http verb. @@ -51,7 +51,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PutAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the DELETE http verb. @@ -62,7 +62,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> DeleteAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the HEAD http verb. @@ -73,7 +73,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> HeadAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the OPTIONS http verb. @@ -84,7 +84,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> OptionsAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PATCH http verb. @@ -95,6 +95,6 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PatchAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ISynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ISynchronousClient.cs index d27f01a588b..0e0a7fedacf 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ISynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ISynchronousClient.cs @@ -28,7 +28,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Get(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the POST http verb. @@ -38,7 +38,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Post(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PUT http verb. @@ -48,7 +48,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Put(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the DELETE http verb. @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Delete(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the HEAD http verb. @@ -68,7 +68,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Head(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the OPTIONS http verb. @@ -78,7 +78,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Options(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PATCH http verb. @@ -88,6 +88,6 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Patch(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/RequestOptions.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/RequestOptions.cs index d8da585db9c..7a1d5b97a88 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/RequestOptions.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/RequestOptions.cs @@ -24,29 +24,29 @@ namespace Org.OpenAPITools.Client /// /// Parameters to be bound to path parts of the Request's URL /// - public Dictionary PathParameters { get; set; } + public Dictionary PathParameters { get; set; } /// /// Query parameters to be applied to the request. /// Keys may have 1 or more values associated. /// - public Multimap QueryParameters { get; set; } + public Multimap QueryParameters { get; set; } /// /// Header parameters to be applied to to the request. /// Keys may have 1 or more values associated. /// - public Multimap HeaderParameters { get; set; } + public Multimap HeaderParameters { get; set; } /// /// Form parameters to be sent along with the request. /// - public Dictionary FormParameters { get; set; } + public Dictionary FormParameters { get; set; } /// /// File parameters to be sent along with the request. /// - public Dictionary FileParameters { get; set; } + public Dictionary FileParameters { get; set; } /// /// Cookies to be sent along with the request. @@ -67,8 +67,8 @@ namespace Org.OpenAPITools.Client QueryParameters = new Multimap(); HeaderParameters = new Multimap(); FormParameters = new Dictionary(); - FileParameters = new Dictionary(); + FileParameters = new Dictionary(); Cookies = new List(); } } -} \ No newline at end of file +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Fruit.cs index 132be5b4d3b..66de6a1c6f1 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Fruit.cs @@ -162,7 +162,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); } try @@ -182,7 +182,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -257,7 +257,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/FruitReq.cs index 380896933df..488c489d73a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/FruitReq.cs @@ -171,7 +171,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); } try @@ -191,7 +191,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -266,7 +266,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/GmFruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/GmFruit.cs index c168aa41d4c..1aaa59d3f8b 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/GmFruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/GmFruit.cs @@ -151,7 +151,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); } try @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); } // no match found, throw an exception @@ -229,7 +229,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Mammal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Mammal.cs index 2e847a10eb6..ed940d7ab6f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Mammal.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Mammal.cs @@ -183,7 +183,7 @@ namespace Org.OpenAPITools.Model newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); return newMammal; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Mammal. Possible values: Pig whale zebra", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Mammal. Possible values: Pig whale zebra", discriminatorValue)); break; } @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); } try @@ -227,7 +227,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); } try @@ -247,7 +247,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -322,7 +322,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/NullableShape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/NullableShape.cs index 80339ebf79b..20be30e5b89 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/NullableShape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/NullableShape.cs @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); return newNullableShape; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for NullableShape. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for NullableShape. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -187,7 +187,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -282,7 +282,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Pig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Pig.cs index d8605861e63..967d2139a0a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Pig.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Pig.cs @@ -154,7 +154,7 @@ namespace Org.OpenAPITools.Model newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); return newPig; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Pig. Possible values: BasquePig DanishPig", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Pig. Possible values: BasquePig DanishPig", discriminatorValue)); break; } @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); } try @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -273,7 +273,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Quadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Quadrilateral.cs index 17463ca09a4..19bc98ed2ec 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Quadrilateral.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Quadrilateral.cs @@ -154,7 +154,7 @@ namespace Org.OpenAPITools.Model newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); return newQuadrilateral; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Quadrilateral. Possible values: ComplexQuadrilateral SimpleQuadrilateral", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Quadrilateral. Possible values: ComplexQuadrilateral SimpleQuadrilateral", discriminatorValue)); break; } @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); } try @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -273,7 +273,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Shape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Shape.cs index e75e0e8b167..f17c4d9a8f5 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Shape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Shape.cs @@ -154,7 +154,7 @@ namespace Org.OpenAPITools.Model newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); return newShape; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Shape. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Shape. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -273,7 +273,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/ShapeOrNull.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/ShapeOrNull.cs index 7471bafb379..df321dc9e81 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/ShapeOrNull.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/ShapeOrNull.cs @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); return newShapeOrNull; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for ShapeOrNull. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for ShapeOrNull. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -187,7 +187,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -282,7 +282,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Triangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Triangle.cs index cccaa79a8ff..6f33859a898 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Triangle.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Triangle.cs @@ -183,7 +183,7 @@ namespace Org.OpenAPITools.Model newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); return newTriangle; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Triangle. Possible values: EquilateralTriangle IsoscelesTriangle ScaleneTriangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Triangle. Possible values: EquilateralTriangle IsoscelesTriangle ScaleneTriangle", discriminatorValue)); break; } @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); } try @@ -227,7 +227,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); } try @@ -247,7 +247,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -322,7 +322,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/FILES index d258eb64b2f..28766b88f12 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/FILES @@ -1,187 +1,187 @@ -.gitignore -Org.OpenAPITools.sln -README.md -appveyor.yml -docs/AdditionalPropertiesClass.md -docs/Animal.md -docs/AnotherFakeApi.md -docs/ApiResponse.md -docs/Apple.md -docs/AppleReq.md -docs/ArrayOfArrayOfNumberOnly.md -docs/ArrayOfNumberOnly.md -docs/ArrayTest.md -docs/Banana.md -docs/BananaReq.md -docs/BasquePig.md -docs/Capitalization.md -docs/Cat.md -docs/CatAllOf.md -docs/Category.md -docs/ChildCat.md -docs/ChildCatAllOf.md -docs/ClassModel.md -docs/ComplexQuadrilateral.md -docs/DanishPig.md -docs/DefaultApi.md -docs/Dog.md -docs/DogAllOf.md -docs/Drawing.md -docs/EnumArrays.md -docs/EnumClass.md -docs/EnumTest.md -docs/EquilateralTriangle.md -docs/FakeApi.md -docs/FakeClassnameTags123Api.md -docs/File.md -docs/FileSchemaTestClass.md -docs/Foo.md -docs/FormatTest.md -docs/Fruit.md -docs/FruitReq.md -docs/GmFruit.md -docs/GrandparentAnimal.md -docs/HasOnlyReadOnly.md -docs/HealthCheckResult.md -docs/InlineResponseDefault.md -docs/IsoscelesTriangle.md -docs/List.md -docs/Mammal.md -docs/MapTest.md -docs/MixedPropertiesAndAdditionalPropertiesClass.md -docs/Model200Response.md -docs/ModelClient.md -docs/Name.md -docs/NullableClass.md -docs/NullableShape.md -docs/NumberOnly.md -docs/Order.md -docs/OuterComposite.md -docs/OuterEnum.md -docs/OuterEnumDefaultValue.md -docs/OuterEnumInteger.md -docs/OuterEnumIntegerDefaultValue.md -docs/ParentPet.md -docs/Pet.md -docs/PetApi.md -docs/Pig.md -docs/Quadrilateral.md -docs/QuadrilateralInterface.md -docs/ReadOnlyFirst.md -docs/Return.md -docs/ScaleneTriangle.md -docs/Shape.md -docs/ShapeInterface.md -docs/ShapeOrNull.md -docs/SimpleQuadrilateral.md -docs/SpecialModelName.md -docs/StoreApi.md -docs/Tag.md -docs/Triangle.md -docs/TriangleInterface.md -docs/User.md -docs/UserApi.md -docs/Whale.md -docs/Zebra.md -git_push.sh -src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj -src/Org.OpenAPITools/Api/AnotherFakeApi.cs -src/Org.OpenAPITools/Api/DefaultApi.cs -src/Org.OpenAPITools/Api/FakeApi.cs -src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs -src/Org.OpenAPITools/Api/PetApi.cs -src/Org.OpenAPITools/Api/StoreApi.cs -src/Org.OpenAPITools/Api/UserApi.cs -src/Org.OpenAPITools/Client/ApiClient.cs -src/Org.OpenAPITools/Client/ApiException.cs -src/Org.OpenAPITools/Client/ApiResponse.cs -src/Org.OpenAPITools/Client/ClientUtils.cs -src/Org.OpenAPITools/Client/Configuration.cs -src/Org.OpenAPITools/Client/ExceptionFactory.cs -src/Org.OpenAPITools/Client/GlobalConfiguration.cs -src/Org.OpenAPITools/Client/HttpMethod.cs -src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs -src/Org.OpenAPITools/Client/IApiAccessor.cs -src/Org.OpenAPITools/Client/IAsynchronousClient.cs -src/Org.OpenAPITools/Client/IReadableConfiguration.cs -src/Org.OpenAPITools/Client/ISynchronousClient.cs -src/Org.OpenAPITools/Client/Multimap.cs -src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs -src/Org.OpenAPITools/Client/RequestOptions.cs -src/Org.OpenAPITools/Client/RetryConfiguration.cs -src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs -src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Animal.cs -src/Org.OpenAPITools/Model/ApiResponse.cs -src/Org.OpenAPITools/Model/Apple.cs -src/Org.OpenAPITools/Model/AppleReq.cs -src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayTest.cs -src/Org.OpenAPITools/Model/Banana.cs -src/Org.OpenAPITools/Model/BananaReq.cs -src/Org.OpenAPITools/Model/BasquePig.cs -src/Org.OpenAPITools/Model/Capitalization.cs -src/Org.OpenAPITools/Model/Cat.cs -src/Org.OpenAPITools/Model/CatAllOf.cs -src/Org.OpenAPITools/Model/Category.cs -src/Org.OpenAPITools/Model/ChildCat.cs -src/Org.OpenAPITools/Model/ChildCatAllOf.cs -src/Org.OpenAPITools/Model/ClassModel.cs -src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs -src/Org.OpenAPITools/Model/DanishPig.cs -src/Org.OpenAPITools/Model/Dog.cs -src/Org.OpenAPITools/Model/DogAllOf.cs -src/Org.OpenAPITools/Model/Drawing.cs -src/Org.OpenAPITools/Model/EnumArrays.cs -src/Org.OpenAPITools/Model/EnumClass.cs -src/Org.OpenAPITools/Model/EnumTest.cs -src/Org.OpenAPITools/Model/EquilateralTriangle.cs -src/Org.OpenAPITools/Model/File.cs -src/Org.OpenAPITools/Model/FileSchemaTestClass.cs -src/Org.OpenAPITools/Model/Foo.cs -src/Org.OpenAPITools/Model/FormatTest.cs -src/Org.OpenAPITools/Model/Fruit.cs -src/Org.OpenAPITools/Model/FruitReq.cs -src/Org.OpenAPITools/Model/GmFruit.cs -src/Org.OpenAPITools/Model/GrandparentAnimal.cs -src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs -src/Org.OpenAPITools/Model/HealthCheckResult.cs -src/Org.OpenAPITools/Model/InlineResponseDefault.cs -src/Org.OpenAPITools/Model/IsoscelesTriangle.cs -src/Org.OpenAPITools/Model/List.cs -src/Org.OpenAPITools/Model/Mammal.cs -src/Org.OpenAPITools/Model/MapTest.cs -src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Model200Response.cs -src/Org.OpenAPITools/Model/ModelClient.cs -src/Org.OpenAPITools/Model/Name.cs -src/Org.OpenAPITools/Model/NullableClass.cs -src/Org.OpenAPITools/Model/NullableShape.cs -src/Org.OpenAPITools/Model/NumberOnly.cs -src/Org.OpenAPITools/Model/Order.cs -src/Org.OpenAPITools/Model/OuterComposite.cs -src/Org.OpenAPITools/Model/OuterEnum.cs -src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs -src/Org.OpenAPITools/Model/OuterEnumInteger.cs -src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs -src/Org.OpenAPITools/Model/ParentPet.cs -src/Org.OpenAPITools/Model/Pet.cs -src/Org.OpenAPITools/Model/Pig.cs -src/Org.OpenAPITools/Model/Quadrilateral.cs -src/Org.OpenAPITools/Model/QuadrilateralInterface.cs -src/Org.OpenAPITools/Model/ReadOnlyFirst.cs -src/Org.OpenAPITools/Model/Return.cs -src/Org.OpenAPITools/Model/ScaleneTriangle.cs -src/Org.OpenAPITools/Model/Shape.cs -src/Org.OpenAPITools/Model/ShapeInterface.cs -src/Org.OpenAPITools/Model/ShapeOrNull.cs -src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs -src/Org.OpenAPITools/Model/SpecialModelName.cs -src/Org.OpenAPITools/Model/Tag.cs -src/Org.OpenAPITools/Model/Triangle.cs -src/Org.OpenAPITools/Model/TriangleInterface.cs -src/Org.OpenAPITools/Model/User.cs -src/Org.OpenAPITools/Model/Whale.cs -src/Org.OpenAPITools/Model/Zebra.cs -src/Org.OpenAPITools/Org.OpenAPITools.csproj +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnotherFakeApi.md +docs/ApiResponse.md +docs/Apple.md +docs/AppleReq.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Banana.md +docs/BananaReq.md +docs/BasquePig.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ChildCat.md +docs/ChildCatAllOf.md +docs/ClassModel.md +docs/ComplexQuadrilateral.md +docs/DanishPig.md +docs/DefaultApi.md +docs/Dog.md +docs/DogAllOf.md +docs/Drawing.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/EquilateralTriangle.md +docs/FakeApi.md +docs/FakeClassnameTags123Api.md +docs/File.md +docs/FileSchemaTestClass.md +docs/Foo.md +docs/FormatTest.md +docs/Fruit.md +docs/FruitReq.md +docs/GmFruit.md +docs/GrandparentAnimal.md +docs/HasOnlyReadOnly.md +docs/HealthCheckResult.md +docs/InlineResponseDefault.md +docs/IsoscelesTriangle.md +docs/List.md +docs/Mammal.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/ModelClient.md +docs/Name.md +docs/NullableClass.md +docs/NullableShape.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/OuterEnumDefaultValue.md +docs/OuterEnumInteger.md +docs/OuterEnumIntegerDefaultValue.md +docs/ParentPet.md +docs/Pet.md +docs/PetApi.md +docs/Pig.md +docs/Quadrilateral.md +docs/QuadrilateralInterface.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/ScaleneTriangle.md +docs/Shape.md +docs/ShapeInterface.md +docs/ShapeOrNull.md +docs/SimpleQuadrilateral.md +docs/SpecialModelName.md +docs/StoreApi.md +docs/Tag.md +docs/Triangle.md +docs/TriangleInterface.md +docs/User.md +docs/UserApi.md +docs/Whale.md +docs/Zebra.md +git_push.sh +src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj +src/Org.OpenAPITools/Api/AnotherFakeApi.cs +src/Org.OpenAPITools/Api/DefaultApi.cs +src/Org.OpenAPITools/Api/FakeApi.cs +src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpMethod.cs +src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Animal.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Apple.cs +src/Org.OpenAPITools/Model/AppleReq.cs +src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayTest.cs +src/Org.OpenAPITools/Model/Banana.cs +src/Org.OpenAPITools/Model/BananaReq.cs +src/Org.OpenAPITools/Model/BasquePig.cs +src/Org.OpenAPITools/Model/Capitalization.cs +src/Org.OpenAPITools/Model/Cat.cs +src/Org.OpenAPITools/Model/CatAllOf.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/ChildCat.cs +src/Org.OpenAPITools/Model/ChildCatAllOf.cs +src/Org.OpenAPITools/Model/ClassModel.cs +src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +src/Org.OpenAPITools/Model/DanishPig.cs +src/Org.OpenAPITools/Model/Dog.cs +src/Org.OpenAPITools/Model/DogAllOf.cs +src/Org.OpenAPITools/Model/Drawing.cs +src/Org.OpenAPITools/Model/EnumArrays.cs +src/Org.OpenAPITools/Model/EnumClass.cs +src/Org.OpenAPITools/Model/EnumTest.cs +src/Org.OpenAPITools/Model/EquilateralTriangle.cs +src/Org.OpenAPITools/Model/File.cs +src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +src/Org.OpenAPITools/Model/Foo.cs +src/Org.OpenAPITools/Model/FormatTest.cs +src/Org.OpenAPITools/Model/Fruit.cs +src/Org.OpenAPITools/Model/FruitReq.cs +src/Org.OpenAPITools/Model/GmFruit.cs +src/Org.OpenAPITools/Model/GrandparentAnimal.cs +src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InlineResponseDefault.cs +src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +src/Org.OpenAPITools/Model/List.cs +src/Org.OpenAPITools/Model/Mammal.cs +src/Org.OpenAPITools/Model/MapTest.cs +src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Model200Response.cs +src/Org.OpenAPITools/Model/ModelClient.cs +src/Org.OpenAPITools/Model/Name.cs +src/Org.OpenAPITools/Model/NullableClass.cs +src/Org.OpenAPITools/Model/NullableShape.cs +src/Org.OpenAPITools/Model/NumberOnly.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/OuterComposite.cs +src/Org.OpenAPITools/Model/OuterEnum.cs +src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +src/Org.OpenAPITools/Model/OuterEnumInteger.cs +src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +src/Org.OpenAPITools/Model/ParentPet.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Pig.cs +src/Org.OpenAPITools/Model/Quadrilateral.cs +src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +src/Org.OpenAPITools/Model/Return.cs +src/Org.OpenAPITools/Model/ScaleneTriangle.cs +src/Org.OpenAPITools/Model/Shape.cs +src/Org.OpenAPITools/Model/ShapeInterface.cs +src/Org.OpenAPITools/Model/ShapeOrNull.cs +src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +src/Org.OpenAPITools/Model/SpecialModelName.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/Triangle.cs +src/Org.OpenAPITools/Model/TriangleInterface.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Model/Whale.cs +src/Org.OpenAPITools/Model/Zebra.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 94d8b854b0d..ad48306e00c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -109,7 +109,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public AnotherFakeApi(String basePath) + public AnotherFakeApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -225,12 +225,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -284,12 +284,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/DefaultApi.cs index 27789c4533a..8844aca4ab7 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -102,7 +102,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public DefaultApi(String basePath) + public DefaultApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -165,7 +165,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -212,11 +212,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -263,11 +263,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/FakeApi.cs index d7749151314..fe862283f1e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/FakeApi.cs @@ -826,7 +826,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeApi(String basePath) + public FakeApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -889,7 +889,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -936,11 +936,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -987,11 +987,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1039,12 +1039,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1094,12 +1094,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1148,12 +1148,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1203,12 +1203,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1257,12 +1257,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1312,12 +1312,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1366,12 +1366,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1421,12 +1421,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1473,11 +1473,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1524,11 +1524,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1579,12 +1579,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1636,12 +1636,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1698,12 +1698,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1762,12 +1762,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1820,12 +1820,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1879,12 +1879,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1966,12 +1966,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2027,7 +2027,7 @@ namespace Org.OpenAPITools.Api // authentication (http_basic_test) required // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } @@ -2102,12 +2102,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2164,7 +2164,7 @@ namespace Org.OpenAPITools.Api // authentication (http_basic_test) required // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } @@ -2217,12 +2217,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2315,12 +2315,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2408,11 +2408,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2439,7 +2439,7 @@ namespace Org.OpenAPITools.Api // authentication (bearer_test) required // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -2490,11 +2490,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2522,7 +2522,7 @@ namespace Org.OpenAPITools.Api // authentication (bearer_test) required // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -2565,12 +2565,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2622,12 +2622,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2684,12 +2684,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2748,12 +2748,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2829,11 +2829,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2913,11 +2913,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 56ebdf5fd10..d4fbb5868ad 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -109,7 +109,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeClassnameTags123Api(String basePath) + public FakeClassnameTags123Api(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -225,12 +225,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -243,7 +243,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = modelClient; // authentication (api_key_query) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) { localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); } @@ -289,12 +289,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -308,7 +308,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = modelClient; // authentication (api_key_query) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) { localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/PetApi.cs index 61759145f12..2bf19af1b1a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/PetApi.cs @@ -471,7 +471,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public PetApi(String basePath) + public PetApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -534,7 +534,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -586,13 +586,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -621,7 +621,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -666,13 +666,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -702,7 +702,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -743,11 +743,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -764,7 +764,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -807,11 +807,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -829,7 +829,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -873,11 +873,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -908,7 +908,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -954,11 +954,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -990,7 +990,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1034,11 +1034,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1069,7 +1069,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1115,11 +1115,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1151,7 +1151,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1191,11 +1191,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1209,7 +1209,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1251,11 +1251,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1270,7 +1270,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1313,13 +1313,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1348,7 +1348,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1393,13 +1393,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1429,7 +1429,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1472,12 +1472,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1498,7 +1498,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1543,12 +1543,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1570,7 +1570,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1614,12 +1614,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1641,7 +1641,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1687,12 +1687,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1715,7 +1715,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1763,12 +1763,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1787,7 +1787,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1837,12 +1837,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1862,7 +1862,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/StoreApi.cs index 6ab56c9e9bf..ad7387db705 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/StoreApi.cs @@ -234,7 +234,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public StoreApi(String basePath) + public StoreApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -297,7 +297,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -349,11 +349,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -405,11 +405,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -455,11 +455,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -471,7 +471,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -511,11 +511,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -528,7 +528,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -568,11 +568,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -623,11 +623,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -681,12 +681,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -741,12 +741,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/UserApi.cs index 80436c9b433..a2f2598c8ac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Api/UserApi.cs @@ -406,7 +406,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public UserApi(String basePath) + public UserApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -469,7 +469,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -521,12 +521,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -578,12 +578,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -634,12 +634,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -691,12 +691,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -747,12 +747,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -804,12 +804,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -860,11 +860,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -916,11 +916,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -972,11 +972,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1031,11 +1031,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1095,11 +1095,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1161,11 +1161,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1213,11 +1213,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1262,11 +1262,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1322,12 +1322,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1386,12 +1386,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs index db5a263b639..dd44f97a907 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs @@ -107,7 +107,7 @@ namespace Org.OpenAPITools.Client var bytes = response.RawBytes; if (response.Headers != null) { - var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) + var filePath = string.IsNullOrEmpty(_configuration.TempFolderPath) ? Path.GetTempPath() : _configuration.TempFolderPath; var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); @@ -131,7 +131,7 @@ namespace Org.OpenAPITools.Client return DateTime.Parse(response.Content, null, System.Globalization.DateTimeStyles.RoundtripKind); } - if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + if (type == typeof(string) || type.Name.StartsWith("System.Nullable")) // return primitive type { return Convert.ChangeType(response.Content, type); } @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Client /// public partial class ApiClient : ISynchronousClient, IAsynchronousClient { - private readonly String _baseUrl; + private readonly string _baseUrl; /// /// Specifies the settings on a object. @@ -208,7 +208,7 @@ namespace Org.OpenAPITools.Client /// /// The target service's base path in URL format. /// - public ApiClient(String basePath) + public ApiClient(string basePath) { if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); @@ -269,7 +269,7 @@ namespace Org.OpenAPITools.Client /// private RestRequest NewRequest( HttpMethod method, - String path, + string path, RequestOptions options, IReadableConfiguration configuration) { diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiResponse.cs index 1b7d787c84b..ca2de833a5a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiResponse.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiResponse.cs @@ -44,7 +44,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - String ErrorText { get; set; } + string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. @@ -85,7 +85,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - public String ErrorText { get; set; } + public string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ClientUtils.cs index 2b6e52d6065..3d038d5ce69 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -124,7 +124,7 @@ namespace Org.OpenAPITools.Client /// URL encode a string /// Credit/Ref: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Extensions/StringExtensions.cs#L50 /// - /// String to be URL encoded + /// string to be URL encoded /// Byte array public static string UrlEncode(string input) { @@ -158,7 +158,7 @@ namespace Org.OpenAPITools.Client /// /// Encode string in base64 format. /// - /// String to be encoded. + /// string to be encoded. /// Encoded string. public static string Base64Encode(string text) { @@ -186,7 +186,7 @@ namespace Org.OpenAPITools.Client /// /// The Content-Type array to select from. /// The Content-Type header to use. - public static String SelectHeaderContentType(String[] contentTypes) + public static string SelectHeaderContentType(string[] contentTypes) { if (contentTypes.Length == 0) return null; @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Client /// /// The accepts array to select from. /// The Accept header to use. - public static String SelectHeaderAccept(String[] accepts) + public static string SelectHeaderAccept(string[] accepts) { if (accepts.Length == 0) return null; @@ -215,7 +215,7 @@ namespace Org.OpenAPITools.Client if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) return "application/json"; - return String.Join(",", accepts); + return string.Join(",", accepts); } /// @@ -233,9 +233,9 @@ namespace Org.OpenAPITools.Client /// /// MIME /// Returns True if MIME type is json. - public static bool IsJsonMime(String mime) + public static bool IsJsonMime(string mime) { - if (String.IsNullOrWhiteSpace(mime)) return false; + if (string.IsNullOrWhiteSpace(mime)) return false; return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/Configuration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/Configuration.cs index 154091fc731..1b80ca62fad 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/Configuration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/Configuration.cs @@ -72,7 +72,7 @@ namespace Org.OpenAPITools.Client /// Defines the base path of the target API server. /// Example: http://localhost:3000/v1/ /// - private String _basePath; + private string _basePath; /// /// Gets or sets the API key based on the authentication name. @@ -516,9 +516,9 @@ namespace Org.OpenAPITools.Client /// /// Returns a string with essential information for debugging. /// - public static String ToDebugReport() + public static string ToDebugReport() { - String report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; + string report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; report += " Version of the API: 1.0.0\n"; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs index 1b9f9b7a99f..1d2d0019cae 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs @@ -120,7 +120,7 @@ namespace Org.OpenAPITools.Client } } - var httpValues = HttpUtility.ParseQueryString(String.Empty); + var httpValues = HttpUtility.ParseQueryString(string.Empty); foreach (var parameter in requestOptions.QueryParameters) { #if (NETCOREAPP) @@ -153,7 +153,7 @@ namespace Org.OpenAPITools.Client uriBuilder.Query = httpValues.ToString().Replace("+", "%20"); var dateTime = DateTime.Now; - String Digest = String.Empty; + string Digest = string.Empty; //get the body string requestBody = string.Empty; @@ -230,7 +230,7 @@ namespace Org.OpenAPITools.Client } } - var headersKeysString = String.Join(" ", HttpSignatureHeader.Keys); + var headersKeysString = string.Join(" ", HttpSignatureHeader.Keys); var headerValuesList = new List(); foreach (var keyVal in HttpSignatureHeader) @@ -411,10 +411,10 @@ namespace Org.OpenAPITools.Client return derBytes.ToArray(); } - private RSACryptoServiceProvider GetRSAProviderFromPemFile(String pemfile, SecureString keyPassPharse = null) + private RSACryptoServiceProvider GetRSAProviderFromPemFile(string pemfile, SecureString keyPassPharse = null) { - const String pempubheader = "-----BEGIN PUBLIC KEY-----"; - const String pempubfooter = "-----END PUBLIC KEY-----"; + const string pempubheader = "-----BEGIN PUBLIC KEY-----"; + const string pempubfooter = "-----END PUBLIC KEY-----"; bool isPrivateKeyFile = true; byte[] pemkey = null; @@ -441,11 +441,11 @@ namespace Org.OpenAPITools.Client return null; } - private byte[] ConvertPrivateKeyToBytes(String instr, SecureString keyPassPharse = null) + private byte[] ConvertPrivateKeyToBytes(string instr, SecureString keyPassPharse = null) { - const String pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; - const String pemprivfooter = "-----END RSA PRIVATE KEY-----"; - String pemstr = instr.Trim(); + const string pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; + const string pemprivfooter = "-----END RSA PRIVATE KEY-----"; + string pemstr = instr.Trim(); byte[] binkey; if (!pemstr.StartsWith(pemprivheader) || !pemstr.EndsWith(pemprivfooter)) @@ -456,7 +456,7 @@ namespace Org.OpenAPITools.Client StringBuilder sb = new StringBuilder(pemstr); sb.Replace(pemprivheader, ""); sb.Replace(pemprivfooter, ""); - String pvkstr = sb.ToString().Trim(); + string pvkstr = sb.ToString().Trim(); try { // if there are no PEM encryption info lines, this is an UNencrypted PEM private key @@ -472,12 +472,12 @@ namespace Org.OpenAPITools.Client { return null; } - String saltline = str.ReadLine(); + string saltline = str.ReadLine(); if (!saltline.StartsWith("DEK-Info: DES-EDE3-CBC,")) { return null; } - String saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); + string saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); byte[] salt = new byte[saltstr.Length / 2]; for (int i = 0; i < salt.Length; i++) salt[i] = Convert.ToByte(saltstr.Substring(i * 2, 2), 16); @@ -487,7 +487,7 @@ namespace Org.OpenAPITools.Client } //------ remaining b64 data is encrypted RSA key ---- - String encryptedstr = str.ReadToEnd(); + string encryptedstr = str.ReadToEnd(); try { //should have b64 encrypted RSA key now diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/IApiAccessor.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/IApiAccessor.cs index 59465ae8e90..2bd76416004 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/IApiAccessor.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/IApiAccessor.cs @@ -27,7 +27,7 @@ namespace Org.OpenAPITools.Client /// Gets the base path of the API client. /// /// The base path - String GetBasePath(); + string GetBasePath(); /// /// Provides a factory method hook for the creation of exceptions. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/IAsynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/IAsynchronousClient.cs index 8a6f726678a..601e86d561c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/IAsynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/IAsynchronousClient.cs @@ -29,7 +29,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> GetAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the POST http verb. @@ -40,7 +40,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PostAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PUT http verb. @@ -51,7 +51,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PutAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the DELETE http verb. @@ -62,7 +62,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> DeleteAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the HEAD http verb. @@ -73,7 +73,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> HeadAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the OPTIONS http verb. @@ -84,7 +84,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> OptionsAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PATCH http verb. @@ -95,6 +95,6 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PatchAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ISynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ISynchronousClient.cs index d27f01a588b..0e0a7fedacf 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ISynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ISynchronousClient.cs @@ -28,7 +28,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Get(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the POST http verb. @@ -38,7 +38,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Post(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PUT http verb. @@ -48,7 +48,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Put(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the DELETE http verb. @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Delete(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the HEAD http verb. @@ -68,7 +68,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Head(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the OPTIONS http verb. @@ -78,7 +78,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Options(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PATCH http verb. @@ -88,6 +88,6 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Patch(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/RequestOptions.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/RequestOptions.cs index d8da585db9c..7a1d5b97a88 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/RequestOptions.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/RequestOptions.cs @@ -24,29 +24,29 @@ namespace Org.OpenAPITools.Client /// /// Parameters to be bound to path parts of the Request's URL /// - public Dictionary PathParameters { get; set; } + public Dictionary PathParameters { get; set; } /// /// Query parameters to be applied to the request. /// Keys may have 1 or more values associated. /// - public Multimap QueryParameters { get; set; } + public Multimap QueryParameters { get; set; } /// /// Header parameters to be applied to to the request. /// Keys may have 1 or more values associated. /// - public Multimap HeaderParameters { get; set; } + public Multimap HeaderParameters { get; set; } /// /// Form parameters to be sent along with the request. /// - public Dictionary FormParameters { get; set; } + public Dictionary FormParameters { get; set; } /// /// File parameters to be sent along with the request. /// - public Dictionary FileParameters { get; set; } + public Dictionary FileParameters { get; set; } /// /// Cookies to be sent along with the request. @@ -67,8 +67,8 @@ namespace Org.OpenAPITools.Client QueryParameters = new Multimap(); HeaderParameters = new Multimap(); FormParameters = new Dictionary(); - FileParameters = new Dictionary(); + FileParameters = new Dictionary(); Cookies = new List(); } } -} \ No newline at end of file +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Fruit.cs index 132be5b4d3b..66de6a1c6f1 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Fruit.cs @@ -162,7 +162,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); } try @@ -182,7 +182,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -257,7 +257,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/FruitReq.cs index 380896933df..488c489d73a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/FruitReq.cs @@ -171,7 +171,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); } try @@ -191,7 +191,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -266,7 +266,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/GmFruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/GmFruit.cs index c168aa41d4c..1aaa59d3f8b 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/GmFruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/GmFruit.cs @@ -151,7 +151,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); } try @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); } // no match found, throw an exception @@ -229,7 +229,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Mammal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Mammal.cs index 2e847a10eb6..ed940d7ab6f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Mammal.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Mammal.cs @@ -183,7 +183,7 @@ namespace Org.OpenAPITools.Model newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); return newMammal; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Mammal. Possible values: Pig whale zebra", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Mammal. Possible values: Pig whale zebra", discriminatorValue)); break; } @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); } try @@ -227,7 +227,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); } try @@ -247,7 +247,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -322,7 +322,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/NullableShape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/NullableShape.cs index 80339ebf79b..20be30e5b89 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/NullableShape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/NullableShape.cs @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); return newNullableShape; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for NullableShape. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for NullableShape. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -187,7 +187,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -282,7 +282,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Pig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Pig.cs index d8605861e63..967d2139a0a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Pig.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Pig.cs @@ -154,7 +154,7 @@ namespace Org.OpenAPITools.Model newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); return newPig; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Pig. Possible values: BasquePig DanishPig", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Pig. Possible values: BasquePig DanishPig", discriminatorValue)); break; } @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); } try @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -273,7 +273,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Quadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Quadrilateral.cs index 17463ca09a4..19bc98ed2ec 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Quadrilateral.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Quadrilateral.cs @@ -154,7 +154,7 @@ namespace Org.OpenAPITools.Model newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); return newQuadrilateral; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Quadrilateral. Possible values: ComplexQuadrilateral SimpleQuadrilateral", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Quadrilateral. Possible values: ComplexQuadrilateral SimpleQuadrilateral", discriminatorValue)); break; } @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); } try @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -273,7 +273,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Shape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Shape.cs index e75e0e8b167..f17c4d9a8f5 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Shape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Shape.cs @@ -154,7 +154,7 @@ namespace Org.OpenAPITools.Model newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); return newShape; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Shape. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Shape. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -273,7 +273,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/ShapeOrNull.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/ShapeOrNull.cs index 7471bafb379..df321dc9e81 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/ShapeOrNull.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/ShapeOrNull.cs @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); return newShapeOrNull; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for ShapeOrNull. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for ShapeOrNull. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -187,7 +187,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -282,7 +282,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Triangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Triangle.cs index cccaa79a8ff..6f33859a898 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Triangle.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Triangle.cs @@ -183,7 +183,7 @@ namespace Org.OpenAPITools.Model newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); return newTriangle; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Triangle. Possible values: EquilateralTriangle IsoscelesTriangle ScaleneTriangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Triangle. Possible values: EquilateralTriangle IsoscelesTriangle ScaleneTriangle", discriminatorValue)); break; } @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); } try @@ -227,7 +227,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); } try @@ -247,7 +247,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -322,7 +322,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/FILES index 37763cd49bc..09de5cdb39c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/FILES @@ -1,186 +1,186 @@ -.gitignore -Org.OpenAPITools.sln -README.md -appveyor.yml -docs/AdditionalPropertiesClass.md -docs/Animal.md -docs/AnotherFakeApi.md -docs/ApiResponse.md -docs/Apple.md -docs/AppleReq.md -docs/ArrayOfArrayOfNumberOnly.md -docs/ArrayOfNumberOnly.md -docs/ArrayTest.md -docs/Banana.md -docs/BananaReq.md -docs/BasquePig.md -docs/Capitalization.md -docs/Cat.md -docs/CatAllOf.md -docs/Category.md -docs/ChildCat.md -docs/ChildCatAllOf.md -docs/ClassModel.md -docs/ComplexQuadrilateral.md -docs/DanishPig.md -docs/DefaultApi.md -docs/Dog.md -docs/DogAllOf.md -docs/Drawing.md -docs/EnumArrays.md -docs/EnumClass.md -docs/EnumTest.md -docs/EquilateralTriangle.md -docs/FakeApi.md -docs/FakeClassnameTags123Api.md -docs/File.md -docs/FileSchemaTestClass.md -docs/Foo.md -docs/FormatTest.md -docs/Fruit.md -docs/FruitReq.md -docs/GmFruit.md -docs/GrandparentAnimal.md -docs/HasOnlyReadOnly.md -docs/HealthCheckResult.md -docs/InlineResponseDefault.md -docs/IsoscelesTriangle.md -docs/List.md -docs/Mammal.md -docs/MapTest.md -docs/MixedPropertiesAndAdditionalPropertiesClass.md -docs/Model200Response.md -docs/ModelClient.md -docs/Name.md -docs/NullableClass.md -docs/NullableShape.md -docs/NumberOnly.md -docs/Order.md -docs/OuterComposite.md -docs/OuterEnum.md -docs/OuterEnumDefaultValue.md -docs/OuterEnumInteger.md -docs/OuterEnumIntegerDefaultValue.md -docs/ParentPet.md -docs/Pet.md -docs/PetApi.md -docs/Pig.md -docs/Quadrilateral.md -docs/QuadrilateralInterface.md -docs/ReadOnlyFirst.md -docs/Return.md -docs/ScaleneTriangle.md -docs/Shape.md -docs/ShapeInterface.md -docs/ShapeOrNull.md -docs/SimpleQuadrilateral.md -docs/SpecialModelName.md -docs/StoreApi.md -docs/Tag.md -docs/Triangle.md -docs/TriangleInterface.md -docs/User.md -docs/UserApi.md -docs/Whale.md -docs/Zebra.md -git_push.sh -src/Org.OpenAPITools/Api/AnotherFakeApi.cs -src/Org.OpenAPITools/Api/DefaultApi.cs -src/Org.OpenAPITools/Api/FakeApi.cs -src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs -src/Org.OpenAPITools/Api/PetApi.cs -src/Org.OpenAPITools/Api/StoreApi.cs -src/Org.OpenAPITools/Api/UserApi.cs -src/Org.OpenAPITools/Client/ApiClient.cs -src/Org.OpenAPITools/Client/ApiException.cs -src/Org.OpenAPITools/Client/ApiResponse.cs -src/Org.OpenAPITools/Client/ClientUtils.cs -src/Org.OpenAPITools/Client/Configuration.cs -src/Org.OpenAPITools/Client/ExceptionFactory.cs -src/Org.OpenAPITools/Client/GlobalConfiguration.cs -src/Org.OpenAPITools/Client/HttpMethod.cs -src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs -src/Org.OpenAPITools/Client/IApiAccessor.cs -src/Org.OpenAPITools/Client/IAsynchronousClient.cs -src/Org.OpenAPITools/Client/IReadableConfiguration.cs -src/Org.OpenAPITools/Client/ISynchronousClient.cs -src/Org.OpenAPITools/Client/Multimap.cs -src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs -src/Org.OpenAPITools/Client/RequestOptions.cs -src/Org.OpenAPITools/Client/RetryConfiguration.cs -src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs -src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Animal.cs -src/Org.OpenAPITools/Model/ApiResponse.cs -src/Org.OpenAPITools/Model/Apple.cs -src/Org.OpenAPITools/Model/AppleReq.cs -src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayTest.cs -src/Org.OpenAPITools/Model/Banana.cs -src/Org.OpenAPITools/Model/BananaReq.cs -src/Org.OpenAPITools/Model/BasquePig.cs -src/Org.OpenAPITools/Model/Capitalization.cs -src/Org.OpenAPITools/Model/Cat.cs -src/Org.OpenAPITools/Model/CatAllOf.cs -src/Org.OpenAPITools/Model/Category.cs -src/Org.OpenAPITools/Model/ChildCat.cs -src/Org.OpenAPITools/Model/ChildCatAllOf.cs -src/Org.OpenAPITools/Model/ClassModel.cs -src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs -src/Org.OpenAPITools/Model/DanishPig.cs -src/Org.OpenAPITools/Model/Dog.cs -src/Org.OpenAPITools/Model/DogAllOf.cs -src/Org.OpenAPITools/Model/Drawing.cs -src/Org.OpenAPITools/Model/EnumArrays.cs -src/Org.OpenAPITools/Model/EnumClass.cs -src/Org.OpenAPITools/Model/EnumTest.cs -src/Org.OpenAPITools/Model/EquilateralTriangle.cs -src/Org.OpenAPITools/Model/File.cs -src/Org.OpenAPITools/Model/FileSchemaTestClass.cs -src/Org.OpenAPITools/Model/Foo.cs -src/Org.OpenAPITools/Model/FormatTest.cs -src/Org.OpenAPITools/Model/Fruit.cs -src/Org.OpenAPITools/Model/FruitReq.cs -src/Org.OpenAPITools/Model/GmFruit.cs -src/Org.OpenAPITools/Model/GrandparentAnimal.cs -src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs -src/Org.OpenAPITools/Model/HealthCheckResult.cs -src/Org.OpenAPITools/Model/InlineResponseDefault.cs -src/Org.OpenAPITools/Model/IsoscelesTriangle.cs -src/Org.OpenAPITools/Model/List.cs -src/Org.OpenAPITools/Model/Mammal.cs -src/Org.OpenAPITools/Model/MapTest.cs -src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Model200Response.cs -src/Org.OpenAPITools/Model/ModelClient.cs -src/Org.OpenAPITools/Model/Name.cs -src/Org.OpenAPITools/Model/NullableClass.cs -src/Org.OpenAPITools/Model/NullableShape.cs -src/Org.OpenAPITools/Model/NumberOnly.cs -src/Org.OpenAPITools/Model/Order.cs -src/Org.OpenAPITools/Model/OuterComposite.cs -src/Org.OpenAPITools/Model/OuterEnum.cs -src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs -src/Org.OpenAPITools/Model/OuterEnumInteger.cs -src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs -src/Org.OpenAPITools/Model/ParentPet.cs -src/Org.OpenAPITools/Model/Pet.cs -src/Org.OpenAPITools/Model/Pig.cs -src/Org.OpenAPITools/Model/Quadrilateral.cs -src/Org.OpenAPITools/Model/QuadrilateralInterface.cs -src/Org.OpenAPITools/Model/ReadOnlyFirst.cs -src/Org.OpenAPITools/Model/Return.cs -src/Org.OpenAPITools/Model/ScaleneTriangle.cs -src/Org.OpenAPITools/Model/Shape.cs -src/Org.OpenAPITools/Model/ShapeInterface.cs -src/Org.OpenAPITools/Model/ShapeOrNull.cs -src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs -src/Org.OpenAPITools/Model/SpecialModelName.cs -src/Org.OpenAPITools/Model/Tag.cs -src/Org.OpenAPITools/Model/Triangle.cs -src/Org.OpenAPITools/Model/TriangleInterface.cs -src/Org.OpenAPITools/Model/User.cs -src/Org.OpenAPITools/Model/Whale.cs -src/Org.OpenAPITools/Model/Zebra.cs -src/Org.OpenAPITools/Org.OpenAPITools.csproj +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnotherFakeApi.md +docs/ApiResponse.md +docs/Apple.md +docs/AppleReq.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Banana.md +docs/BananaReq.md +docs/BasquePig.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ChildCat.md +docs/ChildCatAllOf.md +docs/ClassModel.md +docs/ComplexQuadrilateral.md +docs/DanishPig.md +docs/DefaultApi.md +docs/Dog.md +docs/DogAllOf.md +docs/Drawing.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/EquilateralTriangle.md +docs/FakeApi.md +docs/FakeClassnameTags123Api.md +docs/File.md +docs/FileSchemaTestClass.md +docs/Foo.md +docs/FormatTest.md +docs/Fruit.md +docs/FruitReq.md +docs/GmFruit.md +docs/GrandparentAnimal.md +docs/HasOnlyReadOnly.md +docs/HealthCheckResult.md +docs/InlineResponseDefault.md +docs/IsoscelesTriangle.md +docs/List.md +docs/Mammal.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/ModelClient.md +docs/Name.md +docs/NullableClass.md +docs/NullableShape.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/OuterEnumDefaultValue.md +docs/OuterEnumInteger.md +docs/OuterEnumIntegerDefaultValue.md +docs/ParentPet.md +docs/Pet.md +docs/PetApi.md +docs/Pig.md +docs/Quadrilateral.md +docs/QuadrilateralInterface.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/ScaleneTriangle.md +docs/Shape.md +docs/ShapeInterface.md +docs/ShapeOrNull.md +docs/SimpleQuadrilateral.md +docs/SpecialModelName.md +docs/StoreApi.md +docs/Tag.md +docs/Triangle.md +docs/TriangleInterface.md +docs/User.md +docs/UserApi.md +docs/Whale.md +docs/Zebra.md +git_push.sh +src/Org.OpenAPITools/Api/AnotherFakeApi.cs +src/Org.OpenAPITools/Api/DefaultApi.cs +src/Org.OpenAPITools/Api/FakeApi.cs +src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpMethod.cs +src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Animal.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Apple.cs +src/Org.OpenAPITools/Model/AppleReq.cs +src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayTest.cs +src/Org.OpenAPITools/Model/Banana.cs +src/Org.OpenAPITools/Model/BananaReq.cs +src/Org.OpenAPITools/Model/BasquePig.cs +src/Org.OpenAPITools/Model/Capitalization.cs +src/Org.OpenAPITools/Model/Cat.cs +src/Org.OpenAPITools/Model/CatAllOf.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/ChildCat.cs +src/Org.OpenAPITools/Model/ChildCatAllOf.cs +src/Org.OpenAPITools/Model/ClassModel.cs +src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +src/Org.OpenAPITools/Model/DanishPig.cs +src/Org.OpenAPITools/Model/Dog.cs +src/Org.OpenAPITools/Model/DogAllOf.cs +src/Org.OpenAPITools/Model/Drawing.cs +src/Org.OpenAPITools/Model/EnumArrays.cs +src/Org.OpenAPITools/Model/EnumClass.cs +src/Org.OpenAPITools/Model/EnumTest.cs +src/Org.OpenAPITools/Model/EquilateralTriangle.cs +src/Org.OpenAPITools/Model/File.cs +src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +src/Org.OpenAPITools/Model/Foo.cs +src/Org.OpenAPITools/Model/FormatTest.cs +src/Org.OpenAPITools/Model/Fruit.cs +src/Org.OpenAPITools/Model/FruitReq.cs +src/Org.OpenAPITools/Model/GmFruit.cs +src/Org.OpenAPITools/Model/GrandparentAnimal.cs +src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InlineResponseDefault.cs +src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +src/Org.OpenAPITools/Model/List.cs +src/Org.OpenAPITools/Model/Mammal.cs +src/Org.OpenAPITools/Model/MapTest.cs +src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Model200Response.cs +src/Org.OpenAPITools/Model/ModelClient.cs +src/Org.OpenAPITools/Model/Name.cs +src/Org.OpenAPITools/Model/NullableClass.cs +src/Org.OpenAPITools/Model/NullableShape.cs +src/Org.OpenAPITools/Model/NumberOnly.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/OuterComposite.cs +src/Org.OpenAPITools/Model/OuterEnum.cs +src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +src/Org.OpenAPITools/Model/OuterEnumInteger.cs +src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +src/Org.OpenAPITools/Model/ParentPet.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Pig.cs +src/Org.OpenAPITools/Model/Quadrilateral.cs +src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +src/Org.OpenAPITools/Model/Return.cs +src/Org.OpenAPITools/Model/ScaleneTriangle.cs +src/Org.OpenAPITools/Model/Shape.cs +src/Org.OpenAPITools/Model/ShapeInterface.cs +src/Org.OpenAPITools/Model/ShapeOrNull.cs +src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +src/Org.OpenAPITools/Model/SpecialModelName.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/Triangle.cs +src/Org.OpenAPITools/Model/TriangleInterface.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Model/Whale.cs +src/Org.OpenAPITools/Model/Zebra.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 94d8b854b0d..ad48306e00c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -109,7 +109,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public AnotherFakeApi(String basePath) + public AnotherFakeApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -225,12 +225,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -284,12 +284,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/DefaultApi.cs index 27789c4533a..8844aca4ab7 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -102,7 +102,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public DefaultApi(String basePath) + public DefaultApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -165,7 +165,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -212,11 +212,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -263,11 +263,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/FakeApi.cs index d7749151314..fe862283f1e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/FakeApi.cs @@ -826,7 +826,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeApi(String basePath) + public FakeApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -889,7 +889,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -936,11 +936,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -987,11 +987,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1039,12 +1039,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1094,12 +1094,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1148,12 +1148,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1203,12 +1203,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1257,12 +1257,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1312,12 +1312,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1366,12 +1366,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1421,12 +1421,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1473,11 +1473,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1524,11 +1524,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1579,12 +1579,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1636,12 +1636,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1698,12 +1698,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1762,12 +1762,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1820,12 +1820,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1879,12 +1879,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1966,12 +1966,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2027,7 +2027,7 @@ namespace Org.OpenAPITools.Api // authentication (http_basic_test) required // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } @@ -2102,12 +2102,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2164,7 +2164,7 @@ namespace Org.OpenAPITools.Api // authentication (http_basic_test) required // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } @@ -2217,12 +2217,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2315,12 +2315,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2408,11 +2408,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2439,7 +2439,7 @@ namespace Org.OpenAPITools.Api // authentication (bearer_test) required // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -2490,11 +2490,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2522,7 +2522,7 @@ namespace Org.OpenAPITools.Api // authentication (bearer_test) required // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -2565,12 +2565,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2622,12 +2622,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2684,12 +2684,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2748,12 +2748,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2829,11 +2829,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2913,11 +2913,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 56ebdf5fd10..d4fbb5868ad 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -109,7 +109,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeClassnameTags123Api(String basePath) + public FakeClassnameTags123Api(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -225,12 +225,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -243,7 +243,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = modelClient; // authentication (api_key_query) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) { localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); } @@ -289,12 +289,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -308,7 +308,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = modelClient; // authentication (api_key_query) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) { localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/PetApi.cs index 61759145f12..2bf19af1b1a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/PetApi.cs @@ -471,7 +471,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public PetApi(String basePath) + public PetApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -534,7 +534,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -586,13 +586,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -621,7 +621,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -666,13 +666,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -702,7 +702,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -743,11 +743,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -764,7 +764,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -807,11 +807,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -829,7 +829,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -873,11 +873,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -908,7 +908,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -954,11 +954,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -990,7 +990,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1034,11 +1034,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1069,7 +1069,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1115,11 +1115,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1151,7 +1151,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1191,11 +1191,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1209,7 +1209,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1251,11 +1251,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1270,7 +1270,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1313,13 +1313,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1348,7 +1348,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1393,13 +1393,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1429,7 +1429,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1472,12 +1472,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1498,7 +1498,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1543,12 +1543,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1570,7 +1570,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1614,12 +1614,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1641,7 +1641,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1687,12 +1687,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1715,7 +1715,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1763,12 +1763,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1787,7 +1787,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1837,12 +1837,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1862,7 +1862,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/StoreApi.cs index 6ab56c9e9bf..ad7387db705 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/StoreApi.cs @@ -234,7 +234,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public StoreApi(String basePath) + public StoreApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -297,7 +297,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -349,11 +349,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -405,11 +405,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -455,11 +455,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -471,7 +471,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -511,11 +511,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -528,7 +528,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -568,11 +568,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -623,11 +623,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -681,12 +681,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -741,12 +741,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/UserApi.cs index 80436c9b433..a2f2598c8ac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Api/UserApi.cs @@ -406,7 +406,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public UserApi(String basePath) + public UserApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -469,7 +469,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -521,12 +521,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -578,12 +578,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -634,12 +634,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -691,12 +691,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -747,12 +747,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -804,12 +804,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -860,11 +860,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -916,11 +916,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -972,11 +972,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1031,11 +1031,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1095,11 +1095,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1161,11 +1161,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1213,11 +1213,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1262,11 +1262,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1322,12 +1322,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1386,12 +1386,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs index c3d43b29bb4..68cf1fd135b 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs @@ -106,7 +106,7 @@ namespace Org.OpenAPITools.Client var bytes = response.RawBytes; if (response.Headers != null) { - var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) + var filePath = string.IsNullOrEmpty(_configuration.TempFolderPath) ? Path.GetTempPath() : _configuration.TempFolderPath; var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); @@ -130,7 +130,7 @@ namespace Org.OpenAPITools.Client return DateTime.Parse(response.Content, null, System.Globalization.DateTimeStyles.RoundtripKind); } - if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + if (type == typeof(string) || type.Name.StartsWith("System.Nullable")) // return primitive type { return Convert.ChangeType(response.Content, type); } @@ -162,7 +162,7 @@ namespace Org.OpenAPITools.Client /// public partial class ApiClient : ISynchronousClient, IAsynchronousClient { - private readonly String _baseUrl; + private readonly string _baseUrl; /// /// Specifies the settings on a object. @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Client /// /// The target service's base path in URL format. /// - public ApiClient(String basePath) + public ApiClient(string basePath) { if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); @@ -268,7 +268,7 @@ namespace Org.OpenAPITools.Client /// private RestRequest NewRequest( HttpMethod method, - String path, + string path, RequestOptions options, IReadableConfiguration configuration) { diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiResponse.cs index 1b7d787c84b..ca2de833a5a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiResponse.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiResponse.cs @@ -44,7 +44,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - String ErrorText { get; set; } + string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. @@ -85,7 +85,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - public String ErrorText { get; set; } + public string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ClientUtils.cs index 2b6e52d6065..3d038d5ce69 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -124,7 +124,7 @@ namespace Org.OpenAPITools.Client /// URL encode a string /// Credit/Ref: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Extensions/StringExtensions.cs#L50 /// - /// String to be URL encoded + /// string to be URL encoded /// Byte array public static string UrlEncode(string input) { @@ -158,7 +158,7 @@ namespace Org.OpenAPITools.Client /// /// Encode string in base64 format. /// - /// String to be encoded. + /// string to be encoded. /// Encoded string. public static string Base64Encode(string text) { @@ -186,7 +186,7 @@ namespace Org.OpenAPITools.Client /// /// The Content-Type array to select from. /// The Content-Type header to use. - public static String SelectHeaderContentType(String[] contentTypes) + public static string SelectHeaderContentType(string[] contentTypes) { if (contentTypes.Length == 0) return null; @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Client /// /// The accepts array to select from. /// The Accept header to use. - public static String SelectHeaderAccept(String[] accepts) + public static string SelectHeaderAccept(string[] accepts) { if (accepts.Length == 0) return null; @@ -215,7 +215,7 @@ namespace Org.OpenAPITools.Client if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) return "application/json"; - return String.Join(",", accepts); + return string.Join(",", accepts); } /// @@ -233,9 +233,9 @@ namespace Org.OpenAPITools.Client /// /// MIME /// Returns True if MIME type is json. - public static bool IsJsonMime(String mime) + public static bool IsJsonMime(string mime) { - if (String.IsNullOrWhiteSpace(mime)) return false; + if (string.IsNullOrWhiteSpace(mime)) return false; return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/Configuration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/Configuration.cs index bca7db624cd..06154ad382c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/Configuration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/Configuration.cs @@ -67,7 +67,7 @@ namespace Org.OpenAPITools.Client /// Defines the base path of the target API server. /// Example: http://localhost:3000/v1/ /// - private String _basePath; + private string _basePath; /// /// Gets or sets the API key based on the authentication name. @@ -511,9 +511,9 @@ namespace Org.OpenAPITools.Client /// /// Returns a string with essential information for debugging. /// - public static String ToDebugReport() + public static string ToDebugReport() { - String report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; + string report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; report += " Version of the API: 1.0.0\n"; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs index 1b9f9b7a99f..1d2d0019cae 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs @@ -120,7 +120,7 @@ namespace Org.OpenAPITools.Client } } - var httpValues = HttpUtility.ParseQueryString(String.Empty); + var httpValues = HttpUtility.ParseQueryString(string.Empty); foreach (var parameter in requestOptions.QueryParameters) { #if (NETCOREAPP) @@ -153,7 +153,7 @@ namespace Org.OpenAPITools.Client uriBuilder.Query = httpValues.ToString().Replace("+", "%20"); var dateTime = DateTime.Now; - String Digest = String.Empty; + string Digest = string.Empty; //get the body string requestBody = string.Empty; @@ -230,7 +230,7 @@ namespace Org.OpenAPITools.Client } } - var headersKeysString = String.Join(" ", HttpSignatureHeader.Keys); + var headersKeysString = string.Join(" ", HttpSignatureHeader.Keys); var headerValuesList = new List(); foreach (var keyVal in HttpSignatureHeader) @@ -411,10 +411,10 @@ namespace Org.OpenAPITools.Client return derBytes.ToArray(); } - private RSACryptoServiceProvider GetRSAProviderFromPemFile(String pemfile, SecureString keyPassPharse = null) + private RSACryptoServiceProvider GetRSAProviderFromPemFile(string pemfile, SecureString keyPassPharse = null) { - const String pempubheader = "-----BEGIN PUBLIC KEY-----"; - const String pempubfooter = "-----END PUBLIC KEY-----"; + const string pempubheader = "-----BEGIN PUBLIC KEY-----"; + const string pempubfooter = "-----END PUBLIC KEY-----"; bool isPrivateKeyFile = true; byte[] pemkey = null; @@ -441,11 +441,11 @@ namespace Org.OpenAPITools.Client return null; } - private byte[] ConvertPrivateKeyToBytes(String instr, SecureString keyPassPharse = null) + private byte[] ConvertPrivateKeyToBytes(string instr, SecureString keyPassPharse = null) { - const String pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; - const String pemprivfooter = "-----END RSA PRIVATE KEY-----"; - String pemstr = instr.Trim(); + const string pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; + const string pemprivfooter = "-----END RSA PRIVATE KEY-----"; + string pemstr = instr.Trim(); byte[] binkey; if (!pemstr.StartsWith(pemprivheader) || !pemstr.EndsWith(pemprivfooter)) @@ -456,7 +456,7 @@ namespace Org.OpenAPITools.Client StringBuilder sb = new StringBuilder(pemstr); sb.Replace(pemprivheader, ""); sb.Replace(pemprivfooter, ""); - String pvkstr = sb.ToString().Trim(); + string pvkstr = sb.ToString().Trim(); try { // if there are no PEM encryption info lines, this is an UNencrypted PEM private key @@ -472,12 +472,12 @@ namespace Org.OpenAPITools.Client { return null; } - String saltline = str.ReadLine(); + string saltline = str.ReadLine(); if (!saltline.StartsWith("DEK-Info: DES-EDE3-CBC,")) { return null; } - String saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); + string saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); byte[] salt = new byte[saltstr.Length / 2]; for (int i = 0; i < salt.Length; i++) salt[i] = Convert.ToByte(saltstr.Substring(i * 2, 2), 16); @@ -487,7 +487,7 @@ namespace Org.OpenAPITools.Client } //------ remaining b64 data is encrypted RSA key ---- - String encryptedstr = str.ReadToEnd(); + string encryptedstr = str.ReadToEnd(); try { //should have b64 encrypted RSA key now diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/IApiAccessor.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/IApiAccessor.cs index 59465ae8e90..2bd76416004 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/IApiAccessor.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/IApiAccessor.cs @@ -27,7 +27,7 @@ namespace Org.OpenAPITools.Client /// Gets the base path of the API client. /// /// The base path - String GetBasePath(); + string GetBasePath(); /// /// Provides a factory method hook for the creation of exceptions. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/IAsynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/IAsynchronousClient.cs index 8a6f726678a..601e86d561c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/IAsynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/IAsynchronousClient.cs @@ -29,7 +29,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> GetAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the POST http verb. @@ -40,7 +40,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PostAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PUT http verb. @@ -51,7 +51,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PutAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the DELETE http verb. @@ -62,7 +62,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> DeleteAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the HEAD http verb. @@ -73,7 +73,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> HeadAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the OPTIONS http verb. @@ -84,7 +84,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> OptionsAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PATCH http verb. @@ -95,6 +95,6 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PatchAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ISynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ISynchronousClient.cs index d27f01a588b..0e0a7fedacf 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ISynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ISynchronousClient.cs @@ -28,7 +28,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Get(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the POST http verb. @@ -38,7 +38,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Post(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PUT http verb. @@ -48,7 +48,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Put(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the DELETE http verb. @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Delete(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the HEAD http verb. @@ -68,7 +68,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Head(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the OPTIONS http verb. @@ -78,7 +78,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Options(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PATCH http verb. @@ -88,6 +88,6 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Patch(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/RequestOptions.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/RequestOptions.cs index d8da585db9c..7a1d5b97a88 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/RequestOptions.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/RequestOptions.cs @@ -24,29 +24,29 @@ namespace Org.OpenAPITools.Client /// /// Parameters to be bound to path parts of the Request's URL /// - public Dictionary PathParameters { get; set; } + public Dictionary PathParameters { get; set; } /// /// Query parameters to be applied to the request. /// Keys may have 1 or more values associated. /// - public Multimap QueryParameters { get; set; } + public Multimap QueryParameters { get; set; } /// /// Header parameters to be applied to to the request. /// Keys may have 1 or more values associated. /// - public Multimap HeaderParameters { get; set; } + public Multimap HeaderParameters { get; set; } /// /// Form parameters to be sent along with the request. /// - public Dictionary FormParameters { get; set; } + public Dictionary FormParameters { get; set; } /// /// File parameters to be sent along with the request. /// - public Dictionary FileParameters { get; set; } + public Dictionary FileParameters { get; set; } /// /// Cookies to be sent along with the request. @@ -67,8 +67,8 @@ namespace Org.OpenAPITools.Client QueryParameters = new Multimap(); HeaderParameters = new Multimap(); FormParameters = new Dictionary(); - FileParameters = new Dictionary(); + FileParameters = new Dictionary(); Cookies = new List(); } } -} \ No newline at end of file +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Fruit.cs index 132be5b4d3b..66de6a1c6f1 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Fruit.cs @@ -162,7 +162,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); } try @@ -182,7 +182,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -257,7 +257,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/FruitReq.cs index 380896933df..488c489d73a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/FruitReq.cs @@ -171,7 +171,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); } try @@ -191,7 +191,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -266,7 +266,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/GmFruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/GmFruit.cs index c168aa41d4c..1aaa59d3f8b 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/GmFruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/GmFruit.cs @@ -151,7 +151,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); } try @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); } // no match found, throw an exception @@ -229,7 +229,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Mammal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Mammal.cs index 2e847a10eb6..ed940d7ab6f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Mammal.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Mammal.cs @@ -183,7 +183,7 @@ namespace Org.OpenAPITools.Model newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); return newMammal; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Mammal. Possible values: Pig whale zebra", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Mammal. Possible values: Pig whale zebra", discriminatorValue)); break; } @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); } try @@ -227,7 +227,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); } try @@ -247,7 +247,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -322,7 +322,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/NullableShape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/NullableShape.cs index 80339ebf79b..20be30e5b89 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/NullableShape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/NullableShape.cs @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); return newNullableShape; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for NullableShape. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for NullableShape. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -187,7 +187,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -282,7 +282,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Pig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Pig.cs index d8605861e63..967d2139a0a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Pig.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Pig.cs @@ -154,7 +154,7 @@ namespace Org.OpenAPITools.Model newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); return newPig; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Pig. Possible values: BasquePig DanishPig", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Pig. Possible values: BasquePig DanishPig", discriminatorValue)); break; } @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); } try @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -273,7 +273,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Quadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Quadrilateral.cs index 17463ca09a4..19bc98ed2ec 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Quadrilateral.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Quadrilateral.cs @@ -154,7 +154,7 @@ namespace Org.OpenAPITools.Model newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); return newQuadrilateral; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Quadrilateral. Possible values: ComplexQuadrilateral SimpleQuadrilateral", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Quadrilateral. Possible values: ComplexQuadrilateral SimpleQuadrilateral", discriminatorValue)); break; } @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); } try @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -273,7 +273,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Shape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Shape.cs index e75e0e8b167..f17c4d9a8f5 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Shape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Shape.cs @@ -154,7 +154,7 @@ namespace Org.OpenAPITools.Model newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); return newShape; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Shape. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Shape. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -273,7 +273,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/ShapeOrNull.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/ShapeOrNull.cs index 7471bafb379..df321dc9e81 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/ShapeOrNull.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/ShapeOrNull.cs @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); return newShapeOrNull; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for ShapeOrNull. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for ShapeOrNull. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -187,7 +187,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -282,7 +282,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Triangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Triangle.cs index cccaa79a8ff..6f33859a898 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Triangle.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Triangle.cs @@ -183,7 +183,7 @@ namespace Org.OpenAPITools.Model newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); return newTriangle; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Triangle. Possible values: EquilateralTriangle IsoscelesTriangle ScaleneTriangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Triangle. Possible values: EquilateralTriangle IsoscelesTriangle ScaleneTriangle", discriminatorValue)); break; } @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); } try @@ -227,7 +227,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); } try @@ -247,7 +247,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -322,7 +322,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/FILES index 37763cd49bc..09de5cdb39c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/FILES @@ -1,186 +1,186 @@ -.gitignore -Org.OpenAPITools.sln -README.md -appveyor.yml -docs/AdditionalPropertiesClass.md -docs/Animal.md -docs/AnotherFakeApi.md -docs/ApiResponse.md -docs/Apple.md -docs/AppleReq.md -docs/ArrayOfArrayOfNumberOnly.md -docs/ArrayOfNumberOnly.md -docs/ArrayTest.md -docs/Banana.md -docs/BananaReq.md -docs/BasquePig.md -docs/Capitalization.md -docs/Cat.md -docs/CatAllOf.md -docs/Category.md -docs/ChildCat.md -docs/ChildCatAllOf.md -docs/ClassModel.md -docs/ComplexQuadrilateral.md -docs/DanishPig.md -docs/DefaultApi.md -docs/Dog.md -docs/DogAllOf.md -docs/Drawing.md -docs/EnumArrays.md -docs/EnumClass.md -docs/EnumTest.md -docs/EquilateralTriangle.md -docs/FakeApi.md -docs/FakeClassnameTags123Api.md -docs/File.md -docs/FileSchemaTestClass.md -docs/Foo.md -docs/FormatTest.md -docs/Fruit.md -docs/FruitReq.md -docs/GmFruit.md -docs/GrandparentAnimal.md -docs/HasOnlyReadOnly.md -docs/HealthCheckResult.md -docs/InlineResponseDefault.md -docs/IsoscelesTriangle.md -docs/List.md -docs/Mammal.md -docs/MapTest.md -docs/MixedPropertiesAndAdditionalPropertiesClass.md -docs/Model200Response.md -docs/ModelClient.md -docs/Name.md -docs/NullableClass.md -docs/NullableShape.md -docs/NumberOnly.md -docs/Order.md -docs/OuterComposite.md -docs/OuterEnum.md -docs/OuterEnumDefaultValue.md -docs/OuterEnumInteger.md -docs/OuterEnumIntegerDefaultValue.md -docs/ParentPet.md -docs/Pet.md -docs/PetApi.md -docs/Pig.md -docs/Quadrilateral.md -docs/QuadrilateralInterface.md -docs/ReadOnlyFirst.md -docs/Return.md -docs/ScaleneTriangle.md -docs/Shape.md -docs/ShapeInterface.md -docs/ShapeOrNull.md -docs/SimpleQuadrilateral.md -docs/SpecialModelName.md -docs/StoreApi.md -docs/Tag.md -docs/Triangle.md -docs/TriangleInterface.md -docs/User.md -docs/UserApi.md -docs/Whale.md -docs/Zebra.md -git_push.sh -src/Org.OpenAPITools/Api/AnotherFakeApi.cs -src/Org.OpenAPITools/Api/DefaultApi.cs -src/Org.OpenAPITools/Api/FakeApi.cs -src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs -src/Org.OpenAPITools/Api/PetApi.cs -src/Org.OpenAPITools/Api/StoreApi.cs -src/Org.OpenAPITools/Api/UserApi.cs -src/Org.OpenAPITools/Client/ApiClient.cs -src/Org.OpenAPITools/Client/ApiException.cs -src/Org.OpenAPITools/Client/ApiResponse.cs -src/Org.OpenAPITools/Client/ClientUtils.cs -src/Org.OpenAPITools/Client/Configuration.cs -src/Org.OpenAPITools/Client/ExceptionFactory.cs -src/Org.OpenAPITools/Client/GlobalConfiguration.cs -src/Org.OpenAPITools/Client/HttpMethod.cs -src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs -src/Org.OpenAPITools/Client/IApiAccessor.cs -src/Org.OpenAPITools/Client/IAsynchronousClient.cs -src/Org.OpenAPITools/Client/IReadableConfiguration.cs -src/Org.OpenAPITools/Client/ISynchronousClient.cs -src/Org.OpenAPITools/Client/Multimap.cs -src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs -src/Org.OpenAPITools/Client/RequestOptions.cs -src/Org.OpenAPITools/Client/RetryConfiguration.cs -src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs -src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Animal.cs -src/Org.OpenAPITools/Model/ApiResponse.cs -src/Org.OpenAPITools/Model/Apple.cs -src/Org.OpenAPITools/Model/AppleReq.cs -src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayTest.cs -src/Org.OpenAPITools/Model/Banana.cs -src/Org.OpenAPITools/Model/BananaReq.cs -src/Org.OpenAPITools/Model/BasquePig.cs -src/Org.OpenAPITools/Model/Capitalization.cs -src/Org.OpenAPITools/Model/Cat.cs -src/Org.OpenAPITools/Model/CatAllOf.cs -src/Org.OpenAPITools/Model/Category.cs -src/Org.OpenAPITools/Model/ChildCat.cs -src/Org.OpenAPITools/Model/ChildCatAllOf.cs -src/Org.OpenAPITools/Model/ClassModel.cs -src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs -src/Org.OpenAPITools/Model/DanishPig.cs -src/Org.OpenAPITools/Model/Dog.cs -src/Org.OpenAPITools/Model/DogAllOf.cs -src/Org.OpenAPITools/Model/Drawing.cs -src/Org.OpenAPITools/Model/EnumArrays.cs -src/Org.OpenAPITools/Model/EnumClass.cs -src/Org.OpenAPITools/Model/EnumTest.cs -src/Org.OpenAPITools/Model/EquilateralTriangle.cs -src/Org.OpenAPITools/Model/File.cs -src/Org.OpenAPITools/Model/FileSchemaTestClass.cs -src/Org.OpenAPITools/Model/Foo.cs -src/Org.OpenAPITools/Model/FormatTest.cs -src/Org.OpenAPITools/Model/Fruit.cs -src/Org.OpenAPITools/Model/FruitReq.cs -src/Org.OpenAPITools/Model/GmFruit.cs -src/Org.OpenAPITools/Model/GrandparentAnimal.cs -src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs -src/Org.OpenAPITools/Model/HealthCheckResult.cs -src/Org.OpenAPITools/Model/InlineResponseDefault.cs -src/Org.OpenAPITools/Model/IsoscelesTriangle.cs -src/Org.OpenAPITools/Model/List.cs -src/Org.OpenAPITools/Model/Mammal.cs -src/Org.OpenAPITools/Model/MapTest.cs -src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Model200Response.cs -src/Org.OpenAPITools/Model/ModelClient.cs -src/Org.OpenAPITools/Model/Name.cs -src/Org.OpenAPITools/Model/NullableClass.cs -src/Org.OpenAPITools/Model/NullableShape.cs -src/Org.OpenAPITools/Model/NumberOnly.cs -src/Org.OpenAPITools/Model/Order.cs -src/Org.OpenAPITools/Model/OuterComposite.cs -src/Org.OpenAPITools/Model/OuterEnum.cs -src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs -src/Org.OpenAPITools/Model/OuterEnumInteger.cs -src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs -src/Org.OpenAPITools/Model/ParentPet.cs -src/Org.OpenAPITools/Model/Pet.cs -src/Org.OpenAPITools/Model/Pig.cs -src/Org.OpenAPITools/Model/Quadrilateral.cs -src/Org.OpenAPITools/Model/QuadrilateralInterface.cs -src/Org.OpenAPITools/Model/ReadOnlyFirst.cs -src/Org.OpenAPITools/Model/Return.cs -src/Org.OpenAPITools/Model/ScaleneTriangle.cs -src/Org.OpenAPITools/Model/Shape.cs -src/Org.OpenAPITools/Model/ShapeInterface.cs -src/Org.OpenAPITools/Model/ShapeOrNull.cs -src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs -src/Org.OpenAPITools/Model/SpecialModelName.cs -src/Org.OpenAPITools/Model/Tag.cs -src/Org.OpenAPITools/Model/Triangle.cs -src/Org.OpenAPITools/Model/TriangleInterface.cs -src/Org.OpenAPITools/Model/User.cs -src/Org.OpenAPITools/Model/Whale.cs -src/Org.OpenAPITools/Model/Zebra.cs -src/Org.OpenAPITools/Org.OpenAPITools.csproj +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnotherFakeApi.md +docs/ApiResponse.md +docs/Apple.md +docs/AppleReq.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Banana.md +docs/BananaReq.md +docs/BasquePig.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ChildCat.md +docs/ChildCatAllOf.md +docs/ClassModel.md +docs/ComplexQuadrilateral.md +docs/DanishPig.md +docs/DefaultApi.md +docs/Dog.md +docs/DogAllOf.md +docs/Drawing.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/EquilateralTriangle.md +docs/FakeApi.md +docs/FakeClassnameTags123Api.md +docs/File.md +docs/FileSchemaTestClass.md +docs/Foo.md +docs/FormatTest.md +docs/Fruit.md +docs/FruitReq.md +docs/GmFruit.md +docs/GrandparentAnimal.md +docs/HasOnlyReadOnly.md +docs/HealthCheckResult.md +docs/InlineResponseDefault.md +docs/IsoscelesTriangle.md +docs/List.md +docs/Mammal.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/ModelClient.md +docs/Name.md +docs/NullableClass.md +docs/NullableShape.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/OuterEnumDefaultValue.md +docs/OuterEnumInteger.md +docs/OuterEnumIntegerDefaultValue.md +docs/ParentPet.md +docs/Pet.md +docs/PetApi.md +docs/Pig.md +docs/Quadrilateral.md +docs/QuadrilateralInterface.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/ScaleneTriangle.md +docs/Shape.md +docs/ShapeInterface.md +docs/ShapeOrNull.md +docs/SimpleQuadrilateral.md +docs/SpecialModelName.md +docs/StoreApi.md +docs/Tag.md +docs/Triangle.md +docs/TriangleInterface.md +docs/User.md +docs/UserApi.md +docs/Whale.md +docs/Zebra.md +git_push.sh +src/Org.OpenAPITools/Api/AnotherFakeApi.cs +src/Org.OpenAPITools/Api/DefaultApi.cs +src/Org.OpenAPITools/Api/FakeApi.cs +src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpMethod.cs +src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Animal.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Apple.cs +src/Org.OpenAPITools/Model/AppleReq.cs +src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayTest.cs +src/Org.OpenAPITools/Model/Banana.cs +src/Org.OpenAPITools/Model/BananaReq.cs +src/Org.OpenAPITools/Model/BasquePig.cs +src/Org.OpenAPITools/Model/Capitalization.cs +src/Org.OpenAPITools/Model/Cat.cs +src/Org.OpenAPITools/Model/CatAllOf.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/ChildCat.cs +src/Org.OpenAPITools/Model/ChildCatAllOf.cs +src/Org.OpenAPITools/Model/ClassModel.cs +src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +src/Org.OpenAPITools/Model/DanishPig.cs +src/Org.OpenAPITools/Model/Dog.cs +src/Org.OpenAPITools/Model/DogAllOf.cs +src/Org.OpenAPITools/Model/Drawing.cs +src/Org.OpenAPITools/Model/EnumArrays.cs +src/Org.OpenAPITools/Model/EnumClass.cs +src/Org.OpenAPITools/Model/EnumTest.cs +src/Org.OpenAPITools/Model/EquilateralTriangle.cs +src/Org.OpenAPITools/Model/File.cs +src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +src/Org.OpenAPITools/Model/Foo.cs +src/Org.OpenAPITools/Model/FormatTest.cs +src/Org.OpenAPITools/Model/Fruit.cs +src/Org.OpenAPITools/Model/FruitReq.cs +src/Org.OpenAPITools/Model/GmFruit.cs +src/Org.OpenAPITools/Model/GrandparentAnimal.cs +src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InlineResponseDefault.cs +src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +src/Org.OpenAPITools/Model/List.cs +src/Org.OpenAPITools/Model/Mammal.cs +src/Org.OpenAPITools/Model/MapTest.cs +src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Model200Response.cs +src/Org.OpenAPITools/Model/ModelClient.cs +src/Org.OpenAPITools/Model/Name.cs +src/Org.OpenAPITools/Model/NullableClass.cs +src/Org.OpenAPITools/Model/NullableShape.cs +src/Org.OpenAPITools/Model/NumberOnly.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/OuterComposite.cs +src/Org.OpenAPITools/Model/OuterEnum.cs +src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +src/Org.OpenAPITools/Model/OuterEnumInteger.cs +src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +src/Org.OpenAPITools/Model/ParentPet.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Pig.cs +src/Org.OpenAPITools/Model/Quadrilateral.cs +src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +src/Org.OpenAPITools/Model/Return.cs +src/Org.OpenAPITools/Model/ScaleneTriangle.cs +src/Org.OpenAPITools/Model/Shape.cs +src/Org.OpenAPITools/Model/ShapeInterface.cs +src/Org.OpenAPITools/Model/ShapeOrNull.cs +src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +src/Org.OpenAPITools/Model/SpecialModelName.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/Triangle.cs +src/Org.OpenAPITools/Model/TriangleInterface.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Model/Whale.cs +src/Org.OpenAPITools/Model/Zebra.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 94d8b854b0d..ad48306e00c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -109,7 +109,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public AnotherFakeApi(String basePath) + public AnotherFakeApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -225,12 +225,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -284,12 +284,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/DefaultApi.cs index 27789c4533a..8844aca4ab7 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -102,7 +102,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public DefaultApi(String basePath) + public DefaultApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -165,7 +165,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -212,11 +212,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -263,11 +263,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/FakeApi.cs index d7749151314..fe862283f1e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/FakeApi.cs @@ -826,7 +826,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeApi(String basePath) + public FakeApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -889,7 +889,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -936,11 +936,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -987,11 +987,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1039,12 +1039,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1094,12 +1094,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1148,12 +1148,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1203,12 +1203,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1257,12 +1257,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1312,12 +1312,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1366,12 +1366,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1421,12 +1421,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1473,11 +1473,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1524,11 +1524,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1579,12 +1579,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1636,12 +1636,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1698,12 +1698,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1762,12 +1762,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1820,12 +1820,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1879,12 +1879,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1966,12 +1966,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2027,7 +2027,7 @@ namespace Org.OpenAPITools.Api // authentication (http_basic_test) required // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } @@ -2102,12 +2102,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2164,7 +2164,7 @@ namespace Org.OpenAPITools.Api // authentication (http_basic_test) required // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } @@ -2217,12 +2217,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2315,12 +2315,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2408,11 +2408,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2439,7 +2439,7 @@ namespace Org.OpenAPITools.Api // authentication (bearer_test) required // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -2490,11 +2490,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2522,7 +2522,7 @@ namespace Org.OpenAPITools.Api // authentication (bearer_test) required // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -2565,12 +2565,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2622,12 +2622,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2684,12 +2684,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2748,12 +2748,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2829,11 +2829,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2913,11 +2913,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 56ebdf5fd10..d4fbb5868ad 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -109,7 +109,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeClassnameTags123Api(String basePath) + public FakeClassnameTags123Api(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -225,12 +225,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -243,7 +243,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = modelClient; // authentication (api_key_query) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) { localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); } @@ -289,12 +289,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -308,7 +308,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = modelClient; // authentication (api_key_query) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) { localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/PetApi.cs index 61759145f12..2bf19af1b1a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/PetApi.cs @@ -471,7 +471,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public PetApi(String basePath) + public PetApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -534,7 +534,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -586,13 +586,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -621,7 +621,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -666,13 +666,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -702,7 +702,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -743,11 +743,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -764,7 +764,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -807,11 +807,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -829,7 +829,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -873,11 +873,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -908,7 +908,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -954,11 +954,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -990,7 +990,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1034,11 +1034,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1069,7 +1069,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1115,11 +1115,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1151,7 +1151,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1191,11 +1191,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1209,7 +1209,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1251,11 +1251,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1270,7 +1270,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1313,13 +1313,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1348,7 +1348,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1393,13 +1393,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1429,7 +1429,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1472,12 +1472,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1498,7 +1498,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1543,12 +1543,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1570,7 +1570,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1614,12 +1614,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1641,7 +1641,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1687,12 +1687,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1715,7 +1715,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1763,12 +1763,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1787,7 +1787,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1837,12 +1837,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1862,7 +1862,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/StoreApi.cs index 6ab56c9e9bf..ad7387db705 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/StoreApi.cs @@ -234,7 +234,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public StoreApi(String basePath) + public StoreApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -297,7 +297,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -349,11 +349,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -405,11 +405,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -455,11 +455,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -471,7 +471,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -511,11 +511,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -528,7 +528,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -568,11 +568,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -623,11 +623,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -681,12 +681,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -741,12 +741,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/UserApi.cs index 80436c9b433..a2f2598c8ac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Api/UserApi.cs @@ -406,7 +406,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public UserApi(String basePath) + public UserApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -469,7 +469,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -521,12 +521,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -578,12 +578,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -634,12 +634,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -691,12 +691,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -747,12 +747,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -804,12 +804,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -860,11 +860,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -916,11 +916,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -972,11 +972,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1031,11 +1031,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1095,11 +1095,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1161,11 +1161,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1213,11 +1213,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1262,11 +1262,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1322,12 +1322,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1386,12 +1386,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs index db5a263b639..dd44f97a907 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs @@ -107,7 +107,7 @@ namespace Org.OpenAPITools.Client var bytes = response.RawBytes; if (response.Headers != null) { - var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) + var filePath = string.IsNullOrEmpty(_configuration.TempFolderPath) ? Path.GetTempPath() : _configuration.TempFolderPath; var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); @@ -131,7 +131,7 @@ namespace Org.OpenAPITools.Client return DateTime.Parse(response.Content, null, System.Globalization.DateTimeStyles.RoundtripKind); } - if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + if (type == typeof(string) || type.Name.StartsWith("System.Nullable")) // return primitive type { return Convert.ChangeType(response.Content, type); } @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Client /// public partial class ApiClient : ISynchronousClient, IAsynchronousClient { - private readonly String _baseUrl; + private readonly string _baseUrl; /// /// Specifies the settings on a object. @@ -208,7 +208,7 @@ namespace Org.OpenAPITools.Client /// /// The target service's base path in URL format. /// - public ApiClient(String basePath) + public ApiClient(string basePath) { if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); @@ -269,7 +269,7 @@ namespace Org.OpenAPITools.Client /// private RestRequest NewRequest( HttpMethod method, - String path, + string path, RequestOptions options, IReadableConfiguration configuration) { diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiResponse.cs index 1b7d787c84b..ca2de833a5a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiResponse.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiResponse.cs @@ -44,7 +44,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - String ErrorText { get; set; } + string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. @@ -85,7 +85,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - public String ErrorText { get; set; } + public string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ClientUtils.cs index 2b6e52d6065..3d038d5ce69 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -124,7 +124,7 @@ namespace Org.OpenAPITools.Client /// URL encode a string /// Credit/Ref: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Extensions/StringExtensions.cs#L50 /// - /// String to be URL encoded + /// string to be URL encoded /// Byte array public static string UrlEncode(string input) { @@ -158,7 +158,7 @@ namespace Org.OpenAPITools.Client /// /// Encode string in base64 format. /// - /// String to be encoded. + /// string to be encoded. /// Encoded string. public static string Base64Encode(string text) { @@ -186,7 +186,7 @@ namespace Org.OpenAPITools.Client /// /// The Content-Type array to select from. /// The Content-Type header to use. - public static String SelectHeaderContentType(String[] contentTypes) + public static string SelectHeaderContentType(string[] contentTypes) { if (contentTypes.Length == 0) return null; @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Client /// /// The accepts array to select from. /// The Accept header to use. - public static String SelectHeaderAccept(String[] accepts) + public static string SelectHeaderAccept(string[] accepts) { if (accepts.Length == 0) return null; @@ -215,7 +215,7 @@ namespace Org.OpenAPITools.Client if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) return "application/json"; - return String.Join(",", accepts); + return string.Join(",", accepts); } /// @@ -233,9 +233,9 @@ namespace Org.OpenAPITools.Client /// /// MIME /// Returns True if MIME type is json. - public static bool IsJsonMime(String mime) + public static bool IsJsonMime(string mime) { - if (String.IsNullOrWhiteSpace(mime)) return false; + if (string.IsNullOrWhiteSpace(mime)) return false; return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/Configuration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/Configuration.cs index 154091fc731..1b80ca62fad 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/Configuration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/Configuration.cs @@ -72,7 +72,7 @@ namespace Org.OpenAPITools.Client /// Defines the base path of the target API server. /// Example: http://localhost:3000/v1/ /// - private String _basePath; + private string _basePath; /// /// Gets or sets the API key based on the authentication name. @@ -516,9 +516,9 @@ namespace Org.OpenAPITools.Client /// /// Returns a string with essential information for debugging. /// - public static String ToDebugReport() + public static string ToDebugReport() { - String report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; + string report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; report += " Version of the API: 1.0.0\n"; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs index 1b9f9b7a99f..1d2d0019cae 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs @@ -120,7 +120,7 @@ namespace Org.OpenAPITools.Client } } - var httpValues = HttpUtility.ParseQueryString(String.Empty); + var httpValues = HttpUtility.ParseQueryString(string.Empty); foreach (var parameter in requestOptions.QueryParameters) { #if (NETCOREAPP) @@ -153,7 +153,7 @@ namespace Org.OpenAPITools.Client uriBuilder.Query = httpValues.ToString().Replace("+", "%20"); var dateTime = DateTime.Now; - String Digest = String.Empty; + string Digest = string.Empty; //get the body string requestBody = string.Empty; @@ -230,7 +230,7 @@ namespace Org.OpenAPITools.Client } } - var headersKeysString = String.Join(" ", HttpSignatureHeader.Keys); + var headersKeysString = string.Join(" ", HttpSignatureHeader.Keys); var headerValuesList = new List(); foreach (var keyVal in HttpSignatureHeader) @@ -411,10 +411,10 @@ namespace Org.OpenAPITools.Client return derBytes.ToArray(); } - private RSACryptoServiceProvider GetRSAProviderFromPemFile(String pemfile, SecureString keyPassPharse = null) + private RSACryptoServiceProvider GetRSAProviderFromPemFile(string pemfile, SecureString keyPassPharse = null) { - const String pempubheader = "-----BEGIN PUBLIC KEY-----"; - const String pempubfooter = "-----END PUBLIC KEY-----"; + const string pempubheader = "-----BEGIN PUBLIC KEY-----"; + const string pempubfooter = "-----END PUBLIC KEY-----"; bool isPrivateKeyFile = true; byte[] pemkey = null; @@ -441,11 +441,11 @@ namespace Org.OpenAPITools.Client return null; } - private byte[] ConvertPrivateKeyToBytes(String instr, SecureString keyPassPharse = null) + private byte[] ConvertPrivateKeyToBytes(string instr, SecureString keyPassPharse = null) { - const String pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; - const String pemprivfooter = "-----END RSA PRIVATE KEY-----"; - String pemstr = instr.Trim(); + const string pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; + const string pemprivfooter = "-----END RSA PRIVATE KEY-----"; + string pemstr = instr.Trim(); byte[] binkey; if (!pemstr.StartsWith(pemprivheader) || !pemstr.EndsWith(pemprivfooter)) @@ -456,7 +456,7 @@ namespace Org.OpenAPITools.Client StringBuilder sb = new StringBuilder(pemstr); sb.Replace(pemprivheader, ""); sb.Replace(pemprivfooter, ""); - String pvkstr = sb.ToString().Trim(); + string pvkstr = sb.ToString().Trim(); try { // if there are no PEM encryption info lines, this is an UNencrypted PEM private key @@ -472,12 +472,12 @@ namespace Org.OpenAPITools.Client { return null; } - String saltline = str.ReadLine(); + string saltline = str.ReadLine(); if (!saltline.StartsWith("DEK-Info: DES-EDE3-CBC,")) { return null; } - String saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); + string saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); byte[] salt = new byte[saltstr.Length / 2]; for (int i = 0; i < salt.Length; i++) salt[i] = Convert.ToByte(saltstr.Substring(i * 2, 2), 16); @@ -487,7 +487,7 @@ namespace Org.OpenAPITools.Client } //------ remaining b64 data is encrypted RSA key ---- - String encryptedstr = str.ReadToEnd(); + string encryptedstr = str.ReadToEnd(); try { //should have b64 encrypted RSA key now diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/IApiAccessor.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/IApiAccessor.cs index 59465ae8e90..2bd76416004 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/IApiAccessor.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/IApiAccessor.cs @@ -27,7 +27,7 @@ namespace Org.OpenAPITools.Client /// Gets the base path of the API client. /// /// The base path - String GetBasePath(); + string GetBasePath(); /// /// Provides a factory method hook for the creation of exceptions. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/IAsynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/IAsynchronousClient.cs index 8a6f726678a..601e86d561c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/IAsynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/IAsynchronousClient.cs @@ -29,7 +29,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> GetAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the POST http verb. @@ -40,7 +40,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PostAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PUT http verb. @@ -51,7 +51,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PutAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the DELETE http verb. @@ -62,7 +62,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> DeleteAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the HEAD http verb. @@ -73,7 +73,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> HeadAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the OPTIONS http verb. @@ -84,7 +84,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> OptionsAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PATCH http verb. @@ -95,6 +95,6 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PatchAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ISynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ISynchronousClient.cs index d27f01a588b..0e0a7fedacf 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ISynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ISynchronousClient.cs @@ -28,7 +28,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Get(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the POST http verb. @@ -38,7 +38,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Post(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PUT http verb. @@ -48,7 +48,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Put(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the DELETE http verb. @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Delete(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the HEAD http verb. @@ -68,7 +68,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Head(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the OPTIONS http verb. @@ -78,7 +78,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Options(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PATCH http verb. @@ -88,6 +88,6 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Patch(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/RequestOptions.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/RequestOptions.cs index d8da585db9c..7a1d5b97a88 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/RequestOptions.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/RequestOptions.cs @@ -24,29 +24,29 @@ namespace Org.OpenAPITools.Client /// /// Parameters to be bound to path parts of the Request's URL /// - public Dictionary PathParameters { get; set; } + public Dictionary PathParameters { get; set; } /// /// Query parameters to be applied to the request. /// Keys may have 1 or more values associated. /// - public Multimap QueryParameters { get; set; } + public Multimap QueryParameters { get; set; } /// /// Header parameters to be applied to to the request. /// Keys may have 1 or more values associated. /// - public Multimap HeaderParameters { get; set; } + public Multimap HeaderParameters { get; set; } /// /// Form parameters to be sent along with the request. /// - public Dictionary FormParameters { get; set; } + public Dictionary FormParameters { get; set; } /// /// File parameters to be sent along with the request. /// - public Dictionary FileParameters { get; set; } + public Dictionary FileParameters { get; set; } /// /// Cookies to be sent along with the request. @@ -67,8 +67,8 @@ namespace Org.OpenAPITools.Client QueryParameters = new Multimap(); HeaderParameters = new Multimap(); FormParameters = new Dictionary(); - FileParameters = new Dictionary(); + FileParameters = new Dictionary(); Cookies = new List(); } } -} \ No newline at end of file +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Fruit.cs index 132be5b4d3b..66de6a1c6f1 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Fruit.cs @@ -162,7 +162,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); } try @@ -182,7 +182,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -257,7 +257,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/FruitReq.cs index 380896933df..488c489d73a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/FruitReq.cs @@ -171,7 +171,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); } try @@ -191,7 +191,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -266,7 +266,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/GmFruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/GmFruit.cs index c168aa41d4c..1aaa59d3f8b 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/GmFruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/GmFruit.cs @@ -151,7 +151,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); } try @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); } // no match found, throw an exception @@ -229,7 +229,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Mammal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Mammal.cs index 93652cebd2d..845bc54a3cb 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Mammal.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Mammal.cs @@ -189,7 +189,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); } try @@ -209,7 +209,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); } try @@ -229,7 +229,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -304,7 +304,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/NullableShape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/NullableShape.cs index e3b59f31af6..5f454dee6d3 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/NullableShape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/NullableShape.cs @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -192,7 +192,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -267,7 +267,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Pig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Pig.cs index 9ae61e76668..34e2e4de83c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Pig.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Pig.cs @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); } try @@ -183,7 +183,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -258,7 +258,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Quadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Quadrilateral.cs index f35df8fc7a1..1e00244d163 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Quadrilateral.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Quadrilateral.cs @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); } try @@ -183,7 +183,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -258,7 +258,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Shape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Shape.cs index 6fd2c2fba81..a71a14456e6 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Shape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Shape.cs @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -183,7 +183,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -258,7 +258,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/ShapeOrNull.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/ShapeOrNull.cs index 8adfde1b067..f7c4541f236 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/ShapeOrNull.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/ShapeOrNull.cs @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -192,7 +192,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -267,7 +267,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Triangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Triangle.cs index 5979a1ea74c..0b1b3902702 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Triangle.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Triangle.cs @@ -189,7 +189,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); } try @@ -209,7 +209,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); } try @@ -229,7 +229,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -304,7 +304,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/FILES index 60d0f82fefd..92c394a9315 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/FILES @@ -1,42 +1,42 @@ -.gitignore -Org.OpenAPITools.sln -README.md -appveyor.yml -docs/ApiResponse.md -docs/Category.md -docs/Order.md -docs/Pet.md -docs/PetApi.md -docs/StoreApi.md -docs/Tag.md -docs/User.md -docs/UserApi.md -git_push.sh -src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj -src/Org.OpenAPITools/Api/PetApi.cs -src/Org.OpenAPITools/Api/StoreApi.cs -src/Org.OpenAPITools/Api/UserApi.cs -src/Org.OpenAPITools/Client/ApiClient.cs -src/Org.OpenAPITools/Client/ApiException.cs -src/Org.OpenAPITools/Client/ApiResponse.cs -src/Org.OpenAPITools/Client/ClientUtils.cs -src/Org.OpenAPITools/Client/Configuration.cs -src/Org.OpenAPITools/Client/ExceptionFactory.cs -src/Org.OpenAPITools/Client/GlobalConfiguration.cs -src/Org.OpenAPITools/Client/HttpMethod.cs -src/Org.OpenAPITools/Client/IApiAccessor.cs -src/Org.OpenAPITools/Client/IAsynchronousClient.cs -src/Org.OpenAPITools/Client/IReadableConfiguration.cs -src/Org.OpenAPITools/Client/ISynchronousClient.cs -src/Org.OpenAPITools/Client/Multimap.cs -src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs -src/Org.OpenAPITools/Client/RequestOptions.cs -src/Org.OpenAPITools/Client/RetryConfiguration.cs -src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs -src/Org.OpenAPITools/Model/ApiResponse.cs -src/Org.OpenAPITools/Model/Category.cs -src/Org.OpenAPITools/Model/Order.cs -src/Org.OpenAPITools/Model/Pet.cs -src/Org.OpenAPITools/Model/Tag.cs -src/Org.OpenAPITools/Model/User.cs -src/Org.OpenAPITools/Org.OpenAPITools.csproj +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/ApiResponse.md +docs/Category.md +docs/Order.md +docs/Pet.md +docs/PetApi.md +docs/StoreApi.md +docs/Tag.md +docs/User.md +docs/UserApi.md +git_push.sh +src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpMethod.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Api/PetApi.cs index 34913501ea0..82f8266d4a1 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Api/PetApi.cs @@ -422,7 +422,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public PetApi(String basePath) + public PetApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -485,7 +485,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -538,13 +538,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -559,7 +559,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -605,13 +605,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -627,7 +627,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -668,11 +668,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -689,7 +689,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -732,11 +732,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -754,7 +754,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -798,11 +798,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -817,7 +817,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -863,11 +863,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -883,7 +883,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -927,11 +927,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -946,7 +946,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -992,11 +992,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1012,7 +1012,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1052,11 +1052,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1070,7 +1070,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1112,11 +1112,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1131,7 +1131,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1175,13 +1175,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1196,7 +1196,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1242,13 +1242,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1264,7 +1264,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1307,12 +1307,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1333,7 +1333,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1378,12 +1378,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1405,7 +1405,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1449,12 +1449,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1476,7 +1476,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1522,12 +1522,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1550,7 +1550,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Api/StoreApi.cs index d4d37dc9d4d..67f8c23d6ca 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Api/StoreApi.cs @@ -234,7 +234,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public StoreApi(String basePath) + public StoreApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -297,7 +297,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -349,11 +349,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -405,11 +405,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -455,11 +455,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -471,7 +471,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -511,11 +511,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -528,7 +528,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -568,11 +568,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -623,11 +623,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -681,12 +681,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -741,12 +741,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Api/UserApi.cs index 8e6455d1b99..ac62b62f067 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Api/UserApi.cs @@ -406,7 +406,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public UserApi(String basePath) + public UserApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -469,7 +469,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -521,12 +521,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -538,7 +538,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = user; // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -583,12 +583,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -601,7 +601,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = user; // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -644,12 +644,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -661,7 +661,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = user; // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -706,12 +706,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -724,7 +724,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = user; // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -767,12 +767,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -784,7 +784,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = user; // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -829,12 +829,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -847,7 +847,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = user; // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -890,11 +890,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -906,7 +906,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -951,11 +951,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -968,7 +968,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1012,11 +1012,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1071,11 +1071,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1135,11 +1135,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1201,11 +1201,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1253,11 +1253,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1268,7 +1268,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1307,11 +1307,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1323,7 +1323,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1372,12 +1372,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1390,7 +1390,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = user; // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1441,12 +1441,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1460,7 +1460,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = user; // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ApiClient.cs index 2626b1c2f6f..a515d30c958 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ApiClient.cs @@ -106,7 +106,7 @@ namespace Org.OpenAPITools.Client var bytes = response.RawBytes; if (response.Headers != null) { - var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) + var filePath = string.IsNullOrEmpty(_configuration.TempFolderPath) ? Path.GetTempPath() : _configuration.TempFolderPath; var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); @@ -130,7 +130,7 @@ namespace Org.OpenAPITools.Client return DateTime.Parse(response.Content, null, System.Globalization.DateTimeStyles.RoundtripKind); } - if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + if (type == typeof(string) || type.Name.StartsWith("System.Nullable")) // return primitive type { return Convert.ChangeType(response.Content, type); } @@ -162,7 +162,7 @@ namespace Org.OpenAPITools.Client /// public partial class ApiClient : ISynchronousClient, IAsynchronousClient { - private readonly String _baseUrl; + private readonly string _baseUrl; /// /// Specifies the settings on a object. @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Client /// /// The target service's base path in URL format. /// - public ApiClient(String basePath) + public ApiClient(string basePath) { if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); @@ -268,7 +268,7 @@ namespace Org.OpenAPITools.Client /// private RestRequest NewRequest( HttpMethod method, - String path, + string path, RequestOptions options, IReadableConfiguration configuration) { diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ApiResponse.cs index 57a13978ecb..6d91a6f7a47 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ApiResponse.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ApiResponse.cs @@ -44,7 +44,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - String ErrorText { get; set; } + string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. @@ -85,7 +85,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - public String ErrorText { get; set; } + public string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ClientUtils.cs index e1d9a6e0abc..3676a500c04 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -124,7 +124,7 @@ namespace Org.OpenAPITools.Client /// URL encode a string /// Credit/Ref: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Extensions/StringExtensions.cs#L50 /// - /// String to be URL encoded + /// string to be URL encoded /// Byte array public static string UrlEncode(string input) { @@ -158,7 +158,7 @@ namespace Org.OpenAPITools.Client /// /// Encode string in base64 format. /// - /// String to be encoded. + /// string to be encoded. /// Encoded string. public static string Base64Encode(string text) { @@ -186,7 +186,7 @@ namespace Org.OpenAPITools.Client /// /// The Content-Type array to select from. /// The Content-Type header to use. - public static String SelectHeaderContentType(String[] contentTypes) + public static string SelectHeaderContentType(string[] contentTypes) { if (contentTypes.Length == 0) return null; @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Client /// /// The accepts array to select from. /// The Accept header to use. - public static String SelectHeaderAccept(String[] accepts) + public static string SelectHeaderAccept(string[] accepts) { if (accepts.Length == 0) return null; @@ -215,7 +215,7 @@ namespace Org.OpenAPITools.Client if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) return "application/json"; - return String.Join(",", accepts); + return string.Join(",", accepts); } /// @@ -233,9 +233,9 @@ namespace Org.OpenAPITools.Client /// /// MIME /// Returns True if MIME type is json. - public static bool IsJsonMime(String mime) + public static bool IsJsonMime(string mime) { - if (String.IsNullOrWhiteSpace(mime)) return false; + if (string.IsNullOrWhiteSpace(mime)) return false; return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/Configuration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/Configuration.cs index 92fbefd0e34..896bd754ea5 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/Configuration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/Configuration.cs @@ -67,7 +67,7 @@ namespace Org.OpenAPITools.Client /// Defines the base path of the target API server. /// Example: http://localhost:3000/v1/ /// - private String _basePath; + private string _basePath; /// /// Gets or sets the API key based on the authentication name. @@ -440,9 +440,9 @@ namespace Org.OpenAPITools.Client /// /// Returns a string with essential information for debugging. /// - public static String ToDebugReport() + public static string ToDebugReport() { - String report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; + string report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; report += " Version of the API: 1.0.0\n"; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/IApiAccessor.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/IApiAccessor.cs index edcf9827ebb..c8a78e995ce 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/IApiAccessor.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/IApiAccessor.cs @@ -27,7 +27,7 @@ namespace Org.OpenAPITools.Client /// Gets the base path of the API client. /// /// The base path - String GetBasePath(); + string GetBasePath(); /// /// Provides a factory method hook for the creation of exceptions. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/IAsynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/IAsynchronousClient.cs index 6b62316325d..066d9b39482 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/IAsynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/IAsynchronousClient.cs @@ -29,7 +29,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> GetAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the POST http verb. @@ -40,7 +40,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PostAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PUT http verb. @@ -51,7 +51,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PutAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the DELETE http verb. @@ -62,7 +62,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> DeleteAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the HEAD http verb. @@ -73,7 +73,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> HeadAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the OPTIONS http verb. @@ -84,7 +84,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> OptionsAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PATCH http verb. @@ -95,6 +95,6 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PatchAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ISynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ISynchronousClient.cs index 22bb7a560f7..3910f6d68ce 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ISynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ISynchronousClient.cs @@ -28,7 +28,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Get(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the POST http verb. @@ -38,7 +38,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Post(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PUT http verb. @@ -48,7 +48,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Put(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the DELETE http verb. @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Delete(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the HEAD http verb. @@ -68,7 +68,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Head(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the OPTIONS http verb. @@ -78,7 +78,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Options(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PATCH http verb. @@ -88,6 +88,6 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Patch(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/RequestOptions.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/RequestOptions.cs index e5facdfdaf8..c6b3ccc38f2 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/RequestOptions.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/RequestOptions.cs @@ -24,29 +24,29 @@ namespace Org.OpenAPITools.Client /// /// Parameters to be bound to path parts of the Request's URL /// - public Dictionary PathParameters { get; set; } + public Dictionary PathParameters { get; set; } /// /// Query parameters to be applied to the request. /// Keys may have 1 or more values associated. /// - public Multimap QueryParameters { get; set; } + public Multimap QueryParameters { get; set; } /// /// Header parameters to be applied to to the request. /// Keys may have 1 or more values associated. /// - public Multimap HeaderParameters { get; set; } + public Multimap HeaderParameters { get; set; } /// /// Form parameters to be sent along with the request. /// - public Dictionary FormParameters { get; set; } + public Dictionary FormParameters { get; set; } /// /// File parameters to be sent along with the request. /// - public Dictionary FileParameters { get; set; } + public Dictionary FileParameters { get; set; } /// /// Cookies to be sent along with the request. @@ -67,8 +67,8 @@ namespace Org.OpenAPITools.Client QueryParameters = new Multimap(); HeaderParameters = new Multimap(); FormParameters = new Dictionary(); - FileParameters = new Dictionary(); + FileParameters = new Dictionary(); Cookies = new List(); } } -} \ No newline at end of file +} From 463d905664498ac0c4006a4b888c39c9359dbcba Mon Sep 17 00:00:00 2001 From: Sascha Peilicke Date: Sun, 20 Jun 2021 16:03:44 +0200 Subject: [PATCH 152/192] Kotlin-Server: Optional metrics and upgrade to Ktor 1.5.4 (#9358) Use Gradle 6.9 and Kotlin 1.4.32. Generate Paths for other HTTP verbs (#828) and fix imports (#5640). Use 'object' when no parameters are used. Introduce 'featureMetrics' to control metrics plugin usage. Remove HOCON configuration parsing. This is provided by `Application.environment.config already` and removes a dependency. Resolves #9087, resolves #828, resolves #5640 Relates-To #5346 --- docs/generators/kotlin-server.md | 1 + .../languages/KotlinServerCodegen.java | 26 +++++- .../libraries/ktor/AppMain.kt.mustache | 83 ++++++++----------- .../libraries/ktor/Configuration.kt.mustache | 22 +++-- .../libraries/ktor/Paths.kt.mustache | 14 ++-- .../libraries/ktor/README.mustache | 4 +- .../kotlin-server/libraries/ktor/api.mustache | 41 ++------- .../libraries/ktor/build.gradle.mustache | 66 ++++++++------- .../petstore/kotlin-server/ktor/README.md | 4 +- .../petstore/kotlin-server/ktor/build.gradle | 60 +++++++------- .../kotlin/org/openapitools/server/AppMain.kt | 45 ++++------ .../org/openapitools/server/Configuration.kt | 17 ++-- .../kotlin/org/openapitools/server/Paths.kt | 28 +------ .../org/openapitools/server/apis/PetApi.kt | 28 ++----- .../org/openapitools/server/apis/StoreApi.kt | 28 ++----- .../org/openapitools/server/apis/UserApi.kt | 28 ++----- 16 files changed, 202 insertions(+), 293 deletions(-) diff --git a/docs/generators/kotlin-server.md b/docs/generators/kotlin-server.md index b45dc3ffb4d..7d9beb5ae10 100644 --- a/docs/generators/kotlin-server.md +++ b/docs/generators/kotlin-server.md @@ -17,6 +17,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |featureConditionalHeaders|Avoid sending content if client already has same content, by checking ETag or LastModified properties.| |false| |featureHSTS|Avoid sending content if client already has same content, by checking ETag or LastModified properties.| |true| |featureLocations|Generates routes in a typed way, for both: constructing URLs and reading the parameters.| |true| +|featureMetrics|Enables metrics feature.| |true| |groupId|Generated artifact package's organization (i.e. maven groupId).| |org.openapitools| |library|library template (sub-template)|
    **ktor**
    ktor framework
    |ktor| |modelMutable|Create mutable models| |false| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java index c5063d99185..3ad47e68fee 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java @@ -34,7 +34,6 @@ import java.util.List; import java.util.Map; public class KotlinServerCodegen extends AbstractKotlinCodegen { - public static final String DEFAULT_LIBRARY = Constants.KTOR; private final Logger LOGGER = LoggerFactory.getLogger(KotlinServerCodegen.class); private Boolean autoHeadFeatureEnabled = true; @@ -43,6 +42,7 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen { private Boolean corsFeatureEnabled = false; private Boolean compressionFeatureEnabled = true; private Boolean locationsFeatureEnabled = true; + private Boolean metricsFeatureEnabled = true; // This is here to potentially warn the user when an option is not supported by the target framework. private Map> optionsSupportedPerFramework = new ImmutableMap.Builder>() @@ -52,7 +52,8 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen { Constants.HSTS, Constants.CORS, Constants.COMPRESSION, - Constants.LOCATIONS + Constants.LOCATIONS, + Constants.METRICS )) .build(); @@ -115,6 +116,7 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen { addSwitch(Constants.CORS, Constants.CORS_DESC, getCorsFeatureEnabled()); addSwitch(Constants.COMPRESSION, Constants.COMPRESSION_DESC, getCompressionFeatureEnabled()); addSwitch(Constants.LOCATIONS, Constants.LOCATIONS_DESC, getLocationsFeatureEnabled()); + addSwitch(Constants.METRICS, Constants.METRICS_DESC, getMetricsFeatureEnabled()); } public Boolean getAutoHeadFeatureEnabled() { @@ -169,6 +171,14 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen { this.locationsFeatureEnabled = locationsFeatureEnabled; } + public Boolean getMetricsFeatureEnabled() { + return metricsFeatureEnabled; + } + + public void setMetricsFeatureEnabled(Boolean metricsEnabled) { + this.metricsFeatureEnabled = metricsEnabled; + } + public String getName() { return "kotlin-server"; } @@ -228,6 +238,12 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen { additionalProperties.put(Constants.LOCATIONS, getLocationsFeatureEnabled()); } + if (additionalProperties.containsKey(Constants.METRICS)) { + setMetricsFeatureEnabled(convertPropertyToBooleanAndWriteBack(Constants.METRICS)); + } else { + additionalProperties.put(Constants.METRICS, getMetricsFeatureEnabled()); + } + boolean generateApis = additionalProperties.containsKey(CodegenConstants.GENERATE_APIS) && (Boolean) additionalProperties.get(CodegenConstants.GENERATE_APIS); String packageFolder = (sourceFolder + File.separator + packageName).replace(".", File.separator); String resourcesFolder = "src/main/resources"; // not sure this can be user configurable. @@ -268,17 +284,19 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen { public final static String COMPRESSION_DESC = "Adds ability to compress outgoing content using gzip, deflate or custom encoder and thus reduce size of the response."; public final static String LOCATIONS = "featureLocations"; public final static String LOCATIONS_DESC = "Generates routes in a typed way, for both: constructing URLs and reading the parameters."; + public final static String METRICS = "featureMetrics"; + public final static String METRICS_DESC = "Enables metrics feature."; } @Override public void postProcess() { System.out.println("################################################################################"); System.out.println("# Thanks for using OpenAPI Generator. #"); - System.out.println("# Please consider donation to help us maintain this project \uD83D\uDE4F #"); + System.out.println("# Please consider donation to help us maintain this project \uD83D\uDE4F #"); System.out.println("# https://opencollective.com/openapi_generator/donate #"); System.out.println("# #"); System.out.println("# This generator's contributed by Jim Schubert (https://github.com/jimschubert)#"); - System.out.println("# Please support his work directly via https://patreon.com/jimschubert \uD83D\uDE4F #"); + System.out.println("# Please support his work directly via https://patreon.com/jimschubert \uD83D\uDE4F #"); System.out.println("################################################################################"); } } diff --git a/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/AppMain.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/AppMain.kt.mustache index 1556c44ae58..1dc57ad3b38 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/AppMain.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/AppMain.kt.mustache @@ -1,61 +1,47 @@ package {{packageName}} +{{#featureMetrics}} import com.codahale.metrics.Slf4jReporter +{{/featureMetrics}} +import io.ktor.application.* +import io.ktor.features.* +import io.ktor.gson.* +import io.ktor.http.* +{{#featureLocations}} +import io.ktor.locations.* +{{/featureLocations}} +{{#featureMetrics}} +import io.ktor.metrics.dropwizard.* +import java.util.concurrent.TimeUnit +{{/featureMetrics}} +import io.ktor.routing.* +import io.ktor.util.* +{{#hasAuthMethods}} import com.typesafe.config.ConfigFactory -import io.ktor.application.Application -import io.ktor.application.ApplicationStopping -import io.ktor.application.install -import io.ktor.application.log +import io.ktor.auth.* import io.ktor.client.HttpClient import io.ktor.client.engine.apache.Apache import io.ktor.config.HoconApplicationConfig -{{#featureAutoHead}} -import io.ktor.features.AutoHeadResponse -{{/featureAutoHead}} -{{#featureCompression}} -import io.ktor.features.Compression -{{/featureCompression}} -{{#featureCORS}} -import io.ktor.features.CORS -{{/featureCORS}} -{{#featureConditionalHeaders}} -import io.ktor.features.ConditionalHeaders -{{/featureConditionalHeaders}} -import io.ktor.features.ContentNegotiation -import io.ktor.features.DefaultHeaders -{{#featureHSTS}} -import io.ktor.features.HSTS -{{/featureHSTS}} -import io.ktor.gson.GsonConverter -import io.ktor.http.ContentType -{{#featureLocations}} -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.Locations -{{/featureLocations}} -import io.ktor.routing.Routing -import java.util.concurrent.TimeUnit -{{#hasAuthMethods}} -import io.ktor.auth.Authentication -import io.ktor.auth.oauth -import io.ktor.metrics.dropwizard.DropwizardMetrics -import org.openapitools.server.infrastructure.ApiKeyCredential -import org.openapitools.server.infrastructure.ApiPrincipal -import org.openapitools.server.infrastructure.apiKeyAuth +import org.openapitools.server.infrastructure.* {{/hasAuthMethods}} {{#generateApis}}{{#apiInfo}}{{#apis}}import {{apiPackage}}.{{classname}} {{/apis}}{{/apiInfo}}{{/generateApis}} +{{#hasAuthMethods}} internal val settings = HoconApplicationConfig(ConfigFactory.defaultApplication(HTTP::class.java.classLoader)) object HTTP { val client = HttpClient(Apache) } +{{/hasAuthMethods}} +@KtorExperimentalAPI {{#featureLocations}} @KtorExperimentalLocationsAPI {{/featureLocations}} fun Application.main() { install(DefaultHeaders) + {{#featureMetrics}} install(DropwizardMetrics) { val reporter = Slf4jReporter.forRegistry(registry) .outputTo(log) @@ -64,27 +50,28 @@ fun Application.main() { .build() reporter.start(10, TimeUnit.SECONDS) } + {{/featureMetrics}} {{#generateApis}} install(ContentNegotiation) { register(ContentType.Application.Json, GsonConverter()) } {{#featureAutoHead}} - install(AutoHeadResponse) // see http://ktor.io/features/autoheadresponse.html + install(AutoHeadResponse) // see https://ktor.io/docs/autoheadresponse.html {{/featureAutoHead}} {{#featureConditionalHeaders}} - install(ConditionalHeaders) // see http://ktor.io/features/conditional-headers.html + install(ConditionalHeaders) // see https://ktor.io/docs/conditional-headers.html {{/featureConditionalHeaders}} - {{#featureHSTS}} - install(HSTS, ApplicationHstsConfiguration()) // see http://ktor.io/features/hsts.html - {{/featureHSTS}} - {{#featureCORS}} - install(CORS, ApplicationCORSConfiguration()) // see http://ktor.io/features/cors.html - {{/featureCORS}} {{#featureCompression}} - install(Compression, ApplicationCompressionConfiguration()) // see http://ktor.io/features/compression.html + install(Compression, ApplicationCompressionConfiguration()) // see https://ktor.io/docs/compression.html {{/featureCompression}} + {{#featureCORS}} + install(CORS, ApplicationCORSConfiguration()) // see https://ktor.io/docs/cors.html + {{/featureCORS}} + {{#featureHSTS}} + install(HSTS, ApplicationHstsConfiguration()) // see https://ktor.io/docs/hsts.html + {{/featureHSTS}} {{#featureLocations}} - install(Locations) // see http://ktor.io/features/locations.html + install(Locations) // see https://ktor.io/docs/features-locations.html {{/featureLocations}} {{#hasAuthMethods}} install(Authentication) { @@ -140,8 +127,4 @@ fun Application.main() { } {{/generateApis}} - - environment.monitor.subscribe(ApplicationStopping) { - HTTP.client.close() - } } diff --git a/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/Configuration.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/Configuration.kt.mustache index a8956ec5905..76a07ce208f 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/Configuration.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/Configuration.kt.mustache @@ -1,16 +1,14 @@ package {{packageName}} // Use this file to hold package-level internal functions that return receiver object passed to the `install` method. -import io.ktor.auth.OAuthServerSettings -import io.ktor.features.Compression -import io.ktor.features.HSTS -import io.ktor.features.deflate -import io.ktor.features.gzip -import io.ktor.features.minimumSize -import io.ktor.http.HttpMethod +import io.ktor.auth.* +import io.ktor.features.* +import io.ktor.http.* +import io.ktor.util.* +import java.time.Duration import java.util.concurrent.TimeUnit - {{#featureCORS}} + /** * Application block for [CORS] configuration. * @@ -33,8 +31,8 @@ internal fun ApplicationCORSConfiguration(): CORS.Configuration.() -> Unit { } } {{/featureCORS}} - {{#featureHSTS}} + /** * Application block for [HSTS] configuration. * @@ -54,8 +52,8 @@ internal fun ApplicationHstsConfiguration(): HSTS.Configuration.() -> Unit { } } {{/featureHSTS}} - {{#featureCompression}} + /** * Application block for [Compression] configuration. * @@ -99,8 +97,8 @@ val ApplicationAuthProviders: Map = listOflicenseInfo}} package {{packageName}} -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.Location +import io.ktor.locations.* import {{packageName}}.models.* {{#imports}}import {{import}} {{/imports}} {{#apiInfo}} +@KtorExperimentalLocationsAPI object Paths { {{#apis}} {{#operations}} {{#operation}} - /** - * {{summary}} + /**{{#summary}} + * {{summary}}{{/summary}} * {{#unescapedNotes}}{{.}}{{/unescapedNotes}} {{#allParams}}* @param {{paramName}} {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} {{/allParams}}*/ - @KtorExperimentalLocationsAPI + {{#hasParams}} @Location("{{path}}") class {{operationId}}({{#allParams}}val {{paramName}}: {{{dataType}}}{{^required}}? = null{{/required}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) + {{/hasParams}} + {{^hasParams}} + @Location("{{path}}") object {{operationId}} + {{/hasParams}} {{/operation}} {{/operations}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/README.mustache b/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/README.mustache index f12148e1d39..2763aa259aa 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/README.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/README.mustache @@ -8,8 +8,8 @@ Generated by OpenAPI Generator {{generatorVersion}}{{^hideGenerationTimestamp}} ## Requires -* Kotlin 1.4.31 -* Gradle 6.8.2 +* Kotlin 1.4.32 +* Gradle 6.9 ## Build diff --git a/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/api.mustache index a3d8c124e81..ba7eccdee56 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/api.mustache @@ -2,50 +2,27 @@ package {{apiPackage}} import com.google.gson.Gson -import io.ktor.application.call -import io.ktor.auth.UserIdPrincipal -import io.ktor.auth.authentication -import io.ktor.auth.authenticate -import io.ktor.auth.OAuthAccessTokenResponse -import io.ktor.auth.OAuthServerSettings -import io.ktor.http.ContentType -import io.ktor.http.HttpStatusCode -import io.ktor.response.respond -import io.ktor.response.respondText -import io.ktor.routing.Route +import io.ktor.application.* +import io.ktor.auth.* +import io.ktor.http.* +import io.ktor.response.* {{#featureLocations}} import {{packageName}}.Paths -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.delete -import io.ktor.locations.get -import io.ktor.locations.post -import io.ktor.locations.put -import io.ktor.locations.options -import io.ktor.locations.head +import io.ktor.locations.* {{/featureLocations}} -{{^featureLocations}} -import io.ktor.routing.delete -import io.ktor.routing.get -import io.ktor.routing.post -import io.ktor.routing.put -import io.ktor.routing.options -import io.ktor.routing.head -import io.ktor.routing.route -{{/featureLocations}} - +import io.ktor.routing.* import {{packageName}}.infrastructure.ApiPrincipal - - {{#imports}}import {{import}} {{/imports}} {{#operations}} - {{#featureLocations}} +{{#featureLocations}} @KtorExperimentalLocationsAPI - {{/featureLocations}} +{{/featureLocations}} fun Route.{{classname}}() { val gson = Gson() val empty = mutableMapOf() + {{#operation}} {{#hasAuthMethods}} {{#authMethods}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/build.gradle.mustache b/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/build.gradle.mustache index 173686fdf88..8d8948d689c 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-server/libraries/ktor/build.gradle.mustache @@ -1,37 +1,35 @@ -group '{{groupId}}' -version '{{artifactVersion}}' +group "{{groupId}}" +version "{{artifactVersion}}" wrapper { - gradleVersion = '6.8.2' + gradleVersion = "6.9" distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.4.31' - ext.ktor_version = '1.5.2' - ext.shadow_version = '2.0.3' + ext.kotlin_version = "1.4.32" + ext.ktor_version = "1.5.4" + ext.shadow_version = "6.1.0" repositories { maven { url "https://repo1.maven.org/maven2" } - maven { - url = "https://plugins.gradle.org/m2/" - } + maven { url "https://plugins.gradle.org/m2/" } } dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "com.github.jengelman.gradle.plugins:shadow:$shadow_version" + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") + classpath("com.github.jengelman.gradle.plugins:shadow:$shadow_version") } } -apply plugin: 'java' -apply plugin: 'kotlin' -apply plugin: 'application' +apply plugin: "java" +apply plugin: "kotlin" +apply plugin: "application" mainClassName = "io.ktor.server.netty.DevelopmentEngine" -// Initialization order with shadow 2.0.1 and Gradle 6.8.2 is weird. +// Initialization order with shadow 2.0.1 and Gradle 6.9 is weird. // See https://github.com/johnrengelman/shadow/issues/336#issuecomment-355402508 -apply plugin: 'com.github.johnrengelman.shadow' +apply plugin: "com.github.johnrengelman.shadow" sourceCompatibility = 1.8 @@ -44,28 +42,36 @@ compileTestKotlin { } shadowJar { - baseName = '{{artifactId}}' + baseName = "{{artifactId}}" classifier = null version = null } repositories { - maven { url "https://repo1.maven.org/maven2" } - maven { url "https://dl.bintray.com/kotlin/ktor" } - maven { url "https://dl.bintray.com/kotlin/kotlinx" } + maven { setUrl("https://repo1.maven.org/maven2") } + maven { setUrl("https://dl.bintray.com/kotlin/ktor") } + maven { setUrl("https://dl.bintray.com/kotlin/kotlinx") } } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - compile "io.ktor:ktor-server-netty:$ktor_version" - compile "io.ktor:ktor-metrics:$ktor_version" - compile "io.ktor:ktor-auth:$ktor_version" + implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version") + implementation("ch.qos.logback:logback-classic:1.2.1") +{{#hasAuthMethods}} + implementation("com.typesafe:config:1.4.1") +{{/hasAuthMethods}} + implementation("io.ktor:ktor-auth:$ktor_version") +{{#hasAuthMethods}} + implementation("io.ktor:ktor-client-apache:$ktor_version") +{{/hasAuthMethods}} + implementation("io.ktor:ktor-gson:$ktor_version") {{#featureLocations}} - compile "io.ktor:ktor-locations:$ktor_version" + implementation("io.ktor:ktor-locations:$ktor_version") {{/featureLocations}} - compile "io.ktor:ktor-gson:$ktor_version" - compile "io.ktor:ktor-client-core:$ktor_version" - compile "io.ktor:ktor-client-apache:$ktor_version" - compile "ch.qos.logback:logback-classic:1.2.1" - testCompile group: 'junit', name: 'junit', version: '4.13' +{{#featureMetrics}} + implementation("io.dropwizard.metrics:metrics-core:4.1.18") + implementation("io.ktor:ktor-metrics:$ktor_version") +{{/featureMetrics}} + implementation("io.ktor:ktor-server-netty:$ktor_version") + + testImplementation("junit:junit:4.13.2") } diff --git a/samples/server/petstore/kotlin-server/ktor/README.md b/samples/server/petstore/kotlin-server/ktor/README.md index 0312e13cdf7..c18e00d6d35 100644 --- a/samples/server/petstore/kotlin-server/ktor/README.md +++ b/samples/server/petstore/kotlin-server/ktor/README.md @@ -6,8 +6,8 @@ Generated by OpenAPI Generator 5.2.0-SNAPSHOT. ## Requires -* Kotlin 1.4.31 -* Gradle 6.8.2 +* Kotlin 1.4.32 +* Gradle 6.9 ## Build diff --git a/samples/server/petstore/kotlin-server/ktor/build.gradle b/samples/server/petstore/kotlin-server/ktor/build.gradle index c69f129160f..ebf0c988068 100644 --- a/samples/server/petstore/kotlin-server/ktor/build.gradle +++ b/samples/server/petstore/kotlin-server/ktor/build.gradle @@ -1,37 +1,35 @@ -group 'org.openapitools' -version '1.0.0' +group "org.openapitools" +version "1.0.0" wrapper { - gradleVersion = '6.8.2' + gradleVersion = "6.9" distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip" } buildscript { - ext.kotlin_version = '1.4.31' - ext.ktor_version = '1.5.2' - ext.shadow_version = '2.0.3' + ext.kotlin_version = "1.4.32" + ext.ktor_version = "1.5.4" + ext.shadow_version = "6.1.0" repositories { maven { url "https://repo1.maven.org/maven2" } - maven { - url = "https://plugins.gradle.org/m2/" - } + maven { url "https://plugins.gradle.org/m2/" } } dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "com.github.jengelman.gradle.plugins:shadow:$shadow_version" + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") + classpath("com.github.jengelman.gradle.plugins:shadow:$shadow_version") } } -apply plugin: 'java' -apply plugin: 'kotlin' -apply plugin: 'application' +apply plugin: "java" +apply plugin: "kotlin" +apply plugin: "application" mainClassName = "io.ktor.server.netty.DevelopmentEngine" -// Initialization order with shadow 2.0.1 and Gradle 6.8.2 is weird. +// Initialization order with shadow 2.0.1 and Gradle 6.9 is weird. // See https://github.com/johnrengelman/shadow/issues/336#issuecomment-355402508 -apply plugin: 'com.github.johnrengelman.shadow' +apply plugin: "com.github.johnrengelman.shadow" sourceCompatibility = 1.8 @@ -44,26 +42,28 @@ compileTestKotlin { } shadowJar { - baseName = 'kotlin-server' + baseName = "kotlin-server" classifier = null version = null } repositories { - maven { url "https://repo1.maven.org/maven2" } - maven { url "https://dl.bintray.com/kotlin/ktor" } - maven { url "https://dl.bintray.com/kotlin/kotlinx" } + maven { setUrl("https://repo1.maven.org/maven2") } + maven { setUrl("https://dl.bintray.com/kotlin/ktor") } + maven { setUrl("https://dl.bintray.com/kotlin/kotlinx") } } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - compile "io.ktor:ktor-server-netty:$ktor_version" - compile "io.ktor:ktor-metrics:$ktor_version" - compile "io.ktor:ktor-auth:$ktor_version" - compile "io.ktor:ktor-locations:$ktor_version" - compile "io.ktor:ktor-gson:$ktor_version" - compile "io.ktor:ktor-client-core:$ktor_version" - compile "io.ktor:ktor-client-apache:$ktor_version" - compile "ch.qos.logback:logback-classic:1.2.1" - testCompile group: 'junit', name: 'junit', version: '4.13' + implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version") + implementation("ch.qos.logback:logback-classic:1.2.1") + implementation("com.typesafe:config:1.4.1") + implementation("io.ktor:ktor-auth:$ktor_version") + implementation("io.ktor:ktor-client-apache:$ktor_version") + implementation("io.ktor:ktor-gson:$ktor_version") + implementation("io.ktor:ktor-locations:$ktor_version") + implementation("io.dropwizard.metrics:metrics-core:4.1.18") + implementation("io.ktor:ktor-metrics:$ktor_version") + implementation("io.ktor:ktor-server-netty:$ktor_version") + + testImplementation("junit:junit:4.13.2") } diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/AppMain.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/AppMain.kt index 54658d6ba5d..9b0468fb568 100644 --- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/AppMain.kt +++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/AppMain.kt @@ -1,31 +1,21 @@ package org.openapitools.server import com.codahale.metrics.Slf4jReporter +import io.ktor.application.* +import io.ktor.features.* +import io.ktor.gson.* +import io.ktor.http.* +import io.ktor.locations.* +import io.ktor.metrics.dropwizard.* +import java.util.concurrent.TimeUnit +import io.ktor.routing.* +import io.ktor.util.* import com.typesafe.config.ConfigFactory -import io.ktor.application.Application -import io.ktor.application.ApplicationStopping -import io.ktor.application.install -import io.ktor.application.log +import io.ktor.auth.* import io.ktor.client.HttpClient import io.ktor.client.engine.apache.Apache import io.ktor.config.HoconApplicationConfig -import io.ktor.features.AutoHeadResponse -import io.ktor.features.Compression -import io.ktor.features.ContentNegotiation -import io.ktor.features.DefaultHeaders -import io.ktor.features.HSTS -import io.ktor.gson.GsonConverter -import io.ktor.http.ContentType -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.Locations -import io.ktor.routing.Routing -import java.util.concurrent.TimeUnit -import io.ktor.auth.Authentication -import io.ktor.auth.oauth -import io.ktor.metrics.dropwizard.DropwizardMetrics -import org.openapitools.server.infrastructure.ApiKeyCredential -import org.openapitools.server.infrastructure.ApiPrincipal -import org.openapitools.server.infrastructure.apiKeyAuth +import org.openapitools.server.infrastructure.* import org.openapitools.server.apis.PetApi import org.openapitools.server.apis.StoreApi import org.openapitools.server.apis.UserApi @@ -37,6 +27,7 @@ object HTTP { val client = HttpClient(Apache) } +@KtorExperimentalAPI @KtorExperimentalLocationsAPI fun Application.main() { install(DefaultHeaders) @@ -51,10 +42,10 @@ fun Application.main() { install(ContentNegotiation) { register(ContentType.Application.Json, GsonConverter()) } - install(AutoHeadResponse) // see http://ktor.io/features/autoheadresponse.html - install(HSTS, ApplicationHstsConfiguration()) // see http://ktor.io/features/hsts.html - install(Compression, ApplicationCompressionConfiguration()) // see http://ktor.io/features/compression.html - install(Locations) // see http://ktor.io/features/locations.html + install(AutoHeadResponse) // see https://ktor.io/docs/autoheadresponse.html + install(Compression, ApplicationCompressionConfiguration()) // see https://ktor.io/docs/compression.html + install(HSTS, ApplicationHstsConfiguration()) // see https://ktor.io/docs/hsts.html + install(Locations) // see https://ktor.io/docs/features-locations.html install(Authentication) { // "Implement API key auth (api_key) for parameter name 'api_key'." apiKeyAuth("api_key") { @@ -80,8 +71,4 @@ fun Application.main() { UserApi() } - - environment.monitor.subscribe(ApplicationStopping) { - HTTP.client.close() - } } diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/Configuration.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/Configuration.kt index 8483e64319d..93aa1c72822 100644 --- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/Configuration.kt +++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/Configuration.kt @@ -1,16 +1,13 @@ package org.openapitools.server // Use this file to hold package-level internal functions that return receiver object passed to the `install` method. -import io.ktor.auth.OAuthServerSettings -import io.ktor.features.Compression -import io.ktor.features.HSTS -import io.ktor.features.deflate -import io.ktor.features.gzip -import io.ktor.features.minimumSize -import io.ktor.http.HttpMethod +import io.ktor.auth.* +import io.ktor.features.* +import io.ktor.http.* +import io.ktor.util.* +import java.time.Duration import java.util.concurrent.TimeUnit - /** * Application block for [HSTS] configuration. * @@ -67,8 +64,8 @@ val ApplicationAuthProviders: Map = listOf) /** @@ -46,7 +43,6 @@ object Paths { * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. * @param tags Tags to filter by */ - @KtorExperimentalLocationsAPI @Location("/pet/findByTags") class findPetsByTags(val tags: kotlin.collections.List) /** @@ -54,7 +50,6 @@ object Paths { * Returns a single pet * @param petId ID of pet to return */ - @KtorExperimentalLocationsAPI @Location("/pet/{petId}") class getPetById(val petId: kotlin.Long) /** @@ -62,7 +57,6 @@ object Paths { * * @param body Pet object that needs to be added to the store */ - @KtorExperimentalLocationsAPI @Location("/pet") class updatePet(val body: Pet) /** @@ -72,7 +66,6 @@ object Paths { * @param name Updated name of the pet (optional) * @param status Updated status of the pet (optional) */ - @KtorExperimentalLocationsAPI @Location("/pet/{petId}") class updatePetWithForm(val petId: kotlin.Long, val name: kotlin.String? = null, val status: kotlin.String? = null) /** @@ -82,7 +75,6 @@ object Paths { * @param additionalMetadata Additional data to pass to server (optional) * @param file file to upload (optional) */ - @KtorExperimentalLocationsAPI @Location("/pet/{petId}/uploadImage") class uploadFile(val petId: kotlin.Long, val additionalMetadata: kotlin.String? = null, val file: java.io.File? = null) /** @@ -90,22 +82,19 @@ object Paths { * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors * @param orderId ID of the order that needs to be deleted */ - @KtorExperimentalLocationsAPI @Location("/store/order/{orderId}") class deleteOrder(val orderId: kotlin.String) /** * Returns pet inventories by status * Returns a map of status codes to quantities */ - @KtorExperimentalLocationsAPI - @Location("/store/inventory") class getInventory() + @Location("/store/inventory") object getInventory /** * Find purchase order by ID * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions * @param orderId ID of pet that needs to be fetched */ - @KtorExperimentalLocationsAPI @Location("/store/order/{orderId}") class getOrderById(val orderId: kotlin.Long) /** @@ -113,7 +102,6 @@ object Paths { * * @param body order placed for purchasing the pet */ - @KtorExperimentalLocationsAPI @Location("/store/order") class placeOrder(val body: Order) /** @@ -121,7 +109,6 @@ object Paths { * This can only be done by the logged in user. * @param body Created user object */ - @KtorExperimentalLocationsAPI @Location("/user") class createUser(val body: User) /** @@ -129,7 +116,6 @@ object Paths { * * @param body List of user object */ - @KtorExperimentalLocationsAPI @Location("/user/createWithArray") class createUsersWithArrayInput(val body: kotlin.collections.List) /** @@ -137,7 +123,6 @@ object Paths { * * @param body List of user object */ - @KtorExperimentalLocationsAPI @Location("/user/createWithList") class createUsersWithListInput(val body: kotlin.collections.List) /** @@ -145,7 +130,6 @@ object Paths { * This can only be done by the logged in user. * @param username The name that needs to be deleted */ - @KtorExperimentalLocationsAPI @Location("/user/{username}") class deleteUser(val username: kotlin.String) /** @@ -153,7 +137,6 @@ object Paths { * * @param username The name that needs to be fetched. Use user1 for testing. */ - @KtorExperimentalLocationsAPI @Location("/user/{username}") class getUserByName(val username: kotlin.String) /** @@ -162,15 +145,13 @@ object Paths { * @param username The user name for login * @param password The password for login in clear text */ - @KtorExperimentalLocationsAPI @Location("/user/login") class loginUser(val username: kotlin.String, val password: kotlin.String) /** * Logs out current logged in user session * */ - @KtorExperimentalLocationsAPI - @Location("/user/logout") class logoutUser() + @Location("/user/logout") object logoutUser /** * Updated user @@ -178,7 +159,6 @@ object Paths { * @param username name that need to be deleted * @param body Updated user object */ - @KtorExperimentalLocationsAPI @Location("/user/{username}") class updateUser(val username: kotlin.String, val body: User) } diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/apis/PetApi.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/apis/PetApi.kt index 9226541eb34..95f5d7fb880 100644 --- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/apis/PetApi.kt +++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/apis/PetApi.kt @@ -12,29 +12,14 @@ package org.openapitools.server.apis import com.google.gson.Gson -import io.ktor.application.call -import io.ktor.auth.UserIdPrincipal -import io.ktor.auth.authentication -import io.ktor.auth.authenticate -import io.ktor.auth.OAuthAccessTokenResponse -import io.ktor.auth.OAuthServerSettings -import io.ktor.http.ContentType -import io.ktor.http.HttpStatusCode -import io.ktor.response.respond -import io.ktor.response.respondText -import io.ktor.routing.Route +import io.ktor.application.* +import io.ktor.auth.* +import io.ktor.http.* +import io.ktor.response.* import org.openapitools.server.Paths -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.delete -import io.ktor.locations.get -import io.ktor.locations.post -import io.ktor.locations.put -import io.ktor.locations.options -import io.ktor.locations.head - +import io.ktor.locations.* +import io.ktor.routing.* import org.openapitools.server.infrastructure.ApiPrincipal - - import org.openapitools.server.models.ApiResponse import org.openapitools.server.models.Pet @@ -42,6 +27,7 @@ import org.openapitools.server.models.Pet fun Route.PetApi() { val gson = Gson() val empty = mutableMapOf() + authenticate("petstore_auth") { post { val principal = call.authentication.principal()!! diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/apis/StoreApi.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/apis/StoreApi.kt index 2e5f4ab8b96..b195797a020 100644 --- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/apis/StoreApi.kt +++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/apis/StoreApi.kt @@ -12,35 +12,21 @@ package org.openapitools.server.apis import com.google.gson.Gson -import io.ktor.application.call -import io.ktor.auth.UserIdPrincipal -import io.ktor.auth.authentication -import io.ktor.auth.authenticate -import io.ktor.auth.OAuthAccessTokenResponse -import io.ktor.auth.OAuthServerSettings -import io.ktor.http.ContentType -import io.ktor.http.HttpStatusCode -import io.ktor.response.respond -import io.ktor.response.respondText -import io.ktor.routing.Route +import io.ktor.application.* +import io.ktor.auth.* +import io.ktor.http.* +import io.ktor.response.* import org.openapitools.server.Paths -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.delete -import io.ktor.locations.get -import io.ktor.locations.post -import io.ktor.locations.put -import io.ktor.locations.options -import io.ktor.locations.head - +import io.ktor.locations.* +import io.ktor.routing.* import org.openapitools.server.infrastructure.ApiPrincipal - - import org.openapitools.server.models.Order @KtorExperimentalLocationsAPI fun Route.StoreApi() { val gson = Gson() val empty = mutableMapOf() + delete { call.respond(HttpStatusCode.NotImplemented) } diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/apis/UserApi.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/apis/UserApi.kt index e248d75ae0c..1871c4b3097 100644 --- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/apis/UserApi.kt +++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/apis/UserApi.kt @@ -12,35 +12,21 @@ package org.openapitools.server.apis import com.google.gson.Gson -import io.ktor.application.call -import io.ktor.auth.UserIdPrincipal -import io.ktor.auth.authentication -import io.ktor.auth.authenticate -import io.ktor.auth.OAuthAccessTokenResponse -import io.ktor.auth.OAuthServerSettings -import io.ktor.http.ContentType -import io.ktor.http.HttpStatusCode -import io.ktor.response.respond -import io.ktor.response.respondText -import io.ktor.routing.Route +import io.ktor.application.* +import io.ktor.auth.* +import io.ktor.http.* +import io.ktor.response.* import org.openapitools.server.Paths -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.delete -import io.ktor.locations.get -import io.ktor.locations.post -import io.ktor.locations.put -import io.ktor.locations.options -import io.ktor.locations.head - +import io.ktor.locations.* +import io.ktor.routing.* import org.openapitools.server.infrastructure.ApiPrincipal - - import org.openapitools.server.models.User @KtorExperimentalLocationsAPI fun Route.UserApi() { val gson = Gson() val empty = mutableMapOf() + post { call.respond(HttpStatusCode.NotImplemented) } From ccd031a3dade070bb470a6a9e4c1eeff33eb1371 Mon Sep 17 00:00:00 2001 From: Mehmet YUCE Date: Sun, 20 Jun 2021 17:13:38 +0300 Subject: [PATCH 153/192] Continuing from #1317 and its PRs for pistache server string enum code generation (#9786) * Continuing from #1317 and its PRs for pistache server string enum code generation; * A class that has an `anyOf` specification, in cpp side will have no members: in stead it should have a member having the type `classname_anyOf` * Thus, Its `==` operator is not present or wrongly filled * An string enum, should have a better usage, hence the `setEnumValue` * this PR, is a brigde between `stringenumclassname_anyOf` and `stringenumclassname` * `anyOf` specification is not just about `Enums`, so a better handling is needed from mustache templates, hence new template model parameter `isStringEnumContainer` * PR fix: muttleyxd: `double semicolon` * PR fix: wing328: `I think std::string is C++ only. What about adding x-is-string-enum-container instead in the postProcessModel operation in the C++ pistache server generator?` * PR fix: wing328: `I think std::string is C++ only...` after fix get latest codes and then generate samples Co-authored-by: Mehmet Fatih --- .../languages/CppPistacheServerCodegen.java | 8 ++++ .../cpp-pistache-server/model-header.mustache | 15 +++++--- .../cpp-pistache-server/model-source.mustache | 37 ++++++++++++++----- .../cpp-pistache/model/ApiResponse.cpp | 5 +-- .../petstore/cpp-pistache/model/ApiResponse.h | 1 + .../petstore/cpp-pistache/model/Category.cpp | 4 +- .../petstore/cpp-pistache/model/Category.h | 1 + .../petstore/cpp-pistache/model/Order.cpp | 8 +--- .../petstore/cpp-pistache/model/Order.h | 1 + .../petstore/cpp-pistache/model/Pet.cpp | 12 ++---- .../server/petstore/cpp-pistache/model/Pet.h | 1 + .../petstore/cpp-pistache/model/Tag.cpp | 4 +- .../server/petstore/cpp-pistache/model/Tag.h | 1 + .../petstore/cpp-pistache/model/User.cpp | 10 +---- .../server/petstore/cpp-pistache/model/User.h | 1 + 15 files changed, 59 insertions(+), 50 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java index cb21ea5a6de..5d199f8e0fb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java @@ -218,6 +218,14 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen { } } + if(!codegenModel.isEnum + && codegenModel.anyOf.size()>1 + && codegenModel.anyOf.contains("std::string") + && !codegenModel.anyOf.contains("AnyType") + && codegenModel.interfaces.size()==1 + ){ + codegenModel.vendorExtensions.put("x-is-string-enum-container",true); + } return codegenModel; } diff --git a/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache index 656109b155e..ccd8e876af3 100644 --- a/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache @@ -70,19 +70,22 @@ public: {{#isEnum}} {{classname}}::e{{classname}} getValue() const; void setValue({{classname}}::e{{classname}} value); - {{/isEnum}} - + {{/isEnum}}{{#vendorExtensions.x-is-string-enum-container}}{{#anyOf}}{{#-first}} + {{{this}}} getValue() const; + void setValue({{{this}}} value); + {{{this}}}::e{{{this}}} getEnumValue() const; + void setEnumValue({{{this}}}::e{{{this}}} value);{{/-first}}{{/anyOf}}{{/vendorExtensions.x-is-string-enum-container}} friend void to_json(nlohmann::json& j, const {{classname}}& o); - friend void from_json(const nlohmann::json& j, {{classname}}& o); + friend void from_json(const nlohmann::json& j, {{classname}}& o);{{#vendorExtensions.x-is-string-enum-container}}{{#anyOf}}{{#-first}} + friend void to_json(nlohmann::json& j, const {{{this}}}& o); + friend void from_json(const nlohmann::json& j, {{{this}}}& o);{{/-first}}{{/anyOf}}{{/vendorExtensions.x-is-string-enum-container}} protected: {{#vars}} {{{dataType}}} m_{{name}}; {{^required}} bool m_{{name}}IsSet;{{/required}} {{/vars}} - {{#isEnum}} - {{classname}}::e{{classname}} m_value = {{classname}}::e{{classname}}::INVALID_VALUE_OPENAPI_GENERATED; - {{/isEnum}} + {{#isEnum}}{{classname}}::e{{classname}} m_value = {{classname}}::e{{classname}}::INVALID_VALUE_OPENAPI_GENERATED;{{/isEnum}}{{#vendorExtensions.x-is-string-enum-container}}{{#anyOf}}{{#-first}}{{{this}}} m_value;{{/-first}}{{/anyOf}}{{/vendorExtensions.x-is-string-enum-container}} }; } // namespace {{modelNamespace}} diff --git a/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-source.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-source.mustache index 8ef6abf0e4c..9ce767ed01b 100644 --- a/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-source.mustache @@ -60,10 +60,11 @@ bool {{classname}}::validate(std::stringstream& msg, const std::string& pathPref const std::string currentValuePath = _pathPrefix + ".{{nameInCamelCase}}"; {{> model-validation-body }} } - {{/hasValidation}}{{/isArray}} - {{/vars}} - {{/isEnum}} - + {{/hasValidation}}{{/isArray}}{{/vars}}{{/isEnum}}{{#vendorExtensions.x-is-string-enum-container}}{{#anyOf}}{{#-first}} + if (!m_value.validate(msg)) + { + success = false; + }{{/-first}}{{/anyOf}}{{/vendorExtensions.x-is-string-enum-container}} return success; } @@ -71,10 +72,10 @@ bool {{classname}}::operator==(const {{classname}}& rhs) const { return {{#isEnum}}getValue() == rhs.getValue(){{/isEnum}} - {{^isEnum}}{{#vars}} + {{^isEnum}}{{#hasVars}}{{#vars}} {{#required}}({{getter}}() == rhs.{{getter}}()){{/required}} {{^required}}((!{{nameInCamelCase}}IsSet() && !rhs.{{nameInCamelCase}}IsSet()) || ({{nameInCamelCase}}IsSet() && rhs.{{nameInCamelCase}}IsSet() && {{getter}}() == rhs.{{getter}}())){{/required}}{{^-last}} &&{{/-last}} - {{/vars}}{{/isEnum}} + {{/vars}}{{/hasVars}}{{^hasVars}}{{#vendorExtensions.x-is-string-enum-container}}{{#anyOf}}{{#-first}}getValue() == rhs.getValue(){{/-first}}{{/anyOf}}{{^anyOf}}true{{/anyOf}}{{/vendorExtensions.x-is-string-enum-container}}{{/hasVars}}{{/isEnum}} ; } @@ -103,7 +104,7 @@ void to_json(nlohmann::json& j, const {{classname}}& o) j = "{{value}}"; break; {{/enumVars}} - }{{/allowableValues}}{{/isEnum}} + }{{/allowableValues}}{{/isEnum}}{{#vendorExtensions.x-is-string-enum-container}}{{#anyOf}}{{#-first}}to_json(j, o.m_value);{{/-first}}{{/anyOf}}{{/vendorExtensions.x-is-string-enum-container}} } void from_json(const nlohmann::json& j, {{classname}}& o) @@ -127,7 +128,7 @@ void from_json(const nlohmann::json& j, {{classname}}& o) << " {{classname}}::e{{classname}}"; throw std::invalid_argument(ss.str()); } {{/-last}} -{{/enumVars}}{{/allowableValues}}{{/isEnum}} +{{/enumVars}}{{/allowableValues}}{{/isEnum}}{{#vendorExtensions.x-is-string-enum-container}}{{#anyOf}}{{#-first}}from_json(j, o.m_value);{{/-first}}{{/anyOf}}{{/vendorExtensions.x-is-string-enum-container}} } {{#vars}}{{{dataType}}} {{classname}}::{{getter}}() const @@ -156,7 +157,25 @@ void {{classname}}::unset{{name}}() void {{classname}}::setValue({{classname}}::e{{classname}} value) { m_value = value; -}{{/isEnum}} +}{{/isEnum}}{{#vendorExtensions.x-is-string-enum-container}}{{#anyOf}}{{#-first}}{{{this}}} {{classname}}::getValue() const +{ + return m_value; +} + +void {{classname}}::setValue({{{this}}} value) +{ + m_value = value; +} + +{{{this}}}::e{{{this}}} {{classname}}::getEnumValue() const +{ + return m_value.getValue(); +} + +void {{classname}}::setEnumValue({{{this}}}::e{{{this}}} value) +{ + m_value.setValue(value); +}{{/-first}}{{/anyOf}}{{/vendorExtensions.x-is-string-enum-container}} } // namespace {{modelNamespace}} diff --git a/samples/server/petstore/cpp-pistache/model/ApiResponse.cpp b/samples/server/petstore/cpp-pistache/model/ApiResponse.cpp index 049f6c19d6d..4050e84f8d1 100644 --- a/samples/server/petstore/cpp-pistache/model/ApiResponse.cpp +++ b/samples/server/petstore/cpp-pistache/model/ApiResponse.cpp @@ -49,10 +49,7 @@ bool ApiResponse::validate(std::stringstream& msg, const std::string& pathPrefix bool success = true; const std::string _pathPrefix = pathPrefix.empty() ? "ApiResponse" : pathPrefix; - - - - + return success; } diff --git a/samples/server/petstore/cpp-pistache/model/ApiResponse.h b/samples/server/petstore/cpp-pistache/model/ApiResponse.h index c4227b21876..f9d9308ef0a 100644 --- a/samples/server/petstore/cpp-pistache/model/ApiResponse.h +++ b/samples/server/petstore/cpp-pistache/model/ApiResponse.h @@ -89,6 +89,7 @@ protected: bool m_TypeIsSet; std::string m_Message; bool m_MessageIsSet; + }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/Category.cpp b/samples/server/petstore/cpp-pistache/model/Category.cpp index deb18ff9bb7..114adb15ee6 100644 --- a/samples/server/petstore/cpp-pistache/model/Category.cpp +++ b/samples/server/petstore/cpp-pistache/model/Category.cpp @@ -47,9 +47,7 @@ bool Category::validate(std::stringstream& msg, const std::string& pathPrefix) c bool success = true; const std::string _pathPrefix = pathPrefix.empty() ? "Category" : pathPrefix; - - - + return success; } diff --git a/samples/server/petstore/cpp-pistache/model/Category.h b/samples/server/petstore/cpp-pistache/model/Category.h index 71682c36c3b..eede5172427 100644 --- a/samples/server/petstore/cpp-pistache/model/Category.h +++ b/samples/server/petstore/cpp-pistache/model/Category.h @@ -80,6 +80,7 @@ protected: bool m_IdIsSet; std::string m_Name; bool m_NameIsSet; + }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/Order.cpp b/samples/server/petstore/cpp-pistache/model/Order.cpp index 2d04f0ac637..33d08aad068 100644 --- a/samples/server/petstore/cpp-pistache/model/Order.cpp +++ b/samples/server/petstore/cpp-pistache/model/Order.cpp @@ -55,13 +55,7 @@ bool Order::validate(std::stringstream& msg, const std::string& pathPrefix) cons bool success = true; const std::string _pathPrefix = pathPrefix.empty() ? "Order" : pathPrefix; - - - - - - - + return success; } diff --git a/samples/server/petstore/cpp-pistache/model/Order.h b/samples/server/petstore/cpp-pistache/model/Order.h index 86a6e35f87f..f725c509990 100644 --- a/samples/server/petstore/cpp-pistache/model/Order.h +++ b/samples/server/petstore/cpp-pistache/model/Order.h @@ -116,6 +116,7 @@ protected: bool m_StatusIsSet; bool m_Complete; bool m_CompleteIsSet; + }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/Pet.cpp b/samples/server/petstore/cpp-pistache/model/Pet.cpp index 9c7ba886a44..51d97b41979 100644 --- a/samples/server/petstore/cpp-pistache/model/Pet.cpp +++ b/samples/server/petstore/cpp-pistache/model/Pet.cpp @@ -50,10 +50,7 @@ bool Pet::validate(std::stringstream& msg, const std::string& pathPrefix) const bool success = true; const std::string _pathPrefix = pathPrefix.empty() ? "Pet" : pathPrefix; - - - - + /* PhotoUrls */ { const std::vector& value = m_PhotoUrls; @@ -74,8 +71,7 @@ bool Pet::validate(std::stringstream& msg, const std::string& pathPrefix) const } } - - + if (tagsIsSet()) { const std::vector& value = m_Tags; @@ -96,9 +92,7 @@ bool Pet::validate(std::stringstream& msg, const std::string& pathPrefix) const } } - - - + return success; } diff --git a/samples/server/petstore/cpp-pistache/model/Pet.h b/samples/server/petstore/cpp-pistache/model/Pet.h index af773cb3e5c..c3cee2e2b4d 100644 --- a/samples/server/petstore/cpp-pistache/model/Pet.h +++ b/samples/server/petstore/cpp-pistache/model/Pet.h @@ -115,6 +115,7 @@ protected: bool m_TagsIsSet; std::string m_Status; bool m_StatusIsSet; + }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/Tag.cpp b/samples/server/petstore/cpp-pistache/model/Tag.cpp index 659565e4034..fecaccfc64c 100644 --- a/samples/server/petstore/cpp-pistache/model/Tag.cpp +++ b/samples/server/petstore/cpp-pistache/model/Tag.cpp @@ -47,9 +47,7 @@ bool Tag::validate(std::stringstream& msg, const std::string& pathPrefix) const bool success = true; const std::string _pathPrefix = pathPrefix.empty() ? "Tag" : pathPrefix; - - - + return success; } diff --git a/samples/server/petstore/cpp-pistache/model/Tag.h b/samples/server/petstore/cpp-pistache/model/Tag.h index 1b607e27fd9..822c760be7e 100644 --- a/samples/server/petstore/cpp-pistache/model/Tag.h +++ b/samples/server/petstore/cpp-pistache/model/Tag.h @@ -80,6 +80,7 @@ protected: bool m_IdIsSet; std::string m_Name; bool m_NameIsSet; + }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/User.cpp b/samples/server/petstore/cpp-pistache/model/User.cpp index c997bf9734d..05f504ed30d 100644 --- a/samples/server/petstore/cpp-pistache/model/User.cpp +++ b/samples/server/petstore/cpp-pistache/model/User.cpp @@ -59,15 +59,7 @@ bool User::validate(std::stringstream& msg, const std::string& pathPrefix) const bool success = true; const std::string _pathPrefix = pathPrefix.empty() ? "User" : pathPrefix; - - - - - - - - - + return success; } diff --git a/samples/server/petstore/cpp-pistache/model/User.h b/samples/server/petstore/cpp-pistache/model/User.h index 38048fe58e4..aebc4fe5a35 100644 --- a/samples/server/petstore/cpp-pistache/model/User.h +++ b/samples/server/petstore/cpp-pistache/model/User.h @@ -134,6 +134,7 @@ protected: bool m_PhoneIsSet; int32_t m_UserStatus; bool m_UserStatusIsSet; + }; } // namespace org::openapitools::server::model From 939b5f6bb8b573aec34a4c514115aac2b111f598 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 21 Jun 2021 11:24:46 +0800 Subject: [PATCH 154/192] update samples --- .../.openapi-generator/FILES | 374 +++++++++--------- .../.openapi-generator/FILES | 374 +++++++++--------- .../.openapi-generator/FILES | 374 +++++++++--------- .../OpenAPIClient/.openapi-generator/FILES | 372 ++++++++--------- .../.openapi-generator/FILES | 372 ++++++++--------- .../.openapi-generator/FILES | 84 ++-- 6 files changed, 975 insertions(+), 975 deletions(-) diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES index 5270579e128..d317e612051 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/FILES @@ -1,187 +1,187 @@ -.gitignore -Org.OpenAPITools.sln -README.md -appveyor.yml -docs/AdditionalPropertiesClass.md -docs/Animal.md -docs/AnotherFakeApi.md -docs/ApiResponse.md -docs/Apple.md -docs/AppleReq.md -docs/ArrayOfArrayOfNumberOnly.md -docs/ArrayOfNumberOnly.md -docs/ArrayTest.md -docs/Banana.md -docs/BananaReq.md -docs/BasquePig.md -docs/Capitalization.md -docs/Cat.md -docs/CatAllOf.md -docs/Category.md -docs/ChildCat.md -docs/ChildCatAllOf.md -docs/ClassModel.md -docs/ComplexQuadrilateral.md -docs/DanishPig.md -docs/DefaultApi.md -docs/Dog.md -docs/DogAllOf.md -docs/Drawing.md -docs/EnumArrays.md -docs/EnumClass.md -docs/EnumTest.md -docs/EquilateralTriangle.md -docs/FakeApi.md -docs/FakeClassnameTags123Api.md -docs/File.md -docs/FileSchemaTestClass.md -docs/Foo.md -docs/FormatTest.md -docs/Fruit.md -docs/FruitReq.md -docs/GmFruit.md -docs/GrandparentAnimal.md -docs/HasOnlyReadOnly.md -docs/HealthCheckResult.md -docs/InlineResponseDefault.md -docs/IsoscelesTriangle.md -docs/List.md -docs/Mammal.md -docs/MapTest.md -docs/MixedPropertiesAndAdditionalPropertiesClass.md -docs/Model200Response.md -docs/ModelClient.md -docs/Name.md -docs/NullableClass.md -docs/NullableShape.md -docs/NumberOnly.md -docs/Order.md -docs/OuterComposite.md -docs/OuterEnum.md -docs/OuterEnumDefaultValue.md -docs/OuterEnumInteger.md -docs/OuterEnumIntegerDefaultValue.md -docs/ParentPet.md -docs/Pet.md -docs/PetApi.md -docs/Pig.md -docs/Quadrilateral.md -docs/QuadrilateralInterface.md -docs/ReadOnlyFirst.md -docs/Return.md -docs/ScaleneTriangle.md -docs/Shape.md -docs/ShapeInterface.md -docs/ShapeOrNull.md -docs/SimpleQuadrilateral.md -docs/SpecialModelName.md -docs/StoreApi.md -docs/Tag.md -docs/Triangle.md -docs/TriangleInterface.md -docs/User.md -docs/UserApi.md -docs/Whale.md -docs/Zebra.md -git_push.sh -src/Org.OpenAPITools/Api/AnotherFakeApi.cs -src/Org.OpenAPITools/Api/DefaultApi.cs -src/Org.OpenAPITools/Api/FakeApi.cs -src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs -src/Org.OpenAPITools/Api/PetApi.cs -src/Org.OpenAPITools/Api/StoreApi.cs -src/Org.OpenAPITools/Api/UserApi.cs -src/Org.OpenAPITools/Client/ApiClient.cs -src/Org.OpenAPITools/Client/ApiException.cs -src/Org.OpenAPITools/Client/ApiResponse.cs -src/Org.OpenAPITools/Client/ClientUtils.cs -src/Org.OpenAPITools/Client/Configuration.cs -src/Org.OpenAPITools/Client/ExceptionFactory.cs -src/Org.OpenAPITools/Client/FileParameter.cs -src/Org.OpenAPITools/Client/GlobalConfiguration.cs -src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs -src/Org.OpenAPITools/Client/IApiAccessor.cs -src/Org.OpenAPITools/Client/IAsynchronousClient.cs -src/Org.OpenAPITools/Client/IReadableConfiguration.cs -src/Org.OpenAPITools/Client/ISynchronousClient.cs -src/Org.OpenAPITools/Client/Multimap.cs -src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs -src/Org.OpenAPITools/Client/RequestOptions.cs -src/Org.OpenAPITools/Client/RetryConfiguration.cs -src/Org.OpenAPITools/Client/WebRequestPathBuilder.cs -src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs -src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Animal.cs -src/Org.OpenAPITools/Model/ApiResponse.cs -src/Org.OpenAPITools/Model/Apple.cs -src/Org.OpenAPITools/Model/AppleReq.cs -src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayTest.cs -src/Org.OpenAPITools/Model/Banana.cs -src/Org.OpenAPITools/Model/BananaReq.cs -src/Org.OpenAPITools/Model/BasquePig.cs -src/Org.OpenAPITools/Model/Capitalization.cs -src/Org.OpenAPITools/Model/Cat.cs -src/Org.OpenAPITools/Model/CatAllOf.cs -src/Org.OpenAPITools/Model/Category.cs -src/Org.OpenAPITools/Model/ChildCat.cs -src/Org.OpenAPITools/Model/ChildCatAllOf.cs -src/Org.OpenAPITools/Model/ClassModel.cs -src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs -src/Org.OpenAPITools/Model/DanishPig.cs -src/Org.OpenAPITools/Model/Dog.cs -src/Org.OpenAPITools/Model/DogAllOf.cs -src/Org.OpenAPITools/Model/Drawing.cs -src/Org.OpenAPITools/Model/EnumArrays.cs -src/Org.OpenAPITools/Model/EnumClass.cs -src/Org.OpenAPITools/Model/EnumTest.cs -src/Org.OpenAPITools/Model/EquilateralTriangle.cs -src/Org.OpenAPITools/Model/File.cs -src/Org.OpenAPITools/Model/FileSchemaTestClass.cs -src/Org.OpenAPITools/Model/Foo.cs -src/Org.OpenAPITools/Model/FormatTest.cs -src/Org.OpenAPITools/Model/Fruit.cs -src/Org.OpenAPITools/Model/FruitReq.cs -src/Org.OpenAPITools/Model/GmFruit.cs -src/Org.OpenAPITools/Model/GrandparentAnimal.cs -src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs -src/Org.OpenAPITools/Model/HealthCheckResult.cs -src/Org.OpenAPITools/Model/InlineResponseDefault.cs -src/Org.OpenAPITools/Model/IsoscelesTriangle.cs -src/Org.OpenAPITools/Model/List.cs -src/Org.OpenAPITools/Model/Mammal.cs -src/Org.OpenAPITools/Model/MapTest.cs -src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Model200Response.cs -src/Org.OpenAPITools/Model/ModelClient.cs -src/Org.OpenAPITools/Model/Name.cs -src/Org.OpenAPITools/Model/NullableClass.cs -src/Org.OpenAPITools/Model/NullableShape.cs -src/Org.OpenAPITools/Model/NumberOnly.cs -src/Org.OpenAPITools/Model/Order.cs -src/Org.OpenAPITools/Model/OuterComposite.cs -src/Org.OpenAPITools/Model/OuterEnum.cs -src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs -src/Org.OpenAPITools/Model/OuterEnumInteger.cs -src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs -src/Org.OpenAPITools/Model/ParentPet.cs -src/Org.OpenAPITools/Model/Pet.cs -src/Org.OpenAPITools/Model/Pig.cs -src/Org.OpenAPITools/Model/Quadrilateral.cs -src/Org.OpenAPITools/Model/QuadrilateralInterface.cs -src/Org.OpenAPITools/Model/ReadOnlyFirst.cs -src/Org.OpenAPITools/Model/Return.cs -src/Org.OpenAPITools/Model/ScaleneTriangle.cs -src/Org.OpenAPITools/Model/Shape.cs -src/Org.OpenAPITools/Model/ShapeInterface.cs -src/Org.OpenAPITools/Model/ShapeOrNull.cs -src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs -src/Org.OpenAPITools/Model/SpecialModelName.cs -src/Org.OpenAPITools/Model/Tag.cs -src/Org.OpenAPITools/Model/Triangle.cs -src/Org.OpenAPITools/Model/TriangleInterface.cs -src/Org.OpenAPITools/Model/User.cs -src/Org.OpenAPITools/Model/Whale.cs -src/Org.OpenAPITools/Model/Zebra.cs -src/Org.OpenAPITools/Org.OpenAPITools.csproj +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnotherFakeApi.md +docs/ApiResponse.md +docs/Apple.md +docs/AppleReq.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Banana.md +docs/BananaReq.md +docs/BasquePig.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ChildCat.md +docs/ChildCatAllOf.md +docs/ClassModel.md +docs/ComplexQuadrilateral.md +docs/DanishPig.md +docs/DefaultApi.md +docs/Dog.md +docs/DogAllOf.md +docs/Drawing.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/EquilateralTriangle.md +docs/FakeApi.md +docs/FakeClassnameTags123Api.md +docs/File.md +docs/FileSchemaTestClass.md +docs/Foo.md +docs/FormatTest.md +docs/Fruit.md +docs/FruitReq.md +docs/GmFruit.md +docs/GrandparentAnimal.md +docs/HasOnlyReadOnly.md +docs/HealthCheckResult.md +docs/InlineResponseDefault.md +docs/IsoscelesTriangle.md +docs/List.md +docs/Mammal.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/ModelClient.md +docs/Name.md +docs/NullableClass.md +docs/NullableShape.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/OuterEnumDefaultValue.md +docs/OuterEnumInteger.md +docs/OuterEnumIntegerDefaultValue.md +docs/ParentPet.md +docs/Pet.md +docs/PetApi.md +docs/Pig.md +docs/Quadrilateral.md +docs/QuadrilateralInterface.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/ScaleneTriangle.md +docs/Shape.md +docs/ShapeInterface.md +docs/ShapeOrNull.md +docs/SimpleQuadrilateral.md +docs/SpecialModelName.md +docs/StoreApi.md +docs/Tag.md +docs/Triangle.md +docs/TriangleInterface.md +docs/User.md +docs/UserApi.md +docs/Whale.md +docs/Zebra.md +git_push.sh +src/Org.OpenAPITools/Api/AnotherFakeApi.cs +src/Org.OpenAPITools/Api/DefaultApi.cs +src/Org.OpenAPITools/Api/FakeApi.cs +src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/FileParameter.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Client/WebRequestPathBuilder.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Animal.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Apple.cs +src/Org.OpenAPITools/Model/AppleReq.cs +src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayTest.cs +src/Org.OpenAPITools/Model/Banana.cs +src/Org.OpenAPITools/Model/BananaReq.cs +src/Org.OpenAPITools/Model/BasquePig.cs +src/Org.OpenAPITools/Model/Capitalization.cs +src/Org.OpenAPITools/Model/Cat.cs +src/Org.OpenAPITools/Model/CatAllOf.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/ChildCat.cs +src/Org.OpenAPITools/Model/ChildCatAllOf.cs +src/Org.OpenAPITools/Model/ClassModel.cs +src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +src/Org.OpenAPITools/Model/DanishPig.cs +src/Org.OpenAPITools/Model/Dog.cs +src/Org.OpenAPITools/Model/DogAllOf.cs +src/Org.OpenAPITools/Model/Drawing.cs +src/Org.OpenAPITools/Model/EnumArrays.cs +src/Org.OpenAPITools/Model/EnumClass.cs +src/Org.OpenAPITools/Model/EnumTest.cs +src/Org.OpenAPITools/Model/EquilateralTriangle.cs +src/Org.OpenAPITools/Model/File.cs +src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +src/Org.OpenAPITools/Model/Foo.cs +src/Org.OpenAPITools/Model/FormatTest.cs +src/Org.OpenAPITools/Model/Fruit.cs +src/Org.OpenAPITools/Model/FruitReq.cs +src/Org.OpenAPITools/Model/GmFruit.cs +src/Org.OpenAPITools/Model/GrandparentAnimal.cs +src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InlineResponseDefault.cs +src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +src/Org.OpenAPITools/Model/List.cs +src/Org.OpenAPITools/Model/Mammal.cs +src/Org.OpenAPITools/Model/MapTest.cs +src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Model200Response.cs +src/Org.OpenAPITools/Model/ModelClient.cs +src/Org.OpenAPITools/Model/Name.cs +src/Org.OpenAPITools/Model/NullableClass.cs +src/Org.OpenAPITools/Model/NullableShape.cs +src/Org.OpenAPITools/Model/NumberOnly.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/OuterComposite.cs +src/Org.OpenAPITools/Model/OuterEnum.cs +src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +src/Org.OpenAPITools/Model/OuterEnumInteger.cs +src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +src/Org.OpenAPITools/Model/ParentPet.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Pig.cs +src/Org.OpenAPITools/Model/Quadrilateral.cs +src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +src/Org.OpenAPITools/Model/Return.cs +src/Org.OpenAPITools/Model/ScaleneTriangle.cs +src/Org.OpenAPITools/Model/Shape.cs +src/Org.OpenAPITools/Model/ShapeInterface.cs +src/Org.OpenAPITools/Model/ShapeOrNull.cs +src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +src/Org.OpenAPITools/Model/SpecialModelName.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/Triangle.cs +src/Org.OpenAPITools/Model/TriangleInterface.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Model/Whale.cs +src/Org.OpenAPITools/Model/Zebra.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/FILES index 28766b88f12..d258eb64b2f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/FILES @@ -1,187 +1,187 @@ -.gitignore -Org.OpenAPITools.sln -README.md -appveyor.yml -docs/AdditionalPropertiesClass.md -docs/Animal.md -docs/AnotherFakeApi.md -docs/ApiResponse.md -docs/Apple.md -docs/AppleReq.md -docs/ArrayOfArrayOfNumberOnly.md -docs/ArrayOfNumberOnly.md -docs/ArrayTest.md -docs/Banana.md -docs/BananaReq.md -docs/BasquePig.md -docs/Capitalization.md -docs/Cat.md -docs/CatAllOf.md -docs/Category.md -docs/ChildCat.md -docs/ChildCatAllOf.md -docs/ClassModel.md -docs/ComplexQuadrilateral.md -docs/DanishPig.md -docs/DefaultApi.md -docs/Dog.md -docs/DogAllOf.md -docs/Drawing.md -docs/EnumArrays.md -docs/EnumClass.md -docs/EnumTest.md -docs/EquilateralTriangle.md -docs/FakeApi.md -docs/FakeClassnameTags123Api.md -docs/File.md -docs/FileSchemaTestClass.md -docs/Foo.md -docs/FormatTest.md -docs/Fruit.md -docs/FruitReq.md -docs/GmFruit.md -docs/GrandparentAnimal.md -docs/HasOnlyReadOnly.md -docs/HealthCheckResult.md -docs/InlineResponseDefault.md -docs/IsoscelesTriangle.md -docs/List.md -docs/Mammal.md -docs/MapTest.md -docs/MixedPropertiesAndAdditionalPropertiesClass.md -docs/Model200Response.md -docs/ModelClient.md -docs/Name.md -docs/NullableClass.md -docs/NullableShape.md -docs/NumberOnly.md -docs/Order.md -docs/OuterComposite.md -docs/OuterEnum.md -docs/OuterEnumDefaultValue.md -docs/OuterEnumInteger.md -docs/OuterEnumIntegerDefaultValue.md -docs/ParentPet.md -docs/Pet.md -docs/PetApi.md -docs/Pig.md -docs/Quadrilateral.md -docs/QuadrilateralInterface.md -docs/ReadOnlyFirst.md -docs/Return.md -docs/ScaleneTriangle.md -docs/Shape.md -docs/ShapeInterface.md -docs/ShapeOrNull.md -docs/SimpleQuadrilateral.md -docs/SpecialModelName.md -docs/StoreApi.md -docs/Tag.md -docs/Triangle.md -docs/TriangleInterface.md -docs/User.md -docs/UserApi.md -docs/Whale.md -docs/Zebra.md -git_push.sh -src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj -src/Org.OpenAPITools/Api/AnotherFakeApi.cs -src/Org.OpenAPITools/Api/DefaultApi.cs -src/Org.OpenAPITools/Api/FakeApi.cs -src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs -src/Org.OpenAPITools/Api/PetApi.cs -src/Org.OpenAPITools/Api/StoreApi.cs -src/Org.OpenAPITools/Api/UserApi.cs -src/Org.OpenAPITools/Client/ApiClient.cs -src/Org.OpenAPITools/Client/ApiException.cs -src/Org.OpenAPITools/Client/ApiResponse.cs -src/Org.OpenAPITools/Client/ClientUtils.cs -src/Org.OpenAPITools/Client/Configuration.cs -src/Org.OpenAPITools/Client/ExceptionFactory.cs -src/Org.OpenAPITools/Client/GlobalConfiguration.cs -src/Org.OpenAPITools/Client/HttpMethod.cs -src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs -src/Org.OpenAPITools/Client/IApiAccessor.cs -src/Org.OpenAPITools/Client/IAsynchronousClient.cs -src/Org.OpenAPITools/Client/IReadableConfiguration.cs -src/Org.OpenAPITools/Client/ISynchronousClient.cs -src/Org.OpenAPITools/Client/Multimap.cs -src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs -src/Org.OpenAPITools/Client/RequestOptions.cs -src/Org.OpenAPITools/Client/RetryConfiguration.cs -src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs -src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Animal.cs -src/Org.OpenAPITools/Model/ApiResponse.cs -src/Org.OpenAPITools/Model/Apple.cs -src/Org.OpenAPITools/Model/AppleReq.cs -src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayTest.cs -src/Org.OpenAPITools/Model/Banana.cs -src/Org.OpenAPITools/Model/BananaReq.cs -src/Org.OpenAPITools/Model/BasquePig.cs -src/Org.OpenAPITools/Model/Capitalization.cs -src/Org.OpenAPITools/Model/Cat.cs -src/Org.OpenAPITools/Model/CatAllOf.cs -src/Org.OpenAPITools/Model/Category.cs -src/Org.OpenAPITools/Model/ChildCat.cs -src/Org.OpenAPITools/Model/ChildCatAllOf.cs -src/Org.OpenAPITools/Model/ClassModel.cs -src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs -src/Org.OpenAPITools/Model/DanishPig.cs -src/Org.OpenAPITools/Model/Dog.cs -src/Org.OpenAPITools/Model/DogAllOf.cs -src/Org.OpenAPITools/Model/Drawing.cs -src/Org.OpenAPITools/Model/EnumArrays.cs -src/Org.OpenAPITools/Model/EnumClass.cs -src/Org.OpenAPITools/Model/EnumTest.cs -src/Org.OpenAPITools/Model/EquilateralTriangle.cs -src/Org.OpenAPITools/Model/File.cs -src/Org.OpenAPITools/Model/FileSchemaTestClass.cs -src/Org.OpenAPITools/Model/Foo.cs -src/Org.OpenAPITools/Model/FormatTest.cs -src/Org.OpenAPITools/Model/Fruit.cs -src/Org.OpenAPITools/Model/FruitReq.cs -src/Org.OpenAPITools/Model/GmFruit.cs -src/Org.OpenAPITools/Model/GrandparentAnimal.cs -src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs -src/Org.OpenAPITools/Model/HealthCheckResult.cs -src/Org.OpenAPITools/Model/InlineResponseDefault.cs -src/Org.OpenAPITools/Model/IsoscelesTriangle.cs -src/Org.OpenAPITools/Model/List.cs -src/Org.OpenAPITools/Model/Mammal.cs -src/Org.OpenAPITools/Model/MapTest.cs -src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Model200Response.cs -src/Org.OpenAPITools/Model/ModelClient.cs -src/Org.OpenAPITools/Model/Name.cs -src/Org.OpenAPITools/Model/NullableClass.cs -src/Org.OpenAPITools/Model/NullableShape.cs -src/Org.OpenAPITools/Model/NumberOnly.cs -src/Org.OpenAPITools/Model/Order.cs -src/Org.OpenAPITools/Model/OuterComposite.cs -src/Org.OpenAPITools/Model/OuterEnum.cs -src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs -src/Org.OpenAPITools/Model/OuterEnumInteger.cs -src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs -src/Org.OpenAPITools/Model/ParentPet.cs -src/Org.OpenAPITools/Model/Pet.cs -src/Org.OpenAPITools/Model/Pig.cs -src/Org.OpenAPITools/Model/Quadrilateral.cs -src/Org.OpenAPITools/Model/QuadrilateralInterface.cs -src/Org.OpenAPITools/Model/ReadOnlyFirst.cs -src/Org.OpenAPITools/Model/Return.cs -src/Org.OpenAPITools/Model/ScaleneTriangle.cs -src/Org.OpenAPITools/Model/Shape.cs -src/Org.OpenAPITools/Model/ShapeInterface.cs -src/Org.OpenAPITools/Model/ShapeOrNull.cs -src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs -src/Org.OpenAPITools/Model/SpecialModelName.cs -src/Org.OpenAPITools/Model/Tag.cs -src/Org.OpenAPITools/Model/Triangle.cs -src/Org.OpenAPITools/Model/TriangleInterface.cs -src/Org.OpenAPITools/Model/User.cs -src/Org.OpenAPITools/Model/Whale.cs -src/Org.OpenAPITools/Model/Zebra.cs -src/Org.OpenAPITools/Org.OpenAPITools.csproj +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnotherFakeApi.md +docs/ApiResponse.md +docs/Apple.md +docs/AppleReq.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Banana.md +docs/BananaReq.md +docs/BasquePig.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ChildCat.md +docs/ChildCatAllOf.md +docs/ClassModel.md +docs/ComplexQuadrilateral.md +docs/DanishPig.md +docs/DefaultApi.md +docs/Dog.md +docs/DogAllOf.md +docs/Drawing.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/EquilateralTriangle.md +docs/FakeApi.md +docs/FakeClassnameTags123Api.md +docs/File.md +docs/FileSchemaTestClass.md +docs/Foo.md +docs/FormatTest.md +docs/Fruit.md +docs/FruitReq.md +docs/GmFruit.md +docs/GrandparentAnimal.md +docs/HasOnlyReadOnly.md +docs/HealthCheckResult.md +docs/InlineResponseDefault.md +docs/IsoscelesTriangle.md +docs/List.md +docs/Mammal.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/ModelClient.md +docs/Name.md +docs/NullableClass.md +docs/NullableShape.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/OuterEnumDefaultValue.md +docs/OuterEnumInteger.md +docs/OuterEnumIntegerDefaultValue.md +docs/ParentPet.md +docs/Pet.md +docs/PetApi.md +docs/Pig.md +docs/Quadrilateral.md +docs/QuadrilateralInterface.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/ScaleneTriangle.md +docs/Shape.md +docs/ShapeInterface.md +docs/ShapeOrNull.md +docs/SimpleQuadrilateral.md +docs/SpecialModelName.md +docs/StoreApi.md +docs/Tag.md +docs/Triangle.md +docs/TriangleInterface.md +docs/User.md +docs/UserApi.md +docs/Whale.md +docs/Zebra.md +git_push.sh +src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj +src/Org.OpenAPITools/Api/AnotherFakeApi.cs +src/Org.OpenAPITools/Api/DefaultApi.cs +src/Org.OpenAPITools/Api/FakeApi.cs +src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpMethod.cs +src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Animal.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Apple.cs +src/Org.OpenAPITools/Model/AppleReq.cs +src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayTest.cs +src/Org.OpenAPITools/Model/Banana.cs +src/Org.OpenAPITools/Model/BananaReq.cs +src/Org.OpenAPITools/Model/BasquePig.cs +src/Org.OpenAPITools/Model/Capitalization.cs +src/Org.OpenAPITools/Model/Cat.cs +src/Org.OpenAPITools/Model/CatAllOf.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/ChildCat.cs +src/Org.OpenAPITools/Model/ChildCatAllOf.cs +src/Org.OpenAPITools/Model/ClassModel.cs +src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +src/Org.OpenAPITools/Model/DanishPig.cs +src/Org.OpenAPITools/Model/Dog.cs +src/Org.OpenAPITools/Model/DogAllOf.cs +src/Org.OpenAPITools/Model/Drawing.cs +src/Org.OpenAPITools/Model/EnumArrays.cs +src/Org.OpenAPITools/Model/EnumClass.cs +src/Org.OpenAPITools/Model/EnumTest.cs +src/Org.OpenAPITools/Model/EquilateralTriangle.cs +src/Org.OpenAPITools/Model/File.cs +src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +src/Org.OpenAPITools/Model/Foo.cs +src/Org.OpenAPITools/Model/FormatTest.cs +src/Org.OpenAPITools/Model/Fruit.cs +src/Org.OpenAPITools/Model/FruitReq.cs +src/Org.OpenAPITools/Model/GmFruit.cs +src/Org.OpenAPITools/Model/GrandparentAnimal.cs +src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InlineResponseDefault.cs +src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +src/Org.OpenAPITools/Model/List.cs +src/Org.OpenAPITools/Model/Mammal.cs +src/Org.OpenAPITools/Model/MapTest.cs +src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Model200Response.cs +src/Org.OpenAPITools/Model/ModelClient.cs +src/Org.OpenAPITools/Model/Name.cs +src/Org.OpenAPITools/Model/NullableClass.cs +src/Org.OpenAPITools/Model/NullableShape.cs +src/Org.OpenAPITools/Model/NumberOnly.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/OuterComposite.cs +src/Org.OpenAPITools/Model/OuterEnum.cs +src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +src/Org.OpenAPITools/Model/OuterEnumInteger.cs +src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +src/Org.OpenAPITools/Model/ParentPet.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Pig.cs +src/Org.OpenAPITools/Model/Quadrilateral.cs +src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +src/Org.OpenAPITools/Model/Return.cs +src/Org.OpenAPITools/Model/ScaleneTriangle.cs +src/Org.OpenAPITools/Model/Shape.cs +src/Org.OpenAPITools/Model/ShapeInterface.cs +src/Org.OpenAPITools/Model/ShapeOrNull.cs +src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +src/Org.OpenAPITools/Model/SpecialModelName.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/Triangle.cs +src/Org.OpenAPITools/Model/TriangleInterface.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Model/Whale.cs +src/Org.OpenAPITools/Model/Zebra.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/FILES index 28766b88f12..d258eb64b2f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/FILES @@ -1,187 +1,187 @@ -.gitignore -Org.OpenAPITools.sln -README.md -appveyor.yml -docs/AdditionalPropertiesClass.md -docs/Animal.md -docs/AnotherFakeApi.md -docs/ApiResponse.md -docs/Apple.md -docs/AppleReq.md -docs/ArrayOfArrayOfNumberOnly.md -docs/ArrayOfNumberOnly.md -docs/ArrayTest.md -docs/Banana.md -docs/BananaReq.md -docs/BasquePig.md -docs/Capitalization.md -docs/Cat.md -docs/CatAllOf.md -docs/Category.md -docs/ChildCat.md -docs/ChildCatAllOf.md -docs/ClassModel.md -docs/ComplexQuadrilateral.md -docs/DanishPig.md -docs/DefaultApi.md -docs/Dog.md -docs/DogAllOf.md -docs/Drawing.md -docs/EnumArrays.md -docs/EnumClass.md -docs/EnumTest.md -docs/EquilateralTriangle.md -docs/FakeApi.md -docs/FakeClassnameTags123Api.md -docs/File.md -docs/FileSchemaTestClass.md -docs/Foo.md -docs/FormatTest.md -docs/Fruit.md -docs/FruitReq.md -docs/GmFruit.md -docs/GrandparentAnimal.md -docs/HasOnlyReadOnly.md -docs/HealthCheckResult.md -docs/InlineResponseDefault.md -docs/IsoscelesTriangle.md -docs/List.md -docs/Mammal.md -docs/MapTest.md -docs/MixedPropertiesAndAdditionalPropertiesClass.md -docs/Model200Response.md -docs/ModelClient.md -docs/Name.md -docs/NullableClass.md -docs/NullableShape.md -docs/NumberOnly.md -docs/Order.md -docs/OuterComposite.md -docs/OuterEnum.md -docs/OuterEnumDefaultValue.md -docs/OuterEnumInteger.md -docs/OuterEnumIntegerDefaultValue.md -docs/ParentPet.md -docs/Pet.md -docs/PetApi.md -docs/Pig.md -docs/Quadrilateral.md -docs/QuadrilateralInterface.md -docs/ReadOnlyFirst.md -docs/Return.md -docs/ScaleneTriangle.md -docs/Shape.md -docs/ShapeInterface.md -docs/ShapeOrNull.md -docs/SimpleQuadrilateral.md -docs/SpecialModelName.md -docs/StoreApi.md -docs/Tag.md -docs/Triangle.md -docs/TriangleInterface.md -docs/User.md -docs/UserApi.md -docs/Whale.md -docs/Zebra.md -git_push.sh -src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj -src/Org.OpenAPITools/Api/AnotherFakeApi.cs -src/Org.OpenAPITools/Api/DefaultApi.cs -src/Org.OpenAPITools/Api/FakeApi.cs -src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs -src/Org.OpenAPITools/Api/PetApi.cs -src/Org.OpenAPITools/Api/StoreApi.cs -src/Org.OpenAPITools/Api/UserApi.cs -src/Org.OpenAPITools/Client/ApiClient.cs -src/Org.OpenAPITools/Client/ApiException.cs -src/Org.OpenAPITools/Client/ApiResponse.cs -src/Org.OpenAPITools/Client/ClientUtils.cs -src/Org.OpenAPITools/Client/Configuration.cs -src/Org.OpenAPITools/Client/ExceptionFactory.cs -src/Org.OpenAPITools/Client/GlobalConfiguration.cs -src/Org.OpenAPITools/Client/HttpMethod.cs -src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs -src/Org.OpenAPITools/Client/IApiAccessor.cs -src/Org.OpenAPITools/Client/IAsynchronousClient.cs -src/Org.OpenAPITools/Client/IReadableConfiguration.cs -src/Org.OpenAPITools/Client/ISynchronousClient.cs -src/Org.OpenAPITools/Client/Multimap.cs -src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs -src/Org.OpenAPITools/Client/RequestOptions.cs -src/Org.OpenAPITools/Client/RetryConfiguration.cs -src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs -src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Animal.cs -src/Org.OpenAPITools/Model/ApiResponse.cs -src/Org.OpenAPITools/Model/Apple.cs -src/Org.OpenAPITools/Model/AppleReq.cs -src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayTest.cs -src/Org.OpenAPITools/Model/Banana.cs -src/Org.OpenAPITools/Model/BananaReq.cs -src/Org.OpenAPITools/Model/BasquePig.cs -src/Org.OpenAPITools/Model/Capitalization.cs -src/Org.OpenAPITools/Model/Cat.cs -src/Org.OpenAPITools/Model/CatAllOf.cs -src/Org.OpenAPITools/Model/Category.cs -src/Org.OpenAPITools/Model/ChildCat.cs -src/Org.OpenAPITools/Model/ChildCatAllOf.cs -src/Org.OpenAPITools/Model/ClassModel.cs -src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs -src/Org.OpenAPITools/Model/DanishPig.cs -src/Org.OpenAPITools/Model/Dog.cs -src/Org.OpenAPITools/Model/DogAllOf.cs -src/Org.OpenAPITools/Model/Drawing.cs -src/Org.OpenAPITools/Model/EnumArrays.cs -src/Org.OpenAPITools/Model/EnumClass.cs -src/Org.OpenAPITools/Model/EnumTest.cs -src/Org.OpenAPITools/Model/EquilateralTriangle.cs -src/Org.OpenAPITools/Model/File.cs -src/Org.OpenAPITools/Model/FileSchemaTestClass.cs -src/Org.OpenAPITools/Model/Foo.cs -src/Org.OpenAPITools/Model/FormatTest.cs -src/Org.OpenAPITools/Model/Fruit.cs -src/Org.OpenAPITools/Model/FruitReq.cs -src/Org.OpenAPITools/Model/GmFruit.cs -src/Org.OpenAPITools/Model/GrandparentAnimal.cs -src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs -src/Org.OpenAPITools/Model/HealthCheckResult.cs -src/Org.OpenAPITools/Model/InlineResponseDefault.cs -src/Org.OpenAPITools/Model/IsoscelesTriangle.cs -src/Org.OpenAPITools/Model/List.cs -src/Org.OpenAPITools/Model/Mammal.cs -src/Org.OpenAPITools/Model/MapTest.cs -src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Model200Response.cs -src/Org.OpenAPITools/Model/ModelClient.cs -src/Org.OpenAPITools/Model/Name.cs -src/Org.OpenAPITools/Model/NullableClass.cs -src/Org.OpenAPITools/Model/NullableShape.cs -src/Org.OpenAPITools/Model/NumberOnly.cs -src/Org.OpenAPITools/Model/Order.cs -src/Org.OpenAPITools/Model/OuterComposite.cs -src/Org.OpenAPITools/Model/OuterEnum.cs -src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs -src/Org.OpenAPITools/Model/OuterEnumInteger.cs -src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs -src/Org.OpenAPITools/Model/ParentPet.cs -src/Org.OpenAPITools/Model/Pet.cs -src/Org.OpenAPITools/Model/Pig.cs -src/Org.OpenAPITools/Model/Quadrilateral.cs -src/Org.OpenAPITools/Model/QuadrilateralInterface.cs -src/Org.OpenAPITools/Model/ReadOnlyFirst.cs -src/Org.OpenAPITools/Model/Return.cs -src/Org.OpenAPITools/Model/ScaleneTriangle.cs -src/Org.OpenAPITools/Model/Shape.cs -src/Org.OpenAPITools/Model/ShapeInterface.cs -src/Org.OpenAPITools/Model/ShapeOrNull.cs -src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs -src/Org.OpenAPITools/Model/SpecialModelName.cs -src/Org.OpenAPITools/Model/Tag.cs -src/Org.OpenAPITools/Model/Triangle.cs -src/Org.OpenAPITools/Model/TriangleInterface.cs -src/Org.OpenAPITools/Model/User.cs -src/Org.OpenAPITools/Model/Whale.cs -src/Org.OpenAPITools/Model/Zebra.cs -src/Org.OpenAPITools/Org.OpenAPITools.csproj +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnotherFakeApi.md +docs/ApiResponse.md +docs/Apple.md +docs/AppleReq.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Banana.md +docs/BananaReq.md +docs/BasquePig.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ChildCat.md +docs/ChildCatAllOf.md +docs/ClassModel.md +docs/ComplexQuadrilateral.md +docs/DanishPig.md +docs/DefaultApi.md +docs/Dog.md +docs/DogAllOf.md +docs/Drawing.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/EquilateralTriangle.md +docs/FakeApi.md +docs/FakeClassnameTags123Api.md +docs/File.md +docs/FileSchemaTestClass.md +docs/Foo.md +docs/FormatTest.md +docs/Fruit.md +docs/FruitReq.md +docs/GmFruit.md +docs/GrandparentAnimal.md +docs/HasOnlyReadOnly.md +docs/HealthCheckResult.md +docs/InlineResponseDefault.md +docs/IsoscelesTriangle.md +docs/List.md +docs/Mammal.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/ModelClient.md +docs/Name.md +docs/NullableClass.md +docs/NullableShape.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/OuterEnumDefaultValue.md +docs/OuterEnumInteger.md +docs/OuterEnumIntegerDefaultValue.md +docs/ParentPet.md +docs/Pet.md +docs/PetApi.md +docs/Pig.md +docs/Quadrilateral.md +docs/QuadrilateralInterface.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/ScaleneTriangle.md +docs/Shape.md +docs/ShapeInterface.md +docs/ShapeOrNull.md +docs/SimpleQuadrilateral.md +docs/SpecialModelName.md +docs/StoreApi.md +docs/Tag.md +docs/Triangle.md +docs/TriangleInterface.md +docs/User.md +docs/UserApi.md +docs/Whale.md +docs/Zebra.md +git_push.sh +src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj +src/Org.OpenAPITools/Api/AnotherFakeApi.cs +src/Org.OpenAPITools/Api/DefaultApi.cs +src/Org.OpenAPITools/Api/FakeApi.cs +src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpMethod.cs +src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Animal.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Apple.cs +src/Org.OpenAPITools/Model/AppleReq.cs +src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayTest.cs +src/Org.OpenAPITools/Model/Banana.cs +src/Org.OpenAPITools/Model/BananaReq.cs +src/Org.OpenAPITools/Model/BasquePig.cs +src/Org.OpenAPITools/Model/Capitalization.cs +src/Org.OpenAPITools/Model/Cat.cs +src/Org.OpenAPITools/Model/CatAllOf.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/ChildCat.cs +src/Org.OpenAPITools/Model/ChildCatAllOf.cs +src/Org.OpenAPITools/Model/ClassModel.cs +src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +src/Org.OpenAPITools/Model/DanishPig.cs +src/Org.OpenAPITools/Model/Dog.cs +src/Org.OpenAPITools/Model/DogAllOf.cs +src/Org.OpenAPITools/Model/Drawing.cs +src/Org.OpenAPITools/Model/EnumArrays.cs +src/Org.OpenAPITools/Model/EnumClass.cs +src/Org.OpenAPITools/Model/EnumTest.cs +src/Org.OpenAPITools/Model/EquilateralTriangle.cs +src/Org.OpenAPITools/Model/File.cs +src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +src/Org.OpenAPITools/Model/Foo.cs +src/Org.OpenAPITools/Model/FormatTest.cs +src/Org.OpenAPITools/Model/Fruit.cs +src/Org.OpenAPITools/Model/FruitReq.cs +src/Org.OpenAPITools/Model/GmFruit.cs +src/Org.OpenAPITools/Model/GrandparentAnimal.cs +src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InlineResponseDefault.cs +src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +src/Org.OpenAPITools/Model/List.cs +src/Org.OpenAPITools/Model/Mammal.cs +src/Org.OpenAPITools/Model/MapTest.cs +src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Model200Response.cs +src/Org.OpenAPITools/Model/ModelClient.cs +src/Org.OpenAPITools/Model/Name.cs +src/Org.OpenAPITools/Model/NullableClass.cs +src/Org.OpenAPITools/Model/NullableShape.cs +src/Org.OpenAPITools/Model/NumberOnly.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/OuterComposite.cs +src/Org.OpenAPITools/Model/OuterEnum.cs +src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +src/Org.OpenAPITools/Model/OuterEnumInteger.cs +src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +src/Org.OpenAPITools/Model/ParentPet.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Pig.cs +src/Org.OpenAPITools/Model/Quadrilateral.cs +src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +src/Org.OpenAPITools/Model/Return.cs +src/Org.OpenAPITools/Model/ScaleneTriangle.cs +src/Org.OpenAPITools/Model/Shape.cs +src/Org.OpenAPITools/Model/ShapeInterface.cs +src/Org.OpenAPITools/Model/ShapeOrNull.cs +src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +src/Org.OpenAPITools/Model/SpecialModelName.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/Triangle.cs +src/Org.OpenAPITools/Model/TriangleInterface.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Model/Whale.cs +src/Org.OpenAPITools/Model/Zebra.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/FILES index 09de5cdb39c..37763cd49bc 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/FILES @@ -1,186 +1,186 @@ -.gitignore -Org.OpenAPITools.sln -README.md -appveyor.yml -docs/AdditionalPropertiesClass.md -docs/Animal.md -docs/AnotherFakeApi.md -docs/ApiResponse.md -docs/Apple.md -docs/AppleReq.md -docs/ArrayOfArrayOfNumberOnly.md -docs/ArrayOfNumberOnly.md -docs/ArrayTest.md -docs/Banana.md -docs/BananaReq.md -docs/BasquePig.md -docs/Capitalization.md -docs/Cat.md -docs/CatAllOf.md -docs/Category.md -docs/ChildCat.md -docs/ChildCatAllOf.md -docs/ClassModel.md -docs/ComplexQuadrilateral.md -docs/DanishPig.md -docs/DefaultApi.md -docs/Dog.md -docs/DogAllOf.md -docs/Drawing.md -docs/EnumArrays.md -docs/EnumClass.md -docs/EnumTest.md -docs/EquilateralTriangle.md -docs/FakeApi.md -docs/FakeClassnameTags123Api.md -docs/File.md -docs/FileSchemaTestClass.md -docs/Foo.md -docs/FormatTest.md -docs/Fruit.md -docs/FruitReq.md -docs/GmFruit.md -docs/GrandparentAnimal.md -docs/HasOnlyReadOnly.md -docs/HealthCheckResult.md -docs/InlineResponseDefault.md -docs/IsoscelesTriangle.md -docs/List.md -docs/Mammal.md -docs/MapTest.md -docs/MixedPropertiesAndAdditionalPropertiesClass.md -docs/Model200Response.md -docs/ModelClient.md -docs/Name.md -docs/NullableClass.md -docs/NullableShape.md -docs/NumberOnly.md -docs/Order.md -docs/OuterComposite.md -docs/OuterEnum.md -docs/OuterEnumDefaultValue.md -docs/OuterEnumInteger.md -docs/OuterEnumIntegerDefaultValue.md -docs/ParentPet.md -docs/Pet.md -docs/PetApi.md -docs/Pig.md -docs/Quadrilateral.md -docs/QuadrilateralInterface.md -docs/ReadOnlyFirst.md -docs/Return.md -docs/ScaleneTriangle.md -docs/Shape.md -docs/ShapeInterface.md -docs/ShapeOrNull.md -docs/SimpleQuadrilateral.md -docs/SpecialModelName.md -docs/StoreApi.md -docs/Tag.md -docs/Triangle.md -docs/TriangleInterface.md -docs/User.md -docs/UserApi.md -docs/Whale.md -docs/Zebra.md -git_push.sh -src/Org.OpenAPITools/Api/AnotherFakeApi.cs -src/Org.OpenAPITools/Api/DefaultApi.cs -src/Org.OpenAPITools/Api/FakeApi.cs -src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs -src/Org.OpenAPITools/Api/PetApi.cs -src/Org.OpenAPITools/Api/StoreApi.cs -src/Org.OpenAPITools/Api/UserApi.cs -src/Org.OpenAPITools/Client/ApiClient.cs -src/Org.OpenAPITools/Client/ApiException.cs -src/Org.OpenAPITools/Client/ApiResponse.cs -src/Org.OpenAPITools/Client/ClientUtils.cs -src/Org.OpenAPITools/Client/Configuration.cs -src/Org.OpenAPITools/Client/ExceptionFactory.cs -src/Org.OpenAPITools/Client/GlobalConfiguration.cs -src/Org.OpenAPITools/Client/HttpMethod.cs -src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs -src/Org.OpenAPITools/Client/IApiAccessor.cs -src/Org.OpenAPITools/Client/IAsynchronousClient.cs -src/Org.OpenAPITools/Client/IReadableConfiguration.cs -src/Org.OpenAPITools/Client/ISynchronousClient.cs -src/Org.OpenAPITools/Client/Multimap.cs -src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs -src/Org.OpenAPITools/Client/RequestOptions.cs -src/Org.OpenAPITools/Client/RetryConfiguration.cs -src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs -src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Animal.cs -src/Org.OpenAPITools/Model/ApiResponse.cs -src/Org.OpenAPITools/Model/Apple.cs -src/Org.OpenAPITools/Model/AppleReq.cs -src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayTest.cs -src/Org.OpenAPITools/Model/Banana.cs -src/Org.OpenAPITools/Model/BananaReq.cs -src/Org.OpenAPITools/Model/BasquePig.cs -src/Org.OpenAPITools/Model/Capitalization.cs -src/Org.OpenAPITools/Model/Cat.cs -src/Org.OpenAPITools/Model/CatAllOf.cs -src/Org.OpenAPITools/Model/Category.cs -src/Org.OpenAPITools/Model/ChildCat.cs -src/Org.OpenAPITools/Model/ChildCatAllOf.cs -src/Org.OpenAPITools/Model/ClassModel.cs -src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs -src/Org.OpenAPITools/Model/DanishPig.cs -src/Org.OpenAPITools/Model/Dog.cs -src/Org.OpenAPITools/Model/DogAllOf.cs -src/Org.OpenAPITools/Model/Drawing.cs -src/Org.OpenAPITools/Model/EnumArrays.cs -src/Org.OpenAPITools/Model/EnumClass.cs -src/Org.OpenAPITools/Model/EnumTest.cs -src/Org.OpenAPITools/Model/EquilateralTriangle.cs -src/Org.OpenAPITools/Model/File.cs -src/Org.OpenAPITools/Model/FileSchemaTestClass.cs -src/Org.OpenAPITools/Model/Foo.cs -src/Org.OpenAPITools/Model/FormatTest.cs -src/Org.OpenAPITools/Model/Fruit.cs -src/Org.OpenAPITools/Model/FruitReq.cs -src/Org.OpenAPITools/Model/GmFruit.cs -src/Org.OpenAPITools/Model/GrandparentAnimal.cs -src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs -src/Org.OpenAPITools/Model/HealthCheckResult.cs -src/Org.OpenAPITools/Model/InlineResponseDefault.cs -src/Org.OpenAPITools/Model/IsoscelesTriangle.cs -src/Org.OpenAPITools/Model/List.cs -src/Org.OpenAPITools/Model/Mammal.cs -src/Org.OpenAPITools/Model/MapTest.cs -src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Model200Response.cs -src/Org.OpenAPITools/Model/ModelClient.cs -src/Org.OpenAPITools/Model/Name.cs -src/Org.OpenAPITools/Model/NullableClass.cs -src/Org.OpenAPITools/Model/NullableShape.cs -src/Org.OpenAPITools/Model/NumberOnly.cs -src/Org.OpenAPITools/Model/Order.cs -src/Org.OpenAPITools/Model/OuterComposite.cs -src/Org.OpenAPITools/Model/OuterEnum.cs -src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs -src/Org.OpenAPITools/Model/OuterEnumInteger.cs -src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs -src/Org.OpenAPITools/Model/ParentPet.cs -src/Org.OpenAPITools/Model/Pet.cs -src/Org.OpenAPITools/Model/Pig.cs -src/Org.OpenAPITools/Model/Quadrilateral.cs -src/Org.OpenAPITools/Model/QuadrilateralInterface.cs -src/Org.OpenAPITools/Model/ReadOnlyFirst.cs -src/Org.OpenAPITools/Model/Return.cs -src/Org.OpenAPITools/Model/ScaleneTriangle.cs -src/Org.OpenAPITools/Model/Shape.cs -src/Org.OpenAPITools/Model/ShapeInterface.cs -src/Org.OpenAPITools/Model/ShapeOrNull.cs -src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs -src/Org.OpenAPITools/Model/SpecialModelName.cs -src/Org.OpenAPITools/Model/Tag.cs -src/Org.OpenAPITools/Model/Triangle.cs -src/Org.OpenAPITools/Model/TriangleInterface.cs -src/Org.OpenAPITools/Model/User.cs -src/Org.OpenAPITools/Model/Whale.cs -src/Org.OpenAPITools/Model/Zebra.cs -src/Org.OpenAPITools/Org.OpenAPITools.csproj +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnotherFakeApi.md +docs/ApiResponse.md +docs/Apple.md +docs/AppleReq.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Banana.md +docs/BananaReq.md +docs/BasquePig.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ChildCat.md +docs/ChildCatAllOf.md +docs/ClassModel.md +docs/ComplexQuadrilateral.md +docs/DanishPig.md +docs/DefaultApi.md +docs/Dog.md +docs/DogAllOf.md +docs/Drawing.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/EquilateralTriangle.md +docs/FakeApi.md +docs/FakeClassnameTags123Api.md +docs/File.md +docs/FileSchemaTestClass.md +docs/Foo.md +docs/FormatTest.md +docs/Fruit.md +docs/FruitReq.md +docs/GmFruit.md +docs/GrandparentAnimal.md +docs/HasOnlyReadOnly.md +docs/HealthCheckResult.md +docs/InlineResponseDefault.md +docs/IsoscelesTriangle.md +docs/List.md +docs/Mammal.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/ModelClient.md +docs/Name.md +docs/NullableClass.md +docs/NullableShape.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/OuterEnumDefaultValue.md +docs/OuterEnumInteger.md +docs/OuterEnumIntegerDefaultValue.md +docs/ParentPet.md +docs/Pet.md +docs/PetApi.md +docs/Pig.md +docs/Quadrilateral.md +docs/QuadrilateralInterface.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/ScaleneTriangle.md +docs/Shape.md +docs/ShapeInterface.md +docs/ShapeOrNull.md +docs/SimpleQuadrilateral.md +docs/SpecialModelName.md +docs/StoreApi.md +docs/Tag.md +docs/Triangle.md +docs/TriangleInterface.md +docs/User.md +docs/UserApi.md +docs/Whale.md +docs/Zebra.md +git_push.sh +src/Org.OpenAPITools/Api/AnotherFakeApi.cs +src/Org.OpenAPITools/Api/DefaultApi.cs +src/Org.OpenAPITools/Api/FakeApi.cs +src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpMethod.cs +src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Animal.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Apple.cs +src/Org.OpenAPITools/Model/AppleReq.cs +src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayTest.cs +src/Org.OpenAPITools/Model/Banana.cs +src/Org.OpenAPITools/Model/BananaReq.cs +src/Org.OpenAPITools/Model/BasquePig.cs +src/Org.OpenAPITools/Model/Capitalization.cs +src/Org.OpenAPITools/Model/Cat.cs +src/Org.OpenAPITools/Model/CatAllOf.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/ChildCat.cs +src/Org.OpenAPITools/Model/ChildCatAllOf.cs +src/Org.OpenAPITools/Model/ClassModel.cs +src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +src/Org.OpenAPITools/Model/DanishPig.cs +src/Org.OpenAPITools/Model/Dog.cs +src/Org.OpenAPITools/Model/DogAllOf.cs +src/Org.OpenAPITools/Model/Drawing.cs +src/Org.OpenAPITools/Model/EnumArrays.cs +src/Org.OpenAPITools/Model/EnumClass.cs +src/Org.OpenAPITools/Model/EnumTest.cs +src/Org.OpenAPITools/Model/EquilateralTriangle.cs +src/Org.OpenAPITools/Model/File.cs +src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +src/Org.OpenAPITools/Model/Foo.cs +src/Org.OpenAPITools/Model/FormatTest.cs +src/Org.OpenAPITools/Model/Fruit.cs +src/Org.OpenAPITools/Model/FruitReq.cs +src/Org.OpenAPITools/Model/GmFruit.cs +src/Org.OpenAPITools/Model/GrandparentAnimal.cs +src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InlineResponseDefault.cs +src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +src/Org.OpenAPITools/Model/List.cs +src/Org.OpenAPITools/Model/Mammal.cs +src/Org.OpenAPITools/Model/MapTest.cs +src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Model200Response.cs +src/Org.OpenAPITools/Model/ModelClient.cs +src/Org.OpenAPITools/Model/Name.cs +src/Org.OpenAPITools/Model/NullableClass.cs +src/Org.OpenAPITools/Model/NullableShape.cs +src/Org.OpenAPITools/Model/NumberOnly.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/OuterComposite.cs +src/Org.OpenAPITools/Model/OuterEnum.cs +src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +src/Org.OpenAPITools/Model/OuterEnumInteger.cs +src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +src/Org.OpenAPITools/Model/ParentPet.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Pig.cs +src/Org.OpenAPITools/Model/Quadrilateral.cs +src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +src/Org.OpenAPITools/Model/Return.cs +src/Org.OpenAPITools/Model/ScaleneTriangle.cs +src/Org.OpenAPITools/Model/Shape.cs +src/Org.OpenAPITools/Model/ShapeInterface.cs +src/Org.OpenAPITools/Model/ShapeOrNull.cs +src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +src/Org.OpenAPITools/Model/SpecialModelName.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/Triangle.cs +src/Org.OpenAPITools/Model/TriangleInterface.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Model/Whale.cs +src/Org.OpenAPITools/Model/Zebra.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/FILES index 09de5cdb39c..37763cd49bc 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/FILES @@ -1,186 +1,186 @@ -.gitignore -Org.OpenAPITools.sln -README.md -appveyor.yml -docs/AdditionalPropertiesClass.md -docs/Animal.md -docs/AnotherFakeApi.md -docs/ApiResponse.md -docs/Apple.md -docs/AppleReq.md -docs/ArrayOfArrayOfNumberOnly.md -docs/ArrayOfNumberOnly.md -docs/ArrayTest.md -docs/Banana.md -docs/BananaReq.md -docs/BasquePig.md -docs/Capitalization.md -docs/Cat.md -docs/CatAllOf.md -docs/Category.md -docs/ChildCat.md -docs/ChildCatAllOf.md -docs/ClassModel.md -docs/ComplexQuadrilateral.md -docs/DanishPig.md -docs/DefaultApi.md -docs/Dog.md -docs/DogAllOf.md -docs/Drawing.md -docs/EnumArrays.md -docs/EnumClass.md -docs/EnumTest.md -docs/EquilateralTriangle.md -docs/FakeApi.md -docs/FakeClassnameTags123Api.md -docs/File.md -docs/FileSchemaTestClass.md -docs/Foo.md -docs/FormatTest.md -docs/Fruit.md -docs/FruitReq.md -docs/GmFruit.md -docs/GrandparentAnimal.md -docs/HasOnlyReadOnly.md -docs/HealthCheckResult.md -docs/InlineResponseDefault.md -docs/IsoscelesTriangle.md -docs/List.md -docs/Mammal.md -docs/MapTest.md -docs/MixedPropertiesAndAdditionalPropertiesClass.md -docs/Model200Response.md -docs/ModelClient.md -docs/Name.md -docs/NullableClass.md -docs/NullableShape.md -docs/NumberOnly.md -docs/Order.md -docs/OuterComposite.md -docs/OuterEnum.md -docs/OuterEnumDefaultValue.md -docs/OuterEnumInteger.md -docs/OuterEnumIntegerDefaultValue.md -docs/ParentPet.md -docs/Pet.md -docs/PetApi.md -docs/Pig.md -docs/Quadrilateral.md -docs/QuadrilateralInterface.md -docs/ReadOnlyFirst.md -docs/Return.md -docs/ScaleneTriangle.md -docs/Shape.md -docs/ShapeInterface.md -docs/ShapeOrNull.md -docs/SimpleQuadrilateral.md -docs/SpecialModelName.md -docs/StoreApi.md -docs/Tag.md -docs/Triangle.md -docs/TriangleInterface.md -docs/User.md -docs/UserApi.md -docs/Whale.md -docs/Zebra.md -git_push.sh -src/Org.OpenAPITools/Api/AnotherFakeApi.cs -src/Org.OpenAPITools/Api/DefaultApi.cs -src/Org.OpenAPITools/Api/FakeApi.cs -src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs -src/Org.OpenAPITools/Api/PetApi.cs -src/Org.OpenAPITools/Api/StoreApi.cs -src/Org.OpenAPITools/Api/UserApi.cs -src/Org.OpenAPITools/Client/ApiClient.cs -src/Org.OpenAPITools/Client/ApiException.cs -src/Org.OpenAPITools/Client/ApiResponse.cs -src/Org.OpenAPITools/Client/ClientUtils.cs -src/Org.OpenAPITools/Client/Configuration.cs -src/Org.OpenAPITools/Client/ExceptionFactory.cs -src/Org.OpenAPITools/Client/GlobalConfiguration.cs -src/Org.OpenAPITools/Client/HttpMethod.cs -src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs -src/Org.OpenAPITools/Client/IApiAccessor.cs -src/Org.OpenAPITools/Client/IAsynchronousClient.cs -src/Org.OpenAPITools/Client/IReadableConfiguration.cs -src/Org.OpenAPITools/Client/ISynchronousClient.cs -src/Org.OpenAPITools/Client/Multimap.cs -src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs -src/Org.OpenAPITools/Client/RequestOptions.cs -src/Org.OpenAPITools/Client/RetryConfiguration.cs -src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs -src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Animal.cs -src/Org.OpenAPITools/Model/ApiResponse.cs -src/Org.OpenAPITools/Model/Apple.cs -src/Org.OpenAPITools/Model/AppleReq.cs -src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs -src/Org.OpenAPITools/Model/ArrayTest.cs -src/Org.OpenAPITools/Model/Banana.cs -src/Org.OpenAPITools/Model/BananaReq.cs -src/Org.OpenAPITools/Model/BasquePig.cs -src/Org.OpenAPITools/Model/Capitalization.cs -src/Org.OpenAPITools/Model/Cat.cs -src/Org.OpenAPITools/Model/CatAllOf.cs -src/Org.OpenAPITools/Model/Category.cs -src/Org.OpenAPITools/Model/ChildCat.cs -src/Org.OpenAPITools/Model/ChildCatAllOf.cs -src/Org.OpenAPITools/Model/ClassModel.cs -src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs -src/Org.OpenAPITools/Model/DanishPig.cs -src/Org.OpenAPITools/Model/Dog.cs -src/Org.OpenAPITools/Model/DogAllOf.cs -src/Org.OpenAPITools/Model/Drawing.cs -src/Org.OpenAPITools/Model/EnumArrays.cs -src/Org.OpenAPITools/Model/EnumClass.cs -src/Org.OpenAPITools/Model/EnumTest.cs -src/Org.OpenAPITools/Model/EquilateralTriangle.cs -src/Org.OpenAPITools/Model/File.cs -src/Org.OpenAPITools/Model/FileSchemaTestClass.cs -src/Org.OpenAPITools/Model/Foo.cs -src/Org.OpenAPITools/Model/FormatTest.cs -src/Org.OpenAPITools/Model/Fruit.cs -src/Org.OpenAPITools/Model/FruitReq.cs -src/Org.OpenAPITools/Model/GmFruit.cs -src/Org.OpenAPITools/Model/GrandparentAnimal.cs -src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs -src/Org.OpenAPITools/Model/HealthCheckResult.cs -src/Org.OpenAPITools/Model/InlineResponseDefault.cs -src/Org.OpenAPITools/Model/IsoscelesTriangle.cs -src/Org.OpenAPITools/Model/List.cs -src/Org.OpenAPITools/Model/Mammal.cs -src/Org.OpenAPITools/Model/MapTest.cs -src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs -src/Org.OpenAPITools/Model/Model200Response.cs -src/Org.OpenAPITools/Model/ModelClient.cs -src/Org.OpenAPITools/Model/Name.cs -src/Org.OpenAPITools/Model/NullableClass.cs -src/Org.OpenAPITools/Model/NullableShape.cs -src/Org.OpenAPITools/Model/NumberOnly.cs -src/Org.OpenAPITools/Model/Order.cs -src/Org.OpenAPITools/Model/OuterComposite.cs -src/Org.OpenAPITools/Model/OuterEnum.cs -src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs -src/Org.OpenAPITools/Model/OuterEnumInteger.cs -src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs -src/Org.OpenAPITools/Model/ParentPet.cs -src/Org.OpenAPITools/Model/Pet.cs -src/Org.OpenAPITools/Model/Pig.cs -src/Org.OpenAPITools/Model/Quadrilateral.cs -src/Org.OpenAPITools/Model/QuadrilateralInterface.cs -src/Org.OpenAPITools/Model/ReadOnlyFirst.cs -src/Org.OpenAPITools/Model/Return.cs -src/Org.OpenAPITools/Model/ScaleneTriangle.cs -src/Org.OpenAPITools/Model/Shape.cs -src/Org.OpenAPITools/Model/ShapeInterface.cs -src/Org.OpenAPITools/Model/ShapeOrNull.cs -src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs -src/Org.OpenAPITools/Model/SpecialModelName.cs -src/Org.OpenAPITools/Model/Tag.cs -src/Org.OpenAPITools/Model/Triangle.cs -src/Org.OpenAPITools/Model/TriangleInterface.cs -src/Org.OpenAPITools/Model/User.cs -src/Org.OpenAPITools/Model/Whale.cs -src/Org.OpenAPITools/Model/Zebra.cs -src/Org.OpenAPITools/Org.OpenAPITools.csproj +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnotherFakeApi.md +docs/ApiResponse.md +docs/Apple.md +docs/AppleReq.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Banana.md +docs/BananaReq.md +docs/BasquePig.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ChildCat.md +docs/ChildCatAllOf.md +docs/ClassModel.md +docs/ComplexQuadrilateral.md +docs/DanishPig.md +docs/DefaultApi.md +docs/Dog.md +docs/DogAllOf.md +docs/Drawing.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/EquilateralTriangle.md +docs/FakeApi.md +docs/FakeClassnameTags123Api.md +docs/File.md +docs/FileSchemaTestClass.md +docs/Foo.md +docs/FormatTest.md +docs/Fruit.md +docs/FruitReq.md +docs/GmFruit.md +docs/GrandparentAnimal.md +docs/HasOnlyReadOnly.md +docs/HealthCheckResult.md +docs/InlineResponseDefault.md +docs/IsoscelesTriangle.md +docs/List.md +docs/Mammal.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/ModelClient.md +docs/Name.md +docs/NullableClass.md +docs/NullableShape.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/OuterEnumDefaultValue.md +docs/OuterEnumInteger.md +docs/OuterEnumIntegerDefaultValue.md +docs/ParentPet.md +docs/Pet.md +docs/PetApi.md +docs/Pig.md +docs/Quadrilateral.md +docs/QuadrilateralInterface.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/ScaleneTriangle.md +docs/Shape.md +docs/ShapeInterface.md +docs/ShapeOrNull.md +docs/SimpleQuadrilateral.md +docs/SpecialModelName.md +docs/StoreApi.md +docs/Tag.md +docs/Triangle.md +docs/TriangleInterface.md +docs/User.md +docs/UserApi.md +docs/Whale.md +docs/Zebra.md +git_push.sh +src/Org.OpenAPITools/Api/AnotherFakeApi.cs +src/Org.OpenAPITools/Api/DefaultApi.cs +src/Org.OpenAPITools/Api/FakeApi.cs +src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpMethod.cs +src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Animal.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Apple.cs +src/Org.OpenAPITools/Model/AppleReq.cs +src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayTest.cs +src/Org.OpenAPITools/Model/Banana.cs +src/Org.OpenAPITools/Model/BananaReq.cs +src/Org.OpenAPITools/Model/BasquePig.cs +src/Org.OpenAPITools/Model/Capitalization.cs +src/Org.OpenAPITools/Model/Cat.cs +src/Org.OpenAPITools/Model/CatAllOf.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/ChildCat.cs +src/Org.OpenAPITools/Model/ChildCatAllOf.cs +src/Org.OpenAPITools/Model/ClassModel.cs +src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +src/Org.OpenAPITools/Model/DanishPig.cs +src/Org.OpenAPITools/Model/Dog.cs +src/Org.OpenAPITools/Model/DogAllOf.cs +src/Org.OpenAPITools/Model/Drawing.cs +src/Org.OpenAPITools/Model/EnumArrays.cs +src/Org.OpenAPITools/Model/EnumClass.cs +src/Org.OpenAPITools/Model/EnumTest.cs +src/Org.OpenAPITools/Model/EquilateralTriangle.cs +src/Org.OpenAPITools/Model/File.cs +src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +src/Org.OpenAPITools/Model/Foo.cs +src/Org.OpenAPITools/Model/FormatTest.cs +src/Org.OpenAPITools/Model/Fruit.cs +src/Org.OpenAPITools/Model/FruitReq.cs +src/Org.OpenAPITools/Model/GmFruit.cs +src/Org.OpenAPITools/Model/GrandparentAnimal.cs +src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InlineResponseDefault.cs +src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +src/Org.OpenAPITools/Model/List.cs +src/Org.OpenAPITools/Model/Mammal.cs +src/Org.OpenAPITools/Model/MapTest.cs +src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Model200Response.cs +src/Org.OpenAPITools/Model/ModelClient.cs +src/Org.OpenAPITools/Model/Name.cs +src/Org.OpenAPITools/Model/NullableClass.cs +src/Org.OpenAPITools/Model/NullableShape.cs +src/Org.OpenAPITools/Model/NumberOnly.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/OuterComposite.cs +src/Org.OpenAPITools/Model/OuterEnum.cs +src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +src/Org.OpenAPITools/Model/OuterEnumInteger.cs +src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +src/Org.OpenAPITools/Model/ParentPet.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Pig.cs +src/Org.OpenAPITools/Model/Quadrilateral.cs +src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +src/Org.OpenAPITools/Model/Return.cs +src/Org.OpenAPITools/Model/ScaleneTriangle.cs +src/Org.OpenAPITools/Model/Shape.cs +src/Org.OpenAPITools/Model/ShapeInterface.cs +src/Org.OpenAPITools/Model/ShapeOrNull.cs +src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +src/Org.OpenAPITools/Model/SpecialModelName.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/Triangle.cs +src/Org.OpenAPITools/Model/TriangleInterface.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Model/Whale.cs +src/Org.OpenAPITools/Model/Zebra.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/FILES index 92c394a9315..60d0f82fefd 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/FILES +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/FILES @@ -1,42 +1,42 @@ -.gitignore -Org.OpenAPITools.sln -README.md -appveyor.yml -docs/ApiResponse.md -docs/Category.md -docs/Order.md -docs/Pet.md -docs/PetApi.md -docs/StoreApi.md -docs/Tag.md -docs/User.md -docs/UserApi.md -git_push.sh -src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj -src/Org.OpenAPITools/Api/PetApi.cs -src/Org.OpenAPITools/Api/StoreApi.cs -src/Org.OpenAPITools/Api/UserApi.cs -src/Org.OpenAPITools/Client/ApiClient.cs -src/Org.OpenAPITools/Client/ApiException.cs -src/Org.OpenAPITools/Client/ApiResponse.cs -src/Org.OpenAPITools/Client/ClientUtils.cs -src/Org.OpenAPITools/Client/Configuration.cs -src/Org.OpenAPITools/Client/ExceptionFactory.cs -src/Org.OpenAPITools/Client/GlobalConfiguration.cs -src/Org.OpenAPITools/Client/HttpMethod.cs -src/Org.OpenAPITools/Client/IApiAccessor.cs -src/Org.OpenAPITools/Client/IAsynchronousClient.cs -src/Org.OpenAPITools/Client/IReadableConfiguration.cs -src/Org.OpenAPITools/Client/ISynchronousClient.cs -src/Org.OpenAPITools/Client/Multimap.cs -src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs -src/Org.OpenAPITools/Client/RequestOptions.cs -src/Org.OpenAPITools/Client/RetryConfiguration.cs -src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs -src/Org.OpenAPITools/Model/ApiResponse.cs -src/Org.OpenAPITools/Model/Category.cs -src/Org.OpenAPITools/Model/Order.cs -src/Org.OpenAPITools/Model/Pet.cs -src/Org.OpenAPITools/Model/Tag.cs -src/Org.OpenAPITools/Model/User.cs -src/Org.OpenAPITools/Org.OpenAPITools.csproj +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/ApiResponse.md +docs/Category.md +docs/Order.md +docs/Pet.md +docs/PetApi.md +docs/StoreApi.md +docs/Tag.md +docs/User.md +docs/UserApi.md +git_push.sh +src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpMethod.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj From 2e85ccdec8c3304e42c3434ef6da54a637a13e1a Mon Sep 17 00:00:00 2001 From: Max Goltzsche Date: Mon, 21 Jun 2021 05:46:51 +0200 Subject: [PATCH 155/192] [go-server] fix addResponseHeaders tpl option typo (#9814) According to the [documentation](https://openapi-generator.tech/docs/generators/go-server) the go-server generator should support an `addResponseHeaders` option but a template uses an `addResponseHeader` option in some places which this PR fixes. Closes #9795 Signed-off-by: Max Goltzsche --- .../src/main/resources/go-server/routers.mustache | 8 ++++---- samples/server/petstore/go-api-server/go/routers.go | 10 +++++++++- samples/server/petstore/go-chi-server/go/routers.go | 10 +++++++++- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/go-server/routers.mustache b/modules/openapi-generator/src/main/resources/go-server/routers.mustache index d7e3642549c..b26f8febb41 100644 --- a/modules/openapi-generator/src/main/resources/go-server/routers.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/routers.mustache @@ -88,7 +88,7 @@ func NewRouter(routers ...Router) {{#routers}}{{#mux}}*mux.Router{{/mux}}{{#chi} // EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code func EncodeJSONResponse(i interface{}, status *int,{{#addResponseHeaders}} headers map[string][]string,{{/addResponseHeaders}} w http.ResponseWriter) error { - {{#addResponseHeader}} + {{#addResponseHeaders}} wHeader := w.Header() if headers != nil { for key, values := range headers { @@ -98,10 +98,10 @@ func EncodeJSONResponse(i interface{}, status *int,{{#addResponseHeaders}} heade } } wHeader.Set("Content-Type", "application/json; charset=UTF-8") - {{/addResponseHeader}} - {{^addResponseHeader}} + {{/addResponseHeaders}} + {{^addResponseHeaders}} w.Header().Set("Content-Type", "application/json; charset=UTF-8") - {{/addResponseHeader}} + {{/addResponseHeaders}} if status != nil { w.WriteHeader(*status) } else { diff --git a/samples/server/petstore/go-api-server/go/routers.go b/samples/server/petstore/go-api-server/go/routers.go index 7f41207fbde..2b34778c5a1 100644 --- a/samples/server/petstore/go-api-server/go/routers.go +++ b/samples/server/petstore/go-api-server/go/routers.go @@ -61,7 +61,15 @@ func NewRouter(routers ...Router) *mux.Router { // EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, w http.ResponseWriter) error { - w.Header().Set("Content-Type", "application/json; charset=UTF-8") + wHeader := w.Header() + if headers != nil { + for key, values := range headers { + for _, value := range values { + wHeader.Add(key, value) + } + } + } + wHeader.Set("Content-Type", "application/json; charset=UTF-8") if status != nil { w.WriteHeader(*status) } else { diff --git a/samples/server/petstore/go-chi-server/go/routers.go b/samples/server/petstore/go-chi-server/go/routers.go index 74b5392ac87..3213d5dde23 100644 --- a/samples/server/petstore/go-chi-server/go/routers.go +++ b/samples/server/petstore/go-chi-server/go/routers.go @@ -57,7 +57,15 @@ func NewRouter(routers ...Router) chi.Router { // EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, w http.ResponseWriter) error { - w.Header().Set("Content-Type", "application/json; charset=UTF-8") + wHeader := w.Header() + if headers != nil { + for key, values := range headers { + for _, value := range values { + wHeader.Add(key, value) + } + } + } + wHeader.Set("Content-Type", "application/json; charset=UTF-8") if status != nil { w.WriteHeader(*status) } else { From 969cea8ce10cb9d012c3936fb377d631c0d044c9 Mon Sep 17 00:00:00 2001 From: Kuzma <57258237+ksvirkou-hubspot@users.noreply.github.com> Date: Tue, 22 Jun 2021 00:42:47 +0300 Subject: [PATCH 156/192] [Typescript] Fix oneOf (#9628) * on of * fix map * samples * file to any * samples * add unit tests * clear code --- .../languages/TypeScriptClientCodegen.java | 114 +++++++++++++++--- .../typescript/TypeScriptClientModelTest.java | 57 +++++++++ 2 files changed, 151 insertions(+), 20 deletions(-) create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/TypeScriptClientModelTest.java diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java index c8fe4b4e042..389408e8fae 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java @@ -19,6 +19,7 @@ package org.openapitools.codegen.languages; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.media.ArraySchema; +import io.swagger.v3.oas.models.media.ComposedSchema; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.parameters.Parameter; import org.apache.commons.lang3.StringUtils; @@ -32,6 +33,8 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; + import static org.openapitools.codegen.utils.StringUtils.camelize; import static org.openapitools.codegen.utils.StringUtils.underscore; @@ -144,10 +147,12 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo typeMapping.put("object", "any"); typeMapping.put("integer", "number"); typeMapping.put("Map", "any"); + typeMapping.put("map", "any"); typeMapping.put("date", "string"); typeMapping.put("DateTime", "Date"); typeMapping.put("binary", "any"); typeMapping.put("File", "any"); + typeMapping.put("file", "any"); typeMapping.put("ByteArray", "string"); typeMapping.put("UUID", "string"); typeMapping.put("Error", "Error"); @@ -373,40 +378,56 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo } @Override - public String toModelName(String name) { - name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'. + public String toModelName(final String name) { + String fullModelName = name; + fullModelName = addPrefix(fullModelName, modelNamePrefix); + fullModelName = addSuffix(fullModelName, modelNameSuffix); + return toTypescriptTypeName(fullModelName, "Model"); + } - if (!StringUtils.isEmpty(modelNamePrefix)) { - name = modelNamePrefix + "_" + name; + protected String addPrefix(String name, String prefix) { + if (!StringUtils.isEmpty(prefix)) { + name = prefix + "_" + name; + } + return name; + } + + protected String addSuffix(String name, String suffix) { + if (!StringUtils.isEmpty(suffix)) { + name = name + "_" + suffix; } - if (!StringUtils.isEmpty(modelNameSuffix)) { - name = name + "_" + modelNameSuffix; - } + return name; + } + + protected String toTypescriptTypeName(final String name, String safePrefix) { + ArrayList exceptions = new ArrayList(Arrays.asList("\\|", " ")); + String sanName = sanitizeName(name, "(?![| ])\\W", exceptions); + + sanName = camelize(sanName); // model name cannot use reserved keyword, e.g. return - if (isReservedWord(name)) { - String modelName = camelize("model_" + name); - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + modelName); + // this is unlikely to happen, because we have just camelized the name, while reserved words are usually all lowcase + if (isReservedWord(sanName)) { + String modelName = safePrefix + sanName; + LOGGER.warn(sanName + " (reserved word) cannot be used as model name. Renamed to " + modelName); return modelName; } // model name starts with number - if (name.matches("^\\d.*")) { - String modelName = camelize("model_" + name); // e.g. 200Response => Model200Response (after camelize) - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); + if (sanName.matches("^\\d.*")) { + String modelName = safePrefix + sanName; // e.g. 200Response => Model200Response + LOGGER.warn(sanName + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); return modelName; } - if (languageSpecificPrimitives.contains(name)) { - String modelName = camelize("model_" + name); - LOGGER.warn(name + " (model name matches existing language type) cannot be used as a model name. Renamed to " + modelName); + if (languageSpecificPrimitives.contains(sanName)) { + String modelName = safePrefix + sanName; + LOGGER.warn(sanName + " (model name matches existing language type) cannot be used as a model name. Renamed to " + modelName); return modelName; } - // camelize the model name - // phone_number => PhoneNumber - return camelize(name); + return sanName; } @Override @@ -521,7 +542,9 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo public String getSchemaType(Schema p) { String openAPIType = super.getSchemaType(p); String type = null; - if (typeMapping.containsKey(openAPIType)) { + if (ModelUtils.isComposedSchema(p)) { + return openAPIType; + } else if (typeMapping.containsKey(openAPIType)) { type = typeMapping.get(openAPIType); if (languageSpecificPrimitives.contains(type)) return type; @@ -853,4 +876,55 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo codegenModel.additionalPropertiesType = getTypeDeclaration((Schema) schema.getAdditionalProperties()); addImport(codegenModel, codegenModel.additionalPropertiesType); } + + @Override + public String toAnyOfName(List names, ComposedSchema composedSchema) { + List types = getTypesFromSchemas(composedSchema.getAnyOf()); + + return String.join(" | ", types); + } + + @Override + public String toOneOfName(List names, ComposedSchema composedSchema) { + List types = getTypesFromSchemas(composedSchema.getOneOf()); + + return String.join(" | ", types); + } + + /** + * Extracts the list of type names from a list of schemas. + * Excludes `AnyType` if there are other valid types extracted. + * + * @param schemas list of schemas + * @return list of types + */ + protected List getTypesFromSchemas(List schemas) { + List filteredSchemas = schemas.size() > 1 + ? schemas.stream().filter(schema -> !"AnyType".equals(super.getSchemaType(schema))).collect(Collectors.toList()) + : schemas; + + return filteredSchemas.stream().map(schema -> { + String schemaType = getSchemaType(schema); + if (ModelUtils.isArraySchema(schema)) { + ArraySchema ap = (ArraySchema) schema; + Schema inner = ap.getItems(); + schemaType = schemaType + "<" + getSchemaType(inner) + ">"; + } + return schemaType; + }).distinct().collect(Collectors.toList()); + } + + @Override + protected void addImport(CodegenModel m, String type) { + if (type == null) { + return; + } + + String[] parts = type.split("( [|&] )|[<>]"); + for (String s : parts) { + if (needToImport(s)) { + m.imports.add(s); + } + } + } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/TypeScriptClientModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/TypeScriptClientModelTest.java new file mode 100644 index 00000000000..5a8333b5e5e --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/TypeScriptClientModelTest.java @@ -0,0 +1,57 @@ +package org.openapitools.codegen.typescript; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.media.*; +import org.openapitools.codegen.CodegenModel; +import org.openapitools.codegen.DefaultCodegen; +import org.openapitools.codegen.TestUtils; +import org.openapitools.codegen.languages.TypeScriptClientCodegen; +import org.openapitools.codegen.utils.ModelUtils; +import org.testng.Assert; +import org.testng.annotations.Test; + + +public class TypeScriptClientModelTest { + + @Test(description = "convert an array oneof model") + public void arrayOneOfModelTest() { + final Schema schema = new ArraySchema() + .items(new ComposedSchema() + .addOneOfItem(new StringSchema()) + .addOneOfItem(new IntegerSchema().format("int64"))) + .description("an array oneof model"); + final DefaultCodegen codegen = new TypeScriptClientCodegen(); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", schema); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel("sample", schema); + + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "an array oneof model"); + Assert.assertEquals(cm.arrayModelType, "string | number"); + Assert.assertEquals(cm.vars.size(), 0); + } + + @Test(description = "convert an any of with array oneof model") + public void objectPropertyAnyOfWithArrayOneOfModelTest() { + final Schema schema = new ObjectSchema().addProperties("value", + new ComposedSchema().addAnyOfItem(new StringSchema()).addAnyOfItem(new ArraySchema() + .items(new ComposedSchema() + .addOneOfItem(new StringSchema()) + .addOneOfItem(new IntegerSchema().format("int64"))))) + .description("an any of with array oneof model"); + final DefaultCodegen codegen = new TypeScriptClientCodegen(); + OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", schema); + codegen.setOpenAPI(openAPI); + final CodegenModel cm = codegen.fromModel("sample", schema); + + String s = codegen.getSchemaType((Schema)schema.getProperties().get("value")); + + Assert.assertEquals(cm.name, "sample"); + Assert.assertEquals(cm.classname, "Sample"); + Assert.assertEquals(cm.description, "an any of with array oneof model"); + Assert.assertEquals(cm.vars.size(), 1); + Assert.assertEquals(s, "string | Array"); + } +} From 77f84ec81119ced14dab734f4e546745d9d66bd0 Mon Sep 17 00:00:00 2001 From: Kevyn Liebersbach Date: Wed, 23 Jun 2021 13:29:48 +1000 Subject: [PATCH 157/192] Limit depth of example code generation in RClientCodegen (#9822) --- .../codegen/languages/RClientCodegen.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java index 1d441a98b2f..5b34726bcbe 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java @@ -707,7 +707,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { public String constructExampleCode(CodegenParameter codegenParameter, HashMap modelMaps) { if (codegenParameter.isArray) { // array - return "list(" + constructExampleCode(codegenParameter.items, modelMaps) + ")"; + return "list(" + constructExampleCode(codegenParameter.items, modelMaps, 0) + ")"; } else if (codegenParameter.isMap) { // TODO: map return "TODO"; } else if (languageSpecificPrimitives.contains(codegenParameter.dataType)) { // primitive type @@ -715,7 +715,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { } else { // model // look up the model if (modelMaps.containsKey(codegenParameter.dataType)) { - return constructExampleCode(modelMaps.get(codegenParameter.dataType), modelMaps); + return constructExampleCode(modelMaps.get(codegenParameter.dataType), modelMaps, 0); } else { LOGGER.error("Error in constructing examples. Failed to look up the model {}", codegenParameter.dataType); return "TODO"; @@ -723,9 +723,12 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { } } - public String constructExampleCode(CodegenProperty codegenProperty, HashMap modelMaps) { + public String constructExampleCode(CodegenProperty codegenProperty, HashMap modelMaps, int depth) { + if (depth > 10) return "..."; + depth++; + if (codegenProperty.isArray) { // array - return "list(" + constructExampleCode(codegenProperty.items, modelMaps) + ")"; + return "list(" + constructExampleCode(codegenProperty.items, modelMaps, depth) + ")"; } else if (codegenProperty.isMap) { // TODO: map return "TODO"; } else if (languageSpecificPrimitives.contains(codegenProperty.dataType)) { // primitive type @@ -749,7 +752,7 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { } else { // look up the model if (modelMaps.containsKey(codegenProperty.dataType)) { - return constructExampleCode(modelMaps.get(codegenProperty.dataType), modelMaps); + return constructExampleCode(modelMaps.get(codegenProperty.dataType), modelMaps, depth); } else { LOGGER.error("Error in constructing examples. Failed to look up the model {}", codegenProperty.dataType); return "TODO"; @@ -757,18 +760,21 @@ public class RClientCodegen extends DefaultCodegen implements CodegenConfig { } } - public String constructExampleCode(CodegenModel codegenModel, HashMap modelMaps) { + public String constructExampleCode(CodegenModel codegenModel, HashMap modelMaps, int depth) { + if (depth > 10) return "..."; + depth++; + String example; example = codegenModel.name + "$new("; List propertyExamples = new ArrayList<>(); // required properties first for (CodegenProperty codegenProperty : codegenModel.requiredVars) { - propertyExamples.add(constructExampleCode(codegenProperty, modelMaps)); + propertyExamples.add(constructExampleCode(codegenProperty, modelMaps, depth)); } // optional properties second for (CodegenProperty codegenProperty : codegenModel.optionalVars) { - propertyExamples.add(constructExampleCode(codegenProperty, modelMaps)); + propertyExamples.add(constructExampleCode(codegenProperty, modelMaps, depth)); } example += StringUtils.join(propertyExamples, ", "); From 5bf4e77400d6ad87c9d9afcd6be8b85c459550f0 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Wed, 23 Jun 2021 15:16:07 +0800 Subject: [PATCH 158/192] Add a link to blog post about openapi-generator (#9832) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 172b600e4d4..6c3fdbc37f9 100644 --- a/README.md +++ b/README.md @@ -816,6 +816,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2021-04-22 - [Leveraging OpenApi strengths in a Micro-Service environment](https://medium.com/unibuddy-technology-blog/leveraging-openapi-strengths-in-a-micro-service-environment-3d7f9e7c26ff) by Nicolas Jellab at [Unibuddy Technology Blog](https://medium.com/unibuddy-technology-blog) - 2021-04-27 - [From zero to publishing PowerShell API clients in PowerShell Gallery within minutes](https://speakerdeck.com/wing328/from-zero-to-publishing-powershell-api-clients-in-powershell-gallery-within-minutes) by [William Cheng](https://github.com/wing328) at [PowerShell + DevOps Global Summit 2021](https://events.devopscollective.org/event/powershell-devops-global-summit-2021/) - 2021-05-31 - [FlutterでOpen Api Generator(Swagger)を使う](https://aakira.app/blog/2021/05/flutter-open-api/) by [AAkira](https://twitter.com/_a_akira) +- 2021-06-22 - [Rest API Documentation and Client Generation With OpenAPI](https://dzone.com/articles/rest-api-documentation-and-client-generation-with) by [Prasanth Gullapalli](https://dzone.com/users/1011797/prasanthnath.g@gmail.com.html) ## [6 - About Us](#table-of-contents) From 48e05ce16283f59ce6889543e3aac47ce1f1a2ad Mon Sep 17 00:00:00 2001 From: bflamand <33287817+bflamand@users.noreply.github.com> Date: Wed, 23 Jun 2021 12:07:17 -0400 Subject: [PATCH 159/192] [Typescript Fetch] New optional mode with redux saga & immutablejs (saga & records) (#8578) * first commit: add cli option for saga and records. Added dummy sagas.mustache test file. * More progress with default values. First prototype for isEntity and isUniqueId. * record generation complete * record generation complete * progress with saga generation * progress with saga generation * first fully working saga generation * merge with latest master * removed unneeded "items" properties. * moved global CodegenModel modifications into subclass ExtendedCodegenModel used exclusively by TypescriptFetchClient. Adding missing samples files. * moved global CodegenOperation modifications into subclass ExtendedCodegenOperation used exclusively by TypescriptFetchClient. * moved global CodegenProperty modifications into subclass ExtendedCodegenProperty used exclusively by TypescriptFetchClient. * moved global CodegenParameter modifications into subclass ExtendedCodegenParameter used exclusively by TypescriptFetchClient. * added the missing "allSagas" export. * renamed & reworked "meta data response" flags to a more useful general concept of "operation return passthrough" * added vendor flag keepAsJSObject as escape hatch to support circular dependencies in models and other special cases. Also fixed issues with default values for some records properties. * added autodetection for passthrough to simplify standardised specs. * fix small issue with passthrough void * fix small issues with passthrough void and missing passthrough imports in some cases. Fix issues with enum default values. * fix small issues with passthrough void and missing passthrough imports in some cases. Fix issues with enum default values. * Added "reservedRecordField" feature to support remapping fields names that cannot be used in Records. Added missing export to record: toApi(). * added uniqueId inference. Fix small generation when uniqueId property is an array. * removed feature "reservedRecordField" and replaced it with existing built-in "reserved words" feature. Fix minor issues with typings in generated files. * Changed api recType names to make them less likely to cause name conflicts. Added generated ApiEntities (record, reducer & selector) files. * Moved location of ApiEntities related files and fix issues with exports. * - merge latest master - renamed fake test apis to better fit the "pet theme" - added mode for "SourceOnlyLibrary" (same as used in codegen typescript jquery) * - missing ganarate sampless * - Modified way to export apiEntitiesSelectpr to reduce typescript analysis time for consuming project. Removed tab characters in mustache files. Reformat code for TypeScriptFetchClientCodegen to try to remove false positive for tabs vs spaces. * - added markErrorsAsHandled property to api sagas. Increased typescript version to address some typing errors on library build. * - fix bug in saga interfaces. Upgraded to typescript "strict" mode to ensure proper typechecking info is generated. * - added optional id for apiEntity selectors. Added toInlined() support to convert an entity to an inlined model recursively. * - minor tweak for apiEntitySelector to accept null id * - minor tweak for apiEntitySelector * - runned ensure up to date. * Revert "- runned ensure up to date." This reverts commit ea9b4aed * - runned ensure up to date. * - runned ensure up to date. Co-authored-by: Bruno Flamand --- .../typescript-fetch-sagas-and-records.yaml | 16 + docs/generators/typescript-fetch.md | 1 + .../openapitools/codegen/DefaultCodegen.java | 18 +- .../TypeScriptFetchClientCodegen.java | 1106 +++++++++++++++- .../ApiEntitiesRecord.mustache | 26 + .../ApiEntitiesReducer.mustache | 21 + .../ApiEntitiesSelectors.mustache | 5 + .../typescript-fetch/allSagas.mustache | 19 + .../typescript-fetch/apis.index.mustache | 7 + .../resources/typescript-fetch/index.mustache | 6 + .../typescript-fetch/models.index.mustache | 8 +- .../typescript-fetch/package.mustache | 17 +- .../typescript-fetch/recordGeneric.mustache | 271 ++++ .../typescript-fetch/records.mustache | 15 + .../runtimeSagasAndRecords.mustache | 120 ++ .../typescript-fetch/sagaApiManager.mustache | 36 + .../resources/typescript-fetch/sagas.mustache | 239 ++++ .../sourceLibraryIndex.mustache | 1 + .../typescript-fetch/tsconfig.mustache | 3 + .../TypeScriptFetchClientOptionsProvider.java | 2 + .../TypeScriptFetchClientOptionsTest.java | 1 + ...s-models-for-testing-saga-and-records.yaml | 1175 +++++++++++++++++ .../builds/sagas-and-records/.gitignore | 4 + .../builds/sagas-and-records/.npmignore | 1 + .../.openapi-generator-ignore | 23 + .../.openapi-generator/FILES | 71 + .../.openapi-generator/VERSION | 1 + .../builds/sagas-and-records/README.md | 45 + .../builds/sagas-and-records/package.json | 21 + .../src/ApiEntitiesRecord.ts | 22 + .../src/ApiEntitiesReducer.ts | 21 + .../src/ApiEntitiesSelectors.ts | 5 + .../sagas-and-records/src/apis/BehaviorApi.ts | 99 ++ .../src/apis/BehaviorApiSagas.ts | 131 ++ .../sagas-and-records/src/apis/PetApi.ts | 560 ++++++++ .../sagas-and-records/src/apis/PetApiSagas.ts | 565 ++++++++ .../sagas-and-records/src/apis/PetPartApi.ts | 136 ++ .../src/apis/PetPartApiSagas.ts | 156 +++ .../src/apis/SagaApiManager.ts | 36 + .../sagas-and-records/src/apis/StoreApi.ts | 168 +++ .../src/apis/StoreApiSagas.ts | 225 ++++ .../sagas-and-records/src/apis/UserApi.ts | 326 +++++ .../src/apis/UserApiSagas.ts | 395 ++++++ .../sagas-and-records/src/apis/allSagas.ts | 19 + .../sagas-and-records/src/apis/index.ts | 12 + .../builds/sagas-and-records/src/index.ts | 7 + .../src/models/BehaviorType.ts | 37 + .../src/models/BehaviorTypeRecord.ts | 1 + .../sagas-and-records/src/models/Category.ts | 65 + .../src/models/CategoryRecord.ts | 104 ++ .../src/models/DefaultMetaOnlyResponse.ts | 64 + .../models/DefaultMetaOnlyResponseRecord.ts | 62 + .../src/models/DeploymentRequestStatus.ts | 46 + .../models/DeploymentRequestStatusRecord.ts | 1 + .../sagas-and-records/src/models/ErrorCode.ts | 52 + .../src/models/ErrorCodeRecord.ts | 1 + .../src/models/FindPetsByStatusResponse.ts | 76 ++ .../models/FindPetsByStatusResponseRecord.ts | 83 ++ .../src/models/FindPetsByUserResponse.ts | 76 ++ .../models/FindPetsByUserResponseRecord.ts | 83 ++ .../models/GetBehaviorPermissionsResponse.ts | 72 + .../GetBehaviorPermissionsResponseRecord.ts | 72 + .../src/models/GetBehaviorTypeResponse.ts | 76 ++ .../models/GetBehaviorTypeResponseRecord.ts | 75 ++ .../src/models/GetMatchingPartsResponse.ts | 76 ++ .../models/GetMatchingPartsResponseRecord.ts | 83 ++ .../src/models/GetPetPartTypeResponse.ts | 76 ++ .../models/GetPetPartTypeResponseRecord.ts | 75 ++ .../sagas-and-records/src/models/ItemId.ts | 65 + .../src/models/ItemIdRecord.ts | 54 + .../src/models/MatchingParts.ts | 72 + .../src/models/MatchingPartsRecord.ts | 65 + .../src/models/ModelApiResponse.ts | 73 + .../src/models/ModelApiResponseRecord.ts | 55 + .../src/models/ModelError.ts | 88 ++ .../src/models/ModelErrorRecord.ts | 65 + .../sagas-and-records/src/models/Order.ts | 107 ++ .../src/models/OrderRecord.ts | 109 ++ .../sagas-and-records/src/models/Part.ts | 65 + .../src/models/PartRecord.ts | 56 + .../sagas-and-records/src/models/Pet.ts | 238 ++++ .../src/models/PetPartType.ts | 37 + .../src/models/PetPartTypeRecord.ts | 1 + .../sagas-and-records/src/models/PetRecord.ts | 177 +++ .../src/models/ResponseMeta.ts | 134 ++ .../src/models/ResponseMetaRecord.ts | 62 + .../sagas-and-records/src/models/Tag.ts | 65 + .../sagas-and-records/src/models/TagRecord.ts | 104 ++ .../sagas-and-records/src/models/User.ts | 129 ++ .../src/models/UserRecord.ts | 112 ++ .../src/models/WarningCode.ts | 37 + .../src/models/WarningCodeRecord.ts | 1 + .../sagas-and-records/src/models/index.ts | 41 + .../builds/sagas-and-records/src/runtime.ts | 319 +++++ .../src/runtimeSagasAndRecords.ts | 120 ++ .../builds/sagas-and-records/tsconfig.json | 17 + .../builds/typescript-three-plus/package.json | 2 +- .../src/models/Category.ts | 65 + .../src/models/ModelApiResponse.ts | 73 + .../src/models/Order.ts | 107 ++ .../without-runtime-checks/src/models/Pet.ts | 118 ++ .../without-runtime-checks/src/models/Tag.ts | 65 + .../without-runtime-checks/src/models/User.ts | 113 ++ .../src/models/index.ts | 6 - 104 files changed, 10473 insertions(+), 62 deletions(-) create mode 100644 bin/configs/typescript-fetch-sagas-and-records.yaml create mode 100644 modules/openapi-generator/src/main/resources/typescript-fetch/ApiEntitiesRecord.mustache create mode 100644 modules/openapi-generator/src/main/resources/typescript-fetch/ApiEntitiesReducer.mustache create mode 100644 modules/openapi-generator/src/main/resources/typescript-fetch/ApiEntitiesSelectors.mustache create mode 100644 modules/openapi-generator/src/main/resources/typescript-fetch/allSagas.mustache create mode 100644 modules/openapi-generator/src/main/resources/typescript-fetch/recordGeneric.mustache create mode 100644 modules/openapi-generator/src/main/resources/typescript-fetch/records.mustache create mode 100644 modules/openapi-generator/src/main/resources/typescript-fetch/runtimeSagasAndRecords.mustache create mode 100644 modules/openapi-generator/src/main/resources/typescript-fetch/sagaApiManager.mustache create mode 100644 modules/openapi-generator/src/main/resources/typescript-fetch/sagas.mustache create mode 100644 modules/openapi-generator/src/main/resources/typescript-fetch/sourceLibraryIndex.mustache create mode 100644 modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-saga-and-records.yaml create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/.gitignore create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/.npmignore create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator-ignore create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/FILES create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/README.md create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/package.json create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/ApiEntitiesRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/ApiEntitiesReducer.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/ApiEntitiesSelectors.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/BehaviorApi.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/BehaviorApiSagas.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApi.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApiSagas.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetPartApi.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetPartApiSagas.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/SagaApiManager.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/StoreApi.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/StoreApiSagas.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/UserApi.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/UserApiSagas.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/allSagas.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/index.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/index.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/BehaviorType.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/BehaviorTypeRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Category.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/CategoryRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DefaultMetaOnlyResponse.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DefaultMetaOnlyResponseRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DeploymentRequestStatus.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DeploymentRequestStatusRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ErrorCode.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ErrorCodeRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByStatusResponse.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByStatusResponseRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByUserResponse.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByUserResponseRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorPermissionsResponse.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorPermissionsResponseRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorTypeResponse.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorTypeResponseRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetMatchingPartsResponse.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetMatchingPartsResponseRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetPartTypeResponse.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetPartTypeResponseRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ItemId.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ItemIdRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/MatchingParts.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/MatchingPartsRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelApiResponse.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelApiResponseRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelError.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelErrorRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Order.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/OrderRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Part.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PartRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Pet.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetPartType.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetPartTypeRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ResponseMeta.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ResponseMetaRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Tag.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/TagRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/User.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/UserRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/WarningCode.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/WarningCodeRecord.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/index.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/runtime.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/runtimeSagasAndRecords.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/sagas-and-records/tsconfig.json create mode 100644 samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Category.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/ModelApiResponse.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Order.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Pet.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Tag.ts create mode 100644 samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/User.ts diff --git a/bin/configs/typescript-fetch-sagas-and-records.yaml b/bin/configs/typescript-fetch-sagas-and-records.yaml new file mode 100644 index 00000000000..a9fbe6136c7 --- /dev/null +++ b/bin/configs/typescript-fetch-sagas-and-records.yaml @@ -0,0 +1,16 @@ +generatorName: typescript-fetch +outputDir: samples/client/petstore/typescript-fetch/builds/sagas-and-records +inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-saga-and-records.yaml +additionalProperties: + npmVersion: 1.0.0 + npmName: '@openapitools/typescript-fetch-petstore' + npmRepository: https://skimdb.npmjs.com/registry + useSingleRequestParameter: false + supportsES6: true + typescriptThreePlus: true + sagasAndRecords: true + detectPassthroughModelsWithSuffixAndField: 'Response.data' + inferUniqueIdFromNameSuffix: true + inferEntityFromUniqueIdWithName: id + packageAsSourceOnlyLibrary: false + snapshot: false \ No newline at end of file diff --git a/docs/generators/typescript-fetch.md b/docs/generators/typescript-fetch.md index d197da526a5..f8e9cd2328a 100644 --- a/docs/generators/typescript-fetch.md +++ b/docs/generators/typescript-fetch.md @@ -21,6 +21,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| |prefixParameterInterfaces|Setting this property to true will generate parameter interface declarations prefixed with API class name to avoid name conflicts.| |false| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| +|sagasAndRecords|Setting this property to true will generate additional files for use with redux-saga and immutablejs.| |false| |snapshot|When setting this property to true, the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm| |false| |sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| |sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 1f4fecb0395..1d6f244e9cc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -5531,13 +5531,9 @@ public class DefaultCodegen implements CodegenConfig { // handle default value for enum, e.g. available => StatusEnum.AVAILABLE if (var.defaultValue != null) { + final String enumDefaultValue = getEnumDefaultValue(var.defaultValue, dataType); + String enumName = null; - final String enumDefaultValue; - if (isDataTypeString(dataType)) { - enumDefaultValue = toEnumValue(var.defaultValue, dataType); - } else { - enumDefaultValue = var.defaultValue; - } for (Map enumVar : enumVars) { if (enumDefaultValue.equals(enumVar.get("value"))) { enumName = (String) enumVar.get("name"); @@ -5550,6 +5546,16 @@ public class DefaultCodegen implements CodegenConfig { } } + protected String getEnumDefaultValue(String defaultValue, String dataType) { + final String enumDefaultValue; + if (isDataTypeString(dataType)) { + enumDefaultValue = toEnumValue(defaultValue, dataType); + } else { + enumDefaultValue = defaultValue; + } + return enumDefaultValue; + } + protected List> buildEnumVars(List values, String dataType) { List> enumVars = new ArrayList<>(); int truncateIdx = 0; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java index d182ffb6e0e..c32bdcbb6cc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java @@ -19,7 +19,12 @@ package org.openapitools.codegen.languages; import com.google.common.collect.ImmutableMap; import com.samskivert.mustache.Mustache; +import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.media.Schema; +import io.swagger.v3.oas.models.parameters.Parameter; +import io.swagger.v3.oas.models.parameters.RequestBody; +import io.swagger.v3.oas.models.responses.ApiResponse; +import io.swagger.v3.oas.models.servers.Server; import io.swagger.v3.parser.util.SchemaTypeUtil; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; @@ -27,12 +32,9 @@ import org.openapitools.codegen.templating.mustache.IndentedLambda; import org.openapitools.codegen.utils.ModelUtils; import java.io.File; -import java.util.TreeSet; -import java.util.List; -import java.util.Map; +import java.util.*; public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodegen { - public static final String NPM_REPOSITORY = "npmRepository"; public static final String WITH_INTERFACES = "withInterfaces"; public static final String USE_SINGLE_REQUEST_PARAMETER = "useSingleRequestParameter"; @@ -48,6 +50,24 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege protected boolean typescriptThreePlus = false; protected boolean withoutRuntimeChecks = false; + // "Saga and Record" mode. + public static final String SAGAS_AND_RECORDS = "sagasAndRecords"; + public static final String DETECT_PASSTHROUGH_MODELS_WITH_SUFFIX_AND_FIELD = "detectPassthroughModelsWithSuffixAndField"; + public static final String INFER_UNIQUE_ID_FROM_NAME_SUFFIX = "inferUniqueIdFromNameSuffix"; + public static final String INFER_ENTITY_FROM_UNIQUE_ID_WITH_NAME = "inferEntityFromUniqueIdWithName"; + public static final String PACKAGE_AS_SOURCE_ONLY_LIBRARY = "packageAsSourceOnlyLibrary"; + + private static final String X_IS_UNIQUE_ID = "x-isUniqueId"; + private static final String X_ENTITY_ID = "x-entityId"; + private static final String X_OPERATION_RETURN_PASSTHROUGH = "x-operationReturnPassthrough"; + private static final String X_KEEP_AS_JS_OBJECT = "x-keepAsJSObject"; + + protected boolean sagasAndRecords = false; + protected String detectPassthroughModelsWithSuffixAndField = null; // Ex: "Response;data" + protected boolean inferUniqueIdFromNameSuffix = false; + protected String inferEntityFromUniqueIdWithName = null; + protected boolean packageAsSourceOnlyLibrary = false; + public TypeScriptFetchClientCodegen() { super(); @@ -75,6 +95,7 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege this.cliOptions.add(new CliOption(PREFIX_PARAMETER_INTERFACES, "Setting this property to true will generate parameter interface declarations prefixed with API class name to avoid name conflicts.", SchemaTypeUtil.BOOLEAN_TYPE).defaultValue(Boolean.FALSE.toString())); this.cliOptions.add(new CliOption(TYPESCRIPT_THREE_PLUS, "Setting this property to true will generate TypeScript 3.6+ compatible code.", SchemaTypeUtil.BOOLEAN_TYPE).defaultValue(Boolean.FALSE.toString())); this.cliOptions.add(new CliOption(WITHOUT_RUNTIME_CHECKS, "Setting this property to true will remove any runtime checks on the request and response payloads. Payloads will be casted to their expected types.", SchemaTypeUtil.BOOLEAN_TYPE).defaultValue(Boolean.FALSE.toString())); + this.cliOptions.add(new CliOption(SAGAS_AND_RECORDS, "Setting this property to true will generate additional files for use with redux-saga and immutablejs.", SchemaTypeUtil.BOOLEAN_TYPE).defaultValue(Boolean.FALSE.toString())); } @Override @@ -103,14 +124,72 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege this.typescriptThreePlus = typescriptThreePlus; } - public Boolean getWithoutRuntimeChecks(){ + public Boolean getWithoutRuntimeChecks() { return withoutRuntimeChecks; } - public void setWithoutRuntimeChecks(Boolean withoutRuntimeChecks){ + public void setWithoutRuntimeChecks(Boolean withoutRuntimeChecks) { this.withoutRuntimeChecks = withoutRuntimeChecks; } + public Boolean getSagasAndRecords() { + return sagasAndRecords; + } + + public void setSagasAndRecords(Boolean sagasAndRecords) { + this.sagasAndRecords = sagasAndRecords; + } + + public String getPassthroughSuffix() { + return detectPassthroughModelsWithSuffixAndField != null ? detectPassthroughModelsWithSuffixAndField.split("\\.")[0] : null; + } + + public String getPassthroughField() { + return detectPassthroughModelsWithSuffixAndField != null ? detectPassthroughModelsWithSuffixAndField.split("\\.")[1] : null; + } + + public String getDetectPassthroughModelsWithSuffixAndField() { + return detectPassthroughModelsWithSuffixAndField; + } + + public void setDetectPassthroughModelsWithSuffixAndField(String detectPassthroughModelsWithSuffixAndField) { + this.detectPassthroughModelsWithSuffixAndField = detectPassthroughModelsWithSuffixAndField; + } + + public boolean getInferUniqueIdFromNameSuffix() { + return inferUniqueIdFromNameSuffix; + } + + public void setInferUniqueIdFromNameSuffix(boolean inferUniqueIdFromNameSuffix) { + this.inferUniqueIdFromNameSuffix = inferUniqueIdFromNameSuffix; + } + + public String getInferEntityFromUniqueIdWithName() { + return inferEntityFromUniqueIdWithName; + } + + public void setInferEntityFromUniqueIdWithName(String inferEntityFromUniqueIdWithName) { + this.inferEntityFromUniqueIdWithName = inferEntityFromUniqueIdWithName; + } + + public boolean getPackageAsSourceOnlyLibrary() { + return packageAsSourceOnlyLibrary; + } + + public void setPackageAsSourceOnlyLibrary(boolean packageAsSourceOnlyLibrary) { + this.packageAsSourceOnlyLibrary = packageAsSourceOnlyLibrary; + } + + public boolean isUniqueIdAccordingToNameSuffix(String name) { + if (name == null) { + return false; + } + return "id".equals(name) || + "ids".equals(name) || + (name.length() >= 3 && name.substring(name.length() - 2).equals("Id")) || + (name.length() >= 4 && name.substring(name.length() - 3).equals("Ids")); + } + @Override public void processOpts() { super.processOpts(); @@ -150,11 +229,59 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege this.setWithoutRuntimeChecks(convertPropertyToBoolean(WITHOUT_RUNTIME_CHECKS)); } - if(!withoutRuntimeChecks){ + if (!withoutRuntimeChecks) { this.modelTemplateFiles.put("models.mustache", ".ts"); } + + if (additionalProperties.containsKey(SAGAS_AND_RECORDS)) { + this.setSagasAndRecords(convertPropertyToBoolean(SAGAS_AND_RECORDS)); + if (this.getSagasAndRecords()) { + apiTemplateFiles.put("sagas.mustache", "Sagas.ts"); + modelTemplateFiles.put("records.mustache", "Record.ts"); + supportingFiles.add(new SupportingFile("runtimeSagasAndRecords.mustache", sourceDir, "runtimeSagasAndRecords.ts")); + supportingFiles.add(new SupportingFile("ApiEntitiesRecord.mustache", sourceDir, "ApiEntitiesRecord.ts")); + supportingFiles.add(new SupportingFile("ApiEntitiesReducer.mustache", sourceDir, "ApiEntitiesReducer.ts")); + supportingFiles.add(new SupportingFile("ApiEntitiesSelectors.mustache", sourceDir, "ApiEntitiesSelectors.ts")); + + if (additionalProperties.containsKey(DETECT_PASSTHROUGH_MODELS_WITH_SUFFIX_AND_FIELD)) { + this.setDetectPassthroughModelsWithSuffixAndField((String) additionalProperties.get(DETECT_PASSTHROUGH_MODELS_WITH_SUFFIX_AND_FIELD)); + } + if (additionalProperties.containsKey(INFER_UNIQUE_ID_FROM_NAME_SUFFIX)) { + this.setInferUniqueIdFromNameSuffix(convertPropertyToBoolean(INFER_UNIQUE_ID_FROM_NAME_SUFFIX)); + } + if (additionalProperties.containsKey(INFER_ENTITY_FROM_UNIQUE_ID_WITH_NAME)) { + this.setInferEntityFromUniqueIdWithName((String) additionalProperties.get(INFER_ENTITY_FROM_UNIQUE_ID_WITH_NAME)); + } + if (additionalProperties.containsKey(PACKAGE_AS_SOURCE_ONLY_LIBRARY)) { + this.setPackageAsSourceOnlyLibrary(convertPropertyToBoolean(PACKAGE_AS_SOURCE_ONLY_LIBRARY)); + } + + this.addExtraReservedWordsForSagasAndRecords(); + + if (this.getPackageAsSourceOnlyLibrary()) { + supportingFiles.add(new SupportingFile("sourceLibraryIndex.mustache", "", "index.ts")); + } + } + } } + @Override + public String toEnumDefaultValue(String value, String datatype) { + if (this.getSagasAndRecords()) { + return datatype + "." + value; + } + return super.toEnumDefaultValue(value, datatype); + } + + @Override + protected String getEnumDefaultValue(String defaultValue, String dataType) { + if (this.getSagasAndRecords()) { + return defaultValue; + } + return super.getEnumDefaultValue(defaultValue, dataType); + } + + @Override protected ImmutableMap.Builder addMustacheLambdas() { ImmutableMap.Builder lambdas = super.addMustacheLambdas(); @@ -183,36 +310,12 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege public Map postProcessModels(Map objs) { List models = (List) postProcessModelsEnum(objs).get("models"); - // process enum in models + // process enum and custom properties in models for (Object _mo : models) { Map mo = (Map) _mo; - CodegenModel cm = (CodegenModel) mo.get("model"); + ExtendedCodegenModel cm = (ExtendedCodegenModel) mo.get("model"); cm.imports = new TreeSet(cm.imports); - // name enum with model name, e.g. StatusEnum => Pet.StatusEnum - for (CodegenProperty var : cm.vars) { - if (Boolean.TRUE.equals(var.isEnum)) { - // behaviour for enum names is specific for Typescript Fetch, not using namespaces - var.datatypeWithEnum = var.datatypeWithEnum.replace(var.enumName, cm.classname + var.enumName); - } - } - if (cm.parent != null) { - for (CodegenProperty var : cm.allVars) { - if (Boolean.TRUE.equals(var.isEnum)) { - var.datatypeWithEnum = var.datatypeWithEnum - .replace(var.enumName, cm.classname + var.enumName); - } - } - } - if (!cm.oneOf.isEmpty()) { - // For oneOfs only import $refs within the oneOf - TreeSet oneOfRefs = new TreeSet<>(); - for (String im : cm.imports) { - if (cm.oneOf.contains(im)) { - oneOfRefs.add(im); - } - } - cm.imports = oneOfRefs; - } + this.processCodeGenModel(cm); } return objs; @@ -228,18 +331,71 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege @Override public Map postProcessAllModels(Map objs) { + List allModels = new ArrayList(); + List entityModelClassnames = new ArrayList(); + Map result = super.postProcessAllModels(objs); for (Map.Entry entry : result.entrySet()) { Map inner = (Map) entry.getValue(); List> models = (List>) inner.get("models"); for (Map model : models) { - CodegenModel codegenModel = (CodegenModel) model.get("model"); + ExtendedCodegenModel codegenModel = (ExtendedCodegenModel) model.get("model"); model.put("hasImports", codegenModel.imports.size() > 0); + + allModels.add(codegenModel); + if (codegenModel.isEntity) { + entityModelClassnames.add(codegenModel.classname); + } + } + } + + for (ExtendedCodegenModel rootModel : allModels) { + for (String curImport : rootModel.imports) { + boolean isModelImport = false; + for (ExtendedCodegenModel model : allModels) { + if (model.classname.equals(curImport) && !model.isEnum) { + isModelImport = true; + break; + } + } + if (isModelImport) { + rootModel.modelImports.add(curImport); + } + } + + for (CodegenProperty cpVar : rootModel.vars) { + ExtendedCodegenProperty var = (ExtendedCodegenProperty) cpVar; + if (var.isModel && entityModelClassnames.indexOf(var.dataType) != -1) { + var.isEntity = true; + } else if (var.isArray && var.items.isModel && entityModelClassnames.indexOf(var.items.dataType) != -1) { + ((ExtendedCodegenProperty) var.items).isEntity = true; + } } } return result; } + private void autoSetDefaultValueForProperty(ExtendedCodegenProperty var) { + if (var.isArray || var.isModel) { + var.defaultValue = var.dataTypeAlternate + "()"; + } else if (var.isUniqueId) { + var.defaultValue = "\"-1\""; + } else if (var.isEnum) { + var.defaultValue = "'" + var._enum.get(0) + "'"; + updateCodegenPropertyEnum(var); + } else if (var.dataType.equalsIgnoreCase("string")) { + var.defaultValue = "\"\""; + } else if (var.dataType.equalsIgnoreCase("number")) { + var.defaultValue = "0"; + } else if (var.dataType.equalsIgnoreCase("boolean")) { + var.defaultValue = "false"; + } else { + if (var.allowableValues != null && var.allowableValues.get("enumVars") instanceof ArrayList && ((ArrayList) var.allowableValues.get("enumVars")).get(0) instanceof HashMap) { + var.defaultValue = var.dataTypeAlternate + "." + ((HashMap) ((ArrayList) var.allowableValues.get("enumVars")).get(0)).get("name"); + } + } + } + private void addNpmPackageGeneration() { if (additionalProperties.containsKey(NPM_REPOSITORY)) { @@ -254,12 +410,160 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege supportingFiles.add(new SupportingFile("gitignore", "", ".gitignore")); } + @Override + public List fromRequestBodyToFormParameters(RequestBody body, Set imports) { + List superParams = super.fromRequestBodyToFormParameters(body, imports); + List extendedParams = new ArrayList(); + for (CodegenParameter cp : superParams) { + extendedParams.add(new ExtendedCodegenParameter(cp)); + } + return extendedParams; + } + + @Override + public ExtendedCodegenParameter fromParameter(Parameter parameter, Set imports) { + CodegenParameter cp = super.fromParameter(parameter, imports); + return new ExtendedCodegenParameter(cp); + } + + @Override + public CodegenParameter fromFormProperty(String name, Schema propertySchema, Set imports) { + CodegenParameter cp = super.fromFormProperty(name, propertySchema, imports); + return new ExtendedCodegenParameter(cp); + } + + @Override + public CodegenParameter fromRequestBody(RequestBody body, Set imports, String bodyParameterName) { + CodegenParameter cp = super.fromRequestBody(body, imports, bodyParameterName); + return new ExtendedCodegenParameter(cp); + } + + @Override + public ExtendedCodegenProperty fromProperty(String name, Schema p) { + CodegenProperty cp = super.fromProperty(name, p); + return new ExtendedCodegenProperty(cp); + } + + @Override + public ExtendedCodegenModel fromModel(String name, Schema model) { + CodegenModel cm = super.fromModel(name, model); + return new ExtendedCodegenModel(cm); + } + + @Override + public ExtendedCodegenOperation fromOperation(String path, String httpMethod, Operation operation, List servers) { + CodegenOperation superOp = super.fromOperation(path, httpMethod, operation, servers); + ExtendedCodegenOperation op = new ExtendedCodegenOperation(superOp); + + if (this.getSagasAndRecords()) { + ApiResponse methodResponse = findMethodResponse(operation.getResponses()); + if (methodResponse != null) { + Map schemas = ModelUtils.getSchemas(this.openAPI); + Schema schema = null; + if (schemas != null) { + schema = schemas.get(op.returnBaseType); + } + + ExtendedCodegenModel cm = null; + if (schema != null) { + cm = fromModel(op.returnBaseType, schema); + + Object returnPassthrough = cm.vendorExtensions.get(X_OPERATION_RETURN_PASSTHROUGH); + if (returnPassthrough instanceof String) { + if (((String) returnPassthrough).isEmpty()) { + op.hasReturnPassthroughVoid = true; + op.returnPassthrough = null; + } else { + boolean foundMatch = false; + for (CodegenProperty var : cm.vars) { + if (var.name.equals(returnPassthrough)) { + foundMatch = true; + break; + } + } + if (foundMatch) { + op.returnPassthrough = (String) returnPassthrough; + } else { // no match, treat as if empty. + op.hasReturnPassthroughVoid = true; + op.returnPassthrough = null; + } + } + } else if (this.getDetectPassthroughModelsWithSuffixAndField() != null && op.returnBaseType.length() > this.getPassthroughSuffix().length() && op.returnBaseType.substring(op.returnBaseType.length() - this.getPassthroughSuffix().length()).equals(this.getPassthroughSuffix())) { + boolean foundMatch = false; + for (CodegenProperty var : cm.vars) { + if (var.name.equals(this.getPassthroughField())) { + foundMatch = true; + break; + } + } + if (foundMatch) { + op.returnPassthrough = this.getPassthroughField(); + } else { // no match, treat as if empty. + op.hasReturnPassthroughVoid = true; + op.returnPassthrough = null; + } + } + } + + if (!op.hasReturnPassthroughVoid) { + Schema responseSchema = unaliasSchema(ModelUtils.getSchemaFromResponse(methodResponse), importMapping); + ExtendedCodegenProperty cp = null; + if (op.returnPassthrough instanceof String && cm != null) { + cp = (ExtendedCodegenProperty) this.processCodeGenModel(cm).vars.get(1); + } else if (responseSchema != null) { + cp = fromProperty("response", responseSchema); + this.processCodegenProperty(cp, "", null); + } + + op.returnBaseTypeAlternate = null; + if (cp != null) { + op.returnTypeAlternate = cp.dataTypeAlternate; + op.returnTypeIsModel = cp.isModel; + op.returnTypeIsArray = cp.isArray; + if (cp.isArray) { + if (cp.items.isModel) { + op.returnTypeSupportsEntities = true; + op.returnBaseTypeAlternate = cp.items.dataType + "Record"; + } else if (cp.items.allowableValues != null) { + op.returnBaseTypeAlternate = cp.items.dataType; + } + } else if (cp.isModel) { + op.returnTypeSupportsEntities = true; + op.returnBaseTypeAlternate = cp.dataTypeAlternate; + } else if (cp.allowableValues != null) { + op.returnBaseTypeAlternate = cp.dataTypeAlternate; + } + + } + } + } + } + + return op; + } + + @Override + public String escapeReservedWord(String name) { + if (this.getSagasAndRecords()) { + if (this.reservedWordsMappings().containsKey(name)) { + return this.reservedWordsMappings().get(name); + } + return "_" + name; + } else { + return super.escapeReservedWord(name); + } + } + @Override public Map postProcessOperationsWithModels(Map operations, List allModels) { // Add supporting file only if we plan to generate files in /apis if (operations.size() > 0 && !addedApiIndex) { addedApiIndex = true; supportingFiles.add(new SupportingFile("apis.index.mustache", apiPackage().replace('.', File.separatorChar), "index.ts")); + if (this.getSagasAndRecords()) { + supportingFiles.add(new SupportingFile("sagaApiManager.mustache", apiPackage().replace('.', File.separatorChar), "SagaApiManager.ts")); + supportingFiles.add(new SupportingFile("allSagas.mustache", apiPackage().replace('.', File.separatorChar), "allSagas.ts")); + } } // Add supporting file only if we plan to generate files in /models @@ -269,17 +573,169 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege } this.addOperationModelImportInfomation(operations); - this.updateOperationParameterEnumInformation(operations); + this.updateOperationParameterForEnum(operations); + if (this.getSagasAndRecords()) { + this.updateOperationParameterForSagaAndRecords(operations); + } this.addOperationObjectResponseInformation(operations); this.addOperationPrefixParameterInterfacesInformation(operations); this.escapeOperationIds(operations); return operations; } + @Override + public Map postProcessSupportingFileData(Map objs) { + Map parentObjs = super.postProcessSupportingFileData(objs); + + parentObjs.put("useSagaAndRecords", this.getSagasAndRecords()); + + return parentObjs; + } + + private ExtendedCodegenModel processCodeGenModel(ExtendedCodegenModel cm) { + if (this.getSagasAndRecords()) { + Object xEntityId = cm.vendorExtensions.get(X_ENTITY_ID); + if (xEntityId == null && this.getInferEntityFromUniqueIdWithName() != null) { + xEntityId = this.getInferEntityFromUniqueIdWithName(); + } + Object vendorKeepAsJSObject = cm.vendorExtensions.get(X_KEEP_AS_JS_OBJECT); + String[] propertiesToKeepAsJSObject = null; + if (vendorKeepAsJSObject instanceof String) { + propertiesToKeepAsJSObject = ((String) vendorKeepAsJSObject).split(","); + } + + for (CodegenProperty cpVar : cm.vars) { + ExtendedCodegenProperty var = (ExtendedCodegenProperty) cpVar; + if (propertiesToKeepAsJSObject != null && Arrays.asList(propertiesToKeepAsJSObject).contains(var.name)) { + var.keepAsJSObject = true; + } + boolean parentIsEntity = this.processCodegenProperty(var, cm.classname, xEntityId); + if (parentIsEntity) { + cm.isEntity = true; + } + } + + Object returnPassthrough = cm.vendorExtensions.get(X_OPERATION_RETURN_PASSTHROUGH); + if (returnPassthrough instanceof String) { + if (((String) returnPassthrough).isEmpty()) { + cm.hasReturnPassthroughVoid = true; + cm.returnPassthrough = null; + } else { + boolean foundMatch = false; + for (CodegenProperty var : cm.vars) { + if (var.name.equals(returnPassthrough)) { + foundMatch = true; + break; + } + } + if (foundMatch) { + cm.returnPassthrough = (String) returnPassthrough; + } else { // no match, treat as if empty. + cm.hasReturnPassthroughVoid = true; + cm.returnPassthrough = null; + } + } + } else if (this.getDetectPassthroughModelsWithSuffixAndField() != null && cm.name.length() > this.getPassthroughSuffix().length() && cm.name.substring(cm.name.length() - this.getPassthroughSuffix().length()).equals(this.getPassthroughSuffix())) { + boolean foundMatch = false; + for (CodegenProperty var : cm.vars) { + if (var.name.equals(this.getPassthroughField())) { + foundMatch = true; + break; + } + } + if (foundMatch) { + cm.returnPassthrough = this.getPassthroughField(); + } else { // no match, treat as if empty. + cm.hasReturnPassthroughVoid = true; + cm.returnPassthrough = null; + } + } + } else { + for (CodegenProperty cpVar : cm.vars) { + ExtendedCodegenProperty var = (ExtendedCodegenProperty) cpVar; + this.processCodegenProperty(var, cm.classname, null); + } + } + + if (cm.parent != null) { + for (CodegenProperty cpVar : cm.allVars) { + ExtendedCodegenProperty var = (ExtendedCodegenProperty) cpVar; + + if (Boolean.TRUE.equals(var.isEnum)) { + var.datatypeWithEnum = var.datatypeWithEnum + .replace(var.enumName, cm.classname + var.enumName); + } + } + } + if (!cm.oneOf.isEmpty()) { + // For oneOfs only import $refs within the oneOf + TreeSet oneOfRefs = new TreeSet<>(); + for (String im : cm.imports) { + if (cm.oneOf.contains(im)) { + oneOfRefs.add(im); + } + } + cm.imports = oneOfRefs; + } + return cm; + } + + private boolean processCodegenProperty(ExtendedCodegenProperty var, String parentClassName, Object xEntityId) { + // name enum with model name, e.g. StatusEnum => PetStatusEnum + if (Boolean.TRUE.equals(var.isEnum)) { + // behaviour for enum names is specific for Typescript Fetch, not using namespaces + var.datatypeWithEnum = var.datatypeWithEnum.replace(var.enumName, parentClassName + var.enumName); + + // need to post-process defaultValue, was computed with previous var.datatypeWithEnum + if (var.defaultValue != null && !var.defaultValue.equals("undefined")) { + int dotPos = var.defaultValue.indexOf("."); + if (dotPos != -1) { + var.defaultValue = var.datatypeWithEnum + var.defaultValue.substring(dotPos); + } + } + } + + boolean parentIsEntity = false; + if (this.getSagasAndRecords()) { + if (var.vendorExtensions.get(X_IS_UNIQUE_ID) instanceof Boolean) { + var.isUniqueId = Boolean.TRUE.equals(var.vendorExtensions.get(X_IS_UNIQUE_ID)); + } else if (this.getInferUniqueIdFromNameSuffix() && (var.isArray && "number".equals(var.items.dataType)) || ("number".equals(var.dataType))) { + var.isUniqueId = this.isUniqueIdAccordingToNameSuffix(var.name); + } + if (var.isUniqueId && xEntityId != null && xEntityId.equals(var.name)) { + parentIsEntity = true; + } + + var.dataTypeAlternate = var.dataType; + if (var.isArray) { + var.dataTypeAlternate = var.dataType.replace("Array<", "List<"); + if (var.items.isModel) { + String itemsDataType = var.items.dataType + "Record"; + var.dataTypeAlternate = var.dataTypeAlternate.replace(var.items.dataType, itemsDataType); + } else if (var.items.isEnum) { + var.dataTypeAlternate = var.dataTypeAlternate.replace(var.items.dataType, var.items.datatypeWithEnum); + } + if (var.isUniqueId) { + var.dataTypeAlternate = var.dataTypeAlternate.replace("number", "string"); + } + } else if (var.isEnum) { + var.dataTypeAlternate = var.datatypeWithEnum; + } else if (var.isModel) { + var.dataTypeAlternate = var.dataType + "Record"; + } else if (var.isUniqueId) { + var.dataTypeAlternate = "string"; + } + if (var.defaultValue == null || var.defaultValue.equals("undefined")) { + this.autoSetDefaultValueForProperty(var); + } + } + return parentIsEntity; + } + private void escapeOperationIds(Map operations) { Map _operations = (Map) operations.get("operations"); - List operationList = (List) _operations.get("operation"); - for (CodegenOperation op : operationList) { + List operationList = (List) _operations.get("operation"); + for (ExtendedCodegenOperation op : operationList) { String param = op.operationIdCamelCase + "Request"; if (op.imports.contains(param)) { // we import a model with the same name as the generated operation, escape it @@ -295,19 +751,44 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege // The api template uses this infomation to import all the required // models for a given operation. List> imports = (List>) operations.get("imports"); + List existingRecordClassNames = new ArrayList(); + List existingClassNames = new ArrayList(); for (Map im : imports) { - im.put("className", im.get("import").toString().replace(modelPackage() + ".", "")); + String className = im.get("import").toString().replace(modelPackage() + ".", ""); + existingClassNames.add(className); + existingRecordClassNames.add(className + "Record"); + im.put("className", className); + } + + if (this.getSagasAndRecords()) { + Map _operations = (Map) operations.get("operations"); + List operationList = (List) _operations.get("operation"); + Set additionalPassthroughImports = new TreeSet(); + for (ExtendedCodegenOperation op : operationList) { + if (op.returnPassthrough != null && op.returnBaseTypeAlternate instanceof String) { + if (op.returnTypeSupportsEntities && !existingRecordClassNames.contains(op.returnBaseTypeAlternate)) { + additionalPassthroughImports.add(op.returnBaseTypeAlternate); + } else if (!op.returnTypeSupportsEntities && !existingClassNames.contains(op.returnBaseTypeAlternate)) { + additionalPassthroughImports.add(op.returnBaseTypeAlternate); + } + } + } + operations.put("passthroughImports", additionalPassthroughImports); + operations.put("hasPassthroughImports", additionalPassthroughImports.size() > 0); } } - private void updateOperationParameterEnumInformation(Map operations) { + private void updateOperationParameterForEnum(Map operations) { // This method will add extra infomation as to whether or not we have enums and // update their names with the operation.id prefixed. + // It will also set the uniqueId status if provided. Map _operations = (Map) operations.get("operations"); - List operationList = (List) _operations.get("operation"); + List operationList = (List) _operations.get("operation"); boolean hasEnum = false; - for (CodegenOperation op : operationList) { - for (CodegenParameter param : op.allParams) { + for (ExtendedCodegenOperation op : operationList) { + for (CodegenParameter cpParam : op.allParams) { + ExtendedCodegenParameter param = (ExtendedCodegenParameter) cpParam; + if (Boolean.TRUE.equals(param.isEnum)) { hasEnum = true; param.datatypeWithEnum = param.datatypeWithEnum @@ -319,14 +800,55 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege operations.put("hasEnums", hasEnum); } + private void updateOperationParameterForSagaAndRecords(Map operations) { + // This method will add extra infomation as to whether or not we have enums and + // update their names with the operation.id prefixed. + // It will also set the uniqueId status if provided. + Map _operations = (Map) operations.get("operations"); + List operationList = (List) _operations.get("operation"); + for (ExtendedCodegenOperation op : operationList) { + for (CodegenParameter cpParam : op.allParams) { + ExtendedCodegenParameter param = (ExtendedCodegenParameter) cpParam; + + if (param.vendorExtensions.get(X_IS_UNIQUE_ID) instanceof Boolean) { + param.isUniqueId = Boolean.TRUE.equals(param.vendorExtensions.get(X_IS_UNIQUE_ID)); + } else if (this.getInferUniqueIdFromNameSuffix() && (param.isArray && "number".equals(param.items.dataType)) || ("number".equals(param.dataType))) { + param.isUniqueId = this.isUniqueIdAccordingToNameSuffix(param.paramName); + } + + param.dataTypeAlternate = param.dataType; + if (param.isArray) { + if (param.items.isModel) { + String itemsDataType = param.items.dataType + "Record"; + param.dataTypeAlternate = param.dataType.replace("Array<", "List<"); + param.dataTypeAlternate = param.dataTypeAlternate.replace(param.items.dataType, itemsDataType); + } else if (param.items.isEnum) { + param.dataTypeAlternate = param.datatypeWithEnum.replace("Array<", "List<"); + } else { + param.dataTypeAlternate = param.dataType.replace("Array<", "List<"); + } + if (param.isUniqueId) { + param.dataTypeAlternate = param.dataTypeAlternate.replace("number", "string"); + } + } else if (param.isEnum) { + param.dataTypeAlternate = param.datatypeWithEnum; + } else if (param.isModel) { + param.dataTypeAlternate = param.dataType + "Record"; + } else if (param.isUniqueId) { + param.dataTypeAlternate = "string"; + } + } + } + } + private void addOperationObjectResponseInformation(Map operations) { // This method will modify the infomation on the operations' return type. // The api template uses this infomation to know when to return a text // response for a given simple response operation. Map _operations = (Map) operations.get("operations"); - List operationList = (List) _operations.get("operation"); - for (CodegenOperation op : operationList) { - if("object".equals(op.returnType)) { + List operationList = (List) _operations.get("operation"); + for (ExtendedCodegenOperation op : operationList) { + if ("object".equals(op.returnType)) { op.isMap = true; op.returnSimpleType = false; } @@ -369,6 +891,11 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege this.reservedWords.add("Index"); } + private void addExtraReservedWordsForSagasAndRecords() { + // immutablejs Records have potentially many reserved words. Adding only strict minimum for now. + this.reservedWords.add("entries"); + } + private boolean getUseSingleRequestParameter() { return useSingleRequestParameter; } @@ -384,4 +911,491 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege private void setPrefixParameterInterfaces(boolean prefixParameterInterfaces) { this.prefixParameterInterfaces = prefixParameterInterfaces; } + + class ExtendedCodegenParameter extends CodegenParameter { + public String dataTypeAlternate; + public boolean isUniqueId; // this parameter represents a unique id (x-isUniqueId: true) + + public ExtendedCodegenParameter(CodegenParameter cp) { + super(); + + this.isFormParam = cp.isFormParam; + this.isQueryParam = cp.isQueryParam; + this.isPathParam = cp.isPathParam; + this.isHeaderParam = cp.isHeaderParam; + this.isCookieParam = cp.isCookieParam; + this.isBodyParam = cp.isBodyParam; + this.isContainer = cp.isContainer; + this.isCollectionFormatMulti = cp.isCollectionFormatMulti; + this.isPrimitiveType = cp.isPrimitiveType; + this.isModel = cp.isModel; + this.isExplode = cp.isExplode; + this.baseName = cp.baseName; + this.paramName = cp.paramName; + this.dataType = cp.dataType; + this.datatypeWithEnum = cp.datatypeWithEnum; + this.dataFormat = cp.dataFormat; + this.contentType = cp.contentType; + this.collectionFormat = cp.collectionFormat; + this.description = cp.description; + this.unescapedDescription = cp.unescapedDescription; + this.baseType = cp.baseType; + this.defaultValue = cp.defaultValue; + this.enumName = cp.enumName; + this.style = cp.style; + this.nameInLowerCase = cp.nameInLowerCase; + this.example = cp.example; + this.jsonSchema = cp.jsonSchema; + this.isString = cp.isString; + this.isNumeric = cp.isNumeric; + this.isInteger = cp.isInteger; + this.isLong = cp.isLong; + this.isNumber = cp.isNumber; + this.isFloat = cp.isFloat; + this.isDouble = cp.isDouble; + this.isDecimal = cp.isDecimal; + this.isByteArray = cp.isByteArray; + this.isBinary = cp.isBinary; + this.isBoolean = cp.isBoolean; + this.isDate = cp.isDate; + this.isDateTime = cp.isDateTime; + this.isUuid = cp.isUuid; + this.isUri = cp.isUri; + this.isEmail = cp.isEmail; + this.isFreeFormObject = cp.isFreeFormObject; + this.isAnyType = cp.isAnyType; + this.isArray = cp.isArray; + this.isMap = cp.isMap; + this.isFile = cp.isFile; + this.isEnum = cp.isEnum; + this._enum = cp._enum; + this.allowableValues = cp.allowableValues; + this.items = cp.items; + this.additionalProperties = cp.additionalProperties; + this.vars = cp.vars; + this.requiredVars = cp.requiredVars; + this.mostInnerItems = cp.mostInnerItems; + this.vendorExtensions = cp.vendorExtensions; + this.hasValidation = cp.hasValidation; + this.isNullable = cp.isNullable; + this.required = cp.required; + this.maximum = cp.maximum; + this.exclusiveMaximum = cp.exclusiveMaximum; + this.minimum = cp.minimum; + this.exclusiveMinimum = cp.exclusiveMinimum; + this.maxLength = cp.maxLength; + this.minLength = cp.minLength; + this.pattern = cp.pattern; + this.maxItems = cp.maxItems; + this.minItems = cp.minItems; + this.uniqueItems = cp.uniqueItems; + this.multipleOf = cp.multipleOf; + this.setMaxProperties(cp.getMaxProperties()); + this.setMinProperties(cp.getMinProperties()); + } + + @Override + public ExtendedCodegenParameter copy() { + CodegenParameter superCopy = super.copy(); + ExtendedCodegenParameter output = new ExtendedCodegenParameter(superCopy); + output.dataTypeAlternate = this.dataTypeAlternate; + output.isUniqueId = this.isUniqueId; + return output; + } + + @Override + public boolean equals(Object o) { + boolean result = super.equals(o); + ExtendedCodegenParameter that = (ExtendedCodegenParameter) o; + return result && + isUniqueId == that.isUniqueId && + Objects.equals(dataTypeAlternate, that.dataTypeAlternate); + } + + @Override + public int hashCode() { + int superHash = super.hashCode(); + return Objects.hash(superHash, dataTypeAlternate, isUniqueId); + } + + @Override + public String toString() { + String superString = super.toString(); + final StringBuilder sb = new StringBuilder(superString); + sb.append(", isUniqueId=").append(isUniqueId); + sb.append(", dataTypeAlternate='").append(dataTypeAlternate).append('\''); + return sb.toString(); + } + } + + class ExtendedCodegenProperty extends CodegenProperty { + public String dataTypeAlternate; + public boolean isEntity; //Is a model containing an "id" property marked as isUniqueId and which matches the 'x-entityId' value. + public boolean isUniqueId; // The property represents a unique id (x-isUniqueId: true) + public boolean keepAsJSObject; + public boolean isReservedRecordField; + + public ExtendedCodegenProperty(CodegenProperty cp) { + super(); + + this.openApiType = openApiType; + this.baseName = cp.baseName; + this.complexType = cp.complexType; + this.getter = cp.getter; + this.setter = cp.setter; + this.description = cp.description; + this.dataType = cp.dataType; + this.datatypeWithEnum = cp.datatypeWithEnum; + this.dataFormat = cp.dataFormat; + this.name = cp.name; + this.min = cp.min; + this.max = cp.max; + this.defaultValue = cp.defaultValue; + this.defaultValueWithParam = cp.defaultValueWithParam; + this.baseType = cp.baseType; + this.containerType = cp.containerType; + this.title = cp.title; + this.unescapedDescription = cp.unescapedDescription; + this.maxLength = cp.maxLength; + this.minLength = cp.minLength; + this.pattern = cp.pattern; + this.example = cp.example; + this.jsonSchema = cp.jsonSchema; + this.minimum = cp.minimum; + this.maximum = cp.maximum; + this.multipleOf = cp.multipleOf; + this.exclusiveMinimum = cp.exclusiveMinimum; + this.exclusiveMaximum = cp.exclusiveMaximum; + this.required = cp.required; + this.deprecated = cp.deprecated; + this.hasMoreNonReadOnly = cp.hasMoreNonReadOnly; + this.isPrimitiveType = cp.isPrimitiveType; + this.isModel = cp.isModel; + this.isContainer = cp.isContainer; + this.isString = cp.isString; + this.isNumeric = cp.isNumeric; + this.isInteger = cp.isInteger; + this.isLong = cp.isLong; + this.isNumber = cp.isNumber; + this.isFloat = cp.isFloat; + this.isDouble = cp.isDouble; + this.isDecimal = cp.isDecimal; + this.isByteArray = cp.isByteArray; + this.isBinary = cp.isBinary; + this.isFile = cp.isFile; + this.isBoolean = cp.isBoolean; + this.isDate = cp.isDate; // full-date notation as defined by RFC 3339, section 5.6, for example, 2017-07-21 + this.isDateTime = cp.isDateTime; // the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z + this.isUuid = cp.isUuid; + this.isUri = cp.isUri; + this.isEmail = cp.isEmail; + this.isFreeFormObject = cp.isFreeFormObject; + this.isAnyType = cp.isAnyType; + this.isArray = cp.isArray; + this.isMap = cp.isMap; + this.isEnum = cp.isEnum; + this.isReadOnly = cp.isReadOnly; + this.isWriteOnly = cp.isWriteOnly; + this.isNullable = cp.isNullable; + this.isSelfReference = cp.isSelfReference; + this.isCircularReference = cp.isCircularReference; + this.isDiscriminator = cp.isDiscriminator; + this._enum = cp._enum; + this.allowableValues = cp.allowableValues; + this.items = cp.items; + this.additionalProperties = cp.additionalProperties; + this.vars = cp.vars; + this.requiredVars = cp.requiredVars; + this.mostInnerItems = cp.mostInnerItems; + this.vendorExtensions = cp.vendorExtensions; + this.hasValidation = cp.hasValidation; + this.isInherited = cp.isInherited; + this.discriminatorValue = cp.discriminatorValue; + this.nameInLowerCase = cp.nameInLowerCase; + this.nameInCamelCase = cp.nameInCamelCase; + this.nameInSnakeCase = cp.nameInSnakeCase; + this.enumName = cp.enumName; + this.maxItems = cp.maxItems; + this.minItems = cp.minItems; + this.setMaxProperties(cp.getMaxProperties()); + this.setMinProperties(cp.getMinProperties()); + this.setUniqueItems(cp.getUniqueItems()); + this.isXmlAttribute = cp.isXmlAttribute; + this.xmlPrefix = cp.xmlPrefix; + this.xmlName = cp.xmlName; + this.xmlNamespace = cp.xmlNamespace; + this.isXmlWrapped = cp.isXmlWrapped; + } + + @Override + public boolean equals(Object o) { + boolean result = super.equals(o); + ExtendedCodegenProperty that = (ExtendedCodegenProperty) o; + return result && + isEntity == that.isEntity && + isUniqueId == that.isUniqueId && + keepAsJSObject == that.keepAsJSObject && + isReservedRecordField == that.isReservedRecordField && + Objects.equals(dataTypeAlternate, that.dataTypeAlternate); + } + + @Override + public int hashCode() { + int superHash = super.hashCode(); + return Objects.hash(superHash, dataTypeAlternate, isEntity, isUniqueId, keepAsJSObject, isReservedRecordField); + } + + @Override + public String toString() { + String superString = super.toString(); + final StringBuilder sb = new StringBuilder(superString); + sb.append(", dataTypeAlternate='").append(dataTypeAlternate).append('\''); + sb.append(", isEntity=").append(isEntity); + sb.append(", isUniqueId=").append(isUniqueId); + sb.append(", keepAsJSObject=").append(keepAsJSObject); + sb.append(", isReservedRecordField=").append(isReservedRecordField); + return sb.toString(); + } + } + + class ExtendedCodegenOperation extends CodegenOperation { + boolean hasReturnPassthroughVoid, returnTypeSupportsEntities, returnTypeIsModel, returnTypeIsArray; + String returnTypeAlternate, returnBaseTypeAlternate, returnPassthrough; + + public ExtendedCodegenOperation(CodegenOperation o) { + super(); + + this.responseHeaders.addAll(o.responseHeaders); + this.hasAuthMethods = o.hasAuthMethods; + this.hasConsumes = o.hasConsumes; + this.hasProduces = o.hasProduces; + this.hasParams = o.hasParams; + this.hasOptionalParams = o.hasOptionalParams; + this.hasRequiredParams = o.hasRequiredParams; + this.returnTypeIsPrimitive = o.returnTypeIsPrimitive; + this.returnSimpleType = o.returnSimpleType; + this.subresourceOperation = o.subresourceOperation; + this.isMap = o.isMap; + this.isArray = o.isArray; + this.isMultipart = o.isMultipart; + this.isResponseBinary = o.isResponseBinary; + this.isResponseFile = o.isResponseFile; + this.hasReference = o.hasReference; + this.isRestfulIndex = o.isRestfulIndex; + this.isRestfulShow = o.isRestfulShow; + this.isRestfulCreate = o.isRestfulCreate; + this.isRestfulUpdate = o.isRestfulUpdate; + this.isRestfulDestroy = o.isRestfulDestroy; + this.isRestful = o.isRestful; + this.isDeprecated = o.isDeprecated; + this.isCallbackRequest = o.isCallbackRequest; + this.uniqueItems = o.uniqueItems; + this.path = o.path; + this.operationId = o.operationId; + this.returnType = o.returnType; + this.returnFormat = o.returnFormat; + this.httpMethod = o.httpMethod; + this.returnBaseType = o.returnBaseType; + this.returnContainer = o.returnContainer; + this.summary = o.summary; + this.unescapedNotes = o.unescapedNotes; + this.notes = o.notes; + this.baseName = o.baseName; + this.defaultResponse = o.defaultResponse; + this.discriminator = o.discriminator; + this.consumes = o.consumes; + this.produces = o.produces; + this.prioritizedContentTypes = o.prioritizedContentTypes; + this.servers = o.servers; + this.bodyParam = o.bodyParam; + this.allParams = o.allParams; + this.bodyParams = o.bodyParams; + this.pathParams = o.pathParams; + this.queryParams = o.queryParams; + this.headerParams = o.headerParams; + this.formParams = o.formParams; + this.cookieParams = o.cookieParams; + this.requiredParams = o.requiredParams; + this.optionalParams = o.optionalParams; + this.authMethods = o.authMethods; + this.tags = o.tags; + this.responses = o.responses; + this.callbacks = o.callbacks; + this.imports = o.imports; + this.examples = o.examples; + this.requestBodyExamples = o.requestBodyExamples; + this.externalDocs = o.externalDocs; + this.vendorExtensions = o.vendorExtensions; + this.nickname = o.nickname; + this.operationIdOriginal = o.operationIdOriginal; + this.operationIdLowerCase = o.operationIdLowerCase; + this.operationIdCamelCase = o.operationIdCamelCase; + this.operationIdSnakeCase = o.operationIdSnakeCase; + } + + @Override + public boolean equals(Object o) { + boolean result = super.equals(o); + ExtendedCodegenOperation that = (ExtendedCodegenOperation) o; + return result && + hasReturnPassthroughVoid == that.hasReturnPassthroughVoid && + returnTypeSupportsEntities == that.returnTypeSupportsEntities && + returnTypeIsArray == that.returnTypeIsArray && + returnTypeIsModel == that.returnTypeIsModel && + Objects.equals(returnTypeAlternate, that.returnTypeAlternate) && + Objects.equals(returnBaseTypeAlternate, that.returnBaseTypeAlternate) && + Objects.equals(returnPassthrough, that.returnPassthrough); + } + + @Override + public int hashCode() { + int superHash = super.hashCode(); + return Objects.hash(superHash, returnPassthrough, hasReturnPassthroughVoid, returnTypeSupportsEntities, returnTypeIsArray, returnTypeIsModel, returnTypeAlternate, returnBaseTypeAlternate); + } + + @Override + public String toString() { + String superString = super.toString(); + final StringBuilder sb = new StringBuilder(superString); + sb.append(", hasReturnPassthroughVoid=").append(hasReturnPassthroughVoid); + sb.append(", returnTypeSupportsEntities=").append(returnTypeSupportsEntities); + sb.append(", returnTypeIsArray=").append(returnTypeIsArray); + sb.append(", returnTypeIsModel=").append(returnTypeIsModel); + sb.append(", returnTypeAlternate='").append(returnTypeAlternate).append('\''); + sb.append(", returnBaseTypeAlternate='").append(returnBaseTypeAlternate).append('\''); + sb.append(", returnPassthrough='").append(returnPassthrough).append('\''); + return sb.toString(); + } + } + + class ExtendedCodegenModel extends CodegenModel { + public Set modelImports = new TreeSet(); + public boolean isEntity; // Is a model containing an "id" property marked as isUniqueId + public String returnPassthrough; + public boolean hasReturnPassthroughVoid; + + public ExtendedCodegenModel(CodegenModel cm) { + super(); + + this.parent = cm.parent; + this.parentSchema = cm.parentSchema; + this.interfaces = cm.interfaces; + this.allParents = cm.allParents; + this.parentModel = cm.parentModel; + this.interfaceModels = cm.interfaceModels; + this.children = cm.children; + this.anyOf = cm.anyOf; + this.oneOf = cm.oneOf; + this.allOf = cm.allOf; + this.name = cm.name; + this.classname = cm.classname; + this.title = cm.title; + this.description = cm.description; + this.classVarName = cm.classVarName; + this.modelJson = cm.modelJson; + this.dataType = cm.dataType; + this.xmlPrefix = cm.xmlPrefix; + this.xmlNamespace = cm.xmlNamespace; + this.xmlName = cm.xmlName; + this.classFilename = cm.classFilename; + this.unescapedDescription = cm.unescapedDescription; + this.discriminator = cm.discriminator; + this.defaultValue = cm.defaultValue; + this.arrayModelType = cm.arrayModelType; + this.isAlias = cm.isAlias; + this.isString = cm.isString; + this.isInteger = cm.isInteger; + this.isLong = cm.isLong; + this.isNumber = cm.isNumber; + this.isNumeric = cm.isNumeric; + this.isFloat = cm.isFloat; + this.isDouble = cm.isDouble; + this.isDate = cm.isDate; + this.isDateTime = cm.isDateTime; + this.vars = cm.vars; + this.allVars = cm.allVars; + this.requiredVars = cm.requiredVars; + this.optionalVars = cm.optionalVars; + this.readOnlyVars = cm.readOnlyVars; + this.readWriteVars = cm.readWriteVars; + this.parentVars = cm.parentVars; + this.allowableValues = cm.allowableValues; + this.mandatory = cm.mandatory; + this.allMandatory = cm.allMandatory; + this.imports = cm.imports; + this.hasVars = cm.hasVars; + this.emptyVars = cm.emptyVars; + this.hasMoreModels = cm.hasMoreModels; + this.hasEnums = cm.hasEnums; + this.isEnum = cm.isEnum; + this.isNullable = cm.isNullable; + this.hasRequired = cm.hasRequired; + this.hasOptional = cm.hasOptional; + this.isArray = cm.isArray; + this.hasChildren = cm.hasChildren; + this.isMap = cm.isMap; + this.isDeprecated = cm.isDeprecated; + this.hasOnlyReadOnly = cm.hasOnlyReadOnly; + this.externalDocumentation = cm.externalDocumentation; + + this.vendorExtensions = cm.vendorExtensions; + this.additionalPropertiesType = cm.additionalPropertiesType; + this.isAdditionalPropertiesTrue = cm.isAdditionalPropertiesTrue; + this.setMaxProperties(cm.getMaxProperties()); + this.setMinProperties(cm.getMinProperties()); + this.setUniqueItems(cm.getUniqueItems()); + this.setMaxItems(cm.getMaxItems()); + this.setMinItems(cm.getMinItems()); + this.setMaxLength(cm.getMaxLength()); + this.setMinLength(cm.getMinLength()); + this.setExclusiveMinimum(cm.getExclusiveMinimum()); + this.setExclusiveMaximum(cm.getExclusiveMaximum()); + this.setMinimum(cm.getMinimum()); + this.setMaximum(cm.getMaximum()); + this.setPattern(cm.getPattern()); + this.setMultipleOf(cm.getMultipleOf()); + this.setItems(cm.getItems()); + this.setAdditionalProperties(cm.getAdditionalProperties()); + this.setIsModel(cm.getIsModel()); + } + + public Set getModelImports() { + return modelImports; + } + + public void setModelImports(Set modelImports) { + this.modelImports = modelImports; + } + + @Override + public boolean equals(Object o) { + boolean result = super.equals(o); + ExtendedCodegenModel that = (ExtendedCodegenModel) o; + return result && + isEntity == that.isEntity && + hasReturnPassthroughVoid == that.hasReturnPassthroughVoid && + Objects.equals(returnPassthrough, that.returnPassthrough) && + Objects.equals(modelImports, that.modelImports); + + } + + @Override + public int hashCode() { + int superHash = super.hashCode(); + return Objects.hash(superHash, isEntity, returnPassthrough, hasReturnPassthroughVoid, getModelImports()); + } + + @Override + public String toString() { + String superString = super.toString(); + final StringBuilder sb = new StringBuilder(superString); + sb.append(", modelImports=").append(modelImports); + sb.append(", isEntity=").append(isEntity); + sb.append(", returnPassthrough='").append(returnPassthrough).append('\''); + sb.append(", hasReturnPassthroughVoid=").append(hasReturnPassthroughVoid); + return sb.toString(); + } + + } + } diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/ApiEntitiesRecord.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/ApiEntitiesRecord.mustache new file mode 100644 index 00000000000..5860cc04b37 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/ApiEntitiesRecord.mustache @@ -0,0 +1,26 @@ +import {Map, Record, RecordOf} from 'immutable'; + +import { +{{#models}} +{{#model}} +{{#isEntity}} + {{classname}}RecordEntity, +{{/isEntity}} +{{/model}} +{{/models}} +} from "./models" + +export const ApiEntitiesRecordProps = { + recType: "ApiEntitiesRecord" as "ApiEntitiesRecord", +{{#models}} +{{#model}} +{{#isEntity}} + {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}: ({{classname}}RecordEntity(), Map()), +{{/isEntity}} +{{/model}} +{{/models}} +}; + +export type ApiEntitiesRecordPropsType = typeof ApiEntitiesRecordProps; +export const ApiEntitiesRecord = Record(ApiEntitiesRecordProps, ApiEntitiesRecordProps.recType); +export type ApiEntitiesRecord = RecordOf; \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/ApiEntitiesReducer.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/ApiEntitiesReducer.mustache new file mode 100644 index 00000000000..9f607ac090f --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/ApiEntitiesReducer.mustache @@ -0,0 +1,21 @@ +import {ApiEntitiesRecord} from "./ApiEntitiesRecord"; +import {ReducerBuilder} from "redux-ts-simple"; +import {normalizedEntities} from "./runtimeSagasAndRecords"; + +export const ApiEntitiesReducer = new ReducerBuilder(ApiEntitiesRecord()) + .on(normalizedEntities, (state, action): ApiEntitiesRecord => { + const {entities} = action.payload; + return state.withMutations(mutableState => { + for (const entityKey in entities) { + const entityMap = entities[entityKey]; + const currentEntityMap = mutableState.get(entityKey as any); + if (currentEntityMap) { + let mergedEntityMap = currentEntityMap.mergeDeep(entityMap); + if (!mergedEntityMap.equals(currentEntityMap)) { + mutableState.set(entityKey as any, mergedEntityMap); + } + } + } + }); + }) + .build(); \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/ApiEntitiesSelectors.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/ApiEntitiesSelectors.mustache new file mode 100644 index 00000000000..9eaffec0dfe --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/ApiEntitiesSelectors.mustache @@ -0,0 +1,5 @@ +export let getApiEntitiesState: (state: any) => any = (state: any) => state.app.apiEntities; + +export function setApiEntitiesStateGetter(getter: (state: any) => any) { // Use this to customize the location where you have placed your ApiEntitiesRecord in your project. + getApiEntitiesState = getter; +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/allSagas.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/allSagas.mustache new file mode 100644 index 00000000000..018140fc886 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/allSagas.mustache @@ -0,0 +1,19 @@ +import {all, fork} from "redux-saga/effects"; + +import { +{{#apiInfo}} +{{#apis}} + {{#lambda.camelcase}}{{classFilename}}{{/lambda.camelcase}}AllSagas, +{{/apis}} +{{/apiInfo}} +} from "./"; + +export function *allApiSagas() { + yield all([ +{{#apiInfo}} +{{#apis}} + fork({{#lambda.camelcase}}{{classFilename}}{{/lambda.camelcase}}AllSagas), +{{/apis}} +{{/apiInfo}} + ]); +} diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/apis.index.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/apis.index.mustache index 6286332d7bc..44f8c989936 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/apis.index.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/apis.index.mustache @@ -1,7 +1,14 @@ +{{#useSagaAndRecords}} +export * from './SagaApiManager' +export * from './allSagas' +{{/useSagaAndRecords}} {{#apiInfo}} {{#apis}} {{#operations}} export * from './{{ classFilename }}'; +{{#useSagaAndRecords}} +export * from './{{{ classFilename }}}Sagas'; +{{/useSagaAndRecords}} {{/operations}} {{/apis}} {{/apiInfo}} diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/index.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/index.mustache index e548c9df6b2..ede27a38747 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/index.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/index.mustache @@ -1,4 +1,10 @@ export * from './runtime'; +{{#useSagaAndRecords}} +export * from './runtimeSagasAndRecords'; +export * from './ApiEntitiesRecord'; +export * from './ApiEntitiesReducer'; +export * from './ApiEntitiesSelectors'; +{{/useSagaAndRecords}} {{#apiInfo}} {{#apis.0}} export * from './apis'; diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/models.index.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/models.index.mustache index 7331df67ca9..1be5a347b38 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/models.index.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/models.index.mustache @@ -2,7 +2,13 @@ {{#model}} {{^withoutRuntimeChecks}} export * from './{{{ classFilename }}}'; -{{/withoutRuntimeChecks}}{{#withoutRuntimeChecks}} +{{#useSagaAndRecords}} +{{^isEnum}} +export * from './{{{ classFilename }}}Record'; +{{/isEnum}} +{{/useSagaAndRecords}} +{{/withoutRuntimeChecks}} +{{#withoutRuntimeChecks}} {{#isEnum}} {{>modelEnumInterfaces}} {{/isEnum}} diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/package.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/package.mustache index b7c3d544af1..c082bbf3982 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/package.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/package.mustache @@ -3,14 +3,27 @@ "version": "{{npmVersion}}", "description": "OpenAPI client for {{npmName}}", "author": "OpenAPI-Generator", +{{#packageAsSourceOnlyLibrary}} + "main": "./index.ts", +{{/packageAsSourceOnlyLibrary}} +{{^packageAsSourceOnlyLibrary}} "main": "./dist/index.js", "typings": "./dist/index.d.ts", "scripts": { - "build": "tsc", + "build": "tsc"{{^sagasAndRecords}}, "prepare": "npm run build" +{{/sagasAndRecords}} }, +{{/packageAsSourceOnlyLibrary}} "devDependencies": { - "typescript": "^{{#typescriptThreePlus}}3.6{{/typescriptThreePlus}}{{^typescriptThreePlus}}2.4{{/typescriptThreePlus}}" +{{#sagasAndRecords}} + "immutable": "^4.0.0-rc.12", + "normalizr": "^3.6.1", + "redux-saga": "^1.1.3", + "redux-ts-simple": "^3.2.0", + "reselect": "^4.0.0", +{{/sagasAndRecords}} + "typescript": "^{{#typescriptThreePlus}}3.9.5{{/typescriptThreePlus}}{{^typescriptThreePlus}}2.4{{/typescriptThreePlus}}" }{{#npmRepository}},{{/npmRepository}} {{#npmRepository}} "publishConfig": { diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/recordGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/recordGeneric.mustache new file mode 100644 index 00000000000..b418276e452 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/recordGeneric.mustache @@ -0,0 +1,271 @@ +import {ApiRecordUtils, knownRecordFactories{{#returnPassthrough}}, appFromJS, NormalizedRecordEntities{{/returnPassthrough}}} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + {{classname}}, +{{#vars}} +{{#isEnum}} + {{classname}}{{enumName}}, +{{/isEnum}} +{{/vars}} +} from './{{classname}}'; + +{{#imports}} +import { + {{{.}}}, +} from './{{{.}}}'; +{{/imports}} + +{{#modelImports}} +import { + {{{.}}}Record, + {{#lambda.camelcase}}{{.}}{{/lambda.camelcase}}RecordUtils +} from './{{{.}}}Record'; +{{/modelImports}} + +export const {{classname}}RecordProps = { + recType: "{{classname}}ApiRecord" as "{{classname}}ApiRecord", +{{#vars}} + {{#isArray}} + {{#items.isModel}} + {{#keepAsJSObject}} + {{name}}: {{#required}}new {{{dataType}}}(){{/required}}{{^required}}null as {{{dataType}}} | null{{/required}}, + {{/keepAsJSObject}} + {{^keepAsJSObject}} + {{name}}: ({{{items.dataType}}}Record(), {{#required}}{{{defaultValue}}}{{/required}}{{^required}}null as {{{dataTypeAlternate}}} | null{{/required}}), + {{/keepAsJSObject}} + {{/items.isModel}} + {{^items.isModel}} + {{name}}: {{#required}}{{{defaultValue}}}{{/required}}{{^required}}null as {{{dataTypeAlternate}}} | null{{/required}}, + {{/items.isModel}} + {{/isArray}} + {{#isModel}} + {{#keepAsJSObject}} + {{name}}: {{#required}}{} as any as {{{dataType}}}{{/required}}{{^required}}null as {{{dataType}}} | null{{/required}}, + {{/keepAsJSObject}} + {{^keepAsJSObject}} + {{name}}: {{#required}}{{{defaultValue}}}{{/required}}{{^required}}({{{defaultValue}}}, null as {{{dataTypeAlternate}}} | null){{/required}}, + {{/keepAsJSObject}} + {{/isModel}} + {{^isArray}} + {{^isModel}} + {{name}}: {{#required}}{{{defaultValue}}}{{/required}}{{^required}}null as {{{dataTypeAlternate}}} | null{{/required}}, + {{/isModel}} + {{/isArray}} +{{/vars}} +}; + +export type {{classname}}RecordPropsType = typeof {{classname}}RecordProps; +export const {{classname}}Record = Record({{classname}}RecordProps, {{classname}}RecordProps.recType); +export type {{classname}}Record = RecordOf<{{classname}}RecordPropsType>; + +knownRecordFactories.set({{classname}}RecordProps.recType, {{classname}}Record); + +{{#isEntity}} +export const {{classname}}RecordEntityProps = { + ...{{classname}}RecordProps, + recType: "{{classname}}ApiRecordEntity" as "{{classname}}ApiRecordEntity", +{{#vars}} + {{#isEntity}} + {{^keepAsJSObject}} + {{name}}: {{#required}}"-1"{{/required}}{{^required}}null as string | null{{/required}}, + {{/keepAsJSObject}} + {{/isEntity}} + {{#isArray}} + {{#items.isEntity}} + {{^keepAsJSObject}} + {{name}}: {{#required}}List(){{/required}}{{^required}}null as List | null{{/required}}, + {{/keepAsJSObject}} + {{/items.isEntity}} + {{/isArray}} +{{/vars}} +}; + +export type {{classname}}RecordEntityPropsType = typeof {{classname}}RecordEntityProps; +export const {{classname}}RecordEntity = Record({{classname}}RecordEntityProps, {{classname}}RecordEntityProps.recType); +export type {{classname}}RecordEntity = RecordOf<{{classname}}RecordEntityPropsType>; + +knownRecordFactories.set({{classname}}RecordEntityProps.recType, {{classname}}RecordEntity); +{{/isEntity}} + +class {{classname}}RecordUtils extends ApiRecordUtils<{{classname}}, {{classname}}Record> { + public normalize(apiObject: {{classname}}, asEntity?: boolean): {{classname}} { + (apiObject as any).recType = {{#isEntity}}asEntity ? {{classname}}RecordEntityProps.recType : {{/isEntity}}{{classname}}RecordProps.recType; +{{#vars}} + {{#isUniqueId}} + {{^required}}if (apiObject.{{name}}) { {{/required}}(apiObject as any).{{name}} = apiObject.{{name}}.{{#isArray}}map(item => item.{{/isArray}}toString(){{#isArray}}){{/isArray}};{{^required}} } {{/required}} + {{/isUniqueId}} + {{^keepAsJSObject}} + {{#isModel}} + {{^required}}if (apiObject.{{name}}) { {{/required}}{{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.normalize(apiObject.{{name}});{{^required}} } {{/required}} + {{/isModel}} + {{#isArray}} + {{#items.isModel}} + {{^required}}if (apiObject.{{name}}) { {{/required}}{{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.normalizeArray(apiObject.{{name}});{{^required}} } {{/required}} + {{/items.isModel}} + {{/isArray}} + {{/keepAsJSObject}} +{{/vars}} + return apiObject; + } +{{#isEntity}} + + public getSchema(): Schema { + return new schema.Entity("{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}", { +{{#vars}} + {{#isEntity}} + {{^keepAsJSObject}} + {{name}}: {{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.getSchema(), + {{/keepAsJSObject}} + {{/isEntity}} + {{#isArray}} + {{#items.isEntity}} + {{^keepAsJSObject}} + {{name}}: [{{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.getSchema()], + {{/keepAsJSObject}} + {{/items.isEntity}} + {{/isArray}} +{{/vars}} + }); + } + + public *toInlined(entityId?: string | null) { + if (!entityId) {return undefined; } + const entity = yield select(apiEntity{{classname}}Selector, {id: entityId}); + if (!entity) {return undefined; } + + const { + recType, +{{#vars}} +{{#isEntity}} +{{^keepAsJSObject}} + {{name}}: {{name}}_original, +{{/keepAsJSObject}} +{{/isEntity}} +{{#isArray}} +{{#items.isEntity}} +{{^keepAsJSObject}} + {{name}}: {{name}}_original, +{{/keepAsJSObject}} +{{/items.isEntity}} +{{/isArray}} +{{/vars}} + ...unchangedProperties + } = entity; + + const entityProperties = { +{{#vars}} +{{#isEntity}} +{{^keepAsJSObject}} + {{name}}: {{^required}}entity.{{name}} ? {{/required}}yield call({{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.toInlined, entity.{{name}}){{^required}} : null{{/required}}, +{{/keepAsJSObject}} +{{/isEntity}} +{{#isArray}} +{{#items.isEntity}} +{{^keepAsJSObject}} + {{name}}: {{^required}}entity.{{name}} ? {{/required}}yield call({{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.toInlinedArray, entity.{{name}}){{^required}} : null{{/required}}, +{{/keepAsJSObject}} +{{/items.isEntity}} +{{/isArray}} +{{/vars}} + } + + return {{classname}}Record({ + ...unchangedProperties, + ...entityProperties + }); + } + + public *toInlinedArray(entityIds: List | null) { + if (!entityIds) {return null; } + let entities = List<{{classname}}Record>(); + for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) { + const entity = yield call(this.toInlined, entityIds.get(entityIndex)); + if (entity) { + entities.push(entity); + } + } + return entities; + } +{{/isEntity}} + + public toApi(record: {{classname}}Record): {{classname}} { + const apiObject = super.toApi(record); +{{#vars}} + {{#isUniqueId}} + {{^required}}if (record.{{name}}) { {{/required}}apiObject.{{name}} = {{#isArray}}record.{{name}}.map(item => parseFloat(item)).toArray(){{/isArray}}{{^isArray}}parseFloat(record.{{name}}){{/isArray}};{{^required}} } {{/required}} + {{/isUniqueId}} + {{^keepAsJSObject}} + {{#isModel}} + {{^required}}if (record.{{name}}) { {{/required}}apiObject.{{name}} = {{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.toApi(record.{{name}});{{^required}} } {{/required}} + {{/isModel}} + {{#isArray}} + {{#items.isModel}} + {{^required}}if (record.{{name}}) { {{/required}}apiObject.{{name}} = {{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.toApiArray(record.{{name}});{{^required}} } {{/required}} + {{/items.isModel}} + {{/isArray}} + {{/keepAsJSObject}} +{{/vars}} + return apiObject; + } +{{#returnPassthrough}} +{{#vars.1}} + + public fromApiPassthrough(apiObject: {{classname}}): {{{dataTypeAlternate}}} { + {{#isModel}} + if (!apiObject.{{{returnPassthrough}}}) {return {{{defaultValue}}}; } + const normalizedApiObject = {{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.normalize(apiObject.{{{returnPassthrough}}}); + return appFromJS(normalizedApiObject); + {{/isModel}} + {{#isArray}} + {{#items.isModel}} + if (!apiObject.{{{returnPassthrough}}}) {return {{{defaultValue}}}; } + const normalizedApiObject = {{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.normalizeArray(apiObject.{{{returnPassthrough}}}); + return appFromJS(normalizedApiObject); + {{/items.isModel}} + {{^items.isModel}} + return appFromJS(apiObject.{{{returnPassthrough}}}); + {{/items.isModel}} + {{/isArray}} + {{^isModel}} + {{^isArray}} + return apiObject.{{{returnPassthrough}}}!; + {{/isArray}} + {{/isModel}} + } + + public fromApiPassthroughAsEntities(apiObject: {{classname}}): NormalizedRecordEntities { + {{#isEntity}} + if (!apiObject.{{{returnPassthrough}}}) {return {entities: {}, result: List()}; } + return ApiRecordUtils.toNormalizedRecordEntities({{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.normalizeArrayAsEntities([apiObject.{{{returnPassthrough}}}]), true); + {{/isEntity}} + {{#isArray}} + {{#items.isEntity}} + if (!apiObject.{{{returnPassthrough}}}) {return {entities: {}, result: List()}; } + return ApiRecordUtils.toNormalizedRecordEntities({{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.normalizeArrayAsEntities(apiObject.{{{returnPassthrough}}}), true); + {{/items.isEntity}} + {{^items.isEntity}} + console.log("entities revival not supported on this response"); + return {entities: {}, result: List()}; + {{/items.isEntity}} + {{/isArray}} + {{^isEntity}} + {{^isArray}} + console.log("entities revival not supported on this response"); + return {entities: {}, result: List()}; + {{/isArray}} + {{/isEntity}} + } +{{/vars.1}} +{{/returnPassthrough}} +} + +export const {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}RecordUtils = new {{classname}}RecordUtils(); + +{{#isEntity}} +export const apiEntities{{classname}}Selector = (state: any) => getApiEntitiesState(state).{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}} as Map; +export const apiEntity{{classname}}Selector = (state: any, {id}: {id?: string | null}) => id ? apiEntities{{classname}}Selector(state).get(id) : undefined; +{{/isEntity}} diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/records.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/records.mustache new file mode 100644 index 00000000000..5c8a0ad348a --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/records.mustache @@ -0,0 +1,15 @@ +{{#models}} +{{#model}} +{{#isEnum}} +// This file is not needed and was generated only because of how codegen is built... Enums do not need to be converted to Records and can be used directly. +{{/isEnum}} +{{^isEnum}} +{{^oneOf}} +/* tslint:disable */ +/* eslint-disable */ +{{>licenseInfo}} +{{>recordGeneric}} +{{/oneOf}} +{{/isEnum}} +{{/model}} +{{/models}} diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/runtimeSagasAndRecords.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/runtimeSagasAndRecords.mustache new file mode 100644 index 00000000000..e182521fac3 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/runtimeSagasAndRecords.mustache @@ -0,0 +1,120 @@ +/* tslint:disable */ +/* eslint-disable */ + +import {fromJS as originalFromJS, isIndexed, List, Map as ImmMap, RecordOf} from 'immutable'; +import {normalize, NormalizedSchema, schema, Schema} from "normalizr"; +import {ActionDefinition, createAction} from "redux-ts-simple"; + +export const knownRecordFactories = new Map(); +export const knownIndexedSetByKey: (string | number)[] = []; + +export function appFromJS(any: any): any { + return originalFromJS(any, (key, value) => { + if (isIndexed(value)) { + return knownIndexedSetByKey.indexOf(key) !== -1 ? value.toSet() : value.toList(); + } // we're reviving an array -> it's a List + const MatchingType = knownRecordFactories.get(value.get('recType')) as { new(input?: any): any }; // check if we know a Record with this type + if (MatchingType) { + return new MatchingType(value); + } + return value.toMap(); // no matching Record type found -> it's a plain old Map + }); +} + +export type NormalizedRecordEntity = NormalizedSchema<{ [key: string]: Map> }, string>; +export type NormalizedRecordEntities = NormalizedSchema<{ [key: string]: Map> }, List>; + +export abstract class ApiRecordUtils> { + public abstract normalize(apiObject: TAPI, asEntity?: boolean): any; + + public getSchema(): Schema { + console.log("Entity mode not supported on this record."); + return new schema.Entity("entityNotSupported"); + } + + public normalizeArray(apiObjectArray: TAPI[], asEntity?: boolean): TAPI[] { + apiObjectArray.forEach(apiObject => this.normalize(apiObject, asEntity)); + return apiObjectArray; + } + + public normalizeAsEntities(apiObject: TAPI): NormalizedSchema { + const normalized = this.normalize(apiObject, true); + return normalize(normalized, this.getSchema()); + } + + public normalizeArrayAsEntities(apiObject: TAPI[]): NormalizedSchema { + const normalized = this.normalizeArray(apiObject, true); + return normalize(normalized, new schema.Array(this.getSchema())); + } + + public fromApi(apiObject: TAPI): TREC { + return appFromJS(this.normalize(apiObject)); + } + + public fromApiArray(apiObjectArray: TAPI[]): List { + this.normalizeArray(apiObjectArray); + return appFromJS(apiObjectArray); + } + + public fromApiAsEntities(apiObject: TAPI): NormalizedRecordEntity { + return ApiRecordUtils.toNormalizedRecordEntities(this.normalizeAsEntities(apiObject), false); + } + + public fromApiArrayAsEntities(apiObject: TAPI[]): NormalizedRecordEntities { + return ApiRecordUtils.toNormalizedRecordEntities(this.normalizeArrayAsEntities(apiObject), true); + } + + public toApi(record: TREC): TAPI { + const apiObject = record.toJS(); + delete apiObject.recType; + return apiObject; + } + + public toApiArray(records: List): TAPI[] { + return records.map(record => this.toApi(record)).toArray(); + } + + public static toNormalizedRecordEntities(normalizedAsEntities: any, forArray: boolean) { + const entities = normalizedAsEntities.entities; + for (const entityKey of Object.keys(entities)) { + entities[entityKey] = appFromJS(entities[entityKey]); + } + normalizedAsEntities.result = appFromJS(normalizedAsEntities.result || (forArray ? "" : [])); + return normalizedAsEntities; + } +} + +export const allApiActionFailures: SagaActionDefinition[] = []; + +export interface BaseEntitySupportPayloadApiAction { + toInlined?: boolean; + toEntities?: boolean; + markErrorsAsHandled?: boolean; +} + +export interface BasePayloadApiAction { + markErrorsAsHandled?: boolean; +} + +export interface SagaActionDefinition extends ActionDefinition { + toString: () => string; +} + +export function createSagaAction(type: string, options?: { doNotAutoRegisterFailure?: boolean, namespace?: string }): SagaActionDefinition { + const {doNotAutoRegisterFailure, namespace} = options || {} as any; + let actionDefinition = createAction(namespace ? `${namespace}-${type}` : type); + (actionDefinition as any).toString = () => actionDefinition.type; + if (type.endsWith("Failure") && !doNotAutoRegisterFailure) { + allApiActionFailures.push(actionDefinition); + } + return actionDefinition; +} + +export let apiCall: any>(context: Ctx, fn: Fn, ...args: Parameters) => Generator; + +export function setApiCall(apiCallFc: any>(context: Ctx, fn: Fn, ...args: Parameters) => Generator) { + console.log("init apiCall"); + apiCall = apiCallFc; +} + +export const normalizedEntities = createSagaAction("normalizedEntities"); \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/sagaApiManager.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/sagaApiManager.mustache new file mode 100644 index 00000000000..af6fa7fdd71 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/sagaApiManager.mustache @@ -0,0 +1,36 @@ +import { + Configuration, + ConfigurationParameters, +} from "../"; + +import { +{{#apiInfo}} +{{#apis}} + {{classFilename}}, +{{/apis}} +{{/apiInfo}} +} from "./"; + +export class Api { +{{#apiInfo}} +{{#apis}} + public static {{#lambda.camelcase}}{{classFilename}}{{/lambda.camelcase}}: {{classFilename}}; +{{/apis}} +{{/apiInfo}} + + public static init(apiBasePath: string) { + const apiBaseConfig: ConfigurationParameters = { + basePath: apiBasePath, + credentials: "include", + headers: { + 'Cache-Control': 'no-cache, no-store' // this is needed to prevent stalling issues in Chrome. Also it is a good behavior for api calls. + } + }; + +{{#apiInfo}} +{{#apis}} + Api.{{#lambda.camelcase}}{{classFilename}}{{/lambda.camelcase}} = new {{classFilename}}(new Configuration(apiBaseConfig)); +{{/apis}} +{{/apiInfo}} + } +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/sagas.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/sagas.mustache new file mode 100644 index 00000000000..ac5581582d8 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/sagas.mustache @@ -0,0 +1,239 @@ +/* tslint:disable */ +/* eslint-disable */ +{{>licenseInfo}} + +import {Api} from './'; +import {List} from 'immutable'; +import {all, fork, put, takeLatest} from "redux-saga/effects"; +import {apiCall, createSagaAction as originalCreateSagaAction, BaseEntitySupportPayloadApiAction, BasePayloadApiAction, NormalizedRecordEntities, normalizedEntities} from "../runtimeSagasAndRecords"; +import {Action} from "redux-ts-simple"; + +{{#imports.0}} +import { + {{#imports}} + {{className}}, + {{className}}Record, + {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}RecordUtils, + {{/imports}} + {{#passthroughImports}} + {{.}}, + {{/passthroughImports}} +} from '../models'; +{{/imports.0}} +{{#hasEnums}} +{{#operations}} +{{#operation}} +{{#allParams}} +{{#isEnum}} + +import { + {{operationIdCamelCase}}{{enumName}}, +} from './{{classname}}'; +{{/isEnum}} +{{/allParams}} +{{/operation}} +{{/operations}} +{{/hasEnums}} + +const createSagaAction = (type: string) => originalCreateSagaAction(type, {namespace: "api_{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}"}); + +export const {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}SagaMap = new Map Generator>([ +{{#operations}} + {{#operation}} + ["{{nickname}}", {{nickname}}Saga], + {{/operation}} +{{/operations}} + ] +); + +export function *{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}AllSagas() { + yield all([...{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}SagaMap.values()].map(actionSaga => fork(actionSaga))); +} + +{{#operations}} +{{#operation}} +//region {{nickname}} + +{{#returnTypeSupportsEntities}} +export interface Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}} extends {{#allParams.0}}Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}}Request, {{/allParams.0}}BaseEntitySupportPayloadApiAction { +} +{{/returnTypeSupportsEntities}} +{{^returnTypeSupportsEntities}} +export interface Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}} extends {{#allParams.0}}Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}}Request, {{/allParams.0}}BasePayloadApiAction { +} +{{/returnTypeSupportsEntities}} + +{{#allParams.0}} +export interface Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}}Request { +{{#allParams}} + {{paramName}}{{^required}}?{{/required}}: {{{dataTypeAlternate}}}; +{{/allParams}} +} +{{/allParams.0}} + +export const {{nickname}}Request = createSagaAction<{{#allParams.0}}Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}}Request{{/allParams.0}}{{^allParams.0}}void{{/allParams.0}}>("{{nickname}}Request"); +{{#returnType}} +export const {{nickname}}Success = createSagaAction<{{#hasReturnPassthroughVoid}}void{{/hasReturnPassthroughVoid}}{{^hasReturnPassthroughVoid}}{{{returnTypeAlternate}}}{{/hasReturnPassthroughVoid}}>("{{nickname}}Success"); +{{#returnTypeSupportsEntities}} +export const {{nickname}}Success_Entities = createSagaAction("{{nickname}}Success_Entities"); +{{/returnTypeSupportsEntities}} +{{/returnType}} +{{^returnType}} +export const {{nickname}}Success = createSagaAction("{{nickname}}Success"); +{{/returnType}} +export const {{nickname}}Failure = createSagaAction<{error: any, requestPayload: Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}}}>("{{nickname}}Failure"); + +export const {{nickname}} = createSagaAction("{{nickname}}"); + +export function *{{nickname}}Saga() { + yield takeLatest({{nickname}}, {{nickname}}SagaImp); +} + +export function *{{nickname}}SagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { +{{#returnTypeSupportsEntities}} + const {toEntities, toInlined = !toEntities, ...requestPayload} = _payloadRest_; +{{/returnTypeSupportsEntities}} +{{#allParams.0}} + const { +{{#allParams}} + {{paramName}}, +{{/allParams}} + } = _payloadRest_; +{{/allParams.0}} + + yield put({{nickname}}Request({{#allParams.0}}{{#returnTypeSupportsEntities}}requestPayload{{/returnTypeSupportsEntities}}{{^returnTypeSupportsEntities}}_action_.payload{{/returnTypeSupportsEntities}}{{/allParams.0}})); + + const response{{#returnType}}: Required<{{{returnType}}}>{{/returnType}} = yield apiCall(Api.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}, Api.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}.{{nickname}}, +{{#allParams.0}} +{{#allParams}} +{{#isUniqueId}} +{{#isArray}} + {{^required}}{{paramName}} ? {{/required}}{{paramName}}.map(p => parseFloat(p)).toArray(){{^required}} : undefined{{/required}}, +{{/isArray}} +{{^isArray}} + {{^required}}{{paramName}} ? {{/required}}parseFloat({{paramName}}){{^required}} : undefined{{/required}}, +{{/isArray}} +{{/isUniqueId}} +{{^isUniqueId}} +{{#isArray}} +{{#items.isModel}} + {{^required}}{{paramName}} ? {{/required}}{{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.toApiArray({{paramName}}){{^required}} : undefined{{/required}}, +{{/items.isModel}} +{{^items.isModel}} + {{^required}}{{paramName}} ? {{/required}}{{paramName}}.toJS(){{^required}} : undefined{{/required}}, +{{/items.isModel}} +{{/isArray}} +{{#isModel}} + {{^required}}{{paramName}} ? {{/required}}{{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.toApi({{paramName}}){{^required}} : undefined{{/required}}, +{{/isModel}} +{{^isArray}} +{{^isModel}} + {{paramName}}, +{{/isModel}} +{{/isArray}} +{{/isUniqueId}} +{{/allParams}} +{{/allParams.0}} + ); + +{{#returnType}} +{{^hasReturnPassthroughVoid}} + let successReturnValue: any = undefined; +{{/hasReturnPassthroughVoid}} +{{/returnType}} +{{#returnTypeSupportsEntities}} + if (toEntities) { +{{#returnPassthrough}} + successReturnValue = {{#lambda.camelcase}}{{{returnType}}}{{/lambda.camelcase}}RecordUtils.fromApiPassthroughAsEntities(response); +{{/returnPassthrough}} +{{^hasReturnPassthroughVoid}} +{{^returnPassthrough}} +{{#returnTypeIsArray}} +{{#returnTypeAlternate}} + successReturnValue = {{#lambda.camelcase}}{{returnBaseTypeAlternate}}{{/lambda.camelcase}}Utils.fromApiArrayAsEntities(response); +{{/returnTypeAlternate}} +{{/returnTypeIsArray}} +{{#returnTypeIsModel}} + successReturnValue = {{#lambda.camelcase}}{{returnTypeAlternate}}{{/lambda.camelcase}}Utils.fromApiArrayAsEntities([response]); +{{/returnTypeIsModel}} +{{/returnPassthrough}} +{{/hasReturnPassthroughVoid}} + yield put(normalizedEntities(successReturnValue)); + yield put({{nickname}}Success_Entities(successReturnValue)); + } + if (toInlined) { +{{/returnTypeSupportsEntities}} +{{#returnType}} +{{#returnPassthrough}} + successReturnValue = {{#lambda.camelcase}}{{{returnType}}}{{/lambda.camelcase}}RecordUtils.fromApiPassthrough(response); + yield put({{nickname}}Success(successReturnValue)); +{{/returnPassthrough}} +{{#hasReturnPassthroughVoid}} + yield put({{nickname}}Success()); +{{/hasReturnPassthroughVoid}} +{{^hasReturnPassthroughVoid}} +{{^returnPassthrough}} +{{#returnTypeIsArray}} +{{#returnTypeAlternate}} + successReturnValue = {{#lambda.camelcase}}{{returnBaseTypeAlternate}}{{/lambda.camelcase}}Utils.fromApiArray(response); + yield put({{nickname}}Success(successReturnValue)); +{{/returnTypeAlternate}} +{{/returnTypeIsArray}} +{{#returnTypeIsModel}} + successReturnValue = {{#lambda.camelcase}}{{returnTypeAlternate}}{{/lambda.camelcase}}Utils.fromApi(response); + yield put({{nickname}}Success(successReturnValue)); +{{/returnTypeIsModel}} +{{^returnTypeIsArray}} +{{^returnTypeIsModel}} + yield put({{nickname}}Success(response)); +{{/returnTypeIsModel}} +{{/returnTypeIsArray}} +{{/returnPassthrough}} +{{/hasReturnPassthroughVoid}} +{{/returnType}} +{{^returnType}} + yield put({{nickname}}Success()); +{{/returnType}} +{{#returnTypeSupportsEntities}} + } +{{/returnTypeSupportsEntities}} + +{{#returnType}} +{{#returnPassthrough}} + return successReturnValue; +{{/returnPassthrough}} +{{#hasReturnPassthroughVoid}} + return undefined; +{{/hasReturnPassthroughVoid}} +{{^hasReturnPassthroughVoid}} +{{^returnPassthrough}} +{{#returnTypeIsArray}} +{{#returnTypeAlternate}} + return successReturnValue; +{{/returnTypeAlternate}} +{{/returnTypeIsArray}} +{{#returnTypeIsModel}} + return successReturnValue; +{{/returnTypeIsModel}} +{{^returnTypeIsArray}} +{{^returnTypeIsModel}} + return response; +{{/returnTypeIsModel}} +{{/returnTypeIsArray}} +{{/returnPassthrough}} +{{/hasReturnPassthroughVoid}} +{{/returnType}} +{{^returnType}} + return undefined; +{{/returnType}} + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put({{nickname}}Failure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +{{/operation}} +{{/operations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/sourceLibraryIndex.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/sourceLibraryIndex.mustache new file mode 100644 index 00000000000..8879d7a13f3 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/sourceLibraryIndex.mustache @@ -0,0 +1 @@ +export * from './src'; \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/tsconfig.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/tsconfig.mustache index 420c3a44f88..a8778b09659 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/tsconfig.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/tsconfig.mustache @@ -2,6 +2,9 @@ "compilerOptions": { "declaration": true, "target": "{{#supportsES6}}es6{{/supportsES6}}{{^supportsES6}}es5{{/supportsES6}}", +{{#sagasAndRecords}} + "strict": true, +{{/sagasAndRecords}} "module": "commonjs", "moduleResolution": "node", "outDir": "dist", diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptFetchClientOptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptFetchClientOptionsProvider.java index d4aecd9852e..f33f1c437d6 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptFetchClientOptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/TypeScriptFetchClientOptionsProvider.java @@ -41,6 +41,7 @@ public class TypeScriptFetchClientOptionsProvider implements OptionsProvider { public static final String PREPEND_FORM_OR_BODY_PARAMETERS_VALUE = "true"; public static final String TYPESCRIPT_THREE_PLUS = "true"; public static final String WITHOUT_RUNTIME_CHECKS = "true"; + public static final String SAGAS_AND_RECORDS = "false"; @Override public String getLanguage() { @@ -68,6 +69,7 @@ public class TypeScriptFetchClientOptionsProvider implements OptionsProvider { .put(TypeScriptFetchClientCodegen.PREFIX_PARAMETER_INTERFACES, Boolean.FALSE.toString()) .put(TypeScriptFetchClientCodegen.TYPESCRIPT_THREE_PLUS, TYPESCRIPT_THREE_PLUS) .put(TypeScriptFetchClientCodegen.WITHOUT_RUNTIME_CHECKS, WITHOUT_RUNTIME_CHECKS) + .put(TypeScriptFetchClientCodegen.SAGAS_AND_RECORDS, SAGAS_AND_RECORDS) .put(CodegenConstants.ALLOW_UNICODE_IDENTIFIERS, ALLOW_UNICODE_IDENTIFIERS_VALUE) .put(CodegenConstants.PREPEND_FORM_OR_BODY_PARAMETERS, PREPEND_FORM_OR_BODY_PARAMETERS_VALUE) .put(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR, "true") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientOptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientOptionsTest.java index 33ef4b99bd4..7b29653b31a 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientOptionsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientOptionsTest.java @@ -47,5 +47,6 @@ public class TypeScriptFetchClientOptionsTest extends AbstractOptionsTest { verify(clientCodegen).setPrependFormOrBodyParameters(Boolean.valueOf(TypeScriptFetchClientOptionsProvider.PREPEND_FORM_OR_BODY_PARAMETERS_VALUE)); verify(clientCodegen).setTypescriptThreePlus(Boolean.valueOf(TypeScriptFetchClientOptionsProvider.TYPESCRIPT_THREE_PLUS)); verify(clientCodegen).setWithoutRuntimeChecks(Boolean.valueOf(TypeScriptFetchClientOptionsProvider.WITHOUT_RUNTIME_CHECKS)); + verify(clientCodegen).setSagasAndRecords(Boolean.valueOf(TypeScriptFetchClientOptionsProvider.SAGAS_AND_RECORDS)); } } diff --git a/modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-saga-and-records.yaml b/modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-saga-and-records.yaml new file mode 100644 index 00000000000..81124e9578e --- /dev/null +++ b/modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-saga-and-records.yaml @@ -0,0 +1,1175 @@ +swagger: '2.0' +info: + description: 'This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.' + version: 1.0.0 + title: OpenAPI Petstore + license: + name: Apache-2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0.html' +host: petstore.swagger.io +basePath: /v2 +tags: + - name: pet + description: Everything about your Pets + - name: store + description: Access to Petstore orders + - name: user + description: Operations about user +schemes: + - http +parameters: + fake_petPart-id: + in: path + name: fake_petPart-id + required: true + type: integer + format: int64 +paths: + /fake_behavior/{behavior-id}/type: + get: + tags: + - Behavior + summary: Get the type of behavior + operationId: getBehaviorType + parameters: + - in: path + name: behavior-id + required: true + type: integer + format: int64 + responses: + 200: + description: OK + schema: + $ref: "#/definitions/GetBehaviorTypeResponse" + /fake_behavior/{behavior-id}/permissions: + get: + tags: + - Behavior + summary: Get permissions for the behavior + operationId: getBehaviorPermissions + parameters: + - in: path + name: behavior-id + required: true + type: integer + format: int64 + responses: + 200: + description: OK + schema: + $ref: "#/definitions/GetBehaviorPermissionsResponse" + + /fake_petParts/{fake_petPart-id}/part-type: + get: + tags: + - PetPart + summary: Returns single pet part type for the petPart id. + operationId: getFakePetPartType + parameters: + - $ref: "#/definitions/fake_petPart-id" + responses: + 200: + description: OK + schema: + $ref: "#/definitions/GetPetPartTypeResponse" + /fake_petParts/{fake_petPart-id}/matching-parts: + get: + tags: + - PetPart + summary: Get the matching parts for the given pet part. + operationId: getMatchingParts + parameters: + - $ref: "#/parameters/fake_petPart-id" + - in: query + name: long + required: true + type: boolean + - in: query + name: smooth + required: true + type: boolean + - in: query + name: name + required: false + type: string + - in: query + name: connected-part + required: false + type: string + - in: query + name: short + required: true + type: boolean + responses: + 200: + description: OK + schema: + $ref: "#/definitions/GetMatchingPartsResponse" + /pet: + post: + tags: + - pet + summary: Add a new pet to the store + description: '' + operationId: addPet + consumes: + - application/json + - application/xml + produces: + - application/xml + - application/json + parameters: + - in: body + name: dummyCat + description: dummy category for testing + required: true + schema: + $ref: "#/definitions/Category" + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + put: + tags: + - pet + summary: Update an existing pet + description: '' + operationId: updatePet + consumes: + - application/json + - application/xml + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: Pet object that needs to be updated in the store + required: true + schema: + $ref: '#/definitions/Pet' + responses: + '400': + description: Invalid ID supplied + '404': + description: Pet not found + '405': + description: Validation exception + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /pet/findByStatus: + get: + tags: + - pet + summary: Finds Pets by status + description: Multiple status values can be provided with comma separated strings + operationId: findPetsByStatus + produces: + - application/xml + - application/json + parameters: + - name: status + in: query + description: Status values that need to be considered for filter + required: true + type: array + items: + type: string + enum: + - available + - pending + - sold + default: available + collectionFormat: csv + responses: + '200': + description: successful operation + schema: + $ref: "#/definitions/FindPetsByStatusResponse" + '400': + description: Invalid status value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /pet/findByUserIds: + get: + tags: + - pet + summary: Finds Pets by user ids + description: 'Multiple ids can be provided with comma separated strings.' + operationId: findPetsByUserIds + produces: + - application/xml + - application/json + parameters: + - name: ids + in: query + description: Ids to filter by + required: true + type: array + items: + type: number + collectionFormat: csv + responses: + '200': + description: successful operation + schema: + $ref: "#/definitions/FindPetsByUserResponse" + '400': + description: Invalid status value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + deprecated: true + /pet/findByTags: + get: + tags: + - pet + summary: Finds Pets by tags + description: 'Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.' + operationId: findPetsByTags + produces: + - application/xml + - application/json + parameters: + - name: tags + in: query + description: Tags to filter by + required: true + type: array + items: + type: string + collectionFormat: csv + responses: + '200': + description: successful operation + schema: + type: array + items: + $ref: '#/definitions/Pet' + '400': + description: Invalid tag value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + deprecated: true + /pet/findByIds: + get: + tags: + - pet + summary: Finds Pets by ids + description: 'Multiple ids can be provided with comma separated strings.' + operationId: findPetsByIds + produces: + - application/xml + - application/json + parameters: + - name: ids + in: query + description: Ids to filter by + required: true + type: array + items: + type: number + collectionFormat: csv + responses: + '200': + description: successful operation + schema: + type: array + items: + $ref: '#/definitions/Pet' + '400': + description: Invalid tag value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + deprecated: true + '/pet/{petId}': + get: + tags: + - pet + summary: Find pet by ID + description: Returns a single pet + operationId: getPetById + produces: + - application/xml + - application/json + parameters: + - name: petId + in: path + description: ID of pet to return + required: true + type: integer + format: int64 + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Pet' + '400': + description: Invalid ID supplied + '404': + description: Pet not found + security: + - api_key: [] + post: + tags: + - pet + summary: Updates a pet in the store with form data + description: '' + operationId: updatePetWithForm + consumes: + - application/x-www-form-urlencoded + produces: + - application/xml + - application/json + parameters: + - name: petId + in: path + description: ID of pet that needs to be updated + required: true + type: integer + format: int64 + - name: name + in: formData + description: Updated name of the pet + required: false + type: string + - name: status + in: formData + description: Updated status of the pet + required: false + type: string + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + delete: + tags: + - pet + summary: Deletes a pet + description: '' + operationId: deletePet + produces: + - application/xml + - application/json + parameters: + - name: api_key + in: header + required: false + type: string + - name: petId + in: path + description: Pet id to delete + required: true + type: integer + format: int64 + responses: + '400': + description: Invalid pet value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + '/pet/{petId}/uploadImage': + post: + tags: + - pet + summary: uploads an image + description: '' + operationId: uploadFile + consumes: + - multipart/form-data + produces: + - application/json + parameters: + - name: petId + in: path + description: ID of pet to update + required: true + type: integer + format: int64 + - name: additionalMetadata + in: formData + description: Additional data to pass to server + required: false + type: string + - name: file + in: formData + description: file to upload + required: false + type: file + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/ApiResponse' + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /store/inventory: + get: + tags: + - store + summary: Returns pet inventories by status + description: Returns a map of status codes to quantities + operationId: getInventory + produces: + - application/json + parameters: [] + responses: + '200': + description: successful operation + schema: + type: object + additionalProperties: + type: integer + format: int32 + security: + - api_key: [] + /store/order: + post: + tags: + - store + summary: Place an order for a pet + description: '' + operationId: placeOrder + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: order placed for purchasing the pet + required: true + schema: + $ref: '#/definitions/Order' + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Order' + '400': + description: Invalid Order + '/store/order/{orderId}': + get: + tags: + - store + summary: Find purchase order by ID + description: 'For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions' + operationId: getOrderById + produces: + - application/xml + - application/json + parameters: + - name: orderId + in: path + description: ID of pet that needs to be fetched + required: true + type: integer + maximum: 5 + minimum: 1 + format: int64 + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Order' + '400': + description: Invalid ID supplied + '404': + description: Order not found + delete: + tags: + - store + summary: Delete purchase order by ID + description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + operationId: deleteOrder + produces: + - application/xml + - application/json + parameters: + - name: orderId + in: path + description: ID of the order that needs to be deleted + required: true + type: string + responses: + '400': + description: Invalid ID supplied + '404': + description: Order not found + /user: + post: + tags: + - user + summary: Create user + description: This can only be done by the logged in user. + operationId: createUser + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: Created user object + required: true + schema: + $ref: '#/definitions/User' + responses: + default: + description: successful operation + /user/createWithArray: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithArrayInput + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: List of user object + required: true + schema: + type: array + items: + $ref: '#/definitions/User' + responses: + default: + description: successful operation + /user/createWithList: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithListInput + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: List of user object + required: true + schema: + type: array + items: + $ref: '#/definitions/User' + responses: + default: + description: successful operation + /user/login: + get: + tags: + - user + summary: Logs user into the system + description: '' + operationId: loginUser + produces: + - application/xml + - application/json + parameters: + - name: username + in: query + description: The user name for login + required: true + type: string + - name: password + in: query + description: The password for login in clear text + required: true + type: string + responses: + '200': + description: successful operation + schema: + type: string + headers: + X-Rate-Limit: + type: integer + format: int32 + description: calls per hour allowed by the user + X-Expires-After: + type: string + format: date-time + description: date in UTC when toekn expires + '400': + description: Invalid username/password supplied + /user/logout: + get: + tags: + - user + summary: Logs out current logged in user session + description: '' + operationId: logoutUser + produces: + - application/xml + - application/json + parameters: [] + responses: + default: + description: successful operation + '/user/{username}': + get: + tags: + - user + summary: Get user by user name + description: '' + operationId: getUserByName + produces: + - application/xml + - application/json + parameters: + - name: username + in: path + description: 'The name that needs to be fetched. Use user1 for testing.' + required: true + type: string + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/User' + '400': + description: Invalid username supplied + '404': + description: User not found + put: + tags: + - user + summary: Updated user + description: This can only be done by the logged in user. + operationId: updateUser + produces: + - application/xml + - application/json + parameters: + - name: username + in: path + description: name that need to be deleted + required: true + type: string + - in: body + name: body + description: Updated user object + required: true + schema: + $ref: '#/definitions/User' + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/DefaultMetaOnlyResponse' + '400': + description: Invalid user supplied + '404': + description: User not found + delete: + tags: + - user + summary: Delete user + description: This can only be done by the logged in user. + operationId: deleteUser + produces: + - application/xml + - application/json + parameters: + - name: username + in: path + description: The name that needs to be deleted + required: true + type: string + responses: + '400': + description: Invalid username supplied + '404': + description: User not found +securityDefinitions: + petstore_auth: + type: oauth2 + authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog' + flow: implicit + scopes: + 'write:pets': modify pets in your account + 'read:pets': read your pets + api_key: + type: apiKey + name: api_key + in: header +definitions: + Order: + title: Pet Order + description: An order for a pets from the pet store + type: object + properties: + id: + type: integer + format: int64 + petId: + type: integer + format: int64 + x-isUniqueId: false + quantity: + type: integer + format: int32 + shipDate: + type: string + format: date-time + status: + type: string + description: Order Status + enum: + - placed + - approved + - delivered + default: approved + complete: + type: boolean + default: false + xml: + name: Order + Category: + title: Pet category + description: A category for a pet + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + xml: + name: Category + User: + title: a User + description: A User who is purchasing from the pet store + type: object + x-keepAsJSObject: "subUser,subUser2" + required: + - id + - subUser2 + properties: + id: + type: integer + format: int64 + username: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + password: + type: string + phone: + type: string + userStatus: + type: integer + format: int32 + description: User Status + subUser: + $ref: '#/definitions/User' + subUser2: + $ref: '#/definitions/User' + xml: + name: User + Tag: + title: Pet Tag + description: A tag for a pet + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + xml: + name: Tag + Pet: + title: a Pet + description: A pet for sale in the pet store + type: object + required: + - id + - category + - name + - photoUrls + - tags + - status + - alternateStatus + - otherDepStatuses + - friendAge + - age + - isHappy + - isTall + - warningStatus + - otherFriendIds + properties: + id: + type: integer + format: int64 + friendId: + type: integer + format: int64 + otherFriendIds: + type: array + items: + type: integer + format: int64 + friendAge: + type: integer + format: int64 + age: + type: integer + format: int64 + default: 2 + isHappy: + type: boolean + default: true + isTall: + type: boolean + category: + $ref: '#/definitions/Category' + optionalCategory: + $ref: '#/definitions/Category' + name: + type: string + example: doggie + entries: + type: array + items: + $ref: "#/definitions/Category" + surname: + type: string + example: woofy + photoUrls: + type: array + xml: + name: photoUrl + wrapped: true + items: + type: string + warningStatus: + $ref: "#/definitions/WarningCode" + depStatus: + $ref: "#/definitions/DeploymentRequestStatus" + alternateStatus: + $ref: "#/definitions/DeploymentRequestStatus" + otherDepStatuses: + type: array + items: + $ref: "#/definitions/DeploymentRequestStatus" + tags: + type: array + xml: + name: tag + wrapped: true + items: + $ref: '#/definitions/Tag' + optionalTags: + type: array + xml: + name: tag + wrapped: true + items: + $ref: '#/definitions/Tag' + status: + type: string + description: pet status in the store + enum: + - available + - pending + - sold + default: pending + xml: + name: Pet + ApiResponse: + title: An uploaded response + description: Describes the result of uploading an image resource + type: object + properties: + code: + type: integer + format: int32 + type: + type: string + message: + type: string + WarningCode: + type: string + description: "Warning code returned when a potential problem is detected" + enum: + - Reduce_Volume_Range_To_Avoid_Large_Steps + - Raise_Amplifier_Volume + - No_Volume_Range_Specified + DeploymentRequestStatus: + type: string + enum: + - New + - Prepared + - Printed + - Tested + - Completed + - Cancelled + - Promoted + - Assigned + - Ready + - Packaged + - Pairing + - Paired + description: "Status of the deployment request" + example: New +################ Responses ################ + ResponseMeta: + type: object + description: "Mandatory part of each response given by our API" + x-keepAsJSObject: "errors" + required: + - code + properties: + code: + type: string + description: "Code returned by the function" + default: Ok + enum: + - Ok + - Generic_Exception + - Field_Error_Exception + - Image_Validation_Exception + - Invalid_Container_Creation_With_No_Default_Asset_Exception + - Invalid_Override_Mode_Exception + - Invalid_Tag_Exception + - Item_Use_Exception + - Missing_Platform_For_Software_Exception + - Missing_Software_For_Platform_Exception + - Platform_Not_Supported_Exception + - Refresh_Data_Exception + - Role_Assignment_Exception + - Task_Already_Running_Exception + - Logged_Out_Exception + - Authorization_Exception + - Unauthorized_Action_For_Current_User_Exception + - User_Already_Exists_But_Is_Not_Authenticated_Exception + - User_Already_Has_Active_Or_Closed_Galaxie_Api_Product_Exception + - User_Already_Has_Multiple_Galaxie_Api_Products_Exception + - Recurly_Api_Exception + - Recurly_Transaction_Error_Exception + - Galaxie_Api_Exception + example: Ok + detail: + type: string + description: "Explanation of what went wrong" + example: "this is some detail about the error or the success" + exception: + type: string + description: "Message of the exception that will help developer to debug this problem if needed" + example: "IOException + stack trace" + type: + type: string + description: "Type of error" + example: "Invalid Token" + errorCode: + $ref: "#/definitions/ErrorCode" + errors: + type: array + description: "An array of all the specific error encountered during the request" + items: + $ref: "#/definitions/Error" + Error: + type: object + description: "This represent an error normally linked to a specific item from a previous request" + required: + - type + properties: + type: + type: string + description: "Usually contains the simple name of the exception" + default: "GenericException" + example: "GenericException" + itemInfo: + $ref: "#/definitions/ItemId" + details: + type: string + description: "Simple explanation of the error" + example: "Could not update that field" + exception: + type: string + description: "Message of the exception that will help developer to debug this problem if needed" + example: "DBException + stack trace" + ErrorCode: + type: string + description: "Error code returned when an error occurs" + enum: + - Volume_Range_At_Lowest_Value + - Music_Volume_Blocks_Volume_Range_Decrease + - Volume_Range_At_Highest_Value + - Maximum_Volume_Blocks_Volume_Range_Increase + - Music_Volume_Blocks_Maximum_Volume_Decrease + - Maximum_Volume_At_Lowest_Value + - Volume_Range_Blocks_Maximum_Volume_Decrease + - Maximum_Volume_At_Highest_Value + - Message_Gain_Blocks_Maximum_Volume_Increase + - Music_Volume_Blocks_Maximum_Volume_Increase + - Maximum_Volume_Blocks_Message_Gain_Decrease + - Message_Gain_At_Highest_Value + - Music_Volume_Blocks_Message_Gain + - Maximum_Message_Gain_Lower_Than_Minimum + - Maximum_Message_Gain_Higher_Than_Maximum + - Maximum_Message_Gain_Lower_Than_Message_Gain + - Minimum_Volume_Blocks_Music_Volume_Decrease + - Maximum_Volume_Blocks_Music_Volume_Increase + ItemId: + type: object + description: "Simplified identifier of an item" + required: + - id + - type + properties: + id: + type: string + description: "Unique identifier of the item" + example: "45" + type: + type: string + description: "playlist" + example: "5667" + DefaultMetaOnlyResponse: + type: object + required: + - meta + properties: + meta: + $ref: "#/definitions/ResponseMeta" + FindPetsByStatusResponse: + type: object + required: + - meta + properties: + meta: + $ref: "#/definitions/ResponseMeta" + data: + type: array + items: + $ref: "#/definitions/Pet" + FindPetsByUserResponse: + type: object + required: + - meta + properties: + meta: + $ref: "#/definitions/ResponseMeta" + data: + type: array + items: + $ref: "#/definitions/User" + GetBehaviorTypeResponse: + type: object + required: + - meta + properties: + meta: + $ref: "#/definitions/ResponseMeta" + data: + $ref: "#/definitions/BehaviorType" + BehaviorType: + type: string + enum: + - Voluntary + - Involuntary + - Overt + description: "Behavior type of a pet" + example: Published + GetBehaviorPermissionsResponse: + type: object + required: + - meta + properties: + meta: + $ref: "#/definitions/ResponseMeta" + data: + $ref: "#/definitions/StringBooleanMap" + GetPetPartTypeResponse: + type: object + required: + - meta + properties: + meta: + $ref: "#/definitions/ResponseMeta" + data: + $ref: "#/definitions/PetPartType" + + PetPartType: + type: string + enum: + - Curved + - Smooth + - Long + description: "Type of pet part" + example: Linear + GetMatchingPartsResponse: + type: object + required: + - meta + properties: + meta: + $ref: "#/definitions/ResponseMeta" + data: + $ref: "#/definitions/MatchingParts" + MatchingParts: + type: object + description: "Contains all the matching parts" + required: + - connected + - related + properties: + connected: + type: array + items: + $ref: "#/definitions/Part" + description: "List of all the connected parts" + related: + type: array + items: + $ref: "#/definitions/Part" + description: "List of all the related parts" + Part: + type: object + description: "Contains all the info about a pet part" + x-entityId: "" + required: + - id + - name + properties: + id: + type: integer + format: int64 + description: "Unique identifier from the database" + example: 1 + name: + type: string + description: "Name of the part" + example: "head" + StringBooleanMap: + additionalProperties: + type: boolean diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.gitignore b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.gitignore new file mode 100644 index 00000000000..149b5765472 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.gitignore @@ -0,0 +1,4 @@ +wwwroot/*.js +node_modules +typings +dist diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.npmignore b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.npmignore new file mode 100644 index 00000000000..42061c01a1c --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.npmignore @@ -0,0 +1 @@ +README.md \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator-ignore b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/FILES b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/FILES new file mode 100644 index 00000000000..354b10210e0 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/FILES @@ -0,0 +1,71 @@ +.gitignore +.npmignore +README.md +package.json +src/ApiEntitiesRecord.ts +src/ApiEntitiesReducer.ts +src/ApiEntitiesSelectors.ts +src/apis/BehaviorApi.ts +src/apis/BehaviorApiSagas.ts +src/apis/PetApi.ts +src/apis/PetApiSagas.ts +src/apis/PetPartApi.ts +src/apis/PetPartApiSagas.ts +src/apis/SagaApiManager.ts +src/apis/StoreApi.ts +src/apis/StoreApiSagas.ts +src/apis/UserApi.ts +src/apis/UserApiSagas.ts +src/apis/allSagas.ts +src/apis/index.ts +src/index.ts +src/models/BehaviorType.ts +src/models/BehaviorTypeRecord.ts +src/models/Category.ts +src/models/CategoryRecord.ts +src/models/DefaultMetaOnlyResponse.ts +src/models/DefaultMetaOnlyResponseRecord.ts +src/models/DeploymentRequestStatus.ts +src/models/DeploymentRequestStatusRecord.ts +src/models/ErrorCode.ts +src/models/ErrorCodeRecord.ts +src/models/FindPetsByStatusResponse.ts +src/models/FindPetsByStatusResponseRecord.ts +src/models/FindPetsByUserResponse.ts +src/models/FindPetsByUserResponseRecord.ts +src/models/GetBehaviorPermissionsResponse.ts +src/models/GetBehaviorPermissionsResponseRecord.ts +src/models/GetBehaviorTypeResponse.ts +src/models/GetBehaviorTypeResponseRecord.ts +src/models/GetMatchingPartsResponse.ts +src/models/GetMatchingPartsResponseRecord.ts +src/models/GetPetPartTypeResponse.ts +src/models/GetPetPartTypeResponseRecord.ts +src/models/ItemId.ts +src/models/ItemIdRecord.ts +src/models/MatchingParts.ts +src/models/MatchingPartsRecord.ts +src/models/ModelApiResponse.ts +src/models/ModelApiResponseRecord.ts +src/models/ModelError.ts +src/models/ModelErrorRecord.ts +src/models/Order.ts +src/models/OrderRecord.ts +src/models/Part.ts +src/models/PartRecord.ts +src/models/Pet.ts +src/models/PetPartType.ts +src/models/PetPartTypeRecord.ts +src/models/PetRecord.ts +src/models/ResponseMeta.ts +src/models/ResponseMetaRecord.ts +src/models/Tag.ts +src/models/TagRecord.ts +src/models/User.ts +src/models/UserRecord.ts +src/models/WarningCode.ts +src/models/WarningCodeRecord.ts +src/models/index.ts +src/runtime.ts +src/runtimeSagasAndRecords.ts +tsconfig.json diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION new file mode 100644 index 00000000000..d509cc92aa8 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.1.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/README.md b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/README.md new file mode 100644 index 00000000000..8c188be0ead --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/README.md @@ -0,0 +1,45 @@ +## @openapitools/typescript-fetch-petstore@1.0.0 + +This generator creates TypeScript/JavaScript client that utilizes [Fetch API](https://fetch.spec.whatwg.org/). The generated Node module can be used in the following environments: + +Environment +* Node.js +* Webpack +* Browserify + +Language level +* ES5 - you must have a Promises/A+ library installed +* ES6 + +Module system +* CommonJS +* ES6 module system + +It can be used in both TypeScript and JavaScript. In TypeScript, the definition should be automatically resolved via `package.json`. ([Reference](http://www.typescriptlang.org/docs/handbook/typings-for-npm-packages.html)) + +### Building + +To build and compile the typescript sources to javascript use: +``` +npm install +npm run build +``` + +### Publishing + +First build the package then run ```npm publish``` + +### Consuming + +navigate to the folder of your consuming project and run one of the following commands. + +_published:_ + +``` +npm install @openapitools/typescript-fetch-petstore@1.0.0 --save +``` + +_unPublished (not recommended):_ + +``` +npm install PATH_TO_GENERATED_PACKAGE --save diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/package.json b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/package.json new file mode 100644 index 00000000000..3b5c84b1eee --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/package.json @@ -0,0 +1,21 @@ +{ + "name": "@openapitools/typescript-fetch-petstore", + "version": "1.0.0", + "description": "OpenAPI client for @openapitools/typescript-fetch-petstore", + "author": "OpenAPI-Generator", + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "scripts": { + "build": "tsc" }, + "devDependencies": { + "immutable": "^4.0.0-rc.12", + "normalizr": "^3.6.1", + "redux-saga": "^1.1.3", + "redux-ts-simple": "^3.2.0", + "reselect": "^4.0.0", + "typescript": "^3.9.5" + }, + "publishConfig": { + "registry": "https://skimdb.npmjs.com/registry" + } +} diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/ApiEntitiesRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/ApiEntitiesRecord.ts new file mode 100644 index 00000000000..edf89903eec --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/ApiEntitiesRecord.ts @@ -0,0 +1,22 @@ +import {Map, Record, RecordOf} from 'immutable'; + +import { + CategoryRecordEntity, + OrderRecordEntity, + PetRecordEntity, + TagRecordEntity, + UserRecordEntity, +} from "./models" + +export const ApiEntitiesRecordProps = { + recType: "ApiEntitiesRecord" as "ApiEntitiesRecord", + category: (CategoryRecordEntity(), Map()), + order: (OrderRecordEntity(), Map()), + pet: (PetRecordEntity(), Map()), + tag: (TagRecordEntity(), Map()), + user: (UserRecordEntity(), Map()), +}; + +export type ApiEntitiesRecordPropsType = typeof ApiEntitiesRecordProps; +export const ApiEntitiesRecord = Record(ApiEntitiesRecordProps, ApiEntitiesRecordProps.recType); +export type ApiEntitiesRecord = RecordOf; \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/ApiEntitiesReducer.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/ApiEntitiesReducer.ts new file mode 100644 index 00000000000..9f607ac090f --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/ApiEntitiesReducer.ts @@ -0,0 +1,21 @@ +import {ApiEntitiesRecord} from "./ApiEntitiesRecord"; +import {ReducerBuilder} from "redux-ts-simple"; +import {normalizedEntities} from "./runtimeSagasAndRecords"; + +export const ApiEntitiesReducer = new ReducerBuilder(ApiEntitiesRecord()) + .on(normalizedEntities, (state, action): ApiEntitiesRecord => { + const {entities} = action.payload; + return state.withMutations(mutableState => { + for (const entityKey in entities) { + const entityMap = entities[entityKey]; + const currentEntityMap = mutableState.get(entityKey as any); + if (currentEntityMap) { + let mergedEntityMap = currentEntityMap.mergeDeep(entityMap); + if (!mergedEntityMap.equals(currentEntityMap)) { + mutableState.set(entityKey as any, mergedEntityMap); + } + } + } + }); + }) + .build(); \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/ApiEntitiesSelectors.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/ApiEntitiesSelectors.ts new file mode 100644 index 00000000000..9eaffec0dfe --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/ApiEntitiesSelectors.ts @@ -0,0 +1,5 @@ +export let getApiEntitiesState: (state: any) => any = (state: any) => state.app.apiEntities; + +export function setApiEntitiesStateGetter(getter: (state: any) => any) { // Use this to customize the location where you have placed your ApiEntitiesRecord in your project. + getApiEntitiesState = getter; +} \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/BehaviorApi.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/BehaviorApi.ts new file mode 100644 index 00000000000..82adc068a8a --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/BehaviorApi.ts @@ -0,0 +1,99 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import { + GetBehaviorPermissionsResponse, + GetBehaviorPermissionsResponseFromJSON, + GetBehaviorPermissionsResponseToJSON, + GetBehaviorTypeResponse, + GetBehaviorTypeResponseFromJSON, + GetBehaviorTypeResponseToJSON, +} from '../models'; + +export interface GetBehaviorPermissionsRequest { + behaviorId: number; +} + +export interface GetBehaviorTypeRequest { + behaviorId: number; +} + +/** + * + */ +export class BehaviorApi extends runtime.BaseAPI { + + /** + * Get permissions for the behavior + */ + async getBehaviorPermissionsRaw(requestParameters: GetBehaviorPermissionsRequest): Promise> { + if (requestParameters.behaviorId === null || requestParameters.behaviorId === undefined) { + throw new runtime.RequiredError('behaviorId','Required parameter requestParameters.behaviorId was null or undefined when calling getBehaviorPermissions.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/fake_behavior/{behavior-id}/permissions`.replace(`{${"behavior-id"}}`, encodeURIComponent(String(requestParameters.behaviorId))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => GetBehaviorPermissionsResponseFromJSON(jsonValue)); + } + + /** + * Get permissions for the behavior + */ + async getBehaviorPermissions(behaviorId: number): Promise { + const response = await this.getBehaviorPermissionsRaw({ behaviorId: behaviorId }); + return await response.value(); + } + + /** + * Get the type of behavior + */ + async getBehaviorTypeRaw(requestParameters: GetBehaviorTypeRequest): Promise> { + if (requestParameters.behaviorId === null || requestParameters.behaviorId === undefined) { + throw new runtime.RequiredError('behaviorId','Required parameter requestParameters.behaviorId was null or undefined when calling getBehaviorType.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/fake_behavior/{behavior-id}/type`.replace(`{${"behavior-id"}}`, encodeURIComponent(String(requestParameters.behaviorId))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => GetBehaviorTypeResponseFromJSON(jsonValue)); + } + + /** + * Get the type of behavior + */ + async getBehaviorType(behaviorId: number): Promise { + const response = await this.getBehaviorTypeRaw({ behaviorId: behaviorId }); + return await response.value(); + } + +} diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/BehaviorApiSagas.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/BehaviorApiSagas.ts new file mode 100644 index 00000000000..5d671f274d3 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/BehaviorApiSagas.ts @@ -0,0 +1,131 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import {Api} from './'; +import {List} from 'immutable'; +import {all, fork, put, takeLatest} from "redux-saga/effects"; +import {apiCall, createSagaAction as originalCreateSagaAction, BaseEntitySupportPayloadApiAction, BasePayloadApiAction, NormalizedRecordEntities, normalizedEntities} from "../runtimeSagasAndRecords"; +import {Action} from "redux-ts-simple"; + +import { + GetBehaviorPermissionsResponse, + GetBehaviorPermissionsResponseRecord, + getBehaviorPermissionsResponseRecordUtils, + GetBehaviorTypeResponse, + GetBehaviorTypeResponseRecord, + getBehaviorTypeResponseRecordUtils, + BehaviorType, +} from '../models'; + +const createSagaAction = (type: string) => originalCreateSagaAction(type, {namespace: "api_behaviorApi"}); + +export const behaviorApiSagaMap = new Map Generator>([ + ["getBehaviorPermissions", getBehaviorPermissionsSaga], + ["getBehaviorType", getBehaviorTypeSaga], + ] +); + +export function *behaviorApiAllSagas() { + yield all([...behaviorApiSagaMap.values()].map(actionSaga => fork(actionSaga))); +} + +//region getBehaviorPermissions + +export interface PayloadGetBehaviorPermissions extends PayloadGetBehaviorPermissionsRequest, BasePayloadApiAction { +} + +export interface PayloadGetBehaviorPermissionsRequest { + behaviorId: string; +} + +export const getBehaviorPermissionsRequest = createSagaAction("getBehaviorPermissionsRequest"); +export const getBehaviorPermissionsSuccess = createSagaAction<{ [key: string]: boolean; }>("getBehaviorPermissionsSuccess"); +export const getBehaviorPermissionsFailure = createSagaAction<{error: any, requestPayload: PayloadGetBehaviorPermissions}>("getBehaviorPermissionsFailure"); + +export const getBehaviorPermissions = createSagaAction("getBehaviorPermissions"); + +export function *getBehaviorPermissionsSaga() { + yield takeLatest(getBehaviorPermissions, getBehaviorPermissionsSagaImp); +} + +export function *getBehaviorPermissionsSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + behaviorId, + } = _payloadRest_; + + yield put(getBehaviorPermissionsRequest(_action_.payload)); + + const response: Required = yield apiCall(Api.behaviorApi, Api.behaviorApi.getBehaviorPermissions, + parseFloat(behaviorId), + ); + + let successReturnValue: any = undefined; + successReturnValue = getBehaviorPermissionsResponseRecordUtils.fromApiPassthrough(response); + yield put(getBehaviorPermissionsSuccess(successReturnValue)); + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(getBehaviorPermissionsFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region getBehaviorType + +export interface PayloadGetBehaviorType extends PayloadGetBehaviorTypeRequest, BasePayloadApiAction { +} + +export interface PayloadGetBehaviorTypeRequest { + behaviorId: string; +} + +export const getBehaviorTypeRequest = createSagaAction("getBehaviorTypeRequest"); +export const getBehaviorTypeSuccess = createSagaAction("getBehaviorTypeSuccess"); +export const getBehaviorTypeFailure = createSagaAction<{error: any, requestPayload: PayloadGetBehaviorType}>("getBehaviorTypeFailure"); + +export const getBehaviorType = createSagaAction("getBehaviorType"); + +export function *getBehaviorTypeSaga() { + yield takeLatest(getBehaviorType, getBehaviorTypeSagaImp); +} + +export function *getBehaviorTypeSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + behaviorId, + } = _payloadRest_; + + yield put(getBehaviorTypeRequest(_action_.payload)); + + const response: Required = yield apiCall(Api.behaviorApi, Api.behaviorApi.getBehaviorType, + parseFloat(behaviorId), + ); + + let successReturnValue: any = undefined; + successReturnValue = getBehaviorTypeResponseRecordUtils.fromApiPassthrough(response); + yield put(getBehaviorTypeSuccess(successReturnValue)); + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(getBehaviorTypeFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApi.ts new file mode 100644 index 00000000000..7726dae7530 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApi.ts @@ -0,0 +1,560 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import { + Category, + CategoryFromJSON, + CategoryToJSON, + FindPetsByStatusResponse, + FindPetsByStatusResponseFromJSON, + FindPetsByStatusResponseToJSON, + FindPetsByUserResponse, + FindPetsByUserResponseFromJSON, + FindPetsByUserResponseToJSON, + ModelApiResponse, + ModelApiResponseFromJSON, + ModelApiResponseToJSON, + Pet, + PetFromJSON, + PetToJSON, +} from '../models'; + +export interface AddPetRequest { + dummyCat: Category; +} + +export interface DeletePetRequest { + petId: number; + apiKey?: string; +} + +export interface FindPetsByIdsRequest { + ids: Array; +} + +export interface FindPetsByStatusRequest { + status: Array; +} + +export interface FindPetsByTagsRequest { + tags: Array; +} + +export interface FindPetsByUserIdsRequest { + ids: Array; +} + +export interface GetPetByIdRequest { + petId: number; +} + +export interface UpdatePetRequest { + body: Pet; +} + +export interface UpdatePetWithFormRequest { + petId: number; + name?: string; + status?: string; +} + +export interface UploadFileRequest { + petId: number; + additionalMetadata?: string; + file?: Blob; +} + +/** + * + */ +export class PetApi extends runtime.BaseAPI { + + /** + * Add a new pet to the store + */ + async addPetRaw(requestParameters: AddPetRequest): Promise> { + if (requestParameters.dummyCat === null || requestParameters.dummyCat === undefined) { + throw new runtime.RequiredError('dummyCat','Required parameter requestParameters.dummyCat was null or undefined when calling addPet.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + // oauth required + if (typeof this.configuration.accessToken === 'function') { + headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); + } else { + headerParameters["Authorization"] = this.configuration.accessToken; + } + } + + const response = await this.request({ + path: `/pet`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: CategoryToJSON(requestParameters.dummyCat), + }); + + return new runtime.VoidApiResponse(response); + } + + /** + * Add a new pet to the store + */ + async addPet(dummyCat: Category): Promise { + await this.addPetRaw({ dummyCat: dummyCat }); + } + + /** + * Deletes a pet + */ + async deletePetRaw(requestParameters: DeletePetRequest): Promise> { + if (requestParameters.petId === null || requestParameters.petId === undefined) { + throw new runtime.RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling deletePet.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (requestParameters.apiKey !== undefined && requestParameters.apiKey !== null) { + headerParameters['api_key'] = String(requestParameters.apiKey); + } + + if (this.configuration && this.configuration.accessToken) { + // oauth required + if (typeof this.configuration.accessToken === 'function') { + headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); + } else { + headerParameters["Authorization"] = this.configuration.accessToken; + } + } + + const response = await this.request({ + path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.VoidApiResponse(response); + } + + /** + * Deletes a pet + */ + async deletePet(petId: number, apiKey?: string): Promise { + await this.deletePetRaw({ petId: petId, apiKey: apiKey }); + } + + /** + * Multiple ids can be provided with comma separated strings. + * Finds Pets by ids + */ + async findPetsByIdsRaw(requestParameters: FindPetsByIdsRequest): Promise>> { + if (requestParameters.ids === null || requestParameters.ids === undefined) { + throw new runtime.RequiredError('ids','Required parameter requestParameters.ids was null or undefined when calling findPetsByIds.'); + } + + const queryParameters: any = {}; + + if (requestParameters.ids) { + queryParameters['ids'] = requestParameters.ids.join(runtime.COLLECTION_FORMATS["csv"]); + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + // oauth required + if (typeof this.configuration.accessToken === 'function') { + headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); + } else { + headerParameters["Authorization"] = this.configuration.accessToken; + } + } + + const response = await this.request({ + path: `/pet/findByIds`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PetFromJSON)); + } + + /** + * Multiple ids can be provided with comma separated strings. + * Finds Pets by ids + */ + async findPetsByIds(ids: Array): Promise> { + const response = await this.findPetsByIdsRaw({ ids: ids }); + return await response.value(); + } + + /** + * Multiple status values can be provided with comma separated strings + * Finds Pets by status + */ + async findPetsByStatusRaw(requestParameters: FindPetsByStatusRequest): Promise> { + if (requestParameters.status === null || requestParameters.status === undefined) { + throw new runtime.RequiredError('status','Required parameter requestParameters.status was null or undefined when calling findPetsByStatus.'); + } + + const queryParameters: any = {}; + + if (requestParameters.status) { + queryParameters['status'] = requestParameters.status.join(runtime.COLLECTION_FORMATS["csv"]); + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + // oauth required + if (typeof this.configuration.accessToken === 'function') { + headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); + } else { + headerParameters["Authorization"] = this.configuration.accessToken; + } + } + + const response = await this.request({ + path: `/pet/findByStatus`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => FindPetsByStatusResponseFromJSON(jsonValue)); + } + + /** + * Multiple status values can be provided with comma separated strings + * Finds Pets by status + */ + async findPetsByStatus(status: Array): Promise { + const response = await this.findPetsByStatusRaw({ status: status }); + return await response.value(); + } + + /** + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * Finds Pets by tags + */ + async findPetsByTagsRaw(requestParameters: FindPetsByTagsRequest): Promise>> { + if (requestParameters.tags === null || requestParameters.tags === undefined) { + throw new runtime.RequiredError('tags','Required parameter requestParameters.tags was null or undefined when calling findPetsByTags.'); + } + + const queryParameters: any = {}; + + if (requestParameters.tags) { + queryParameters['tags'] = requestParameters.tags.join(runtime.COLLECTION_FORMATS["csv"]); + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + // oauth required + if (typeof this.configuration.accessToken === 'function') { + headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); + } else { + headerParameters["Authorization"] = this.configuration.accessToken; + } + } + + const response = await this.request({ + path: `/pet/findByTags`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PetFromJSON)); + } + + /** + * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * Finds Pets by tags + */ + async findPetsByTags(tags: Array): Promise> { + const response = await this.findPetsByTagsRaw({ tags: tags }); + return await response.value(); + } + + /** + * Multiple ids can be provided with comma separated strings. + * Finds Pets by user ids + */ + async findPetsByUserIdsRaw(requestParameters: FindPetsByUserIdsRequest): Promise> { + if (requestParameters.ids === null || requestParameters.ids === undefined) { + throw new runtime.RequiredError('ids','Required parameter requestParameters.ids was null or undefined when calling findPetsByUserIds.'); + } + + const queryParameters: any = {}; + + if (requestParameters.ids) { + queryParameters['ids'] = requestParameters.ids.join(runtime.COLLECTION_FORMATS["csv"]); + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + // oauth required + if (typeof this.configuration.accessToken === 'function') { + headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); + } else { + headerParameters["Authorization"] = this.configuration.accessToken; + } + } + + const response = await this.request({ + path: `/pet/findByUserIds`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => FindPetsByUserResponseFromJSON(jsonValue)); + } + + /** + * Multiple ids can be provided with comma separated strings. + * Finds Pets by user ids + */ + async findPetsByUserIds(ids: Array): Promise { + const response = await this.findPetsByUserIdsRaw({ ids: ids }); + return await response.value(); + } + + /** + * Returns a single pet + * Find pet by ID + */ + async getPetByIdRaw(requestParameters: GetPetByIdRequest): Promise> { + if (requestParameters.petId === null || requestParameters.petId === undefined) { + throw new runtime.RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling getPetById.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["api_key"] = this.configuration.apiKey("api_key"); // api_key authentication + } + + const response = await this.request({ + path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => PetFromJSON(jsonValue)); + } + + /** + * Returns a single pet + * Find pet by ID + */ + async getPetById(petId: number): Promise { + const response = await this.getPetByIdRaw({ petId: petId }); + return await response.value(); + } + + /** + * Update an existing pet + */ + async updatePetRaw(requestParameters: UpdatePetRequest): Promise> { + if (requestParameters.body === null || requestParameters.body === undefined) { + throw new runtime.RequiredError('body','Required parameter requestParameters.body was null or undefined when calling updatePet.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + // oauth required + if (typeof this.configuration.accessToken === 'function') { + headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); + } else { + headerParameters["Authorization"] = this.configuration.accessToken; + } + } + + const response = await this.request({ + path: `/pet`, + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: PetToJSON(requestParameters.body), + }); + + return new runtime.VoidApiResponse(response); + } + + /** + * Update an existing pet + */ + async updatePet(body: Pet): Promise { + await this.updatePetRaw({ body: body }); + } + + /** + * Updates a pet in the store with form data + */ + async updatePetWithFormRaw(requestParameters: UpdatePetWithFormRequest): Promise> { + if (requestParameters.petId === null || requestParameters.petId === undefined) { + throw new runtime.RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling updatePetWithForm.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + // oauth required + if (typeof this.configuration.accessToken === 'function') { + headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); + } else { + headerParameters["Authorization"] = this.configuration.accessToken; + } + } + + const consumes: runtime.Consume[] = [ + { contentType: 'application/x-www-form-urlencoded' }, + ]; + // @ts-ignore: canConsumeForm may be unused + const canConsumeForm = runtime.canConsumeForm(consumes); + + let formParams: { append(param: string, value: any): any }; + let useForm = false; + if (useForm) { + formParams = new FormData(); + } else { + formParams = new URLSearchParams(); + } + + if (requestParameters.name !== undefined) { + formParams.append('name', requestParameters.name as any); + } + + if (requestParameters.status !== undefined) { + formParams.append('status', requestParameters.status as any); + } + + const response = await this.request({ + path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: formParams, + }); + + return new runtime.VoidApiResponse(response); + } + + /** + * Updates a pet in the store with form data + */ + async updatePetWithForm(petId: number, name?: string, status?: string): Promise { + await this.updatePetWithFormRaw({ petId: petId, name: name, status: status }); + } + + /** + * uploads an image + */ + async uploadFileRaw(requestParameters: UploadFileRequest): Promise> { + if (requestParameters.petId === null || requestParameters.petId === undefined) { + throw new runtime.RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling uploadFile.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + // oauth required + if (typeof this.configuration.accessToken === 'function') { + headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); + } else { + headerParameters["Authorization"] = this.configuration.accessToken; + } + } + + const consumes: runtime.Consume[] = [ + { contentType: 'multipart/form-data' }, + ]; + // @ts-ignore: canConsumeForm may be unused + const canConsumeForm = runtime.canConsumeForm(consumes); + + let formParams: { append(param: string, value: any): any }; + let useForm = false; + // use FormData to transmit files using content-type "multipart/form-data" + useForm = canConsumeForm; + if (useForm) { + formParams = new FormData(); + } else { + formParams = new URLSearchParams(); + } + + if (requestParameters.additionalMetadata !== undefined) { + formParams.append('additionalMetadata', requestParameters.additionalMetadata as any); + } + + if (requestParameters.file !== undefined) { + formParams.append('file', requestParameters.file as any); + } + + const response = await this.request({ + path: `/pet/{petId}/uploadImage`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: formParams, + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue)); + } + + /** + * uploads an image + */ + async uploadFile(petId: number, additionalMetadata?: string, file?: Blob): Promise { + const response = await this.uploadFileRaw({ petId: petId, additionalMetadata: additionalMetadata, file: file }); + return await response.value(); + } + +} + +/** + * @export + * @enum {string} + */ +export enum FindPetsByStatusStatusEnum { + Available = 'available', + Pending = 'pending', + Sold = 'sold' +} diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApiSagas.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApiSagas.ts new file mode 100644 index 00000000000..202ec780b63 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApiSagas.ts @@ -0,0 +1,565 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import {Api} from './'; +import {List} from 'immutable'; +import {all, fork, put, takeLatest} from "redux-saga/effects"; +import {apiCall, createSagaAction as originalCreateSagaAction, BaseEntitySupportPayloadApiAction, BasePayloadApiAction, NormalizedRecordEntities, normalizedEntities} from "../runtimeSagasAndRecords"; +import {Action} from "redux-ts-simple"; + +import { + Category, + CategoryRecord, + categoryRecordUtils, + FindPetsByStatusResponse, + FindPetsByStatusResponseRecord, + findPetsByStatusResponseRecordUtils, + FindPetsByUserResponse, + FindPetsByUserResponseRecord, + findPetsByUserResponseRecordUtils, + ModelApiResponse, + ModelApiResponseRecord, + modelApiResponseRecordUtils, + Pet, + PetRecord, + petRecordUtils, + UserRecord, +} from '../models'; + +import { + FindPetsByStatusStatusEnum, +} from './PetApi'; + +const createSagaAction = (type: string) => originalCreateSagaAction(type, {namespace: "api_petApi"}); + +export const petApiSagaMap = new Map Generator>([ + ["addPet", addPetSaga], + ["deletePet", deletePetSaga], + ["findPetsByIds", findPetsByIdsSaga], + ["findPetsByStatus", findPetsByStatusSaga], + ["findPetsByTags", findPetsByTagsSaga], + ["findPetsByUserIds", findPetsByUserIdsSaga], + ["getPetById", getPetByIdSaga], + ["updatePet", updatePetSaga], + ["updatePetWithForm", updatePetWithFormSaga], + ["uploadFile", uploadFileSaga], + ] +); + +export function *petApiAllSagas() { + yield all([...petApiSagaMap.values()].map(actionSaga => fork(actionSaga))); +} + +//region addPet + +export interface PayloadAddPet extends PayloadAddPetRequest, BasePayloadApiAction { +} + +export interface PayloadAddPetRequest { + dummyCat: CategoryRecord; +} + +export const addPetRequest = createSagaAction("addPetRequest"); +export const addPetSuccess = createSagaAction("addPetSuccess"); +export const addPetFailure = createSagaAction<{error: any, requestPayload: PayloadAddPet}>("addPetFailure"); + +export const addPet = createSagaAction("addPet"); + +export function *addPetSaga() { + yield takeLatest(addPet, addPetSagaImp); +} + +export function *addPetSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + dummyCat, + } = _payloadRest_; + + yield put(addPetRequest(_action_.payload)); + + const response = yield apiCall(Api.petApi, Api.petApi.addPet, + categoryRecordUtils.toApi(dummyCat), + ); + + yield put(addPetSuccess()); + + return undefined; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(addPetFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region deletePet + +export interface PayloadDeletePet extends PayloadDeletePetRequest, BasePayloadApiAction { +} + +export interface PayloadDeletePetRequest { + petId: string; + apiKey?: string; +} + +export const deletePetRequest = createSagaAction("deletePetRequest"); +export const deletePetSuccess = createSagaAction("deletePetSuccess"); +export const deletePetFailure = createSagaAction<{error: any, requestPayload: PayloadDeletePet}>("deletePetFailure"); + +export const deletePet = createSagaAction("deletePet"); + +export function *deletePetSaga() { + yield takeLatest(deletePet, deletePetSagaImp); +} + +export function *deletePetSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + petId, + apiKey, + } = _payloadRest_; + + yield put(deletePetRequest(_action_.payload)); + + const response = yield apiCall(Api.petApi, Api.petApi.deletePet, + parseFloat(petId), + apiKey, + ); + + yield put(deletePetSuccess()); + + return undefined; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(deletePetFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region findPetsByIds + +export interface PayloadFindPetsByIds extends PayloadFindPetsByIdsRequest, BaseEntitySupportPayloadApiAction { +} + +export interface PayloadFindPetsByIdsRequest { + ids: List; +} + +export const findPetsByIdsRequest = createSagaAction("findPetsByIdsRequest"); +export const findPetsByIdsSuccess = createSagaAction>("findPetsByIdsSuccess"); +export const findPetsByIdsSuccess_Entities = createSagaAction("findPetsByIdsSuccess_Entities"); +export const findPetsByIdsFailure = createSagaAction<{error: any, requestPayload: PayloadFindPetsByIds}>("findPetsByIdsFailure"); + +export const findPetsByIds = createSagaAction("findPetsByIds"); + +export function *findPetsByIdsSaga() { + yield takeLatest(findPetsByIds, findPetsByIdsSagaImp); +} + +export function *findPetsByIdsSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const {toEntities, toInlined = !toEntities, ...requestPayload} = _payloadRest_; + const { + ids, + } = _payloadRest_; + + yield put(findPetsByIdsRequest(requestPayload)); + + const response: Required> = yield apiCall(Api.petApi, Api.petApi.findPetsByIds, + ids.map(p => parseFloat(p)).toArray(), + ); + + let successReturnValue: any = undefined; + if (toEntities) { + successReturnValue = petRecordUtils.fromApiArrayAsEntities(response); + yield put(normalizedEntities(successReturnValue)); + yield put(findPetsByIdsSuccess_Entities(successReturnValue)); + } + if (toInlined) { + successReturnValue = petRecordUtils.fromApiArray(response); + yield put(findPetsByIdsSuccess(successReturnValue)); + } + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(findPetsByIdsFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region findPetsByStatus + +export interface PayloadFindPetsByStatus extends PayloadFindPetsByStatusRequest, BaseEntitySupportPayloadApiAction { +} + +export interface PayloadFindPetsByStatusRequest { + status: List; +} + +export const findPetsByStatusRequest = createSagaAction("findPetsByStatusRequest"); +export const findPetsByStatusSuccess = createSagaAction>("findPetsByStatusSuccess"); +export const findPetsByStatusSuccess_Entities = createSagaAction("findPetsByStatusSuccess_Entities"); +export const findPetsByStatusFailure = createSagaAction<{error: any, requestPayload: PayloadFindPetsByStatus}>("findPetsByStatusFailure"); + +export const findPetsByStatus = createSagaAction("findPetsByStatus"); + +export function *findPetsByStatusSaga() { + yield takeLatest(findPetsByStatus, findPetsByStatusSagaImp); +} + +export function *findPetsByStatusSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const {toEntities, toInlined = !toEntities, ...requestPayload} = _payloadRest_; + const { + status, + } = _payloadRest_; + + yield put(findPetsByStatusRequest(requestPayload)); + + const response: Required = yield apiCall(Api.petApi, Api.petApi.findPetsByStatus, + status.toJS(), + ); + + let successReturnValue: any = undefined; + if (toEntities) { + successReturnValue = findPetsByStatusResponseRecordUtils.fromApiPassthroughAsEntities(response); + yield put(normalizedEntities(successReturnValue)); + yield put(findPetsByStatusSuccess_Entities(successReturnValue)); + } + if (toInlined) { + successReturnValue = findPetsByStatusResponseRecordUtils.fromApiPassthrough(response); + yield put(findPetsByStatusSuccess(successReturnValue)); + } + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(findPetsByStatusFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region findPetsByTags + +export interface PayloadFindPetsByTags extends PayloadFindPetsByTagsRequest, BaseEntitySupportPayloadApiAction { +} + +export interface PayloadFindPetsByTagsRequest { + tags: List; +} + +export const findPetsByTagsRequest = createSagaAction("findPetsByTagsRequest"); +export const findPetsByTagsSuccess = createSagaAction>("findPetsByTagsSuccess"); +export const findPetsByTagsSuccess_Entities = createSagaAction("findPetsByTagsSuccess_Entities"); +export const findPetsByTagsFailure = createSagaAction<{error: any, requestPayload: PayloadFindPetsByTags}>("findPetsByTagsFailure"); + +export const findPetsByTags = createSagaAction("findPetsByTags"); + +export function *findPetsByTagsSaga() { + yield takeLatest(findPetsByTags, findPetsByTagsSagaImp); +} + +export function *findPetsByTagsSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const {toEntities, toInlined = !toEntities, ...requestPayload} = _payloadRest_; + const { + tags, + } = _payloadRest_; + + yield put(findPetsByTagsRequest(requestPayload)); + + const response: Required> = yield apiCall(Api.petApi, Api.petApi.findPetsByTags, + tags.toJS(), + ); + + let successReturnValue: any = undefined; + if (toEntities) { + successReturnValue = petRecordUtils.fromApiArrayAsEntities(response); + yield put(normalizedEntities(successReturnValue)); + yield put(findPetsByTagsSuccess_Entities(successReturnValue)); + } + if (toInlined) { + successReturnValue = petRecordUtils.fromApiArray(response); + yield put(findPetsByTagsSuccess(successReturnValue)); + } + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(findPetsByTagsFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region findPetsByUserIds + +export interface PayloadFindPetsByUserIds extends PayloadFindPetsByUserIdsRequest, BaseEntitySupportPayloadApiAction { +} + +export interface PayloadFindPetsByUserIdsRequest { + ids: List; +} + +export const findPetsByUserIdsRequest = createSagaAction("findPetsByUserIdsRequest"); +export const findPetsByUserIdsSuccess = createSagaAction>("findPetsByUserIdsSuccess"); +export const findPetsByUserIdsSuccess_Entities = createSagaAction("findPetsByUserIdsSuccess_Entities"); +export const findPetsByUserIdsFailure = createSagaAction<{error: any, requestPayload: PayloadFindPetsByUserIds}>("findPetsByUserIdsFailure"); + +export const findPetsByUserIds = createSagaAction("findPetsByUserIds"); + +export function *findPetsByUserIdsSaga() { + yield takeLatest(findPetsByUserIds, findPetsByUserIdsSagaImp); +} + +export function *findPetsByUserIdsSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const {toEntities, toInlined = !toEntities, ...requestPayload} = _payloadRest_; + const { + ids, + } = _payloadRest_; + + yield put(findPetsByUserIdsRequest(requestPayload)); + + const response: Required = yield apiCall(Api.petApi, Api.petApi.findPetsByUserIds, + ids.map(p => parseFloat(p)).toArray(), + ); + + let successReturnValue: any = undefined; + if (toEntities) { + successReturnValue = findPetsByUserResponseRecordUtils.fromApiPassthroughAsEntities(response); + yield put(normalizedEntities(successReturnValue)); + yield put(findPetsByUserIdsSuccess_Entities(successReturnValue)); + } + if (toInlined) { + successReturnValue = findPetsByUserResponseRecordUtils.fromApiPassthrough(response); + yield put(findPetsByUserIdsSuccess(successReturnValue)); + } + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(findPetsByUserIdsFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region getPetById + +export interface PayloadGetPetById extends PayloadGetPetByIdRequest, BaseEntitySupportPayloadApiAction { +} + +export interface PayloadGetPetByIdRequest { + petId: string; +} + +export const getPetByIdRequest = createSagaAction("getPetByIdRequest"); +export const getPetByIdSuccess = createSagaAction("getPetByIdSuccess"); +export const getPetByIdSuccess_Entities = createSagaAction("getPetByIdSuccess_Entities"); +export const getPetByIdFailure = createSagaAction<{error: any, requestPayload: PayloadGetPetById}>("getPetByIdFailure"); + +export const getPetById = createSagaAction("getPetById"); + +export function *getPetByIdSaga() { + yield takeLatest(getPetById, getPetByIdSagaImp); +} + +export function *getPetByIdSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const {toEntities, toInlined = !toEntities, ...requestPayload} = _payloadRest_; + const { + petId, + } = _payloadRest_; + + yield put(getPetByIdRequest(requestPayload)); + + const response: Required = yield apiCall(Api.petApi, Api.petApi.getPetById, + parseFloat(petId), + ); + + let successReturnValue: any = undefined; + if (toEntities) { + successReturnValue = petRecordUtils.fromApiArrayAsEntities([response]); + yield put(normalizedEntities(successReturnValue)); + yield put(getPetByIdSuccess_Entities(successReturnValue)); + } + if (toInlined) { + successReturnValue = petRecordUtils.fromApi(response); + yield put(getPetByIdSuccess(successReturnValue)); + } + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(getPetByIdFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region updatePet + +export interface PayloadUpdatePet extends PayloadUpdatePetRequest, BasePayloadApiAction { +} + +export interface PayloadUpdatePetRequest { + body: PetRecord; +} + +export const updatePetRequest = createSagaAction("updatePetRequest"); +export const updatePetSuccess = createSagaAction("updatePetSuccess"); +export const updatePetFailure = createSagaAction<{error: any, requestPayload: PayloadUpdatePet}>("updatePetFailure"); + +export const updatePet = createSagaAction("updatePet"); + +export function *updatePetSaga() { + yield takeLatest(updatePet, updatePetSagaImp); +} + +export function *updatePetSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + body, + } = _payloadRest_; + + yield put(updatePetRequest(_action_.payload)); + + const response = yield apiCall(Api.petApi, Api.petApi.updatePet, + petRecordUtils.toApi(body), + ); + + yield put(updatePetSuccess()); + + return undefined; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(updatePetFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region updatePetWithForm + +export interface PayloadUpdatePetWithForm extends PayloadUpdatePetWithFormRequest, BasePayloadApiAction { +} + +export interface PayloadUpdatePetWithFormRequest { + petId: string; + name?: string; + status?: string; +} + +export const updatePetWithFormRequest = createSagaAction("updatePetWithFormRequest"); +export const updatePetWithFormSuccess = createSagaAction("updatePetWithFormSuccess"); +export const updatePetWithFormFailure = createSagaAction<{error: any, requestPayload: PayloadUpdatePetWithForm}>("updatePetWithFormFailure"); + +export const updatePetWithForm = createSagaAction("updatePetWithForm"); + +export function *updatePetWithFormSaga() { + yield takeLatest(updatePetWithForm, updatePetWithFormSagaImp); +} + +export function *updatePetWithFormSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + petId, + name, + status, + } = _payloadRest_; + + yield put(updatePetWithFormRequest(_action_.payload)); + + const response = yield apiCall(Api.petApi, Api.petApi.updatePetWithForm, + parseFloat(petId), + name, + status, + ); + + yield put(updatePetWithFormSuccess()); + + return undefined; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(updatePetWithFormFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region uploadFile + +export interface PayloadUploadFile extends PayloadUploadFileRequest, BaseEntitySupportPayloadApiAction { +} + +export interface PayloadUploadFileRequest { + petId: string; + additionalMetadata?: string; + file?: Blob; +} + +export const uploadFileRequest = createSagaAction("uploadFileRequest"); +export const uploadFileSuccess = createSagaAction("uploadFileSuccess"); +export const uploadFileSuccess_Entities = createSagaAction("uploadFileSuccess_Entities"); +export const uploadFileFailure = createSagaAction<{error: any, requestPayload: PayloadUploadFile}>("uploadFileFailure"); + +export const uploadFile = createSagaAction("uploadFile"); + +export function *uploadFileSaga() { + yield takeLatest(uploadFile, uploadFileSagaImp); +} + +export function *uploadFileSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const {toEntities, toInlined = !toEntities, ...requestPayload} = _payloadRest_; + const { + petId, + additionalMetadata, + file, + } = _payloadRest_; + + yield put(uploadFileRequest(requestPayload)); + + const response: Required = yield apiCall(Api.petApi, Api.petApi.uploadFile, + parseFloat(petId), + additionalMetadata, + file, + ); + + let successReturnValue: any = undefined; + if (toEntities) { + successReturnValue = modelApiResponseRecordUtils.fromApiArrayAsEntities([response]); + yield put(normalizedEntities(successReturnValue)); + yield put(uploadFileSuccess_Entities(successReturnValue)); + } + if (toInlined) { + successReturnValue = modelApiResponseRecordUtils.fromApi(response); + yield put(uploadFileSuccess(successReturnValue)); + } + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(uploadFileFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetPartApi.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetPartApi.ts new file mode 100644 index 00000000000..535059660a0 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetPartApi.ts @@ -0,0 +1,136 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import { + GetMatchingPartsResponse, + GetMatchingPartsResponseFromJSON, + GetMatchingPartsResponseToJSON, + GetPetPartTypeResponse, + GetPetPartTypeResponseFromJSON, + GetPetPartTypeResponseToJSON, +} from '../models'; + +export interface GetFakePetPartTypeRequest { + fakePetPartId: number; +} + +export interface GetMatchingPartsRequest { + fakePetPartId: number; + _long: boolean; + smooth: boolean; + _short: boolean; + name?: string; + connectedPart?: string; +} + +/** + * + */ +export class PetPartApi extends runtime.BaseAPI { + + /** + * Returns single pet part type for the petPart id. + */ + async getFakePetPartTypeRaw(requestParameters: GetFakePetPartTypeRequest): Promise> { + if (requestParameters.fakePetPartId === null || requestParameters.fakePetPartId === undefined) { + throw new runtime.RequiredError('fakePetPartId','Required parameter requestParameters.fakePetPartId was null or undefined when calling getFakePetPartType.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/fake_petParts/{fake_petPart-id}/part-type`.replace(`{${"fake_petPart-id"}}`, encodeURIComponent(String(requestParameters.fakePetPartId))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => GetPetPartTypeResponseFromJSON(jsonValue)); + } + + /** + * Returns single pet part type for the petPart id. + */ + async getFakePetPartType(fakePetPartId: number): Promise { + const response = await this.getFakePetPartTypeRaw({ fakePetPartId: fakePetPartId }); + return await response.value(); + } + + /** + * Get the matching parts for the given pet part. + */ + async getMatchingPartsRaw(requestParameters: GetMatchingPartsRequest): Promise> { + if (requestParameters.fakePetPartId === null || requestParameters.fakePetPartId === undefined) { + throw new runtime.RequiredError('fakePetPartId','Required parameter requestParameters.fakePetPartId was null or undefined when calling getMatchingParts.'); + } + + if (requestParameters._long === null || requestParameters._long === undefined) { + throw new runtime.RequiredError('_long','Required parameter requestParameters._long was null or undefined when calling getMatchingParts.'); + } + + if (requestParameters.smooth === null || requestParameters.smooth === undefined) { + throw new runtime.RequiredError('smooth','Required parameter requestParameters.smooth was null or undefined when calling getMatchingParts.'); + } + + if (requestParameters._short === null || requestParameters._short === undefined) { + throw new runtime.RequiredError('_short','Required parameter requestParameters._short was null or undefined when calling getMatchingParts.'); + } + + const queryParameters: any = {}; + + if (requestParameters._long !== undefined) { + queryParameters['long'] = requestParameters._long; + } + + if (requestParameters.smooth !== undefined) { + queryParameters['smooth'] = requestParameters.smooth; + } + + if (requestParameters.name !== undefined) { + queryParameters['name'] = requestParameters.name; + } + + if (requestParameters.connectedPart !== undefined) { + queryParameters['connected-part'] = requestParameters.connectedPart; + } + + if (requestParameters._short !== undefined) { + queryParameters['short'] = requestParameters._short; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/fake_petParts/{fake_petPart-id}/matching-parts`.replace(`{${"fake_petPart-id"}}`, encodeURIComponent(String(requestParameters.fakePetPartId))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => GetMatchingPartsResponseFromJSON(jsonValue)); + } + + /** + * Get the matching parts for the given pet part. + */ + async getMatchingParts(fakePetPartId: number, _long: boolean, smooth: boolean, _short: boolean, name?: string, connectedPart?: string): Promise { + const response = await this.getMatchingPartsRaw({ fakePetPartId: fakePetPartId, _long: _long, smooth: smooth, _short: _short, name: name, connectedPart: connectedPart }); + return await response.value(); + } + +} diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetPartApiSagas.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetPartApiSagas.ts new file mode 100644 index 00000000000..3111c06e17e --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetPartApiSagas.ts @@ -0,0 +1,156 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import {Api} from './'; +import {List} from 'immutable'; +import {all, fork, put, takeLatest} from "redux-saga/effects"; +import {apiCall, createSagaAction as originalCreateSagaAction, BaseEntitySupportPayloadApiAction, BasePayloadApiAction, NormalizedRecordEntities, normalizedEntities} from "../runtimeSagasAndRecords"; +import {Action} from "redux-ts-simple"; + +import { + GetMatchingPartsResponse, + GetMatchingPartsResponseRecord, + getMatchingPartsResponseRecordUtils, + GetPetPartTypeResponse, + GetPetPartTypeResponseRecord, + getPetPartTypeResponseRecordUtils, + MatchingPartsRecord, + PetPartType, +} from '../models'; + +const createSagaAction = (type: string) => originalCreateSagaAction(type, {namespace: "api_petPartApi"}); + +export const petPartApiSagaMap = new Map Generator>([ + ["getFakePetPartType", getFakePetPartTypeSaga], + ["getMatchingParts", getMatchingPartsSaga], + ] +); + +export function *petPartApiAllSagas() { + yield all([...petPartApiSagaMap.values()].map(actionSaga => fork(actionSaga))); +} + +//region getFakePetPartType + +export interface PayloadGetFakePetPartType extends PayloadGetFakePetPartTypeRequest, BasePayloadApiAction { +} + +export interface PayloadGetFakePetPartTypeRequest { + fakePetPartId: string; +} + +export const getFakePetPartTypeRequest = createSagaAction("getFakePetPartTypeRequest"); +export const getFakePetPartTypeSuccess = createSagaAction("getFakePetPartTypeSuccess"); +export const getFakePetPartTypeFailure = createSagaAction<{error: any, requestPayload: PayloadGetFakePetPartType}>("getFakePetPartTypeFailure"); + +export const getFakePetPartType = createSagaAction("getFakePetPartType"); + +export function *getFakePetPartTypeSaga() { + yield takeLatest(getFakePetPartType, getFakePetPartTypeSagaImp); +} + +export function *getFakePetPartTypeSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + fakePetPartId, + } = _payloadRest_; + + yield put(getFakePetPartTypeRequest(_action_.payload)); + + const response: Required = yield apiCall(Api.petPartApi, Api.petPartApi.getFakePetPartType, + parseFloat(fakePetPartId), + ); + + let successReturnValue: any = undefined; + successReturnValue = getPetPartTypeResponseRecordUtils.fromApiPassthrough(response); + yield put(getFakePetPartTypeSuccess(successReturnValue)); + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(getFakePetPartTypeFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region getMatchingParts + +export interface PayloadGetMatchingParts extends PayloadGetMatchingPartsRequest, BaseEntitySupportPayloadApiAction { +} + +export interface PayloadGetMatchingPartsRequest { + fakePetPartId: string; + _long: boolean; + smooth: boolean; + _short: boolean; + name?: string; + connectedPart?: string; +} + +export const getMatchingPartsRequest = createSagaAction("getMatchingPartsRequest"); +export const getMatchingPartsSuccess = createSagaAction("getMatchingPartsSuccess"); +export const getMatchingPartsSuccess_Entities = createSagaAction("getMatchingPartsSuccess_Entities"); +export const getMatchingPartsFailure = createSagaAction<{error: any, requestPayload: PayloadGetMatchingParts}>("getMatchingPartsFailure"); + +export const getMatchingParts = createSagaAction("getMatchingParts"); + +export function *getMatchingPartsSaga() { + yield takeLatest(getMatchingParts, getMatchingPartsSagaImp); +} + +export function *getMatchingPartsSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const {toEntities, toInlined = !toEntities, ...requestPayload} = _payloadRest_; + const { + fakePetPartId, + _long, + smooth, + _short, + name, + connectedPart, + } = _payloadRest_; + + yield put(getMatchingPartsRequest(requestPayload)); + + const response: Required = yield apiCall(Api.petPartApi, Api.petPartApi.getMatchingParts, + parseFloat(fakePetPartId), + _long, + smooth, + _short, + name, + connectedPart, + ); + + let successReturnValue: any = undefined; + if (toEntities) { + successReturnValue = getMatchingPartsResponseRecordUtils.fromApiPassthroughAsEntities(response); + yield put(normalizedEntities(successReturnValue)); + yield put(getMatchingPartsSuccess_Entities(successReturnValue)); + } + if (toInlined) { + successReturnValue = getMatchingPartsResponseRecordUtils.fromApiPassthrough(response); + yield put(getMatchingPartsSuccess(successReturnValue)); + } + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(getMatchingPartsFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/SagaApiManager.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/SagaApiManager.ts new file mode 100644 index 00000000000..21a49677e50 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/SagaApiManager.ts @@ -0,0 +1,36 @@ +import { + Configuration, + ConfigurationParameters, +} from "../"; + +import { + BehaviorApi, + PetApi, + PetPartApi, + StoreApi, + UserApi, +} from "./"; + +export class Api { + public static behaviorApi: BehaviorApi; + public static petApi: PetApi; + public static petPartApi: PetPartApi; + public static storeApi: StoreApi; + public static userApi: UserApi; + + public static init(apiBasePath: string) { + const apiBaseConfig: ConfigurationParameters = { + basePath: apiBasePath, + credentials: "include", + headers: { + 'Cache-Control': 'no-cache, no-store' // this is needed to prevent stalling issues in Chrome. Also it is a good behavior for api calls. + } + }; + + Api.behaviorApi = new BehaviorApi(new Configuration(apiBaseConfig)); + Api.petApi = new PetApi(new Configuration(apiBaseConfig)); + Api.petPartApi = new PetPartApi(new Configuration(apiBaseConfig)); + Api.storeApi = new StoreApi(new Configuration(apiBaseConfig)); + Api.userApi = new UserApi(new Configuration(apiBaseConfig)); + } +} \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/StoreApi.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/StoreApi.ts new file mode 100644 index 00000000000..51382e766aa --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/StoreApi.ts @@ -0,0 +1,168 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import { + Order, + OrderFromJSON, + OrderToJSON, +} from '../models'; + +export interface DeleteOrderRequest { + orderId: string; +} + +export interface GetOrderByIdRequest { + orderId: number; +} + +export interface PlaceOrderRequest { + body: Order; +} + +/** + * + */ +export class StoreApi extends runtime.BaseAPI { + + /** + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * Delete purchase order by ID + */ + async deleteOrderRaw(requestParameters: DeleteOrderRequest): Promise> { + if (requestParameters.orderId === null || requestParameters.orderId === undefined) { + throw new runtime.RequiredError('orderId','Required parameter requestParameters.orderId was null or undefined when calling deleteOrder.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/store/order/{orderId}`.replace(`{${"orderId"}}`, encodeURIComponent(String(requestParameters.orderId))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.VoidApiResponse(response); + } + + /** + * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + * Delete purchase order by ID + */ + async deleteOrder(orderId: string): Promise { + await this.deleteOrderRaw({ orderId: orderId }); + } + + /** + * Returns a map of status codes to quantities + * Returns pet inventories by status + */ + async getInventoryRaw(): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.apiKey) { + headerParameters["api_key"] = this.configuration.apiKey("api_key"); // api_key authentication + } + + const response = await this.request({ + path: `/store/inventory`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.JSONApiResponse(response); + } + + /** + * Returns a map of status codes to quantities + * Returns pet inventories by status + */ + async getInventory(): Promise<{ [key: string]: number; }> { + const response = await this.getInventoryRaw(); + return await response.value(); + } + + /** + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * Find purchase order by ID + */ + async getOrderByIdRaw(requestParameters: GetOrderByIdRequest): Promise> { + if (requestParameters.orderId === null || requestParameters.orderId === undefined) { + throw new runtime.RequiredError('orderId','Required parameter requestParameters.orderId was null or undefined when calling getOrderById.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/store/order/{orderId}`.replace(`{${"orderId"}}`, encodeURIComponent(String(requestParameters.orderId))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => OrderFromJSON(jsonValue)); + } + + /** + * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + * Find purchase order by ID + */ + async getOrderById(orderId: number): Promise { + const response = await this.getOrderByIdRaw({ orderId: orderId }); + return await response.value(); + } + + /** + * Place an order for a pet + */ + async placeOrderRaw(requestParameters: PlaceOrderRequest): Promise> { + if (requestParameters.body === null || requestParameters.body === undefined) { + throw new runtime.RequiredError('body','Required parameter requestParameters.body was null or undefined when calling placeOrder.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/store/order`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: OrderToJSON(requestParameters.body), + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => OrderFromJSON(jsonValue)); + } + + /** + * Place an order for a pet + */ + async placeOrder(body: Order): Promise { + const response = await this.placeOrderRaw({ body: body }); + return await response.value(); + } + +} diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/StoreApiSagas.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/StoreApiSagas.ts new file mode 100644 index 00000000000..9752a7ea0fb --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/StoreApiSagas.ts @@ -0,0 +1,225 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import {Api} from './'; +import {List} from 'immutable'; +import {all, fork, put, takeLatest} from "redux-saga/effects"; +import {apiCall, createSagaAction as originalCreateSagaAction, BaseEntitySupportPayloadApiAction, BasePayloadApiAction, NormalizedRecordEntities, normalizedEntities} from "../runtimeSagasAndRecords"; +import {Action} from "redux-ts-simple"; + +import { + Order, + OrderRecord, + orderRecordUtils, +} from '../models'; + +const createSagaAction = (type: string) => originalCreateSagaAction(type, {namespace: "api_storeApi"}); + +export const storeApiSagaMap = new Map Generator>([ + ["deleteOrder", deleteOrderSaga], + ["getInventory", getInventorySaga], + ["getOrderById", getOrderByIdSaga], + ["placeOrder", placeOrderSaga], + ] +); + +export function *storeApiAllSagas() { + yield all([...storeApiSagaMap.values()].map(actionSaga => fork(actionSaga))); +} + +//region deleteOrder + +export interface PayloadDeleteOrder extends PayloadDeleteOrderRequest, BasePayloadApiAction { +} + +export interface PayloadDeleteOrderRequest { + orderId: string; +} + +export const deleteOrderRequest = createSagaAction("deleteOrderRequest"); +export const deleteOrderSuccess = createSagaAction("deleteOrderSuccess"); +export const deleteOrderFailure = createSagaAction<{error: any, requestPayload: PayloadDeleteOrder}>("deleteOrderFailure"); + +export const deleteOrder = createSagaAction("deleteOrder"); + +export function *deleteOrderSaga() { + yield takeLatest(deleteOrder, deleteOrderSagaImp); +} + +export function *deleteOrderSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + orderId, + } = _payloadRest_; + + yield put(deleteOrderRequest(_action_.payload)); + + const response = yield apiCall(Api.storeApi, Api.storeApi.deleteOrder, + orderId, + ); + + yield put(deleteOrderSuccess()); + + return undefined; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(deleteOrderFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region getInventory + +export interface PayloadGetInventory extends BasePayloadApiAction { +} + + +export const getInventoryRequest = createSagaAction("getInventoryRequest"); +export const getInventorySuccess = createSagaAction<{ [key: string]: number; }>("getInventorySuccess"); +export const getInventoryFailure = createSagaAction<{error: any, requestPayload: PayloadGetInventory}>("getInventoryFailure"); + +export const getInventory = createSagaAction("getInventory"); + +export function *getInventorySaga() { + yield takeLatest(getInventory, getInventorySagaImp); +} + +export function *getInventorySagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + + yield put(getInventoryRequest()); + + const response: Required<{ [key: string]: number; }> = yield apiCall(Api.storeApi, Api.storeApi.getInventory, + ); + + let successReturnValue: any = undefined; + yield put(getInventorySuccess(response)); + + return response; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(getInventoryFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region getOrderById + +export interface PayloadGetOrderById extends PayloadGetOrderByIdRequest, BaseEntitySupportPayloadApiAction { +} + +export interface PayloadGetOrderByIdRequest { + orderId: string; +} + +export const getOrderByIdRequest = createSagaAction("getOrderByIdRequest"); +export const getOrderByIdSuccess = createSagaAction("getOrderByIdSuccess"); +export const getOrderByIdSuccess_Entities = createSagaAction("getOrderByIdSuccess_Entities"); +export const getOrderByIdFailure = createSagaAction<{error: any, requestPayload: PayloadGetOrderById}>("getOrderByIdFailure"); + +export const getOrderById = createSagaAction("getOrderById"); + +export function *getOrderByIdSaga() { + yield takeLatest(getOrderById, getOrderByIdSagaImp); +} + +export function *getOrderByIdSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const {toEntities, toInlined = !toEntities, ...requestPayload} = _payloadRest_; + const { + orderId, + } = _payloadRest_; + + yield put(getOrderByIdRequest(requestPayload)); + + const response: Required = yield apiCall(Api.storeApi, Api.storeApi.getOrderById, + parseFloat(orderId), + ); + + let successReturnValue: any = undefined; + if (toEntities) { + successReturnValue = orderRecordUtils.fromApiArrayAsEntities([response]); + yield put(normalizedEntities(successReturnValue)); + yield put(getOrderByIdSuccess_Entities(successReturnValue)); + } + if (toInlined) { + successReturnValue = orderRecordUtils.fromApi(response); + yield put(getOrderByIdSuccess(successReturnValue)); + } + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(getOrderByIdFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region placeOrder + +export interface PayloadPlaceOrder extends PayloadPlaceOrderRequest, BaseEntitySupportPayloadApiAction { +} + +export interface PayloadPlaceOrderRequest { + body: OrderRecord; +} + +export const placeOrderRequest = createSagaAction("placeOrderRequest"); +export const placeOrderSuccess = createSagaAction("placeOrderSuccess"); +export const placeOrderSuccess_Entities = createSagaAction("placeOrderSuccess_Entities"); +export const placeOrderFailure = createSagaAction<{error: any, requestPayload: PayloadPlaceOrder}>("placeOrderFailure"); + +export const placeOrder = createSagaAction("placeOrder"); + +export function *placeOrderSaga() { + yield takeLatest(placeOrder, placeOrderSagaImp); +} + +export function *placeOrderSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const {toEntities, toInlined = !toEntities, ...requestPayload} = _payloadRest_; + const { + body, + } = _payloadRest_; + + yield put(placeOrderRequest(requestPayload)); + + const response: Required = yield apiCall(Api.storeApi, Api.storeApi.placeOrder, + orderRecordUtils.toApi(body), + ); + + let successReturnValue: any = undefined; + if (toEntities) { + successReturnValue = orderRecordUtils.fromApiArrayAsEntities([response]); + yield put(normalizedEntities(successReturnValue)); + yield put(placeOrderSuccess_Entities(successReturnValue)); + } + if (toInlined) { + successReturnValue = orderRecordUtils.fromApi(response); + yield put(placeOrderSuccess(successReturnValue)); + } + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(placeOrderFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/UserApi.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/UserApi.ts new file mode 100644 index 00000000000..1bc763f8066 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/UserApi.ts @@ -0,0 +1,326 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import { + DefaultMetaOnlyResponse, + DefaultMetaOnlyResponseFromJSON, + DefaultMetaOnlyResponseToJSON, + User, + UserFromJSON, + UserToJSON, +} from '../models'; + +export interface CreateUserRequest { + body: User; +} + +export interface CreateUsersWithArrayInputRequest { + body: Array; +} + +export interface CreateUsersWithListInputRequest { + body: Array; +} + +export interface DeleteUserRequest { + username: string; +} + +export interface GetUserByNameRequest { + username: string; +} + +export interface LoginUserRequest { + username: string; + password: string; +} + +export interface UpdateUserRequest { + username: string; + body: User; +} + +/** + * + */ +export class UserApi extends runtime.BaseAPI { + + /** + * This can only be done by the logged in user. + * Create user + */ + async createUserRaw(requestParameters: CreateUserRequest): Promise> { + if (requestParameters.body === null || requestParameters.body === undefined) { + throw new runtime.RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUser.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/user`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: UserToJSON(requestParameters.body), + }); + + return new runtime.VoidApiResponse(response); + } + + /** + * This can only be done by the logged in user. + * Create user + */ + async createUser(body: User): Promise { + await this.createUserRaw({ body: body }); + } + + /** + * Creates list of users with given input array + */ + async createUsersWithArrayInputRaw(requestParameters: CreateUsersWithArrayInputRequest): Promise> { + if (requestParameters.body === null || requestParameters.body === undefined) { + throw new runtime.RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUsersWithArrayInput.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/user/createWithArray`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.body.map(UserToJSON), + }); + + return new runtime.VoidApiResponse(response); + } + + /** + * Creates list of users with given input array + */ + async createUsersWithArrayInput(body: Array): Promise { + await this.createUsersWithArrayInputRaw({ body: body }); + } + + /** + * Creates list of users with given input array + */ + async createUsersWithListInputRaw(requestParameters: CreateUsersWithListInputRequest): Promise> { + if (requestParameters.body === null || requestParameters.body === undefined) { + throw new runtime.RequiredError('body','Required parameter requestParameters.body was null or undefined when calling createUsersWithListInput.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/user/createWithList`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: requestParameters.body.map(UserToJSON), + }); + + return new runtime.VoidApiResponse(response); + } + + /** + * Creates list of users with given input array + */ + async createUsersWithListInput(body: Array): Promise { + await this.createUsersWithListInputRaw({ body: body }); + } + + /** + * This can only be done by the logged in user. + * Delete user + */ + async deleteUserRaw(requestParameters: DeleteUserRequest): Promise> { + if (requestParameters.username === null || requestParameters.username === undefined) { + throw new runtime.RequiredError('username','Required parameter requestParameters.username was null or undefined when calling deleteUser.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.VoidApiResponse(response); + } + + /** + * This can only be done by the logged in user. + * Delete user + */ + async deleteUser(username: string): Promise { + await this.deleteUserRaw({ username: username }); + } + + /** + * Get user by user name + */ + async getUserByNameRaw(requestParameters: GetUserByNameRequest): Promise> { + if (requestParameters.username === null || requestParameters.username === undefined) { + throw new runtime.RequiredError('username','Required parameter requestParameters.username was null or undefined when calling getUserByName.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserFromJSON(jsonValue)); + } + + /** + * Get user by user name + */ + async getUserByName(username: string): Promise { + const response = await this.getUserByNameRaw({ username: username }); + return await response.value(); + } + + /** + * Logs user into the system + */ + async loginUserRaw(requestParameters: LoginUserRequest): Promise> { + if (requestParameters.username === null || requestParameters.username === undefined) { + throw new runtime.RequiredError('username','Required parameter requestParameters.username was null or undefined when calling loginUser.'); + } + + if (requestParameters.password === null || requestParameters.password === undefined) { + throw new runtime.RequiredError('password','Required parameter requestParameters.password was null or undefined when calling loginUser.'); + } + + const queryParameters: any = {}; + + if (requestParameters.username !== undefined) { + queryParameters['username'] = requestParameters.username; + } + + if (requestParameters.password !== undefined) { + queryParameters['password'] = requestParameters.password; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/user/login`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.TextApiResponse(response) as any; + } + + /** + * Logs user into the system + */ + async loginUser(username: string, password: string): Promise { + const response = await this.loginUserRaw({ username: username, password: password }); + return await response.value(); + } + + /** + * Logs out current logged in user session + */ + async logoutUserRaw(): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/user/logout`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }); + + return new runtime.VoidApiResponse(response); + } + + /** + * Logs out current logged in user session + */ + async logoutUser(): Promise { + await this.logoutUserRaw(); + } + + /** + * This can only be done by the logged in user. + * Updated user + */ + async updateUserRaw(requestParameters: UpdateUserRequest): Promise> { + if (requestParameters.username === null || requestParameters.username === undefined) { + throw new runtime.RequiredError('username','Required parameter requestParameters.username was null or undefined when calling updateUser.'); + } + + if (requestParameters.body === null || requestParameters.body === undefined) { + throw new runtime.RequiredError('body','Required parameter requestParameters.body was null or undefined when calling updateUser.'); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters.username))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: UserToJSON(requestParameters.body), + }); + + return new runtime.JSONApiResponse(response, (jsonValue) => DefaultMetaOnlyResponseFromJSON(jsonValue)); + } + + /** + * This can only be done by the logged in user. + * Updated user + */ + async updateUser(username: string, body: User): Promise { + const response = await this.updateUserRaw({ username: username, body: body }); + return await response.value(); + } + +} diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/UserApiSagas.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/UserApiSagas.ts new file mode 100644 index 00000000000..9a2f070e145 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/UserApiSagas.ts @@ -0,0 +1,395 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import {Api} from './'; +import {List} from 'immutable'; +import {all, fork, put, takeLatest} from "redux-saga/effects"; +import {apiCall, createSagaAction as originalCreateSagaAction, BaseEntitySupportPayloadApiAction, BasePayloadApiAction, NormalizedRecordEntities, normalizedEntities} from "../runtimeSagasAndRecords"; +import {Action} from "redux-ts-simple"; + +import { + DefaultMetaOnlyResponse, + DefaultMetaOnlyResponseRecord, + defaultMetaOnlyResponseRecordUtils, + User, + UserRecord, + userRecordUtils, +} from '../models'; + +const createSagaAction = (type: string) => originalCreateSagaAction(type, {namespace: "api_userApi"}); + +export const userApiSagaMap = new Map Generator>([ + ["createUser", createUserSaga], + ["createUsersWithArrayInput", createUsersWithArrayInputSaga], + ["createUsersWithListInput", createUsersWithListInputSaga], + ["deleteUser", deleteUserSaga], + ["getUserByName", getUserByNameSaga], + ["loginUser", loginUserSaga], + ["logoutUser", logoutUserSaga], + ["updateUser", updateUserSaga], + ] +); + +export function *userApiAllSagas() { + yield all([...userApiSagaMap.values()].map(actionSaga => fork(actionSaga))); +} + +//region createUser + +export interface PayloadCreateUser extends PayloadCreateUserRequest, BasePayloadApiAction { +} + +export interface PayloadCreateUserRequest { + body: UserRecord; +} + +export const createUserRequest = createSagaAction("createUserRequest"); +export const createUserSuccess = createSagaAction("createUserSuccess"); +export const createUserFailure = createSagaAction<{error: any, requestPayload: PayloadCreateUser}>("createUserFailure"); + +export const createUser = createSagaAction("createUser"); + +export function *createUserSaga() { + yield takeLatest(createUser, createUserSagaImp); +} + +export function *createUserSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + body, + } = _payloadRest_; + + yield put(createUserRequest(_action_.payload)); + + const response = yield apiCall(Api.userApi, Api.userApi.createUser, + userRecordUtils.toApi(body), + ); + + yield put(createUserSuccess()); + + return undefined; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(createUserFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region createUsersWithArrayInput + +export interface PayloadCreateUsersWithArrayInput extends PayloadCreateUsersWithArrayInputRequest, BasePayloadApiAction { +} + +export interface PayloadCreateUsersWithArrayInputRequest { + body: List; +} + +export const createUsersWithArrayInputRequest = createSagaAction("createUsersWithArrayInputRequest"); +export const createUsersWithArrayInputSuccess = createSagaAction("createUsersWithArrayInputSuccess"); +export const createUsersWithArrayInputFailure = createSagaAction<{error: any, requestPayload: PayloadCreateUsersWithArrayInput}>("createUsersWithArrayInputFailure"); + +export const createUsersWithArrayInput = createSagaAction("createUsersWithArrayInput"); + +export function *createUsersWithArrayInputSaga() { + yield takeLatest(createUsersWithArrayInput, createUsersWithArrayInputSagaImp); +} + +export function *createUsersWithArrayInputSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + body, + } = _payloadRest_; + + yield put(createUsersWithArrayInputRequest(_action_.payload)); + + const response = yield apiCall(Api.userApi, Api.userApi.createUsersWithArrayInput, + userRecordUtils.toApiArray(body), + ); + + yield put(createUsersWithArrayInputSuccess()); + + return undefined; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(createUsersWithArrayInputFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region createUsersWithListInput + +export interface PayloadCreateUsersWithListInput extends PayloadCreateUsersWithListInputRequest, BasePayloadApiAction { +} + +export interface PayloadCreateUsersWithListInputRequest { + body: List; +} + +export const createUsersWithListInputRequest = createSagaAction("createUsersWithListInputRequest"); +export const createUsersWithListInputSuccess = createSagaAction("createUsersWithListInputSuccess"); +export const createUsersWithListInputFailure = createSagaAction<{error: any, requestPayload: PayloadCreateUsersWithListInput}>("createUsersWithListInputFailure"); + +export const createUsersWithListInput = createSagaAction("createUsersWithListInput"); + +export function *createUsersWithListInputSaga() { + yield takeLatest(createUsersWithListInput, createUsersWithListInputSagaImp); +} + +export function *createUsersWithListInputSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + body, + } = _payloadRest_; + + yield put(createUsersWithListInputRequest(_action_.payload)); + + const response = yield apiCall(Api.userApi, Api.userApi.createUsersWithListInput, + userRecordUtils.toApiArray(body), + ); + + yield put(createUsersWithListInputSuccess()); + + return undefined; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(createUsersWithListInputFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region deleteUser + +export interface PayloadDeleteUser extends PayloadDeleteUserRequest, BasePayloadApiAction { +} + +export interface PayloadDeleteUserRequest { + username: string; +} + +export const deleteUserRequest = createSagaAction("deleteUserRequest"); +export const deleteUserSuccess = createSagaAction("deleteUserSuccess"); +export const deleteUserFailure = createSagaAction<{error: any, requestPayload: PayloadDeleteUser}>("deleteUserFailure"); + +export const deleteUser = createSagaAction("deleteUser"); + +export function *deleteUserSaga() { + yield takeLatest(deleteUser, deleteUserSagaImp); +} + +export function *deleteUserSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + username, + } = _payloadRest_; + + yield put(deleteUserRequest(_action_.payload)); + + const response = yield apiCall(Api.userApi, Api.userApi.deleteUser, + username, + ); + + yield put(deleteUserSuccess()); + + return undefined; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(deleteUserFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region getUserByName + +export interface PayloadGetUserByName extends PayloadGetUserByNameRequest, BaseEntitySupportPayloadApiAction { +} + +export interface PayloadGetUserByNameRequest { + username: string; +} + +export const getUserByNameRequest = createSagaAction("getUserByNameRequest"); +export const getUserByNameSuccess = createSagaAction("getUserByNameSuccess"); +export const getUserByNameSuccess_Entities = createSagaAction("getUserByNameSuccess_Entities"); +export const getUserByNameFailure = createSagaAction<{error: any, requestPayload: PayloadGetUserByName}>("getUserByNameFailure"); + +export const getUserByName = createSagaAction("getUserByName"); + +export function *getUserByNameSaga() { + yield takeLatest(getUserByName, getUserByNameSagaImp); +} + +export function *getUserByNameSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const {toEntities, toInlined = !toEntities, ...requestPayload} = _payloadRest_; + const { + username, + } = _payloadRest_; + + yield put(getUserByNameRequest(requestPayload)); + + const response: Required = yield apiCall(Api.userApi, Api.userApi.getUserByName, + username, + ); + + let successReturnValue: any = undefined; + if (toEntities) { + successReturnValue = userRecordUtils.fromApiArrayAsEntities([response]); + yield put(normalizedEntities(successReturnValue)); + yield put(getUserByNameSuccess_Entities(successReturnValue)); + } + if (toInlined) { + successReturnValue = userRecordUtils.fromApi(response); + yield put(getUserByNameSuccess(successReturnValue)); + } + + return successReturnValue; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(getUserByNameFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region loginUser + +export interface PayloadLoginUser extends PayloadLoginUserRequest, BasePayloadApiAction { +} + +export interface PayloadLoginUserRequest { + username: string; + password: string; +} + +export const loginUserRequest = createSagaAction("loginUserRequest"); +export const loginUserSuccess = createSagaAction("loginUserSuccess"); +export const loginUserFailure = createSagaAction<{error: any, requestPayload: PayloadLoginUser}>("loginUserFailure"); + +export const loginUser = createSagaAction("loginUser"); + +export function *loginUserSaga() { + yield takeLatest(loginUser, loginUserSagaImp); +} + +export function *loginUserSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + username, + password, + } = _payloadRest_; + + yield put(loginUserRequest(_action_.payload)); + + const response: Required = yield apiCall(Api.userApi, Api.userApi.loginUser, + username, + password, + ); + + let successReturnValue: any = undefined; + yield put(loginUserSuccess(response)); + + return response; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(loginUserFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region logoutUser + +export interface PayloadLogoutUser extends BasePayloadApiAction { +} + + +export const logoutUserRequest = createSagaAction("logoutUserRequest"); +export const logoutUserSuccess = createSagaAction("logoutUserSuccess"); +export const logoutUserFailure = createSagaAction<{error: any, requestPayload: PayloadLogoutUser}>("logoutUserFailure"); + +export const logoutUser = createSagaAction("logoutUser"); + +export function *logoutUserSaga() { + yield takeLatest(logoutUser, logoutUserSagaImp); +} + +export function *logoutUserSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + + yield put(logoutUserRequest()); + + const response = yield apiCall(Api.userApi, Api.userApi.logoutUser, + ); + + yield put(logoutUserSuccess()); + + return undefined; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(logoutUserFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion +//region updateUser + +export interface PayloadUpdateUser extends PayloadUpdateUserRequest, BasePayloadApiAction { +} + +export interface PayloadUpdateUserRequest { + username: string; + body: UserRecord; +} + +export const updateUserRequest = createSagaAction("updateUserRequest"); +export const updateUserSuccess = createSagaAction("updateUserSuccess"); +export const updateUserFailure = createSagaAction<{error: any, requestPayload: PayloadUpdateUser}>("updateUserFailure"); + +export const updateUser = createSagaAction("updateUser"); + +export function *updateUserSaga() { + yield takeLatest(updateUser, updateUserSagaImp); +} + +export function *updateUserSagaImp(_action_: Action) { + const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload; + try { + const { + username, + body, + } = _payloadRest_; + + yield put(updateUserRequest(_action_.payload)); + + const response: Required = yield apiCall(Api.userApi, Api.userApi.updateUser, + username, + userRecordUtils.toApi(body), + ); + + yield put(updateUserSuccess()); + + return undefined; + } catch (error) { + if (markErrorsAsHandled) {error.wasHandled = true; } + yield put(updateUserFailure({error, requestPayload: _action_.payload})); + return error; + } +} +//endregion diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/allSagas.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/allSagas.ts new file mode 100644 index 00000000000..dae5870a93a --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/allSagas.ts @@ -0,0 +1,19 @@ +import {all, fork} from "redux-saga/effects"; + +import { + behaviorApiAllSagas, + petApiAllSagas, + petPartApiAllSagas, + storeApiAllSagas, + userApiAllSagas, +} from "./"; + +export function *allApiSagas() { + yield all([ + fork(behaviorApiAllSagas), + fork(petApiAllSagas), + fork(petPartApiAllSagas), + fork(storeApiAllSagas), + fork(userApiAllSagas), + ]); +} diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/index.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/index.ts new file mode 100644 index 00000000000..4a025f4ed41 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/index.ts @@ -0,0 +1,12 @@ +export * from './SagaApiManager' +export * from './allSagas' +export * from './BehaviorApi'; +export * from './BehaviorApiSagas'; +export * from './PetApi'; +export * from './PetApiSagas'; +export * from './PetPartApi'; +export * from './PetPartApiSagas'; +export * from './StoreApi'; +export * from './StoreApiSagas'; +export * from './UserApi'; +export * from './UserApiSagas'; diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/index.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/index.ts new file mode 100644 index 00000000000..abbe33d5b20 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/index.ts @@ -0,0 +1,7 @@ +export * from './runtime'; +export * from './runtimeSagasAndRecords'; +export * from './ApiEntitiesRecord'; +export * from './ApiEntitiesReducer'; +export * from './ApiEntitiesSelectors'; +export * from './apis'; +export * from './models'; diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/BehaviorType.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/BehaviorType.ts new file mode 100644 index 00000000000..f10324a4775 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/BehaviorType.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Behavior type of a pet + * @export + * @enum {string} + */ +export enum BehaviorType { + Voluntary = 'Voluntary', + Involuntary = 'Involuntary', + Overt = 'Overt' +} + +export function BehaviorTypeFromJSON(json: any): BehaviorType { + return BehaviorTypeFromJSONTyped(json, false); +} + +export function BehaviorTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): BehaviorType { + return json as BehaviorType; +} + +export function BehaviorTypeToJSON(value?: BehaviorType | null): any { + return value as any; +} + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/BehaviorTypeRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/BehaviorTypeRecord.ts new file mode 100644 index 00000000000..65fbcfab763 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/BehaviorTypeRecord.ts @@ -0,0 +1 @@ +// This file is not needed and was generated only because of how codegen is built... Enums do not need to be converted to Records and can be used directly. diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Category.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Category.ts new file mode 100644 index 00000000000..faf9aabb9de --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Category.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * A category for a pet + * @export + * @interface Category + */ +export interface Category { + /** + * + * @type {number} + * @memberof Category + */ + id?: number; + /** + * + * @type {string} + * @memberof Category + */ + name?: string; +} + +export function CategoryFromJSON(json: any): Category { + return CategoryFromJSONTyped(json, false); +} + +export function CategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): Category { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': !exists(json, 'name') ? undefined : json['name'], + }; +} + +export function CategoryToJSON(value?: Category | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'name': value.name, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/CategoryRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/CategoryRecord.ts new file mode 100644 index 00000000000..f69d536f6ea --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/CategoryRecord.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + Category, +} from './Category'; + + + +export const CategoryRecordProps = { + recType: "CategoryApiRecord" as "CategoryApiRecord", + id: null as string | null, + name: null as string | null, +}; + +export type CategoryRecordPropsType = typeof CategoryRecordProps; +export const CategoryRecord = Record(CategoryRecordProps, CategoryRecordProps.recType); +export type CategoryRecord = RecordOf; + +knownRecordFactories.set(CategoryRecordProps.recType, CategoryRecord); + +export const CategoryRecordEntityProps = { + ...CategoryRecordProps, + recType: "CategoryApiRecordEntity" as "CategoryApiRecordEntity", +}; + +export type CategoryRecordEntityPropsType = typeof CategoryRecordEntityProps; +export const CategoryRecordEntity = Record(CategoryRecordEntityProps, CategoryRecordEntityProps.recType); +export type CategoryRecordEntity = RecordOf; + +knownRecordFactories.set(CategoryRecordEntityProps.recType, CategoryRecordEntity); + +class CategoryRecordUtils extends ApiRecordUtils { + public normalize(apiObject: Category, asEntity?: boolean): Category { + (apiObject as any).recType = asEntity ? CategoryRecordEntityProps.recType : CategoryRecordProps.recType; + if (apiObject.id) { (apiObject as any).id = apiObject.id.toString(); } + return apiObject; + } + + public getSchema(): Schema { + return new schema.Entity("category", { + }); + } + + public *toInlined(entityId?: string | null) { + if (!entityId) {return undefined; } + const entity = yield select(apiEntityCategorySelector, {id: entityId}); + if (!entity) {return undefined; } + + const { + recType, + ...unchangedProperties + } = entity; + + const entityProperties = { + } + + return CategoryRecord({ + ...unchangedProperties, + ...entityProperties + }); + } + + public *toInlinedArray(entityIds: List | null) { + if (!entityIds) {return null; } + let entities = List(); + for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) { + const entity = yield call(this.toInlined, entityIds.get(entityIndex)); + if (entity) { + entities.push(entity); + } + } + return entities; + } + + public toApi(record: CategoryRecord): Category { + const apiObject = super.toApi(record); + if (record.id) { apiObject.id = parseFloat(record.id); } + return apiObject; + } +} + +export const categoryRecordUtils = new CategoryRecordUtils(); + +export const apiEntitiesCategorySelector = (state: any) => getApiEntitiesState(state).category as Map; +export const apiEntityCategorySelector = (state: any, {id}: {id?: string | null}) => id ? apiEntitiesCategorySelector(state).get(id) : undefined; + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DefaultMetaOnlyResponse.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DefaultMetaOnlyResponse.ts new file mode 100644 index 00000000000..b6ac416539a --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DefaultMetaOnlyResponse.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + ResponseMeta, + ResponseMetaFromJSON, + ResponseMetaFromJSONTyped, + ResponseMetaToJSON, +} from './'; + +/** + * + * @export + * @interface DefaultMetaOnlyResponse + */ +export interface DefaultMetaOnlyResponse { + /** + * + * @type {ResponseMeta} + * @memberof DefaultMetaOnlyResponse + */ + meta: ResponseMeta; +} + +export function DefaultMetaOnlyResponseFromJSON(json: any): DefaultMetaOnlyResponse { + return DefaultMetaOnlyResponseFromJSONTyped(json, false); +} + +export function DefaultMetaOnlyResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): DefaultMetaOnlyResponse { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'meta': ResponseMetaFromJSON(json['meta']), + }; +} + +export function DefaultMetaOnlyResponseToJSON(value?: DefaultMetaOnlyResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'meta': ResponseMetaToJSON(value.meta), + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DefaultMetaOnlyResponseRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DefaultMetaOnlyResponseRecord.ts new file mode 100644 index 00000000000..b59a715e84c --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DefaultMetaOnlyResponseRecord.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + DefaultMetaOnlyResponse, +} from './DefaultMetaOnlyResponse'; + +import { + ResponseMeta, +} from './ResponseMeta'; + +import { + ResponseMetaRecord, + responseMetaRecordUtils +} from './ResponseMetaRecord'; + +export const DefaultMetaOnlyResponseRecordProps = { + recType: "DefaultMetaOnlyResponseApiRecord" as "DefaultMetaOnlyResponseApiRecord", + meta: ResponseMetaRecord(), +}; + +export type DefaultMetaOnlyResponseRecordPropsType = typeof DefaultMetaOnlyResponseRecordProps; +export const DefaultMetaOnlyResponseRecord = Record(DefaultMetaOnlyResponseRecordProps, DefaultMetaOnlyResponseRecordProps.recType); +export type DefaultMetaOnlyResponseRecord = RecordOf; + +knownRecordFactories.set(DefaultMetaOnlyResponseRecordProps.recType, DefaultMetaOnlyResponseRecord); + + +class DefaultMetaOnlyResponseRecordUtils extends ApiRecordUtils { + public normalize(apiObject: DefaultMetaOnlyResponse, asEntity?: boolean): DefaultMetaOnlyResponse { + (apiObject as any).recType = DefaultMetaOnlyResponseRecordProps.recType; + responseMetaRecordUtils.normalize(apiObject.meta); + return apiObject; + } + + public toApi(record: DefaultMetaOnlyResponseRecord): DefaultMetaOnlyResponse { + const apiObject = super.toApi(record); + apiObject.meta = responseMetaRecordUtils.toApi(record.meta); + return apiObject; + } +} + +export const defaultMetaOnlyResponseRecordUtils = new DefaultMetaOnlyResponseRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DeploymentRequestStatus.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DeploymentRequestStatus.ts new file mode 100644 index 00000000000..0a24b4b493f --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DeploymentRequestStatus.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Status of the deployment request + * @export + * @enum {string} + */ +export enum DeploymentRequestStatus { + New = 'New', + Prepared = 'Prepared', + Printed = 'Printed', + Tested = 'Tested', + Completed = 'Completed', + Cancelled = 'Cancelled', + Promoted = 'Promoted', + Assigned = 'Assigned', + Ready = 'Ready', + Packaged = 'Packaged', + Pairing = 'Pairing', + Paired = 'Paired' +} + +export function DeploymentRequestStatusFromJSON(json: any): DeploymentRequestStatus { + return DeploymentRequestStatusFromJSONTyped(json, false); +} + +export function DeploymentRequestStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeploymentRequestStatus { + return json as DeploymentRequestStatus; +} + +export function DeploymentRequestStatusToJSON(value?: DeploymentRequestStatus | null): any { + return value as any; +} + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DeploymentRequestStatusRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DeploymentRequestStatusRecord.ts new file mode 100644 index 00000000000..65fbcfab763 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/DeploymentRequestStatusRecord.ts @@ -0,0 +1 @@ +// This file is not needed and was generated only because of how codegen is built... Enums do not need to be converted to Records and can be used directly. diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ErrorCode.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ErrorCode.ts new file mode 100644 index 00000000000..101539269e4 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ErrorCode.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Error code returned when an error occurs + * @export + * @enum {string} + */ +export enum ErrorCode { + VolumeRangeAtLowestValue = 'Volume_Range_At_Lowest_Value', + MusicVolumeBlocksVolumeRangeDecrease = 'Music_Volume_Blocks_Volume_Range_Decrease', + VolumeRangeAtHighestValue = 'Volume_Range_At_Highest_Value', + MaximumVolumeBlocksVolumeRangeIncrease = 'Maximum_Volume_Blocks_Volume_Range_Increase', + MusicVolumeBlocksMaximumVolumeDecrease = 'Music_Volume_Blocks_Maximum_Volume_Decrease', + MaximumVolumeAtLowestValue = 'Maximum_Volume_At_Lowest_Value', + VolumeRangeBlocksMaximumVolumeDecrease = 'Volume_Range_Blocks_Maximum_Volume_Decrease', + MaximumVolumeAtHighestValue = 'Maximum_Volume_At_Highest_Value', + MessageGainBlocksMaximumVolumeIncrease = 'Message_Gain_Blocks_Maximum_Volume_Increase', + MusicVolumeBlocksMaximumVolumeIncrease = 'Music_Volume_Blocks_Maximum_Volume_Increase', + MaximumVolumeBlocksMessageGainDecrease = 'Maximum_Volume_Blocks_Message_Gain_Decrease', + MessageGainAtHighestValue = 'Message_Gain_At_Highest_Value', + MusicVolumeBlocksMessageGain = 'Music_Volume_Blocks_Message_Gain', + MaximumMessageGainLowerThanMinimum = 'Maximum_Message_Gain_Lower_Than_Minimum', + MaximumMessageGainHigherThanMaximum = 'Maximum_Message_Gain_Higher_Than_Maximum', + MaximumMessageGainLowerThanMessageGain = 'Maximum_Message_Gain_Lower_Than_Message_Gain', + MinimumVolumeBlocksMusicVolumeDecrease = 'Minimum_Volume_Blocks_Music_Volume_Decrease', + MaximumVolumeBlocksMusicVolumeIncrease = 'Maximum_Volume_Blocks_Music_Volume_Increase' +} + +export function ErrorCodeFromJSON(json: any): ErrorCode { + return ErrorCodeFromJSONTyped(json, false); +} + +export function ErrorCodeFromJSONTyped(json: any, ignoreDiscriminator: boolean): ErrorCode { + return json as ErrorCode; +} + +export function ErrorCodeToJSON(value?: ErrorCode | null): any { + return value as any; +} + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ErrorCodeRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ErrorCodeRecord.ts new file mode 100644 index 00000000000..65fbcfab763 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ErrorCodeRecord.ts @@ -0,0 +1 @@ +// This file is not needed and was generated only because of how codegen is built... Enums do not need to be converted to Records and can be used directly. diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByStatusResponse.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByStatusResponse.ts new file mode 100644 index 00000000000..6118e070e10 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByStatusResponse.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + Pet, + PetFromJSON, + PetFromJSONTyped, + PetToJSON, + ResponseMeta, + ResponseMetaFromJSON, + ResponseMetaFromJSONTyped, + ResponseMetaToJSON, +} from './'; + +/** + * + * @export + * @interface FindPetsByStatusResponse + */ +export interface FindPetsByStatusResponse { + /** + * + * @type {ResponseMeta} + * @memberof FindPetsByStatusResponse + */ + meta: ResponseMeta; + /** + * + * @type {Array} + * @memberof FindPetsByStatusResponse + */ + data?: Array; +} + +export function FindPetsByStatusResponseFromJSON(json: any): FindPetsByStatusResponse { + return FindPetsByStatusResponseFromJSONTyped(json, false); +} + +export function FindPetsByStatusResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): FindPetsByStatusResponse { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'meta': ResponseMetaFromJSON(json['meta']), + 'data': !exists(json, 'data') ? undefined : ((json['data'] as Array).map(PetFromJSON)), + }; +} + +export function FindPetsByStatusResponseToJSON(value?: FindPetsByStatusResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'meta': ResponseMetaToJSON(value.meta), + 'data': value.data === undefined ? undefined : ((value.data as Array).map(PetToJSON)), + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByStatusResponseRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByStatusResponseRecord.ts new file mode 100644 index 00000000000..3ac38102f82 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByStatusResponseRecord.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories, appFromJS, NormalizedRecordEntities} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + FindPetsByStatusResponse, +} from './FindPetsByStatusResponse'; + +import { + Pet, +} from './Pet'; +import { + ResponseMeta, +} from './ResponseMeta'; + +import { + PetRecord, + petRecordUtils +} from './PetRecord'; +import { + ResponseMetaRecord, + responseMetaRecordUtils +} from './ResponseMetaRecord'; + +export const FindPetsByStatusResponseRecordProps = { + recType: "FindPetsByStatusResponseApiRecord" as "FindPetsByStatusResponseApiRecord", + meta: ResponseMetaRecord(), + data: (PetRecord(), null as List | null), +}; + +export type FindPetsByStatusResponseRecordPropsType = typeof FindPetsByStatusResponseRecordProps; +export const FindPetsByStatusResponseRecord = Record(FindPetsByStatusResponseRecordProps, FindPetsByStatusResponseRecordProps.recType); +export type FindPetsByStatusResponseRecord = RecordOf; + +knownRecordFactories.set(FindPetsByStatusResponseRecordProps.recType, FindPetsByStatusResponseRecord); + + +class FindPetsByStatusResponseRecordUtils extends ApiRecordUtils { + public normalize(apiObject: FindPetsByStatusResponse, asEntity?: boolean): FindPetsByStatusResponse { + (apiObject as any).recType = FindPetsByStatusResponseRecordProps.recType; + responseMetaRecordUtils.normalize(apiObject.meta); + if (apiObject.data) { petRecordUtils.normalizeArray(apiObject.data); } + return apiObject; + } + + public toApi(record: FindPetsByStatusResponseRecord): FindPetsByStatusResponse { + const apiObject = super.toApi(record); + apiObject.meta = responseMetaRecordUtils.toApi(record.meta); + if (record.data) { apiObject.data = petRecordUtils.toApiArray(record.data); } + return apiObject; + } + + public fromApiPassthrough(apiObject: FindPetsByStatusResponse): List { + if (!apiObject.data) {return List(); } + const normalizedApiObject = petRecordUtils.normalizeArray(apiObject.data); + return appFromJS(normalizedApiObject); + } + + public fromApiPassthroughAsEntities(apiObject: FindPetsByStatusResponse): NormalizedRecordEntities { + if (!apiObject.data) {return {entities: {}, result: List()}; } + return ApiRecordUtils.toNormalizedRecordEntities(petRecordUtils.normalizeArrayAsEntities(apiObject.data), true); + } +} + +export const findPetsByStatusResponseRecordUtils = new FindPetsByStatusResponseRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByUserResponse.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByUserResponse.ts new file mode 100644 index 00000000000..9f010d3b32b --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByUserResponse.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + ResponseMeta, + ResponseMetaFromJSON, + ResponseMetaFromJSONTyped, + ResponseMetaToJSON, + User, + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './'; + +/** + * + * @export + * @interface FindPetsByUserResponse + */ +export interface FindPetsByUserResponse { + /** + * + * @type {ResponseMeta} + * @memberof FindPetsByUserResponse + */ + meta: ResponseMeta; + /** + * + * @type {Array} + * @memberof FindPetsByUserResponse + */ + data?: Array; +} + +export function FindPetsByUserResponseFromJSON(json: any): FindPetsByUserResponse { + return FindPetsByUserResponseFromJSONTyped(json, false); +} + +export function FindPetsByUserResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): FindPetsByUserResponse { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'meta': ResponseMetaFromJSON(json['meta']), + 'data': !exists(json, 'data') ? undefined : ((json['data'] as Array).map(UserFromJSON)), + }; +} + +export function FindPetsByUserResponseToJSON(value?: FindPetsByUserResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'meta': ResponseMetaToJSON(value.meta), + 'data': value.data === undefined ? undefined : ((value.data as Array).map(UserToJSON)), + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByUserResponseRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByUserResponseRecord.ts new file mode 100644 index 00000000000..b1cddadbf54 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/FindPetsByUserResponseRecord.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories, appFromJS, NormalizedRecordEntities} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + FindPetsByUserResponse, +} from './FindPetsByUserResponse'; + +import { + ResponseMeta, +} from './ResponseMeta'; +import { + User, +} from './User'; + +import { + ResponseMetaRecord, + responseMetaRecordUtils +} from './ResponseMetaRecord'; +import { + UserRecord, + userRecordUtils +} from './UserRecord'; + +export const FindPetsByUserResponseRecordProps = { + recType: "FindPetsByUserResponseApiRecord" as "FindPetsByUserResponseApiRecord", + meta: ResponseMetaRecord(), + data: (UserRecord(), null as List | null), +}; + +export type FindPetsByUserResponseRecordPropsType = typeof FindPetsByUserResponseRecordProps; +export const FindPetsByUserResponseRecord = Record(FindPetsByUserResponseRecordProps, FindPetsByUserResponseRecordProps.recType); +export type FindPetsByUserResponseRecord = RecordOf; + +knownRecordFactories.set(FindPetsByUserResponseRecordProps.recType, FindPetsByUserResponseRecord); + + +class FindPetsByUserResponseRecordUtils extends ApiRecordUtils { + public normalize(apiObject: FindPetsByUserResponse, asEntity?: boolean): FindPetsByUserResponse { + (apiObject as any).recType = FindPetsByUserResponseRecordProps.recType; + responseMetaRecordUtils.normalize(apiObject.meta); + if (apiObject.data) { userRecordUtils.normalizeArray(apiObject.data); } + return apiObject; + } + + public toApi(record: FindPetsByUserResponseRecord): FindPetsByUserResponse { + const apiObject = super.toApi(record); + apiObject.meta = responseMetaRecordUtils.toApi(record.meta); + if (record.data) { apiObject.data = userRecordUtils.toApiArray(record.data); } + return apiObject; + } + + public fromApiPassthrough(apiObject: FindPetsByUserResponse): List { + if (!apiObject.data) {return List(); } + const normalizedApiObject = userRecordUtils.normalizeArray(apiObject.data); + return appFromJS(normalizedApiObject); + } + + public fromApiPassthroughAsEntities(apiObject: FindPetsByUserResponse): NormalizedRecordEntities { + if (!apiObject.data) {return {entities: {}, result: List()}; } + return ApiRecordUtils.toNormalizedRecordEntities(userRecordUtils.normalizeArrayAsEntities(apiObject.data), true); + } +} + +export const findPetsByUserResponseRecordUtils = new FindPetsByUserResponseRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorPermissionsResponse.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorPermissionsResponse.ts new file mode 100644 index 00000000000..98f03260391 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorPermissionsResponse.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + ResponseMeta, + ResponseMetaFromJSON, + ResponseMetaFromJSONTyped, + ResponseMetaToJSON, +} from './'; + +/** + * + * @export + * @interface GetBehaviorPermissionsResponse + */ +export interface GetBehaviorPermissionsResponse { + /** + * + * @type {ResponseMeta} + * @memberof GetBehaviorPermissionsResponse + */ + meta: ResponseMeta; + /** + * + * @type {{ [key: string]: boolean; }} + * @memberof GetBehaviorPermissionsResponse + */ + data?: { [key: string]: boolean; }; +} + +export function GetBehaviorPermissionsResponseFromJSON(json: any): GetBehaviorPermissionsResponse { + return GetBehaviorPermissionsResponseFromJSONTyped(json, false); +} + +export function GetBehaviorPermissionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetBehaviorPermissionsResponse { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'meta': ResponseMetaFromJSON(json['meta']), + 'data': !exists(json, 'data') ? undefined : json['data'], + }; +} + +export function GetBehaviorPermissionsResponseToJSON(value?: GetBehaviorPermissionsResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'meta': ResponseMetaToJSON(value.meta), + 'data': value.data, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorPermissionsResponseRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorPermissionsResponseRecord.ts new file mode 100644 index 00000000000..eb7f7fdd70f --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorPermissionsResponseRecord.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories, appFromJS, NormalizedRecordEntities} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + GetBehaviorPermissionsResponse, +} from './GetBehaviorPermissionsResponse'; + +import { + ResponseMeta, +} from './ResponseMeta'; + +import { + ResponseMetaRecord, + responseMetaRecordUtils +} from './ResponseMetaRecord'; + +export const GetBehaviorPermissionsResponseRecordProps = { + recType: "GetBehaviorPermissionsResponseApiRecord" as "GetBehaviorPermissionsResponseApiRecord", + meta: ResponseMetaRecord(), + data: null as { [key: string]: boolean; } | null, +}; + +export type GetBehaviorPermissionsResponseRecordPropsType = typeof GetBehaviorPermissionsResponseRecordProps; +export const GetBehaviorPermissionsResponseRecord = Record(GetBehaviorPermissionsResponseRecordProps, GetBehaviorPermissionsResponseRecordProps.recType); +export type GetBehaviorPermissionsResponseRecord = RecordOf; + +knownRecordFactories.set(GetBehaviorPermissionsResponseRecordProps.recType, GetBehaviorPermissionsResponseRecord); + + +class GetBehaviorPermissionsResponseRecordUtils extends ApiRecordUtils { + public normalize(apiObject: GetBehaviorPermissionsResponse, asEntity?: boolean): GetBehaviorPermissionsResponse { + (apiObject as any).recType = GetBehaviorPermissionsResponseRecordProps.recType; + responseMetaRecordUtils.normalize(apiObject.meta); + return apiObject; + } + + public toApi(record: GetBehaviorPermissionsResponseRecord): GetBehaviorPermissionsResponse { + const apiObject = super.toApi(record); + apiObject.meta = responseMetaRecordUtils.toApi(record.meta); + return apiObject; + } + + public fromApiPassthrough(apiObject: GetBehaviorPermissionsResponse): { [key: string]: boolean; } { + return apiObject.data!; + } + + public fromApiPassthroughAsEntities(apiObject: GetBehaviorPermissionsResponse): NormalizedRecordEntities { + console.log("entities revival not supported on this response"); + return {entities: {}, result: List()}; + } +} + +export const getBehaviorPermissionsResponseRecordUtils = new GetBehaviorPermissionsResponseRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorTypeResponse.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorTypeResponse.ts new file mode 100644 index 00000000000..da5e918c40f --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorTypeResponse.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + BehaviorType, + BehaviorTypeFromJSON, + BehaviorTypeFromJSONTyped, + BehaviorTypeToJSON, + ResponseMeta, + ResponseMetaFromJSON, + ResponseMetaFromJSONTyped, + ResponseMetaToJSON, +} from './'; + +/** + * + * @export + * @interface GetBehaviorTypeResponse + */ +export interface GetBehaviorTypeResponse { + /** + * + * @type {ResponseMeta} + * @memberof GetBehaviorTypeResponse + */ + meta: ResponseMeta; + /** + * + * @type {BehaviorType} + * @memberof GetBehaviorTypeResponse + */ + data?: BehaviorType; +} + +export function GetBehaviorTypeResponseFromJSON(json: any): GetBehaviorTypeResponse { + return GetBehaviorTypeResponseFromJSONTyped(json, false); +} + +export function GetBehaviorTypeResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetBehaviorTypeResponse { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'meta': ResponseMetaFromJSON(json['meta']), + 'data': !exists(json, 'data') ? undefined : BehaviorTypeFromJSON(json['data']), + }; +} + +export function GetBehaviorTypeResponseToJSON(value?: GetBehaviorTypeResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'meta': ResponseMetaToJSON(value.meta), + 'data': BehaviorTypeToJSON(value.data), + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorTypeResponseRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorTypeResponseRecord.ts new file mode 100644 index 00000000000..7113f4a6aa2 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetBehaviorTypeResponseRecord.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories, appFromJS, NormalizedRecordEntities} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + GetBehaviorTypeResponse, +} from './GetBehaviorTypeResponse'; + +import { + BehaviorType, +} from './BehaviorType'; +import { + ResponseMeta, +} from './ResponseMeta'; + +import { + ResponseMetaRecord, + responseMetaRecordUtils +} from './ResponseMetaRecord'; + +export const GetBehaviorTypeResponseRecordProps = { + recType: "GetBehaviorTypeResponseApiRecord" as "GetBehaviorTypeResponseApiRecord", + meta: ResponseMetaRecord(), + data: null as BehaviorType | null, +}; + +export type GetBehaviorTypeResponseRecordPropsType = typeof GetBehaviorTypeResponseRecordProps; +export const GetBehaviorTypeResponseRecord = Record(GetBehaviorTypeResponseRecordProps, GetBehaviorTypeResponseRecordProps.recType); +export type GetBehaviorTypeResponseRecord = RecordOf; + +knownRecordFactories.set(GetBehaviorTypeResponseRecordProps.recType, GetBehaviorTypeResponseRecord); + + +class GetBehaviorTypeResponseRecordUtils extends ApiRecordUtils { + public normalize(apiObject: GetBehaviorTypeResponse, asEntity?: boolean): GetBehaviorTypeResponse { + (apiObject as any).recType = GetBehaviorTypeResponseRecordProps.recType; + responseMetaRecordUtils.normalize(apiObject.meta); + return apiObject; + } + + public toApi(record: GetBehaviorTypeResponseRecord): GetBehaviorTypeResponse { + const apiObject = super.toApi(record); + apiObject.meta = responseMetaRecordUtils.toApi(record.meta); + return apiObject; + } + + public fromApiPassthrough(apiObject: GetBehaviorTypeResponse): BehaviorType { + return apiObject.data!; + } + + public fromApiPassthroughAsEntities(apiObject: GetBehaviorTypeResponse): NormalizedRecordEntities { + console.log("entities revival not supported on this response"); + return {entities: {}, result: List()}; + } +} + +export const getBehaviorTypeResponseRecordUtils = new GetBehaviorTypeResponseRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetMatchingPartsResponse.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetMatchingPartsResponse.ts new file mode 100644 index 00000000000..ea8f86a0252 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetMatchingPartsResponse.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + MatchingParts, + MatchingPartsFromJSON, + MatchingPartsFromJSONTyped, + MatchingPartsToJSON, + ResponseMeta, + ResponseMetaFromJSON, + ResponseMetaFromJSONTyped, + ResponseMetaToJSON, +} from './'; + +/** + * + * @export + * @interface GetMatchingPartsResponse + */ +export interface GetMatchingPartsResponse { + /** + * + * @type {ResponseMeta} + * @memberof GetMatchingPartsResponse + */ + meta: ResponseMeta; + /** + * + * @type {MatchingParts} + * @memberof GetMatchingPartsResponse + */ + data?: MatchingParts; +} + +export function GetMatchingPartsResponseFromJSON(json: any): GetMatchingPartsResponse { + return GetMatchingPartsResponseFromJSONTyped(json, false); +} + +export function GetMatchingPartsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetMatchingPartsResponse { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'meta': ResponseMetaFromJSON(json['meta']), + 'data': !exists(json, 'data') ? undefined : MatchingPartsFromJSON(json['data']), + }; +} + +export function GetMatchingPartsResponseToJSON(value?: GetMatchingPartsResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'meta': ResponseMetaToJSON(value.meta), + 'data': MatchingPartsToJSON(value.data), + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetMatchingPartsResponseRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetMatchingPartsResponseRecord.ts new file mode 100644 index 00000000000..6b73951b1df --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetMatchingPartsResponseRecord.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories, appFromJS, NormalizedRecordEntities} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + GetMatchingPartsResponse, +} from './GetMatchingPartsResponse'; + +import { + MatchingParts, +} from './MatchingParts'; +import { + ResponseMeta, +} from './ResponseMeta'; + +import { + MatchingPartsRecord, + matchingPartsRecordUtils +} from './MatchingPartsRecord'; +import { + ResponseMetaRecord, + responseMetaRecordUtils +} from './ResponseMetaRecord'; + +export const GetMatchingPartsResponseRecordProps = { + recType: "GetMatchingPartsResponseApiRecord" as "GetMatchingPartsResponseApiRecord", + meta: ResponseMetaRecord(), + data: (MatchingPartsRecord(), null as MatchingPartsRecord | null), +}; + +export type GetMatchingPartsResponseRecordPropsType = typeof GetMatchingPartsResponseRecordProps; +export const GetMatchingPartsResponseRecord = Record(GetMatchingPartsResponseRecordProps, GetMatchingPartsResponseRecordProps.recType); +export type GetMatchingPartsResponseRecord = RecordOf; + +knownRecordFactories.set(GetMatchingPartsResponseRecordProps.recType, GetMatchingPartsResponseRecord); + + +class GetMatchingPartsResponseRecordUtils extends ApiRecordUtils { + public normalize(apiObject: GetMatchingPartsResponse, asEntity?: boolean): GetMatchingPartsResponse { + (apiObject as any).recType = GetMatchingPartsResponseRecordProps.recType; + responseMetaRecordUtils.normalize(apiObject.meta); + if (apiObject.data) { matchingPartsRecordUtils.normalize(apiObject.data); } + return apiObject; + } + + public toApi(record: GetMatchingPartsResponseRecord): GetMatchingPartsResponse { + const apiObject = super.toApi(record); + apiObject.meta = responseMetaRecordUtils.toApi(record.meta); + if (record.data) { apiObject.data = matchingPartsRecordUtils.toApi(record.data); } + return apiObject; + } + + public fromApiPassthrough(apiObject: GetMatchingPartsResponse): MatchingPartsRecord { + if (!apiObject.data) {return MatchingPartsRecord(); } + const normalizedApiObject = matchingPartsRecordUtils.normalize(apiObject.data); + return appFromJS(normalizedApiObject); + } + + public fromApiPassthroughAsEntities(apiObject: GetMatchingPartsResponse): NormalizedRecordEntities { + console.log("entities revival not supported on this response"); + return {entities: {}, result: List()}; + } +} + +export const getMatchingPartsResponseRecordUtils = new GetMatchingPartsResponseRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetPartTypeResponse.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetPartTypeResponse.ts new file mode 100644 index 00000000000..b0b43d1b96b --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetPartTypeResponse.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + PetPartType, + PetPartTypeFromJSON, + PetPartTypeFromJSONTyped, + PetPartTypeToJSON, + ResponseMeta, + ResponseMetaFromJSON, + ResponseMetaFromJSONTyped, + ResponseMetaToJSON, +} from './'; + +/** + * + * @export + * @interface GetPetPartTypeResponse + */ +export interface GetPetPartTypeResponse { + /** + * + * @type {ResponseMeta} + * @memberof GetPetPartTypeResponse + */ + meta: ResponseMeta; + /** + * + * @type {PetPartType} + * @memberof GetPetPartTypeResponse + */ + data?: PetPartType; +} + +export function GetPetPartTypeResponseFromJSON(json: any): GetPetPartTypeResponse { + return GetPetPartTypeResponseFromJSONTyped(json, false); +} + +export function GetPetPartTypeResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPetPartTypeResponse { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'meta': ResponseMetaFromJSON(json['meta']), + 'data': !exists(json, 'data') ? undefined : PetPartTypeFromJSON(json['data']), + }; +} + +export function GetPetPartTypeResponseToJSON(value?: GetPetPartTypeResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'meta': ResponseMetaToJSON(value.meta), + 'data': PetPartTypeToJSON(value.data), + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetPartTypeResponseRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetPartTypeResponseRecord.ts new file mode 100644 index 00000000000..69caf5d0546 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/GetPetPartTypeResponseRecord.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories, appFromJS, NormalizedRecordEntities} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + GetPetPartTypeResponse, +} from './GetPetPartTypeResponse'; + +import { + PetPartType, +} from './PetPartType'; +import { + ResponseMeta, +} from './ResponseMeta'; + +import { + ResponseMetaRecord, + responseMetaRecordUtils +} from './ResponseMetaRecord'; + +export const GetPetPartTypeResponseRecordProps = { + recType: "GetPetPartTypeResponseApiRecord" as "GetPetPartTypeResponseApiRecord", + meta: ResponseMetaRecord(), + data: null as PetPartType | null, +}; + +export type GetPetPartTypeResponseRecordPropsType = typeof GetPetPartTypeResponseRecordProps; +export const GetPetPartTypeResponseRecord = Record(GetPetPartTypeResponseRecordProps, GetPetPartTypeResponseRecordProps.recType); +export type GetPetPartTypeResponseRecord = RecordOf; + +knownRecordFactories.set(GetPetPartTypeResponseRecordProps.recType, GetPetPartTypeResponseRecord); + + +class GetPetPartTypeResponseRecordUtils extends ApiRecordUtils { + public normalize(apiObject: GetPetPartTypeResponse, asEntity?: boolean): GetPetPartTypeResponse { + (apiObject as any).recType = GetPetPartTypeResponseRecordProps.recType; + responseMetaRecordUtils.normalize(apiObject.meta); + return apiObject; + } + + public toApi(record: GetPetPartTypeResponseRecord): GetPetPartTypeResponse { + const apiObject = super.toApi(record); + apiObject.meta = responseMetaRecordUtils.toApi(record.meta); + return apiObject; + } + + public fromApiPassthrough(apiObject: GetPetPartTypeResponse): PetPartType { + return apiObject.data!; + } + + public fromApiPassthroughAsEntities(apiObject: GetPetPartTypeResponse): NormalizedRecordEntities { + console.log("entities revival not supported on this response"); + return {entities: {}, result: List()}; + } +} + +export const getPetPartTypeResponseRecordUtils = new GetPetPartTypeResponseRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ItemId.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ItemId.ts new file mode 100644 index 00000000000..c158400740c --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ItemId.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * Simplified identifier of an item + * @export + * @interface ItemId + */ +export interface ItemId { + /** + * Unique identifier of the item + * @type {string} + * @memberof ItemId + */ + id: string; + /** + * playlist + * @type {string} + * @memberof ItemId + */ + type: string; +} + +export function ItemIdFromJSON(json: any): ItemId { + return ItemIdFromJSONTyped(json, false); +} + +export function ItemIdFromJSONTyped(json: any, ignoreDiscriminator: boolean): ItemId { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': json['id'], + 'type': json['type'], + }; +} + +export function ItemIdToJSON(value?: ItemId | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'type': value.type, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ItemIdRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ItemIdRecord.ts new file mode 100644 index 00000000000..6980c92e9b8 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ItemIdRecord.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + ItemId, +} from './ItemId'; + + + +export const ItemIdRecordProps = { + recType: "ItemIdApiRecord" as "ItemIdApiRecord", + id: "", + type: "", +}; + +export type ItemIdRecordPropsType = typeof ItemIdRecordProps; +export const ItemIdRecord = Record(ItemIdRecordProps, ItemIdRecordProps.recType); +export type ItemIdRecord = RecordOf; + +knownRecordFactories.set(ItemIdRecordProps.recType, ItemIdRecord); + + +class ItemIdRecordUtils extends ApiRecordUtils { + public normalize(apiObject: ItemId, asEntity?: boolean): ItemId { + (apiObject as any).recType = ItemIdRecordProps.recType; + return apiObject; + } + + public toApi(record: ItemIdRecord): ItemId { + const apiObject = super.toApi(record); + return apiObject; + } +} + +export const itemIdRecordUtils = new ItemIdRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/MatchingParts.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/MatchingParts.ts new file mode 100644 index 00000000000..790f42e9a53 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/MatchingParts.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + Part, + PartFromJSON, + PartFromJSONTyped, + PartToJSON, +} from './'; + +/** + * Contains all the matching parts + * @export + * @interface MatchingParts + */ +export interface MatchingParts { + /** + * List of all the connected parts + * @type {Array} + * @memberof MatchingParts + */ + connected: Array; + /** + * List of all the related parts + * @type {Array} + * @memberof MatchingParts + */ + related: Array; +} + +export function MatchingPartsFromJSON(json: any): MatchingParts { + return MatchingPartsFromJSONTyped(json, false); +} + +export function MatchingPartsFromJSONTyped(json: any, ignoreDiscriminator: boolean): MatchingParts { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'connected': ((json['connected'] as Array).map(PartFromJSON)), + 'related': ((json['related'] as Array).map(PartFromJSON)), + }; +} + +export function MatchingPartsToJSON(value?: MatchingParts | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'connected': ((value.connected as Array).map(PartToJSON)), + 'related': ((value.related as Array).map(PartToJSON)), + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/MatchingPartsRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/MatchingPartsRecord.ts new file mode 100644 index 00000000000..edc7d033ebd --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/MatchingPartsRecord.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + MatchingParts, +} from './MatchingParts'; + +import { + Part, +} from './Part'; + +import { + PartRecord, + partRecordUtils +} from './PartRecord'; + +export const MatchingPartsRecordProps = { + recType: "MatchingPartsApiRecord" as "MatchingPartsApiRecord", + connected: (PartRecord(), List()), + related: (PartRecord(), List()), +}; + +export type MatchingPartsRecordPropsType = typeof MatchingPartsRecordProps; +export const MatchingPartsRecord = Record(MatchingPartsRecordProps, MatchingPartsRecordProps.recType); +export type MatchingPartsRecord = RecordOf; + +knownRecordFactories.set(MatchingPartsRecordProps.recType, MatchingPartsRecord); + + +class MatchingPartsRecordUtils extends ApiRecordUtils { + public normalize(apiObject: MatchingParts, asEntity?: boolean): MatchingParts { + (apiObject as any).recType = MatchingPartsRecordProps.recType; + partRecordUtils.normalizeArray(apiObject.connected); + partRecordUtils.normalizeArray(apiObject.related); + return apiObject; + } + + public toApi(record: MatchingPartsRecord): MatchingParts { + const apiObject = super.toApi(record); + apiObject.connected = partRecordUtils.toApiArray(record.connected); + apiObject.related = partRecordUtils.toApiArray(record.related); + return apiObject; + } +} + +export const matchingPartsRecordUtils = new MatchingPartsRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelApiResponse.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelApiResponse.ts new file mode 100644 index 00000000000..63fa57adc03 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelApiResponse.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * Describes the result of uploading an image resource + * @export + * @interface ModelApiResponse + */ +export interface ModelApiResponse { + /** + * + * @type {number} + * @memberof ModelApiResponse + */ + code?: number; + /** + * + * @type {string} + * @memberof ModelApiResponse + */ + type?: string; + /** + * + * @type {string} + * @memberof ModelApiResponse + */ + message?: string; +} + +export function ModelApiResponseFromJSON(json: any): ModelApiResponse { + return ModelApiResponseFromJSONTyped(json, false); +} + +export function ModelApiResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelApiResponse { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'code': !exists(json, 'code') ? undefined : json['code'], + 'type': !exists(json, 'type') ? undefined : json['type'], + 'message': !exists(json, 'message') ? undefined : json['message'], + }; +} + +export function ModelApiResponseToJSON(value?: ModelApiResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'code': value.code, + 'type': value.type, + 'message': value.message, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelApiResponseRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelApiResponseRecord.ts new file mode 100644 index 00000000000..6a246575576 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelApiResponseRecord.ts @@ -0,0 +1,55 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + ModelApiResponse, +} from './ModelApiResponse'; + + + +export const ModelApiResponseRecordProps = { + recType: "ModelApiResponseApiRecord" as "ModelApiResponseApiRecord", + code: null as number | null, + type: null as string | null, + message: null as string | null, +}; + +export type ModelApiResponseRecordPropsType = typeof ModelApiResponseRecordProps; +export const ModelApiResponseRecord = Record(ModelApiResponseRecordProps, ModelApiResponseRecordProps.recType); +export type ModelApiResponseRecord = RecordOf; + +knownRecordFactories.set(ModelApiResponseRecordProps.recType, ModelApiResponseRecord); + + +class ModelApiResponseRecordUtils extends ApiRecordUtils { + public normalize(apiObject: ModelApiResponse, asEntity?: boolean): ModelApiResponse { + (apiObject as any).recType = ModelApiResponseRecordProps.recType; + return apiObject; + } + + public toApi(record: ModelApiResponseRecord): ModelApiResponse { + const apiObject = super.toApi(record); + return apiObject; + } +} + +export const modelApiResponseRecordUtils = new ModelApiResponseRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelError.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelError.ts new file mode 100644 index 00000000000..be3cda0de1b --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelError.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + ItemId, + ItemIdFromJSON, + ItemIdFromJSONTyped, + ItemIdToJSON, +} from './'; + +/** + * This represent an error normally linked to a specific item from a previous request + * @export + * @interface ModelError + */ +export interface ModelError { + /** + * Usually contains the simple name of the exception + * @type {string} + * @memberof ModelError + */ + type: string; + /** + * + * @type {ItemId} + * @memberof ModelError + */ + itemInfo?: ItemId; + /** + * Simple explanation of the error + * @type {string} + * @memberof ModelError + */ + details?: string; + /** + * Message of the exception that will help developer to debug this problem if needed + * @type {string} + * @memberof ModelError + */ + exception?: string; +} + +export function ModelErrorFromJSON(json: any): ModelError { + return ModelErrorFromJSONTyped(json, false); +} + +export function ModelErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelError { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'type': json['type'], + 'itemInfo': !exists(json, 'itemInfo') ? undefined : ItemIdFromJSON(json['itemInfo']), + 'details': !exists(json, 'details') ? undefined : json['details'], + 'exception': !exists(json, 'exception') ? undefined : json['exception'], + }; +} + +export function ModelErrorToJSON(value?: ModelError | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'type': value.type, + 'itemInfo': ItemIdToJSON(value.itemInfo), + 'details': value.details, + 'exception': value.exception, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelErrorRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelErrorRecord.ts new file mode 100644 index 00000000000..29f964f5f14 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ModelErrorRecord.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + ModelError, +} from './ModelError'; + +import { + ItemId, +} from './ItemId'; + +import { + ItemIdRecord, + itemIdRecordUtils +} from './ItemIdRecord'; + +export const ModelErrorRecordProps = { + recType: "ModelErrorApiRecord" as "ModelErrorApiRecord", + type: 'GenericException', + itemInfo: (ItemIdRecord(), null as ItemIdRecord | null), + details: null as string | null, + exception: null as string | null, +}; + +export type ModelErrorRecordPropsType = typeof ModelErrorRecordProps; +export const ModelErrorRecord = Record(ModelErrorRecordProps, ModelErrorRecordProps.recType); +export type ModelErrorRecord = RecordOf; + +knownRecordFactories.set(ModelErrorRecordProps.recType, ModelErrorRecord); + + +class ModelErrorRecordUtils extends ApiRecordUtils { + public normalize(apiObject: ModelError, asEntity?: boolean): ModelError { + (apiObject as any).recType = ModelErrorRecordProps.recType; + if (apiObject.itemInfo) { itemIdRecordUtils.normalize(apiObject.itemInfo); } + return apiObject; + } + + public toApi(record: ModelErrorRecord): ModelError { + const apiObject = super.toApi(record); + if (record.itemInfo) { apiObject.itemInfo = itemIdRecordUtils.toApi(record.itemInfo); } + return apiObject; + } +} + +export const modelErrorRecordUtils = new ModelErrorRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Order.ts new file mode 100644 index 00000000000..79b7455a617 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Order.ts @@ -0,0 +1,107 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * An order for a pets from the pet store + * @export + * @interface Order + */ +export interface Order { + /** + * + * @type {number} + * @memberof Order + */ + id?: number; + /** + * + * @type {number} + * @memberof Order + */ + petId?: number; + /** + * + * @type {number} + * @memberof Order + */ + quantity?: number; + /** + * + * @type {Date} + * @memberof Order + */ + shipDate?: Date; + /** + * Order Status + * @type {string} + * @memberof Order + */ + status?: OrderStatusEnum; + /** + * + * @type {boolean} + * @memberof Order + */ + complete?: boolean; +} + +/** +* @export +* @enum {string} +*/ +export enum OrderStatusEnum { + Placed = 'placed', + Approved = 'approved', + Delivered = 'delivered' +} + +export function OrderFromJSON(json: any): Order { + return OrderFromJSONTyped(json, false); +} + +export function OrderFromJSONTyped(json: any, ignoreDiscriminator: boolean): Order { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'petId': !exists(json, 'petId') ? undefined : json['petId'], + 'quantity': !exists(json, 'quantity') ? undefined : json['quantity'], + 'shipDate': !exists(json, 'shipDate') ? undefined : (new Date(json['shipDate'])), + 'status': !exists(json, 'status') ? undefined : json['status'], + 'complete': !exists(json, 'complete') ? undefined : json['complete'], + }; +} + +export function OrderToJSON(value?: Order | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'petId': value.petId, + 'quantity': value.quantity, + 'shipDate': value.shipDate === undefined ? undefined : (value.shipDate.toISOString()), + 'status': value.status, + 'complete': value.complete, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/OrderRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/OrderRecord.ts new file mode 100644 index 00000000000..621b298df80 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/OrderRecord.ts @@ -0,0 +1,109 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + Order, + OrderStatusEnum, +} from './Order'; + + + +export const OrderRecordProps = { + recType: "OrderApiRecord" as "OrderApiRecord", + id: null as string | null, + petId: null as number | null, + quantity: null as number | null, + shipDate: null as Date | null, + status: null as OrderStatusEnum | null, + complete: null as boolean | null, +}; + +export type OrderRecordPropsType = typeof OrderRecordProps; +export const OrderRecord = Record(OrderRecordProps, OrderRecordProps.recType); +export type OrderRecord = RecordOf; + +knownRecordFactories.set(OrderRecordProps.recType, OrderRecord); + +export const OrderRecordEntityProps = { + ...OrderRecordProps, + recType: "OrderApiRecordEntity" as "OrderApiRecordEntity", +}; + +export type OrderRecordEntityPropsType = typeof OrderRecordEntityProps; +export const OrderRecordEntity = Record(OrderRecordEntityProps, OrderRecordEntityProps.recType); +export type OrderRecordEntity = RecordOf; + +knownRecordFactories.set(OrderRecordEntityProps.recType, OrderRecordEntity); + +class OrderRecordUtils extends ApiRecordUtils { + public normalize(apiObject: Order, asEntity?: boolean): Order { + (apiObject as any).recType = asEntity ? OrderRecordEntityProps.recType : OrderRecordProps.recType; + if (apiObject.id) { (apiObject as any).id = apiObject.id.toString(); } + return apiObject; + } + + public getSchema(): Schema { + return new schema.Entity("order", { + }); + } + + public *toInlined(entityId?: string | null) { + if (!entityId) {return undefined; } + const entity = yield select(apiEntityOrderSelector, {id: entityId}); + if (!entity) {return undefined; } + + const { + recType, + ...unchangedProperties + } = entity; + + const entityProperties = { + } + + return OrderRecord({ + ...unchangedProperties, + ...entityProperties + }); + } + + public *toInlinedArray(entityIds: List | null) { + if (!entityIds) {return null; } + let entities = List(); + for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) { + const entity = yield call(this.toInlined, entityIds.get(entityIndex)); + if (entity) { + entities.push(entity); + } + } + return entities; + } + + public toApi(record: OrderRecord): Order { + const apiObject = super.toApi(record); + if (record.id) { apiObject.id = parseFloat(record.id); } + return apiObject; + } +} + +export const orderRecordUtils = new OrderRecordUtils(); + +export const apiEntitiesOrderSelector = (state: any) => getApiEntitiesState(state).order as Map; +export const apiEntityOrderSelector = (state: any, {id}: {id?: string | null}) => id ? apiEntitiesOrderSelector(state).get(id) : undefined; + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Part.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Part.ts new file mode 100644 index 00000000000..e5a66755d75 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Part.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * Contains all the info about a pet part + * @export + * @interface Part + */ +export interface Part { + /** + * Unique identifier from the database + * @type {number} + * @memberof Part + */ + id: number; + /** + * Name of the part + * @type {string} + * @memberof Part + */ + name: string; +} + +export function PartFromJSON(json: any): Part { + return PartFromJSONTyped(json, false); +} + +export function PartFromJSONTyped(json: any, ignoreDiscriminator: boolean): Part { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + }; +} + +export function PartToJSON(value?: Part | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'name': value.name, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PartRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PartRecord.ts new file mode 100644 index 00000000000..0bbd36a831a --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PartRecord.ts @@ -0,0 +1,56 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + Part, +} from './Part'; + + + +export const PartRecordProps = { + recType: "PartApiRecord" as "PartApiRecord", + id: "-1", + name: "", +}; + +export type PartRecordPropsType = typeof PartRecordProps; +export const PartRecord = Record(PartRecordProps, PartRecordProps.recType); +export type PartRecord = RecordOf; + +knownRecordFactories.set(PartRecordProps.recType, PartRecord); + + +class PartRecordUtils extends ApiRecordUtils { + public normalize(apiObject: Part, asEntity?: boolean): Part { + (apiObject as any).recType = PartRecordProps.recType; + (apiObject as any).id = apiObject.id.toString(); + return apiObject; + } + + public toApi(record: PartRecord): Part { + const apiObject = super.toApi(record); + apiObject.id = parseFloat(record.id); + return apiObject; + } +} + +export const partRecordUtils = new PartRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Pet.ts new file mode 100644 index 00000000000..4a79974b1ef --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Pet.ts @@ -0,0 +1,238 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + Category, + CategoryFromJSON, + CategoryFromJSONTyped, + CategoryToJSON, + DeploymentRequestStatus, + DeploymentRequestStatusFromJSON, + DeploymentRequestStatusFromJSONTyped, + DeploymentRequestStatusToJSON, + Tag, + TagFromJSON, + TagFromJSONTyped, + TagToJSON, + WarningCode, + WarningCodeFromJSON, + WarningCodeFromJSONTyped, + WarningCodeToJSON, +} from './'; + +/** + * A pet for sale in the pet store + * @export + * @interface Pet + */ +export interface Pet { + /** + * + * @type {number} + * @memberof Pet + */ + id: number; + /** + * + * @type {number} + * @memberof Pet + */ + friendId?: number; + /** + * + * @type {Array} + * @memberof Pet + */ + otherFriendIds: Array; + /** + * + * @type {number} + * @memberof Pet + */ + friendAge: number; + /** + * + * @type {number} + * @memberof Pet + */ + age: number; + /** + * + * @type {boolean} + * @memberof Pet + */ + isHappy: boolean; + /** + * + * @type {boolean} + * @memberof Pet + */ + isTall: boolean; + /** + * + * @type {Category} + * @memberof Pet + */ + category: Category; + /** + * + * @type {Category} + * @memberof Pet + */ + optionalCategory?: Category; + /** + * + * @type {string} + * @memberof Pet + */ + name: string; + /** + * + * @type {Array} + * @memberof Pet + */ + _entries?: Array; + /** + * + * @type {string} + * @memberof Pet + */ + surname?: string; + /** + * + * @type {Array} + * @memberof Pet + */ + photoUrls: Array; + /** + * + * @type {WarningCode} + * @memberof Pet + */ + warningStatus: WarningCode; + /** + * + * @type {DeploymentRequestStatus} + * @memberof Pet + */ + depStatus?: DeploymentRequestStatus; + /** + * + * @type {DeploymentRequestStatus} + * @memberof Pet + */ + alternateStatus: DeploymentRequestStatus; + /** + * + * @type {Array} + * @memberof Pet + */ + otherDepStatuses: Array; + /** + * + * @type {Array} + * @memberof Pet + */ + tags: Array; + /** + * + * @type {Array} + * @memberof Pet + */ + optionalTags?: Array; + /** + * pet status in the store + * @type {string} + * @memberof Pet + */ + status: PetStatusEnum; +} + +/** +* @export +* @enum {string} +*/ +export enum PetStatusEnum { + Available = 'available', + Pending = 'pending', + Sold = 'sold' +} + +export function PetFromJSON(json: any): Pet { + return PetFromJSONTyped(json, false); +} + +export function PetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pet { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': json['id'], + 'friendId': !exists(json, 'friendId') ? undefined : json['friendId'], + 'otherFriendIds': json['otherFriendIds'], + 'friendAge': json['friendAge'], + 'age': json['age'], + 'isHappy': json['isHappy'], + 'isTall': json['isTall'], + 'category': CategoryFromJSON(json['category']), + 'optionalCategory': !exists(json, 'optionalCategory') ? undefined : CategoryFromJSON(json['optionalCategory']), + 'name': json['name'], + '_entries': !exists(json, 'entries') ? undefined : ((json['entries'] as Array).map(CategoryFromJSON)), + 'surname': !exists(json, 'surname') ? undefined : json['surname'], + 'photoUrls': json['photoUrls'], + 'warningStatus': WarningCodeFromJSON(json['warningStatus']), + 'depStatus': !exists(json, 'depStatus') ? undefined : DeploymentRequestStatusFromJSON(json['depStatus']), + 'alternateStatus': DeploymentRequestStatusFromJSON(json['alternateStatus']), + 'otherDepStatuses': ((json['otherDepStatuses'] as Array).map(DeploymentRequestStatusFromJSON)), + 'tags': ((json['tags'] as Array).map(TagFromJSON)), + 'optionalTags': !exists(json, 'optionalTags') ? undefined : ((json['optionalTags'] as Array).map(TagFromJSON)), + 'status': json['status'], + }; +} + +export function PetToJSON(value?: Pet | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'friendId': value.friendId, + 'otherFriendIds': value.otherFriendIds, + 'friendAge': value.friendAge, + 'age': value.age, + 'isHappy': value.isHappy, + 'isTall': value.isTall, + 'category': CategoryToJSON(value.category), + 'optionalCategory': CategoryToJSON(value.optionalCategory), + 'name': value.name, + 'entries': value._entries === undefined ? undefined : ((value._entries as Array).map(CategoryToJSON)), + 'surname': value.surname, + 'photoUrls': value.photoUrls, + 'warningStatus': WarningCodeToJSON(value.warningStatus), + 'depStatus': DeploymentRequestStatusToJSON(value.depStatus), + 'alternateStatus': DeploymentRequestStatusToJSON(value.alternateStatus), + 'otherDepStatuses': ((value.otherDepStatuses as Array).map(DeploymentRequestStatusToJSON)), + 'tags': ((value.tags as Array).map(TagToJSON)), + 'optionalTags': value.optionalTags === undefined ? undefined : ((value.optionalTags as Array).map(TagToJSON)), + 'status': value.status, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetPartType.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetPartType.ts new file mode 100644 index 00000000000..4b7c05fbd4b --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetPartType.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Type of pet part + * @export + * @enum {string} + */ +export enum PetPartType { + Curved = 'Curved', + Smooth = 'Smooth', + Long = 'Long' +} + +export function PetPartTypeFromJSON(json: any): PetPartType { + return PetPartTypeFromJSONTyped(json, false); +} + +export function PetPartTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): PetPartType { + return json as PetPartType; +} + +export function PetPartTypeToJSON(value?: PetPartType | null): any { + return value as any; +} + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetPartTypeRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetPartTypeRecord.ts new file mode 100644 index 00000000000..65fbcfab763 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetPartTypeRecord.ts @@ -0,0 +1 @@ +// This file is not needed and was generated only because of how codegen is built... Enums do not need to be converted to Records and can be used directly. diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRecord.ts new file mode 100644 index 00000000000..8292c5ee074 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/PetRecord.ts @@ -0,0 +1,177 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + Pet, + PetStatusEnum, +} from './Pet'; + +import { + Category, +} from './Category'; +import { + DeploymentRequestStatus, +} from './DeploymentRequestStatus'; +import { + Tag, +} from './Tag'; +import { + WarningCode, +} from './WarningCode'; + +import { + CategoryRecord, + categoryRecordUtils +} from './CategoryRecord'; +import { + TagRecord, + tagRecordUtils +} from './TagRecord'; + +export const PetRecordProps = { + recType: "PetApiRecord" as "PetApiRecord", + id: "-1", + friendId: null as string | null, + otherFriendIds: List(), + friendAge: 0, + age: 2, + isHappy: true, + isTall: false, + category: CategoryRecord(), + optionalCategory: (CategoryRecord(), null as CategoryRecord | null), + name: "", + _entries: (CategoryRecord(), null as List | null), + surname: null as string | null, + photoUrls: List(), + warningStatus: WarningCode.ReduceVolumeRangeToAvoidLargeSteps, + depStatus: null as DeploymentRequestStatus | null, + alternateStatus: DeploymentRequestStatus.New, + otherDepStatuses: List(), + tags: (TagRecord(), List()), + optionalTags: (TagRecord(), null as List | null), + status: PetStatusEnum.Pending, +}; + +export type PetRecordPropsType = typeof PetRecordProps; +export const PetRecord = Record(PetRecordProps, PetRecordProps.recType); +export type PetRecord = RecordOf; + +knownRecordFactories.set(PetRecordProps.recType, PetRecord); + +export const PetRecordEntityProps = { + ...PetRecordProps, + recType: "PetApiRecordEntity" as "PetApiRecordEntity", + category: "-1", + optionalCategory: null as string | null, + _entries: null as List | null, + tags: List(), + optionalTags: null as List | null, +}; + +export type PetRecordEntityPropsType = typeof PetRecordEntityProps; +export const PetRecordEntity = Record(PetRecordEntityProps, PetRecordEntityProps.recType); +export type PetRecordEntity = RecordOf; + +knownRecordFactories.set(PetRecordEntityProps.recType, PetRecordEntity); + +class PetRecordUtils extends ApiRecordUtils { + public normalize(apiObject: Pet, asEntity?: boolean): Pet { + (apiObject as any).recType = asEntity ? PetRecordEntityProps.recType : PetRecordProps.recType; + (apiObject as any).id = apiObject.id.toString(); + if (apiObject.friendId) { (apiObject as any).friendId = apiObject.friendId.toString(); } + (apiObject as any).otherFriendIds = apiObject.otherFriendIds.map(item => item.toString()); + categoryRecordUtils.normalize(apiObject.category); + if (apiObject.optionalCategory) { categoryRecordUtils.normalize(apiObject.optionalCategory); } + if (apiObject._entries) { categoryRecordUtils.normalizeArray(apiObject._entries); } + tagRecordUtils.normalizeArray(apiObject.tags); + if (apiObject.optionalTags) { tagRecordUtils.normalizeArray(apiObject.optionalTags); } + return apiObject; + } + + public getSchema(): Schema { + return new schema.Entity("pet", { + category: categoryRecordUtils.getSchema(), + optionalCategory: categoryRecordUtils.getSchema(), + _entries: [categoryRecordUtils.getSchema()], + tags: [tagRecordUtils.getSchema()], + optionalTags: [tagRecordUtils.getSchema()], + }); + } + + public *toInlined(entityId?: string | null) { + if (!entityId) {return undefined; } + const entity = yield select(apiEntityPetSelector, {id: entityId}); + if (!entity) {return undefined; } + + const { + recType, + category: category_original, + optionalCategory: optionalCategory_original, + _entries: _entries_original, + tags: tags_original, + optionalTags: optionalTags_original, + ...unchangedProperties + } = entity; + + const entityProperties = { + category: yield call(categoryRecordUtils.toInlined, entity.category), + optionalCategory: entity.optionalCategory ? yield call(categoryRecordUtils.toInlined, entity.optionalCategory) : null, + _entries: entity._entries ? yield call(categoryRecordUtils.toInlinedArray, entity._entries) : null, + tags: yield call(tagRecordUtils.toInlinedArray, entity.tags), + optionalTags: entity.optionalTags ? yield call(tagRecordUtils.toInlinedArray, entity.optionalTags) : null, + } + + return PetRecord({ + ...unchangedProperties, + ...entityProperties + }); + } + + public *toInlinedArray(entityIds: List | null) { + if (!entityIds) {return null; } + let entities = List(); + for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) { + const entity = yield call(this.toInlined, entityIds.get(entityIndex)); + if (entity) { + entities.push(entity); + } + } + return entities; + } + + public toApi(record: PetRecord): Pet { + const apiObject = super.toApi(record); + apiObject.id = parseFloat(record.id); + if (record.friendId) { apiObject.friendId = parseFloat(record.friendId); } + apiObject.otherFriendIds = record.otherFriendIds.map(item => parseFloat(item)).toArray(); + apiObject.category = categoryRecordUtils.toApi(record.category); + if (record.optionalCategory) { apiObject.optionalCategory = categoryRecordUtils.toApi(record.optionalCategory); } + if (record._entries) { apiObject._entries = categoryRecordUtils.toApiArray(record._entries); } + apiObject.tags = tagRecordUtils.toApiArray(record.tags); + if (record.optionalTags) { apiObject.optionalTags = tagRecordUtils.toApiArray(record.optionalTags); } + return apiObject; + } +} + +export const petRecordUtils = new PetRecordUtils(); + +export const apiEntitiesPetSelector = (state: any) => getApiEntitiesState(state).pet as Map; +export const apiEntityPetSelector = (state: any, {id}: {id?: string | null}) => id ? apiEntitiesPetSelector(state).get(id) : undefined; + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ResponseMeta.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ResponseMeta.ts new file mode 100644 index 00000000000..5b63ca5e8c5 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ResponseMeta.ts @@ -0,0 +1,134 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + ErrorCode, + ErrorCodeFromJSON, + ErrorCodeFromJSONTyped, + ErrorCodeToJSON, +} from './'; + +/** + * Mandatory part of each response given by our API + * @export + * @interface ResponseMeta + */ +export interface ResponseMeta { + /** + * Code returned by the function + * @type {string} + * @memberof ResponseMeta + */ + code: ResponseMetaCodeEnum; + /** + * Explanation of what went wrong + * @type {string} + * @memberof ResponseMeta + */ + detail?: string; + /** + * Message of the exception that will help developer to debug this problem if needed + * @type {string} + * @memberof ResponseMeta + */ + exception?: string; + /** + * Type of error + * @type {string} + * @memberof ResponseMeta + */ + type?: string; + /** + * + * @type {ErrorCode} + * @memberof ResponseMeta + */ + errorCode?: ErrorCode; + /** + * An array of all the specific error encountered during the request + * @type {Array} + * @memberof ResponseMeta + */ + errors?: Array; +} + +/** +* @export +* @enum {string} +*/ +export enum ResponseMetaCodeEnum { + Ok = 'Ok', + GenericException = 'Generic_Exception', + FieldErrorException = 'Field_Error_Exception', + ImageValidationException = 'Image_Validation_Exception', + InvalidContainerCreationWithNoDefaultAssetException = 'Invalid_Container_Creation_With_No_Default_Asset_Exception', + InvalidOverrideModeException = 'Invalid_Override_Mode_Exception', + InvalidTagException = 'Invalid_Tag_Exception', + ItemUseException = 'Item_Use_Exception', + MissingPlatformForSoftwareException = 'Missing_Platform_For_Software_Exception', + MissingSoftwareForPlatformException = 'Missing_Software_For_Platform_Exception', + PlatformNotSupportedException = 'Platform_Not_Supported_Exception', + RefreshDataException = 'Refresh_Data_Exception', + RoleAssignmentException = 'Role_Assignment_Exception', + TaskAlreadyRunningException = 'Task_Already_Running_Exception', + LoggedOutException = 'Logged_Out_Exception', + AuthorizationException = 'Authorization_Exception', + UnauthorizedActionForCurrentUserException = 'Unauthorized_Action_For_Current_User_Exception', + UserAlreadyExistsButIsNotAuthenticatedException = 'User_Already_Exists_But_Is_Not_Authenticated_Exception', + UserAlreadyHasActiveOrClosedGalaxieApiProductException = 'User_Already_Has_Active_Or_Closed_Galaxie_Api_Product_Exception', + UserAlreadyHasMultipleGalaxieApiProductsException = 'User_Already_Has_Multiple_Galaxie_Api_Products_Exception', + RecurlyApiException = 'Recurly_Api_Exception', + RecurlyTransactionErrorException = 'Recurly_Transaction_Error_Exception', + GalaxieApiException = 'Galaxie_Api_Exception' +} + +export function ResponseMetaFromJSON(json: any): ResponseMeta { + return ResponseMetaFromJSONTyped(json, false); +} + +export function ResponseMetaFromJSONTyped(json: any, ignoreDiscriminator: boolean): ResponseMeta { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'code': json['code'], + 'detail': !exists(json, 'detail') ? undefined : json['detail'], + 'exception': !exists(json, 'exception') ? undefined : json['exception'], + 'type': !exists(json, 'type') ? undefined : json['type'], + 'errorCode': !exists(json, 'errorCode') ? undefined : ErrorCodeFromJSON(json['errorCode']), + 'errors': !exists(json, 'errors') ? undefined : json['errors'], + }; +} + +export function ResponseMetaToJSON(value?: ResponseMeta | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'code': value.code, + 'detail': value.detail, + 'exception': value.exception, + 'type': value.type, + 'errorCode': ErrorCodeToJSON(value.errorCode), + 'errors': value.errors, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ResponseMetaRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ResponseMetaRecord.ts new file mode 100644 index 00000000000..79a092e4988 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ResponseMetaRecord.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + ResponseMeta, + ResponseMetaCodeEnum, +} from './ResponseMeta'; + +import { + ErrorCode, +} from './ErrorCode'; + + +export const ResponseMetaRecordProps = { + recType: "ResponseMetaApiRecord" as "ResponseMetaApiRecord", + code: ResponseMetaCodeEnum.Ok, + detail: null as string | null, + exception: null as string | null, + type: null as string | null, + errorCode: null as ErrorCode | null, + errors: null as Array | null, +}; + +export type ResponseMetaRecordPropsType = typeof ResponseMetaRecordProps; +export const ResponseMetaRecord = Record(ResponseMetaRecordProps, ResponseMetaRecordProps.recType); +export type ResponseMetaRecord = RecordOf; + +knownRecordFactories.set(ResponseMetaRecordProps.recType, ResponseMetaRecord); + + +class ResponseMetaRecordUtils extends ApiRecordUtils { + public normalize(apiObject: ResponseMeta, asEntity?: boolean): ResponseMeta { + (apiObject as any).recType = ResponseMetaRecordProps.recType; + return apiObject; + } + + public toApi(record: ResponseMetaRecord): ResponseMeta { + const apiObject = super.toApi(record); + return apiObject; + } +} + +export const responseMetaRecordUtils = new ResponseMetaRecordUtils(); + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Tag.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Tag.ts new file mode 100644 index 00000000000..8ea5895e79b --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Tag.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * A tag for a pet + * @export + * @interface Tag + */ +export interface Tag { + /** + * + * @type {number} + * @memberof Tag + */ + id?: number; + /** + * + * @type {string} + * @memberof Tag + */ + name?: string; +} + +export function TagFromJSON(json: any): Tag { + return TagFromJSONTyped(json, false); +} + +export function TagFromJSONTyped(json: any, ignoreDiscriminator: boolean): Tag { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': !exists(json, 'name') ? undefined : json['name'], + }; +} + +export function TagToJSON(value?: Tag | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'name': value.name, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/TagRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/TagRecord.ts new file mode 100644 index 00000000000..dd3b631ac85 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/TagRecord.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + Tag, +} from './Tag'; + + + +export const TagRecordProps = { + recType: "TagApiRecord" as "TagApiRecord", + id: null as string | null, + name: null as string | null, +}; + +export type TagRecordPropsType = typeof TagRecordProps; +export const TagRecord = Record(TagRecordProps, TagRecordProps.recType); +export type TagRecord = RecordOf; + +knownRecordFactories.set(TagRecordProps.recType, TagRecord); + +export const TagRecordEntityProps = { + ...TagRecordProps, + recType: "TagApiRecordEntity" as "TagApiRecordEntity", +}; + +export type TagRecordEntityPropsType = typeof TagRecordEntityProps; +export const TagRecordEntity = Record(TagRecordEntityProps, TagRecordEntityProps.recType); +export type TagRecordEntity = RecordOf; + +knownRecordFactories.set(TagRecordEntityProps.recType, TagRecordEntity); + +class TagRecordUtils extends ApiRecordUtils { + public normalize(apiObject: Tag, asEntity?: boolean): Tag { + (apiObject as any).recType = asEntity ? TagRecordEntityProps.recType : TagRecordProps.recType; + if (apiObject.id) { (apiObject as any).id = apiObject.id.toString(); } + return apiObject; + } + + public getSchema(): Schema { + return new schema.Entity("tag", { + }); + } + + public *toInlined(entityId?: string | null) { + if (!entityId) {return undefined; } + const entity = yield select(apiEntityTagSelector, {id: entityId}); + if (!entity) {return undefined; } + + const { + recType, + ...unchangedProperties + } = entity; + + const entityProperties = { + } + + return TagRecord({ + ...unchangedProperties, + ...entityProperties + }); + } + + public *toInlinedArray(entityIds: List | null) { + if (!entityIds) {return null; } + let entities = List(); + for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) { + const entity = yield call(this.toInlined, entityIds.get(entityIndex)); + if (entity) { + entities.push(entity); + } + } + return entities; + } + + public toApi(record: TagRecord): Tag { + const apiObject = super.toApi(record); + if (record.id) { apiObject.id = parseFloat(record.id); } + return apiObject; + } +} + +export const tagRecordUtils = new TagRecordUtils(); + +export const apiEntitiesTagSelector = (state: any) => getApiEntitiesState(state).tag as Map; +export const apiEntityTagSelector = (state: any, {id}: {id?: string | null}) => id ? apiEntitiesTagSelector(state).get(id) : undefined; + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/User.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/User.ts new file mode 100644 index 00000000000..6219c91e3e4 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/User.ts @@ -0,0 +1,129 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * A User who is purchasing from the pet store + * @export + * @interface User + */ +export interface User { + /** + * + * @type {number} + * @memberof User + */ + id: number; + /** + * + * @type {string} + * @memberof User + */ + username?: string; + /** + * + * @type {string} + * @memberof User + */ + firstName?: string; + /** + * + * @type {string} + * @memberof User + */ + lastName?: string; + /** + * + * @type {string} + * @memberof User + */ + email?: string; + /** + * + * @type {string} + * @memberof User + */ + password?: string; + /** + * + * @type {string} + * @memberof User + */ + phone?: string; + /** + * User Status + * @type {number} + * @memberof User + */ + userStatus?: number; + /** + * + * @type {User} + * @memberof User + */ + subUser?: User; + /** + * + * @type {User} + * @memberof User + */ + subUser2: User; +} + +export function UserFromJSON(json: any): User { + return UserFromJSONTyped(json, false); +} + +export function UserFromJSONTyped(json: any, ignoreDiscriminator: boolean): User { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': json['id'], + 'username': !exists(json, 'username') ? undefined : json['username'], + 'firstName': !exists(json, 'firstName') ? undefined : json['firstName'], + 'lastName': !exists(json, 'lastName') ? undefined : json['lastName'], + 'email': !exists(json, 'email') ? undefined : json['email'], + 'password': !exists(json, 'password') ? undefined : json['password'], + 'phone': !exists(json, 'phone') ? undefined : json['phone'], + 'userStatus': !exists(json, 'userStatus') ? undefined : json['userStatus'], + 'subUser': !exists(json, 'subUser') ? undefined : UserFromJSON(json['subUser']), + 'subUser2': UserFromJSON(json['subUser2']), + }; +} + +export function UserToJSON(value?: User | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'username': value.username, + 'firstName': value.firstName, + 'lastName': value.lastName, + 'email': value.email, + 'password': value.password, + 'phone': value.phone, + 'userStatus': value.userStatus, + 'subUser': UserToJSON(value.subUser), + 'subUser2': UserToJSON(value.subUser2), + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/UserRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/UserRecord.ts new file mode 100644 index 00000000000..292519c32b2 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/UserRecord.ts @@ -0,0 +1,112 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import {ApiRecordUtils, knownRecordFactories} from "../runtimeSagasAndRecords"; +import {getApiEntitiesState} from "../ApiEntitiesSelectors" +import {List, Record, RecordOf, Map} from 'immutable'; +import {Schema, schema, NormalizedSchema} from "normalizr"; +import {select, call} from "redux-saga/effects"; + +import { + User, +} from './User'; + + + +export const UserRecordProps = { + recType: "UserApiRecord" as "UserApiRecord", + id: "-1", + username: null as string | null, + firstName: null as string | null, + lastName: null as string | null, + email: null as string | null, + password: null as string | null, + phone: null as string | null, + userStatus: null as number | null, + subUser: null as User | null, + subUser2: {} as any as User, +}; + +export type UserRecordPropsType = typeof UserRecordProps; +export const UserRecord = Record(UserRecordProps, UserRecordProps.recType); +export type UserRecord = RecordOf; + +knownRecordFactories.set(UserRecordProps.recType, UserRecord); + +export const UserRecordEntityProps = { + ...UserRecordProps, + recType: "UserApiRecordEntity" as "UserApiRecordEntity", +}; + +export type UserRecordEntityPropsType = typeof UserRecordEntityProps; +export const UserRecordEntity = Record(UserRecordEntityProps, UserRecordEntityProps.recType); +export type UserRecordEntity = RecordOf; + +knownRecordFactories.set(UserRecordEntityProps.recType, UserRecordEntity); + +class UserRecordUtils extends ApiRecordUtils { + public normalize(apiObject: User, asEntity?: boolean): User { + (apiObject as any).recType = asEntity ? UserRecordEntityProps.recType : UserRecordProps.recType; + (apiObject as any).id = apiObject.id.toString(); + return apiObject; + } + + public getSchema(): Schema { + return new schema.Entity("user", { + }); + } + + public *toInlined(entityId?: string | null) { + if (!entityId) {return undefined; } + const entity = yield select(apiEntityUserSelector, {id: entityId}); + if (!entity) {return undefined; } + + const { + recType, + ...unchangedProperties + } = entity; + + const entityProperties = { + } + + return UserRecord({ + ...unchangedProperties, + ...entityProperties + }); + } + + public *toInlinedArray(entityIds: List | null) { + if (!entityIds) {return null; } + let entities = List(); + for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) { + const entity = yield call(this.toInlined, entityIds.get(entityIndex)); + if (entity) { + entities.push(entity); + } + } + return entities; + } + + public toApi(record: UserRecord): User { + const apiObject = super.toApi(record); + apiObject.id = parseFloat(record.id); + return apiObject; + } +} + +export const userRecordUtils = new UserRecordUtils(); + +export const apiEntitiesUserSelector = (state: any) => getApiEntitiesState(state).user as Map; +export const apiEntityUserSelector = (state: any, {id}: {id?: string | null}) => id ? apiEntitiesUserSelector(state).get(id) : undefined; + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/WarningCode.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/WarningCode.ts new file mode 100644 index 00000000000..f0b6dfe654a --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/WarningCode.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Warning code returned when a potential problem is detected + * @export + * @enum {string} + */ +export enum WarningCode { + ReduceVolumeRangeToAvoidLargeSteps = 'Reduce_Volume_Range_To_Avoid_Large_Steps', + RaiseAmplifierVolume = 'Raise_Amplifier_Volume', + NoVolumeRangeSpecified = 'No_Volume_Range_Specified' +} + +export function WarningCodeFromJSON(json: any): WarningCode { + return WarningCodeFromJSONTyped(json, false); +} + +export function WarningCodeFromJSONTyped(json: any, ignoreDiscriminator: boolean): WarningCode { + return json as WarningCode; +} + +export function WarningCodeToJSON(value?: WarningCode | null): any { + return value as any; +} + diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/WarningCodeRecord.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/WarningCodeRecord.ts new file mode 100644 index 00000000000..65fbcfab763 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/WarningCodeRecord.ts @@ -0,0 +1 @@ +// This file is not needed and was generated only because of how codegen is built... Enums do not need to be converted to Records and can be used directly. diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/index.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/index.ts new file mode 100644 index 00000000000..6881bb9feda --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/index.ts @@ -0,0 +1,41 @@ +export * from './BehaviorType'; +export * from './Category'; +export * from './CategoryRecord'; +export * from './DefaultMetaOnlyResponse'; +export * from './DefaultMetaOnlyResponseRecord'; +export * from './DeploymentRequestStatus'; +export * from './ErrorCode'; +export * from './FindPetsByStatusResponse'; +export * from './FindPetsByStatusResponseRecord'; +export * from './FindPetsByUserResponse'; +export * from './FindPetsByUserResponseRecord'; +export * from './GetBehaviorPermissionsResponse'; +export * from './GetBehaviorPermissionsResponseRecord'; +export * from './GetBehaviorTypeResponse'; +export * from './GetBehaviorTypeResponseRecord'; +export * from './GetMatchingPartsResponse'; +export * from './GetMatchingPartsResponseRecord'; +export * from './GetPetPartTypeResponse'; +export * from './GetPetPartTypeResponseRecord'; +export * from './ItemId'; +export * from './ItemIdRecord'; +export * from './MatchingParts'; +export * from './MatchingPartsRecord'; +export * from './ModelApiResponse'; +export * from './ModelApiResponseRecord'; +export * from './ModelError'; +export * from './ModelErrorRecord'; +export * from './Order'; +export * from './OrderRecord'; +export * from './Part'; +export * from './PartRecord'; +export * from './Pet'; +export * from './PetRecord'; +export * from './PetPartType'; +export * from './ResponseMeta'; +export * from './ResponseMetaRecord'; +export * from './Tag'; +export * from './TagRecord'; +export * from './User'; +export * from './UserRecord'; +export * from './WarningCode'; diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/runtime.ts new file mode 100644 index 00000000000..da5d9059bad --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/runtime.ts @@ -0,0 +1,319 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export const BASE_PATH = "http://petstore.swagger.io/v2".replace(/\/+$/, ""); + +const isBlob = (value: any) => typeof Blob !== 'undefined' && value instanceof Blob; + +/** + * This is the base class for all generated API classes. + */ +export class BaseAPI { + + private middleware: Middleware[]; + + constructor(protected configuration = new Configuration()) { + this.middleware = configuration.middleware; + } + + withMiddleware(this: T, ...middlewares: Middleware[]) { + const next = this.clone(); + next.middleware = next.middleware.concat(...middlewares); + return next; + } + + withPreMiddleware(this: T, ...preMiddlewares: Array) { + const middlewares = preMiddlewares.map((pre) => ({ pre })); + return this.withMiddleware(...middlewares); + } + + withPostMiddleware(this: T, ...postMiddlewares: Array) { + const middlewares = postMiddlewares.map((post) => ({ post })); + return this.withMiddleware(...middlewares); + } + + protected async request(context: RequestOpts): Promise { + const { url, init } = this.createFetchParams(context); + const response = await this.fetchApi(url, init); + if (response.status >= 200 && response.status < 300) { + return response; + } + throw response; + } + + private createFetchParams(context: RequestOpts) { + let url = this.configuration.basePath + context.path; + if (context.query !== undefined && Object.keys(context.query).length !== 0) { + // only add the querystring to the URL if there are query parameters. + // this is done to avoid urls ending with a "?" character which buggy webservers + // do not handle correctly sometimes. + url += '?' + this.configuration.queryParamsStringify(context.query); + } + const body = ((typeof FormData !== "undefined" && context.body instanceof FormData) || context.body instanceof URLSearchParams || isBlob(context.body)) + ? context.body + : JSON.stringify(context.body); + + const headers = Object.assign({}, this.configuration.headers, context.headers); + const init = { + method: context.method, + headers: headers, + body, + credentials: this.configuration.credentials + }; + return { url, init }; + } + + private fetchApi = async (url: string, init: RequestInit) => { + let fetchParams = { url, init }; + for (const middleware of this.middleware) { + if (middleware.pre) { + fetchParams = await middleware.pre({ + fetch: this.fetchApi, + ...fetchParams, + }) || fetchParams; + } + } + let response = await this.configuration.fetchApi(fetchParams.url, fetchParams.init); + for (const middleware of this.middleware) { + if (middleware.post) { + response = await middleware.post({ + fetch: this.fetchApi, + url, + init, + response: response.clone(), + }) || response; + } + } + return response; + } + + /** + * Create a shallow clone of `this` by constructing a new instance + * and then shallow cloning data members. + */ + private clone(this: T): T { + const constructor = this.constructor as any; + const next = new constructor(this.configuration); + next.middleware = this.middleware.slice(); + return next; + } +}; + +export class RequiredError extends Error { + name: "RequiredError" = "RequiredError"; + constructor(public field: string, msg?: string) { + super(msg); + } +} + +export const COLLECTION_FORMATS = { + csv: ",", + ssv: " ", + tsv: "\t", + pipes: "|", +}; + +export type FetchAPI = WindowOrWorkerGlobalScope['fetch']; + +export interface ConfigurationParameters { + basePath?: string; // override base path + fetchApi?: FetchAPI; // override for fetch implementation + middleware?: Middleware[]; // middleware to apply before/after fetch requests + queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings + username?: string; // parameter for basic security + password?: string; // parameter for basic security + apiKey?: string | ((name: string) => string); // parameter for apiKey security + accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + headers?: HTTPHeaders; //header params we want to use on every request + credentials?: RequestCredentials; //value for the credentials param we want to use on each request +} + +export class Configuration { + constructor(private configuration: ConfigurationParameters = {}) {} + + get basePath(): string { + return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH; + } + + get fetchApi(): FetchAPI { + return this.configuration.fetchApi || window.fetch.bind(window); + } + + get middleware(): Middleware[] { + return this.configuration.middleware || []; + } + + get queryParamsStringify(): (params: HTTPQuery) => string { + return this.configuration.queryParamsStringify || querystring; + } + + get username(): string | undefined { + return this.configuration.username; + } + + get password(): string | undefined { + return this.configuration.password; + } + + get apiKey(): ((name: string) => string) | undefined { + const apiKey = this.configuration.apiKey; + if (apiKey) { + return typeof apiKey === 'function' ? apiKey : () => apiKey; + } + return undefined; + } + + get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + const accessToken = this.configuration.accessToken; + if (accessToken) { + return typeof accessToken === 'function' ? accessToken : () => accessToken; + } + return undefined; + } + + get headers(): HTTPHeaders | undefined { + return this.configuration.headers; + } + + get credentials(): RequestCredentials | undefined { + return this.configuration.credentials; + } +} + +export type Json = any; +export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD'; +export type HTTPHeaders = { [key: string]: string }; +export type HTTPQuery = { [key: string]: string | number | null | boolean | Array | HTTPQuery }; +export type HTTPBody = Json | FormData | URLSearchParams; +export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; + +export interface FetchParams { + url: string; + init: RequestInit; +} + +export interface RequestOpts { + path: string; + method: HTTPMethod; + headers: HTTPHeaders; + query?: HTTPQuery; + body?: HTTPBody; +} + +export function exists(json: any, key: string) { + const value = json[key]; + return value !== null && value !== undefined; +} + +export function querystring(params: HTTPQuery, prefix: string = ''): string { + return Object.keys(params) + .map((key) => { + const fullKey = prefix + (prefix.length ? `[${key}]` : key); + const value = params[key]; + if (value instanceof Array) { + const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue))) + .join(`&${encodeURIComponent(fullKey)}=`); + return `${encodeURIComponent(fullKey)}=${multiValue}`; + } + if (value instanceof Date) { + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`; + } + if (value instanceof Object) { + return querystring(value as HTTPQuery, fullKey); + } + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; + }) + .filter(part => part.length > 0) + .join('&'); +} + +export function mapValues(data: any, fn: (item: any) => any) { + return Object.keys(data).reduce( + (acc, key) => ({ ...acc, [key]: fn(data[key]) }), + {} + ); +} + +export function canConsumeForm(consumes: Consume[]): boolean { + for (const consume of consumes) { + if ('multipart/form-data' === consume.contentType) { + return true; + } + } + return false; +} + +export interface Consume { + contentType: string +} + +export interface RequestContext { + fetch: FetchAPI; + url: string; + init: RequestInit; +} + +export interface ResponseContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + response: Response; +} + +export interface Middleware { + pre?(context: RequestContext): Promise; + post?(context: ResponseContext): Promise; +} + +export interface ApiResponse { + raw: Response; + value(): Promise; +} + +export interface ResponseTransformer { + (json: any): T; +} + +export class JSONApiResponse { + constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} + + async value(): Promise { + return this.transformer(await this.raw.json()); + } +} + +export class VoidApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return undefined; + } +} + +export class BlobApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.blob(); + }; +} + +export class TextApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.text(); + }; +} diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/runtimeSagasAndRecords.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/runtimeSagasAndRecords.ts new file mode 100644 index 00000000000..e182521fac3 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/runtimeSagasAndRecords.ts @@ -0,0 +1,120 @@ +/* tslint:disable */ +/* eslint-disable */ + +import {fromJS as originalFromJS, isIndexed, List, Map as ImmMap, RecordOf} from 'immutable'; +import {normalize, NormalizedSchema, schema, Schema} from "normalizr"; +import {ActionDefinition, createAction} from "redux-ts-simple"; + +export const knownRecordFactories = new Map(); +export const knownIndexedSetByKey: (string | number)[] = []; + +export function appFromJS(any: any): any { + return originalFromJS(any, (key, value) => { + if (isIndexed(value)) { + return knownIndexedSetByKey.indexOf(key) !== -1 ? value.toSet() : value.toList(); + } // we're reviving an array -> it's a List + const MatchingType = knownRecordFactories.get(value.get('recType')) as { new(input?: any): any }; // check if we know a Record with this type + if (MatchingType) { + return new MatchingType(value); + } + return value.toMap(); // no matching Record type found -> it's a plain old Map + }); +} + +export type NormalizedRecordEntity = NormalizedSchema<{ [key: string]: Map> }, string>; +export type NormalizedRecordEntities = NormalizedSchema<{ [key: string]: Map> }, List>; + +export abstract class ApiRecordUtils> { + public abstract normalize(apiObject: TAPI, asEntity?: boolean): any; + + public getSchema(): Schema { + console.log("Entity mode not supported on this record."); + return new schema.Entity("entityNotSupported"); + } + + public normalizeArray(apiObjectArray: TAPI[], asEntity?: boolean): TAPI[] { + apiObjectArray.forEach(apiObject => this.normalize(apiObject, asEntity)); + return apiObjectArray; + } + + public normalizeAsEntities(apiObject: TAPI): NormalizedSchema { + const normalized = this.normalize(apiObject, true); + return normalize(normalized, this.getSchema()); + } + + public normalizeArrayAsEntities(apiObject: TAPI[]): NormalizedSchema { + const normalized = this.normalizeArray(apiObject, true); + return normalize(normalized, new schema.Array(this.getSchema())); + } + + public fromApi(apiObject: TAPI): TREC { + return appFromJS(this.normalize(apiObject)); + } + + public fromApiArray(apiObjectArray: TAPI[]): List { + this.normalizeArray(apiObjectArray); + return appFromJS(apiObjectArray); + } + + public fromApiAsEntities(apiObject: TAPI): NormalizedRecordEntity { + return ApiRecordUtils.toNormalizedRecordEntities(this.normalizeAsEntities(apiObject), false); + } + + public fromApiArrayAsEntities(apiObject: TAPI[]): NormalizedRecordEntities { + return ApiRecordUtils.toNormalizedRecordEntities(this.normalizeArrayAsEntities(apiObject), true); + } + + public toApi(record: TREC): TAPI { + const apiObject = record.toJS(); + delete apiObject.recType; + return apiObject; + } + + public toApiArray(records: List): TAPI[] { + return records.map(record => this.toApi(record)).toArray(); + } + + public static toNormalizedRecordEntities(normalizedAsEntities: any, forArray: boolean) { + const entities = normalizedAsEntities.entities; + for (const entityKey of Object.keys(entities)) { + entities[entityKey] = appFromJS(entities[entityKey]); + } + normalizedAsEntities.result = appFromJS(normalizedAsEntities.result || (forArray ? "" : [])); + return normalizedAsEntities; + } +} + +export const allApiActionFailures: SagaActionDefinition[] = []; + +export interface BaseEntitySupportPayloadApiAction { + toInlined?: boolean; + toEntities?: boolean; + markErrorsAsHandled?: boolean; +} + +export interface BasePayloadApiAction { + markErrorsAsHandled?: boolean; +} + +export interface SagaActionDefinition extends ActionDefinition { + toString: () => string; +} + +export function createSagaAction(type: string, options?: { doNotAutoRegisterFailure?: boolean, namespace?: string }): SagaActionDefinition { + const {doNotAutoRegisterFailure, namespace} = options || {} as any; + let actionDefinition = createAction(namespace ? `${namespace}-${type}` : type); + (actionDefinition as any).toString = () => actionDefinition.type; + if (type.endsWith("Failure") && !doNotAutoRegisterFailure) { + allApiActionFailures.push(actionDefinition); + } + return actionDefinition; +} + +export let apiCall: any>(context: Ctx, fn: Fn, ...args: Parameters) => Generator; + +export function setApiCall(apiCallFc: any>(context: Ctx, fn: Fn, ...args: Parameters) => Generator) { + console.log("init apiCall"); + apiCall = apiCallFc; +} + +export const normalizedEntities = createSagaAction("normalizedEntities"); \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/tsconfig.json b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/tsconfig.json new file mode 100644 index 00000000000..5047f4d59a3 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "declaration": true, + "target": "es6", + "strict": true, + "module": "commonjs", + "moduleResolution": "node", + "outDir": "dist", + "typeRoots": [ + "node_modules/@types" + ] + }, + "exclude": [ + "dist", + "node_modules" + ] +} diff --git a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/package.json b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/package.json index 96268c493a5..232f78295b2 100644 --- a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/package.json +++ b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/package.json @@ -10,7 +10,7 @@ "prepare": "npm run build" }, "devDependencies": { - "typescript": "^3.6" + "typescript": "^3.9.5" }, "publishConfig": { "registry": "https://skimdb.npmjs.com/registry" diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Category.ts b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Category.ts new file mode 100644 index 00000000000..faf9aabb9de --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Category.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * A category for a pet + * @export + * @interface Category + */ +export interface Category { + /** + * + * @type {number} + * @memberof Category + */ + id?: number; + /** + * + * @type {string} + * @memberof Category + */ + name?: string; +} + +export function CategoryFromJSON(json: any): Category { + return CategoryFromJSONTyped(json, false); +} + +export function CategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): Category { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': !exists(json, 'name') ? undefined : json['name'], + }; +} + +export function CategoryToJSON(value?: Category | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'name': value.name, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/ModelApiResponse.ts b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/ModelApiResponse.ts new file mode 100644 index 00000000000..63fa57adc03 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/ModelApiResponse.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * Describes the result of uploading an image resource + * @export + * @interface ModelApiResponse + */ +export interface ModelApiResponse { + /** + * + * @type {number} + * @memberof ModelApiResponse + */ + code?: number; + /** + * + * @type {string} + * @memberof ModelApiResponse + */ + type?: string; + /** + * + * @type {string} + * @memberof ModelApiResponse + */ + message?: string; +} + +export function ModelApiResponseFromJSON(json: any): ModelApiResponse { + return ModelApiResponseFromJSONTyped(json, false); +} + +export function ModelApiResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelApiResponse { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'code': !exists(json, 'code') ? undefined : json['code'], + 'type': !exists(json, 'type') ? undefined : json['type'], + 'message': !exists(json, 'message') ? undefined : json['message'], + }; +} + +export function ModelApiResponseToJSON(value?: ModelApiResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'code': value.code, + 'type': value.type, + 'message': value.message, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Order.ts new file mode 100644 index 00000000000..104c3157f61 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Order.ts @@ -0,0 +1,107 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * An order for a pets from the pet store + * @export + * @interface Order + */ +export interface Order { + /** + * + * @type {number} + * @memberof Order + */ + id?: number; + /** + * + * @type {number} + * @memberof Order + */ + petId?: number; + /** + * + * @type {number} + * @memberof Order + */ + quantity?: number; + /** + * + * @type {Date} + * @memberof Order + */ + shipDate?: Date; + /** + * Order Status + * @type {string} + * @memberof Order + */ + status?: OrderStatusEnum; + /** + * + * @type {boolean} + * @memberof Order + */ + complete?: boolean; +} + +export function OrderFromJSON(json: any): Order { + return OrderFromJSONTyped(json, false); +} + +export function OrderFromJSONTyped(json: any, ignoreDiscriminator: boolean): Order { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'petId': !exists(json, 'petId') ? undefined : json['petId'], + 'quantity': !exists(json, 'quantity') ? undefined : json['quantity'], + 'shipDate': !exists(json, 'shipDate') ? undefined : (new Date(json['shipDate'])), + 'status': !exists(json, 'status') ? undefined : json['status'], + 'complete': !exists(json, 'complete') ? undefined : json['complete'], + }; +} + +export function OrderToJSON(value?: Order | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'petId': value.petId, + 'quantity': value.quantity, + 'shipDate': value.shipDate === undefined ? undefined : (value.shipDate.toISOString()), + 'status': value.status, + 'complete': value.complete, + }; +} + +/** +* @export +* @enum {string} +*/ +export enum OrderStatusEnum { + Placed = 'placed', + Approved = 'approved', + Delivered = 'delivered' +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Pet.ts new file mode 100644 index 00000000000..7e084c084a9 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Pet.ts @@ -0,0 +1,118 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import { + Category, + CategoryFromJSON, + CategoryFromJSONTyped, + CategoryToJSON, + Tag, + TagFromJSON, + TagFromJSONTyped, + TagToJSON, +} from './'; + +/** + * A pet for sale in the pet store + * @export + * @interface Pet + */ +export interface Pet { + /** + * + * @type {number} + * @memberof Pet + */ + id?: number; + /** + * + * @type {Category} + * @memberof Pet + */ + category?: Category; + /** + * + * @type {string} + * @memberof Pet + */ + name: string; + /** + * + * @type {Array} + * @memberof Pet + */ + photoUrls: Array; + /** + * + * @type {Array} + * @memberof Pet + */ + tags?: Array; + /** + * pet status in the store + * @type {string} + * @memberof Pet + */ + status?: PetStatusEnum; +} + +export function PetFromJSON(json: any): Pet { + return PetFromJSONTyped(json, false); +} + +export function PetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pet { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'category': !exists(json, 'category') ? undefined : CategoryFromJSON(json['category']), + 'name': json['name'], + 'photoUrls': json['photoUrls'], + 'tags': !exists(json, 'tags') ? undefined : ((json['tags'] as Array).map(TagFromJSON)), + 'status': !exists(json, 'status') ? undefined : json['status'], + }; +} + +export function PetToJSON(value?: Pet | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'category': CategoryToJSON(value.category), + 'name': value.name, + 'photoUrls': value.photoUrls, + 'tags': value.tags === undefined ? undefined : ((value.tags as Array).map(TagToJSON)), + 'status': value.status, + }; +} + +/** +* @export +* @enum {string} +*/ +export enum PetStatusEnum { + Available = 'available', + Pending = 'pending', + Sold = 'sold' +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Tag.ts b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Tag.ts new file mode 100644 index 00000000000..8ea5895e79b --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/Tag.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * A tag for a pet + * @export + * @interface Tag + */ +export interface Tag { + /** + * + * @type {number} + * @memberof Tag + */ + id?: number; + /** + * + * @type {string} + * @memberof Tag + */ + name?: string; +} + +export function TagFromJSON(json: any): Tag { + return TagFromJSONTyped(json, false); +} + +export function TagFromJSONTyped(json: any, ignoreDiscriminator: boolean): Tag { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': !exists(json, 'name') ? undefined : json['name'], + }; +} + +export function TagToJSON(value?: Tag | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'name': value.name, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/User.ts b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/User.ts new file mode 100644 index 00000000000..841b50d0fa2 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/User.ts @@ -0,0 +1,113 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * 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 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * A User who is purchasing from the pet store + * @export + * @interface User + */ +export interface User { + /** + * + * @type {number} + * @memberof User + */ + id?: number; + /** + * + * @type {string} + * @memberof User + */ + username?: string; + /** + * + * @type {string} + * @memberof User + */ + firstName?: string; + /** + * + * @type {string} + * @memberof User + */ + lastName?: string; + /** + * + * @type {string} + * @memberof User + */ + email?: string; + /** + * + * @type {string} + * @memberof User + */ + password?: string; + /** + * + * @type {string} + * @memberof User + */ + phone?: string; + /** + * User Status + * @type {number} + * @memberof User + */ + userStatus?: number; +} + +export function UserFromJSON(json: any): User { + return UserFromJSONTyped(json, false); +} + +export function UserFromJSONTyped(json: any, ignoreDiscriminator: boolean): User { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'username': !exists(json, 'username') ? undefined : json['username'], + 'firstName': !exists(json, 'firstName') ? undefined : json['firstName'], + 'lastName': !exists(json, 'lastName') ? undefined : json['lastName'], + 'email': !exists(json, 'email') ? undefined : json['email'], + 'password': !exists(json, 'password') ? undefined : json['password'], + 'phone': !exists(json, 'phone') ? undefined : json['phone'], + 'userStatus': !exists(json, 'userStatus') ? undefined : json['userStatus'], + }; +} + +export function UserToJSON(value?: User | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'username': value.username, + 'firstName': value.firstName, + 'lastName': value.lastName, + 'email': value.email, + 'password': value.password, + 'phone': value.phone, + 'userStatus': value.userStatus, + }; +} + + diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/index.ts b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/index.ts index 92ab264fa9c..099f52268b7 100644 --- a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/index.ts +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/index.ts @@ -1,4 +1,3 @@ - /** * A category for a pet * @export @@ -18,7 +17,6 @@ export interface Category { */ name?: string; } - /** * Describes the result of uploading an image resource * @export @@ -44,7 +42,6 @@ export interface ModelApiResponse { */ message?: string; } - /** * An order for a pets from the pet store * @export @@ -98,7 +95,6 @@ export enum OrderStatusEnum { Approved = 'approved', Delivered = 'delivered' } - /** * A pet for sale in the pet store * @export @@ -152,7 +148,6 @@ export enum PetStatusEnum { Pending = 'pending', Sold = 'sold' } - /** * A tag for a pet * @export @@ -172,7 +167,6 @@ export interface Tag { */ name?: string; } - /** * A User who is purchasing from the pet store * @export From 44c1fee3e2a223ce0ba4423675a82b3fabb89b1c Mon Sep 17 00:00:00 2001 From: Gabriel Rohden Date: Wed, 23 Jun 2021 23:24:28 -0300 Subject: [PATCH 160/192] [dart] fix some compilation issues and added casts for analyzer implicit-casts flag (#8244) * fix: missing dart casts and analyzer issues * chore: regenerate dart template files * refactor: remove unneeded implicit-casts:false and regenerate sources * chore: regenerate templates after merge * chore: regenerate dart pet store codes --- .../codegen/languages/DartClientCodegen.java | 1 + .../resources/dart2/analysis_options.mustache | 3 +++ .../main/resources/dart2/api_client.mustache | 6 ++--- .../native/native_class.mustache | 24 +++++++++++++------ .../.openapi-generator/FILES | 1 + .../petstore_client_lib/analysis_options.yaml | 3 +++ .../petstore_client_lib/lib/api_client.dart | 6 ++--- .../lib/model/api_response.dart | 12 +++++----- .../lib/model/category.dart | 12 +++++----- .../petstore_client_lib/lib/model/order.dart | 12 +++++----- .../petstore_client_lib/lib/model/pet.dart | 12 +++++----- .../petstore_client_lib/lib/model/tag.dart | 12 +++++----- .../petstore_client_lib/lib/model/user.dart | 12 +++++----- .../.openapi-generator/FILES | 1 + .../analysis_options.yaml | 3 +++ .../lib/api_client.dart | 6 ++--- .../model/additional_properties_class.dart | 14 +++++------ .../lib/model/animal.dart | 12 +++++----- .../lib/model/api_response.dart | 12 +++++----- .../model/array_of_array_of_number_only.dart | 12 +++++----- .../lib/model/array_of_number_only.dart | 12 +++++----- .../lib/model/array_test.dart | 12 +++++----- .../lib/model/capitalization.dart | 12 +++++----- .../lib/model/cat.dart | 12 +++++----- .../lib/model/cat_all_of.dart | 12 +++++----- .../lib/model/category.dart | 12 +++++----- .../lib/model/class_model.dart | 12 +++++----- .../lib/model/dog.dart | 12 +++++----- .../lib/model/dog_all_of.dart | 12 +++++----- .../lib/model/enum_arrays.dart | 12 +++++----- .../lib/model/enum_test.dart | 12 +++++----- .../lib/model/file_schema_test_class.dart | 12 +++++----- .../lib/model/foo.dart | 12 +++++----- .../lib/model/format_test.dart | 12 +++++----- .../lib/model/has_only_read_only.dart | 12 +++++----- .../lib/model/health_check_result.dart | 12 +++++----- .../lib/model/inline_response_default.dart | 12 +++++----- .../lib/model/map_test.dart | 14 +++++------ ...rties_and_additional_properties_class.dart | 16 ++++++------- .../lib/model/model200_response.dart | 12 +++++----- .../lib/model/model_client.dart | 12 +++++----- .../lib/model/model_file.dart | 12 +++++----- .../lib/model/model_list.dart | 12 +++++----- .../lib/model/model_return.dart | 12 +++++----- .../lib/model/name.dart | 12 +++++----- .../lib/model/nullable_class.dart | 24 +++++++------------ .../lib/model/number_only.dart | 12 +++++----- .../lib/model/order.dart | 12 +++++----- .../lib/model/outer_composite.dart | 12 +++++----- .../outer_object_with_enum_property.dart | 12 +++++----- .../lib/model/pet.dart | 12 +++++----- .../lib/model/read_only_first.dart | 12 +++++----- .../lib/model/special_model_name.dart | 12 +++++----- .../lib/model/tag.dart | 12 +++++----- .../lib/model/user.dart | 12 +++++----- .../.openapi-generator/FILES | 1 + .../analysis_options.yaml | 3 +++ .../lib/api_client.dart | 6 ++--- 58 files changed, 321 insertions(+), 303 deletions(-) create mode 100644 modules/openapi-generator/src/main/resources/dart2/analysis_options.mustache create mode 100644 samples/openapi3/client/petstore/dart2/petstore_client_lib/analysis_options.yaml create mode 100644 samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/analysis_options.yaml create mode 100644 samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/analysis_options.yaml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java index 589ef137f34..b26f23891c0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartClientCodegen.java @@ -64,6 +64,7 @@ public class DartClientCodegen extends AbstractDartCodegen { final String libFolder = sourceFolder + File.separator + "lib"; supportingFiles.add(new SupportingFile("pubspec.mustache", "", "pubspec.yaml")); + supportingFiles.add(new SupportingFile("analysis_options.mustache", "", "analysis_options.yaml")); supportingFiles.add(new SupportingFile("api_client.mustache", libFolder, "api_client.dart")); supportingFiles.add(new SupportingFile("api_exception.mustache", libFolder, "api_exception.dart")); supportingFiles.add(new SupportingFile("api_helper.mustache", libFolder, "api_helper.dart")); diff --git a/modules/openapi-generator/src/main/resources/dart2/analysis_options.mustache b/modules/openapi-generator/src/main/resources/dart2/analysis_options.mustache new file mode 100644 index 00000000000..83d5a10bd7b --- /dev/null +++ b/modules/openapi-generator/src/main/resources/dart2/analysis_options.mustache @@ -0,0 +1,3 @@ +analyzer: + strong-mode: + implicit-casts: true diff --git a/modules/openapi-generator/src/main/resources/dart2/api_client.mustache b/modules/openapi-generator/src/main/resources/dart2/api_client.mustache index f3af060d514..d7f90713d5f 100644 --- a/modules/openapi-generator/src/main/resources/dart2/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/api_client.mustache @@ -65,7 +65,7 @@ class ApiClient { Future invokeAPI( String path, String method, - Iterable queryParams, + List queryParams, Object body, Map headerParams, Map formParams, @@ -177,13 +177,13 @@ class ApiClient { List queryParams, Map headerParams, ) { - authNames.forEach((authName) { + for(final authName in authNames) { final auth = _authentications[authName]; if (auth == null) { throw ArgumentError('Authentication undefined: $authName'); } auth.applyToParams(queryParams, headerParams); - }); + } } {{#native_serialization}} diff --git a/modules/openapi-generator/src/main/resources/dart2/serialization/native/native_class.mustache b/modules/openapi-generator/src/main/resources/dart2/serialization/native/native_class.mustache index 0e4520d3e98..1d599915a0a 100644 --- a/modules/openapi-generator/src/main/resources/dart2/serialization/native/native_class.mustache +++ b/modules/openapi-generator/src/main/resources/dart2/serialization/native/native_class.mustache @@ -132,9 +132,19 @@ class {{{classname}}} { {{/items.complexType}} {{/items.isArray}} {{^items.isArray}} + {{#items.isMap}} {{{name}}}: json[r'{{{baseName}}}'] == null ? null - : {{{complexType}}}.mapFromJson(json[r'{{{baseName}}}']), + {{#items.complexType}} + : {{items.complexType}}.mapFromJson(json[r'{{{baseName}}}']), + {{/items.complexType}} + {{^items.complexType}} + : (json[r'{{{baseName}}}'] as Map).cast(), + {{/items.complexType}} + {{/items.isMap}} + {{^items.isMap}} + {{{name}}}: json[r'{{{baseName}}}'] + {{/items.isMap}} {{/items.isArray}} {{/isMap}} {{^isMap}} @@ -189,12 +199,12 @@ class {{{classname}}} { static List<{{{classname}}}> listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : <{{{classname}}}>[] - : json.map((v) => {{{classname}}}.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => {{{classname}}}.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = {{{classname}}}.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = {{{classname}}}.fromJson(value)); } return map; } @@ -202,9 +212,9 @@ class {{{classname}}} { // maps a json object with a list of {{{classname}}}-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = {{{classname}}}.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = {{{classname}}}.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/FILES b/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/FILES index 7cc5afea821..733ecbe3062 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/FILES @@ -1,6 +1,7 @@ .gitignore .travis.yml README.md +analysis_options.yaml doc/ApiResponse.md doc/Category.md doc/Order.md diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/analysis_options.yaml b/samples/openapi3/client/petstore/dart2/petstore_client_lib/analysis_options.yaml new file mode 100644 index 00000000000..83d5a10bd7b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/analysis_options.yaml @@ -0,0 +1,3 @@ +analyzer: + strong-mode: + implicit-casts: true diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_client.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_client.dart index 35b984b86a1..37b6acfd4c6 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_client.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/api_client.dart @@ -58,7 +58,7 @@ class ApiClient { Future invokeAPI( String path, String method, - Iterable queryParams, + List queryParams, Object body, Map headerParams, Map formParams, @@ -168,13 +168,13 @@ class ApiClient { List queryParams, Map headerParams, ) { - authNames.forEach((authName) { + for(final authName in authNames) { final auth = _authentications[authName]; if (auth == null) { throw ArgumentError('Authentication undefined: $authName'); } auth.applyToParams(queryParams, headerParams); - }); + } } static dynamic _deserialize(dynamic value, String targetType, {bool growable}) { diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/api_response.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/api_response.dart index bd80caff35c..6bb070b7eeb 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/api_response.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/api_response.dart @@ -65,12 +65,12 @@ class ApiResponse { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => ApiResponse.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => ApiResponse.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = ApiResponse.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = ApiResponse.fromJson(value)); } return map; } @@ -78,9 +78,9 @@ class ApiResponse { // maps a json object with a list of ApiResponse-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = ApiResponse.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = ApiResponse.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/category.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/category.dart index c63ffb1734f..c1c25b5a078 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/category.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/category.dart @@ -56,12 +56,12 @@ class Category { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Category.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Category.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Category.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Category.fromJson(value)); } return map; } @@ -69,9 +69,9 @@ class Category { // maps a json object with a list of Category-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Category.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Category.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/order.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/order.dart index a7b01582664..4cf8b636f47 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/order.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/order.dart @@ -95,12 +95,12 @@ class Order { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Order.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Order.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Order.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Order.fromJson(value)); } return map; } @@ -108,9 +108,9 @@ class Order { // maps a json object with a list of Order-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Order.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Order.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart index ee8c7615986..267e1485b8b 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/pet.dart @@ -91,12 +91,12 @@ class Pet { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Pet.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Pet.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Pet.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Pet.fromJson(value)); } return map; } @@ -104,9 +104,9 @@ class Pet { // maps a json object with a list of Pet-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Pet.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Pet.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/tag.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/tag.dart index 63132f08a3a..0cd372910b9 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/tag.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/tag.dart @@ -56,12 +56,12 @@ class Tag { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Tag.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Tag.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Tag.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Tag.fromJson(value)); } return map; } @@ -69,9 +69,9 @@ class Tag { // maps a json object with a list of Tag-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Tag.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Tag.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/user.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/user.dart index bb512af491f..0eb3716fceb 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/user.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/lib/model/user.dart @@ -111,12 +111,12 @@ class User { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => User.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => User.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = User.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = User.fromJson(value)); } return map; } @@ -124,9 +124,9 @@ class User { // maps a json object with a list of User-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = User.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = User.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/FILES b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/FILES index 80d5a3a8fc8..a5fe5c494d6 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/FILES @@ -1,6 +1,7 @@ .gitignore .travis.yml README.md +analysis_options.yaml doc/AdditionalPropertiesClass.md doc/Animal.md doc/AnotherFakeApi.md diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/analysis_options.yaml b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/analysis_options.yaml new file mode 100644 index 00000000000..83d5a10bd7b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/analysis_options.yaml @@ -0,0 +1,3 @@ +analyzer: + strong-mode: + implicit-casts: true diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_client.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_client.dart index 0aa83cf0197..cac7efad3bb 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_client.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/api_client.dart @@ -61,7 +61,7 @@ class ApiClient { Future invokeAPI( String path, String method, - Iterable queryParams, + List queryParams, Object body, Map headerParams, Map formParams, @@ -171,13 +171,13 @@ class ApiClient { List queryParams, Map headerParams, ) { - authNames.forEach((authName) { + for(final authName in authNames) { final auth = _authentications[authName]; if (auth == null) { throw ArgumentError('Authentication undefined: $authName'); } auth.applyToParams(queryParams, headerParams); - }); + } } static dynamic _deserialize(dynamic value, String targetType, {bool growable}) { diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/additional_properties_class.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/additional_properties_class.dart index 9e021e550b0..b62ac79d3e2 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/additional_properties_class.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/additional_properties_class.dart @@ -54,18 +54,18 @@ class AdditionalPropertiesClass { (json[r'map_property'] as Map).cast(), mapOfMapProperty: json[r'map_of_map_property'] == null ? null - : Map.mapFromJson(json[r'map_of_map_property']), + : (json[r'map_of_map_property'] as Map).cast(), ); static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => AdditionalPropertiesClass.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => AdditionalPropertiesClass.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = AdditionalPropertiesClass.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = AdditionalPropertiesClass.fromJson(value)); } return map; } @@ -73,9 +73,9 @@ class AdditionalPropertiesClass { // maps a json object with a list of AdditionalPropertiesClass-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = AdditionalPropertiesClass.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = AdditionalPropertiesClass.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/animal.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/animal.dart index 9786d8358b2..ba9066e4ef7 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/animal.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/animal.dart @@ -54,12 +54,12 @@ class Animal { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Animal.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Animal.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Animal.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Animal.fromJson(value)); } return map; } @@ -67,9 +67,9 @@ class Animal { // maps a json object with a list of Animal-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Animal.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Animal.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/api_response.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/api_response.dart index bd80caff35c..6bb070b7eeb 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/api_response.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/api_response.dart @@ -65,12 +65,12 @@ class ApiResponse { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => ApiResponse.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => ApiResponse.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = ApiResponse.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = ApiResponse.fromJson(value)); } return map; } @@ -78,9 +78,9 @@ class ApiResponse { // maps a json object with a list of ApiResponse-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = ApiResponse.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = ApiResponse.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/array_of_array_of_number_only.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/array_of_array_of_number_only.dart index 7dac34b25c1..90ec9124de9 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/array_of_array_of_number_only.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/array_of_array_of_number_only.dart @@ -51,12 +51,12 @@ class ArrayOfArrayOfNumberOnly { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => ArrayOfArrayOfNumberOnly.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => ArrayOfArrayOfNumberOnly.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = ArrayOfArrayOfNumberOnly.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = ArrayOfArrayOfNumberOnly.fromJson(value)); } return map; } @@ -64,9 +64,9 @@ class ArrayOfArrayOfNumberOnly { // maps a json object with a list of ArrayOfArrayOfNumberOnly-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = ArrayOfArrayOfNumberOnly.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = ArrayOfArrayOfNumberOnly.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/array_of_number_only.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/array_of_number_only.dart index 7a1de48923a..19b93cc3d73 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/array_of_number_only.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/array_of_number_only.dart @@ -49,12 +49,12 @@ class ArrayOfNumberOnly { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => ArrayOfNumberOnly.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => ArrayOfNumberOnly.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = ArrayOfNumberOnly.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = ArrayOfNumberOnly.fromJson(value)); } return map; } @@ -62,9 +62,9 @@ class ArrayOfNumberOnly { // maps a json object with a list of ArrayOfNumberOnly-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = ArrayOfNumberOnly.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = ArrayOfNumberOnly.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/array_test.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/array_test.dart index 55b131a9e57..c911626fa13 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/array_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/array_test.dart @@ -75,12 +75,12 @@ class ArrayTest { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => ArrayTest.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => ArrayTest.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = ArrayTest.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = ArrayTest.fromJson(value)); } return map; } @@ -88,9 +88,9 @@ class ArrayTest { // maps a json object with a list of ArrayTest-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = ArrayTest.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = ArrayTest.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/capitalization.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/capitalization.dart index afab73b9769..7b60d37fd39 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/capitalization.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/capitalization.dart @@ -93,12 +93,12 @@ class Capitalization { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Capitalization.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Capitalization.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Capitalization.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Capitalization.fromJson(value)); } return map; } @@ -106,9 +106,9 @@ class Capitalization { // maps a json object with a list of Capitalization-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Capitalization.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Capitalization.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/cat.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/cat.dart index 704152151d8..94d0b96a9c7 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/cat.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/cat.dart @@ -63,12 +63,12 @@ class Cat { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Cat.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Cat.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Cat.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Cat.fromJson(value)); } return map; } @@ -76,9 +76,9 @@ class Cat { // maps a json object with a list of Cat-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Cat.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Cat.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/cat_all_of.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/cat_all_of.dart index 307e777da3d..e3fe4944874 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/cat_all_of.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/cat_all_of.dart @@ -47,12 +47,12 @@ class CatAllOf { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => CatAllOf.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => CatAllOf.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = CatAllOf.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = CatAllOf.fromJson(value)); } return map; } @@ -60,9 +60,9 @@ class CatAllOf { // maps a json object with a list of CatAllOf-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = CatAllOf.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = CatAllOf.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/category.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/category.dart index 59249c157a0..eddc54e7315 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/category.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/category.dart @@ -54,12 +54,12 @@ class Category { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Category.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Category.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Category.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Category.fromJson(value)); } return map; } @@ -67,9 +67,9 @@ class Category { // maps a json object with a list of Category-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Category.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Category.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/class_model.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/class_model.dart index 9192701eafd..927f01e06b6 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/class_model.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/class_model.dart @@ -47,12 +47,12 @@ class ClassModel { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => ClassModel.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => ClassModel.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = ClassModel.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = ClassModel.fromJson(value)); } return map; } @@ -60,9 +60,9 @@ class ClassModel { // maps a json object with a list of ClassModel-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = ClassModel.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = ClassModel.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/dog.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/dog.dart index eb08c1e227c..3a1efcb1c4f 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/dog.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/dog.dart @@ -63,12 +63,12 @@ class Dog { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Dog.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Dog.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Dog.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Dog.fromJson(value)); } return map; } @@ -76,9 +76,9 @@ class Dog { // maps a json object with a list of Dog-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Dog.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Dog.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/dog_all_of.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/dog_all_of.dart index 0199b8707d1..a77ba88b0bf 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/dog_all_of.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/dog_all_of.dart @@ -47,12 +47,12 @@ class DogAllOf { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => DogAllOf.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => DogAllOf.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = DogAllOf.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = DogAllOf.fromJson(value)); } return map; } @@ -60,9 +60,9 @@ class DogAllOf { // maps a json object with a list of DogAllOf-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = DogAllOf.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = DogAllOf.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/enum_arrays.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/enum_arrays.dart index f0e7b2417db..dc994bc308a 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/enum_arrays.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/enum_arrays.dart @@ -56,12 +56,12 @@ class EnumArrays { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => EnumArrays.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => EnumArrays.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = EnumArrays.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = EnumArrays.fromJson(value)); } return map; } @@ -69,9 +69,9 @@ class EnumArrays { // maps a json object with a list of EnumArrays-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = EnumArrays.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = EnumArrays.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/enum_test.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/enum_test.dart index ae432599c99..51a444f1cea 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/enum_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/enum_test.dart @@ -108,12 +108,12 @@ class EnumTest { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => EnumTest.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => EnumTest.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = EnumTest.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = EnumTest.fromJson(value)); } return map; } @@ -121,9 +121,9 @@ class EnumTest { // maps a json object with a list of EnumTest-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = EnumTest.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = EnumTest.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/file_schema_test_class.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/file_schema_test_class.dart index fb5f7593554..4f659cddafa 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/file_schema_test_class.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/file_schema_test_class.dart @@ -56,12 +56,12 @@ class FileSchemaTestClass { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => FileSchemaTestClass.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => FileSchemaTestClass.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = FileSchemaTestClass.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = FileSchemaTestClass.fromJson(value)); } return map; } @@ -69,9 +69,9 @@ class FileSchemaTestClass { // maps a json object with a list of FileSchemaTestClass-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = FileSchemaTestClass.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = FileSchemaTestClass.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/foo.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/foo.dart index 19994af4cfe..4100fa1fa04 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/foo.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/foo.dart @@ -47,12 +47,12 @@ class Foo { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Foo.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Foo.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Foo.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Foo.fromJson(value)); } return map; } @@ -60,9 +60,9 @@ class Foo { // maps a json object with a list of Foo-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Foo.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Foo.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/format_test.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/format_test.dart index f0f2236ba88..5f735c24f86 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/format_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/format_test.dart @@ -192,12 +192,12 @@ class FormatTest { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => FormatTest.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => FormatTest.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = FormatTest.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = FormatTest.fromJson(value)); } return map; } @@ -205,9 +205,9 @@ class FormatTest { // maps a json object with a list of FormatTest-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = FormatTest.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = FormatTest.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/has_only_read_only.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/has_only_read_only.dart index 2054a4594f3..dee44032840 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/has_only_read_only.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/has_only_read_only.dart @@ -56,12 +56,12 @@ class HasOnlyReadOnly { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => HasOnlyReadOnly.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => HasOnlyReadOnly.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = HasOnlyReadOnly.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = HasOnlyReadOnly.fromJson(value)); } return map; } @@ -69,9 +69,9 @@ class HasOnlyReadOnly { // maps a json object with a list of HasOnlyReadOnly-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = HasOnlyReadOnly.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = HasOnlyReadOnly.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/health_check_result.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/health_check_result.dart index 1ea8db9305c..06a044bb153 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/health_check_result.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/health_check_result.dart @@ -47,12 +47,12 @@ class HealthCheckResult { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => HealthCheckResult.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => HealthCheckResult.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = HealthCheckResult.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = HealthCheckResult.fromJson(value)); } return map; } @@ -60,9 +60,9 @@ class HealthCheckResult { // maps a json object with a list of HealthCheckResult-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = HealthCheckResult.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = HealthCheckResult.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/inline_response_default.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/inline_response_default.dart index c48b5c28e70..1cdee99a2de 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/inline_response_default.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/inline_response_default.dart @@ -47,12 +47,12 @@ class InlineResponseDefault { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => InlineResponseDefault.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => InlineResponseDefault.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = InlineResponseDefault.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = InlineResponseDefault.fromJson(value)); } return map; } @@ -60,9 +60,9 @@ class InlineResponseDefault { // maps a json object with a list of InlineResponseDefault-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = InlineResponseDefault.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = InlineResponseDefault.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/map_test.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/map_test.dart index 9843c474910..23a54bd34ae 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/map_test.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/map_test.dart @@ -67,7 +67,7 @@ class MapTest { : MapTest( mapMapOfString: json[r'map_map_of_string'] == null ? null - : Map.mapFromJson(json[r'map_map_of_string']), + : (json[r'map_map_of_string'] as Map).cast(), mapOfEnumString: json[r'map_of_enum_string'] == null ? null : (json[r'map_of_enum_string'] as Map).cast(), @@ -82,12 +82,12 @@ class MapTest { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => MapTest.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => MapTest.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = MapTest.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = MapTest.fromJson(value)); } return map; } @@ -95,9 +95,9 @@ class MapTest { // maps a json object with a list of MapTest-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = MapTest.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = MapTest.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart index b9a202de856..053427aafd1 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/mixed_properties_and_additional_properties_class.dart @@ -61,20 +61,18 @@ class MixedPropertiesAndAdditionalPropertiesClass { dateTime: json[r'dateTime'] == null ? null : DateTime.parse(json[r'dateTime']), - map: json[r'map'] == null - ? null - : Animal.mapFromJson(json[r'map']), + map: json[r'map'] ); static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => MixedPropertiesAndAdditionalPropertiesClass.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => MixedPropertiesAndAdditionalPropertiesClass.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = MixedPropertiesAndAdditionalPropertiesClass.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = MixedPropertiesAndAdditionalPropertiesClass.fromJson(value)); } return map; } @@ -82,9 +80,9 @@ class MixedPropertiesAndAdditionalPropertiesClass { // maps a json object with a list of MixedPropertiesAndAdditionalPropertiesClass-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = MixedPropertiesAndAdditionalPropertiesClass.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = MixedPropertiesAndAdditionalPropertiesClass.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model200_response.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model200_response.dart index 15ecf90f50a..169581175eb 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model200_response.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model200_response.dart @@ -56,12 +56,12 @@ class Model200Response { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Model200Response.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Model200Response.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Model200Response.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Model200Response.fromJson(value)); } return map; } @@ -69,9 +69,9 @@ class Model200Response { // maps a json object with a list of Model200Response-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Model200Response.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Model200Response.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_client.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_client.dart index 08b98859176..039517160be 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_client.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_client.dart @@ -47,12 +47,12 @@ class ModelClient { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => ModelClient.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => ModelClient.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = ModelClient.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = ModelClient.fromJson(value)); } return map; } @@ -60,9 +60,9 @@ class ModelClient { // maps a json object with a list of ModelClient-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = ModelClient.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = ModelClient.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_file.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_file.dart index 0ca3001c062..251cb11748b 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_file.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_file.dart @@ -48,12 +48,12 @@ class ModelFile { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => ModelFile.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => ModelFile.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = ModelFile.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = ModelFile.fromJson(value)); } return map; } @@ -61,9 +61,9 @@ class ModelFile { // maps a json object with a list of ModelFile-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = ModelFile.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = ModelFile.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_list.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_list.dart index 973198375ad..c269cec60cf 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_list.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_list.dart @@ -47,12 +47,12 @@ class ModelList { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => ModelList.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => ModelList.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = ModelList.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = ModelList.fromJson(value)); } return map; } @@ -60,9 +60,9 @@ class ModelList { // maps a json object with a list of ModelList-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = ModelList.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = ModelList.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_return.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_return.dart index 50c58ca70f1..b4a37d9f633 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_return.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/model_return.dart @@ -47,12 +47,12 @@ class ModelReturn { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => ModelReturn.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => ModelReturn.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = ModelReturn.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = ModelReturn.fromJson(value)); } return map; } @@ -60,9 +60,9 @@ class ModelReturn { // maps a json object with a list of ModelReturn-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = ModelReturn.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = ModelReturn.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/name.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/name.dart index 264c1a8c04d..9068f61d639 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/name.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/name.dart @@ -72,12 +72,12 @@ class Name { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Name.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Name.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Name.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Name.fromJson(value)); } return map; } @@ -85,9 +85,9 @@ class Name { // maps a json object with a list of Name-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Name.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Name.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/nullable_class.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/nullable_class.dart index 0295e97b0d2..f1df88a935a 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/nullable_class.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/nullable_class.dart @@ -144,26 +144,20 @@ class NullableClass { arrayNullableProp: Object.listFromJson(json[r'array_nullable_prop']), arrayAndItemsNullableProp: Object.listFromJson(json[r'array_and_items_nullable_prop']), arrayItemsNullable: Object.listFromJson(json[r'array_items_nullable']), - objectNullableProp: json[r'object_nullable_prop'] == null - ? null - : Object.mapFromJson(json[r'object_nullable_prop']), - objectAndItemsNullableProp: json[r'object_and_items_nullable_prop'] == null - ? null - : Object.mapFromJson(json[r'object_and_items_nullable_prop']), - objectItemsNullable: json[r'object_items_nullable'] == null - ? null - : Object.mapFromJson(json[r'object_items_nullable']), + objectNullableProp: json[r'object_nullable_prop'] + objectAndItemsNullableProp: json[r'object_and_items_nullable_prop'] + objectItemsNullable: json[r'object_items_nullable'] ); static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => NullableClass.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => NullableClass.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = NullableClass.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = NullableClass.fromJson(value)); } return map; } @@ -171,9 +165,9 @@ class NullableClass { // maps a json object with a list of NullableClass-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = NullableClass.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = NullableClass.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/number_only.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/number_only.dart index d710d3b50b2..16cc2514577 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/number_only.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/number_only.dart @@ -49,12 +49,12 @@ class NumberOnly { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => NumberOnly.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => NumberOnly.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = NumberOnly.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = NumberOnly.fromJson(value)); } return map; } @@ -62,9 +62,9 @@ class NumberOnly { // maps a json object with a list of NumberOnly-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = NumberOnly.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = NumberOnly.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/order.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/order.dart index a7b01582664..4cf8b636f47 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/order.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/order.dart @@ -95,12 +95,12 @@ class Order { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Order.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Order.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Order.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Order.fromJson(value)); } return map; } @@ -108,9 +108,9 @@ class Order { // maps a json object with a list of Order-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Order.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Order.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/outer_composite.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/outer_composite.dart index d2942660d23..c7aeb68f1ae 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/outer_composite.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/outer_composite.dart @@ -67,12 +67,12 @@ class OuterComposite { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => OuterComposite.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => OuterComposite.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = OuterComposite.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = OuterComposite.fromJson(value)); } return map; } @@ -80,9 +80,9 @@ class OuterComposite { // maps a json object with a list of OuterComposite-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = OuterComposite.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = OuterComposite.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/outer_object_with_enum_property.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/outer_object_with_enum_property.dart index 4d58d276284..accf401ed9a 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/outer_object_with_enum_property.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/outer_object_with_enum_property.dart @@ -45,12 +45,12 @@ class OuterObjectWithEnumProperty { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => OuterObjectWithEnumProperty.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => OuterObjectWithEnumProperty.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = OuterObjectWithEnumProperty.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = OuterObjectWithEnumProperty.fromJson(value)); } return map; } @@ -58,9 +58,9 @@ class OuterObjectWithEnumProperty { // maps a json object with a list of OuterObjectWithEnumProperty-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = OuterObjectWithEnumProperty.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = OuterObjectWithEnumProperty.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/pet.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/pet.dart index 47ef86dfcb2..3043edb921f 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/pet.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/pet.dart @@ -91,12 +91,12 @@ class Pet { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Pet.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Pet.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Pet.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Pet.fromJson(value)); } return map; } @@ -104,9 +104,9 @@ class Pet { // maps a json object with a list of Pet-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Pet.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Pet.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/read_only_first.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/read_only_first.dart index 3d8382c019e..b0eb02b6942 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/read_only_first.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/read_only_first.dart @@ -56,12 +56,12 @@ class ReadOnlyFirst { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => ReadOnlyFirst.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => ReadOnlyFirst.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = ReadOnlyFirst.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = ReadOnlyFirst.fromJson(value)); } return map; } @@ -69,9 +69,9 @@ class ReadOnlyFirst { // maps a json object with a list of ReadOnlyFirst-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = ReadOnlyFirst.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = ReadOnlyFirst.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/special_model_name.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/special_model_name.dart index 846ca82a7db..e43a6b267d2 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/special_model_name.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/special_model_name.dart @@ -47,12 +47,12 @@ class SpecialModelName { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => SpecialModelName.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => SpecialModelName.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = SpecialModelName.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = SpecialModelName.fromJson(value)); } return map; } @@ -60,9 +60,9 @@ class SpecialModelName { // maps a json object with a list of SpecialModelName-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = SpecialModelName.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = SpecialModelName.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/tag.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/tag.dart index 63132f08a3a..0cd372910b9 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/tag.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/tag.dart @@ -56,12 +56,12 @@ class Tag { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => Tag.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => Tag.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = Tag.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = Tag.fromJson(value)); } return map; } @@ -69,9 +69,9 @@ class Tag { // maps a json object with a list of Tag-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = Tag.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = Tag.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/user.dart b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/user.dart index bb512af491f..0eb3716fceb 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/user.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/lib/model/user.dart @@ -111,12 +111,12 @@ class User { static List listFromJson(List json, {bool emptyIsNull, bool growable,}) => json == null || json.isEmpty ? true == emptyIsNull ? null : [] - : json.map((v) => User.fromJson(v)).toList(growable: true == growable); + : json.map((dynamic value) => User.fromJson(value)).toList(growable: true == growable); static Map mapFromJson(Map json) { final map = {}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) => map[key] = User.fromJson(v)); + if (json?.isNotEmpty == true) { + json.forEach((key, value) => map[key] = User.fromJson(value)); } return map; } @@ -124,9 +124,9 @@ class User { // maps a json object with a list of User-objects as value to a dart map static Map> mapListFromJson(Map json, {bool emptyIsNull, bool growable,}) { final map = >{}; - if (json != null && json.isNotEmpty) { - json.forEach((String key, dynamic v) { - map[key] = User.listFromJson(v, emptyIsNull: emptyIsNull, growable: growable); + if (json?.isNotEmpty == true) { + json.forEach((key, value) { + map[key] = User.listFromJson(value, emptyIsNull: emptyIsNull, growable: growable,); }); } return map; diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/FILES b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/FILES index a9cd914811b..56e6b6ec96e 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/FILES @@ -1,6 +1,7 @@ .gitignore .travis.yml README.md +analysis_options.yaml build.yaml doc/AdditionalPropertiesClass.md doc/Animal.md diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/analysis_options.yaml b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/analysis_options.yaml new file mode 100644 index 00000000000..83d5a10bd7b --- /dev/null +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/analysis_options.yaml @@ -0,0 +1,3 @@ +analyzer: + strong-mode: + implicit-casts: true diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_client.dart b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_client.dart index 65c9ec57844..02f98fe17a4 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_client.dart +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/lib/api_client.dart @@ -61,7 +61,7 @@ class ApiClient { Future invokeAPI( String path, String method, - Iterable queryParams, + List queryParams, Object body, Map headerParams, Map formParams, @@ -156,13 +156,13 @@ class ApiClient { List queryParams, Map headerParams, ) { - authNames.forEach((authName) { + for(final authName in authNames) { final auth = _authentications[authName]; if (auth == null) { throw ArgumentError('Authentication undefined: $authName'); } auth.applyToParams(queryParams, headerParams); - }); + } } } From 0f578d4a839f0bda2bea34ed9326f3f5eb7eeb88 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Thu, 24 Jun 2021 11:42:49 +0800 Subject: [PATCH 161/192] comment out ts inversify tests --- pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a78fee85d3c..2dc1b41f00a 100644 --- a/pom.xml +++ b/pom.xml @@ -1223,7 +1223,8 @@ samples/openapi3/client/petstore/typescript/builds/object_params samples/openapi3/client/petstore/typescript/tests/object_params samples/openapi3/client/petstore/typescript/builds/inversify - samples/openapi3/client/petstore/typescript/tests/inversify + samples/openapi3/client/petstore/typescript/tests/deno samples/client/petstore/typescript-fetch/builds/default samples/client/petstore/typescript-fetch/builds/es6-target From 1cd1001e347dd0c30e73094707731e459f359e57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20J=2E=20Gajda?= Date: Sat, 26 Jun 2021 12:20:59 +0200 Subject: [PATCH 162/192] Fix returning NoContent. (#9830) --- .../openapitools/codegen/languages/HaskellServantCodegen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java index ad013a6bbef..9887d5c6f1e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java @@ -564,7 +564,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf // Add the HTTP method and return type String returnType = op.returnType; if (returnType == null || returnType.equals("null")) { - returnType = "()"; + returnType = "NoContent"; } if (returnType.indexOf(" ") >= 0) { returnType = "(" + returnType + ")"; From 919945b65b2587e5aefe6d2b4139f36c505cc7b2 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 26 Jun 2021 18:53:07 +0800 Subject: [PATCH 163/192] ensure haskell, erlang server samles up-to-date (#9851) --- .gitignore | 1 + bin/configs/{other => }/erlang-server.yaml | 0 bin/configs/{other => }/haskell-servant.yaml | 0 .../.openapi-generator/VERSION | 2 +- .../sagas-and-records/src/apis/PetApi.ts | 54 ++++--------------- .../builds/sagas-and-records/src/runtime.ts | 10 ++-- .../haskell-servant/.openapi-generator/FILES | 6 +++ .../lib/OpenAPIPetstore/API.hs | 44 +++++++-------- 8 files changed, 44 insertions(+), 73 deletions(-) rename bin/configs/{other => }/erlang-server.yaml (100%) rename bin/configs/{other => }/haskell-servant.yaml (100%) create mode 100644 samples/server/petstore/haskell-servant/.openapi-generator/FILES diff --git a/.gitignore b/.gitignore index 3a964a0bc5e..9ce6c04e156 100644 --- a/.gitignore +++ b/.gitignore @@ -212,6 +212,7 @@ cabal.project.local samples/client/petstore/haskell-http-client/docs/haddock-bundle.min.js samples/client/petstore/haskell-http-client/docs/meta.json samples/client/petstore/haskell-http-client/docs/quick-jump.css +samples/server/petstore/haskell-servant/stack.yaml.lock # R .Rproj.user diff --git a/bin/configs/other/erlang-server.yaml b/bin/configs/erlang-server.yaml similarity index 100% rename from bin/configs/other/erlang-server.yaml rename to bin/configs/erlang-server.yaml diff --git a/bin/configs/other/haskell-servant.yaml b/bin/configs/haskell-servant.yaml similarity index 100% rename from bin/configs/other/haskell-servant.yaml rename to bin/configs/haskell-servant.yaml diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION index d509cc92aa8..6555596f931 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION @@ -1 +1 @@ -5.1.1-SNAPSHOT \ No newline at end of file +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApi.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApi.ts index 7726dae7530..5c881e816cd 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/apis/PetApi.ts @@ -98,11 +98,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -141,11 +137,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -184,11 +176,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -229,11 +217,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -274,11 +258,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -319,11 +299,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -397,11 +373,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const response = await this.request({ @@ -436,11 +408,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ @@ -497,11 +465,7 @@ export class PetApi extends runtime.BaseAPI { if (this.configuration && this.configuration.accessToken) { // oauth required - if (typeof this.configuration.accessToken === 'function') { - headerParameters["Authorization"] = this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); - } else { - headerParameters["Authorization"] = this.configuration.accessToken; - } + headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]); } const consumes: runtime.Consume[] = [ diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/runtime.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/runtime.ts index da5d9059bad..40ac35e9d19 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/runtime.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/runtime.ts @@ -90,8 +90,8 @@ export class BaseAPI { if (middleware.post) { response = await middleware.post({ fetch: this.fetchApi, - url, - init, + url: fetchParams.url, + init: fetchParams.init, response: response.clone(), }) || response; } @@ -135,7 +135,7 @@ export interface ConfigurationParameters { username?: string; // parameter for basic security password?: string; // parameter for basic security apiKey?: string | ((name: string) => string); // parameter for apiKey security - accessToken?: string | ((name?: string, scopes?: string[]) => string); // parameter for oauth2 security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security headers?: HTTPHeaders; //header params we want to use on every request credentials?: RequestCredentials; //value for the credentials param we want to use on each request } @@ -175,10 +175,10 @@ export class Configuration { return undefined; } - get accessToken(): ((name: string, scopes?: string[]) => string) | undefined { + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { const accessToken = this.configuration.accessToken; if (accessToken) { - return typeof accessToken === 'function' ? accessToken : () => accessToken; + return typeof accessToken === 'function' ? accessToken : async () => accessToken; } return undefined; } diff --git a/samples/server/petstore/haskell-servant/.openapi-generator/FILES b/samples/server/petstore/haskell-servant/.openapi-generator/FILES new file mode 100644 index 00000000000..405513c6811 --- /dev/null +++ b/samples/server/petstore/haskell-servant/.openapi-generator/FILES @@ -0,0 +1,6 @@ +README.md +Setup.hs +lib/OpenAPIPetstore/API.hs +lib/OpenAPIPetstore/Types.hs +openapi-petstore.cabal +stack.yaml diff --git a/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/API.hs b/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/API.hs index 3d94427f99d..751713adc78 100644 --- a/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/API.hs +++ b/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/API.hs @@ -137,26 +137,26 @@ formatSeparatedQueryList char = T.intercalate (T.singleton char) . map toQueryPa -- | Servant type-level API, generated from the OpenAPI spec for OpenAPIPetstore. type OpenAPIPetstoreAPI - = "pet" :> ReqBody '[JSON] Pet :> Verb 'POST 200 '[JSON] () -- 'addPet' route - :<|> "pet" :> Capture "petId" Integer :> Header "api_key" Text :> Verb 'DELETE 200 '[JSON] () -- 'deletePet' route + = "pet" :> ReqBody '[JSON] Pet :> Verb 'POST 200 '[JSON] NoContent -- 'addPet' route + :<|> "pet" :> Capture "petId" Integer :> Header "api_key" Text :> Verb 'DELETE 200 '[JSON] NoContent -- 'deletePet' route :<|> "pet" :> "findByStatus" :> QueryParam "status" (QueryList 'CommaSeparated (Text)) :> Verb 'GET 200 '[JSON] [Pet] -- 'findPetsByStatus' route :<|> "pet" :> "findByTags" :> QueryParam "tags" (QueryList 'CommaSeparated (Text)) :> Verb 'GET 200 '[JSON] [Pet] -- 'findPetsByTags' route :<|> "pet" :> Capture "petId" Integer :> Verb 'GET 200 '[JSON] Pet -- 'getPetById' route - :<|> "pet" :> ReqBody '[JSON] Pet :> Verb 'PUT 200 '[JSON] () -- 'updatePet' route - :<|> "pet" :> Capture "petId" Integer :> ReqBody '[FormUrlEncoded] FormUpdatePetWithForm :> Verb 'POST 200 '[JSON] () -- 'updatePetWithForm' route + :<|> "pet" :> ReqBody '[JSON] Pet :> Verb 'PUT 200 '[JSON] NoContent -- 'updatePet' route + :<|> "pet" :> Capture "petId" Integer :> ReqBody '[FormUrlEncoded] FormUpdatePetWithForm :> Verb 'POST 200 '[JSON] NoContent -- 'updatePetWithForm' route :<|> "pet" :> Capture "petId" Integer :> "uploadImage" :> ReqBody '[FormUrlEncoded] FormUploadFile :> Verb 'POST 200 '[JSON] ApiResponse -- 'uploadFile' route - :<|> "store" :> "order" :> Capture "orderId" Text :> Verb 'DELETE 200 '[JSON] () -- 'deleteOrder' route + :<|> "store" :> "order" :> Capture "orderId" Text :> Verb 'DELETE 200 '[JSON] NoContent -- 'deleteOrder' route :<|> "store" :> "inventory" :> Verb 'GET 200 '[JSON] ((Map.Map String Int)) -- 'getInventory' route :<|> "store" :> "order" :> Capture "orderId" Integer :> Verb 'GET 200 '[JSON] Order -- 'getOrderById' route :<|> "store" :> "order" :> ReqBody '[JSON] Order :> Verb 'POST 200 '[JSON] Order -- 'placeOrder' route - :<|> "user" :> ReqBody '[JSON] User :> Verb 'POST 200 '[JSON] () -- 'createUser' route - :<|> "user" :> "createWithArray" :> ReqBody '[JSON] [User] :> Verb 'POST 200 '[JSON] () -- 'createUsersWithArrayInput' route - :<|> "user" :> "createWithList" :> ReqBody '[JSON] [User] :> Verb 'POST 200 '[JSON] () -- 'createUsersWithListInput' route - :<|> "user" :> Capture "username" Text :> Verb 'DELETE 200 '[JSON] () -- 'deleteUser' route + :<|> "user" :> ReqBody '[JSON] User :> Verb 'POST 200 '[JSON] NoContent -- 'createUser' route + :<|> "user" :> "createWithArray" :> ReqBody '[JSON] [User] :> Verb 'POST 200 '[JSON] NoContent -- 'createUsersWithArrayInput' route + :<|> "user" :> "createWithList" :> ReqBody '[JSON] [User] :> Verb 'POST 200 '[JSON] NoContent -- 'createUsersWithListInput' route + :<|> "user" :> Capture "username" Text :> Verb 'DELETE 200 '[JSON] NoContent -- 'deleteUser' route :<|> "user" :> Capture "username" Text :> Verb 'GET 200 '[JSON] User -- 'getUserByName' route :<|> "user" :> "login" :> QueryParam "username" Text :> QueryParam "password" Text :> Verb 'GET 200 '[JSON] Text -- 'loginUser' route - :<|> "user" :> "logout" :> Verb 'GET 200 '[JSON] () -- 'logoutUser' route - :<|> "user" :> Capture "username" Text :> ReqBody '[JSON] User :> Verb 'PUT 200 '[JSON] () -- 'updateUser' route + :<|> "user" :> "logout" :> Verb 'GET 200 '[JSON] NoContent -- 'logoutUser' route + :<|> "user" :> Capture "username" Text :> ReqBody '[JSON] User :> Verb 'PUT 200 '[JSON] NoContent -- 'updateUser' route :<|> Raw @@ -177,26 +177,26 @@ newtype OpenAPIPetstoreClientError = OpenAPIPetstoreClientError ClientError -- is a backend that executes actions by sending HTTP requests (see @createOpenAPIPetstoreClient@). Alternatively, provided -- a backend, the API can be served using @runOpenAPIPetstoreMiddlewareServer@. data OpenAPIPetstoreBackend m = OpenAPIPetstoreBackend - { addPet :: Pet -> m (){- ^ -} - , deletePet :: Integer -> Maybe Text -> m (){- ^ -} + { addPet :: Pet -> m NoContent{- ^ -} + , deletePet :: Integer -> Maybe Text -> m NoContent{- ^ -} , findPetsByStatus :: Maybe [Text] -> m [Pet]{- ^ Multiple status values can be provided with comma separated strings -} , findPetsByTags :: Maybe [Text] -> m [Pet]{- ^ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. -} , getPetById :: Integer -> m Pet{- ^ Returns a single pet -} - , updatePet :: Pet -> m (){- ^ -} - , updatePetWithForm :: Integer -> FormUpdatePetWithForm -> m (){- ^ -} + , updatePet :: Pet -> m NoContent{- ^ -} + , updatePetWithForm :: Integer -> FormUpdatePetWithForm -> m NoContent{- ^ -} , uploadFile :: Integer -> FormUploadFile -> m ApiResponse{- ^ -} - , deleteOrder :: Text -> m (){- ^ For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors -} + , deleteOrder :: Text -> m NoContent{- ^ For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors -} , getInventory :: m ((Map.Map String Int)){- ^ Returns a map of status codes to quantities -} , getOrderById :: Integer -> m Order{- ^ For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions -} , placeOrder :: Order -> m Order{- ^ -} - , createUser :: User -> m (){- ^ This can only be done by the logged in user. -} - , createUsersWithArrayInput :: [User] -> m (){- ^ -} - , createUsersWithListInput :: [User] -> m (){- ^ -} - , deleteUser :: Text -> m (){- ^ This can only be done by the logged in user. -} + , createUser :: User -> m NoContent{- ^ This can only be done by the logged in user. -} + , createUsersWithArrayInput :: [User] -> m NoContent{- ^ -} + , createUsersWithListInput :: [User] -> m NoContent{- ^ -} + , deleteUser :: Text -> m NoContent{- ^ This can only be done by the logged in user. -} , getUserByName :: Text -> m User{- ^ -} , loginUser :: Maybe Text -> Maybe Text -> m Text{- ^ -} - , logoutUser :: m (){- ^ -} - , updateUser :: Text -> User -> m (){- ^ This can only be done by the logged in user. -} + , logoutUser :: m NoContent{- ^ -} + , updateUser :: Text -> User -> m NoContent{- ^ This can only be done by the logged in user. -} } newtype OpenAPIPetstoreClient a = OpenAPIPetstoreClient From b9b539459a9ef0ba0da4b786c5e592123742ef38 Mon Sep 17 00:00:00 2001 From: Florian Verger Date: Tue, 29 Jun 2021 13:01:58 +0200 Subject: [PATCH 164/192] Typescript angular discriminator mapping (#8929) * remove trailing spaces * add support of discriminator mapping for typecript-angular generator * PR comment --- .../TypeScriptAngularClientCodegen.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java index e91ddecda38..8773634e93b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java @@ -517,6 +517,7 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode if (cm.discriminator != null && cm.children != null) { for (CodegenModel child : cm.children) { cm.imports.add(child.classname); + setChildDiscriminatorValue(cm, child); } } if (cm.parent != null) { @@ -531,6 +532,25 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode return result; } + private void setChildDiscriminatorValue(CodegenModel parent, CodegenModel child) { + if ( + child.vendorExtensions.isEmpty() || + !child.vendorExtensions.containsKey("x-discriminator-value") + ) { + + for (CodegenProperty prop : child.allVars) { + if (prop.baseName.equals(parent.discriminator.getPropertyName())) { + + for (CodegenDiscriminator.MappedModel mappedModel : parent.discriminator.getMappedModels()) { + if (mappedModel.getModelName().equals(child.classname)) { + prop.discriminatorValue = mappedModel.getMappingName(); + } + } + } + } + } + } + /** * Parse imports */ From 90233d66531683fd40ef58e35cb85ed70e16aa38 Mon Sep 17 00:00:00 2001 From: Ghufran Zahidi <18732053+Ghufz@users.noreply.github.com> Date: Tue, 29 Jun 2021 17:58:47 +0530 Subject: [PATCH 165/192] =?UTF-8?q?conditional=20serialization=20add=20onl?= =?UTF-8?q?y=20those=20property=20which=20user=20wants=20to=E2=80=A6=20(#9?= =?UTF-8?q?807)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * conditional serialization add only those property which user wants to configure. * fixed the samples * fixed the sample String to string issue. * fixed the sample String to string issue. * updated the sample * Added unit test for conditional serialization * update samples * remove trailing spaces, update samples * remove files * add back files * build the project in the ci Co-authored-by: William Cheng --- appveyor.yml | 4 + ...penAPIClient_ConditionalSerialization.yaml | 12 + docs/generators/csharp-netcore.md | 1 + .../codegen/CodegenConstants.java | 3 + .../languages/AbstractCSharpCodegen.java | 1 + .../languages/CSharpNetCoreClientCodegen.java | 14 + .../csharp-netcore/modelGeneric.mustache | 105 +- .../.gitignore | 362 ++ .../.openapi-generator-ignore | 23 + .../.openapi-generator/FILES | 187 ++ .../.openapi-generator/VERSION | 1 + .../Org.OpenAPITools.sln | 27 + .../README.md | 266 ++ .../appveyor.yml | 9 + .../docs/AdditionalPropertiesClass.md | 17 + .../docs/Animal.md | 11 + .../docs/AnotherFakeApi.md | 80 + .../docs/ApiResponse.md | 12 + .../docs/Apple.md | 11 + .../docs/AppleReq.md | 11 + .../docs/ArrayOfArrayOfNumberOnly.md | 10 + .../docs/ArrayOfNumberOnly.md | 10 + .../docs/ArrayTest.md | 12 + .../docs/Banana.md | 10 + .../docs/BananaReq.md | 11 + .../docs/BasquePig.md | 10 + .../docs/Capitalization.md | 15 + .../docs/Cat.md | 12 + .../docs/CatAllOf.md | 10 + .../docs/Category.md | 11 + .../docs/ChildCat.md | 11 + .../docs/ChildCatAllOf.md | 11 + .../docs/ClassModel.md | 11 + .../docs/ComplexQuadrilateral.md | 11 + .../docs/DanishPig.md | 10 + .../docs/DefaultApi.md | 73 + .../docs/Dog.md | 12 + .../docs/DogAllOf.md | 10 + .../docs/Drawing.md | 13 + .../docs/EnumArrays.md | 11 + .../docs/EnumClass.md | 9 + .../docs/EnumTest.md | 18 + .../docs/EquilateralTriangle.md | 11 + .../docs/FakeApi.md | 1126 +++++++ .../docs/FakeClassnameTags123Api.md | 85 + .../docs/File.md | 11 + .../docs/FileSchemaTestClass.md | 11 + .../docs/Foo.md | 10 + .../docs/FormatTest.md | 25 + .../docs/Fruit.md | 13 + .../docs/FruitReq.md | 13 + .../docs/GmFruit.md | 13 + .../docs/GrandparentAnimal.md | 10 + .../docs/HasOnlyReadOnly.md | 11 + .../docs/HealthCheckResult.md | 11 + .../docs/InlineResponseDefault.md | 10 + .../docs/IsoscelesTriangle.md | 11 + .../docs/List.md | 10 + .../docs/Mammal.md | 13 + .../docs/MapTest.md | 13 + ...dPropertiesAndAdditionalPropertiesClass.md | 12 + .../docs/Model200Response.md | 12 + .../docs/ModelClient.md | 10 + .../docs/Name.md | 14 + .../docs/NullableClass.md | 21 + .../docs/NullableShape.md | 12 + .../docs/NumberOnly.md | 10 + .../docs/Order.md | 15 + .../docs/OuterComposite.md | 12 + .../docs/OuterEnum.md | 9 + .../docs/OuterEnumDefaultValue.md | 9 + .../docs/OuterEnumInteger.md | 9 + .../docs/OuterEnumIntegerDefaultValue.md | 9 + .../docs/ParentPet.md | 10 + .../docs/Pet.md | 15 + .../docs/PetApi.md | 689 ++++ .../docs/Pig.md | 10 + .../docs/Quadrilateral.md | 11 + .../docs/QuadrilateralInterface.md | 10 + .../docs/ReadOnlyFirst.md | 11 + .../docs/Return.md | 11 + .../docs/ScaleneTriangle.md | 11 + .../docs/Shape.md | 11 + .../docs/ShapeInterface.md | 10 + .../docs/ShapeOrNull.md | 12 + .../docs/SimpleQuadrilateral.md | 11 + .../docs/SpecialModelName.md | 11 + .../docs/StoreApi.md | 298 ++ .../docs/Tag.md | 11 + .../docs/Triangle.md | 11 + .../docs/TriangleInterface.md | 10 + .../docs/User.md | 21 + .../docs/UserApi.md | 573 ++++ .../docs/Whale.md | 12 + .../docs/Zebra.md | 11 + .../git_push.sh | 58 + .../Api/AnotherFakeApiTests.cs | 69 + .../Api/DefaultApiTests.cs | 68 + .../Org.OpenAPITools.Test/Api/FakeApiTests.cs | 258 ++ .../Api/FakeClassnameTags123ApiTests.cs | 69 + .../Org.OpenAPITools.Test/Api/PetApiTests.cs | 168 + .../Api/StoreApiTests.cs | 103 + .../Org.OpenAPITools.Test/Api/UserApiTests.cs | 148 + .../Model/AdditionalPropertiesClassTests.cs | 126 + .../Model/AnimalTests.cs | 96 + .../Model/ApiResponseTests.cs | 86 + .../Model/AppleReqTests.cs | 78 + .../Org.OpenAPITools.Test/Model/AppleTests.cs | 78 + .../Model/ArrayOfArrayOfNumberOnlyTests.cs | 70 + .../Model/ArrayOfNumberOnlyTests.cs | 70 + .../Model/ArrayTestTests.cs | 86 + .../Model/BananaReqTests.cs | 78 + .../Model/BananaTests.cs | 70 + .../Model/BasquePigTests.cs | 70 + .../Model/CapitalizationTests.cs | 110 + .../Model/CatAllOfTests.cs | 70 + .../Org.OpenAPITools.Test/Model/CatTests.cs | 70 + .../Model/CategoryTests.cs | 78 + .../Model/ChildCatAllOfTests.cs | 78 + .../Model/ChildCatTests.cs | 78 + .../Model/ClassModelTests.cs | 70 + .../Model/ComplexQuadrilateralTests.cs | 78 + .../Model/DanishPigTests.cs | 70 + .../Model/DogAllOfTests.cs | 70 + .../Org.OpenAPITools.Test/Model/DogTests.cs | 70 + .../Model/DrawingTests.cs | 94 + .../Model/EnumArraysTests.cs | 78 + .../Model/EnumClassTests.cs | 62 + .../Model/EnumTestTests.cs | 134 + .../Model/EquilateralTriangleTests.cs | 78 + .../Model/FileSchemaTestClassTests.cs | 78 + .../Org.OpenAPITools.Test/Model/FileTests.cs | 70 + .../Org.OpenAPITools.Test/Model/FooTests.cs | 70 + .../Model/FormatTestTests.cs | 190 ++ .../Model/FruitReqTests.cs | 94 + .../Org.OpenAPITools.Test/Model/FruitTests.cs | 94 + .../Model/GmFruitTests.cs | 94 + .../Model/GrandparentAnimalTests.cs | 88 + .../Model/HasOnlyReadOnlyTests.cs | 78 + .../Model/HealthCheckResultTests.cs | 70 + .../Model/InlineResponseDefaultTests.cs | 70 + .../Model/IsoscelesTriangleTests.cs | 78 + .../Org.OpenAPITools.Test/Model/ListTests.cs | 70 + .../Model/MammalTests.cs | 94 + .../Model/MapTestTests.cs | 94 + ...ertiesAndAdditionalPropertiesClassTests.cs | 86 + .../Model/Model200ResponseTests.cs | 78 + .../Model/ModelClientTests.cs | 70 + .../Org.OpenAPITools.Test/Model/NameTests.cs | 94 + .../Model/NullableClassTests.cs | 158 + .../Model/NullableShapeTests.cs | 78 + .../Model/NumberOnlyTests.cs | 70 + .../Org.OpenAPITools.Test/Model/OrderTests.cs | 110 + .../Model/OuterCompositeTests.cs | 86 + .../Model/OuterEnumDefaultValueTests.cs | 62 + .../OuterEnumIntegerDefaultValueTests.cs | 62 + .../Model/OuterEnumIntegerTests.cs | 62 + .../Model/OuterEnumTests.cs | 62 + .../Model/ParentPetTests.cs | 71 + .../Org.OpenAPITools.Test/Model/PetTests.cs | 110 + .../Org.OpenAPITools.Test/Model/PigTests.cs | 70 + .../Model/QuadrilateralInterfaceTests.cs | 70 + .../Model/QuadrilateralTests.cs | 78 + .../Model/ReadOnlyFirstTests.cs | 78 + .../Model/ReturnTests.cs | 70 + .../Model/ScaleneTriangleTests.cs | 78 + .../Model/SerializeBasedOnInitialization.cs | 52 + .../Model/ShapeInterfaceTests.cs | 70 + .../Model/ShapeOrNullTests.cs | 78 + .../Org.OpenAPITools.Test/Model/ShapeTests.cs | 78 + .../Model/SimpleQuadrilateralTests.cs | 78 + .../Model/SpecialModelNameTests.cs | 78 + .../Org.OpenAPITools.Test/Model/TagTests.cs | 78 + .../Model/TriangleInterfaceTests.cs | 70 + .../Model/TriangleTests.cs | 78 + .../Org.OpenAPITools.Test/Model/UserTests.cs | 158 + .../Org.OpenAPITools.Test/Model/WhaleTests.cs | 86 + .../Org.OpenAPITools.Test/Model/ZebraTests.cs | 78 + .../Org.OpenAPITools.Test.csproj | 20 + .../Org.OpenAPITools/Api/AnotherFakeApi.cs | 320 ++ .../src/Org.OpenAPITools/Api/DefaultApi.cs | 297 ++ .../src/Org.OpenAPITools/Api/FakeApi.cs | 2951 +++++++++++++++++ .../Api/FakeClassnameTags123Api.cs | 330 ++ .../src/Org.OpenAPITools/Api/PetApi.cs | 1884 +++++++++++ .../src/Org.OpenAPITools/Api/StoreApi.cs | 778 +++++ .../src/Org.OpenAPITools/Api/UserApi.cs | 1422 ++++++++ .../src/Org.OpenAPITools/Client/ApiClient.cs | 860 +++++ .../Org.OpenAPITools/Client/ApiException.cs | 68 + .../Org.OpenAPITools/Client/ApiResponse.cs | 166 + .../Org.OpenAPITools/Client/ClientUtils.cs | 243 ++ .../Org.OpenAPITools/Client/Configuration.cs | 587 ++++ .../Client/ExceptionFactory.cs | 22 + .../Client/GlobalConfiguration.cs | 67 + .../src/Org.OpenAPITools/Client/HttpMethod.cs | 33 + .../Client/HttpSigningConfiguration.cs | 757 +++++ .../Org.OpenAPITools/Client/IApiAccessor.cs | 37 + .../Client/IAsynchronousClient.cs | 100 + .../Client/IReadableConfiguration.cs | 120 + .../Client/ISynchronousClient.cs | 93 + .../src/Org.OpenAPITools/Client/Multimap.cs | 295 ++ .../Client/OpenAPIDateConverter.cs | 29 + .../Org.OpenAPITools/Client/RequestOptions.cs | 74 + .../Client/RetryConfiguration.cs | 21 + .../Model/AbstractOpenAPISchema.cs | 76 + .../Model/AdditionalPropertiesClass.cs | 350 ++ .../src/Org.OpenAPITools/Model/Animal.cs | 199 ++ .../src/Org.OpenAPITools/Model/ApiResponse.cs | 203 ++ .../src/Org.OpenAPITools/Model/Apple.cs | 189 ++ .../src/Org.OpenAPITools/Model/AppleReq.cs | 170 + .../Model/ArrayOfArrayOfNumberOnly.cs | 146 + .../Model/ArrayOfNumberOnly.cs | 146 + .../src/Org.OpenAPITools/Model/ArrayTest.cs | 204 ++ .../src/Org.OpenAPITools/Model/Banana.cs | 145 + .../src/Org.OpenAPITools/Model/BananaReq.cs | 168 + .../src/Org.OpenAPITools/Model/BasquePig.cs | 155 + .../Org.OpenAPITools/Model/Capitalization.cs | 292 ++ .../src/Org.OpenAPITools/Model/Cat.cs | 169 + .../src/Org.OpenAPITools/Model/CatAllOf.cs | 145 + .../src/Org.OpenAPITools/Model/Category.cs | 183 + .../src/Org.OpenAPITools/Model/ChildCat.cs | 212 ++ .../Org.OpenAPITools/Model/ChildCatAllOf.cs | 190 ++ .../src/Org.OpenAPITools/Model/ClassModel.cs | 146 + .../Model/ComplexQuadrilateral.cs | 185 ++ .../src/Org.OpenAPITools/Model/DanishPig.cs | 155 + .../src/Org.OpenAPITools/Model/Dog.cs | 170 + .../src/Org.OpenAPITools/Model/DogAllOf.cs | 146 + .../src/Org.OpenAPITools/Model/Drawing.cs | 224 ++ .../src/Org.OpenAPITools/Model/EnumArrays.cs | 218 ++ .../src/Org.OpenAPITools/Model/EnumClass.cs | 55 + .../src/Org.OpenAPITools/Model/EnumTest.cs | 501 +++ .../Model/EquilateralTriangle.cs | 185 ++ .../src/Org.OpenAPITools/Model/File.cs | 147 + .../Model/FileSchemaTestClass.cs | 175 + .../src/Org.OpenAPITools/Model/Foo.cs | 147 + .../src/Org.OpenAPITools/Model/FormatTest.cs | 680 ++++ .../src/Org.OpenAPITools/Model/Fruit.cs | 291 ++ .../src/Org.OpenAPITools/Model/FruitReq.cs | 300 ++ .../src/Org.OpenAPITools/Model/GmFruit.cs | 263 ++ .../Model/GrandparentAnimal.cs | 169 + .../Org.OpenAPITools/Model/HasOnlyReadOnly.cs | 152 + .../Model/HealthCheckResult.cs | 146 + .../Model/InlineResponseDefault.cs | 146 + .../Model/IsoscelesTriangle.cs | 172 + .../src/Org.OpenAPITools/Model/List.cs | 146 + .../src/Org.OpenAPITools/Model/Mammal.cs | 356 ++ .../src/Org.OpenAPITools/Model/MapTest.cs | 255 ++ ...dPropertiesAndAdditionalPropertiesClass.cs | 204 ++ .../Model/Model200Response.cs | 174 + .../src/Org.OpenAPITools/Model/ModelClient.cs | 146 + .../src/Org.OpenAPITools/Model/Name.cs | 214 ++ .../Org.OpenAPITools/Model/NullableClass.cs | 457 +++ .../Org.OpenAPITools/Model/NullableShape.cs | 316 ++ .../src/Org.OpenAPITools/Model/NumberOnly.cs | 145 + .../src/Org.OpenAPITools/Model/Order.cs | 316 ++ .../Org.OpenAPITools/Model/OuterComposite.cs | 202 ++ .../src/Org.OpenAPITools/Model/OuterEnum.cs | 55 + .../Model/OuterEnumDefaultValue.cs | 55 + .../Model/OuterEnumInteger.cs | 51 + .../Model/OuterEnumIntegerDefaultValue.cs | 51 + .../src/Org.OpenAPITools/Model/ParentPet.cs | 141 + .../src/Org.OpenAPITools/Model/Pet.cs | 329 ++ .../src/Org.OpenAPITools/Model/Pig.cs | 307 ++ .../Org.OpenAPITools/Model/Quadrilateral.cs | 307 ++ .../Model/QuadrilateralInterface.cs | 155 + .../Org.OpenAPITools/Model/ReadOnlyFirst.cs | 163 + .../src/Org.OpenAPITools/Model/Return.cs | 145 + .../Org.OpenAPITools/Model/ScaleneTriangle.cs | 185 ++ .../src/Org.OpenAPITools/Model/Shape.cs | 307 ++ .../Org.OpenAPITools/Model/ShapeInterface.cs | 155 + .../src/Org.OpenAPITools/Model/ShapeOrNull.cs | 316 ++ .../Model/SimpleQuadrilateral.cs | 185 ++ .../Model/SpecialModelName.cs | 174 + .../src/Org.OpenAPITools/Model/Tag.cs | 174 + .../src/Org.OpenAPITools/Model/Triangle.cs | 356 ++ .../Model/TriangleInterface.cs | 155 + .../src/Org.OpenAPITools/Model/User.cs | 468 +++ .../src/Org.OpenAPITools/Model/Whale.cs | 211 ++ .../src/Org.OpenAPITools/Model/Zebra.cs | 212 ++ .../Org.OpenAPITools/Org.OpenAPITools.csproj | 31 + .../Org.OpenAPITools/Model/HasOnlyReadOnly.cs | 2 - .../src/Org.OpenAPITools/Model/Name.cs | 2 - .../Org.OpenAPITools/Model/ReadOnlyFirst.cs | 1 - .../Org.OpenAPITools/Model/HasOnlyReadOnly.cs | 2 - .../src/Org.OpenAPITools/Model/Name.cs | 2 - .../Org.OpenAPITools/Model/ReadOnlyFirst.cs | 1 - .../Org.OpenAPITools/Model/HasOnlyReadOnly.cs | 2 - .../src/Org.OpenAPITools/Model/Name.cs | 2 - .../Org.OpenAPITools/Model/ReadOnlyFirst.cs | 1 - .../Org.OpenAPITools/Model/HasOnlyReadOnly.cs | 2 - .../src/Org.OpenAPITools/Model/Name.cs | 2 - .../Org.OpenAPITools/Model/ReadOnlyFirst.cs | 1 - .../Org.OpenAPITools/Model/HasOnlyReadOnly.cs | 2 - .../src/Org.OpenAPITools/Model/Name.cs | 2 - .../Org.OpenAPITools/Model/ReadOnlyFirst.cs | 1 - 294 files changed, 39270 insertions(+), 26 deletions(-) create mode 100644 bin/configs/csharp-netcore-OpenAPIClient_ConditionalSerialization.yaml create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.gitignore create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator-ignore create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/FILES create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/Org.OpenAPITools.sln create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/README.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/appveyor.yml create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/AdditionalPropertiesClass.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Animal.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/AnotherFakeApi.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ApiResponse.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Apple.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/AppleReq.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ArrayOfArrayOfNumberOnly.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ArrayOfNumberOnly.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ArrayTest.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Banana.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/BananaReq.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/BasquePig.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Capitalization.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Cat.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/CatAllOf.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Category.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ChildCat.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ChildCatAllOf.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ClassModel.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ComplexQuadrilateral.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/DanishPig.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/DefaultApi.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Dog.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/DogAllOf.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Drawing.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EnumArrays.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EnumClass.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EnumTest.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EquilateralTriangle.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FakeApi.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FakeClassnameTags123Api.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/File.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FileSchemaTestClass.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Foo.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FormatTest.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Fruit.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FruitReq.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/GmFruit.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/GrandparentAnimal.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/HasOnlyReadOnly.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/HealthCheckResult.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/InlineResponseDefault.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/IsoscelesTriangle.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/List.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Mammal.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/MapTest.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/MixedPropertiesAndAdditionalPropertiesClass.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Model200Response.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ModelClient.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Name.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/NullableClass.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/NullableShape.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/NumberOnly.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Order.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterComposite.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnum.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnumDefaultValue.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnumInteger.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnumIntegerDefaultValue.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ParentPet.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Pet.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/PetApi.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Pig.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Quadrilateral.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/QuadrilateralInterface.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ReadOnlyFirst.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Return.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ScaleneTriangle.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Shape.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ShapeInterface.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ShapeOrNull.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/SimpleQuadrilateral.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/SpecialModelName.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/StoreApi.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Tag.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Triangle.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/TriangleInterface.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/User.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/UserApi.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Whale.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Zebra.md create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/git_push.sh create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/PetApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/UserApiTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AdditionalPropertiesClassTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AnimalTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ApiResponseTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AppleReqTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AppleTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ArrayOfArrayOfNumberOnlyTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ArrayOfNumberOnlyTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ArrayTestTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/BananaReqTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/BananaTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/BasquePigTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CapitalizationTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CatAllOfTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CatTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CategoryTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ChildCatAllOfTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ChildCatTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ClassModelTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ComplexQuadrilateralTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DanishPigTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DogAllOfTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DogTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DrawingTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EnumArraysTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EnumClassTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EnumTestTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EquilateralTriangleTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FileSchemaTestClassTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FileTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FooTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FormatTestTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FruitReqTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FruitTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/GmFruitTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/GrandparentAnimalTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/HasOnlyReadOnlyTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/HealthCheckResultTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/InlineResponseDefaultTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/IsoscelesTriangleTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ListTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/MammalTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/MapTestTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/MixedPropertiesAndAdditionalPropertiesClassTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/Model200ResponseTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ModelClientTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NameTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NullableClassTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NullableShapeTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NumberOnlyTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OrderTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterCompositeTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumDefaultValueTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerDefaultValueTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ParentPetTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/PetTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/PigTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/QuadrilateralInterfaceTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/QuadrilateralTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ReadOnlyFirstTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ReturnTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ScaleneTriangleTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/SerializeBasedOnInitialization.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ShapeInterfaceTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ShapeOrNullTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ShapeTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/SimpleQuadrilateralTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/SpecialModelNameTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/TagTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/TriangleInterfaceTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/TriangleTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/UserTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/WhaleTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ZebraTests.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/AnotherFakeApi.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/DefaultApi.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeApi.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/PetApi.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/StoreApi.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/UserApi.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiClient.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiException.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiResponse.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ClientUtils.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/Configuration.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ExceptionFactory.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/GlobalConfiguration.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpMethod.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IApiAccessor.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IAsynchronousClient.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IReadableConfiguration.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ISynchronousClient.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/Multimap.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/RequestOptions.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/RetryConfiguration.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Animal.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ApiResponse.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Apple.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AppleReq.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayTest.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Banana.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BananaReq.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BasquePig.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Capitalization.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Cat.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/CatAllOf.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Category.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCat.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCatAllOf.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ClassModel.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DanishPig.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Dog.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DogAllOf.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Drawing.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumArrays.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumClass.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumTest.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EquilateralTriangle.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/File.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Foo.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FormatTest.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Fruit.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FruitReq.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GmFruit.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GrandparentAnimal.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HealthCheckResult.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/InlineResponseDefault.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/List.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Mammal.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MapTest.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Model200Response.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ModelClient.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Name.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableClass.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableShape.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NumberOnly.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Order.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterComposite.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnum.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnumInteger.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ParentPet.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pet.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pig.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Quadrilateral.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Return.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ScaleneTriangle.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Shape.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeInterface.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeOrNull.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SpecialModelName.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Tag.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Triangle.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/TriangleInterface.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/User.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Whale.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Zebra.cs create mode 100644 samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/appveyor.yml b/appveyor.yml index 04de25f2e66..e50dc6c2bb2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -55,6 +55,8 @@ build_script: - dotnet build samples\client\petstore\csharp-netcore\OpenAPIClient-net47\Org.OpenAPITools.sln # build C# API client (.net 5.0) - dotnet build samples\client\petstore\csharp-netcore\OpenAPIClient-net5.0\Org.OpenAPITools.sln + # build C# API client (.net 5.0 with ConditionalSerialization) + - dotnet build samples\client\petstore\csharp-netcore\OpenAPIClient-ConditionalSerialization\Org.OpenAPITools.sln # build C# API client - nuget restore samples\client\petstore\csharp\OpenAPIClient\Org.OpenAPITools.sln - msbuild samples\client\petstore\csharp\OpenAPIClient\Org.OpenAPITools.sln /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" @@ -80,6 +82,8 @@ test_script: - dotnet test samples\client\petstore\csharp-netcore\OpenAPIClient-net47\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj # test C# API client (.net 5.0) - dotnet test samples\client\petstore\csharp-netcore\OpenAPIClient-net5.0\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj + # test C# API Client using conditional-serialization + - dotnet test samples\client\petstore\csharp-netcore\OpenAPIClient-ConditionalSerialization\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj # test c# API client - nunit3-console samples\client\petstore\csharp\OpenAPIClient\src\Org.OpenAPITools.Test\bin\Debug\Org.OpenAPITools.Test.dll --result=myresults.xml;format=AppVeyor # test c# API client (with PropertyChanged) diff --git a/bin/configs/csharp-netcore-OpenAPIClient_ConditionalSerialization.yaml b/bin/configs/csharp-netcore-OpenAPIClient_ConditionalSerialization.yaml new file mode 100644 index 00000000000..7c7364771be --- /dev/null +++ b/bin/configs/csharp-netcore-OpenAPIClient_ConditionalSerialization.yaml @@ -0,0 +1,12 @@ +# for .net standard +generatorName: csharp-netcore +outputDir: samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization +inputSpec: modules/openapi-generator/src/test/resources/3_0/java/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml +templateDir: modules/openapi-generator/src/main/resources/csharp-netcore +additionalProperties: + packageGuid: '{fa96c953-af24-457d-8a01-f2fd2a7547a9}' + useCompareNetObjects: true + disallowAdditionalPropertiesIfNotPresent: false + useOneOfDiscriminatorLookup: true + targetFramework: netstandard2.0 + conditionalSerialization: true \ No newline at end of file diff --git a/docs/generators/csharp-netcore.md b/docs/generators/csharp-netcore.md index e7b92383494..8999e7a3a61 100644 --- a/docs/generators/csharp-netcore.md +++ b/docs/generators/csharp-netcore.md @@ -9,6 +9,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | ------ | ----------- | ------ | ------- | |allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false| |caseInsensitiveResponseHeaders|Make API response's headers case-insensitive| |false| +|conditionalSerialization|Serialize only those properties which are initialized by user, accepted values are true or false, default value is false.| |false| |disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
    **false**
    The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
    **true**
    Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
    |true| |hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true| |interfacePrefix|Prefix interfaces with a community standard or widely accepted prefix.| |I| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java index 81348f4a774..bb7aa069fe7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java @@ -184,6 +184,9 @@ public class CodegenConstants { public static final String OPTIONAL_EMIT_DEFAULT_VALUES = "optionalEmitDefaultValues"; public static final String OPTIONAL_EMIT_DEFAULT_VALUES_DESC = "Set DataMember's EmitDefaultValue."; + public static final String OPTIONAL_CONDITIONAL_SERIALIZATION = "conditionalSerialization"; + public static final String OPTIONAL_CONDITIONAL_SERIALIZATION_DESC = "Serialize only those properties which are initialized by user, accepted values are true or false, default value is false."; + public static final String NETCORE_PROJECT_FILE = "netCoreProjectFile"; public static final String NETCORE_PROJECT_FILE_DESC = "Use the new format (.NET Core) for .NET project files (.csproj)."; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index b939826b1ff..ffb716bdfda 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -41,6 +41,7 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co protected boolean optionalAssemblyInfoFlag = true; protected boolean optionalEmitDefaultValuesFlag = false; + protected boolean conditionalSerialization = false; protected boolean optionalProjectFileFlag = true; protected boolean optionalMethodArgumentFlag = true; protected boolean useDateTimeOffsetFlag = false; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java index d0bb7c24b6e..2554a645131 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java @@ -265,6 +265,10 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { addSwitch(CodegenConstants.OPTIONAL_EMIT_DEFAULT_VALUES, CodegenConstants.OPTIONAL_EMIT_DEFAULT_VALUES_DESC, this.optionalEmitDefaultValuesFlag); + + addSwitch(CodegenConstants.OPTIONAL_CONDITIONAL_SERIALIZATION, + CodegenConstants.OPTIONAL_CONDITIONAL_SERIALIZATION_DESC, + this.conditionalSerialization); addSwitch(CodegenConstants.OPTIONAL_PROJECT_FILE, CodegenConstants.OPTIONAL_PROJECT_FILE_DESC, @@ -570,6 +574,12 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { additionalProperties.put(CodegenConstants.OPTIONAL_EMIT_DEFAULT_VALUES, optionalEmitDefaultValuesFlag); } + if (additionalProperties.containsKey(CodegenConstants.OPTIONAL_CONDITIONAL_SERIALIZATION)) { + setConditionalSerialization(convertPropertyToBooleanAndWriteBack(CodegenConstants.OPTIONAL_CONDITIONAL_SERIALIZATION)); + } else { + additionalProperties.put(CodegenConstants.OPTIONAL_CONDITIONAL_SERIALIZATION, conditionalSerialization); + } + if (additionalProperties.containsKey(CodegenConstants.MODEL_PROPERTY_NAMING)) { setModelPropertyNaming((String) additionalProperties.get(CodegenConstants.MODEL_PROPERTY_NAMING)); } @@ -759,6 +769,10 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { this.optionalEmitDefaultValuesFlag = flag; } + public void setConditionalSerialization(boolean flag){ + this.conditionalSerialization = flag; + } + public void setOptionalProjectFileFlag(boolean flag) { this.optionalProjectFileFlag = flag; } diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache index 8dbd9c424e0..6eb1a2359d0 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache @@ -31,6 +31,7 @@ {{#description}} /// {{description}} {{/description}} + {{^conditionalSerialization}} [DataMember(Name = "{{baseName}}"{{#required}}, IsRequired = true{{/required}}, EmitDefaultValue = {{#vendorExtensions.x-emit-default-value}}true{{/vendorExtensions.x-emit-default-value}}{{^vendorExtensions.x-emit-default-value}}{{#isBoolean}}true{{/isBoolean}}{{^isBoolean}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/isBoolean}}{{/vendorExtensions.x-emit-default-value}})] public {{#complexType}}{{{complexType}}}{{/complexType}}{{^complexType}}{{{datatypeWithEnum}}}{{/complexType}}{{^isContainer}}{{^required}}?{{/required}}{{/isContainer}} {{name}} { get; set; } {{#isReadOnly}} @@ -44,6 +45,47 @@ return false; } {{/isReadOnly}} + {{/conditionalSerialization}} + {{#conditionalSerialization}} + {{#isReadOnly}} + [DataMember(Name = "{{baseName}}"{{#required}}, IsRequired = true{{/required}}, EmitDefaultValue = {{#vendorExtensions.x-emit-default-value}}true{{/vendorExtensions.x-emit-default-value}}{{^vendorExtensions.x-emit-default-value}}{{#isBoolean}}true{{/isBoolean}}{{^isBoolean}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/isBoolean}}{{/vendorExtensions.x-emit-default-value}})] + public {{#complexType}}{{{complexType}}}{{/complexType}}{{^complexType}}{{{datatypeWithEnum}}}{{/complexType}}{{^isContainer}}{{^required}}?{{/required}}{{/isContainer}} {{name}} { get; set; } + + + /// + /// Returns false as {{name}} should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize{{name}}() + { + return false; + } + {{/isReadOnly}} + + {{^isReadOnly}} + [DataMember(Name = "{{baseName}}"{{#required}}, IsRequired = true{{/required}}, EmitDefaultValue = {{#vendorExtensions.x-emit-default-value}}true{{/vendorExtensions.x-emit-default-value}}{{^vendorExtensions.x-emit-default-value}}{{#isBoolean}}true{{/isBoolean}}{{^isBoolean}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/isBoolean}}{{/vendorExtensions.x-emit-default-value}})] + public {{#complexType}}{{{complexType}}}{{/complexType}}{{^complexType}}{{{datatypeWithEnum}}}{{/complexType}}{{^isContainer}}{{^required}}?{{/required}}{{/isContainer}} {{name}} + { + get{ return _{{name}};} + set + { + _{{name}} = value; + _flag{{name}} = true; + } + } + private {{#complexType}}{{{complexType}}}{{/complexType}}{{^complexType}}{{{datatypeWithEnum}}}{{/complexType}}{{^isContainer}}{{^required}}?{{/required}}{{/isContainer}} _{{name}}; + private bool _flag{{name}}; + + /// + /// Returns false as {{name}} should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize{{name}}() + { + return _flag{{name}}; + } + {{/isReadOnly}} + {{/conditionalSerialization}} {{/isEnum}} {{/vars}} {{#hasRequired}} @@ -78,6 +120,7 @@ {{^isInherited}} {{^isReadOnly}} {{#required}} + {{^conditionalSerialization}} {{^vendorExtensions.x-csharp-value-type}} // to ensure "{{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}" is required (not null) this.{{name}} = {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} ?? throw new ArgumentNullException("{{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} is a required property for {{classname}} and cannot be null"); @@ -85,6 +128,16 @@ {{#vendorExtensions.x-csharp-value-type}} this.{{name}} = {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}; {{/vendorExtensions.x-csharp-value-type}} + {{/conditionalSerialization}} + {{#conditionalSerialization}} + {{^vendorExtensions.x-csharp-value-type}} + // to ensure "{{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}" is required (not null) + this._{{name}} = {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} ?? throw new ArgumentNullException("{{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} is a required property for {{classname}} and cannot be null"); + {{/vendorExtensions.x-csharp-value-type}} + {{#vendorExtensions.x-csharp-value-type}} + this._{{name}} = {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}; + {{/vendorExtensions.x-csharp-value-type}} + {{/conditionalSerialization}} {{/required}} {{/isReadOnly}} {{/isInherited}} @@ -103,7 +156,12 @@ {{/vendorExtensions.x-csharp-value-type}} {{/defaultValue}} {{^defaultValue}} + {{^conditionalSerialization}} this.{{name}} = {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}; + {{/conditionalSerialization}} + {{#conditionalSerialization}} + this._{{name}} = {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}; + {{/conditionalSerialization}} {{/defaultValue}} {{/required}} {{/isReadOnly}} @@ -121,6 +179,7 @@ /// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{description}}{{/description}} /// {{#description}} /// {{description}}{{/description}} + {{^conditionalSerialization}} [DataMember(Name = "{{baseName}}"{{#required}}, IsRequired = true{{/required}}, EmitDefaultValue = {{#vendorExtensions.x-emit-default-value}}true{{/vendorExtensions.x-emit-default-value}}{{^vendorExtensions.x-emit-default-value}}{{#isBoolean}}true{{/isBoolean}}{{^isBoolean}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/isBoolean}}{{/vendorExtensions.x-emit-default-value}})] {{#isDate}} [JsonConverter(typeof(OpenAPIDateConverter))] @@ -136,8 +195,52 @@ { return false; } - {{/isReadOnly}} + {{/conditionalSerialization}} + {{#conditionalSerialization}} + {{#isReadOnly}} + [DataMember(Name = "{{baseName}}"{{#required}}, IsRequired = true{{/required}}, EmitDefaultValue = {{#vendorExtensions.x-emit-default-value}}true{{/vendorExtensions.x-emit-default-value}}{{^vendorExtensions.x-emit-default-value}}{{#isBoolean}}true{{/isBoolean}}{{^isBoolean}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/isBoolean}}{{/vendorExtensions.x-emit-default-value}})] + {{#isDate}} + [JsonConverter(typeof(OpenAPIDateConverter))] + {{/isDate}} + public {{{dataType}}} {{name}} { get; private set; } + + /// + /// Returns false as {{name}} should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize{{name}}() + { + return false; + } + {{/isReadOnly}} + {{^isReadOnly}} + {{#isDate}} + [JsonConverter(typeof(OpenAPIDateConverter))] + {{/isDate}} + [DataMember(Name = "{{baseName}}"{{#required}}, IsRequired = true{{/required}}, EmitDefaultValue = {{#vendorExtensions.x-emit-default-value}}true{{/vendorExtensions.x-emit-default-value}}{{^vendorExtensions.x-emit-default-value}}{{#isBoolean}}true{{/isBoolean}}{{^isBoolean}}{{#isNullable}}true{{/isNullable}}{{^isNullable}}false{{/isNullable}}{{/isBoolean}}{{/vendorExtensions.x-emit-default-value}})] + public {{{dataType}}} {{name}} + { + get{ return _{{name}};} + set + { + _{{name}} = value; + _flag{{name}} = true; + } + } + private {{{dataType}}} _{{name}}; + private bool _flag{{name}}; + + /// + /// Returns false as {{name}} should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize{{name}}() + { + return _flag{{name}}; + } + {{/isReadOnly}} + {{/conditionalSerialization}} {{/isEnum}} {{/isInherited}} {{/vars}} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.gitignore b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.gitignore new file mode 100644 index 00000000000..1ee53850b84 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.gitignore @@ -0,0 +1,362 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator-ignore b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator-ignore new file mode 100644 index 00000000000..7484ee590a3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/FILES b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/FILES new file mode 100644 index 00000000000..d258eb64b2f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/FILES @@ -0,0 +1,187 @@ +.gitignore +Org.OpenAPITools.sln +README.md +appveyor.yml +docs/AdditionalPropertiesClass.md +docs/Animal.md +docs/AnotherFakeApi.md +docs/ApiResponse.md +docs/Apple.md +docs/AppleReq.md +docs/ArrayOfArrayOfNumberOnly.md +docs/ArrayOfNumberOnly.md +docs/ArrayTest.md +docs/Banana.md +docs/BananaReq.md +docs/BasquePig.md +docs/Capitalization.md +docs/Cat.md +docs/CatAllOf.md +docs/Category.md +docs/ChildCat.md +docs/ChildCatAllOf.md +docs/ClassModel.md +docs/ComplexQuadrilateral.md +docs/DanishPig.md +docs/DefaultApi.md +docs/Dog.md +docs/DogAllOf.md +docs/Drawing.md +docs/EnumArrays.md +docs/EnumClass.md +docs/EnumTest.md +docs/EquilateralTriangle.md +docs/FakeApi.md +docs/FakeClassnameTags123Api.md +docs/File.md +docs/FileSchemaTestClass.md +docs/Foo.md +docs/FormatTest.md +docs/Fruit.md +docs/FruitReq.md +docs/GmFruit.md +docs/GrandparentAnimal.md +docs/HasOnlyReadOnly.md +docs/HealthCheckResult.md +docs/InlineResponseDefault.md +docs/IsoscelesTriangle.md +docs/List.md +docs/Mammal.md +docs/MapTest.md +docs/MixedPropertiesAndAdditionalPropertiesClass.md +docs/Model200Response.md +docs/ModelClient.md +docs/Name.md +docs/NullableClass.md +docs/NullableShape.md +docs/NumberOnly.md +docs/Order.md +docs/OuterComposite.md +docs/OuterEnum.md +docs/OuterEnumDefaultValue.md +docs/OuterEnumInteger.md +docs/OuterEnumIntegerDefaultValue.md +docs/ParentPet.md +docs/Pet.md +docs/PetApi.md +docs/Pig.md +docs/Quadrilateral.md +docs/QuadrilateralInterface.md +docs/ReadOnlyFirst.md +docs/Return.md +docs/ScaleneTriangle.md +docs/Shape.md +docs/ShapeInterface.md +docs/ShapeOrNull.md +docs/SimpleQuadrilateral.md +docs/SpecialModelName.md +docs/StoreApi.md +docs/Tag.md +docs/Triangle.md +docs/TriangleInterface.md +docs/User.md +docs/UserApi.md +docs/Whale.md +docs/Zebra.md +git_push.sh +src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj +src/Org.OpenAPITools/Api/AnotherFakeApi.cs +src/Org.OpenAPITools/Api/DefaultApi.cs +src/Org.OpenAPITools/Api/FakeApi.cs +src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +src/Org.OpenAPITools/Api/PetApi.cs +src/Org.OpenAPITools/Api/StoreApi.cs +src/Org.OpenAPITools/Api/UserApi.cs +src/Org.OpenAPITools/Client/ApiClient.cs +src/Org.OpenAPITools/Client/ApiException.cs +src/Org.OpenAPITools/Client/ApiResponse.cs +src/Org.OpenAPITools/Client/ClientUtils.cs +src/Org.OpenAPITools/Client/Configuration.cs +src/Org.OpenAPITools/Client/ExceptionFactory.cs +src/Org.OpenAPITools/Client/GlobalConfiguration.cs +src/Org.OpenAPITools/Client/HttpMethod.cs +src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +src/Org.OpenAPITools/Client/IApiAccessor.cs +src/Org.OpenAPITools/Client/IAsynchronousClient.cs +src/Org.OpenAPITools/Client/IReadableConfiguration.cs +src/Org.OpenAPITools/Client/ISynchronousClient.cs +src/Org.OpenAPITools/Client/Multimap.cs +src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs +src/Org.OpenAPITools/Client/RequestOptions.cs +src/Org.OpenAPITools/Client/RetryConfiguration.cs +src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs +src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Animal.cs +src/Org.OpenAPITools/Model/ApiResponse.cs +src/Org.OpenAPITools/Model/Apple.cs +src/Org.OpenAPITools/Model/AppleReq.cs +src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs +src/Org.OpenAPITools/Model/ArrayTest.cs +src/Org.OpenAPITools/Model/Banana.cs +src/Org.OpenAPITools/Model/BananaReq.cs +src/Org.OpenAPITools/Model/BasquePig.cs +src/Org.OpenAPITools/Model/Capitalization.cs +src/Org.OpenAPITools/Model/Cat.cs +src/Org.OpenAPITools/Model/CatAllOf.cs +src/Org.OpenAPITools/Model/Category.cs +src/Org.OpenAPITools/Model/ChildCat.cs +src/Org.OpenAPITools/Model/ChildCatAllOf.cs +src/Org.OpenAPITools/Model/ClassModel.cs +src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs +src/Org.OpenAPITools/Model/DanishPig.cs +src/Org.OpenAPITools/Model/Dog.cs +src/Org.OpenAPITools/Model/DogAllOf.cs +src/Org.OpenAPITools/Model/Drawing.cs +src/Org.OpenAPITools/Model/EnumArrays.cs +src/Org.OpenAPITools/Model/EnumClass.cs +src/Org.OpenAPITools/Model/EnumTest.cs +src/Org.OpenAPITools/Model/EquilateralTriangle.cs +src/Org.OpenAPITools/Model/File.cs +src/Org.OpenAPITools/Model/FileSchemaTestClass.cs +src/Org.OpenAPITools/Model/Foo.cs +src/Org.OpenAPITools/Model/FormatTest.cs +src/Org.OpenAPITools/Model/Fruit.cs +src/Org.OpenAPITools/Model/FruitReq.cs +src/Org.OpenAPITools/Model/GmFruit.cs +src/Org.OpenAPITools/Model/GrandparentAnimal.cs +src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +src/Org.OpenAPITools/Model/HealthCheckResult.cs +src/Org.OpenAPITools/Model/InlineResponseDefault.cs +src/Org.OpenAPITools/Model/IsoscelesTriangle.cs +src/Org.OpenAPITools/Model/List.cs +src/Org.OpenAPITools/Model/Mammal.cs +src/Org.OpenAPITools/Model/MapTest.cs +src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +src/Org.OpenAPITools/Model/Model200Response.cs +src/Org.OpenAPITools/Model/ModelClient.cs +src/Org.OpenAPITools/Model/Name.cs +src/Org.OpenAPITools/Model/NullableClass.cs +src/Org.OpenAPITools/Model/NullableShape.cs +src/Org.OpenAPITools/Model/NumberOnly.cs +src/Org.OpenAPITools/Model/Order.cs +src/Org.OpenAPITools/Model/OuterComposite.cs +src/Org.OpenAPITools/Model/OuterEnum.cs +src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs +src/Org.OpenAPITools/Model/OuterEnumInteger.cs +src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs +src/Org.OpenAPITools/Model/ParentPet.cs +src/Org.OpenAPITools/Model/Pet.cs +src/Org.OpenAPITools/Model/Pig.cs +src/Org.OpenAPITools/Model/Quadrilateral.cs +src/Org.OpenAPITools/Model/QuadrilateralInterface.cs +src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +src/Org.OpenAPITools/Model/Return.cs +src/Org.OpenAPITools/Model/ScaleneTriangle.cs +src/Org.OpenAPITools/Model/Shape.cs +src/Org.OpenAPITools/Model/ShapeInterface.cs +src/Org.OpenAPITools/Model/ShapeOrNull.cs +src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs +src/Org.OpenAPITools/Model/SpecialModelName.cs +src/Org.OpenAPITools/Model/Tag.cs +src/Org.OpenAPITools/Model/Triangle.cs +src/Org.OpenAPITools/Model/TriangleInterface.cs +src/Org.OpenAPITools/Model/User.cs +src/Org.OpenAPITools/Model/Whale.cs +src/Org.OpenAPITools/Model/Zebra.cs +src/Org.OpenAPITools/Org.OpenAPITools.csproj diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION new file mode 100644 index 00000000000..6555596f931 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/Org.OpenAPITools.sln b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/Org.OpenAPITools.sln new file mode 100644 index 00000000000..85fab38c151 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/Org.OpenAPITools.sln @@ -0,0 +1,27 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.OpenAPITools", "src\Org.OpenAPITools\Org.OpenAPITools.csproj", "{fa96c953-af24-457d-8a01-f2fd2a7547a9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Org.OpenAPITools.Test", "src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj", "{19F1DEBC-DE5E-4517-8062-F000CD499087}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {fa96c953-af24-457d-8a01-f2fd2a7547a9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {fa96c953-af24-457d-8a01-f2fd2a7547a9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {fa96c953-af24-457d-8a01-f2fd2a7547a9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {fa96c953-af24-457d-8a01-f2fd2a7547a9}.Release|Any CPU.Build.0 = Release|Any CPU + {19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.Build.0 = Debug|Any CPU + {19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.ActiveCfg = Release|Any CPU + {19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/README.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/README.md new file mode 100644 index 00000000000..325ba2bd65b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/README.md @@ -0,0 +1,266 @@ +# Org.OpenAPITools - the C# library for the 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: \" \\ + +This C# SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: + +- API version: 1.0.0 +- SDK version: 1.0.0 +- Build package: org.openapitools.codegen.languages.CSharpNetCoreClientCodegen + + +## Frameworks supported +- .NET Core >=1.0 +- .NET Framework >=4.6 +- Mono/Xamarin >=vNext + + +## Dependencies + +- [RestSharp](https://www.nuget.org/packages/RestSharp) - 106.11.7 or later +- [Json.NET](https://www.nuget.org/packages/Newtonsoft.Json/) - 12.0.3 or later +- [JsonSubTypes](https://www.nuget.org/packages/JsonSubTypes/) - 1.8.0 or later +- [CompareNETObjects](https://www.nuget.org/packages/CompareNETObjects) - 4.61.0 or later +- [System.ComponentModel.Annotations](https://www.nuget.org/packages/System.ComponentModel.Annotations) - 5.0.0 or later + +The DLLs included in the package may not be the latest version. We recommend using [NuGet](https://docs.nuget.org/consume/installing-nuget) to obtain the latest version of the packages: +``` +Install-Package RestSharp +Install-Package Newtonsoft.Json +Install-Package JsonSubTypes +Install-Package System.ComponentModel.Annotations +Install-Package CompareNETObjects +``` + +NOTE: RestSharp versions greater than 105.1.0 have a bug which causes file uploads to fail. See [RestSharp#742](https://github.com/restsharp/RestSharp/issues/742). +NOTE: RestSharp for .Net Core creates a new socket for each api call, which can lead to a socket exhaustion problem. See [RestSharp#1406](https://github.com/restsharp/RestSharp/issues/1406). + + +## Installation +Generate the DLL using your preferred tool (e.g. `dotnet build`) + +Then include the DLL (under the `bin` folder) in the C# project, and use the namespaces: +```csharp +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; +``` + +## Usage + +To use the API client with a HTTP proxy, setup a `System.Net.WebProxy` +```csharp +Configuration c = new Configuration(); +System.Net.WebProxy webProxy = new System.Net.WebProxy("http://myProxyUrl:80/"); +webProxy.Credentials = System.Net.CredentialCache.DefaultCredentials; +c.Proxy = webProxy; +``` + + +## Getting Started + +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class Example + { + public static void Main() + { + + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new AnotherFakeApi(config); + var modelClient = new ModelClient(); // ModelClient | client model + + try + { + // To test special tags + ModelClient result = apiInstance.Call123TestSpecialTags(modelClient); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling AnotherFakeApi.Call123TestSpecialTags: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + + } + } +} +``` + + +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*AnotherFakeApi* | [**Call123TestSpecialTags**](docs/AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags +*DefaultApi* | [**FooGet**](docs/DefaultApi.md#fooget) | **GET** /foo | +*FakeApi* | [**FakeHealthGet**](docs/FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +*FakeApi* | [**FakeOuterBooleanSerialize**](docs/FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +*FakeApi* | [**FakeOuterCompositeSerialize**](docs/FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +*FakeApi* | [**FakeOuterNumberSerialize**](docs/FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +*FakeApi* | [**FakeOuterStringSerialize**](docs/FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +*FakeApi* | [**GetArrayOfEnums**](docs/FakeApi.md#getarrayofenums) | **GET** /fake/array-of-enums | Array of Enums +*FakeApi* | [**TestBodyWithFileSchema**](docs/FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +*FakeApi* | [**TestBodyWithQueryParams**](docs/FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +*FakeApi* | [**TestClientModel**](docs/FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +*FakeApi* | [**TestEndpointParameters**](docs/FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*FakeApi* | [**TestEnumParameters**](docs/FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +*FakeApi* | [**TestGroupParameters**](docs/FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +*FakeApi* | [**TestInlineAdditionalProperties**](docs/FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*FakeApi* | [**TestJsonFormData**](docs/FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +*FakeApi* | [**TestQueryParameterCollectionFormat**](docs/FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | +*FakeClassnameTags123Api* | [**TestClassname**](docs/FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case +*PetApi* | [**AddPet**](docs/PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**DeletePet**](docs/PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**FindPetsByStatus**](docs/PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**FindPetsByTags**](docs/PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**GetPetById**](docs/PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**UpdatePet**](docs/PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +*PetApi* | [**UpdatePetWithForm**](docs/PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**UploadFile**](docs/PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +*PetApi* | [**UploadFileWithRequiredFile**](docs/PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) +*StoreApi* | [**DeleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*StoreApi* | [**GetInventory**](docs/StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**GetOrderById**](docs/StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +*StoreApi* | [**PlaceOrder**](docs/StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**CreateUser**](docs/UserApi.md#createuser) | **POST** /user | Create user +*UserApi* | [**CreateUsersWithArrayInput**](docs/UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**CreateUsersWithListInput**](docs/UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**DeleteUser**](docs/UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**GetUserByName**](docs/UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +*UserApi* | [**LoginUser**](docs/UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +*UserApi* | [**LogoutUser**](docs/UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**UpdateUser**](docs/UserApi.md#updateuser) | **PUT** /user/{username} | Updated user + + + +## Documentation for Models + + - [Model.AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md) + - [Model.Animal](docs/Animal.md) + - [Model.ApiResponse](docs/ApiResponse.md) + - [Model.Apple](docs/Apple.md) + - [Model.AppleReq](docs/AppleReq.md) + - [Model.ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md) + - [Model.ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md) + - [Model.ArrayTest](docs/ArrayTest.md) + - [Model.Banana](docs/Banana.md) + - [Model.BananaReq](docs/BananaReq.md) + - [Model.BasquePig](docs/BasquePig.md) + - [Model.Capitalization](docs/Capitalization.md) + - [Model.Cat](docs/Cat.md) + - [Model.CatAllOf](docs/CatAllOf.md) + - [Model.Category](docs/Category.md) + - [Model.ChildCat](docs/ChildCat.md) + - [Model.ChildCatAllOf](docs/ChildCatAllOf.md) + - [Model.ClassModel](docs/ClassModel.md) + - [Model.ComplexQuadrilateral](docs/ComplexQuadrilateral.md) + - [Model.DanishPig](docs/DanishPig.md) + - [Model.Dog](docs/Dog.md) + - [Model.DogAllOf](docs/DogAllOf.md) + - [Model.Drawing](docs/Drawing.md) + - [Model.EnumArrays](docs/EnumArrays.md) + - [Model.EnumClass](docs/EnumClass.md) + - [Model.EnumTest](docs/EnumTest.md) + - [Model.EquilateralTriangle](docs/EquilateralTriangle.md) + - [Model.File](docs/File.md) + - [Model.FileSchemaTestClass](docs/FileSchemaTestClass.md) + - [Model.Foo](docs/Foo.md) + - [Model.FormatTest](docs/FormatTest.md) + - [Model.Fruit](docs/Fruit.md) + - [Model.FruitReq](docs/FruitReq.md) + - [Model.GmFruit](docs/GmFruit.md) + - [Model.GrandparentAnimal](docs/GrandparentAnimal.md) + - [Model.HasOnlyReadOnly](docs/HasOnlyReadOnly.md) + - [Model.HealthCheckResult](docs/HealthCheckResult.md) + - [Model.InlineResponseDefault](docs/InlineResponseDefault.md) + - [Model.IsoscelesTriangle](docs/IsoscelesTriangle.md) + - [Model.List](docs/List.md) + - [Model.Mammal](docs/Mammal.md) + - [Model.MapTest](docs/MapTest.md) + - [Model.MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md) + - [Model.Model200Response](docs/Model200Response.md) + - [Model.ModelClient](docs/ModelClient.md) + - [Model.Name](docs/Name.md) + - [Model.NullableClass](docs/NullableClass.md) + - [Model.NullableShape](docs/NullableShape.md) + - [Model.NumberOnly](docs/NumberOnly.md) + - [Model.Order](docs/Order.md) + - [Model.OuterComposite](docs/OuterComposite.md) + - [Model.OuterEnum](docs/OuterEnum.md) + - [Model.OuterEnumDefaultValue](docs/OuterEnumDefaultValue.md) + - [Model.OuterEnumInteger](docs/OuterEnumInteger.md) + - [Model.OuterEnumIntegerDefaultValue](docs/OuterEnumIntegerDefaultValue.md) + - [Model.ParentPet](docs/ParentPet.md) + - [Model.Pet](docs/Pet.md) + - [Model.Pig](docs/Pig.md) + - [Model.Quadrilateral](docs/Quadrilateral.md) + - [Model.QuadrilateralInterface](docs/QuadrilateralInterface.md) + - [Model.ReadOnlyFirst](docs/ReadOnlyFirst.md) + - [Model.Return](docs/Return.md) + - [Model.ScaleneTriangle](docs/ScaleneTriangle.md) + - [Model.Shape](docs/Shape.md) + - [Model.ShapeInterface](docs/ShapeInterface.md) + - [Model.ShapeOrNull](docs/ShapeOrNull.md) + - [Model.SimpleQuadrilateral](docs/SimpleQuadrilateral.md) + - [Model.SpecialModelName](docs/SpecialModelName.md) + - [Model.Tag](docs/Tag.md) + - [Model.Triangle](docs/Triangle.md) + - [Model.TriangleInterface](docs/TriangleInterface.md) + - [Model.User](docs/User.md) + - [Model.Whale](docs/Whale.md) + - [Model.Zebra](docs/Zebra.md) + + + +## Documentation for Authorization + + +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + + +### api_key_query + +- **Type**: API key +- **API key parameter name**: api_key_query +- **Location**: URL query string + + +### bearer_test + +- **Type**: Bearer Authentication + + +### http_basic_test + +- **Type**: HTTP basic authentication + + +### http_signature_test + + + +### petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - write:pets: modify pets in your account + - read:pets: read your pets + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/appveyor.yml b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/appveyor.yml new file mode 100644 index 00000000000..f76f63cee50 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/appveyor.yml @@ -0,0 +1,9 @@ +# auto-generated by OpenAPI Generator (https://github.com/OpenAPITools/openapi-generator) +# +image: Visual Studio 2019 +clone_depth: 1 +build_script: +- dotnet build -c Release +- dotnet test -c Release +after_build: +- dotnet pack .\src\Org.OpenAPITools\Org.OpenAPITools.csproj -o ../../output -c Release --no-build diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/AdditionalPropertiesClass.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/AdditionalPropertiesClass.md new file mode 100644 index 00000000000..c40cd0f8acc --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/AdditionalPropertiesClass.md @@ -0,0 +1,17 @@ +# Org.OpenAPITools.Model.AdditionalPropertiesClass + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**MapProperty** | **Dictionary<string, string>** | | [optional] +**MapOfMapProperty** | **Dictionary<string, Dictionary<string, string>>** | | [optional] +**Anytype1** | **Object** | | [optional] +**MapWithUndeclaredPropertiesAnytype1** | **Object** | | [optional] +**MapWithUndeclaredPropertiesAnytype2** | **Object** | | [optional] +**MapWithUndeclaredPropertiesAnytype3** | **Dictionary<string, Object>** | | [optional] +**EmptyMap** | **Object** | an object with no declared properties and no undeclared properties, hence it's an empty map. | [optional] +**MapWithUndeclaredPropertiesString** | **Dictionary<string, string>** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Animal.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Animal.md new file mode 100644 index 00000000000..f14b7a3ae4e --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Animal.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Animal + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClassName** | **string** | | +**Color** | **string** | | [optional] [default to "red"] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/AnotherFakeApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/AnotherFakeApi.md new file mode 100644 index 00000000000..93fca7e408a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/AnotherFakeApi.md @@ -0,0 +1,80 @@ +# Org.OpenAPITools.Api.AnotherFakeApi + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**Call123TestSpecialTags**](AnotherFakeApi.md#call123testspecialtags) | **PATCH** /another-fake/dummy | To test special tags + + + +# **Call123TestSpecialTags** +> ModelClient Call123TestSpecialTags (ModelClient modelClient) + +To test special tags + +To test special tags and operation ID starting with number + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class Call123TestSpecialTagsExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new AnotherFakeApi(config); + var modelClient = new ModelClient(); // ModelClient | client model + + try + { + // To test special tags + ModelClient result = apiInstance.Call123TestSpecialTags(modelClient); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling AnotherFakeApi.Call123TestSpecialTags: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **modelClient** | [**ModelClient**](ModelClient.md)| client model | + +### Return type + +[**ModelClient**](ModelClient.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ApiResponse.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ApiResponse.md new file mode 100644 index 00000000000..bb723d2baa1 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ApiResponse.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.ApiResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Code** | **int** | | [optional] +**Type** | **string** | | [optional] +**Message** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Apple.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Apple.md new file mode 100644 index 00000000000..1f819f8f281 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Apple.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Apple + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Cultivar** | **string** | | [optional] +**Origin** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/AppleReq.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/AppleReq.md new file mode 100644 index 00000000000..005b8f8058a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/AppleReq.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.AppleReq + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Cultivar** | **string** | | +**Mealy** | **bool** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ArrayOfArrayOfNumberOnly.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ArrayOfArrayOfNumberOnly.md new file mode 100644 index 00000000000..4764c0ff80c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ArrayOfArrayOfNumberOnly.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.ArrayOfArrayOfNumberOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ArrayArrayNumber** | **List<List<decimal>>** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ArrayOfNumberOnly.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ArrayOfNumberOnly.md new file mode 100644 index 00000000000..d93717103b8 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ArrayOfNumberOnly.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.ArrayOfNumberOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ArrayNumber** | **List<decimal>** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ArrayTest.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ArrayTest.md new file mode 100644 index 00000000000..d74d11bae77 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ArrayTest.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.ArrayTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ArrayOfString** | **List<string>** | | [optional] +**ArrayArrayOfInteger** | **List<List<long>>** | | [optional] +**ArrayArrayOfModel** | **List<List<ReadOnlyFirst>>** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Banana.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Banana.md new file mode 100644 index 00000000000..226952d1cec --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Banana.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Banana + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**LengthCm** | **decimal** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/BananaReq.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/BananaReq.md new file mode 100644 index 00000000000..f99aab99e38 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/BananaReq.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.BananaReq + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**LengthCm** | **decimal** | | +**Sweet** | **bool** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/BasquePig.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/BasquePig.md new file mode 100644 index 00000000000..681be0bc7e3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/BasquePig.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.BasquePig + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClassName** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Capitalization.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Capitalization.md new file mode 100644 index 00000000000..1b1352d918f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Capitalization.md @@ -0,0 +1,15 @@ +# Org.OpenAPITools.Model.Capitalization + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**SmallCamel** | **string** | | [optional] +**CapitalCamel** | **string** | | [optional] +**SmallSnake** | **string** | | [optional] +**CapitalSnake** | **string** | | [optional] +**SCAETHFlowPoints** | **string** | | [optional] +**ATT_NAME** | **string** | Name 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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Cat.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Cat.md new file mode 100644 index 00000000000..aa1ac17604e --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Cat.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.Cat + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClassName** | **string** | | +**Color** | **string** | | [optional] [default to "red"] +**Declawed** | **bool** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/CatAllOf.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/CatAllOf.md new file mode 100644 index 00000000000..6cbaaa14e81 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/CatAllOf.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.CatAllOf + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Declawed** | **bool** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Category.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Category.md new file mode 100644 index 00000000000..032a1faeb3f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Category.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Category + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long** | | [optional] +**Name** | **string** | | [default to "default-name"] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ChildCat.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ChildCat.md new file mode 100644 index 00000000000..8ce6449e5f2 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ChildCat.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.ChildCat + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | | [optional] +**PetType** | **string** | | [default to PetTypeEnum.ChildCat] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ChildCatAllOf.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ChildCatAllOf.md new file mode 100644 index 00000000000..864d33e80e7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ChildCatAllOf.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.ChildCatAllOf + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | | [optional] +**PetType** | **string** | | [optional] [default to PetTypeEnum.ChildCat] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ClassModel.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ClassModel.md new file mode 100644 index 00000000000..f39982657c8 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ClassModel.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.ClassModel +Model for testing model with \"_class\" property + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Class** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ComplexQuadrilateral.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ComplexQuadrilateral.md new file mode 100644 index 00000000000..65a6097ce3f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ComplexQuadrilateral.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.ComplexQuadrilateral + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/DanishPig.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/DanishPig.md new file mode 100644 index 00000000000..d9cf6527a3f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/DanishPig.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.DanishPig + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClassName** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/DefaultApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/DefaultApi.md new file mode 100644 index 00000000000..6f5de6b6851 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/DefaultApi.md @@ -0,0 +1,73 @@ +# Org.OpenAPITools.Api.DefaultApi + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**FooGet**](DefaultApi.md#fooget) | **GET** /foo | + + + +# **FooGet** +> InlineResponseDefault FooGet () + + + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FooGetExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new DefaultApi(config); + + try + { + InlineResponseDefault result = apiInstance.FooGet(); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling DefaultApi.FooGet: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**InlineResponseDefault**](InlineResponseDefault.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **0** | response | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Dog.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Dog.md new file mode 100644 index 00000000000..3aa00144e9a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Dog.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.Dog + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClassName** | **string** | | +**Color** | **string** | | [optional] [default to "red"] +**Breed** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/DogAllOf.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/DogAllOf.md new file mode 100644 index 00000000000..c1096f2c310 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/DogAllOf.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.DogAllOf + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Breed** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Drawing.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Drawing.md new file mode 100644 index 00000000000..6b7122940af --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Drawing.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.Drawing + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**MainShape** | [**Shape**](Shape.md) | | [optional] +**ShapeOrNull** | [**ShapeOrNull**](ShapeOrNull.md) | | [optional] +**NullableShape** | [**NullableShape**](NullableShape.md) | | [optional] +**Shapes** | [**List<Shape>**](Shape.md) | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EnumArrays.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EnumArrays.md new file mode 100644 index 00000000000..8881585a4c7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EnumArrays.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.EnumArrays + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**JustSymbol** | **string** | | [optional] +**ArrayEnum** | **List<string>** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EnumClass.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EnumClass.md new file mode 100644 index 00000000000..38f309437db --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EnumClass.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.EnumClass + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EnumTest.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EnumTest.md new file mode 100644 index 00000000000..5ce3c4addd9 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EnumTest.md @@ -0,0 +1,18 @@ +# Org.OpenAPITools.Model.EnumTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**EnumString** | **string** | | [optional] +**EnumStringRequired** | **string** | | +**EnumInteger** | **int** | | [optional] +**EnumIntegerOnly** | **int** | | [optional] +**EnumNumber** | **double** | | [optional] +**OuterEnum** | **OuterEnum** | | [optional] +**OuterEnumInteger** | **OuterEnumInteger** | | [optional] +**OuterEnumDefaultValue** | **OuterEnumDefaultValue** | | [optional] +**OuterEnumIntegerDefaultValue** | **OuterEnumIntegerDefaultValue** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EquilateralTriangle.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EquilateralTriangle.md new file mode 100644 index 00000000000..ab06d96ca30 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/EquilateralTriangle.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.EquilateralTriangle + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**TriangleType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FakeApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FakeApi.md new file mode 100644 index 00000000000..af8d565abfb --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FakeApi.md @@ -0,0 +1,1126 @@ +# Org.OpenAPITools.Api.FakeApi + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**FakeHealthGet**](FakeApi.md#fakehealthget) | **GET** /fake/health | Health check endpoint +[**FakeOuterBooleanSerialize**](FakeApi.md#fakeouterbooleanserialize) | **POST** /fake/outer/boolean | +[**FakeOuterCompositeSerialize**](FakeApi.md#fakeoutercompositeserialize) | **POST** /fake/outer/composite | +[**FakeOuterNumberSerialize**](FakeApi.md#fakeouternumberserialize) | **POST** /fake/outer/number | +[**FakeOuterStringSerialize**](FakeApi.md#fakeouterstringserialize) | **POST** /fake/outer/string | +[**GetArrayOfEnums**](FakeApi.md#getarrayofenums) | **GET** /fake/array-of-enums | Array of Enums +[**TestBodyWithFileSchema**](FakeApi.md#testbodywithfileschema) | **PUT** /fake/body-with-file-schema | +[**TestBodyWithQueryParams**](FakeApi.md#testbodywithqueryparams) | **PUT** /fake/body-with-query-params | +[**TestClientModel**](FakeApi.md#testclientmodel) | **PATCH** /fake | To test \"client\" model +[**TestEndpointParameters**](FakeApi.md#testendpointparameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +[**TestEnumParameters**](FakeApi.md#testenumparameters) | **GET** /fake | To test enum parameters +[**TestGroupParameters**](FakeApi.md#testgroupparameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) +[**TestInlineAdditionalProperties**](FakeApi.md#testinlineadditionalproperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +[**TestJsonFormData**](FakeApi.md#testjsonformdata) | **GET** /fake/jsonFormData | test json serialization of form data +[**TestQueryParameterCollectionFormat**](FakeApi.md#testqueryparametercollectionformat) | **PUT** /fake/test-query-paramters | + + + +# **FakeHealthGet** +> HealthCheckResult FakeHealthGet () + +Health check endpoint + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FakeHealthGetExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + + try + { + // Health check endpoint + HealthCheckResult result = apiInstance.FakeHealthGet(); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.FakeHealthGet: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**HealthCheckResult**](HealthCheckResult.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | The instance started successfully | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **FakeOuterBooleanSerialize** +> bool FakeOuterBooleanSerialize (bool? body = null) + + + +Test serialization of outer boolean types + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FakeOuterBooleanSerializeExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var body = true; // bool? | Input boolean as post body (optional) + + try + { + bool result = apiInstance.FakeOuterBooleanSerialize(body); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.FakeOuterBooleanSerialize: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **bool?**| Input boolean as post body | [optional] + +### Return type + +**bool** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: */* + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Output boolean | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **FakeOuterCompositeSerialize** +> OuterComposite FakeOuterCompositeSerialize (OuterComposite outerComposite = null) + + + +Test serialization of object with outer number type + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FakeOuterCompositeSerializeExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var outerComposite = new OuterComposite(); // OuterComposite | Input composite as post body (optional) + + try + { + OuterComposite result = apiInstance.FakeOuterCompositeSerialize(outerComposite); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.FakeOuterCompositeSerialize: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **outerComposite** | [**OuterComposite**](OuterComposite.md)| Input composite as post body | [optional] + +### Return type + +[**OuterComposite**](OuterComposite.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: */* + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Output composite | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **FakeOuterNumberSerialize** +> decimal FakeOuterNumberSerialize (decimal? body = null) + + + +Test serialization of outer number types + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FakeOuterNumberSerializeExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var body = 8.14; // decimal? | Input number as post body (optional) + + try + { + decimal result = apiInstance.FakeOuterNumberSerialize(body); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.FakeOuterNumberSerialize: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **decimal?**| Input number as post body | [optional] + +### Return type + +**decimal** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: */* + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Output number | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **FakeOuterStringSerialize** +> string FakeOuterStringSerialize (string body = null) + + + +Test serialization of outer string types + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FakeOuterStringSerializeExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var body = body_example; // string | Input string as post body (optional) + + try + { + string result = apiInstance.FakeOuterStringSerialize(body); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.FakeOuterStringSerialize: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | **string**| Input string as post body | [optional] + +### Return type + +**string** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: */* + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Output string | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **GetArrayOfEnums** +> List<OuterEnum> GetArrayOfEnums () + +Array of Enums + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class GetArrayOfEnumsExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + + try + { + // Array of Enums + List result = apiInstance.GetArrayOfEnums(); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.GetArrayOfEnums: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**List<OuterEnum>**](OuterEnum.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Got named array of enums | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestBodyWithFileSchema** +> void TestBodyWithFileSchema (FileSchemaTestClass fileSchemaTestClass) + + + +For this test, the body for this request much reference a schema named `File`. + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestBodyWithFileSchemaExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var fileSchemaTestClass = new FileSchemaTestClass(); // FileSchemaTestClass | + + try + { + apiInstance.TestBodyWithFileSchema(fileSchemaTestClass); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestBodyWithFileSchema: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **fileSchemaTestClass** | [**FileSchemaTestClass**](FileSchemaTestClass.md)| | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Success | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestBodyWithQueryParams** +> void TestBodyWithQueryParams (string query, User user) + + + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestBodyWithQueryParamsExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var query = query_example; // string | + var user = new User(); // User | + + try + { + apiInstance.TestBodyWithQueryParams(query, user); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestBodyWithQueryParams: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **query** | **string**| | + **user** | [**User**](User.md)| | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Success | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestClientModel** +> ModelClient TestClientModel (ModelClient modelClient) + +To test \"client\" model + +To test \"client\" model + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestClientModelExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var modelClient = new ModelClient(); // ModelClient | client model + + try + { + // To test \"client\" model + ModelClient result = apiInstance.TestClientModel(modelClient); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestClientModel: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **modelClient** | [**ModelClient**](ModelClient.md)| client model | + +### Return type + +[**ModelClient**](ModelClient.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestEndpointParameters** +> void TestEndpointParameters (decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = null, int? int32 = null, long? int64 = null, float? _float = null, string _string = null, System.IO.Stream binary = null, DateTime? date = null, DateTime? dateTime = null, string password = null, string callback = null) + +Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + +Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestEndpointParametersExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure HTTP basic authorization: http_basic_test + config.Username = "YOUR_USERNAME"; + config.Password = "YOUR_PASSWORD"; + + var apiInstance = new FakeApi(config); + var number = 8.14; // decimal | None + var _double = 1.2D; // double | None + var patternWithoutDelimiter = patternWithoutDelimiter_example; // string | None + var _byte = BYTE_ARRAY_DATA_HERE; // byte[] | None + var integer = 56; // int? | None (optional) + var int32 = 56; // int? | None (optional) + var int64 = 789; // long? | None (optional) + var _float = 3.4F; // float? | None (optional) + var _string = _string_example; // string | None (optional) + var binary = BINARY_DATA_HERE; // System.IO.Stream | None (optional) + var date = 2013-10-20; // DateTime? | None (optional) + var dateTime = 2013-10-20T19:20:30+01:00; // DateTime? | None (optional) (default to "2010-02-01T10:20:10.111110+01:00") + var password = password_example; // string | None (optional) + var callback = callback_example; // string | None (optional) + + try + { + // Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + apiInstance.TestEndpointParameters(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, _string, binary, date, dateTime, password, callback); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestEndpointParameters: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **number** | **decimal**| None | + **_double** | **double**| None | + **patternWithoutDelimiter** | **string**| None | + **_byte** | **byte[]**| None | + **integer** | **int?**| None | [optional] + **int32** | **int?**| None | [optional] + **int64** | **long?**| None | [optional] + **_float** | **float?**| None | [optional] + **_string** | **string**| None | [optional] + **binary** | **System.IO.Stream****System.IO.Stream**| None | [optional] + **date** | **DateTime?**| None | [optional] + **dateTime** | **DateTime?**| None | [optional] [default to "2010-02-01T10:20:10.111110+01:00"] + **password** | **string**| None | [optional] + **callback** | **string**| None | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[http_basic_test](../README.md#http_basic_test) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid username supplied | - | +| **404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestEnumParameters** +> void TestEnumParameters (List enumHeaderStringArray = null, string enumHeaderString = null, List enumQueryStringArray = null, string enumQueryString = null, int? enumQueryInteger = null, double? enumQueryDouble = null, List enumFormStringArray = null, string enumFormString = null) + +To test enum parameters + +To test enum parameters + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestEnumParametersExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var enumHeaderStringArray = enumHeaderStringArray_example; // List | Header parameter enum test (string array) (optional) + var enumHeaderString = enumHeaderString_example; // string | Header parameter enum test (string) (optional) (default to -efg) + var enumQueryStringArray = enumQueryStringArray_example; // List | Query parameter enum test (string array) (optional) + var enumQueryString = enumQueryString_example; // string | Query parameter enum test (string) (optional) (default to -efg) + var enumQueryInteger = 56; // int? | Query parameter enum test (double) (optional) + var enumQueryDouble = 1.2D; // double? | Query parameter enum test (double) (optional) + var enumFormStringArray = new List(); // List | Form parameter enum test (string array) (optional) (default to $) + var enumFormString = enumFormString_example; // string | Form parameter enum test (string) (optional) (default to -efg) + + try + { + // To test enum parameters + apiInstance.TestEnumParameters(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestEnumParameters: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **enumHeaderStringArray** | **List<string>**| Header parameter enum test (string array) | [optional] + **enumHeaderString** | **string**| Header parameter enum test (string) | [optional] [default to -efg] + **enumQueryStringArray** | **List<string>**| Query parameter enum test (string array) | [optional] + **enumQueryString** | **string**| Query parameter enum test (string) | [optional] [default to -efg] + **enumQueryInteger** | **int?**| Query parameter enum test (double) | [optional] + **enumQueryDouble** | **double?**| Query parameter enum test (double) | [optional] + **enumFormStringArray** | [**List<string>**](string.md)| Form parameter enum test (string array) | [optional] [default to $] + **enumFormString** | **string**| Form parameter enum test (string) | [optional] [default to -efg] + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid request | - | +| **404** | Not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestGroupParameters** +> void TestGroupParameters (int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = null, bool? booleanGroup = null, long? int64Group = null) + +Fake endpoint to test group parameters (optional) + +Fake endpoint to test group parameters (optional) + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestGroupParametersExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure Bearer token for authorization: bearer_test + config.AccessToken = "YOUR_BEARER_TOKEN"; + + var apiInstance = new FakeApi(config); + var requiredStringGroup = 56; // int | Required String in group parameters + var requiredBooleanGroup = true; // bool | Required Boolean in group parameters + var requiredInt64Group = 789; // long | Required Integer in group parameters + var stringGroup = 56; // int? | String in group parameters (optional) + var booleanGroup = true; // bool? | Boolean in group parameters (optional) + var int64Group = 789; // long? | Integer in group parameters (optional) + + try + { + // Fake endpoint to test group parameters (optional) + apiInstance.TestGroupParameters(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestGroupParameters: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **requiredStringGroup** | **int**| Required String in group parameters | + **requiredBooleanGroup** | **bool**| Required Boolean in group parameters | + **requiredInt64Group** | **long**| Required Integer in group parameters | + **stringGroup** | **int?**| String in group parameters | [optional] + **booleanGroup** | **bool?**| Boolean in group parameters | [optional] + **int64Group** | **long?**| Integer in group parameters | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[bearer_test](../README.md#bearer_test) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Someting wrong | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestInlineAdditionalProperties** +> void TestInlineAdditionalProperties (Dictionary requestBody) + +test inline additionalProperties + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestInlineAdditionalPropertiesExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var requestBody = new Dictionary(); // Dictionary | request body + + try + { + // test inline additionalProperties + apiInstance.TestInlineAdditionalProperties(requestBody); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestInlineAdditionalProperties: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **requestBody** | [**Dictionary<string, string>**](string.md)| request body | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestJsonFormData** +> void TestJsonFormData (string param, string param2) + +test json serialization of form data + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestJsonFormDataExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var param = param_example; // string | field1 + var param2 = param2_example; // string | field2 + + try + { + // test json serialization of form data + apiInstance.TestJsonFormData(param, param2); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestJsonFormData: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **param** | **string**| field1 | + **param2** | **string**| field2 | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **TestQueryParameterCollectionFormat** +> void TestQueryParameterCollectionFormat (List pipe, List ioutil, List http, List url, List context) + + + +To test the collection format in query parameters + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestQueryParameterCollectionFormatExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new FakeApi(config); + var pipe = new List(); // List | + var ioutil = new List(); // List | + var http = new List(); // List | + var url = new List(); // List | + var context = new List(); // List | + + try + { + apiInstance.TestQueryParameterCollectionFormat(pipe, ioutil, http, url, context); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeApi.TestQueryParameterCollectionFormat: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pipe** | [**List<string>**](string.md)| | + **ioutil** | [**List<string>**](string.md)| | + **http** | [**List<string>**](string.md)| | + **url** | [**List<string>**](string.md)| | + **context** | [**List<string>**](string.md)| | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | Success | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FakeClassnameTags123Api.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FakeClassnameTags123Api.md new file mode 100644 index 00000000000..13235fbd10f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FakeClassnameTags123Api.md @@ -0,0 +1,85 @@ +# Org.OpenAPITools.Api.FakeClassnameTags123Api + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**TestClassname**](FakeClassnameTags123Api.md#testclassname) | **PATCH** /fake_classname_test | To test class name in snake case + + + +# **TestClassname** +> ModelClient TestClassname (ModelClient modelClient) + +To test class name in snake case + +To test class name in snake case + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class TestClassnameExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure API key authorization: api_key_query + config.AddApiKey("api_key_query", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // config.AddApiKeyPrefix("api_key_query", "Bearer"); + + var apiInstance = new FakeClassnameTags123Api(config); + var modelClient = new ModelClient(); // ModelClient | client model + + try + { + // To test class name in snake case + ModelClient result = apiInstance.TestClassname(modelClient); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling FakeClassnameTags123Api.TestClassname: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **modelClient** | [**ModelClient**](ModelClient.md)| client model | + +### Return type + +[**ModelClient**](ModelClient.md) + +### Authorization + +[api_key_query](../README.md#api_key_query) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/File.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/File.md new file mode 100644 index 00000000000..28959feda08 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/File.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.File +Must be named `File` for test. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**SourceURI** | **string** | Test capitalization | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FileSchemaTestClass.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FileSchemaTestClass.md new file mode 100644 index 00000000000..0ce4be56cc7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FileSchemaTestClass.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.FileSchemaTestClass + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**File** | [**File**](File.md) | | [optional] +**Files** | [**List<File>**](File.md) | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Foo.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Foo.md new file mode 100644 index 00000000000..92cf4572321 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Foo.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Foo + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Bar** | **string** | | [optional] [default to "bar"] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FormatTest.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FormatTest.md new file mode 100644 index 00000000000..39a70be7ad4 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FormatTest.md @@ -0,0 +1,25 @@ +# Org.OpenAPITools.Model.FormatTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Integer** | **int** | | [optional] +**Int32** | **int** | | [optional] +**Int64** | **long** | | [optional] +**Number** | **decimal** | | +**Float** | **float** | | [optional] +**Double** | **double** | | [optional] +**Decimal** | **decimal** | | [optional] +**String** | **string** | | [optional] +**Byte** | **byte[]** | | +**Binary** | **System.IO.Stream** | | [optional] +**Date** | **DateTime** | | +**DateTime** | **DateTime** | | [optional] +**Uuid** | **Guid** | | [optional] +**Password** | **string** | | +**PatternWithDigits** | **string** | A string that is a 10 digit number. Can have leading zeros. | [optional] +**PatternWithDigitsAndDelimiter** | **string** | A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Fruit.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Fruit.md new file mode 100644 index 00000000000..56b1c9f00ab --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Fruit.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.Fruit + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Color** | **string** | | [optional] +**Cultivar** | **string** | | [optional] +**Origin** | **string** | | [optional] +**LengthCm** | **decimal** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FruitReq.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FruitReq.md new file mode 100644 index 00000000000..5db6b0e2d1d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/FruitReq.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.FruitReq + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Cultivar** | **string** | | +**Mealy** | **bool** | | [optional] +**LengthCm** | **decimal** | | +**Sweet** | **bool** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/GmFruit.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/GmFruit.md new file mode 100644 index 00000000000..2cc2d496e67 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/GmFruit.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.GmFruit + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Color** | **string** | | [optional] +**Cultivar** | **string** | | [optional] +**Origin** | **string** | | [optional] +**LengthCm** | **decimal** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/GrandparentAnimal.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/GrandparentAnimal.md new file mode 100644 index 00000000000..461ebfe34c2 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/GrandparentAnimal.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.GrandparentAnimal + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PetType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/HasOnlyReadOnly.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/HasOnlyReadOnly.md new file mode 100644 index 00000000000..64549c18b0a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/HasOnlyReadOnly.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.HasOnlyReadOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Bar** | **string** | | [optional] [readonly] +**Foo** | **string** | | [optional] [readonly] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/HealthCheckResult.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/HealthCheckResult.md new file mode 100644 index 00000000000..f7d1a7eb688 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/HealthCheckResult.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.HealthCheckResult +Just a string to inform instance is up and running. Make it nullable in hope to get it as pointer in generated model. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**NullableMessage** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/InlineResponseDefault.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/InlineResponseDefault.md new file mode 100644 index 00000000000..e3d55e133f3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/InlineResponseDefault.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.InlineResponseDefault + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**String** | [**Foo**](Foo.md) | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/IsoscelesTriangle.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/IsoscelesTriangle.md new file mode 100644 index 00000000000..f0eef14fabb --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/IsoscelesTriangle.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.IsoscelesTriangle + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**TriangleType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/List.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/List.md new file mode 100644 index 00000000000..2862c7e5321 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/List.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.List + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**_123List** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Mammal.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Mammal.md new file mode 100644 index 00000000000..aab8f4db9c7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Mammal.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.Mammal + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**HasBaleen** | **bool** | | [optional] +**HasTeeth** | **bool** | | [optional] +**ClassName** | **string** | | +**Type** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/MapTest.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/MapTest.md new file mode 100644 index 00000000000..dc1ebba4e76 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/MapTest.md @@ -0,0 +1,13 @@ +# Org.OpenAPITools.Model.MapTest + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**MapMapOfString** | **Dictionary<string, Dictionary<string, string>>** | | [optional] +**MapOfEnumString** | **Dictionary<string, string>** | | [optional] +**DirectMap** | **Dictionary<string, bool>** | | [optional] +**IndirectMap** | **Dictionary<string, bool>** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/MixedPropertiesAndAdditionalPropertiesClass.md new file mode 100644 index 00000000000..5f57db957d7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/MixedPropertiesAndAdditionalPropertiesClass.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.MixedPropertiesAndAdditionalPropertiesClass + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Uuid** | **Guid** | | [optional] +**DateTime** | **DateTime** | | [optional] +**Map** | [**Dictionary<string, Animal>**](Animal.md) | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Model200Response.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Model200Response.md new file mode 100644 index 00000000000..31f4d86fe43 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Model200Response.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.Model200Response +Model for testing model name starting with number + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **int** | | [optional] +**Class** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ModelClient.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ModelClient.md new file mode 100644 index 00000000000..c29a6287433 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ModelClient.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.ModelClient + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**_Client** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Name.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Name.md new file mode 100644 index 00000000000..692af702b5b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Name.md @@ -0,0 +1,14 @@ +# Org.OpenAPITools.Model.Name +Model for testing model name same as property name + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**_Name** | **int** | | +**SnakeCase** | **int** | | [optional] [readonly] +**Property** | **string** | | [optional] +**_123Number** | **int** | | [optional] [readonly] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/NullableClass.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/NullableClass.md new file mode 100644 index 00000000000..7bab4fa20ee --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/NullableClass.md @@ -0,0 +1,21 @@ +# Org.OpenAPITools.Model.NullableClass + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**IntegerProp** | **int?** | | [optional] +**NumberProp** | **decimal?** | | [optional] +**BooleanProp** | **bool?** | | [optional] +**StringProp** | **string** | | [optional] +**DateProp** | **DateTime?** | | [optional] +**DatetimeProp** | **DateTime?** | | [optional] +**ArrayNullableProp** | **List<Object>** | | [optional] +**ArrayAndItemsNullableProp** | **List<Object>** | | [optional] +**ArrayItemsNullable** | **List<Object>** | | [optional] +**ObjectNullableProp** | **Dictionary<string, Object>** | | [optional] +**ObjectAndItemsNullableProp** | **Dictionary<string, Object>** | | [optional] +**ObjectItemsNullable** | **Dictionary<string, Object>** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/NullableShape.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/NullableShape.md new file mode 100644 index 00000000000..f8fb004da80 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/NullableShape.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.NullableShape +The value may be a shape or the 'null' value. The 'nullable' attribute was introduced in OAS schema >= 3.0 and has been deprecated in OAS schema >= 3.1. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/NumberOnly.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/NumberOnly.md new file mode 100644 index 00000000000..14a7c0f1071 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/NumberOnly.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.NumberOnly + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**JustNumber** | **decimal** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Order.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Order.md new file mode 100644 index 00000000000..66c55c3b473 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Order.md @@ -0,0 +1,15 @@ +# Org.OpenAPITools.Model.Order + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long** | | [optional] +**PetId** | **long** | | [optional] +**Quantity** | **int** | | [optional] +**ShipDate** | **DateTime** | | [optional] +**Status** | **string** | Order Status | [optional] +**Complete** | **bool** | | [optional] [default to false] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterComposite.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterComposite.md new file mode 100644 index 00000000000..eb42bcc1aaa --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterComposite.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.OuterComposite + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**MyNumber** | **decimal** | | [optional] +**MyString** | **string** | | [optional] +**MyBoolean** | **bool** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnum.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnum.md new file mode 100644 index 00000000000..245765c7845 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnum.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.OuterEnum + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnumDefaultValue.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnumDefaultValue.md new file mode 100644 index 00000000000..3ffaa1086a6 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnumDefaultValue.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.OuterEnumDefaultValue + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnumInteger.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnumInteger.md new file mode 100644 index 00000000000..567858392db --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnumInteger.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.OuterEnumInteger + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnumIntegerDefaultValue.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnumIntegerDefaultValue.md new file mode 100644 index 00000000000..35c75a44372 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/OuterEnumIntegerDefaultValue.md @@ -0,0 +1,9 @@ +# Org.OpenAPITools.Model.OuterEnumIntegerDefaultValue + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ParentPet.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ParentPet.md new file mode 100644 index 00000000000..0e18ba6d591 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ParentPet.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.ParentPet + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**PetType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Pet.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Pet.md new file mode 100644 index 00000000000..c7224764e2d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Pet.md @@ -0,0 +1,15 @@ +# Org.OpenAPITools.Model.Pet + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long** | | [optional] +**Category** | [**Category**](Category.md) | | [optional] +**Name** | **string** | | +**PhotoUrls** | **List<string>** | | +**Tags** | [**List<Tag>**](Tag.md) | | [optional] +**Status** | **string** | pet status in the store | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/PetApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/PetApi.md new file mode 100644 index 00000000000..47820f406dd --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/PetApi.md @@ -0,0 +1,689 @@ +# Org.OpenAPITools.Api.PetApi + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**AddPet**](PetApi.md#addpet) | **POST** /pet | Add a new pet to the store +[**DeletePet**](PetApi.md#deletepet) | **DELETE** /pet/{petId} | Deletes a pet +[**FindPetsByStatus**](PetApi.md#findpetsbystatus) | **GET** /pet/findByStatus | Finds Pets by status +[**FindPetsByTags**](PetApi.md#findpetsbytags) | **GET** /pet/findByTags | Finds Pets by tags +[**GetPetById**](PetApi.md#getpetbyid) | **GET** /pet/{petId} | Find pet by ID +[**UpdatePet**](PetApi.md#updatepet) | **PUT** /pet | Update an existing pet +[**UpdatePetWithForm**](PetApi.md#updatepetwithform) | **POST** /pet/{petId} | Updates a pet in the store with form data +[**UploadFile**](PetApi.md#uploadfile) | **POST** /pet/{petId}/uploadImage | uploads an image +[**UploadFileWithRequiredFile**](PetApi.md#uploadfilewithrequiredfile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) + + + +# **AddPet** +> void AddPet (Pet pet) + +Add a new pet to the store + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class AddPetExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var pet = new Pet(); // Pet | Pet object that needs to be added to the store + + try + { + // Add a new pet to the store + apiInstance.AddPet(pet); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.AddPet: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + +### Return type + +void (empty response body) + +### Authorization + +[http_signature_test](../README.md#http_signature_test), [petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **DeletePet** +> void DeletePet (long petId, string apiKey = null) + +Deletes a pet + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class DeletePetExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var petId = 789; // long | Pet id to delete + var apiKey = apiKey_example; // string | (optional) + + try + { + // Deletes a pet + apiInstance.DeletePet(petId, apiKey); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.DeletePet: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **long**| Pet id to delete | + **apiKey** | **string**| | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid pet value | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **FindPetsByStatus** +> List<Pet> FindPetsByStatus (List status) + +Finds Pets by status + +Multiple status values can be provided with comma separated strings + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FindPetsByStatusExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var status = status_example; // List | Status values that need to be considered for filter + + try + { + // Finds Pets by status + List result = apiInstance.FindPetsByStatus(status); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.FindPetsByStatus: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **status** | **List<string>**| Status values that need to be considered for filter | + +### Return type + +[**List<Pet>**](Pet.md) + +### Authorization + +[http_signature_test](../README.md#http_signature_test), [petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid status value | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **FindPetsByTags** +> List<Pet> FindPetsByTags (List tags) + +Finds Pets by tags + +Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class FindPetsByTagsExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var tags = new List(); // List | Tags to filter by + + try + { + // Finds Pets by tags + List result = apiInstance.FindPetsByTags(tags); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.FindPetsByTags: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tags** | [**List<string>**](string.md)| Tags to filter by | + +### Return type + +[**List<Pet>**](Pet.md) + +### Authorization + +[http_signature_test](../README.md#http_signature_test), [petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid tag value | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **GetPetById** +> Pet GetPetById (long petId) + +Find pet by ID + +Returns a single pet + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class GetPetByIdExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure API key authorization: api_key + config.AddApiKey("api_key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // config.AddApiKeyPrefix("api_key", "Bearer"); + + var apiInstance = new PetApi(config); + var petId = 789; // long | ID of pet to return + + try + { + // Find pet by ID + Pet result = apiInstance.GetPetById(petId); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.GetPetById: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **long**| ID of pet to return | + +### Return type + +[**Pet**](Pet.md) + +### Authorization + +[api_key](../README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid ID supplied | - | +| **404** | Pet not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **UpdatePet** +> void UpdatePet (Pet pet) + +Update an existing pet + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class UpdatePetExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var pet = new Pet(); // Pet | Pet object that needs to be added to the store + + try + { + // Update an existing pet + apiInstance.UpdatePet(pet); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.UpdatePet: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + +### Return type + +void (empty response body) + +### Authorization + +[http_signature_test](../README.md#http_signature_test), [petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/json, application/xml + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid ID supplied | - | +| **404** | Pet not found | - | +| **405** | Validation exception | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **UpdatePetWithForm** +> void UpdatePetWithForm (long petId, string name = null, string status = null) + +Updates a pet in the store with form data + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class UpdatePetWithFormExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var petId = 789; // long | ID of pet that needs to be updated + var name = name_example; // string | Updated name of the pet (optional) + var status = status_example; // string | Updated status of the pet (optional) + + try + { + // Updates a pet in the store with form data + apiInstance.UpdatePetWithForm(petId, name, status); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.UpdatePetWithForm: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **long**| ID of pet that needs to be updated | + **name** | **string**| Updated name of the pet | [optional] + **status** | **string**| Updated status of the pet | [optional] + +### Return type + +void (empty response body) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **405** | Invalid input | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **UploadFile** +> ApiResponse UploadFile (long petId, string additionalMetadata = null, System.IO.Stream file = null) + +uploads an image + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class UploadFileExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var petId = 789; // long | ID of pet to update + var additionalMetadata = additionalMetadata_example; // string | Additional data to pass to server (optional) + var file = BINARY_DATA_HERE; // System.IO.Stream | file to upload (optional) + + try + { + // uploads an image + ApiResponse result = apiInstance.UploadFile(petId, additionalMetadata, file); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.UploadFile: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **long**| ID of pet to update | + **additionalMetadata** | **string**| Additional data to pass to server | [optional] + **file** | **System.IO.Stream****System.IO.Stream**| file to upload | [optional] + +### Return type + +[**ApiResponse**](ApiResponse.md) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **UploadFileWithRequiredFile** +> ApiResponse UploadFileWithRequiredFile (long petId, System.IO.Stream requiredFile, string additionalMetadata = null) + +uploads an image (required) + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class UploadFileWithRequiredFileExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure OAuth2 access token for authorization: petstore_auth + config.AccessToken = "YOUR_ACCESS_TOKEN"; + + var apiInstance = new PetApi(config); + var petId = 789; // long | ID of pet to update + var requiredFile = BINARY_DATA_HERE; // System.IO.Stream | file to upload + var additionalMetadata = additionalMetadata_example; // string | Additional data to pass to server (optional) + + try + { + // uploads an image (required) + ApiResponse result = apiInstance.UploadFileWithRequiredFile(petId, requiredFile, additionalMetadata); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling PetApi.UploadFileWithRequiredFile: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **petId** | **long**| ID of pet to update | + **requiredFile** | **System.IO.Stream****System.IO.Stream**| file to upload | + **additionalMetadata** | **string**| Additional data to pass to server | [optional] + +### Return type + +[**ApiResponse**](ApiResponse.md) + +### Authorization + +[petstore_auth](../README.md#petstore_auth) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Pig.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Pig.md new file mode 100644 index 00000000000..6e86d0760d5 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Pig.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.Pig + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ClassName** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Quadrilateral.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Quadrilateral.md new file mode 100644 index 00000000000..0165ddcc0e4 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Quadrilateral.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Quadrilateral + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/QuadrilateralInterface.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/QuadrilateralInterface.md new file mode 100644 index 00000000000..6daf340a141 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/QuadrilateralInterface.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.QuadrilateralInterface + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ReadOnlyFirst.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ReadOnlyFirst.md new file mode 100644 index 00000000000..b3f4a17ea34 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ReadOnlyFirst.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.ReadOnlyFirst + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Bar** | **string** | | [optional] [readonly] +**Baz** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Return.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Return.md new file mode 100644 index 00000000000..2c7c97e09da --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Return.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Return +Model for testing reserved words + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**_Return** | **int** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ScaleneTriangle.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ScaleneTriangle.md new file mode 100644 index 00000000000..76da8f1de81 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ScaleneTriangle.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.ScaleneTriangle + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**TriangleType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Shape.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Shape.md new file mode 100644 index 00000000000..9a54628cd41 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Shape.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Shape + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ShapeInterface.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ShapeInterface.md new file mode 100644 index 00000000000..57456d6793f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ShapeInterface.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.ShapeInterface + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ShapeOrNull.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ShapeOrNull.md new file mode 100644 index 00000000000..cbf61ebe77a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/ShapeOrNull.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.ShapeOrNull +The value may be a shape or the 'null' value. This is introduced in OAS schema >= 3.1. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/SimpleQuadrilateral.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/SimpleQuadrilateral.md new file mode 100644 index 00000000000..c329495425d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/SimpleQuadrilateral.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.SimpleQuadrilateral + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**QuadrilateralType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/SpecialModelName.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/SpecialModelName.md new file mode 100644 index 00000000000..648179799e1 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/SpecialModelName.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.SpecialModelName + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**SpecialPropertyName** | **long** | | [optional] +**_SpecialModelName** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/StoreApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/StoreApi.md new file mode 100644 index 00000000000..24e2480d5de --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/StoreApi.md @@ -0,0 +1,298 @@ +# Org.OpenAPITools.Api.StoreApi + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**DeleteOrder**](StoreApi.md#deleteorder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +[**GetInventory**](StoreApi.md#getinventory) | **GET** /store/inventory | Returns pet inventories by status +[**GetOrderById**](StoreApi.md#getorderbyid) | **GET** /store/order/{order_id} | Find purchase order by ID +[**PlaceOrder**](StoreApi.md#placeorder) | **POST** /store/order | Place an order for a pet + + + +# **DeleteOrder** +> void DeleteOrder (string orderId) + +Delete purchase order by ID + +For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class DeleteOrderExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new StoreApi(config); + var orderId = orderId_example; // string | ID of the order that needs to be deleted + + try + { + // Delete purchase order by ID + apiInstance.DeleteOrder(orderId); + } + catch (ApiException e) + { + Debug.Print("Exception when calling StoreApi.DeleteOrder: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **string**| ID of the order that needs to be deleted | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid ID supplied | - | +| **404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **GetInventory** +> Dictionary<string, int> GetInventory () + +Returns pet inventories by status + +Returns a map of status codes to quantities + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class GetInventoryExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + // Configure API key authorization: api_key + config.AddApiKey("api_key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // config.AddApiKeyPrefix("api_key", "Bearer"); + + var apiInstance = new StoreApi(config); + + try + { + // Returns pet inventories by status + Dictionary result = apiInstance.GetInventory(); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling StoreApi.GetInventory: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +**Dictionary** + +### Authorization + +[api_key](../README.md#api_key) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **GetOrderById** +> Order GetOrderById (long orderId) + +Find purchase order by ID + +For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class GetOrderByIdExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new StoreApi(config); + var orderId = 789; // long | ID of pet that needs to be fetched + + try + { + // Find purchase order by ID + Order result = apiInstance.GetOrderById(orderId); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling StoreApi.GetOrderById: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **orderId** | **long**| ID of pet that needs to be fetched | + +### Return type + +[**Order**](Order.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid ID supplied | - | +| **404** | Order not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **PlaceOrder** +> Order PlaceOrder (Order order) + +Place an order for a pet + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class PlaceOrderExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new StoreApi(config); + var order = new Order(); // Order | order placed for purchasing the pet + + try + { + // Place an order for a pet + Order result = apiInstance.PlaceOrder(order); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling StoreApi.PlaceOrder: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **order** | [**Order**](Order.md)| order placed for purchasing the pet | + +### Return type + +[**Order**](Order.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid Order | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Tag.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Tag.md new file mode 100644 index 00000000000..fdd22eb31fd --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Tag.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Tag + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long** | | [optional] +**Name** | **string** | | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Triangle.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Triangle.md new file mode 100644 index 00000000000..c4d0452b4e8 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Triangle.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Triangle + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ShapeType** | **string** | | +**TriangleType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/TriangleInterface.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/TriangleInterface.md new file mode 100644 index 00000000000..e0d8b5a5913 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/TriangleInterface.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.TriangleInterface + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**TriangleType** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/User.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/User.md new file mode 100644 index 00000000000..b0cd4dc042b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/User.md @@ -0,0 +1,21 @@ +# Org.OpenAPITools.Model.User + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long** | | [optional] +**Username** | **string** | | [optional] +**FirstName** | **string** | | [optional] +**LastName** | **string** | | [optional] +**Email** | **string** | | [optional] +**Password** | **string** | | [optional] +**Phone** | **string** | | [optional] +**UserStatus** | **int** | User Status | [optional] +**ObjectWithNoDeclaredProps** | **Object** | test code generation for objects Value must be a map of strings to values. It cannot be the 'null' value. | [optional] +**ObjectWithNoDeclaredPropsNullable** | **Object** | test code generation for nullable objects. Value must be a map of strings to values or the 'null' value. | [optional] +**AnyTypeProp** | **Object** | test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. See https://github.com/OAI/OpenAPI-Specification/issues/1389 | [optional] +**AnyTypePropNullable** | **Object** | test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. The 'nullable' attribute does not change the allowed values. | [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) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/UserApi.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/UserApi.md new file mode 100644 index 00000000000..aa12c26c69f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/UserApi.md @@ -0,0 +1,573 @@ +# Org.OpenAPITools.Api.UserApi + +All URIs are relative to *http://petstore.swagger.io:80/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CreateUser**](UserApi.md#createuser) | **POST** /user | Create user +[**CreateUsersWithArrayInput**](UserApi.md#createuserswitharrayinput) | **POST** /user/createWithArray | Creates list of users with given input array +[**CreateUsersWithListInput**](UserApi.md#createuserswithlistinput) | **POST** /user/createWithList | Creates list of users with given input array +[**DeleteUser**](UserApi.md#deleteuser) | **DELETE** /user/{username} | Delete user +[**GetUserByName**](UserApi.md#getuserbyname) | **GET** /user/{username} | Get user by user name +[**LoginUser**](UserApi.md#loginuser) | **GET** /user/login | Logs user into the system +[**LogoutUser**](UserApi.md#logoutuser) | **GET** /user/logout | Logs out current logged in user session +[**UpdateUser**](UserApi.md#updateuser) | **PUT** /user/{username} | Updated user + + + +# **CreateUser** +> void CreateUser (User user) + +Create user + +This can only be done by the logged in user. + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class CreateUserExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var user = new User(); // User | Created user object + + try + { + // Create user + apiInstance.CreateUser(user); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.CreateUser: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | [**User**](User.md)| Created user object | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CreateUsersWithArrayInput** +> void CreateUsersWithArrayInput (List user) + +Creates list of users with given input array + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class CreateUsersWithArrayInputExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var user = new List(); // List | List of user object + + try + { + // Creates list of users with given input array + apiInstance.CreateUsersWithArrayInput(user); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.CreateUsersWithArrayInput: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | [**List<User>**](User.md)| List of user object | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CreateUsersWithListInput** +> void CreateUsersWithListInput (List user) + +Creates list of users with given input array + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class CreateUsersWithListInputExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var user = new List(); // List | List of user object + + try + { + // Creates list of users with given input array + apiInstance.CreateUsersWithListInput(user); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.CreateUsersWithListInput: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user** | [**List<User>**](User.md)| List of user object | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **DeleteUser** +> void DeleteUser (string username) + +Delete user + +This can only be done by the logged in user. + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class DeleteUserExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var username = username_example; // string | The name that needs to be deleted + + try + { + // Delete user + apiInstance.DeleteUser(username); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.DeleteUser: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **string**| The name that needs to be deleted | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid username supplied | - | +| **404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **GetUserByName** +> User GetUserByName (string username) + +Get user by user name + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class GetUserByNameExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var username = username_example; // string | The name that needs to be fetched. Use user1 for testing. + + try + { + // Get user by user name + User result = apiInstance.GetUserByName(username); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.GetUserByName: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **string**| The name that needs to be fetched. Use user1 for testing. | + +### Return type + +[**User**](User.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | - | +| **400** | Invalid username supplied | - | +| **404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **LoginUser** +> string LoginUser (string username, string password) + +Logs user into the system + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class LoginUserExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var username = username_example; // string | The user name for login + var password = password_example; // string | The password for login in clear text + + try + { + // Logs user into the system + string result = apiInstance.LoginUser(username, password); + Debug.WriteLine(result); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.LoginUser: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **string**| The user name for login | + **password** | **string**| The password for login in clear text | + +### Return type + +**string** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/xml, application/json + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | successful operation | * X-Rate-Limit - calls per hour allowed by the user
    * X-Expires-After - date in UTC when token expires
    | +| **400** | Invalid username/password supplied | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **LogoutUser** +> void LogoutUser () + +Logs out current logged in user session + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class LogoutUserExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + + try + { + // Logs out current logged in user session + apiInstance.LogoutUser(); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.LogoutUser: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **0** | successful operation | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **UpdateUser** +> void UpdateUser (string username, User user) + +Updated user + +This can only be done by the logged in user. + +### Example +```csharp +using System.Collections.Generic; +using System.Diagnostics; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Example +{ + public class UpdateUserExample + { + public static void Main() + { + Configuration config = new Configuration(); + config.BasePath = "http://petstore.swagger.io:80/v2"; + var apiInstance = new UserApi(config); + var username = username_example; // string | name that need to be deleted + var user = new User(); // User | Updated user object + + try + { + // Updated user + apiInstance.UpdateUser(username, user); + } + catch (ApiException e) + { + Debug.Print("Exception when calling UserApi.UpdateUser: " + e.Message ); + Debug.Print("Status Code: "+ e.ErrorCode); + Debug.Print(e.StackTrace); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **string**| name that need to be deleted | + **user** | [**User**](User.md)| Updated user object | + +### Return type + +void (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: Not defined + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **400** | Invalid user supplied | - | +| **404** | User not found | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Whale.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Whale.md new file mode 100644 index 00000000000..5fc3dc7f85c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Whale.md @@ -0,0 +1,12 @@ +# Org.OpenAPITools.Model.Whale + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**HasBaleen** | **bool** | | [optional] +**HasTeeth** | **bool** | | [optional] +**ClassName** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Zebra.md b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Zebra.md new file mode 100644 index 00000000000..31e686adf0e --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/docs/Zebra.md @@ -0,0 +1,11 @@ +# Org.OpenAPITools.Model.Zebra + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Type** | **string** | | [optional] +**ClassName** | **string** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/git_push.sh b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/git_push.sh new file mode 100644 index 00000000000..ced3be2b0c7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/git_push.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs new file mode 100644 index 00000000000..1d46982928d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs @@ -0,0 +1,69 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using RestSharp; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing AnotherFakeApi + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class AnotherFakeApiTests : IDisposable + { + private AnotherFakeApi instance; + + public AnotherFakeApiTests() + { + instance = new AnotherFakeApi(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of AnotherFakeApi + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' AnotherFakeApi + //Assert.IsType(instance); + } + + /// + /// Test Call123TestSpecialTags + /// + [Fact] + public void Call123TestSpecialTagsTest() + { + // TODO uncomment below to test the method and replace null with proper value + //ModelClient modelClient = null; + //var response = instance.Call123TestSpecialTags(modelClient); + //Assert.IsType(response); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs new file mode 100644 index 00000000000..76a930092ba --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs @@ -0,0 +1,68 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using RestSharp; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing DefaultApi + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class DefaultApiTests : IDisposable + { + private DefaultApi instance; + + public DefaultApiTests() + { + instance = new DefaultApi(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of DefaultApi + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' DefaultApi + //Assert.IsType(instance); + } + + /// + /// Test FooGet + /// + [Fact] + public void FooGetTest() + { + // TODO uncomment below to test the method and replace null with proper value + //var response = instance.FooGet(); + //Assert.IsType(response); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs new file mode 100644 index 00000000000..994cd46d38a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs @@ -0,0 +1,258 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using RestSharp; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing FakeApi + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class FakeApiTests : IDisposable + { + private FakeApi instance; + + public FakeApiTests() + { + instance = new FakeApi(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of FakeApi + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' FakeApi + //Assert.IsType(instance); + } + + /// + /// Test FakeHealthGet + /// + [Fact] + public void FakeHealthGetTest() + { + // TODO uncomment below to test the method and replace null with proper value + //var response = instance.FakeHealthGet(); + //Assert.IsType(response); + } + + /// + /// Test FakeOuterBooleanSerialize + /// + [Fact] + public void FakeOuterBooleanSerializeTest() + { + // TODO uncomment below to test the method and replace null with proper value + //bool? body = null; + //var response = instance.FakeOuterBooleanSerialize(body); + //Assert.IsType(response); + } + + /// + /// Test FakeOuterCompositeSerialize + /// + [Fact] + public void FakeOuterCompositeSerializeTest() + { + // TODO uncomment below to test the method and replace null with proper value + //OuterComposite outerComposite = null; + //var response = instance.FakeOuterCompositeSerialize(outerComposite); + //Assert.IsType(response); + } + + /// + /// Test FakeOuterNumberSerialize + /// + [Fact] + public void FakeOuterNumberSerializeTest() + { + // TODO uncomment below to test the method and replace null with proper value + //decimal? body = null; + //var response = instance.FakeOuterNumberSerialize(body); + //Assert.IsType(response); + } + + /// + /// Test FakeOuterStringSerialize + /// + [Fact] + public void FakeOuterStringSerializeTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string body = null; + //var response = instance.FakeOuterStringSerialize(body); + //Assert.IsType(response); + } + + /// + /// Test GetArrayOfEnums + /// + [Fact] + public void GetArrayOfEnumsTest() + { + // TODO uncomment below to test the method and replace null with proper value + //var response = instance.GetArrayOfEnums(); + //Assert.IsType>(response); + } + + /// + /// Test TestBodyWithFileSchema + /// + [Fact] + public void TestBodyWithFileSchemaTest() + { + // TODO uncomment below to test the method and replace null with proper value + //FileSchemaTestClass fileSchemaTestClass = null; + //instance.TestBodyWithFileSchema(fileSchemaTestClass); + } + + /// + /// Test TestBodyWithQueryParams + /// + [Fact] + public void TestBodyWithQueryParamsTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string query = null; + //User user = null; + //instance.TestBodyWithQueryParams(query, user); + } + + /// + /// Test TestClientModel + /// + [Fact] + public void TestClientModelTest() + { + // TODO uncomment below to test the method and replace null with proper value + //ModelClient modelClient = null; + //var response = instance.TestClientModel(modelClient); + //Assert.IsType(response); + } + + /// + /// Test TestEndpointParameters + /// + [Fact] + public void TestEndpointParametersTest() + { + // TODO uncomment below to test the method and replace null with proper value + //decimal number = null; + //double _double = null; + //string patternWithoutDelimiter = null; + //byte[] _byte = null; + //int? integer = null; + //int? int32 = null; + //long? int64 = null; + //float? _float = null; + //string _string = null; + //System.IO.Stream binary = null; + //DateTime? date = null; + //DateTime? dateTime = null; + //string password = null; + //string callback = null; + //instance.TestEndpointParameters(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, _string, binary, date, dateTime, password, callback); + } + + /// + /// Test TestEnumParameters + /// + [Fact] + public void TestEnumParametersTest() + { + // TODO uncomment below to test the method and replace null with proper value + //List enumHeaderStringArray = null; + //string enumHeaderString = null; + //List enumQueryStringArray = null; + //string enumQueryString = null; + //int? enumQueryInteger = null; + //double? enumQueryDouble = null; + //List enumFormStringArray = null; + //string enumFormString = null; + //instance.TestEnumParameters(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString); + } + + /// + /// Test TestGroupParameters + /// + [Fact] + public void TestGroupParametersTest() + { + // TODO uncomment below to test the method and replace null with proper value + //int requiredStringGroup = null; + //bool requiredBooleanGroup = null; + //long requiredInt64Group = null; + //int? stringGroup = null; + //bool? booleanGroup = null; + //long? int64Group = null; + //instance.TestGroupParameters(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group); + } + + /// + /// Test TestInlineAdditionalProperties + /// + [Fact] + public void TestInlineAdditionalPropertiesTest() + { + // TODO uncomment below to test the method and replace null with proper value + //Dictionary requestBody = null; + //instance.TestInlineAdditionalProperties(requestBody); + } + + /// + /// Test TestJsonFormData + /// + [Fact] + public void TestJsonFormDataTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string param = null; + //string param2 = null; + //instance.TestJsonFormData(param, param2); + } + + /// + /// Test TestQueryParameterCollectionFormat + /// + [Fact] + public void TestQueryParameterCollectionFormatTest() + { + // TODO uncomment below to test the method and replace null with proper value + //List pipe = null; + //List ioutil = null; + //List http = null; + //List url = null; + //List context = null; + //instance.TestQueryParameterCollectionFormat(pipe, ioutil, http, url, context); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs new file mode 100644 index 00000000000..bbfd4a586e7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs @@ -0,0 +1,69 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using RestSharp; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing FakeClassnameTags123Api + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class FakeClassnameTags123ApiTests : IDisposable + { + private FakeClassnameTags123Api instance; + + public FakeClassnameTags123ApiTests() + { + instance = new FakeClassnameTags123Api(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of FakeClassnameTags123Api + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' FakeClassnameTags123Api + //Assert.IsType(instance); + } + + /// + /// Test TestClassname + /// + [Fact] + public void TestClassnameTest() + { + // TODO uncomment below to test the method and replace null with proper value + //ModelClient modelClient = null; + //var response = instance.TestClassname(modelClient); + //Assert.IsType(response); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/PetApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/PetApiTests.cs new file mode 100644 index 00000000000..67386764145 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/PetApiTests.cs @@ -0,0 +1,168 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using RestSharp; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing PetApi + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class PetApiTests : IDisposable + { + private PetApi instance; + + public PetApiTests() + { + instance = new PetApi(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of PetApi + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' PetApi + //Assert.IsType(instance); + } + + /// + /// Test AddPet + /// + [Fact] + public void AddPetTest() + { + // TODO uncomment below to test the method and replace null with proper value + //Pet pet = null; + //instance.AddPet(pet); + } + + /// + /// Test DeletePet + /// + [Fact] + public void DeletePetTest() + { + // TODO uncomment below to test the method and replace null with proper value + //long petId = null; + //string apiKey = null; + //instance.DeletePet(petId, apiKey); + } + + /// + /// Test FindPetsByStatus + /// + [Fact] + public void FindPetsByStatusTest() + { + // TODO uncomment below to test the method and replace null with proper value + //List status = null; + //var response = instance.FindPetsByStatus(status); + //Assert.IsType>(response); + } + + /// + /// Test FindPetsByTags + /// + [Fact] + public void FindPetsByTagsTest() + { + // TODO uncomment below to test the method and replace null with proper value + //List tags = null; + //var response = instance.FindPetsByTags(tags); + //Assert.IsType>(response); + } + + /// + /// Test GetPetById + /// + [Fact] + public void GetPetByIdTest() + { + // TODO uncomment below to test the method and replace null with proper value + //long petId = null; + //var response = instance.GetPetById(petId); + //Assert.IsType(response); + } + + /// + /// Test UpdatePet + /// + [Fact] + public void UpdatePetTest() + { + // TODO uncomment below to test the method and replace null with proper value + //Pet pet = null; + //instance.UpdatePet(pet); + } + + /// + /// Test UpdatePetWithForm + /// + [Fact] + public void UpdatePetWithFormTest() + { + // TODO uncomment below to test the method and replace null with proper value + //long petId = null; + //string name = null; + //string status = null; + //instance.UpdatePetWithForm(petId, name, status); + } + + /// + /// Test UploadFile + /// + [Fact] + public void UploadFileTest() + { + // TODO uncomment below to test the method and replace null with proper value + //long petId = null; + //string additionalMetadata = null; + //System.IO.Stream file = null; + //var response = instance.UploadFile(petId, additionalMetadata, file); + //Assert.IsType(response); + } + + /// + /// Test UploadFileWithRequiredFile + /// + [Fact] + public void UploadFileWithRequiredFileTest() + { + // TODO uncomment below to test the method and replace null with proper value + //long petId = null; + //System.IO.Stream requiredFile = null; + //string additionalMetadata = null; + //var response = instance.UploadFileWithRequiredFile(petId, requiredFile, additionalMetadata); + //Assert.IsType(response); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs new file mode 100644 index 00000000000..48e9f32748d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs @@ -0,0 +1,103 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using RestSharp; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing StoreApi + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class StoreApiTests : IDisposable + { + private StoreApi instance; + + public StoreApiTests() + { + instance = new StoreApi(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of StoreApi + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' StoreApi + //Assert.IsType(instance); + } + + /// + /// Test DeleteOrder + /// + [Fact] + public void DeleteOrderTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string orderId = null; + //instance.DeleteOrder(orderId); + } + + /// + /// Test GetInventory + /// + [Fact] + public void GetInventoryTest() + { + // TODO uncomment below to test the method and replace null with proper value + //var response = instance.GetInventory(); + //Assert.IsType>(response); + } + + /// + /// Test GetOrderById + /// + [Fact] + public void GetOrderByIdTest() + { + // TODO uncomment below to test the method and replace null with proper value + //long orderId = null; + //var response = instance.GetOrderById(orderId); + //Assert.IsType(response); + } + + /// + /// Test PlaceOrder + /// + [Fact] + public void PlaceOrderTest() + { + // TODO uncomment below to test the method and replace null with proper value + //Order order = null; + //var response = instance.PlaceOrder(order); + //Assert.IsType(response); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/UserApiTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/UserApiTests.cs new file mode 100644 index 00000000000..792db5819a0 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Api/UserApiTests.cs @@ -0,0 +1,148 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using RestSharp; +using Xunit; + +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Api; +// uncomment below to import models +//using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Test.Api +{ + /// + /// Class for testing UserApi + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the API endpoint. + /// + public class UserApiTests : IDisposable + { + private UserApi instance; + + public UserApiTests() + { + instance = new UserApi(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of UserApi + /// + [Fact] + public void InstanceTest() + { + // TODO uncomment below to test 'IsType' UserApi + //Assert.IsType(instance); + } + + /// + /// Test CreateUser + /// + [Fact] + public void CreateUserTest() + { + // TODO uncomment below to test the method and replace null with proper value + //User user = null; + //instance.CreateUser(user); + } + + /// + /// Test CreateUsersWithArrayInput + /// + [Fact] + public void CreateUsersWithArrayInputTest() + { + // TODO uncomment below to test the method and replace null with proper value + //List user = null; + //instance.CreateUsersWithArrayInput(user); + } + + /// + /// Test CreateUsersWithListInput + /// + [Fact] + public void CreateUsersWithListInputTest() + { + // TODO uncomment below to test the method and replace null with proper value + //List user = null; + //instance.CreateUsersWithListInput(user); + } + + /// + /// Test DeleteUser + /// + [Fact] + public void DeleteUserTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string username = null; + //instance.DeleteUser(username); + } + + /// + /// Test GetUserByName + /// + [Fact] + public void GetUserByNameTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string username = null; + //var response = instance.GetUserByName(username); + //Assert.IsType(response); + } + + /// + /// Test LoginUser + /// + [Fact] + public void LoginUserTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string username = null; + //string password = null; + //var response = instance.LoginUser(username, password); + //Assert.IsType(response); + } + + /// + /// Test LogoutUser + /// + [Fact] + public void LogoutUserTest() + { + // TODO uncomment below to test the method and replace null with proper value + //instance.LogoutUser(); + } + + /// + /// Test UpdateUser + /// + [Fact] + public void UpdateUserTest() + { + // TODO uncomment below to test the method and replace null with proper value + //string username = null; + //User user = null; + //instance.UpdateUser(username, user); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AdditionalPropertiesClassTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AdditionalPropertiesClassTests.cs new file mode 100644 index 00000000000..9ab029ed097 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AdditionalPropertiesClassTests.cs @@ -0,0 +1,126 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing AdditionalPropertiesClass + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class AdditionalPropertiesClassTests : IDisposable + { + // TODO uncomment below to declare an instance variable for AdditionalPropertiesClass + //private AdditionalPropertiesClass instance; + + public AdditionalPropertiesClassTests() + { + // TODO uncomment below to create an instance of AdditionalPropertiesClass + //instance = new AdditionalPropertiesClass(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of AdditionalPropertiesClass + /// + [Fact] + public void AdditionalPropertiesClassInstanceTest() + { + // TODO uncomment below to test "IsType" AdditionalPropertiesClass + //Assert.IsType(instance); + } + + + /// + /// Test the property 'MapProperty' + /// + [Fact] + public void MapPropertyTest() + { + // TODO unit test for the property 'MapProperty' + } + /// + /// Test the property 'MapOfMapProperty' + /// + [Fact] + public void MapOfMapPropertyTest() + { + // TODO unit test for the property 'MapOfMapProperty' + } + /// + /// Test the property 'Anytype1' + /// + [Fact] + public void Anytype1Test() + { + // TODO unit test for the property 'Anytype1' + } + /// + /// Test the property 'MapWithUndeclaredPropertiesAnytype1' + /// + [Fact] + public void MapWithUndeclaredPropertiesAnytype1Test() + { + // TODO unit test for the property 'MapWithUndeclaredPropertiesAnytype1' + } + /// + /// Test the property 'MapWithUndeclaredPropertiesAnytype2' + /// + [Fact] + public void MapWithUndeclaredPropertiesAnytype2Test() + { + // TODO unit test for the property 'MapWithUndeclaredPropertiesAnytype2' + } + /// + /// Test the property 'MapWithUndeclaredPropertiesAnytype3' + /// + [Fact] + public void MapWithUndeclaredPropertiesAnytype3Test() + { + // TODO unit test for the property 'MapWithUndeclaredPropertiesAnytype3' + } + /// + /// Test the property 'EmptyMap' + /// + [Fact] + public void EmptyMapTest() + { + // TODO unit test for the property 'EmptyMap' + } + /// + /// Test the property 'MapWithUndeclaredPropertiesString' + /// + [Fact] + public void MapWithUndeclaredPropertiesStringTest() + { + // TODO unit test for the property 'MapWithUndeclaredPropertiesString' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AnimalTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AnimalTests.cs new file mode 100644 index 00000000000..291231a91be --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AnimalTests.cs @@ -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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Animal + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class AnimalTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Animal + //private Animal instance; + + public AnimalTests() + { + // TODO uncomment below to create an instance of Animal + //instance = new Animal(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Animal + /// + [Fact] + public void AnimalInstanceTest() + { + // TODO uncomment below to test "IsType" Animal + //Assert.IsType(instance); + } + + /// + /// Test deserialize a Dog from type Animal + /// + [Fact] + public void DogDeserializeFromAnimalTest() + { + // TODO uncomment below to test deserialize a Dog from type Animal + //Assert.IsType(JsonConvert.DeserializeObject(new Dog().ToJson())); + } + /// + /// Test deserialize a Cat from type Animal + /// + [Fact] + public void CatDeserializeFromAnimalTest() + { + // TODO uncomment below to test deserialize a Cat from type Animal + //Assert.IsType(JsonConvert.DeserializeObject(new Cat().ToJson())); + } + + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + /// + /// Test the property 'Color' + /// + [Fact] + public void ColorTest() + { + // TODO unit test for the property 'Color' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ApiResponseTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ApiResponseTests.cs new file mode 100644 index 00000000000..2a2e098e608 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ApiResponseTests.cs @@ -0,0 +1,86 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ApiResponse + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ApiResponseTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ApiResponse + //private ApiResponse instance; + + public ApiResponseTests() + { + // TODO uncomment below to create an instance of ApiResponse + //instance = new ApiResponse(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ApiResponse + /// + [Fact] + public void ApiResponseInstanceTest() + { + // TODO uncomment below to test "IsType" ApiResponse + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Code' + /// + [Fact] + public void CodeTest() + { + // TODO unit test for the property 'Code' + } + /// + /// Test the property 'Type' + /// + [Fact] + public void TypeTest() + { + // TODO unit test for the property 'Type' + } + /// + /// Test the property 'Message' + /// + [Fact] + public void MessageTest() + { + // TODO unit test for the property 'Message' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AppleReqTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AppleReqTests.cs new file mode 100644 index 00000000000..f945f659368 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AppleReqTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing AppleReq + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class AppleReqTests : IDisposable + { + // TODO uncomment below to declare an instance variable for AppleReq + //private AppleReq instance; + + public AppleReqTests() + { + // TODO uncomment below to create an instance of AppleReq + //instance = new AppleReq(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of AppleReq + /// + [Fact] + public void AppleReqInstanceTest() + { + // TODO uncomment below to test "IsType" AppleReq + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Cultivar' + /// + [Fact] + public void CultivarTest() + { + // TODO unit test for the property 'Cultivar' + } + /// + /// Test the property 'Mealy' + /// + [Fact] + public void MealyTest() + { + // TODO unit test for the property 'Mealy' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AppleTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AppleTests.cs new file mode 100644 index 00000000000..468d60184ad --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/AppleTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Apple + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class AppleTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Apple + //private Apple instance; + + public AppleTests() + { + // TODO uncomment below to create an instance of Apple + //instance = new Apple(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Apple + /// + [Fact] + public void AppleInstanceTest() + { + // TODO uncomment below to test "IsType" Apple + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Cultivar' + /// + [Fact] + public void CultivarTest() + { + // TODO unit test for the property 'Cultivar' + } + /// + /// Test the property 'Origin' + /// + [Fact] + public void OriginTest() + { + // TODO unit test for the property 'Origin' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ArrayOfArrayOfNumberOnlyTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ArrayOfArrayOfNumberOnlyTests.cs new file mode 100644 index 00000000000..0b259d7d391 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ArrayOfArrayOfNumberOnlyTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ArrayOfArrayOfNumberOnly + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ArrayOfArrayOfNumberOnlyTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ArrayOfArrayOfNumberOnly + //private ArrayOfArrayOfNumberOnly instance; + + public ArrayOfArrayOfNumberOnlyTests() + { + // TODO uncomment below to create an instance of ArrayOfArrayOfNumberOnly + //instance = new ArrayOfArrayOfNumberOnly(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ArrayOfArrayOfNumberOnly + /// + [Fact] + public void ArrayOfArrayOfNumberOnlyInstanceTest() + { + // TODO uncomment below to test "IsType" ArrayOfArrayOfNumberOnly + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ArrayArrayNumber' + /// + [Fact] + public void ArrayArrayNumberTest() + { + // TODO unit test for the property 'ArrayArrayNumber' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ArrayOfNumberOnlyTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ArrayOfNumberOnlyTests.cs new file mode 100644 index 00000000000..27f312ad25f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ArrayOfNumberOnlyTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ArrayOfNumberOnly + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ArrayOfNumberOnlyTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ArrayOfNumberOnly + //private ArrayOfNumberOnly instance; + + public ArrayOfNumberOnlyTests() + { + // TODO uncomment below to create an instance of ArrayOfNumberOnly + //instance = new ArrayOfNumberOnly(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ArrayOfNumberOnly + /// + [Fact] + public void ArrayOfNumberOnlyInstanceTest() + { + // TODO uncomment below to test "IsType" ArrayOfNumberOnly + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ArrayNumber' + /// + [Fact] + public void ArrayNumberTest() + { + // TODO unit test for the property 'ArrayNumber' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ArrayTestTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ArrayTestTests.cs new file mode 100644 index 00000000000..a433e8c87cf --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ArrayTestTests.cs @@ -0,0 +1,86 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ArrayTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ArrayTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ArrayTest + //private ArrayTest instance; + + public ArrayTestTests() + { + // TODO uncomment below to create an instance of ArrayTest + //instance = new ArrayTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ArrayTest + /// + [Fact] + public void ArrayTestInstanceTest() + { + // TODO uncomment below to test "IsType" ArrayTest + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ArrayOfString' + /// + [Fact] + public void ArrayOfStringTest() + { + // TODO unit test for the property 'ArrayOfString' + } + /// + /// Test the property 'ArrayArrayOfInteger' + /// + [Fact] + public void ArrayArrayOfIntegerTest() + { + // TODO unit test for the property 'ArrayArrayOfInteger' + } + /// + /// Test the property 'ArrayArrayOfModel' + /// + [Fact] + public void ArrayArrayOfModelTest() + { + // TODO unit test for the property 'ArrayArrayOfModel' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/BananaReqTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/BananaReqTests.cs new file mode 100644 index 00000000000..8a6eeb82eee --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/BananaReqTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing BananaReq + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class BananaReqTests : IDisposable + { + // TODO uncomment below to declare an instance variable for BananaReq + //private BananaReq instance; + + public BananaReqTests() + { + // TODO uncomment below to create an instance of BananaReq + //instance = new BananaReq(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of BananaReq + /// + [Fact] + public void BananaReqInstanceTest() + { + // TODO uncomment below to test "IsType" BananaReq + //Assert.IsType(instance); + } + + + /// + /// Test the property 'LengthCm' + /// + [Fact] + public void LengthCmTest() + { + // TODO unit test for the property 'LengthCm' + } + /// + /// Test the property 'Sweet' + /// + [Fact] + public void SweetTest() + { + // TODO unit test for the property 'Sweet' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/BananaTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/BananaTests.cs new file mode 100644 index 00000000000..8d8cc376b03 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/BananaTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Banana + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class BananaTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Banana + //private Banana instance; + + public BananaTests() + { + // TODO uncomment below to create an instance of Banana + //instance = new Banana(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Banana + /// + [Fact] + public void BananaInstanceTest() + { + // TODO uncomment below to test "IsType" Banana + //Assert.IsType(instance); + } + + + /// + /// Test the property 'LengthCm' + /// + [Fact] + public void LengthCmTest() + { + // TODO unit test for the property 'LengthCm' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/BasquePigTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/BasquePigTests.cs new file mode 100644 index 00000000000..3cdccaa7595 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/BasquePigTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing BasquePig + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class BasquePigTests : IDisposable + { + // TODO uncomment below to declare an instance variable for BasquePig + //private BasquePig instance; + + public BasquePigTests() + { + // TODO uncomment below to create an instance of BasquePig + //instance = new BasquePig(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of BasquePig + /// + [Fact] + public void BasquePigInstanceTest() + { + // TODO uncomment below to test "IsType" BasquePig + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CapitalizationTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CapitalizationTests.cs new file mode 100644 index 00000000000..185c83666fc --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CapitalizationTests.cs @@ -0,0 +1,110 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Capitalization + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class CapitalizationTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Capitalization + //private Capitalization instance; + + public CapitalizationTests() + { + // TODO uncomment below to create an instance of Capitalization + //instance = new Capitalization(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Capitalization + /// + [Fact] + public void CapitalizationInstanceTest() + { + // TODO uncomment below to test "IsType" Capitalization + //Assert.IsType(instance); + } + + + /// + /// Test the property 'SmallCamel' + /// + [Fact] + public void SmallCamelTest() + { + // TODO unit test for the property 'SmallCamel' + } + /// + /// Test the property 'CapitalCamel' + /// + [Fact] + public void CapitalCamelTest() + { + // TODO unit test for the property 'CapitalCamel' + } + /// + /// Test the property 'SmallSnake' + /// + [Fact] + public void SmallSnakeTest() + { + // TODO unit test for the property 'SmallSnake' + } + /// + /// Test the property 'CapitalSnake' + /// + [Fact] + public void CapitalSnakeTest() + { + // TODO unit test for the property 'CapitalSnake' + } + /// + /// Test the property 'SCAETHFlowPoints' + /// + [Fact] + public void SCAETHFlowPointsTest() + { + // TODO unit test for the property 'SCAETHFlowPoints' + } + /// + /// Test the property 'ATT_NAME' + /// + [Fact] + public void ATT_NAMETest() + { + // TODO unit test for the property 'ATT_NAME' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CatAllOfTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CatAllOfTests.cs new file mode 100644 index 00000000000..fb51c28489c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CatAllOfTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing CatAllOf + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class CatAllOfTests : IDisposable + { + // TODO uncomment below to declare an instance variable for CatAllOf + //private CatAllOf instance; + + public CatAllOfTests() + { + // TODO uncomment below to create an instance of CatAllOf + //instance = new CatAllOf(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of CatAllOf + /// + [Fact] + public void CatAllOfInstanceTest() + { + // TODO uncomment below to test "IsType" CatAllOf + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Declawed' + /// + [Fact] + public void DeclawedTest() + { + // TODO unit test for the property 'Declawed' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CatTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CatTests.cs new file mode 100644 index 00000000000..701ba760282 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CatTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Cat + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class CatTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Cat + //private Cat instance; + + public CatTests() + { + // TODO uncomment below to create an instance of Cat + //instance = new Cat(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Cat + /// + [Fact] + public void CatInstanceTest() + { + // TODO uncomment below to test "IsType" Cat + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Declawed' + /// + [Fact] + public void DeclawedTest() + { + // TODO unit test for the property 'Declawed' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CategoryTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CategoryTests.cs new file mode 100644 index 00000000000..6ce48e601e4 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/CategoryTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Category + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class CategoryTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Category + //private Category instance; + + public CategoryTests() + { + // TODO uncomment below to create an instance of Category + //instance = new Category(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Category + /// + [Fact] + public void CategoryInstanceTest() + { + // TODO uncomment below to test "IsType" Category + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Id' + /// + [Fact] + public void IdTest() + { + // TODO unit test for the property 'Id' + } + /// + /// Test the property 'Name' + /// + [Fact] + public void NameTest() + { + // TODO unit test for the property 'Name' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ChildCatAllOfTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ChildCatAllOfTests.cs new file mode 100644 index 00000000000..49a53932490 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ChildCatAllOfTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ChildCatAllOf + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ChildCatAllOfTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ChildCatAllOf + //private ChildCatAllOf instance; + + public ChildCatAllOfTests() + { + // TODO uncomment below to create an instance of ChildCatAllOf + //instance = new ChildCatAllOf(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ChildCatAllOf + /// + [Fact] + public void ChildCatAllOfInstanceTest() + { + // TODO uncomment below to test "IsType" ChildCatAllOf + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Name' + /// + [Fact] + public void NameTest() + { + // TODO unit test for the property 'Name' + } + /// + /// Test the property 'PetType' + /// + [Fact] + public void PetTypeTest() + { + // TODO unit test for the property 'PetType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ChildCatTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ChildCatTests.cs new file mode 100644 index 00000000000..68566fd8d56 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ChildCatTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ChildCat + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ChildCatTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ChildCat + //private ChildCat instance; + + public ChildCatTests() + { + // TODO uncomment below to create an instance of ChildCat + //instance = new ChildCat(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ChildCat + /// + [Fact] + public void ChildCatInstanceTest() + { + // TODO uncomment below to test "IsType" ChildCat + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Name' + /// + [Fact] + public void NameTest() + { + // TODO unit test for the property 'Name' + } + /// + /// Test the property 'PetType' + /// + [Fact] + public void PetTypeTest() + { + // TODO unit test for the property 'PetType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ClassModelTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ClassModelTests.cs new file mode 100644 index 00000000000..d29472e83aa --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ClassModelTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ClassModel + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ClassModelTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ClassModel + //private ClassModel instance; + + public ClassModelTests() + { + // TODO uncomment below to create an instance of ClassModel + //instance = new ClassModel(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ClassModel + /// + [Fact] + public void ClassModelInstanceTest() + { + // TODO uncomment below to test "IsType" ClassModel + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Class' + /// + [Fact] + public void ClassTest() + { + // TODO unit test for the property 'Class' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ComplexQuadrilateralTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ComplexQuadrilateralTests.cs new file mode 100644 index 00000000000..b3529280c8d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ComplexQuadrilateralTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ComplexQuadrilateral + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ComplexQuadrilateralTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ComplexQuadrilateral + //private ComplexQuadrilateral instance; + + public ComplexQuadrilateralTests() + { + // TODO uncomment below to create an instance of ComplexQuadrilateral + //instance = new ComplexQuadrilateral(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ComplexQuadrilateral + /// + [Fact] + public void ComplexQuadrilateralInstanceTest() + { + // TODO uncomment below to test "IsType" ComplexQuadrilateral + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DanishPigTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DanishPigTests.cs new file mode 100644 index 00000000000..572d9bffa79 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DanishPigTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing DanishPig + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class DanishPigTests : IDisposable + { + // TODO uncomment below to declare an instance variable for DanishPig + //private DanishPig instance; + + public DanishPigTests() + { + // TODO uncomment below to create an instance of DanishPig + //instance = new DanishPig(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of DanishPig + /// + [Fact] + public void DanishPigInstanceTest() + { + // TODO uncomment below to test "IsType" DanishPig + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DogAllOfTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DogAllOfTests.cs new file mode 100644 index 00000000000..b22a4442096 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DogAllOfTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing DogAllOf + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class DogAllOfTests : IDisposable + { + // TODO uncomment below to declare an instance variable for DogAllOf + //private DogAllOf instance; + + public DogAllOfTests() + { + // TODO uncomment below to create an instance of DogAllOf + //instance = new DogAllOf(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of DogAllOf + /// + [Fact] + public void DogAllOfInstanceTest() + { + // TODO uncomment below to test "IsType" DogAllOf + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Breed' + /// + [Fact] + public void BreedTest() + { + // TODO unit test for the property 'Breed' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DogTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DogTests.cs new file mode 100644 index 00000000000..992f93a51fd --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DogTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Dog + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class DogTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Dog + //private Dog instance; + + public DogTests() + { + // TODO uncomment below to create an instance of Dog + //instance = new Dog(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Dog + /// + [Fact] + public void DogInstanceTest() + { + // TODO uncomment below to test "IsType" Dog + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Breed' + /// + [Fact] + public void BreedTest() + { + // TODO unit test for the property 'Breed' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DrawingTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DrawingTests.cs new file mode 100644 index 00000000000..0709ad9eeb3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/DrawingTests.cs @@ -0,0 +1,94 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Drawing + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class DrawingTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Drawing + //private Drawing instance; + + public DrawingTests() + { + // TODO uncomment below to create an instance of Drawing + //instance = new Drawing(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Drawing + /// + [Fact] + public void DrawingInstanceTest() + { + // TODO uncomment below to test "IsType" Drawing + //Assert.IsType(instance); + } + + + /// + /// Test the property 'MainShape' + /// + [Fact] + public void MainShapeTest() + { + // TODO unit test for the property 'MainShape' + } + /// + /// Test the property 'ShapeOrNull' + /// + [Fact] + public void ShapeOrNullTest() + { + // TODO unit test for the property 'ShapeOrNull' + } + /// + /// Test the property 'NullableShape' + /// + [Fact] + public void NullableShapeTest() + { + // TODO unit test for the property 'NullableShape' + } + /// + /// Test the property 'Shapes' + /// + [Fact] + public void ShapesTest() + { + // TODO unit test for the property 'Shapes' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EnumArraysTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EnumArraysTests.cs new file mode 100644 index 00000000000..5779ca29477 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EnumArraysTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing EnumArrays + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class EnumArraysTests : IDisposable + { + // TODO uncomment below to declare an instance variable for EnumArrays + //private EnumArrays instance; + + public EnumArraysTests() + { + // TODO uncomment below to create an instance of EnumArrays + //instance = new EnumArrays(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of EnumArrays + /// + [Fact] + public void EnumArraysInstanceTest() + { + // TODO uncomment below to test "IsType" EnumArrays + //Assert.IsType(instance); + } + + + /// + /// Test the property 'JustSymbol' + /// + [Fact] + public void JustSymbolTest() + { + // TODO unit test for the property 'JustSymbol' + } + /// + /// Test the property 'ArrayEnum' + /// + [Fact] + public void ArrayEnumTest() + { + // TODO unit test for the property 'ArrayEnum' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EnumClassTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EnumClassTests.cs new file mode 100644 index 00000000000..a17738c5cbc --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EnumClassTests.cs @@ -0,0 +1,62 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing EnumClass + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class EnumClassTests : IDisposable + { + // TODO uncomment below to declare an instance variable for EnumClass + //private EnumClass instance; + + public EnumClassTests() + { + // TODO uncomment below to create an instance of EnumClass + //instance = new EnumClass(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of EnumClass + /// + [Fact] + public void EnumClassInstanceTest() + { + // TODO uncomment below to test "IsType" EnumClass + //Assert.IsType(instance); + } + + + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EnumTestTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EnumTestTests.cs new file mode 100644 index 00000000000..4f81b845d49 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EnumTestTests.cs @@ -0,0 +1,134 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing EnumTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class EnumTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for EnumTest + //private EnumTest instance; + + public EnumTestTests() + { + // TODO uncomment below to create an instance of EnumTest + //instance = new EnumTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of EnumTest + /// + [Fact] + public void EnumTestInstanceTest() + { + // TODO uncomment below to test "IsType" EnumTest + //Assert.IsType(instance); + } + + + /// + /// Test the property 'EnumString' + /// + [Fact] + public void EnumStringTest() + { + // TODO unit test for the property 'EnumString' + } + /// + /// Test the property 'EnumStringRequired' + /// + [Fact] + public void EnumStringRequiredTest() + { + // TODO unit test for the property 'EnumStringRequired' + } + /// + /// Test the property 'EnumInteger' + /// + [Fact] + public void EnumIntegerTest() + { + // TODO unit test for the property 'EnumInteger' + } + /// + /// Test the property 'EnumIntegerOnly' + /// + [Fact] + public void EnumIntegerOnlyTest() + { + // TODO unit test for the property 'EnumIntegerOnly' + } + /// + /// Test the property 'EnumNumber' + /// + [Fact] + public void EnumNumberTest() + { + // TODO unit test for the property 'EnumNumber' + } + /// + /// Test the property 'OuterEnum' + /// + [Fact] + public void OuterEnumTest() + { + // TODO unit test for the property 'OuterEnum' + } + /// + /// Test the property 'OuterEnumInteger' + /// + [Fact] + public void OuterEnumIntegerTest() + { + // TODO unit test for the property 'OuterEnumInteger' + } + /// + /// Test the property 'OuterEnumDefaultValue' + /// + [Fact] + public void OuterEnumDefaultValueTest() + { + // TODO unit test for the property 'OuterEnumDefaultValue' + } + /// + /// Test the property 'OuterEnumIntegerDefaultValue' + /// + [Fact] + public void OuterEnumIntegerDefaultValueTest() + { + // TODO unit test for the property 'OuterEnumIntegerDefaultValue' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EquilateralTriangleTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EquilateralTriangleTests.cs new file mode 100644 index 00000000000..4663cb667de --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/EquilateralTriangleTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing EquilateralTriangle + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class EquilateralTriangleTests : IDisposable + { + // TODO uncomment below to declare an instance variable for EquilateralTriangle + //private EquilateralTriangle instance; + + public EquilateralTriangleTests() + { + // TODO uncomment below to create an instance of EquilateralTriangle + //instance = new EquilateralTriangle(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of EquilateralTriangle + /// + [Fact] + public void EquilateralTriangleInstanceTest() + { + // TODO uncomment below to test "IsType" EquilateralTriangle + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'TriangleType' + /// + [Fact] + public void TriangleTypeTest() + { + // TODO unit test for the property 'TriangleType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FileSchemaTestClassTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FileSchemaTestClassTests.cs new file mode 100644 index 00000000000..9f45b4fe89d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FileSchemaTestClassTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing FileSchemaTestClass + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class FileSchemaTestClassTests : IDisposable + { + // TODO uncomment below to declare an instance variable for FileSchemaTestClass + //private FileSchemaTestClass instance; + + public FileSchemaTestClassTests() + { + // TODO uncomment below to create an instance of FileSchemaTestClass + //instance = new FileSchemaTestClass(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of FileSchemaTestClass + /// + [Fact] + public void FileSchemaTestClassInstanceTest() + { + // TODO uncomment below to test "IsType" FileSchemaTestClass + //Assert.IsType(instance); + } + + + /// + /// Test the property 'File' + /// + [Fact] + public void FileTest() + { + // TODO unit test for the property 'File' + } + /// + /// Test the property 'Files' + /// + [Fact] + public void FilesTest() + { + // TODO unit test for the property 'Files' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FileTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FileTests.cs new file mode 100644 index 00000000000..761bb72a844 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FileTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing File + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class FileTests : IDisposable + { + // TODO uncomment below to declare an instance variable for File + //private File instance; + + public FileTests() + { + // TODO uncomment below to create an instance of File + //instance = new File(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of File + /// + [Fact] + public void FileInstanceTest() + { + // TODO uncomment below to test "IsType" File + //Assert.IsType(instance); + } + + + /// + /// Test the property 'SourceURI' + /// + [Fact] + public void SourceURITest() + { + // TODO unit test for the property 'SourceURI' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FooTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FooTests.cs new file mode 100644 index 00000000000..0b6ed52edbd --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FooTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Foo + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class FooTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Foo + //private Foo instance; + + public FooTests() + { + // TODO uncomment below to create an instance of Foo + //instance = new Foo(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Foo + /// + [Fact] + public void FooInstanceTest() + { + // TODO uncomment below to test "IsType" Foo + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Bar' + /// + [Fact] + public void BarTest() + { + // TODO unit test for the property 'Bar' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FormatTestTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FormatTestTests.cs new file mode 100644 index 00000000000..97332800e9a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FormatTestTests.cs @@ -0,0 +1,190 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing FormatTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class FormatTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for FormatTest + //private FormatTest instance; + + public FormatTestTests() + { + // TODO uncomment below to create an instance of FormatTest + //instance = new FormatTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of FormatTest + /// + [Fact] + public void FormatTestInstanceTest() + { + // TODO uncomment below to test "IsType" FormatTest + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Integer' + /// + [Fact] + public void IntegerTest() + { + // TODO unit test for the property 'Integer' + } + /// + /// Test the property 'Int32' + /// + [Fact] + public void Int32Test() + { + // TODO unit test for the property 'Int32' + } + /// + /// Test the property 'Int64' + /// + [Fact] + public void Int64Test() + { + // TODO unit test for the property 'Int64' + } + /// + /// Test the property 'Number' + /// + [Fact] + public void NumberTest() + { + // TODO unit test for the property 'Number' + } + /// + /// Test the property 'Float' + /// + [Fact] + public void FloatTest() + { + // TODO unit test for the property 'Float' + } + /// + /// Test the property 'Double' + /// + [Fact] + public void DoubleTest() + { + // TODO unit test for the property 'Double' + } + /// + /// Test the property 'Decimal' + /// + [Fact] + public void DecimalTest() + { + // TODO unit test for the property 'Decimal' + } + /// + /// Test the property 'String' + /// + [Fact] + public void StringTest() + { + // TODO unit test for the property 'String' + } + /// + /// Test the property 'Byte' + /// + [Fact] + public void ByteTest() + { + // TODO unit test for the property 'Byte' + } + /// + /// Test the property 'Binary' + /// + [Fact] + public void BinaryTest() + { + // TODO unit test for the property 'Binary' + } + /// + /// Test the property 'Date' + /// + [Fact] + public void DateTest() + { + // TODO unit test for the property 'Date' + } + /// + /// Test the property 'DateTime' + /// + [Fact] + public void DateTimeTest() + { + // TODO unit test for the property 'DateTime' + } + /// + /// Test the property 'Uuid' + /// + [Fact] + public void UuidTest() + { + // TODO unit test for the property 'Uuid' + } + /// + /// Test the property 'Password' + /// + [Fact] + public void PasswordTest() + { + // TODO unit test for the property 'Password' + } + /// + /// Test the property 'PatternWithDigits' + /// + [Fact] + public void PatternWithDigitsTest() + { + // TODO unit test for the property 'PatternWithDigits' + } + /// + /// Test the property 'PatternWithDigitsAndDelimiter' + /// + [Fact] + public void PatternWithDigitsAndDelimiterTest() + { + // TODO unit test for the property 'PatternWithDigitsAndDelimiter' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FruitReqTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FruitReqTests.cs new file mode 100644 index 00000000000..5ea9e3ffc1d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FruitReqTests.cs @@ -0,0 +1,94 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing FruitReq + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class FruitReqTests : IDisposable + { + // TODO uncomment below to declare an instance variable for FruitReq + //private FruitReq instance; + + public FruitReqTests() + { + // TODO uncomment below to create an instance of FruitReq + //instance = new FruitReq(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of FruitReq + /// + [Fact] + public void FruitReqInstanceTest() + { + // TODO uncomment below to test "IsType" FruitReq + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Cultivar' + /// + [Fact] + public void CultivarTest() + { + // TODO unit test for the property 'Cultivar' + } + /// + /// Test the property 'Mealy' + /// + [Fact] + public void MealyTest() + { + // TODO unit test for the property 'Mealy' + } + /// + /// Test the property 'LengthCm' + /// + [Fact] + public void LengthCmTest() + { + // TODO unit test for the property 'LengthCm' + } + /// + /// Test the property 'Sweet' + /// + [Fact] + public void SweetTest() + { + // TODO unit test for the property 'Sweet' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FruitTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FruitTests.cs new file mode 100644 index 00000000000..91e069bb42f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/FruitTests.cs @@ -0,0 +1,94 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Fruit + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class FruitTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Fruit + //private Fruit instance; + + public FruitTests() + { + // TODO uncomment below to create an instance of Fruit + //instance = new Fruit(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Fruit + /// + [Fact] + public void FruitInstanceTest() + { + // TODO uncomment below to test "IsType" Fruit + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Color' + /// + [Fact] + public void ColorTest() + { + // TODO unit test for the property 'Color' + } + /// + /// Test the property 'Cultivar' + /// + [Fact] + public void CultivarTest() + { + // TODO unit test for the property 'Cultivar' + } + /// + /// Test the property 'Origin' + /// + [Fact] + public void OriginTest() + { + // TODO unit test for the property 'Origin' + } + /// + /// Test the property 'LengthCm' + /// + [Fact] + public void LengthCmTest() + { + // TODO unit test for the property 'LengthCm' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/GmFruitTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/GmFruitTests.cs new file mode 100644 index 00000000000..08fb0e07a1c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/GmFruitTests.cs @@ -0,0 +1,94 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing GmFruit + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class GmFruitTests : IDisposable + { + // TODO uncomment below to declare an instance variable for GmFruit + //private GmFruit instance; + + public GmFruitTests() + { + // TODO uncomment below to create an instance of GmFruit + //instance = new GmFruit(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of GmFruit + /// + [Fact] + public void GmFruitInstanceTest() + { + // TODO uncomment below to test "IsType" GmFruit + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Color' + /// + [Fact] + public void ColorTest() + { + // TODO unit test for the property 'Color' + } + /// + /// Test the property 'Cultivar' + /// + [Fact] + public void CultivarTest() + { + // TODO unit test for the property 'Cultivar' + } + /// + /// Test the property 'Origin' + /// + [Fact] + public void OriginTest() + { + // TODO unit test for the property 'Origin' + } + /// + /// Test the property 'LengthCm' + /// + [Fact] + public void LengthCmTest() + { + // TODO unit test for the property 'LengthCm' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/GrandparentAnimalTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/GrandparentAnimalTests.cs new file mode 100644 index 00000000000..75f4fd8b0e5 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/GrandparentAnimalTests.cs @@ -0,0 +1,88 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing GrandparentAnimal + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class GrandparentAnimalTests : IDisposable + { + // TODO uncomment below to declare an instance variable for GrandparentAnimal + //private GrandparentAnimal instance; + + public GrandparentAnimalTests() + { + // TODO uncomment below to create an instance of GrandparentAnimal + //instance = new GrandparentAnimal(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of GrandparentAnimal + /// + [Fact] + public void GrandparentAnimalInstanceTest() + { + // TODO uncomment below to test "IsType" GrandparentAnimal + //Assert.IsType(instance); + } + + /// + /// Test deserialize a ParentPet from type GrandparentAnimal + /// + [Fact] + public void ParentPetDeserializeFromGrandparentAnimalTest() + { + // TODO uncomment below to test deserialize a ParentPet from type GrandparentAnimal + //Assert.IsType(JsonConvert.DeserializeObject(new ParentPet().ToJson())); + } + /// + /// Test deserialize a ChildCat from type ParentPet + /// + [Fact] + public void ChildCatDeserializeFromParentPetTest() + { + // TODO uncomment below to test deserialize a ChildCat from type ParentPet + //Assert.IsType(JsonConvert.DeserializeObject(new ChildCat().ToJson())); + } + + /// + /// Test the property 'PetType' + /// + [Fact] + public void PetTypeTest() + { + // TODO unit test for the property 'PetType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/HasOnlyReadOnlyTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/HasOnlyReadOnlyTests.cs new file mode 100644 index 00000000000..651a9f0ce30 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/HasOnlyReadOnlyTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing HasOnlyReadOnly + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class HasOnlyReadOnlyTests : IDisposable + { + // TODO uncomment below to declare an instance variable for HasOnlyReadOnly + //private HasOnlyReadOnly instance; + + public HasOnlyReadOnlyTests() + { + // TODO uncomment below to create an instance of HasOnlyReadOnly + //instance = new HasOnlyReadOnly(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of HasOnlyReadOnly + /// + [Fact] + public void HasOnlyReadOnlyInstanceTest() + { + // TODO uncomment below to test "IsType" HasOnlyReadOnly + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Bar' + /// + [Fact] + public void BarTest() + { + // TODO unit test for the property 'Bar' + } + /// + /// Test the property 'Foo' + /// + [Fact] + public void FooTest() + { + // TODO unit test for the property 'Foo' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/HealthCheckResultTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/HealthCheckResultTests.cs new file mode 100644 index 00000000000..857190a3334 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/HealthCheckResultTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing HealthCheckResult + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class HealthCheckResultTests : IDisposable + { + // TODO uncomment below to declare an instance variable for HealthCheckResult + //private HealthCheckResult instance; + + public HealthCheckResultTests() + { + // TODO uncomment below to create an instance of HealthCheckResult + //instance = new HealthCheckResult(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of HealthCheckResult + /// + [Fact] + public void HealthCheckResultInstanceTest() + { + // TODO uncomment below to test "IsType" HealthCheckResult + //Assert.IsType(instance); + } + + + /// + /// Test the property 'NullableMessage' + /// + [Fact] + public void NullableMessageTest() + { + // TODO unit test for the property 'NullableMessage' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/InlineResponseDefaultTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/InlineResponseDefaultTests.cs new file mode 100644 index 00000000000..7731f80c16d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/InlineResponseDefaultTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing InlineResponseDefault + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class InlineResponseDefaultTests : IDisposable + { + // TODO uncomment below to declare an instance variable for InlineResponseDefault + //private InlineResponseDefault instance; + + public InlineResponseDefaultTests() + { + // TODO uncomment below to create an instance of InlineResponseDefault + //instance = new InlineResponseDefault(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of InlineResponseDefault + /// + [Fact] + public void InlineResponseDefaultInstanceTest() + { + // TODO uncomment below to test "IsType" InlineResponseDefault + //Assert.IsType(instance); + } + + + /// + /// Test the property 'String' + /// + [Fact] + public void StringTest() + { + // TODO unit test for the property 'String' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/IsoscelesTriangleTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/IsoscelesTriangleTests.cs new file mode 100644 index 00000000000..755c417cc54 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/IsoscelesTriangleTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing IsoscelesTriangle + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class IsoscelesTriangleTests : IDisposable + { + // TODO uncomment below to declare an instance variable for IsoscelesTriangle + //private IsoscelesTriangle instance; + + public IsoscelesTriangleTests() + { + // TODO uncomment below to create an instance of IsoscelesTriangle + //instance = new IsoscelesTriangle(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of IsoscelesTriangle + /// + [Fact] + public void IsoscelesTriangleInstanceTest() + { + // TODO uncomment below to test "IsType" IsoscelesTriangle + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'TriangleType' + /// + [Fact] + public void TriangleTypeTest() + { + // TODO unit test for the property 'TriangleType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ListTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ListTests.cs new file mode 100644 index 00000000000..2ed828d0520 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ListTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing List + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ListTests : IDisposable + { + // TODO uncomment below to declare an instance variable for List + //private List instance; + + public ListTests() + { + // TODO uncomment below to create an instance of List + //instance = new List(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of List + /// + [Fact] + public void ListInstanceTest() + { + // TODO uncomment below to test "IsType" List + //Assert.IsType(instance); + } + + + /// + /// Test the property '_123List' + /// + [Fact] + public void _123ListTest() + { + // TODO unit test for the property '_123List' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/MammalTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/MammalTests.cs new file mode 100644 index 00000000000..7b46cbf0645 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/MammalTests.cs @@ -0,0 +1,94 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Mammal + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class MammalTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Mammal + //private Mammal instance; + + public MammalTests() + { + // TODO uncomment below to create an instance of Mammal + //instance = new Mammal(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Mammal + /// + [Fact] + public void MammalInstanceTest() + { + // TODO uncomment below to test "IsType" Mammal + //Assert.IsType(instance); + } + + + /// + /// Test the property 'HasBaleen' + /// + [Fact] + public void HasBaleenTest() + { + // TODO unit test for the property 'HasBaleen' + } + /// + /// Test the property 'HasTeeth' + /// + [Fact] + public void HasTeethTest() + { + // TODO unit test for the property 'HasTeeth' + } + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + /// + /// Test the property 'Type' + /// + [Fact] + public void TypeTest() + { + // TODO unit test for the property 'Type' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/MapTestTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/MapTestTests.cs new file mode 100644 index 00000000000..20036e1c905 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/MapTestTests.cs @@ -0,0 +1,94 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing MapTest + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class MapTestTests : IDisposable + { + // TODO uncomment below to declare an instance variable for MapTest + //private MapTest instance; + + public MapTestTests() + { + // TODO uncomment below to create an instance of MapTest + //instance = new MapTest(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of MapTest + /// + [Fact] + public void MapTestInstanceTest() + { + // TODO uncomment below to test "IsType" MapTest + //Assert.IsType(instance); + } + + + /// + /// Test the property 'MapMapOfString' + /// + [Fact] + public void MapMapOfStringTest() + { + // TODO unit test for the property 'MapMapOfString' + } + /// + /// Test the property 'MapOfEnumString' + /// + [Fact] + public void MapOfEnumStringTest() + { + // TODO unit test for the property 'MapOfEnumString' + } + /// + /// Test the property 'DirectMap' + /// + [Fact] + public void DirectMapTest() + { + // TODO unit test for the property 'DirectMap' + } + /// + /// Test the property 'IndirectMap' + /// + [Fact] + public void IndirectMapTest() + { + // TODO unit test for the property 'IndirectMap' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/MixedPropertiesAndAdditionalPropertiesClassTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/MixedPropertiesAndAdditionalPropertiesClassTests.cs new file mode 100644 index 00000000000..f56cd715f45 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/MixedPropertiesAndAdditionalPropertiesClassTests.cs @@ -0,0 +1,86 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing MixedPropertiesAndAdditionalPropertiesClass + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class MixedPropertiesAndAdditionalPropertiesClassTests : IDisposable + { + // TODO uncomment below to declare an instance variable for MixedPropertiesAndAdditionalPropertiesClass + //private MixedPropertiesAndAdditionalPropertiesClass instance; + + public MixedPropertiesAndAdditionalPropertiesClassTests() + { + // TODO uncomment below to create an instance of MixedPropertiesAndAdditionalPropertiesClass + //instance = new MixedPropertiesAndAdditionalPropertiesClass(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of MixedPropertiesAndAdditionalPropertiesClass + /// + [Fact] + public void MixedPropertiesAndAdditionalPropertiesClassInstanceTest() + { + // TODO uncomment below to test "IsType" MixedPropertiesAndAdditionalPropertiesClass + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Uuid' + /// + [Fact] + public void UuidTest() + { + // TODO unit test for the property 'Uuid' + } + /// + /// Test the property 'DateTime' + /// + [Fact] + public void DateTimeTest() + { + // TODO unit test for the property 'DateTime' + } + /// + /// Test the property 'Map' + /// + [Fact] + public void MapTest() + { + // TODO unit test for the property 'Map' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/Model200ResponseTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/Model200ResponseTests.cs new file mode 100644 index 00000000000..e25478618f2 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/Model200ResponseTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Model200Response + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class Model200ResponseTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Model200Response + //private Model200Response instance; + + public Model200ResponseTests() + { + // TODO uncomment below to create an instance of Model200Response + //instance = new Model200Response(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Model200Response + /// + [Fact] + public void Model200ResponseInstanceTest() + { + // TODO uncomment below to test "IsType" Model200Response + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Name' + /// + [Fact] + public void NameTest() + { + // TODO unit test for the property 'Name' + } + /// + /// Test the property 'Class' + /// + [Fact] + public void ClassTest() + { + // TODO unit test for the property 'Class' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ModelClientTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ModelClientTests.cs new file mode 100644 index 00000000000..24a9e263158 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ModelClientTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ModelClient + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ModelClientTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ModelClient + //private ModelClient instance; + + public ModelClientTests() + { + // TODO uncomment below to create an instance of ModelClient + //instance = new ModelClient(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ModelClient + /// + [Fact] + public void ModelClientInstanceTest() + { + // TODO uncomment below to test "IsType" ModelClient + //Assert.IsType(instance); + } + + + /// + /// Test the property '_Client' + /// + [Fact] + public void _ClientTest() + { + // TODO unit test for the property '_Client' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NameTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NameTests.cs new file mode 100644 index 00000000000..c390049e66d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NameTests.cs @@ -0,0 +1,94 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Name + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class NameTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Name + //private Name instance; + + public NameTests() + { + // TODO uncomment below to create an instance of Name + //instance = new Name(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Name + /// + [Fact] + public void NameInstanceTest() + { + // TODO uncomment below to test "IsType" Name + //Assert.IsType(instance); + } + + + /// + /// Test the property '_Name' + /// + [Fact] + public void _NameTest() + { + // TODO unit test for the property '_Name' + } + /// + /// Test the property 'SnakeCase' + /// + [Fact] + public void SnakeCaseTest() + { + // TODO unit test for the property 'SnakeCase' + } + /// + /// Test the property 'Property' + /// + [Fact] + public void PropertyTest() + { + // TODO unit test for the property 'Property' + } + /// + /// Test the property '_123Number' + /// + [Fact] + public void _123NumberTest() + { + // TODO unit test for the property '_123Number' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NullableClassTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NullableClassTests.cs new file mode 100644 index 00000000000..8f00505612a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NullableClassTests.cs @@ -0,0 +1,158 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing NullableClass + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class NullableClassTests : IDisposable + { + // TODO uncomment below to declare an instance variable for NullableClass + //private NullableClass instance; + + public NullableClassTests() + { + // TODO uncomment below to create an instance of NullableClass + //instance = new NullableClass(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of NullableClass + /// + [Fact] + public void NullableClassInstanceTest() + { + // TODO uncomment below to test "IsType" NullableClass + //Assert.IsType(instance); + } + + + /// + /// Test the property 'IntegerProp' + /// + [Fact] + public void IntegerPropTest() + { + // TODO unit test for the property 'IntegerProp' + } + /// + /// Test the property 'NumberProp' + /// + [Fact] + public void NumberPropTest() + { + // TODO unit test for the property 'NumberProp' + } + /// + /// Test the property 'BooleanProp' + /// + [Fact] + public void BooleanPropTest() + { + // TODO unit test for the property 'BooleanProp' + } + /// + /// Test the property 'StringProp' + /// + [Fact] + public void StringPropTest() + { + // TODO unit test for the property 'StringProp' + } + /// + /// Test the property 'DateProp' + /// + [Fact] + public void DatePropTest() + { + // TODO unit test for the property 'DateProp' + } + /// + /// Test the property 'DatetimeProp' + /// + [Fact] + public void DatetimePropTest() + { + // TODO unit test for the property 'DatetimeProp' + } + /// + /// Test the property 'ArrayNullableProp' + /// + [Fact] + public void ArrayNullablePropTest() + { + // TODO unit test for the property 'ArrayNullableProp' + } + /// + /// Test the property 'ArrayAndItemsNullableProp' + /// + [Fact] + public void ArrayAndItemsNullablePropTest() + { + // TODO unit test for the property 'ArrayAndItemsNullableProp' + } + /// + /// Test the property 'ArrayItemsNullable' + /// + [Fact] + public void ArrayItemsNullableTest() + { + // TODO unit test for the property 'ArrayItemsNullable' + } + /// + /// Test the property 'ObjectNullableProp' + /// + [Fact] + public void ObjectNullablePropTest() + { + // TODO unit test for the property 'ObjectNullableProp' + } + /// + /// Test the property 'ObjectAndItemsNullableProp' + /// + [Fact] + public void ObjectAndItemsNullablePropTest() + { + // TODO unit test for the property 'ObjectAndItemsNullableProp' + } + /// + /// Test the property 'ObjectItemsNullable' + /// + [Fact] + public void ObjectItemsNullableTest() + { + // TODO unit test for the property 'ObjectItemsNullable' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NullableShapeTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NullableShapeTests.cs new file mode 100644 index 00000000000..5662f91d6e6 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NullableShapeTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing NullableShape + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class NullableShapeTests : IDisposable + { + // TODO uncomment below to declare an instance variable for NullableShape + //private NullableShape instance; + + public NullableShapeTests() + { + // TODO uncomment below to create an instance of NullableShape + //instance = new NullableShape(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of NullableShape + /// + [Fact] + public void NullableShapeInstanceTest() + { + // TODO uncomment below to test "IsType" NullableShape + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NumberOnlyTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NumberOnlyTests.cs new file mode 100644 index 00000000000..3a06cb020b2 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/NumberOnlyTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing NumberOnly + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class NumberOnlyTests : IDisposable + { + // TODO uncomment below to declare an instance variable for NumberOnly + //private NumberOnly instance; + + public NumberOnlyTests() + { + // TODO uncomment below to create an instance of NumberOnly + //instance = new NumberOnly(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of NumberOnly + /// + [Fact] + public void NumberOnlyInstanceTest() + { + // TODO uncomment below to test "IsType" NumberOnly + //Assert.IsType(instance); + } + + + /// + /// Test the property 'JustNumber' + /// + [Fact] + public void JustNumberTest() + { + // TODO unit test for the property 'JustNumber' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OrderTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OrderTests.cs new file mode 100644 index 00000000000..cf5c561c547 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OrderTests.cs @@ -0,0 +1,110 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Order + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class OrderTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Order + //private Order instance; + + public OrderTests() + { + // TODO uncomment below to create an instance of Order + //instance = new Order(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Order + /// + [Fact] + public void OrderInstanceTest() + { + // TODO uncomment below to test "IsType" Order + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Id' + /// + [Fact] + public void IdTest() + { + // TODO unit test for the property 'Id' + } + /// + /// Test the property 'PetId' + /// + [Fact] + public void PetIdTest() + { + // TODO unit test for the property 'PetId' + } + /// + /// Test the property 'Quantity' + /// + [Fact] + public void QuantityTest() + { + // TODO unit test for the property 'Quantity' + } + /// + /// Test the property 'ShipDate' + /// + [Fact] + public void ShipDateTest() + { + // TODO unit test for the property 'ShipDate' + } + /// + /// Test the property 'Status' + /// + [Fact] + public void StatusTest() + { + // TODO unit test for the property 'Status' + } + /// + /// Test the property 'Complete' + /// + [Fact] + public void CompleteTest() + { + // TODO unit test for the property 'Complete' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterCompositeTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterCompositeTests.cs new file mode 100644 index 00000000000..2efda0db59c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterCompositeTests.cs @@ -0,0 +1,86 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing OuterComposite + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class OuterCompositeTests : IDisposable + { + // TODO uncomment below to declare an instance variable for OuterComposite + //private OuterComposite instance; + + public OuterCompositeTests() + { + // TODO uncomment below to create an instance of OuterComposite + //instance = new OuterComposite(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of OuterComposite + /// + [Fact] + public void OuterCompositeInstanceTest() + { + // TODO uncomment below to test "IsType" OuterComposite + //Assert.IsType(instance); + } + + + /// + /// Test the property 'MyNumber' + /// + [Fact] + public void MyNumberTest() + { + // TODO unit test for the property 'MyNumber' + } + /// + /// Test the property 'MyString' + /// + [Fact] + public void MyStringTest() + { + // TODO unit test for the property 'MyString' + } + /// + /// Test the property 'MyBoolean' + /// + [Fact] + public void MyBooleanTest() + { + // TODO unit test for the property 'MyBoolean' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumDefaultValueTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumDefaultValueTests.cs new file mode 100644 index 00000000000..986fff774c4 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumDefaultValueTests.cs @@ -0,0 +1,62 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing OuterEnumDefaultValue + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class OuterEnumDefaultValueTests : IDisposable + { + // TODO uncomment below to declare an instance variable for OuterEnumDefaultValue + //private OuterEnumDefaultValue instance; + + public OuterEnumDefaultValueTests() + { + // TODO uncomment below to create an instance of OuterEnumDefaultValue + //instance = new OuterEnumDefaultValue(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of OuterEnumDefaultValue + /// + [Fact] + public void OuterEnumDefaultValueInstanceTest() + { + // TODO uncomment below to test "IsType" OuterEnumDefaultValue + //Assert.IsType(instance); + } + + + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerDefaultValueTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerDefaultValueTests.cs new file mode 100644 index 00000000000..015d5dab945 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerDefaultValueTests.cs @@ -0,0 +1,62 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing OuterEnumIntegerDefaultValue + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class OuterEnumIntegerDefaultValueTests : IDisposable + { + // TODO uncomment below to declare an instance variable for OuterEnumIntegerDefaultValue + //private OuterEnumIntegerDefaultValue instance; + + public OuterEnumIntegerDefaultValueTests() + { + // TODO uncomment below to create an instance of OuterEnumIntegerDefaultValue + //instance = new OuterEnumIntegerDefaultValue(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of OuterEnumIntegerDefaultValue + /// + [Fact] + public void OuterEnumIntegerDefaultValueInstanceTest() + { + // TODO uncomment below to test "IsType" OuterEnumIntegerDefaultValue + //Assert.IsType(instance); + } + + + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerTests.cs new file mode 100644 index 00000000000..385e899110a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumIntegerTests.cs @@ -0,0 +1,62 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing OuterEnumInteger + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class OuterEnumIntegerTests : IDisposable + { + // TODO uncomment below to declare an instance variable for OuterEnumInteger + //private OuterEnumInteger instance; + + public OuterEnumIntegerTests() + { + // TODO uncomment below to create an instance of OuterEnumInteger + //instance = new OuterEnumInteger(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of OuterEnumInteger + /// + [Fact] + public void OuterEnumIntegerInstanceTest() + { + // TODO uncomment below to test "IsType" OuterEnumInteger + //Assert.IsType(instance); + } + + + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumTests.cs new file mode 100644 index 00000000000..f47304767b9 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/OuterEnumTests.cs @@ -0,0 +1,62 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing OuterEnum + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class OuterEnumTests : IDisposable + { + // TODO uncomment below to declare an instance variable for OuterEnum + //private OuterEnum instance; + + public OuterEnumTests() + { + // TODO uncomment below to create an instance of OuterEnum + //instance = new OuterEnum(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of OuterEnum + /// + [Fact] + public void OuterEnumInstanceTest() + { + // TODO uncomment below to test "IsType" OuterEnum + //Assert.IsType(instance); + } + + + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ParentPetTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ParentPetTests.cs new file mode 100644 index 00000000000..1e17568ed33 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ParentPetTests.cs @@ -0,0 +1,71 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ParentPet + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ParentPetTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ParentPet + //private ParentPet instance; + + public ParentPetTests() + { + // TODO uncomment below to create an instance of ParentPet + //instance = new ParentPet(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ParentPet + /// + [Fact] + public void ParentPetInstanceTest() + { + // TODO uncomment below to test "IsType" ParentPet + //Assert.IsType(instance); + } + + /// + /// Test deserialize a ChildCat from type ParentPet + /// + [Fact] + public void ChildCatDeserializeFromParentPetTest() + { + // TODO uncomment below to test deserialize a ChildCat from type ParentPet + //Assert.IsType(JsonConvert.DeserializeObject(new ChildCat().ToJson())); + } + + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/PetTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/PetTests.cs new file mode 100644 index 00000000000..154e66f8dfc --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/PetTests.cs @@ -0,0 +1,110 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Pet + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class PetTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Pet + //private Pet instance; + + public PetTests() + { + // TODO uncomment below to create an instance of Pet + //instance = new Pet(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Pet + /// + [Fact] + public void PetInstanceTest() + { + // TODO uncomment below to test "IsType" Pet + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Id' + /// + [Fact] + public void IdTest() + { + // TODO unit test for the property 'Id' + } + /// + /// Test the property 'Category' + /// + [Fact] + public void CategoryTest() + { + // TODO unit test for the property 'Category' + } + /// + /// Test the property 'Name' + /// + [Fact] + public void NameTest() + { + // TODO unit test for the property 'Name' + } + /// + /// Test the property 'PhotoUrls' + /// + [Fact] + public void PhotoUrlsTest() + { + // TODO unit test for the property 'PhotoUrls' + } + /// + /// Test the property 'Tags' + /// + [Fact] + public void TagsTest() + { + // TODO unit test for the property 'Tags' + } + /// + /// Test the property 'Status' + /// + [Fact] + public void StatusTest() + { + // TODO unit test for the property 'Status' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/PigTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/PigTests.cs new file mode 100644 index 00000000000..55cf2189046 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/PigTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Pig + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class PigTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Pig + //private Pig instance; + + public PigTests() + { + // TODO uncomment below to create an instance of Pig + //instance = new Pig(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Pig + /// + [Fact] + public void PigInstanceTest() + { + // TODO uncomment below to test "IsType" Pig + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/QuadrilateralInterfaceTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/QuadrilateralInterfaceTests.cs new file mode 100644 index 00000000000..6eef9f4c816 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/QuadrilateralInterfaceTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing QuadrilateralInterface + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class QuadrilateralInterfaceTests : IDisposable + { + // TODO uncomment below to declare an instance variable for QuadrilateralInterface + //private QuadrilateralInterface instance; + + public QuadrilateralInterfaceTests() + { + // TODO uncomment below to create an instance of QuadrilateralInterface + //instance = new QuadrilateralInterface(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of QuadrilateralInterface + /// + [Fact] + public void QuadrilateralInterfaceInstanceTest() + { + // TODO uncomment below to test "IsType" QuadrilateralInterface + //Assert.IsType(instance); + } + + + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/QuadrilateralTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/QuadrilateralTests.cs new file mode 100644 index 00000000000..26826681a47 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/QuadrilateralTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Quadrilateral + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class QuadrilateralTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Quadrilateral + //private Quadrilateral instance; + + public QuadrilateralTests() + { + // TODO uncomment below to create an instance of Quadrilateral + //instance = new Quadrilateral(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Quadrilateral + /// + [Fact] + public void QuadrilateralInstanceTest() + { + // TODO uncomment below to test "IsType" Quadrilateral + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ReadOnlyFirstTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ReadOnlyFirstTests.cs new file mode 100644 index 00000000000..dc3d0fad54c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ReadOnlyFirstTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ReadOnlyFirst + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ReadOnlyFirstTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ReadOnlyFirst + //private ReadOnlyFirst instance; + + public ReadOnlyFirstTests() + { + // TODO uncomment below to create an instance of ReadOnlyFirst + //instance = new ReadOnlyFirst(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ReadOnlyFirst + /// + [Fact] + public void ReadOnlyFirstInstanceTest() + { + // TODO uncomment below to test "IsType" ReadOnlyFirst + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Bar' + /// + [Fact] + public void BarTest() + { + // TODO unit test for the property 'Bar' + } + /// + /// Test the property 'Baz' + /// + [Fact] + public void BazTest() + { + // TODO unit test for the property 'Baz' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ReturnTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ReturnTests.cs new file mode 100644 index 00000000000..c8c1d6510d2 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ReturnTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Return + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ReturnTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Return + //private Return instance; + + public ReturnTests() + { + // TODO uncomment below to create an instance of Return + //instance = new Return(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Return + /// + [Fact] + public void ReturnInstanceTest() + { + // TODO uncomment below to test "IsType" Return + //Assert.IsType(instance); + } + + + /// + /// Test the property '_Return' + /// + [Fact] + public void _ReturnTest() + { + // TODO unit test for the property '_Return' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ScaleneTriangleTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ScaleneTriangleTests.cs new file mode 100644 index 00000000000..04cb9f1ab6b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ScaleneTriangleTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ScaleneTriangle + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ScaleneTriangleTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ScaleneTriangle + //private ScaleneTriangle instance; + + public ScaleneTriangleTests() + { + // TODO uncomment below to create an instance of ScaleneTriangle + //instance = new ScaleneTriangle(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ScaleneTriangle + /// + [Fact] + public void ScaleneTriangleInstanceTest() + { + // TODO uncomment below to test "IsType" ScaleneTriangle + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'TriangleType' + /// + [Fact] + public void TriangleTypeTest() + { + // TODO unit test for the property 'TriangleType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/SerializeBasedOnInitialization.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/SerializeBasedOnInitialization.cs new file mode 100644 index 00000000000..5fdb80097d8 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/SerializeBasedOnInitialization.cs @@ -0,0 +1,52 @@ +using Org.OpenAPITools.Model; +using System; +using System.Collections.Generic; +using System.Text; +using Xunit; +namespace Org.OpenAPITools.Test.Model +{ + public class SerializeBasedOnInitialization + { + public SerializeBasedOnInitialization() + { + + } + + /// + /// Apple has two properties, here we serialize only origin property + /// + [Fact] + public void SerializeAppleOrigin() + { + Apple apple = new Apple(); + apple.Origin = "India"; + string expectedJson = "{\r\n \"origin\": \"India\"\r\n}"; + Assert.Equal(expectedJson, apple.ToJson()); + } + + /// + /// Apple has two properties, here we serialize only cultivar property + /// + [Fact] + public void SerializeAppleCultivate() + { + Apple apple = new Apple(); + apple.Cultivar = "Kashmiri"; + string expectedJson = "{\r\n \"cultivar\": \"Kashmiri\"\r\n}"; + Assert.Equal(expectedJson, apple.ToJson()); + } + + /// + /// Here we serialze all the properties of Apple that it origin and cultivar both. + /// + [Fact] + public void SerializeApple() + { + Apple apple = new Apple(); + apple.Origin = "India"; + apple.Cultivar = "Kashmiri"; + string expectedJson = "{\r\n \"cultivar\": \"Kashmiri\",\r\n \"origin\": \"India\"\r\n}"; + Assert.Equal(expectedJson, apple.ToJson()); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ShapeInterfaceTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ShapeInterfaceTests.cs new file mode 100644 index 00000000000..7bd0bc86f96 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ShapeInterfaceTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ShapeInterface + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ShapeInterfaceTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ShapeInterface + //private ShapeInterface instance; + + public ShapeInterfaceTests() + { + // TODO uncomment below to create an instance of ShapeInterface + //instance = new ShapeInterface(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ShapeInterface + /// + [Fact] + public void ShapeInterfaceInstanceTest() + { + // TODO uncomment below to test "IsType" ShapeInterface + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ShapeOrNullTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ShapeOrNullTests.cs new file mode 100644 index 00000000000..d0af114157c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ShapeOrNullTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing ShapeOrNull + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ShapeOrNullTests : IDisposable + { + // TODO uncomment below to declare an instance variable for ShapeOrNull + //private ShapeOrNull instance; + + public ShapeOrNullTests() + { + // TODO uncomment below to create an instance of ShapeOrNull + //instance = new ShapeOrNull(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of ShapeOrNull + /// + [Fact] + public void ShapeOrNullInstanceTest() + { + // TODO uncomment below to test "IsType" ShapeOrNull + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ShapeTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ShapeTests.cs new file mode 100644 index 00000000000..b01bd531f85 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ShapeTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Shape + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ShapeTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Shape + //private Shape instance; + + public ShapeTests() + { + // TODO uncomment below to create an instance of Shape + //instance = new Shape(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Shape + /// + [Fact] + public void ShapeInstanceTest() + { + // TODO uncomment below to test "IsType" Shape + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/SimpleQuadrilateralTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/SimpleQuadrilateralTests.cs new file mode 100644 index 00000000000..6648e980928 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/SimpleQuadrilateralTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing SimpleQuadrilateral + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class SimpleQuadrilateralTests : IDisposable + { + // TODO uncomment below to declare an instance variable for SimpleQuadrilateral + //private SimpleQuadrilateral instance; + + public SimpleQuadrilateralTests() + { + // TODO uncomment below to create an instance of SimpleQuadrilateral + //instance = new SimpleQuadrilateral(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of SimpleQuadrilateral + /// + [Fact] + public void SimpleQuadrilateralInstanceTest() + { + // TODO uncomment below to test "IsType" SimpleQuadrilateral + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'QuadrilateralType' + /// + [Fact] + public void QuadrilateralTypeTest() + { + // TODO unit test for the property 'QuadrilateralType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/SpecialModelNameTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/SpecialModelNameTests.cs new file mode 100644 index 00000000000..0f0e1ff12a9 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/SpecialModelNameTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing SpecialModelName + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class SpecialModelNameTests : IDisposable + { + // TODO uncomment below to declare an instance variable for SpecialModelName + //private SpecialModelName instance; + + public SpecialModelNameTests() + { + // TODO uncomment below to create an instance of SpecialModelName + //instance = new SpecialModelName(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of SpecialModelName + /// + [Fact] + public void SpecialModelNameInstanceTest() + { + // TODO uncomment below to test "IsType" SpecialModelName + //Assert.IsType(instance); + } + + + /// + /// Test the property 'SpecialPropertyName' + /// + [Fact] + public void SpecialPropertyNameTest() + { + // TODO unit test for the property 'SpecialPropertyName' + } + /// + /// Test the property '_SpecialModelName' + /// + [Fact] + public void _SpecialModelNameTest() + { + // TODO unit test for the property '_SpecialModelName' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/TagTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/TagTests.cs new file mode 100644 index 00000000000..6d56232d0a7 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/TagTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Tag + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class TagTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Tag + //private Tag instance; + + public TagTests() + { + // TODO uncomment below to create an instance of Tag + //instance = new Tag(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Tag + /// + [Fact] + public void TagInstanceTest() + { + // TODO uncomment below to test "IsType" Tag + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Id' + /// + [Fact] + public void IdTest() + { + // TODO unit test for the property 'Id' + } + /// + /// Test the property 'Name' + /// + [Fact] + public void NameTest() + { + // TODO unit test for the property 'Name' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/TriangleInterfaceTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/TriangleInterfaceTests.cs new file mode 100644 index 00000000000..fba65470bee --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/TriangleInterfaceTests.cs @@ -0,0 +1,70 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing TriangleInterface + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class TriangleInterfaceTests : IDisposable + { + // TODO uncomment below to declare an instance variable for TriangleInterface + //private TriangleInterface instance; + + public TriangleInterfaceTests() + { + // TODO uncomment below to create an instance of TriangleInterface + //instance = new TriangleInterface(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of TriangleInterface + /// + [Fact] + public void TriangleInterfaceInstanceTest() + { + // TODO uncomment below to test "IsType" TriangleInterface + //Assert.IsType(instance); + } + + + /// + /// Test the property 'TriangleType' + /// + [Fact] + public void TriangleTypeTest() + { + // TODO unit test for the property 'TriangleType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/TriangleTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/TriangleTests.cs new file mode 100644 index 00000000000..bdaab0b4796 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/TriangleTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Triangle + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class TriangleTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Triangle + //private Triangle instance; + + public TriangleTests() + { + // TODO uncomment below to create an instance of Triangle + //instance = new Triangle(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Triangle + /// + [Fact] + public void TriangleInstanceTest() + { + // TODO uncomment below to test "IsType" Triangle + //Assert.IsType(instance); + } + + + /// + /// Test the property 'ShapeType' + /// + [Fact] + public void ShapeTypeTest() + { + // TODO unit test for the property 'ShapeType' + } + /// + /// Test the property 'TriangleType' + /// + [Fact] + public void TriangleTypeTest() + { + // TODO unit test for the property 'TriangleType' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/UserTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/UserTests.cs new file mode 100644 index 00000000000..a7b095e4c28 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/UserTests.cs @@ -0,0 +1,158 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing User + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class UserTests : IDisposable + { + // TODO uncomment below to declare an instance variable for User + //private User instance; + + public UserTests() + { + // TODO uncomment below to create an instance of User + //instance = new User(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of User + /// + [Fact] + public void UserInstanceTest() + { + // TODO uncomment below to test "IsType" User + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Id' + /// + [Fact] + public void IdTest() + { + // TODO unit test for the property 'Id' + } + /// + /// Test the property 'Username' + /// + [Fact] + public void UsernameTest() + { + // TODO unit test for the property 'Username' + } + /// + /// Test the property 'FirstName' + /// + [Fact] + public void FirstNameTest() + { + // TODO unit test for the property 'FirstName' + } + /// + /// Test the property 'LastName' + /// + [Fact] + public void LastNameTest() + { + // TODO unit test for the property 'LastName' + } + /// + /// Test the property 'Email' + /// + [Fact] + public void EmailTest() + { + // TODO unit test for the property 'Email' + } + /// + /// Test the property 'Password' + /// + [Fact] + public void PasswordTest() + { + // TODO unit test for the property 'Password' + } + /// + /// Test the property 'Phone' + /// + [Fact] + public void PhoneTest() + { + // TODO unit test for the property 'Phone' + } + /// + /// Test the property 'UserStatus' + /// + [Fact] + public void UserStatusTest() + { + // TODO unit test for the property 'UserStatus' + } + /// + /// Test the property 'ObjectWithNoDeclaredProps' + /// + [Fact] + public void ObjectWithNoDeclaredPropsTest() + { + // TODO unit test for the property 'ObjectWithNoDeclaredProps' + } + /// + /// Test the property 'ObjectWithNoDeclaredPropsNullable' + /// + [Fact] + public void ObjectWithNoDeclaredPropsNullableTest() + { + // TODO unit test for the property 'ObjectWithNoDeclaredPropsNullable' + } + /// + /// Test the property 'AnyTypeProp' + /// + [Fact] + public void AnyTypePropTest() + { + // TODO unit test for the property 'AnyTypeProp' + } + /// + /// Test the property 'AnyTypePropNullable' + /// + [Fact] + public void AnyTypePropNullableTest() + { + // TODO unit test for the property 'AnyTypePropNullable' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/WhaleTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/WhaleTests.cs new file mode 100644 index 00000000000..09610791943 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/WhaleTests.cs @@ -0,0 +1,86 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Whale + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class WhaleTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Whale + //private Whale instance; + + public WhaleTests() + { + // TODO uncomment below to create an instance of Whale + //instance = new Whale(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Whale + /// + [Fact] + public void WhaleInstanceTest() + { + // TODO uncomment below to test "IsType" Whale + //Assert.IsType(instance); + } + + + /// + /// Test the property 'HasBaleen' + /// + [Fact] + public void HasBaleenTest() + { + // TODO unit test for the property 'HasBaleen' + } + /// + /// Test the property 'HasTeeth' + /// + [Fact] + public void HasTeethTest() + { + // TODO unit test for the property 'HasTeeth' + } + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ZebraTests.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ZebraTests.cs new file mode 100644 index 00000000000..f44e9213140 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/ZebraTests.cs @@ -0,0 +1,78 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing Zebra + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class ZebraTests : IDisposable + { + // TODO uncomment below to declare an instance variable for Zebra + //private Zebra instance; + + public ZebraTests() + { + // TODO uncomment below to create an instance of Zebra + //instance = new Zebra(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of Zebra + /// + [Fact] + public void ZebraInstanceTest() + { + // TODO uncomment below to test "IsType" Zebra + //Assert.IsType(instance); + } + + + /// + /// Test the property 'Type' + /// + [Fact] + public void TypeTest() + { + // TODO unit test for the property 'Type' + } + /// + /// Test the property 'ClassName' + /// + [Fact] + public void ClassNameTest() + { + // TODO unit test for the property 'ClassName' + } + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj new file mode 100644 index 00000000000..d58f7e14d8d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj @@ -0,0 +1,20 @@ + + + + Org.OpenAPITools.Test + Org.OpenAPITools.Test + netcoreapp2.0 + false + + + + + + + + + + + + + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/AnotherFakeApi.cs new file mode 100644 index 00000000000..94d8b854b0d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -0,0 +1,320 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IAnotherFakeApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// To test special tags + /// + /// + /// To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// ModelClient + ModelClient Call123TestSpecialTags(ModelClient modelClient); + + /// + /// To test special tags + /// + /// + /// To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// ApiResponse of ModelClient + ApiResponse Call123TestSpecialTagsWithHttpInfo(ModelClient modelClient); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IAnotherFakeApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// To test special tags + /// + /// + /// To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ModelClient + System.Threading.Tasks.Task Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// To test special tags + /// + /// + /// To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ModelClient) + System.Threading.Tasks.Task> Call123TestSpecialTagsWithHttpInfoAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IAnotherFakeApi : IAnotherFakeApiSync, IAnotherFakeApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class AnotherFakeApi : IAnotherFakeApi + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public AnotherFakeApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public AnotherFakeApi(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public AnotherFakeApi(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public AnotherFakeApi(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// To test special tags To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// ModelClient + public ModelClient Call123TestSpecialTags(ModelClient modelClient) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = Call123TestSpecialTagsWithHttpInfo(modelClient); + return localVarResponse.Data; + } + + /// + /// To test special tags To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// ApiResponse of ModelClient + public Org.OpenAPITools.Client.ApiResponse Call123TestSpecialTagsWithHttpInfo(ModelClient modelClient) + { + // verify the required parameter 'modelClient' is set + if (modelClient == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'modelClient' when calling AnotherFakeApi->Call123TestSpecialTags"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = modelClient; + + + // make the HTTP request + var localVarResponse = this.Client.Patch("/another-fake/dummy", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("Call123TestSpecialTags", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test special tags To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ModelClient + public async System.Threading.Tasks.Task Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await Call123TestSpecialTagsWithHttpInfoAsync(modelClient, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// To test special tags To test special tags and operation ID starting with number + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ModelClient) + public async System.Threading.Tasks.Task> Call123TestSpecialTagsWithHttpInfoAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'modelClient' is set + if (modelClient == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'modelClient' when calling AnotherFakeApi->Call123TestSpecialTags"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = modelClient; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PatchAsync("/another-fake/dummy", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("Call123TestSpecialTags", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/DefaultApi.cs new file mode 100644 index 00000000000..27789c4533a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -0,0 +1,297 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IDefaultApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// + /// + /// Thrown when fails to make API call + /// InlineResponseDefault + InlineResponseDefault FooGet(); + + /// + /// + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of InlineResponseDefault + ApiResponse FooGetWithHttpInfo(); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IDefaultApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of InlineResponseDefault + System.Threading.Tasks.Task FooGetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (InlineResponseDefault) + System.Threading.Tasks.Task> FooGetWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IDefaultApi : IDefaultApiSync, IDefaultApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class DefaultApi : IDefaultApi + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public DefaultApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public DefaultApi(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public DefaultApi(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public DefaultApi(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// + /// + /// Thrown when fails to make API call + /// InlineResponseDefault + public InlineResponseDefault FooGet() + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = FooGetWithHttpInfo(); + return localVarResponse.Data; + } + + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of InlineResponseDefault + public Org.OpenAPITools.Client.ApiResponse FooGetWithHttpInfo() + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + var localVarResponse = this.Client.Get("/foo", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FooGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of InlineResponseDefault + public async System.Threading.Tasks.Task FooGetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await FooGetWithHttpInfoAsync(cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (InlineResponseDefault) + public async System.Threading.Tasks.Task> FooGetWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/foo", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FooGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeApi.cs new file mode 100644 index 00000000000..d7749151314 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeApi.cs @@ -0,0 +1,2951 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// Health check endpoint + /// + /// Thrown when fails to make API call + /// HealthCheckResult + HealthCheckResult FakeHealthGet(); + + /// + /// Health check endpoint + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of HealthCheckResult + ApiResponse FakeHealthGetWithHttpInfo(); + /// + /// + /// + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// bool + bool FakeOuterBooleanSerialize(bool? body = default(bool?)); + + /// + /// + /// + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// ApiResponse of bool + ApiResponse FakeOuterBooleanSerializeWithHttpInfo(bool? body = default(bool?)); + /// + /// + /// + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// OuterComposite + OuterComposite FakeOuterCompositeSerialize(OuterComposite outerComposite = default(OuterComposite)); + + /// + /// + /// + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// ApiResponse of OuterComposite + ApiResponse FakeOuterCompositeSerializeWithHttpInfo(OuterComposite outerComposite = default(OuterComposite)); + /// + /// + /// + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// decimal + decimal FakeOuterNumberSerialize(decimal? body = default(decimal?)); + + /// + /// + /// + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// ApiResponse of decimal + ApiResponse FakeOuterNumberSerializeWithHttpInfo(decimal? body = default(decimal?)); + /// + /// + /// + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// string + string FakeOuterStringSerialize(string body = default(string)); + + /// + /// + /// + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// ApiResponse of string + ApiResponse FakeOuterStringSerializeWithHttpInfo(string body = default(string)); + /// + /// Array of Enums + /// + /// Thrown when fails to make API call + /// List<OuterEnum> + List GetArrayOfEnums(); + + /// + /// Array of Enums + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of List<OuterEnum> + ApiResponse> GetArrayOfEnumsWithHttpInfo(); + /// + /// + /// + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// + void TestBodyWithFileSchema(FileSchemaTestClass fileSchemaTestClass); + + /// + /// + /// + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// ApiResponse of Object(void) + ApiResponse TestBodyWithFileSchemaWithHttpInfo(FileSchemaTestClass fileSchemaTestClass); + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// + void TestBodyWithQueryParams(string query, User user); + + /// + /// + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// ApiResponse of Object(void) + ApiResponse TestBodyWithQueryParamsWithHttpInfo(string query, User user); + /// + /// To test \"client\" model + /// + /// + /// To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// ModelClient + ModelClient TestClientModel(ModelClient modelClient); + + /// + /// To test \"client\" model + /// + /// + /// To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// ApiResponse of ModelClient + ApiResponse TestClientModelWithHttpInfo(ModelClient modelClient); + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// + void TestEndpointParameters(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)); + + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// ApiResponse of Object(void) + ApiResponse TestEndpointParametersWithHttpInfo(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)); + /// + /// To test enum parameters + /// + /// + /// To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// + void TestEnumParameters(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string)); + + /// + /// To test enum parameters + /// + /// + /// To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// ApiResponse of Object(void) + ApiResponse TestEnumParametersWithHttpInfo(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string)); + /// + /// Fake endpoint to test group parameters (optional) + /// + /// + /// Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// + void TestGroupParameters(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?)); + + /// + /// Fake endpoint to test group parameters (optional) + /// + /// + /// Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// ApiResponse of Object(void) + ApiResponse TestGroupParametersWithHttpInfo(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?)); + /// + /// test inline additionalProperties + /// + /// Thrown when fails to make API call + /// request body + /// + void TestInlineAdditionalProperties(Dictionary requestBody); + + /// + /// test inline additionalProperties + /// + /// + /// + /// + /// Thrown when fails to make API call + /// request body + /// ApiResponse of Object(void) + ApiResponse TestInlineAdditionalPropertiesWithHttpInfo(Dictionary requestBody); + /// + /// test json serialization of form data + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// + void TestJsonFormData(string param, string param2); + + /// + /// test json serialization of form data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// ApiResponse of Object(void) + ApiResponse TestJsonFormDataWithHttpInfo(string param, string param2); + /// + /// + /// + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// + void TestQueryParameterCollectionFormat(List pipe, List ioutil, List http, List url, List context); + + /// + /// + /// + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// ApiResponse of Object(void) + ApiResponse TestQueryParameterCollectionFormatWithHttpInfo(List pipe, List ioutil, List http, List url, List context); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// Health check endpoint + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of HealthCheckResult + System.Threading.Tasks.Task FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Health check endpoint + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (HealthCheckResult) + System.Threading.Tasks.Task> FakeHealthGetWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of bool + System.Threading.Tasks.Task FakeOuterBooleanSerializeAsync(bool? body = default(bool?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (bool) + System.Threading.Tasks.Task> FakeOuterBooleanSerializeWithHttpInfoAsync(bool? body = default(bool?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of OuterComposite + System.Threading.Tasks.Task FakeOuterCompositeSerializeAsync(OuterComposite outerComposite = default(OuterComposite), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (OuterComposite) + System.Threading.Tasks.Task> FakeOuterCompositeSerializeWithHttpInfoAsync(OuterComposite outerComposite = default(OuterComposite), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of decimal + System.Threading.Tasks.Task FakeOuterNumberSerializeAsync(decimal? body = default(decimal?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (decimal) + System.Threading.Tasks.Task> FakeOuterNumberSerializeWithHttpInfoAsync(decimal? body = default(decimal?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of string + System.Threading.Tasks.Task FakeOuterStringSerializeAsync(string body = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (string) + System.Threading.Tasks.Task> FakeOuterStringSerializeWithHttpInfoAsync(string body = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Array of Enums + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of List<OuterEnum> + System.Threading.Tasks.Task> GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Array of Enums + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<OuterEnum>) + System.Threading.Tasks.Task>> GetArrayOfEnumsWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestBodyWithFileSchemaWithHttpInfoAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestBodyWithQueryParamsAsync(string query, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestBodyWithQueryParamsWithHttpInfoAsync(string query, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// To test \"client\" model + /// + /// + /// To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ModelClient + System.Threading.Tasks.Task TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// To test \"client\" model + /// + /// + /// To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ModelClient) + System.Threading.Tasks.Task> TestClientModelWithHttpInfoAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestEndpointParametersAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestEndpointParametersWithHttpInfoAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// To test enum parameters + /// + /// + /// To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestEnumParametersAsync(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// To test enum parameters + /// + /// + /// To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestEnumParametersWithHttpInfoAsync(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Fake endpoint to test group parameters (optional) + /// + /// + /// Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestGroupParametersAsync(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Fake endpoint to test group parameters (optional) + /// + /// + /// Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestGroupParametersWithHttpInfoAsync(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// test inline additionalProperties + /// + /// + /// + /// + /// Thrown when fails to make API call + /// request body + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// test inline additionalProperties + /// + /// + /// + /// + /// Thrown when fails to make API call + /// request body + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestInlineAdditionalPropertiesWithHttpInfoAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// test json serialization of form data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// test json serialization of form data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestJsonFormDataWithHttpInfoAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// + /// + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// + /// + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> TestQueryParameterCollectionFormatWithHttpInfoAsync(List pipe, List ioutil, List http, List url, List context, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeApi : IFakeApiSync, IFakeApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class FakeApi : IFakeApi + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public FakeApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public FakeApi(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public FakeApi(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public FakeApi(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Health check endpoint + /// + /// Thrown when fails to make API call + /// HealthCheckResult + public HealthCheckResult FakeHealthGet() + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = FakeHealthGetWithHttpInfo(); + return localVarResponse.Data; + } + + /// + /// Health check endpoint + /// + /// Thrown when fails to make API call + /// ApiResponse of HealthCheckResult + public Org.OpenAPITools.Client.ApiResponse FakeHealthGetWithHttpInfo() + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + var localVarResponse = this.Client.Get("/fake/health", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeHealthGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Health check endpoint + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of HealthCheckResult + public async System.Threading.Tasks.Task FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await FakeHealthGetWithHttpInfoAsync(cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Health check endpoint + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (HealthCheckResult) + public async System.Threading.Tasks.Task> FakeHealthGetWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/fake/health", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeHealthGet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// bool + public bool FakeOuterBooleanSerialize(bool? body = default(bool?)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = FakeOuterBooleanSerializeWithHttpInfo(body); + return localVarResponse.Data; + } + + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// ApiResponse of bool + public Org.OpenAPITools.Client.ApiResponse FakeOuterBooleanSerializeWithHttpInfo(bool? body = default(bool?)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = body; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake/outer/boolean", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterBooleanSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of bool + public async System.Threading.Tasks.Task FakeOuterBooleanSerializeAsync(bool? body = default(bool?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await FakeOuterBooleanSerializeWithHttpInfoAsync(body, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Test serialization of outer boolean types + /// + /// Thrown when fails to make API call + /// Input boolean as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (bool) + public async System.Threading.Tasks.Task> FakeOuterBooleanSerializeWithHttpInfoAsync(bool? body = default(bool?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = body; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake/outer/boolean", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterBooleanSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// OuterComposite + public OuterComposite FakeOuterCompositeSerialize(OuterComposite outerComposite = default(OuterComposite)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = FakeOuterCompositeSerializeWithHttpInfo(outerComposite); + return localVarResponse.Data; + } + + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// ApiResponse of OuterComposite + public Org.OpenAPITools.Client.ApiResponse FakeOuterCompositeSerializeWithHttpInfo(OuterComposite outerComposite = default(OuterComposite)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = outerComposite; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake/outer/composite", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterCompositeSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of OuterComposite + public async System.Threading.Tasks.Task FakeOuterCompositeSerializeAsync(OuterComposite outerComposite = default(OuterComposite), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await FakeOuterCompositeSerializeWithHttpInfoAsync(outerComposite, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Test serialization of object with outer number type + /// + /// Thrown when fails to make API call + /// Input composite as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (OuterComposite) + public async System.Threading.Tasks.Task> FakeOuterCompositeSerializeWithHttpInfoAsync(OuterComposite outerComposite = default(OuterComposite), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = outerComposite; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake/outer/composite", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterCompositeSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// decimal + public decimal FakeOuterNumberSerialize(decimal? body = default(decimal?)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = FakeOuterNumberSerializeWithHttpInfo(body); + return localVarResponse.Data; + } + + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// ApiResponse of decimal + public Org.OpenAPITools.Client.ApiResponse FakeOuterNumberSerializeWithHttpInfo(decimal? body = default(decimal?)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = body; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake/outer/number", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterNumberSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of decimal + public async System.Threading.Tasks.Task FakeOuterNumberSerializeAsync(decimal? body = default(decimal?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await FakeOuterNumberSerializeWithHttpInfoAsync(body, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Test serialization of outer number types + /// + /// Thrown when fails to make API call + /// Input number as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (decimal) + public async System.Threading.Tasks.Task> FakeOuterNumberSerializeWithHttpInfoAsync(decimal? body = default(decimal?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = body; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake/outer/number", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterNumberSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// string + public string FakeOuterStringSerialize(string body = default(string)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = FakeOuterStringSerializeWithHttpInfo(body); + return localVarResponse.Data; + } + + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// ApiResponse of string + public Org.OpenAPITools.Client.ApiResponse FakeOuterStringSerializeWithHttpInfo(string body = default(string)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = body; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake/outer/string", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterStringSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of string + public async System.Threading.Tasks.Task FakeOuterStringSerializeAsync(string body = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await FakeOuterStringSerializeWithHttpInfoAsync(body, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Test serialization of outer string types + /// + /// Thrown when fails to make API call + /// Input string as post body (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (string) + public async System.Threading.Tasks.Task> FakeOuterStringSerializeWithHttpInfoAsync(string body = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "*/*" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = body; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake/outer/string", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FakeOuterStringSerialize", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Array of Enums + /// + /// Thrown when fails to make API call + /// List<OuterEnum> + public List GetArrayOfEnums() + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = GetArrayOfEnumsWithHttpInfo(); + return localVarResponse.Data; + } + + /// + /// Array of Enums + /// + /// Thrown when fails to make API call + /// ApiResponse of List<OuterEnum> + public Org.OpenAPITools.Client.ApiResponse> GetArrayOfEnumsWithHttpInfo() + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + var localVarResponse = this.Client.Get>("/fake/array-of-enums", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetArrayOfEnums", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Array of Enums + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of List<OuterEnum> + public async System.Threading.Tasks.Task> GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = await GetArrayOfEnumsWithHttpInfoAsync(cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Array of Enums + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<OuterEnum>) + public async System.Threading.Tasks.Task>> GetArrayOfEnumsWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync>("/fake/array-of-enums", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetArrayOfEnums", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// + public void TestBodyWithFileSchema(FileSchemaTestClass fileSchemaTestClass) + { + TestBodyWithFileSchemaWithHttpInfo(fileSchemaTestClass); + } + + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestBodyWithFileSchemaWithHttpInfo(FileSchemaTestClass fileSchemaTestClass) + { + // verify the required parameter 'fileSchemaTestClass' is set + if (fileSchemaTestClass == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'fileSchemaTestClass' when calling FakeApi->TestBodyWithFileSchema"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = fileSchemaTestClass; + + + // make the HTTP request + var localVarResponse = this.Client.Put("/fake/body-with-file-schema", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestBodyWithFileSchema", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestBodyWithFileSchemaWithHttpInfoAsync(fileSchemaTestClass, cancellationToken).ConfigureAwait(false); + } + + /// + /// For this test, the body for this request much reference a schema named `File`. + /// + /// Thrown when fails to make API call + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestBodyWithFileSchemaWithHttpInfoAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'fileSchemaTestClass' is set + if (fileSchemaTestClass == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'fileSchemaTestClass' when calling FakeApi->TestBodyWithFileSchema"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = fileSchemaTestClass; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PutAsync("/fake/body-with-file-schema", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestBodyWithFileSchema", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// + public void TestBodyWithQueryParams(string query, User user) + { + TestBodyWithQueryParamsWithHttpInfo(query, user); + } + + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestBodyWithQueryParamsWithHttpInfo(string query, User user) + { + // verify the required parameter 'query' is set + if (query == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'query' when calling FakeApi->TestBodyWithQueryParams"); + + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling FakeApi->TestBodyWithQueryParams"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "query", query)); + localVarRequestOptions.Data = user; + + + // make the HTTP request + var localVarResponse = this.Client.Put("/fake/body-with-query-params", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestBodyWithQueryParams", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestBodyWithQueryParamsAsync(string query, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestBodyWithQueryParamsWithHttpInfoAsync(query, user, cancellationToken).ConfigureAwait(false); + } + + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestBodyWithQueryParamsWithHttpInfoAsync(string query, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'query' is set + if (query == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'query' when calling FakeApi->TestBodyWithQueryParams"); + + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling FakeApi->TestBodyWithQueryParams"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "query", query)); + localVarRequestOptions.Data = user; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PutAsync("/fake/body-with-query-params", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestBodyWithQueryParams", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test \"client\" model To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// ModelClient + public ModelClient TestClientModel(ModelClient modelClient) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = TestClientModelWithHttpInfo(modelClient); + return localVarResponse.Data; + } + + /// + /// To test \"client\" model To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// ApiResponse of ModelClient + public Org.OpenAPITools.Client.ApiResponse TestClientModelWithHttpInfo(ModelClient modelClient) + { + // verify the required parameter 'modelClient' is set + if (modelClient == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'modelClient' when calling FakeApi->TestClientModel"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = modelClient; + + + // make the HTTP request + var localVarResponse = this.Client.Patch("/fake", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestClientModel", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test \"client\" model To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ModelClient + public async System.Threading.Tasks.Task TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await TestClientModelWithHttpInfoAsync(modelClient, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// To test \"client\" model To test \"client\" model + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ModelClient) + public async System.Threading.Tasks.Task> TestClientModelWithHttpInfoAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'modelClient' is set + if (modelClient == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'modelClient' when calling FakeApi->TestClientModel"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = modelClient; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PatchAsync("/fake", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestClientModel", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// + public void TestEndpointParameters(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)) + { + TestEndpointParametersWithHttpInfo(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, _string, binary, date, dateTime, password, callback); + } + + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestEndpointParametersWithHttpInfo(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string)) + { + // verify the required parameter 'patternWithoutDelimiter' is set + if (patternWithoutDelimiter == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'patternWithoutDelimiter' when calling FakeApi->TestEndpointParameters"); + + // verify the required parameter '_byte' is set + if (_byte == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter '_byte' when calling FakeApi->TestEndpointParameters"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (integer != null) + { + localVarRequestOptions.FormParameters.Add("integer", Org.OpenAPITools.Client.ClientUtils.ParameterToString(integer)); // form parameter + } + if (int32 != null) + { + localVarRequestOptions.FormParameters.Add("int32", Org.OpenAPITools.Client.ClientUtils.ParameterToString(int32)); // form parameter + } + if (int64 != null) + { + localVarRequestOptions.FormParameters.Add("int64", Org.OpenAPITools.Client.ClientUtils.ParameterToString(int64)); // form parameter + } + localVarRequestOptions.FormParameters.Add("number", Org.OpenAPITools.Client.ClientUtils.ParameterToString(number)); // form parameter + if (_float != null) + { + localVarRequestOptions.FormParameters.Add("float", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_float)); // form parameter + } + localVarRequestOptions.FormParameters.Add("double", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_double)); // form parameter + if (_string != null) + { + localVarRequestOptions.FormParameters.Add("string", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_string)); // form parameter + } + localVarRequestOptions.FormParameters.Add("pattern_without_delimiter", Org.OpenAPITools.Client.ClientUtils.ParameterToString(patternWithoutDelimiter)); // form parameter + localVarRequestOptions.FormParameters.Add("byte", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_byte)); // form parameter + if (binary != null) + { + localVarRequestOptions.FileParameters.Add("binary", binary); + } + if (date != null) + { + localVarRequestOptions.FormParameters.Add("date", Org.OpenAPITools.Client.ClientUtils.ParameterToString(date)); // form parameter + } + if (dateTime != null) + { + localVarRequestOptions.FormParameters.Add("dateTime", Org.OpenAPITools.Client.ClientUtils.ParameterToString(dateTime)); // form parameter + } + if (password != null) + { + localVarRequestOptions.FormParameters.Add("password", Org.OpenAPITools.Client.ClientUtils.ParameterToString(password)); // form parameter + } + if (callback != null) + { + localVarRequestOptions.FormParameters.Add("callback", Org.OpenAPITools.Client.ClientUtils.ParameterToString(callback)); // form parameter + } + + // authentication (http_basic_test) required + // http basic authentication required + if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); + } + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestEndpointParameters", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestEndpointParametersAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestEndpointParametersWithHttpInfoAsync(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, _string, binary, date, dateTime, password, callback, cancellationToken).ConfigureAwait(false); + } + + /// + /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + /// + /// Thrown when fails to make API call + /// None + /// None + /// None + /// None + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional) + /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") + /// None (optional) + /// None (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestEndpointParametersWithHttpInfoAsync(decimal number, double _double, string patternWithoutDelimiter, byte[] _byte, int? integer = default(int?), int? int32 = default(int?), long? int64 = default(long?), float? _float = default(float?), string _string = default(string), System.IO.Stream binary = default(System.IO.Stream), DateTime? date = default(DateTime?), DateTime? dateTime = default(DateTime?), string password = default(string), string callback = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'patternWithoutDelimiter' is set + if (patternWithoutDelimiter == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'patternWithoutDelimiter' when calling FakeApi->TestEndpointParameters"); + + // verify the required parameter '_byte' is set + if (_byte == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter '_byte' when calling FakeApi->TestEndpointParameters"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (integer != null) + { + localVarRequestOptions.FormParameters.Add("integer", Org.OpenAPITools.Client.ClientUtils.ParameterToString(integer)); // form parameter + } + if (int32 != null) + { + localVarRequestOptions.FormParameters.Add("int32", Org.OpenAPITools.Client.ClientUtils.ParameterToString(int32)); // form parameter + } + if (int64 != null) + { + localVarRequestOptions.FormParameters.Add("int64", Org.OpenAPITools.Client.ClientUtils.ParameterToString(int64)); // form parameter + } + localVarRequestOptions.FormParameters.Add("number", Org.OpenAPITools.Client.ClientUtils.ParameterToString(number)); // form parameter + if (_float != null) + { + localVarRequestOptions.FormParameters.Add("float", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_float)); // form parameter + } + localVarRequestOptions.FormParameters.Add("double", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_double)); // form parameter + if (_string != null) + { + localVarRequestOptions.FormParameters.Add("string", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_string)); // form parameter + } + localVarRequestOptions.FormParameters.Add("pattern_without_delimiter", Org.OpenAPITools.Client.ClientUtils.ParameterToString(patternWithoutDelimiter)); // form parameter + localVarRequestOptions.FormParameters.Add("byte", Org.OpenAPITools.Client.ClientUtils.ParameterToString(_byte)); // form parameter + if (binary != null) + { + localVarRequestOptions.FileParameters.Add("binary", binary); + } + if (date != null) + { + localVarRequestOptions.FormParameters.Add("date", Org.OpenAPITools.Client.ClientUtils.ParameterToString(date)); // form parameter + } + if (dateTime != null) + { + localVarRequestOptions.FormParameters.Add("dateTime", Org.OpenAPITools.Client.ClientUtils.ParameterToString(dateTime)); // form parameter + } + if (password != null) + { + localVarRequestOptions.FormParameters.Add("password", Org.OpenAPITools.Client.ClientUtils.ParameterToString(password)); // form parameter + } + if (callback != null) + { + localVarRequestOptions.FormParameters.Add("callback", Org.OpenAPITools.Client.ClientUtils.ParameterToString(callback)); // form parameter + } + + // authentication (http_basic_test) required + // http basic authentication required + if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestEndpointParameters", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test enum parameters To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// + public void TestEnumParameters(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string)) + { + TestEnumParametersWithHttpInfo(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString); + } + + /// + /// To test enum parameters To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestEnumParametersWithHttpInfo(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (enumQueryStringArray != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("multi", "enum_query_string_array", enumQueryStringArray)); + } + if (enumQueryString != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "enum_query_string", enumQueryString)); + } + if (enumQueryInteger != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "enum_query_integer", enumQueryInteger)); + } + if (enumQueryDouble != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "enum_query_double", enumQueryDouble)); + } + if (enumHeaderStringArray != null) + { + localVarRequestOptions.HeaderParameters.Add("enum_header_string_array", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumHeaderStringArray)); // header parameter + } + if (enumHeaderString != null) + { + localVarRequestOptions.HeaderParameters.Add("enum_header_string", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumHeaderString)); // header parameter + } + if (enumFormStringArray != null) + { + localVarRequestOptions.FormParameters.Add("enum_form_string_array", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumFormStringArray)); // form parameter + } + if (enumFormString != null) + { + localVarRequestOptions.FormParameters.Add("enum_form_string", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumFormString)); // form parameter + } + + + // make the HTTP request + var localVarResponse = this.Client.Get("/fake", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestEnumParameters", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test enum parameters To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestEnumParametersAsync(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestEnumParametersWithHttpInfoAsync(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString, cancellationToken).ConfigureAwait(false); + } + + /// + /// To test enum parameters To test enum parameters + /// + /// Thrown when fails to make API call + /// Header parameter enum test (string array) (optional) + /// Header parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (string array) (optional) + /// Query parameter enum test (string) (optional, default to -efg) + /// Query parameter enum test (double) (optional) + /// Query parameter enum test (double) (optional) + /// Form parameter enum test (string array) (optional, default to $) + /// Form parameter enum test (string) (optional, default to -efg) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestEnumParametersWithHttpInfoAsync(List enumHeaderStringArray = default(List), string enumHeaderString = default(string), List enumQueryStringArray = default(List), string enumQueryString = default(string), int? enumQueryInteger = default(int?), double? enumQueryDouble = default(double?), List enumFormStringArray = default(List), string enumFormString = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (enumQueryStringArray != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("multi", "enum_query_string_array", enumQueryStringArray)); + } + if (enumQueryString != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "enum_query_string", enumQueryString)); + } + if (enumQueryInteger != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "enum_query_integer", enumQueryInteger)); + } + if (enumQueryDouble != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "enum_query_double", enumQueryDouble)); + } + if (enumHeaderStringArray != null) + { + localVarRequestOptions.HeaderParameters.Add("enum_header_string_array", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumHeaderStringArray)); // header parameter + } + if (enumHeaderString != null) + { + localVarRequestOptions.HeaderParameters.Add("enum_header_string", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumHeaderString)); // header parameter + } + if (enumFormStringArray != null) + { + localVarRequestOptions.FormParameters.Add("enum_form_string_array", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumFormStringArray)); // form parameter + } + if (enumFormString != null) + { + localVarRequestOptions.FormParameters.Add("enum_form_string", Org.OpenAPITools.Client.ClientUtils.ParameterToString(enumFormString)); // form parameter + } + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/fake", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestEnumParameters", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Fake endpoint to test group parameters (optional) Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// + public void TestGroupParameters(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?)) + { + TestGroupParametersWithHttpInfo(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group); + } + + /// + /// Fake endpoint to test group parameters (optional) Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestGroupParametersWithHttpInfo(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "required_string_group", requiredStringGroup)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "required_int64_group", requiredInt64Group)); + if (stringGroup != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "string_group", stringGroup)); + } + if (int64Group != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "int64_group", int64Group)); + } + localVarRequestOptions.HeaderParameters.Add("required_boolean_group", Org.OpenAPITools.Client.ClientUtils.ParameterToString(requiredBooleanGroup)); // header parameter + if (booleanGroup != null) + { + localVarRequestOptions.HeaderParameters.Add("boolean_group", Org.OpenAPITools.Client.ClientUtils.ParameterToString(booleanGroup)); // header parameter + } + + // authentication (bearer_test) required + // bearer authentication required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Delete("/fake", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestGroupParameters", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Fake endpoint to test group parameters (optional) Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestGroupParametersAsync(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestGroupParametersWithHttpInfoAsync(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group, cancellationToken).ConfigureAwait(false); + } + + /// + /// Fake endpoint to test group parameters (optional) Fake endpoint to test group parameters (optional) + /// + /// Thrown when fails to make API call + /// Required String in group parameters + /// Required Boolean in group parameters + /// Required Integer in group parameters + /// String in group parameters (optional) + /// Boolean in group parameters (optional) + /// Integer in group parameters (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestGroupParametersWithHttpInfoAsync(int requiredStringGroup, bool requiredBooleanGroup, long requiredInt64Group, int? stringGroup = default(int?), bool? booleanGroup = default(bool?), long? int64Group = default(long?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "required_string_group", requiredStringGroup)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "required_int64_group", requiredInt64Group)); + if (stringGroup != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "string_group", stringGroup)); + } + if (int64Group != null) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "int64_group", int64Group)); + } + localVarRequestOptions.HeaderParameters.Add("required_boolean_group", Org.OpenAPITools.Client.ClientUtils.ParameterToString(requiredBooleanGroup)); // header parameter + if (booleanGroup != null) + { + localVarRequestOptions.HeaderParameters.Add("boolean_group", Org.OpenAPITools.Client.ClientUtils.ParameterToString(booleanGroup)); // header parameter + } + + // authentication (bearer_test) required + // bearer authentication required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.DeleteAsync("/fake", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestGroupParameters", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// test inline additionalProperties + /// + /// Thrown when fails to make API call + /// request body + /// + public void TestInlineAdditionalProperties(Dictionary requestBody) + { + TestInlineAdditionalPropertiesWithHttpInfo(requestBody); + } + + /// + /// test inline additionalProperties + /// + /// Thrown when fails to make API call + /// request body + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestInlineAdditionalPropertiesWithHttpInfo(Dictionary requestBody) + { + // verify the required parameter 'requestBody' is set + if (requestBody == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'requestBody' when calling FakeApi->TestInlineAdditionalProperties"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = requestBody; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake/inline-additionalProperties", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestInlineAdditionalProperties", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// test inline additionalProperties + /// + /// Thrown when fails to make API call + /// request body + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestInlineAdditionalPropertiesWithHttpInfoAsync(requestBody, cancellationToken).ConfigureAwait(false); + } + + /// + /// test inline additionalProperties + /// + /// Thrown when fails to make API call + /// request body + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestInlineAdditionalPropertiesWithHttpInfoAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'requestBody' is set + if (requestBody == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'requestBody' when calling FakeApi->TestInlineAdditionalProperties"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = requestBody; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake/inline-additionalProperties", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestInlineAdditionalProperties", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// test json serialization of form data + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// + public void TestJsonFormData(string param, string param2) + { + TestJsonFormDataWithHttpInfo(param, param2); + } + + /// + /// test json serialization of form data + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestJsonFormDataWithHttpInfo(string param, string param2) + { + // verify the required parameter 'param' is set + if (param == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'param' when calling FakeApi->TestJsonFormData"); + + // verify the required parameter 'param2' is set + if (param2 == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'param2' when calling FakeApi->TestJsonFormData"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.FormParameters.Add("param", Org.OpenAPITools.Client.ClientUtils.ParameterToString(param)); // form parameter + localVarRequestOptions.FormParameters.Add("param2", Org.OpenAPITools.Client.ClientUtils.ParameterToString(param2)); // form parameter + + + // make the HTTP request + var localVarResponse = this.Client.Get("/fake/jsonFormData", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestJsonFormData", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// test json serialization of form data + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestJsonFormDataWithHttpInfoAsync(param, param2, cancellationToken).ConfigureAwait(false); + } + + /// + /// test json serialization of form data + /// + /// Thrown when fails to make API call + /// field1 + /// field2 + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestJsonFormDataWithHttpInfoAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'param' is set + if (param == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'param' when calling FakeApi->TestJsonFormData"); + + // verify the required parameter 'param2' is set + if (param2 == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'param2' when calling FakeApi->TestJsonFormData"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.FormParameters.Add("param", Org.OpenAPITools.Client.ClientUtils.ParameterToString(param)); // form parameter + localVarRequestOptions.FormParameters.Add("param2", Org.OpenAPITools.Client.ClientUtils.ParameterToString(param2)); // form parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/fake/jsonFormData", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestJsonFormData", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// + public void TestQueryParameterCollectionFormat(List pipe, List ioutil, List http, List url, List context) + { + TestQueryParameterCollectionFormatWithHttpInfo(pipe, ioutil, http, url, context); + } + + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse TestQueryParameterCollectionFormatWithHttpInfo(List pipe, List ioutil, List http, List url, List context) + { + // verify the required parameter 'pipe' is set + if (pipe == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'pipe' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'ioutil' is set + if (ioutil == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'ioutil' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'http' is set + if (http == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'http' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'url' is set + if (url == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'url' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'context' is set + if (context == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'context' when calling FakeApi->TestQueryParameterCollectionFormat"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("multi", "pipe", pipe)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "ioutil", ioutil)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("ssv", "http", http)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "url", url)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("multi", "context", context)); + + + // make the HTTP request + var localVarResponse = this.Client.Put("/fake/test-query-paramters", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestQueryParameterCollectionFormat", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await TestQueryParameterCollectionFormatWithHttpInfoAsync(pipe, ioutil, http, url, context, cancellationToken).ConfigureAwait(false); + } + + /// + /// To test the collection format in query parameters + /// + /// Thrown when fails to make API call + /// + /// + /// + /// + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> TestQueryParameterCollectionFormatWithHttpInfoAsync(List pipe, List ioutil, List http, List url, List context, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'pipe' is set + if (pipe == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'pipe' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'ioutil' is set + if (ioutil == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'ioutil' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'http' is set + if (http == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'http' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'url' is set + if (url == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'url' when calling FakeApi->TestQueryParameterCollectionFormat"); + + // verify the required parameter 'context' is set + if (context == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'context' when calling FakeApi->TestQueryParameterCollectionFormat"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("multi", "pipe", pipe)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "ioutil", ioutil)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("ssv", "http", http)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "url", url)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("multi", "context", context)); + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PutAsync("/fake/test-query-paramters", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestQueryParameterCollectionFormat", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs new file mode 100644 index 00000000000..56ebdf5fd10 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -0,0 +1,330 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeClassnameTags123ApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// To test class name in snake case + /// + /// + /// To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// ModelClient + ModelClient TestClassname(ModelClient modelClient); + + /// + /// To test class name in snake case + /// + /// + /// To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// ApiResponse of ModelClient + ApiResponse TestClassnameWithHttpInfo(ModelClient modelClient); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeClassnameTags123ApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// To test class name in snake case + /// + /// + /// To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ModelClient + System.Threading.Tasks.Task TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// To test class name in snake case + /// + /// + /// To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ModelClient) + System.Threading.Tasks.Task> TestClassnameWithHttpInfoAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFakeClassnameTags123Api : IFakeClassnameTags123ApiSync, IFakeClassnameTags123ApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class FakeClassnameTags123Api : IFakeClassnameTags123Api + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public FakeClassnameTags123Api() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public FakeClassnameTags123Api(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public FakeClassnameTags123Api(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public FakeClassnameTags123Api(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// To test class name in snake case To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// ModelClient + public ModelClient TestClassname(ModelClient modelClient) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = TestClassnameWithHttpInfo(modelClient); + return localVarResponse.Data; + } + + /// + /// To test class name in snake case To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// ApiResponse of ModelClient + public Org.OpenAPITools.Client.ApiResponse TestClassnameWithHttpInfo(ModelClient modelClient) + { + // verify the required parameter 'modelClient' is set + if (modelClient == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'modelClient' when calling FakeClassnameTags123Api->TestClassname"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = modelClient; + + // authentication (api_key_query) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); + } + + // make the HTTP request + var localVarResponse = this.Client.Patch("/fake_classname_test", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestClassname", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// To test class name in snake case To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ModelClient + public async System.Threading.Tasks.Task TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await TestClassnameWithHttpInfoAsync(modelClient, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// To test class name in snake case To test class name in snake case + /// + /// Thrown when fails to make API call + /// client model + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ModelClient) + public async System.Threading.Tasks.Task> TestClassnameWithHttpInfoAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'modelClient' is set + if (modelClient == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'modelClient' when calling FakeClassnameTags123Api->TestClassname"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = modelClient; + + // authentication (api_key_query) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + { + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PatchAsync("/fake_classname_test", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("TestClassname", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/PetApi.cs new file mode 100644 index 00000000000..61759145f12 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/PetApi.cs @@ -0,0 +1,1884 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IPetApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// Add a new pet to the store + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// + void AddPet(Pet pet); + + /// + /// Add a new pet to the store + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// ApiResponse of Object(void) + ApiResponse AddPetWithHttpInfo(Pet pet); + /// + /// Deletes a pet + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// + void DeletePet(long petId, string apiKey = default(string)); + + /// + /// Deletes a pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// ApiResponse of Object(void) + ApiResponse DeletePetWithHttpInfo(long petId, string apiKey = default(string)); + /// + /// Finds Pets by status + /// + /// + /// Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// List<Pet> + List FindPetsByStatus(List status); + + /// + /// Finds Pets by status + /// + /// + /// Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// ApiResponse of List<Pet> + ApiResponse> FindPetsByStatusWithHttpInfo(List status); + /// + /// Finds Pets by tags + /// + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// List<Pet> + List FindPetsByTags(List tags); + + /// + /// Finds Pets by tags + /// + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// ApiResponse of List<Pet> + ApiResponse> FindPetsByTagsWithHttpInfo(List tags); + /// + /// Find pet by ID + /// + /// + /// Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// Pet + Pet GetPetById(long petId); + + /// + /// Find pet by ID + /// + /// + /// Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// ApiResponse of Pet + ApiResponse GetPetByIdWithHttpInfo(long petId); + /// + /// Update an existing pet + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// + void UpdatePet(Pet pet); + + /// + /// Update an existing pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// ApiResponse of Object(void) + ApiResponse UpdatePetWithHttpInfo(Pet pet); + /// + /// Updates a pet in the store with form data + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// + void UpdatePetWithForm(long petId, string name = default(string), string status = default(string)); + + /// + /// Updates a pet in the store with form data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// ApiResponse of Object(void) + ApiResponse UpdatePetWithFormWithHttpInfo(long petId, string name = default(string), string status = default(string)); + /// + /// uploads an image + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// ApiResponse + ApiResponse UploadFile(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream)); + + /// + /// uploads an image + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// ApiResponse of ApiResponse + ApiResponse UploadFileWithHttpInfo(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream)); + /// + /// uploads an image (required) + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// ApiResponse + ApiResponse UploadFileWithRequiredFile(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string)); + + /// + /// uploads an image (required) + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// ApiResponse of ApiResponse + ApiResponse UploadFileWithRequiredFileWithHttpInfo(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string)); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IPetApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// Add a new pet to the store + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Add a new pet to the store + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> AddPetWithHttpInfoAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Deletes a pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task DeletePetAsync(long petId, string apiKey = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Deletes a pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> DeletePetWithHttpInfoAsync(long petId, string apiKey = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Finds Pets by status + /// + /// + /// Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// Cancellation Token to cancel the request. + /// Task of List<Pet> + System.Threading.Tasks.Task> FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Finds Pets by status + /// + /// + /// Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<Pet>) + System.Threading.Tasks.Task>> FindPetsByStatusWithHttpInfoAsync(List status, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Finds Pets by tags + /// + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// Cancellation Token to cancel the request. + /// Task of List<Pet> + System.Threading.Tasks.Task> FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Finds Pets by tags + /// + /// + /// Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<Pet>) + System.Threading.Tasks.Task>> FindPetsByTagsWithHttpInfoAsync(List tags, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Find pet by ID + /// + /// + /// Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// Cancellation Token to cancel the request. + /// Task of Pet + System.Threading.Tasks.Task GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Find pet by ID + /// + /// + /// Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Pet) + System.Threading.Tasks.Task> GetPetByIdWithHttpInfoAsync(long petId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Update an existing pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Update an existing pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> UpdatePetWithHttpInfoAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Updates a pet in the store with form data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task UpdatePetWithFormAsync(long petId, string name = default(string), string status = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Updates a pet in the store with form data + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> UpdatePetWithFormWithHttpInfoAsync(long petId, string name = default(string), string status = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// uploads an image + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task UploadFileAsync(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// uploads an image + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ApiResponse) + System.Threading.Tasks.Task> UploadFileWithHttpInfoAsync(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// uploads an image (required) + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task UploadFileWithRequiredFileAsync(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// uploads an image (required) + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ApiResponse) + System.Threading.Tasks.Task> UploadFileWithRequiredFileWithHttpInfoAsync(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IPetApi : IPetApiSync, IPetApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class PetApi : IPetApi + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public PetApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public PetApi(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public PetApi(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public PetApi(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Add a new pet to the store + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// + public void AddPet(Pet pet) + { + AddPetWithHttpInfo(pet); + } + + /// + /// Add a new pet to the store + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse AddPetWithHttpInfo(Pet pet) + { + // verify the required parameter 'pet' is set + if (pet == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'pet' when calling PetApi->AddPet"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json", + "application/xml" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = pet; + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "POST", "/pet", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Post("/pet", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("AddPet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Add a new pet to the store + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await AddPetWithHttpInfoAsync(pet, cancellationToken).ConfigureAwait(false); + } + + /// + /// Add a new pet to the store + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> AddPetWithHttpInfoAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'pet' is set + if (pet == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'pet' when calling PetApi->AddPet"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json", + "application/xml" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = pet; + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "POST", "/pet", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/pet", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("AddPet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Deletes a pet + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// + public void DeletePet(long petId, string apiKey = default(string)) + { + DeletePetWithHttpInfo(petId, apiKey); + } + + /// + /// Deletes a pet + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse DeletePetWithHttpInfo(long petId, string apiKey = default(string)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (apiKey != null) + { + localVarRequestOptions.HeaderParameters.Add("api_key", Org.OpenAPITools.Client.ClientUtils.ParameterToString(apiKey)); // header parameter + } + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Delete("/pet/{petId}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DeletePet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Deletes a pet + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task DeletePetAsync(long petId, string apiKey = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await DeletePetWithHttpInfoAsync(petId, apiKey, cancellationToken).ConfigureAwait(false); + } + + /// + /// Deletes a pet + /// + /// Thrown when fails to make API call + /// Pet id to delete + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> DeletePetWithHttpInfoAsync(long petId, string apiKey = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (apiKey != null) + { + localVarRequestOptions.HeaderParameters.Add("api_key", Org.OpenAPITools.Client.ClientUtils.ParameterToString(apiKey)); // header parameter + } + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.DeleteAsync("/pet/{petId}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DeletePet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Finds Pets by status Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// List<Pet> + public List FindPetsByStatus(List status) + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = FindPetsByStatusWithHttpInfo(status); + return localVarResponse.Data; + } + + /// + /// Finds Pets by status Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// ApiResponse of List<Pet> + public Org.OpenAPITools.Client.ApiResponse> FindPetsByStatusWithHttpInfo(List status) + { + // verify the required parameter 'status' is set + if (status == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'status' when calling PetApi->FindPetsByStatus"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "status", status)); + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "GET", "/pet/findByStatus", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Get>("/pet/findByStatus", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FindPetsByStatus", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Finds Pets by status Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// Cancellation Token to cancel the request. + /// Task of List<Pet> + public async System.Threading.Tasks.Task> FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = await FindPetsByStatusWithHttpInfoAsync(status, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Finds Pets by status Multiple status values can be provided with comma separated strings + /// + /// Thrown when fails to make API call + /// Status values that need to be considered for filter + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<Pet>) + public async System.Threading.Tasks.Task>> FindPetsByStatusWithHttpInfoAsync(List status, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'status' is set + if (status == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'status' when calling PetApi->FindPetsByStatus"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "status", status)); + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "GET", "/pet/findByStatus", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync>("/pet/findByStatus", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FindPetsByStatus", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Finds Pets by tags Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// List<Pet> + public List FindPetsByTags(List tags) + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = FindPetsByTagsWithHttpInfo(tags); + return localVarResponse.Data; + } + + /// + /// Finds Pets by tags Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// ApiResponse of List<Pet> + public Org.OpenAPITools.Client.ApiResponse> FindPetsByTagsWithHttpInfo(List tags) + { + // verify the required parameter 'tags' is set + if (tags == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'tags' when calling PetApi->FindPetsByTags"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "tags", tags)); + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "GET", "/pet/findByTags", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Get>("/pet/findByTags", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FindPetsByTags", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Finds Pets by tags Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// Cancellation Token to cancel the request. + /// Task of List<Pet> + public async System.Threading.Tasks.Task> FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = await FindPetsByTagsWithHttpInfoAsync(tags, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Finds Pets by tags Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + /// + /// Thrown when fails to make API call + /// Tags to filter by + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<Pet>) + public async System.Threading.Tasks.Task>> FindPetsByTagsWithHttpInfoAsync(List tags, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'tags' is set + if (tags == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'tags' when calling PetApi->FindPetsByTags"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("csv", "tags", tags)); + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "GET", "/pet/findByTags", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync>("/pet/findByTags", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("FindPetsByTags", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Find pet by ID Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// Pet + public Pet GetPetById(long petId) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = GetPetByIdWithHttpInfo(petId); + return localVarResponse.Data; + } + + /// + /// Find pet by ID Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// ApiResponse of Pet + public Org.OpenAPITools.Client.ApiResponse GetPetByIdWithHttpInfo(long petId) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + + // authentication (api_key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + { + localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); + } + + // make the HTTP request + var localVarResponse = this.Client.Get("/pet/{petId}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetPetById", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Find pet by ID Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// Cancellation Token to cancel the request. + /// Task of Pet + public async System.Threading.Tasks.Task GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await GetPetByIdWithHttpInfoAsync(petId, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Find pet by ID Returns a single pet + /// + /// Thrown when fails to make API call + /// ID of pet to return + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Pet) + public async System.Threading.Tasks.Task> GetPetByIdWithHttpInfoAsync(long petId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + + // authentication (api_key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + { + localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/pet/{petId}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetPetById", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Update an existing pet + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// + public void UpdatePet(Pet pet) + { + UpdatePetWithHttpInfo(pet); + } + + /// + /// Update an existing pet + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse UpdatePetWithHttpInfo(Pet pet) + { + // verify the required parameter 'pet' is set + if (pet == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'pet' when calling PetApi->UpdatePet"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json", + "application/xml" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = pet; + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "PUT", "/pet", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Put("/pet", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UpdatePet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Update an existing pet + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await UpdatePetWithHttpInfoAsync(pet, cancellationToken).ConfigureAwait(false); + } + + /// + /// Update an existing pet + /// + /// Thrown when fails to make API call + /// Pet object that needs to be added to the store + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> UpdatePetWithHttpInfoAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'pet' is set + if (pet == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'pet' when calling PetApi->UpdatePet"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json", + "application/xml" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = pet; + + // authentication (http_signature_test) required + if (this.Configuration.HttpSigningConfiguration != null) + { + var HttpSigningHeaders = this.Configuration.HttpSigningConfiguration.GetHttpSignedHeader(this.Configuration.BasePath, "PUT", "/pet", localVarRequestOptions); + foreach (var headerItem in HttpSigningHeaders) + { + if (localVarRequestOptions.HeaderParameters.ContainsKey(headerItem.Key)) + { + localVarRequestOptions.HeaderParameters[headerItem.Key] = new List() { headerItem.Value }; + } + else + { + localVarRequestOptions.HeaderParameters.Add(headerItem.Key, headerItem.Value); + } + } + } + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PutAsync("/pet", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UpdatePet", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Updates a pet in the store with form data + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// + public void UpdatePetWithForm(long petId, string name = default(string), string status = default(string)) + { + UpdatePetWithFormWithHttpInfo(petId, name, status); + } + + /// + /// Updates a pet in the store with form data + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse UpdatePetWithFormWithHttpInfo(long petId, string name = default(string), string status = default(string)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (name != null) + { + localVarRequestOptions.FormParameters.Add("name", Org.OpenAPITools.Client.ClientUtils.ParameterToString(name)); // form parameter + } + if (status != null) + { + localVarRequestOptions.FormParameters.Add("status", Org.OpenAPITools.Client.ClientUtils.ParameterToString(status)); // form parameter + } + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Post("/pet/{petId}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UpdatePetWithForm", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Updates a pet in the store with form data + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task UpdatePetWithFormAsync(long petId, string name = default(string), string status = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await UpdatePetWithFormWithHttpInfoAsync(petId, name, status, cancellationToken).ConfigureAwait(false); + } + + /// + /// Updates a pet in the store with form data + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be updated + /// Updated name of the pet (optional) + /// Updated status of the pet (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> UpdatePetWithFormWithHttpInfoAsync(long petId, string name = default(string), string status = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/x-www-form-urlencoded" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (name != null) + { + localVarRequestOptions.FormParameters.Add("name", Org.OpenAPITools.Client.ClientUtils.ParameterToString(name)); // form parameter + } + if (status != null) + { + localVarRequestOptions.FormParameters.Add("status", Org.OpenAPITools.Client.ClientUtils.ParameterToString(status)); // form parameter + } + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/pet/{petId}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UpdatePetWithForm", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// uploads an image + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// ApiResponse + public ApiResponse UploadFile(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = UploadFileWithHttpInfo(petId, additionalMetadata, file); + return localVarResponse.Data; + } + + /// + /// uploads an image + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// ApiResponse of ApiResponse + public Org.OpenAPITools.Client.ApiResponse UploadFileWithHttpInfo(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream)) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "multipart/form-data" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (additionalMetadata != null) + { + localVarRequestOptions.FormParameters.Add("additionalMetadata", Org.OpenAPITools.Client.ClientUtils.ParameterToString(additionalMetadata)); // form parameter + } + if (file != null) + { + localVarRequestOptions.FileParameters.Add("file", file); + } + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Post("/pet/{petId}/uploadImage", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UploadFile", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// uploads an image + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task UploadFileAsync(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await UploadFileWithHttpInfoAsync(petId, additionalMetadata, file, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// uploads an image + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// Additional data to pass to server (optional) + /// file to upload (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ApiResponse) + public async System.Threading.Tasks.Task> UploadFileWithHttpInfoAsync(long petId, string additionalMetadata = default(string), System.IO.Stream file = default(System.IO.Stream), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "multipart/form-data" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (additionalMetadata != null) + { + localVarRequestOptions.FormParameters.Add("additionalMetadata", Org.OpenAPITools.Client.ClientUtils.ParameterToString(additionalMetadata)); // form parameter + } + if (file != null) + { + localVarRequestOptions.FileParameters.Add("file", file); + } + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/pet/{petId}/uploadImage", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UploadFile", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// uploads an image (required) + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// ApiResponse + public ApiResponse UploadFileWithRequiredFile(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = UploadFileWithRequiredFileWithHttpInfo(petId, requiredFile, additionalMetadata); + return localVarResponse.Data; + } + + /// + /// uploads an image (required) + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// ApiResponse of ApiResponse + public Org.OpenAPITools.Client.ApiResponse UploadFileWithRequiredFileWithHttpInfo(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string)) + { + // verify the required parameter 'requiredFile' is set + if (requiredFile == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'requiredFile' when calling PetApi->UploadFileWithRequiredFile"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "multipart/form-data" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (additionalMetadata != null) + { + localVarRequestOptions.FormParameters.Add("additionalMetadata", Org.OpenAPITools.Client.ClientUtils.ParameterToString(additionalMetadata)); // form parameter + } + localVarRequestOptions.FileParameters.Add("requiredFile", requiredFile); + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + var localVarResponse = this.Client.Post("/fake/{petId}/uploadImageWithRequiredFile", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UploadFileWithRequiredFile", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// uploads an image (required) + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task UploadFileWithRequiredFileAsync(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await UploadFileWithRequiredFileWithHttpInfoAsync(petId, requiredFile, additionalMetadata, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// uploads an image (required) + /// + /// Thrown when fails to make API call + /// ID of pet to update + /// file to upload + /// Additional data to pass to server (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ApiResponse) + public async System.Threading.Tasks.Task> UploadFileWithRequiredFileWithHttpInfoAsync(long petId, System.IO.Stream requiredFile, string additionalMetadata = default(string), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'requiredFile' is set + if (requiredFile == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'requiredFile' when calling PetApi->UploadFileWithRequiredFile"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "multipart/form-data" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter + if (additionalMetadata != null) + { + localVarRequestOptions.FormParameters.Add("additionalMetadata", Org.OpenAPITools.Client.ClientUtils.ParameterToString(additionalMetadata)); // form parameter + } + localVarRequestOptions.FileParameters.Add("requiredFile", requiredFile); + + // authentication (petstore_auth) required + // oauth required + if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + { + localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/fake/{petId}/uploadImageWithRequiredFile", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UploadFileWithRequiredFile", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/StoreApi.cs new file mode 100644 index 00000000000..6ab56c9e9bf --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/StoreApi.cs @@ -0,0 +1,778 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IStoreApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// Delete purchase order by ID + /// + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// + void DeleteOrder(string orderId); + + /// + /// Delete purchase order by ID + /// + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// ApiResponse of Object(void) + ApiResponse DeleteOrderWithHttpInfo(string orderId); + /// + /// Returns pet inventories by status + /// + /// + /// Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// Dictionary<string, int> + Dictionary GetInventory(); + + /// + /// Returns pet inventories by status + /// + /// + /// Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// ApiResponse of Dictionary<string, int> + ApiResponse> GetInventoryWithHttpInfo(); + /// + /// Find purchase order by ID + /// + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// Order + Order GetOrderById(long orderId); + + /// + /// Find purchase order by ID + /// + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// ApiResponse of Order + ApiResponse GetOrderByIdWithHttpInfo(long orderId); + /// + /// Place an order for a pet + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// Order + Order PlaceOrder(Order order); + + /// + /// Place an order for a pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// ApiResponse of Order + ApiResponse PlaceOrderWithHttpInfo(Order order); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IStoreApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// Delete purchase order by ID + /// + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Delete purchase order by ID + /// + /// + /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> DeleteOrderWithHttpInfoAsync(string orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Returns pet inventories by status + /// + /// + /// Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of Dictionary<string, int> + System.Threading.Tasks.Task> GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Returns pet inventories by status + /// + /// + /// Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Dictionary<string, int>) + System.Threading.Tasks.Task>> GetInventoryWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Find purchase order by ID + /// + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// Cancellation Token to cancel the request. + /// Task of Order + System.Threading.Tasks.Task GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Find purchase order by ID + /// + /// + /// For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Order) + System.Threading.Tasks.Task> GetOrderByIdWithHttpInfoAsync(long orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Place an order for a pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// Cancellation Token to cancel the request. + /// Task of Order + System.Threading.Tasks.Task PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Place an order for a pet + /// + /// + /// + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Order) + System.Threading.Tasks.Task> PlaceOrderWithHttpInfoAsync(Order order, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IStoreApi : IStoreApiSync, IStoreApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class StoreApi : IStoreApi + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public StoreApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public StoreApi(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public StoreApi(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public StoreApi(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Delete purchase order by ID For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// + public void DeleteOrder(string orderId) + { + DeleteOrderWithHttpInfo(orderId); + } + + /// + /// Delete purchase order by ID For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse DeleteOrderWithHttpInfo(string orderId) + { + // verify the required parameter 'orderId' is set + if (orderId == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'orderId' when calling StoreApi->DeleteOrder"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("order_id", Org.OpenAPITools.Client.ClientUtils.ParameterToString(orderId)); // path parameter + + + // make the HTTP request + var localVarResponse = this.Client.Delete("/store/order/{order_id}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DeleteOrder", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Delete purchase order by ID For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await DeleteOrderWithHttpInfoAsync(orderId, cancellationToken).ConfigureAwait(false); + } + + /// + /// Delete purchase order by ID For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + /// + /// Thrown when fails to make API call + /// ID of the order that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> DeleteOrderWithHttpInfoAsync(string orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'orderId' is set + if (orderId == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'orderId' when calling StoreApi->DeleteOrder"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("order_id", Org.OpenAPITools.Client.ClientUtils.ParameterToString(orderId)); // path parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.DeleteAsync("/store/order/{order_id}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DeleteOrder", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Returns pet inventories by status Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// Dictionary<string, int> + public Dictionary GetInventory() + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = GetInventoryWithHttpInfo(); + return localVarResponse.Data; + } + + /// + /// Returns pet inventories by status Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// ApiResponse of Dictionary<string, int> + public Org.OpenAPITools.Client.ApiResponse> GetInventoryWithHttpInfo() + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + // authentication (api_key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + { + localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); + } + + // make the HTTP request + var localVarResponse = this.Client.Get>("/store/inventory", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetInventory", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Returns pet inventories by status Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of Dictionary<string, int> + public async System.Threading.Tasks.Task> GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse> localVarResponse = await GetInventoryWithHttpInfoAsync(cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Returns pet inventories by status Returns a map of status codes to quantities + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Dictionary<string, int>) + public async System.Threading.Tasks.Task>> GetInventoryWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + // authentication (api_key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + { + localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync>("/store/inventory", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetInventory", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Find purchase order by ID For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// Order + public Order GetOrderById(long orderId) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = GetOrderByIdWithHttpInfo(orderId); + return localVarResponse.Data; + } + + /// + /// Find purchase order by ID For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// ApiResponse of Order + public Org.OpenAPITools.Client.ApiResponse GetOrderByIdWithHttpInfo(long orderId) + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("order_id", Org.OpenAPITools.Client.ClientUtils.ParameterToString(orderId)); // path parameter + + + // make the HTTP request + var localVarResponse = this.Client.Get("/store/order/{order_id}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetOrderById", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Find purchase order by ID For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// Cancellation Token to cancel the request. + /// Task of Order + public async System.Threading.Tasks.Task GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await GetOrderByIdWithHttpInfoAsync(orderId, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Find purchase order by ID For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + /// + /// Thrown when fails to make API call + /// ID of pet that needs to be fetched + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Order) + public async System.Threading.Tasks.Task> GetOrderByIdWithHttpInfoAsync(long orderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("order_id", Org.OpenAPITools.Client.ClientUtils.ParameterToString(orderId)); // path parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/store/order/{order_id}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetOrderById", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Place an order for a pet + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// Order + public Order PlaceOrder(Order order) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = PlaceOrderWithHttpInfo(order); + return localVarResponse.Data; + } + + /// + /// Place an order for a pet + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// ApiResponse of Order + public Org.OpenAPITools.Client.ApiResponse PlaceOrderWithHttpInfo(Order order) + { + // verify the required parameter 'order' is set + if (order == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'order' when calling StoreApi->PlaceOrder"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = order; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/store/order", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("PlaceOrder", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Place an order for a pet + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// Cancellation Token to cancel the request. + /// Task of Order + public async System.Threading.Tasks.Task PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await PlaceOrderWithHttpInfoAsync(order, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Place an order for a pet + /// + /// Thrown when fails to make API call + /// order placed for purchasing the pet + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Order) + public async System.Threading.Tasks.Task> PlaceOrderWithHttpInfoAsync(Order order, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'order' is set + if (order == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'order' when calling StoreApi->PlaceOrder"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = order; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/store/order", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("PlaceOrder", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/UserApi.cs new file mode 100644 index 00000000000..80436c9b433 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/UserApi.cs @@ -0,0 +1,1422 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net; +using System.Net.Mime; +using Org.OpenAPITools.Client; +using Org.OpenAPITools.Model; + +namespace Org.OpenAPITools.Api +{ + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IUserApiSync : IApiAccessor + { + #region Synchronous Operations + /// + /// Create user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// + void CreateUser(User user); + + /// + /// Create user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// ApiResponse of Object(void) + ApiResponse CreateUserWithHttpInfo(User user); + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// + void CreateUsersWithArrayInput(List user); + + /// + /// Creates list of users with given input array + /// + /// + /// + /// + /// Thrown when fails to make API call + /// List of user object + /// ApiResponse of Object(void) + ApiResponse CreateUsersWithArrayInputWithHttpInfo(List user); + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// + void CreateUsersWithListInput(List user); + + /// + /// Creates list of users with given input array + /// + /// + /// + /// + /// Thrown when fails to make API call + /// List of user object + /// ApiResponse of Object(void) + ApiResponse CreateUsersWithListInputWithHttpInfo(List user); + /// + /// Delete user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// + void DeleteUser(string username); + + /// + /// Delete user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// ApiResponse of Object(void) + ApiResponse DeleteUserWithHttpInfo(string username); + /// + /// Get user by user name + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// User + User GetUserByName(string username); + + /// + /// Get user by user name + /// + /// + /// + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// ApiResponse of User + ApiResponse GetUserByNameWithHttpInfo(string username); + /// + /// Logs user into the system + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// string + string LoginUser(string username, string password); + + /// + /// Logs user into the system + /// + /// + /// + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// ApiResponse of string + ApiResponse LoginUserWithHttpInfo(string username, string password); + /// + /// Logs out current logged in user session + /// + /// Thrown when fails to make API call + /// + void LogoutUser(); + + /// + /// Logs out current logged in user session + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of Object(void) + ApiResponse LogoutUserWithHttpInfo(); + /// + /// Updated user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// + void UpdateUser(string username, User user); + + /// + /// Updated user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// ApiResponse of Object(void) + ApiResponse UpdateUserWithHttpInfo(string username, User user); + #endregion Synchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IUserApiAsync : IApiAccessor + { + #region Asynchronous Operations + /// + /// Create user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Create user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> CreateUserWithHttpInfoAsync(User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Creates list of users with given input array + /// + /// + /// + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Creates list of users with given input array + /// + /// + /// + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> CreateUsersWithArrayInputWithHttpInfoAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Creates list of users with given input array + /// + /// + /// + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Creates list of users with given input array + /// + /// + /// + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> CreateUsersWithListInputWithHttpInfoAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Delete user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Delete user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> DeleteUserWithHttpInfoAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Get user by user name + /// + /// + /// + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// Cancellation Token to cancel the request. + /// Task of User + System.Threading.Tasks.Task GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Get user by user name + /// + /// + /// + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (User) + System.Threading.Tasks.Task> GetUserByNameWithHttpInfoAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Logs user into the system + /// + /// + /// + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// Cancellation Token to cancel the request. + /// Task of string + System.Threading.Tasks.Task LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Logs user into the system + /// + /// + /// + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (string) + System.Threading.Tasks.Task> LoginUserWithHttpInfoAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Logs out current logged in user session + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Logs out current logged in user session + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> LogoutUserWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + /// + /// Updated user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// Cancellation Token to cancel the request. + /// Task of void + System.Threading.Tasks.Task UpdateUserAsync(string username, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Updated user + /// + /// + /// This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + System.Threading.Tasks.Task> UpdateUserWithHttpInfoAsync(string username, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IUserApi : IUserApiSync, IUserApiAsync + { + + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class UserApi : IUserApi + { + private Org.OpenAPITools.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public UserApi() : this((string)null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + public UserApi(String basePath) + { + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + new Org.OpenAPITools.Client.Configuration { BasePath = basePath } + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public UserApi(Org.OpenAPITools.Client.Configuration configuration) + { + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( + Org.OpenAPITools.Client.GlobalConfiguration.Instance, + configuration + ); + this.Client = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + this.AsynchronousClient = new Org.OpenAPITools.Client.ApiClient(this.Configuration.BasePath); + ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using a Configuration object and client instance. + /// + /// The client interface for synchronous API access. + /// The client interface for asynchronous API access. + /// The configuration object. + public UserApi(Org.OpenAPITools.Client.ISynchronousClient client, Org.OpenAPITools.Client.IAsynchronousClient asyncClient, Org.OpenAPITools.Client.IReadableConfiguration configuration) + { + if (client == null) throw new ArgumentNullException("client"); + if (asyncClient == null) throw new ArgumentNullException("asyncClient"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + this.Client = client; + this.AsynchronousClient = asyncClient; + this.Configuration = configuration; + this.ExceptionFactory = Org.OpenAPITools.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// The client for accessing this underlying API asynchronously. + /// + public Org.OpenAPITools.Client.IAsynchronousClient AsynchronousClient { get; set; } + + /// + /// The client for accessing this underlying API synchronously. + /// + public Org.OpenAPITools.Client.ISynchronousClient Client { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.BasePath; + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public Org.OpenAPITools.Client.IReadableConfiguration Configuration { get; set; } + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public Org.OpenAPITools.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Create user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// + public void CreateUser(User user) + { + CreateUserWithHttpInfo(user); + } + + /// + /// Create user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse CreateUserWithHttpInfo(User user) + { + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->CreateUser"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = user; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/user", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("CreateUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Create user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await CreateUserWithHttpInfoAsync(user, cancellationToken).ConfigureAwait(false); + } + + /// + /// Create user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// Created user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CreateUserWithHttpInfoAsync(User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->CreateUser"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = user; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/user", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("CreateUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// + public void CreateUsersWithArrayInput(List user) + { + CreateUsersWithArrayInputWithHttpInfo(user); + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse CreateUsersWithArrayInputWithHttpInfo(List user) + { + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->CreateUsersWithArrayInput"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = user; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/user/createWithArray", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("CreateUsersWithArrayInput", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await CreateUsersWithArrayInputWithHttpInfoAsync(user, cancellationToken).ConfigureAwait(false); + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CreateUsersWithArrayInputWithHttpInfoAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->CreateUsersWithArrayInput"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = user; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/user/createWithArray", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("CreateUsersWithArrayInput", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// + public void CreateUsersWithListInput(List user) + { + CreateUsersWithListInputWithHttpInfo(user); + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse CreateUsersWithListInputWithHttpInfo(List user) + { + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->CreateUsersWithListInput"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = user; + + + // make the HTTP request + var localVarResponse = this.Client.Post("/user/createWithList", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("CreateUsersWithListInput", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await CreateUsersWithListInputWithHttpInfoAsync(user, cancellationToken).ConfigureAwait(false); + } + + /// + /// Creates list of users with given input array + /// + /// Thrown when fails to make API call + /// List of user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CreateUsersWithListInputWithHttpInfoAsync(List user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->CreateUsersWithListInput"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = user; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/user/createWithList", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("CreateUsersWithListInput", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Delete user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// + public void DeleteUser(string username) + { + DeleteUserWithHttpInfo(username); + } + + /// + /// Delete user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse DeleteUserWithHttpInfo(string username) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->DeleteUser"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter + + + // make the HTTP request + var localVarResponse = this.Client.Delete("/user/{username}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DeleteUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Delete user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await DeleteUserWithHttpInfoAsync(username, cancellationToken).ConfigureAwait(false); + } + + /// + /// Delete user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// The name that needs to be deleted + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> DeleteUserWithHttpInfoAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->DeleteUser"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.DeleteAsync("/user/{username}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DeleteUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get user by user name + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// User + public User GetUserByName(string username) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = GetUserByNameWithHttpInfo(username); + return localVarResponse.Data; + } + + /// + /// Get user by user name + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// ApiResponse of User + public Org.OpenAPITools.Client.ApiResponse GetUserByNameWithHttpInfo(string username) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->GetUserByName"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter + + + // make the HTTP request + var localVarResponse = this.Client.Get("/user/{username}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetUserByName", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get user by user name + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// Cancellation Token to cancel the request. + /// Task of User + public async System.Threading.Tasks.Task GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await GetUserByNameWithHttpInfoAsync(username, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Get user by user name + /// + /// Thrown when fails to make API call + /// The name that needs to be fetched. Use user1 for testing. + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (User) + public async System.Threading.Tasks.Task> GetUserByNameWithHttpInfoAsync(string username, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->GetUserByName"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/user/{username}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetUserByName", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Logs user into the system + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// string + public string LoginUser(string username, string password) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = LoginUserWithHttpInfo(username, password); + return localVarResponse.Data; + } + + /// + /// Logs user into the system + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// ApiResponse of string + public Org.OpenAPITools.Client.ApiResponse LoginUserWithHttpInfo(string username, string password) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->LoginUser"); + + // verify the required parameter 'password' is set + if (password == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'password' when calling UserApi->LoginUser"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "username", username)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "password", password)); + + + // make the HTTP request + var localVarResponse = this.Client.Get("/user/login", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("LoginUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Logs user into the system + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// Cancellation Token to cancel the request. + /// Task of string + public async System.Threading.Tasks.Task LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + Org.OpenAPITools.Client.ApiResponse localVarResponse = await LoginUserWithHttpInfoAsync(username, password, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Logs user into the system + /// + /// Thrown when fails to make API call + /// The user name for login + /// The password for login in clear text + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (string) + public async System.Threading.Tasks.Task> LoginUserWithHttpInfoAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->LoginUser"); + + // verify the required parameter 'password' is set + if (password == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'password' when calling UserApi->LoginUser"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + "application/xml", + "application/json" + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "username", username)); + localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "password", password)); + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/user/login", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("LoginUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Logs out current logged in user session + /// + /// Thrown when fails to make API call + /// + public void LogoutUser() + { + LogoutUserWithHttpInfo(); + } + + /// + /// Logs out current logged in user session + /// + /// Thrown when fails to make API call + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse LogoutUserWithHttpInfo() + { + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + var localVarResponse = this.Client.Get("/user/logout", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("LogoutUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Logs out current logged in user session + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await LogoutUserWithHttpInfoAsync(cancellationToken).ConfigureAwait(false); + } + + /// + /// Logs out current logged in user session + /// + /// Thrown when fails to make API call + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> LogoutUserWithHttpInfoAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/user/logout", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("LogoutUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Updated user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// + public void UpdateUser(string username, User user) + { + UpdateUserWithHttpInfo(username, user); + } + + /// + /// Updated user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// ApiResponse of Object(void) + public Org.OpenAPITools.Client.ApiResponse UpdateUserWithHttpInfo(string username, User user) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->UpdateUser"); + + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->UpdateUser"); + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter + localVarRequestOptions.Data = user; + + + // make the HTTP request + var localVarResponse = this.Client.Put("/user/{username}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UpdateUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Updated user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// Cancellation Token to cancel the request. + /// Task of void + public async System.Threading.Tasks.Task UpdateUserAsync(string username, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + await UpdateUserWithHttpInfoAsync(username, user, cancellationToken).ConfigureAwait(false); + } + + /// + /// Updated user This can only be done by the logged in user. + /// + /// Thrown when fails to make API call + /// name that need to be deleted + /// Updated user object + /// Cancellation Token to cancel the request. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> UpdateUserWithHttpInfoAsync(string username, User user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + // verify the required parameter 'username' is set + if (username == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'username' when calling UserApi->UpdateUser"); + + // verify the required parameter 'user' is set + if (user == null) + throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'user' when calling UserApi->UpdateUser"); + + + Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); + + String[] _contentTypes = new String[] { + "application/json" + }; + + // to determine the Accept header + String[] _accepts = new String[] { + }; + + + var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("username", Org.OpenAPITools.Client.ClientUtils.ParameterToString(username)); // path parameter + localVarRequestOptions.Data = user; + + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PutAsync("/user/{username}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UpdateUser", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiClient.cs new file mode 100644 index 00000000000..c3d43b29bb4 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiClient.cs @@ -0,0 +1,860 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Net; +using System.Reflection; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Formatters; +using System.Text; +using System.Threading; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; +using RestSharp; +using RestSharp.Deserializers; +using RestSharpMethod = RestSharp.Method; +using Polly; + +namespace Org.OpenAPITools.Client +{ + /// + /// Allows RestSharp to Serialize/Deserialize JSON using our custom logic, but only when ContentType is JSON. + /// + internal class CustomJsonCodec : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer + { + private readonly IReadableConfiguration _configuration; + private static readonly string _contentType = "application/json"; + private readonly JsonSerializerSettings _serializerSettings = new JsonSerializerSettings + { + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } + }; + + public CustomJsonCodec(IReadableConfiguration configuration) + { + _configuration = configuration; + } + + public CustomJsonCodec(JsonSerializerSettings serializerSettings, IReadableConfiguration configuration) + { + _serializerSettings = serializerSettings; + _configuration = configuration; + } + + /// + /// Serialize the object into a JSON string. + /// + /// Object to be serialized. + /// A JSON string. + public string Serialize(object obj) + { + if (obj != null && obj is Org.OpenAPITools.Model.AbstractOpenAPISchema) + { + // the object to be serialized is an oneOf/anyOf schema + return ((Org.OpenAPITools.Model.AbstractOpenAPISchema)obj).ToJson(); + } + else + { + return JsonConvert.SerializeObject(obj, _serializerSettings); + } + } + + public T Deserialize(IRestResponse response) + { + var result = (T)Deserialize(response, typeof(T)); + return result; + } + + /// + /// Deserialize the JSON string into a proper object. + /// + /// The HTTP response. + /// Object type. + /// Object representation of the JSON string. + internal object Deserialize(IRestResponse response, Type type) + { + if (type == typeof(byte[])) // return byte array + { + return response.RawBytes; + } + + // TODO: ? if (type.IsAssignableFrom(typeof(Stream))) + if (type == typeof(Stream)) + { + var bytes = response.RawBytes; + if (response.Headers != null) + { + var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) + ? Path.GetTempPath() + : _configuration.TempFolderPath; + var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); + foreach (var header in response.Headers) + { + var match = regex.Match(header.ToString()); + if (match.Success) + { + string fileName = filePath + ClientUtils.SanitizeFilename(match.Groups[1].Value.Replace("\"", "").Replace("'", "")); + File.WriteAllBytes(fileName, bytes); + return new FileStream(fileName, FileMode.Open); + } + } + } + var stream = new MemoryStream(bytes); + return stream; + } + + if (type.Name.StartsWith("System.Nullable`1[[System.DateTime")) // return a datetime object + { + return DateTime.Parse(response.Content, null, System.Globalization.DateTimeStyles.RoundtripKind); + } + + if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + { + return Convert.ChangeType(response.Content, type); + } + + // at this point, it must be a model (json) + try + { + return JsonConvert.DeserializeObject(response.Content, type, _serializerSettings); + } + catch (Exception e) + { + throw new ApiException(500, e.Message); + } + } + + public string RootElement { get; set; } + public string Namespace { get; set; } + public string DateFormat { get; set; } + + public string ContentType + { + get { return _contentType; } + set { throw new InvalidOperationException("Not allowed to set content type."); } + } + } + /// + /// Provides a default implementation of an Api client (both synchronous and asynchronous implementatios), + /// encapsulating general REST accessor use cases. + /// + public partial class ApiClient : ISynchronousClient, IAsynchronousClient + { + private readonly String _baseUrl; + + /// + /// Specifies the settings on a object. + /// These settings can be adjusted to accomodate custom serialization rules. + /// + public JsonSerializerSettings SerializerSettings { get; set; } = new JsonSerializerSettings + { + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } + }; + + /// + /// Allows for extending request processing for generated code. + /// + /// The RestSharp request object + partial void InterceptRequest(IRestRequest request); + + /// + /// Allows for extending response processing for generated code. + /// + /// The RestSharp request object + /// The RestSharp response object + partial void InterceptResponse(IRestRequest request, IRestResponse response); + + /// + /// Initializes a new instance of the , defaulting to the global configurations' base url. + /// + public ApiClient() + { + _baseUrl = Org.OpenAPITools.Client.GlobalConfiguration.Instance.BasePath; + } + + /// + /// Initializes a new instance of the + /// + /// The target service's base path in URL format. + /// + public ApiClient(String basePath) + { + if (string.IsNullOrEmpty(basePath)) + throw new ArgumentException("basePath cannot be empty"); + + _baseUrl = basePath; + } + + /// + /// Constructs the RestSharp version of an http method + /// + /// Swagger Client Custom HttpMethod + /// RestSharp's HttpMethod instance. + /// + private RestSharpMethod Method(HttpMethod method) + { + RestSharpMethod other; + switch (method) + { + case HttpMethod.Get: + other = RestSharpMethod.GET; + break; + case HttpMethod.Post: + other = RestSharpMethod.POST; + break; + case HttpMethod.Put: + other = RestSharpMethod.PUT; + break; + case HttpMethod.Delete: + other = RestSharpMethod.DELETE; + break; + case HttpMethod.Head: + other = RestSharpMethod.HEAD; + break; + case HttpMethod.Options: + other = RestSharpMethod.OPTIONS; + break; + case HttpMethod.Patch: + other = RestSharpMethod.PATCH; + break; + default: + throw new ArgumentOutOfRangeException("method", method, null); + } + + return other; + } + + /// + /// Provides all logic for constructing a new RestSharp . + /// At this point, all information for querying the service is known. Here, it is simply + /// mapped into the RestSharp request. + /// + /// The http verb. + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// [private] A new RestRequest instance. + /// + private RestRequest NewRequest( + HttpMethod method, + String path, + RequestOptions options, + IReadableConfiguration configuration) + { + if (path == null) throw new ArgumentNullException("path"); + if (options == null) throw new ArgumentNullException("options"); + if (configuration == null) throw new ArgumentNullException("configuration"); + + RestRequest request = new RestRequest(Method(method)) + { + Resource = path, + JsonSerializer = new CustomJsonCodec(SerializerSettings, configuration) + }; + + if (options.PathParameters != null) + { + foreach (var pathParam in options.PathParameters) + { + request.AddParameter(pathParam.Key, pathParam.Value, ParameterType.UrlSegment); + } + } + + if (options.QueryParameters != null) + { + foreach (var queryParam in options.QueryParameters) + { + foreach (var value in queryParam.Value) + { + request.AddQueryParameter(queryParam.Key, value); + } + } + } + + if (configuration.DefaultHeaders != null) + { + foreach (var headerParam in configuration.DefaultHeaders) + { + request.AddHeader(headerParam.Key, headerParam.Value); + } + } + + if (options.HeaderParameters != null) + { + foreach (var headerParam in options.HeaderParameters) + { + foreach (var value in headerParam.Value) + { + request.AddHeader(headerParam.Key, value); + } + } + } + + if (options.FormParameters != null) + { + foreach (var formParam in options.FormParameters) + { + request.AddParameter(formParam.Key, formParam.Value); + } + } + + if (options.Data != null) + { + if (options.Data is Stream stream) + { + var contentType = "application/octet-stream"; + if (options.HeaderParameters != null) + { + var contentTypes = options.HeaderParameters["Content-Type"]; + contentType = contentTypes[0]; + } + + var bytes = ClientUtils.ReadAsBytes(stream); + request.AddParameter(contentType, bytes, ParameterType.RequestBody); + } + else + { + if (options.HeaderParameters != null) + { + var contentTypes = options.HeaderParameters["Content-Type"]; + if (contentTypes == null || contentTypes.Any(header => header.Contains("application/json"))) + { + request.RequestFormat = DataFormat.Json; + } + else + { + // TODO: Generated client user should add additional handlers. RestSharp only supports XML and JSON, with XML as default. + } + } + else + { + // Here, we'll assume JSON APIs are more common. XML can be forced by adding produces/consumes to openapi spec explicitly. + request.RequestFormat = DataFormat.Json; + } + + request.AddJsonBody(options.Data); + } + } + + if (options.FileParameters != null) + { + foreach (var fileParam in options.FileParameters) + { + var bytes = ClientUtils.ReadAsBytes(fileParam.Value); + var fileStream = fileParam.Value as FileStream; + if (fileStream != null) + request.Files.Add(FileParameter.Create(fileParam.Key, bytes, System.IO.Path.GetFileName(fileStream.Name))); + else + request.Files.Add(FileParameter.Create(fileParam.Key, bytes, "no_file_name_provided")); + } + } + + if (options.Cookies != null && options.Cookies.Count > 0) + { + foreach (var cookie in options.Cookies) + { + request.AddCookie(cookie.Name, cookie.Value); + } + } + + return request; + } + + private ApiResponse ToApiResponse(IRestResponse response) + { + T result = response.Data; + string rawContent = response.Content; + + var transformed = new ApiResponse(response.StatusCode, new Multimap(), result, rawContent) + { + ErrorText = response.ErrorMessage, + Cookies = new List() + }; + + if (response.Headers != null) + { + foreach (var responseHeader in response.Headers) + { + transformed.Headers.Add(responseHeader.Name, ClientUtils.ParameterToString(responseHeader.Value)); + } + } + + if (response.Cookies != null) + { + foreach (var responseCookies in response.Cookies) + { + transformed.Cookies.Add( + new Cookie( + responseCookies.Name, + responseCookies.Value, + responseCookies.Path, + responseCookies.Domain) + ); + } + } + + return transformed; + } + + private ApiResponse Exec(RestRequest req, IReadableConfiguration configuration) + { + RestClient client = new RestClient(_baseUrl); + + client.ClearHandlers(); + var existingDeserializer = req.JsonSerializer as IDeserializer; + if (existingDeserializer != null) + { + client.AddHandler("application/json", () => existingDeserializer); + client.AddHandler("text/json", () => existingDeserializer); + client.AddHandler("text/x-json", () => existingDeserializer); + client.AddHandler("text/javascript", () => existingDeserializer); + client.AddHandler("*+json", () => existingDeserializer); + } + else + { + var customDeserializer = new CustomJsonCodec(SerializerSettings, configuration); + client.AddHandler("application/json", () => customDeserializer); + client.AddHandler("text/json", () => customDeserializer); + client.AddHandler("text/x-json", () => customDeserializer); + client.AddHandler("text/javascript", () => customDeserializer); + client.AddHandler("*+json", () => customDeserializer); + } + + var xmlDeserializer = new XmlDeserializer(); + client.AddHandler("application/xml", () => xmlDeserializer); + client.AddHandler("text/xml", () => xmlDeserializer); + client.AddHandler("*+xml", () => xmlDeserializer); + client.AddHandler("*", () => xmlDeserializer); + + client.Timeout = configuration.Timeout; + + if (configuration.Proxy != null) + { + client.Proxy = configuration.Proxy; + } + + if (configuration.UserAgent != null) + { + client.UserAgent = configuration.UserAgent; + } + + if (configuration.ClientCertificates != null) + { + client.ClientCertificates = configuration.ClientCertificates; + } + + InterceptRequest(req); + + IRestResponse response; + if (RetryConfiguration.RetryPolicy != null) + { + var policy = RetryConfiguration.RetryPolicy; + var policyResult = policy.ExecuteAndCapture(() => client.Execute(req)); + response = (policyResult.Outcome == OutcomeType.Successful) ? client.Deserialize(policyResult.Result) : new RestResponse + { + Request = req, + ErrorException = policyResult.FinalException + }; + } + else + { + response = client.Execute(req); + } + + // if the response type is oneOf/anyOf, call FromJSON to deserialize the data + if (typeof(Org.OpenAPITools.Model.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) + { + response.Data = (T) typeof(T).GetMethod("FromJson").Invoke(null, new object[] { response.Content }); + } + else if (typeof(T).Name == "Stream") // for binary response + { + response.Data = (T)(object)new MemoryStream(response.RawBytes); + } + + InterceptResponse(req, response); + + var result = ToApiResponse(response); + if (response.ErrorMessage != null) + { + result.ErrorText = response.ErrorMessage; + } + + if (response.Cookies != null && response.Cookies.Count > 0) + { + if (result.Cookies == null) result.Cookies = new List(); + foreach (var restResponseCookie in response.Cookies) + { + var cookie = new Cookie( + restResponseCookie.Name, + restResponseCookie.Value, + restResponseCookie.Path, + restResponseCookie.Domain + ) + { + Comment = restResponseCookie.Comment, + CommentUri = restResponseCookie.CommentUri, + Discard = restResponseCookie.Discard, + Expired = restResponseCookie.Expired, + Expires = restResponseCookie.Expires, + HttpOnly = restResponseCookie.HttpOnly, + Port = restResponseCookie.Port, + Secure = restResponseCookie.Secure, + Version = restResponseCookie.Version + }; + + result.Cookies.Add(cookie); + } + } + return result; + } + + private async Task> ExecAsync(RestRequest req, IReadableConfiguration configuration, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + RestClient client = new RestClient(_baseUrl); + + client.ClearHandlers(); + var existingDeserializer = req.JsonSerializer as IDeserializer; + if (existingDeserializer != null) + { + client.AddHandler("application/json", () => existingDeserializer); + client.AddHandler("text/json", () => existingDeserializer); + client.AddHandler("text/x-json", () => existingDeserializer); + client.AddHandler("text/javascript", () => existingDeserializer); + client.AddHandler("*+json", () => existingDeserializer); + } + else + { + var customDeserializer = new CustomJsonCodec(SerializerSettings, configuration); + client.AddHandler("application/json", () => customDeserializer); + client.AddHandler("text/json", () => customDeserializer); + client.AddHandler("text/x-json", () => customDeserializer); + client.AddHandler("text/javascript", () => customDeserializer); + client.AddHandler("*+json", () => customDeserializer); + } + + var xmlDeserializer = new XmlDeserializer(); + client.AddHandler("application/xml", () => xmlDeserializer); + client.AddHandler("text/xml", () => xmlDeserializer); + client.AddHandler("*+xml", () => xmlDeserializer); + client.AddHandler("*", () => xmlDeserializer); + + client.Timeout = configuration.Timeout; + + if (configuration.Proxy != null) + { + client.Proxy = configuration.Proxy; + } + + if (configuration.UserAgent != null) + { + client.UserAgent = configuration.UserAgent; + } + + if (configuration.ClientCertificates != null) + { + client.ClientCertificates = configuration.ClientCertificates; + } + + InterceptRequest(req); + + IRestResponse response; + if (RetryConfiguration.AsyncRetryPolicy != null) + { + var policy = RetryConfiguration.AsyncRetryPolicy; + var policyResult = await policy.ExecuteAndCaptureAsync(() => client.ExecuteAsync(req, cancellationToken)).ConfigureAwait(false); + response = (policyResult.Outcome == OutcomeType.Successful) ? client.Deserialize(policyResult.Result) : new RestResponse + { + Request = req, + ErrorException = policyResult.FinalException + }; + } + else + { + response = await client.ExecuteAsync(req, cancellationToken).ConfigureAwait(false); + } + + // if the response type is oneOf/anyOf, call FromJSON to deserialize the data + if (typeof(Org.OpenAPITools.Model.AbstractOpenAPISchema).IsAssignableFrom(typeof(T))) + { + response.Data = (T) typeof(T).GetMethod("FromJson").Invoke(null, new object[] { response.Content }); + } + else if (typeof(T).Name == "Stream") // for binary response + { + response.Data = (T)(object)new MemoryStream(response.RawBytes); + } + + InterceptResponse(req, response); + + var result = ToApiResponse(response); + if (response.ErrorMessage != null) + { + result.ErrorText = response.ErrorMessage; + } + + if (response.Cookies != null && response.Cookies.Count > 0) + { + if (result.Cookies == null) result.Cookies = new List(); + foreach (var restResponseCookie in response.Cookies) + { + var cookie = new Cookie( + restResponseCookie.Name, + restResponseCookie.Value, + restResponseCookie.Path, + restResponseCookie.Domain + ) + { + Comment = restResponseCookie.Comment, + CommentUri = restResponseCookie.CommentUri, + Discard = restResponseCookie.Discard, + Expired = restResponseCookie.Expired, + Expires = restResponseCookie.Expires, + HttpOnly = restResponseCookie.HttpOnly, + Port = restResponseCookie.Port, + Secure = restResponseCookie.Secure, + Version = restResponseCookie.Version + }; + + result.Cookies.Add(cookie); + } + } + return result; + } + + #region IAsynchronousClient + /// + /// Make a HTTP GET request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Get, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP POST request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Post, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP PUT request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Put, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP DELETE request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Delete, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP HEAD request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Head, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP OPTION request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Options, path, options, config), config, cancellationToken); + } + + /// + /// Make a HTTP PATCH request (async). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// Token that enables callers to cancel the request. + /// A Task containing ApiResponse + public Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) + { + var config = configuration ?? GlobalConfiguration.Instance; + return ExecAsync(NewRequest(HttpMethod.Patch, path, options, config), config, cancellationToken); + } + #endregion IAsynchronousClient + + #region ISynchronousClient + /// + /// Make a HTTP GET request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Get, path, options, config), config); + } + + /// + /// Make a HTTP POST request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Post, path, options, config), config); + } + + /// + /// Make a HTTP PUT request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Put, path, options, config), config); + } + + /// + /// Make a HTTP DELETE request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Delete, path, options, config), config); + } + + /// + /// Make a HTTP HEAD request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Head, path, options, config), config); + } + + /// + /// Make a HTTP OPTION request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Options, path, options, config), config); + } + + /// + /// Make a HTTP PATCH request (synchronous). + /// + /// The target path (or resource). + /// The additional request options. + /// A per-request configuration object. It is assumed that any merge with + /// GlobalConfiguration has been done before calling this method. + /// A Task containing ApiResponse + public ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null) + { + var config = configuration ?? GlobalConfiguration.Instance; + return Exec(NewRequest(HttpMethod.Patch, path, options, config), config); + } + #endregion ISynchronousClient + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiException.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiException.cs new file mode 100644 index 00000000000..67d9888d6a3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiException.cs @@ -0,0 +1,68 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; + +namespace Org.OpenAPITools.Client +{ + /// + /// API Exception + /// + public class ApiException : Exception + { + /// + /// Gets or sets the error code (HTTP status code) + /// + /// The error code (HTTP status code). + public int ErrorCode { get; set; } + + /// + /// Gets or sets the error content (body json object) + /// + /// The error content (Http response body). + public object ErrorContent { get; private set; } + + /// + /// Gets or sets the HTTP headers + /// + /// HTTP headers + public Multimap Headers { get; private set; } + + /// + /// Initializes a new instance of the class. + /// + public ApiException() { } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Error message. + public ApiException(int errorCode, string message) : base(message) + { + this.ErrorCode = errorCode; + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Error message. + /// Error content. + /// HTTP Headers. + public ApiException(int errorCode, string message, object errorContent = null, Multimap headers = null) : base(message) + { + this.ErrorCode = errorCode; + this.ErrorContent = errorContent; + this.Headers = headers; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiResponse.cs new file mode 100644 index 00000000000..1b7d787c84b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiResponse.cs @@ -0,0 +1,166 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Net; + +namespace Org.OpenAPITools.Client +{ + /// + /// Provides a non-generic contract for the ApiResponse wrapper. + /// + public interface IApiResponse + { + /// + /// The data type of + /// + Type ResponseType { get; } + + /// + /// The content of this response + /// + Object Content { get; } + + /// + /// Gets or sets the status code (HTTP status code) + /// + /// The status code. + HttpStatusCode StatusCode { get; } + + /// + /// Gets or sets the HTTP headers + /// + /// HTTP headers + Multimap Headers { get; } + + /// + /// Gets or sets any error text defined by the calling client. + /// + String ErrorText { get; set; } + + /// + /// Gets or sets any cookies passed along on the response. + /// + List Cookies { get; set; } + + /// + /// The raw content of this response + /// + string RawContent { get; } + } + + /// + /// API Response + /// + public class ApiResponse : IApiResponse + { + #region Properties + + /// + /// Gets or sets the status code (HTTP status code) + /// + /// The status code. + public HttpStatusCode StatusCode { get; } + + /// + /// Gets or sets the HTTP headers + /// + /// HTTP headers + public Multimap Headers { get; } + + /// + /// Gets or sets the data (parsed HTTP body) + /// + /// The data. + public T Data { get; } + + /// + /// Gets or sets any error text defined by the calling client. + /// + public String ErrorText { get; set; } + + /// + /// Gets or sets any cookies passed along on the response. + /// + public List Cookies { get; set; } + + /// + /// The content of this response + /// + public Type ResponseType + { + get { return typeof(T); } + } + + /// + /// The data type of + /// + public object Content + { + get { return Data; } + } + + /// + /// The raw content + /// + public string RawContent { get; } + + #endregion Properties + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// HTTP headers. + /// Data (parsed HTTP body) + /// Raw content. + public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data, string rawContent) + { + StatusCode = statusCode; + Headers = headers; + Data = data; + RawContent = rawContent; + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// HTTP headers. + /// Data (parsed HTTP body) + public ApiResponse(HttpStatusCode statusCode, Multimap headers, T data) : this(statusCode, headers, data, null) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Data (parsed HTTP body) + /// Raw content. + public ApiResponse(HttpStatusCode statusCode, T data, string rawContent) : this(statusCode, null, data, rawContent) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// HTTP status code. + /// Data (parsed HTTP body) + public ApiResponse(HttpStatusCode statusCode, T data) : this(statusCode, data, null) + { + } + + #endregion Constructors + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ClientUtils.cs new file mode 100644 index 00000000000..2b6e52d6065 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -0,0 +1,243 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using KellermanSoftware.CompareNetObjects; + +namespace Org.OpenAPITools.Client +{ + /// + /// Utility functions providing some benefit to API client consumers. + /// + public static class ClientUtils + { + /// + /// An instance of CompareLogic. + /// + public static CompareLogic compareLogic; + + /// + /// Static contstructor to initialise compareLogic. + /// + static ClientUtils() + { + compareLogic = new CompareLogic(); + } + + /// + /// Sanitize filename by removing the path + /// + /// Filename + /// Filename + public static string SanitizeFilename(string filename) + { + Match match = Regex.Match(filename, @".*[/\\](.*)$"); + return match.Success ? match.Groups[1].Value : filename; + } + + /// + /// Convert params to key/value pairs. + /// Use collectionFormat to properly format lists and collections. + /// + /// The swagger-supported collection format, one of: csv, tsv, ssv, pipes, multi + /// Key name. + /// Value object. + /// A multimap of keys with 1..n associated values. + public static Multimap ParameterToMultiMap(string collectionFormat, string name, object value) + { + var parameters = new Multimap(); + + if (value is ICollection collection && collectionFormat == "multi") + { + foreach (var item in collection) + { + parameters.Add(name, ParameterToString(item)); + } + } + else if (value is IDictionary dictionary) + { + if(collectionFormat == "deepObject") { + foreach (DictionaryEntry entry in dictionary) + { + parameters.Add(name + "[" + entry.Key + "]", ParameterToString(entry.Value)); + } + } + else { + foreach (DictionaryEntry entry in dictionary) + { + parameters.Add(entry.Key.ToString(), ParameterToString(entry.Value)); + } + } + } + else + { + parameters.Add(name, ParameterToString(value)); + } + + return parameters; + } + + /// + /// If parameter is DateTime, output in a formatted string (default ISO 8601), customizable with Configuration.DateTime. + /// If parameter is a list, join the list with ",". + /// Otherwise just return the string. + /// + /// The parameter (header, path, query, form). + /// An optional configuration instance, providing formatting options used in processing. + /// Formatted string. + public static string ParameterToString(object obj, IReadableConfiguration configuration = null) + { + if (obj is DateTime dateTime) + // Return a formatted date string - Can be customized with Configuration.DateTimeFormat + // Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o") + // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8 + // For example: 2009-06-15T13:45:30.0000000 + return dateTime.ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat); + if (obj is DateTimeOffset dateTimeOffset) + // Return a formatted date string - Can be customized with Configuration.DateTimeFormat + // Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o") + // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8 + // For example: 2009-06-15T13:45:30.0000000 + return dateTimeOffset.ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat); + if (obj is bool boolean) + return boolean ? "true" : "false"; + if (obj is ICollection collection) + return string.Join(",", collection.Cast()); + + return Convert.ToString(obj, CultureInfo.InvariantCulture); + } + + /// + /// URL encode a string + /// Credit/Ref: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Extensions/StringExtensions.cs#L50 + /// + /// String to be URL encoded + /// Byte array + public static string UrlEncode(string input) + { + const int maxLength = 32766; + + if (input == null) + { + throw new ArgumentNullException("input"); + } + + if (input.Length <= maxLength) + { + return Uri.EscapeDataString(input); + } + + StringBuilder sb = new StringBuilder(input.Length * 2); + int index = 0; + + while (index < input.Length) + { + int length = Math.Min(input.Length - index, maxLength); + string subString = input.Substring(index, length); + + sb.Append(Uri.EscapeDataString(subString)); + index += subString.Length; + } + + return sb.ToString(); + } + + /// + /// Encode string in base64 format. + /// + /// String to be encoded. + /// Encoded string. + public static string Base64Encode(string text) + { + return Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(text)); + } + + /// + /// Convert stream to byte array + /// + /// Input stream to be converted + /// Byte array + public static byte[] ReadAsBytes(Stream inputStream) + { + using (var ms = new MemoryStream()) + { + inputStream.CopyTo(ms); + return ms.ToArray(); + } + } + + /// + /// Select the Content-Type header's value from the given content-type array: + /// if JSON type exists in the given array, use it; + /// otherwise use the first one defined in 'consumes' + /// + /// The Content-Type array to select from. + /// The Content-Type header to use. + public static String SelectHeaderContentType(String[] contentTypes) + { + if (contentTypes.Length == 0) + return null; + + foreach (var contentType in contentTypes) + { + if (IsJsonMime(contentType)) + return contentType; + } + + return contentTypes[0]; // use the first content type specified in 'consumes' + } + + /// + /// Select the Accept header's value from the given accepts array: + /// if JSON exists in the given array, use it; + /// otherwise use all of them (joining into a string) + /// + /// The accepts array to select from. + /// The Accept header to use. + public static String SelectHeaderAccept(String[] accepts) + { + if (accepts.Length == 0) + return null; + + if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) + return "application/json"; + + return String.Join(",", accepts); + } + + /// + /// Provides a case-insensitive check that a provided content type is a known JSON-like content type. + /// + public static readonly Regex JsonRegex = new Regex("(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$"); + + /// + /// Check if the given MIME is a JSON MIME. + /// JSON MIME examples: + /// application/json + /// application/json; charset=UTF8 + /// APPLICATION/JSON + /// application/vnd.company+json + /// + /// MIME + /// Returns True if MIME type is json. + public static bool IsJsonMime(String mime) + { + if (String.IsNullOrWhiteSpace(mime)) return false; + + return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"); + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/Configuration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/Configuration.cs new file mode 100644 index 00000000000..bca7db624cd --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/Configuration.cs @@ -0,0 +1,587 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Reflection; +using System.Security.Cryptography.X509Certificates; +using System.Text; + +namespace Org.OpenAPITools.Client +{ + /// + /// Represents a set of configuration settings + /// + public class Configuration : IReadableConfiguration + { + #region Constants + + /// + /// Version of the package. + /// + /// Version of the package. + public const string Version = "1.0.0"; + + /// + /// Identifier for ISO 8601 DateTime Format + /// + /// See https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8 for more information. + // ReSharper disable once InconsistentNaming + public const string ISO8601_DATETIME_FORMAT = "o"; + + #endregion Constants + + #region Static Members + + /// + /// Default creation of exceptions for a given method name and response object + /// + public static readonly ExceptionFactory DefaultExceptionFactory = (methodName, response) => + { + var status = (int)response.StatusCode; + if (status >= 400) + { + return new ApiException(status, + string.Format("Error calling {0}: {1}", methodName, response.RawContent), + response.RawContent, response.Headers); + } + return null; + }; + + #endregion Static Members + + #region Private Members + + /// + /// Defines the base path of the target API server. + /// Example: http://localhost:3000/v1/ + /// + private String _basePath; + + /// + /// Gets or sets the API key based on the authentication name. + /// This is the key and value comprising the "secret" for acessing an API. + /// + /// The API key. + private IDictionary _apiKey; + + /// + /// Gets or sets the prefix (e.g. Token) of the API key based on the authentication name. + /// + /// The prefix of the API key. + private IDictionary _apiKeyPrefix; + + private string _dateTimeFormat = ISO8601_DATETIME_FORMAT; + private string _tempFolderPath = Path.GetTempPath(); + + /// + /// Gets or sets the servers defined in the OpenAPI spec. + /// + /// The servers + private IList> _servers; + + /// + /// HttpSigning configuration + /// + private HttpSigningConfiguration _HttpSigningConfiguration = null; + #endregion Private Members + + #region Constructors + + /// + /// Initializes a new instance of the class + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("ReSharper", "VirtualMemberCallInConstructor")] + public Configuration() + { + Proxy = null; + UserAgent = "OpenAPI-Generator/1.0.0/csharp"; + BasePath = "http://petstore.swagger.io:80/v2"; + DefaultHeaders = new ConcurrentDictionary(); + ApiKey = new ConcurrentDictionary(); + ApiKeyPrefix = new ConcurrentDictionary(); + Servers = new List>() + { + { + new Dictionary { + {"url", "http://{server}.swagger.io:{port}/v2"}, + {"description", "petstore server"}, + { + "variables", new Dictionary { + { + "server", new Dictionary { + {"description", "No description provided"}, + {"default_value", "petstore"}, + { + "enum_values", new List() { + "petstore", + "qa-petstore", + "dev-petstore" + } + } + } + }, + { + "port", new Dictionary { + {"description", "No description provided"}, + {"default_value", "80"}, + { + "enum_values", new List() { + "80", + "8080" + } + } + } + } + } + } + } + }, + { + new Dictionary { + {"url", "https://localhost:8080/{version}"}, + {"description", "The local server"}, + { + "variables", new Dictionary { + { + "version", new Dictionary { + {"description", "No description provided"}, + {"default_value", "v2"}, + { + "enum_values", new List() { + "v1", + "v2" + } + } + } + } + } + } + } + }, + { + new Dictionary { + {"url", "https://127.0.0.1/no_variable"}, + {"description", "The local server without variables"}, + } + } + }; + + // Setting Timeout has side effects (forces ApiClient creation). + Timeout = 100000; + } + + /// + /// Initializes a new instance of the class + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("ReSharper", "VirtualMemberCallInConstructor")] + public Configuration( + IDictionary defaultHeaders, + IDictionary apiKey, + IDictionary apiKeyPrefix, + string basePath = "http://petstore.swagger.io:80/v2") : this() + { + if (string.IsNullOrWhiteSpace(basePath)) + throw new ArgumentException("The provided basePath is invalid.", "basePath"); + if (defaultHeaders == null) + throw new ArgumentNullException("defaultHeaders"); + if (apiKey == null) + throw new ArgumentNullException("apiKey"); + if (apiKeyPrefix == null) + throw new ArgumentNullException("apiKeyPrefix"); + + BasePath = basePath; + + foreach (var keyValuePair in defaultHeaders) + { + DefaultHeaders.Add(keyValuePair); + } + + foreach (var keyValuePair in apiKey) + { + ApiKey.Add(keyValuePair); + } + + foreach (var keyValuePair in apiKeyPrefix) + { + ApiKeyPrefix.Add(keyValuePair); + } + } + + #endregion Constructors + + #region Properties + + /// + /// Gets or sets the base path for API access. + /// + public virtual string BasePath { + get { return _basePath; } + set { _basePath = value; } + } + + /// + /// Gets or sets the default header. + /// + [Obsolete("Use DefaultHeaders instead.")] + public virtual IDictionary DefaultHeader + { + get + { + return DefaultHeaders; + } + set + { + DefaultHeaders = value; + } + } + + /// + /// Gets or sets the default headers. + /// + public virtual IDictionary DefaultHeaders { get; set; } + + /// + /// Gets or sets the HTTP timeout (milliseconds) of ApiClient. Default to 100000 milliseconds. + /// + public virtual int Timeout { get; set; } + + /// + /// Gets or sets the proxy + /// + /// Proxy. + public virtual WebProxy Proxy { get; set; } + + /// + /// Gets or sets the HTTP user agent. + /// + /// Http user agent. + public virtual string UserAgent { get; set; } + + /// + /// Gets or sets the username (HTTP basic authentication). + /// + /// The username. + public virtual string Username { get; set; } + + /// + /// Gets or sets the password (HTTP basic authentication). + /// + /// The password. + public virtual string Password { get; set; } + + /// + /// Gets the API key with prefix. + /// + /// API key identifier (authentication scheme). + /// API key with prefix. + public string GetApiKeyWithPrefix(string apiKeyIdentifier) + { + string apiKeyValue; + ApiKey.TryGetValue(apiKeyIdentifier, out apiKeyValue); + string apiKeyPrefix; + if (ApiKeyPrefix.TryGetValue(apiKeyIdentifier, out apiKeyPrefix)) + { + return apiKeyPrefix + " " + apiKeyValue; + } + + return apiKeyValue; + } + + /// + /// Gets or sets certificate collection to be sent with requests. + /// + /// X509 Certificate collection. + public X509CertificateCollection ClientCertificates { get; set; } + + /// + /// Gets or sets the access token for OAuth2 authentication. + /// + /// This helper property simplifies code generation. + /// + /// The access token. + public virtual string AccessToken { get; set; } + + /// + /// Gets or sets the temporary folder path to store the files downloaded from the server. + /// + /// Folder path. + public virtual string TempFolderPath + { + get { return _tempFolderPath; } + + set + { + if (string.IsNullOrEmpty(value)) + { + _tempFolderPath = Path.GetTempPath(); + return; + } + + // create the directory if it does not exist + if (!Directory.Exists(value)) + { + Directory.CreateDirectory(value); + } + + // check if the path contains directory separator at the end + if (value[value.Length - 1] == Path.DirectorySeparatorChar) + { + _tempFolderPath = value; + } + else + { + _tempFolderPath = value + Path.DirectorySeparatorChar; + } + } + } + + /// + /// Gets or sets the date time format used when serializing in the ApiClient + /// By default, it's set to ISO 8601 - "o", for others see: + /// https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx + /// and https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx + /// No validation is done to ensure that the string you're providing is valid + /// + /// The DateTimeFormat string + public virtual string DateTimeFormat + { + get { return _dateTimeFormat; } + set + { + if (string.IsNullOrEmpty(value)) + { + // Never allow a blank or null string, go back to the default + _dateTimeFormat = ISO8601_DATETIME_FORMAT; + return; + } + + // Caution, no validation when you choose date time format other than ISO 8601 + // Take a look at the above links + _dateTimeFormat = value; + } + } + + /// + /// Gets or sets the prefix (e.g. Token) of the API key based on the authentication name. + /// + /// Whatever you set here will be prepended to the value defined in AddApiKey. + /// + /// An example invocation here might be: + /// + /// ApiKeyPrefix["Authorization"] = "Bearer"; + /// + /// … where ApiKey["Authorization"] would then be used to set the value of your bearer token. + /// + /// + /// OAuth2 workflows should set tokens via AccessToken. + /// + /// + /// The prefix of the API key. + public virtual IDictionary ApiKeyPrefix + { + get { return _apiKeyPrefix; } + set + { + if (value == null) + { + throw new InvalidOperationException("ApiKeyPrefix collection may not be null."); + } + _apiKeyPrefix = value; + } + } + + /// + /// Gets or sets the API key based on the authentication name. + /// + /// The API key. + public virtual IDictionary ApiKey + { + get { return _apiKey; } + set + { + if (value == null) + { + throw new InvalidOperationException("ApiKey collection may not be null."); + } + _apiKey = value; + } + } + + /// + /// Gets or sets the servers. + /// + /// The servers. + public virtual IList> Servers + { + get { return _servers; } + set + { + if (value == null) + { + throw new InvalidOperationException("Servers may not be null."); + } + _servers = value; + } + } + + /// + /// Returns URL based on server settings without providing values + /// for the variables + /// + /// Array index of the server settings. + /// The server URL. + public string GetServerUrl(int index) + { + return GetServerUrl(index, null); + } + + /// + /// Returns URL based on server settings. + /// + /// Array index of the server settings. + /// Dictionary of the variables and the corresponding values. + /// The server URL. + public string GetServerUrl(int index, Dictionary inputVariables) + { + if (index < 0 || index >= Servers.Count) + { + throw new InvalidOperationException($"Invalid index {index} when selecting the server. Must be less than {Servers.Count}."); + } + + if (inputVariables == null) + { + inputVariables = new Dictionary(); + } + + IReadOnlyDictionary server = Servers[index]; + string url = (string)server["url"]; + + // go through variable and assign a value + foreach (KeyValuePair variable in (IReadOnlyDictionary)server["variables"]) + { + + IReadOnlyDictionary serverVariables = (IReadOnlyDictionary)(variable.Value); + + if (inputVariables.ContainsKey(variable.Key)) + { + if (((List)serverVariables["enum_values"]).Contains(inputVariables[variable.Key])) + { + url = url.Replace("{" + variable.Key + "}", inputVariables[variable.Key]); + } + else + { + throw new InvalidOperationException($"The variable `{variable.Key}` in the server URL has invalid value #{inputVariables[variable.Key]}. Must be {(List)serverVariables["enum_values"]}"); + } + } + else + { + // use defualt value + url = url.Replace("{" + variable.Key + "}", (string)serverVariables["default_value"]); + } + } + + return url; + } + + /// + /// Gets and Sets the HttpSigningConfiuration + /// + public HttpSigningConfiguration HttpSigningConfiguration + { + get { return _HttpSigningConfiguration; } + set { _HttpSigningConfiguration = value; } + } + + #endregion Properties + + #region Methods + + /// + /// Returns a string with essential information for debugging. + /// + public static String ToDebugReport() + { + String report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; + report += " OS: " + System.Environment.OSVersion + "\n"; + report += " .NET Framework Version: " + System.Environment.Version + "\n"; + report += " Version of the API: 1.0.0\n"; + report += " SDK Package Version: 1.0.0\n"; + + return report; + } + + /// + /// Add Api Key Header. + /// + /// Api Key name. + /// Api Key value. + /// + public void AddApiKey(string key, string value) + { + ApiKey[key] = value; + } + + /// + /// Sets the API key prefix. + /// + /// Api Key name. + /// Api Key value. + public void AddApiKeyPrefix(string key, string value) + { + ApiKeyPrefix[key] = value; + } + + #endregion Methods + + #region Static Members + /// + /// Merge configurations. + /// + /// First configuration. + /// Second configuration. + /// Merged configuration. + public static IReadableConfiguration MergeConfigurations(IReadableConfiguration first, IReadableConfiguration second) + { + if (second == null) return first ?? GlobalConfiguration.Instance; + + Dictionary apiKey = first.ApiKey.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + Dictionary apiKeyPrefix = first.ApiKeyPrefix.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + Dictionary defaultHeaders = first.DefaultHeaders.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + + foreach (var kvp in second.ApiKey) apiKey[kvp.Key] = kvp.Value; + foreach (var kvp in second.ApiKeyPrefix) apiKeyPrefix[kvp.Key] = kvp.Value; + foreach (var kvp in second.DefaultHeaders) defaultHeaders[kvp.Key] = kvp.Value; + + var config = new Configuration + { + ApiKey = apiKey, + ApiKeyPrefix = apiKeyPrefix, + DefaultHeaders = defaultHeaders, + BasePath = second.BasePath ?? first.BasePath, + Timeout = second.Timeout, + Proxy = second.Proxy ?? first.Proxy, + UserAgent = second.UserAgent ?? first.UserAgent, + Username = second.Username ?? first.Username, + Password = second.Password ?? first.Password, + AccessToken = second.AccessToken ?? first.AccessToken, + HttpSigningConfiguration = second.HttpSigningConfiguration ?? first.HttpSigningConfiguration, + TempFolderPath = second.TempFolderPath ?? first.TempFolderPath, + DateTimeFormat = second.DateTimeFormat ?? first.DateTimeFormat + }; + return config; + } + #endregion Static Members + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ExceptionFactory.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ExceptionFactory.cs new file mode 100644 index 00000000000..43624dd7c86 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ExceptionFactory.cs @@ -0,0 +1,22 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; + +namespace Org.OpenAPITools.Client +{ + /// + /// A delegate to ExceptionFactory method + /// + /// Method name + /// Response + /// Exceptions + public delegate Exception ExceptionFactory(string methodName, IApiResponse response); +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/GlobalConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/GlobalConfiguration.cs new file mode 100644 index 00000000000..4bc467ffa40 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/GlobalConfiguration.cs @@ -0,0 +1,67 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System.Collections.Generic; + +namespace Org.OpenAPITools.Client +{ + /// + /// provides a compile-time extension point for globally configuring + /// API Clients. + /// + /// + /// A customized implementation via partial class may reside in another file and may + /// be excluded from automatic generation via a .openapi-generator-ignore file. + /// + public partial class GlobalConfiguration : Configuration + { + #region Private Members + + private static readonly object GlobalConfigSync = new { }; + private static IReadableConfiguration _globalConfiguration; + + #endregion Private Members + + #region Constructors + + /// + private GlobalConfiguration() + { + } + + /// + public GlobalConfiguration(IDictionary defaultHeader, IDictionary apiKey, IDictionary apiKeyPrefix, string basePath = "http://localhost:3000/api") : base(defaultHeader, apiKey, apiKeyPrefix, basePath) + { + } + + static GlobalConfiguration() + { + Instance = new GlobalConfiguration(); + } + + #endregion Constructors + + /// + /// Gets or sets the default Configuration. + /// + /// Configuration. + public static IReadableConfiguration Instance + { + get { return _globalConfiguration; } + set + { + lock (GlobalConfigSync) + { + _globalConfiguration = value; + } + } + } + } +} \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpMethod.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpMethod.cs new file mode 100644 index 00000000000..39cde64b2a5 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpMethod.cs @@ -0,0 +1,33 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +namespace Org.OpenAPITools.Client +{ + /// + /// Http methods supported by swagger + /// + public enum HttpMethod + { + /// HTTP GET request. + Get, + /// HTTP POST request. + Post, + /// HTTP PUT request. + Put, + /// HTTP DELETE request. + Delete, + /// HTTP HEAD request. + Head, + /// HTTP OPTIONS request. + Options, + /// HTTP PATCH request. + Patch + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs new file mode 100644 index 00000000000..1b9f9b7a99f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs @@ -0,0 +1,757 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.InteropServices; +using System.Security; +using System.Security.Cryptography; +using System.Text; +using System.Web; + +namespace Org.OpenAPITools.Client +{ + /// + /// Class for HttpSigning auth related parameter and methods + /// + public class HttpSigningConfiguration + { + #region + /// + /// Initailize the HashAlgorithm and SigningAlgorithm to default value + /// + public HttpSigningConfiguration() + { + HashAlgorithm = HashAlgorithmName.SHA256; + SigningAlgorithm = "PKCS1-v15"; + } + #endregion + + #region Properties + /// + ///Gets the Api keyId + /// + public string KeyId { get; set; } + + /// + /// Gets the Key file path + /// + public string KeyFilePath { get; set; } + + /// + /// Gets the key pass phrase for password protected key + /// + public SecureString KeyPassPhrase { get; set; } + + /// + /// Gets the HTTP signing header + /// + public List HttpSigningHeader { get; set; } + + /// + /// Gets the hash algorithm sha256 or sha512 + /// + public HashAlgorithmName HashAlgorithm { get; set; } + + /// + /// Gets the signing algorithm + /// + public string SigningAlgorithm { get; set; } + + /// + /// Gets the Signature validaty period in seconds + /// + public int SignatureValidityPeriod { get; set; } + + #endregion + + #region enum + private enum PrivateKeyType + { + None = 0, + RSA = 1, + ECDSA = 2, + } + #endregion + + #region Methods + /// + /// Gets the Headers for HttpSigning + /// + /// Base path + /// HTTP method + /// Path + /// Request options + /// + internal Dictionary GetHttpSignedHeader(string basePath,string method, string path, RequestOptions requestOptions) + { + const string HEADER_REQUEST_TARGET = "(request-target)"; + //The time when the HTTP signature expires. The API server should reject HTTP requests + //that have expired. + const string HEADER_EXPIRES = "(expires)"; + //The 'Date' header. + const string HEADER_DATE = "Date"; + //The 'Host' header. + const string HEADER_HOST = "Host"; + //The time when the HTTP signature was generated. + const string HEADER_CREATED = "(created)"; + //When the 'Digest' header is included in the HTTP signature, the client automatically + //computes the digest of the HTTP request body, per RFC 3230. + const string HEADER_DIGEST = "Digest"; + //The 'Authorization' header is automatically generated by the client. It includes + //the list of signed headers and a base64-encoded signature. + const string HEADER_AUTHORIZATION = "Authorization"; + + //Hash table to store singed headers + var HttpSignedRequestHeader = new Dictionary(); + var HttpSignatureHeader = new Dictionary(); + + if (HttpSigningHeader.Count == 0) + { + HttpSigningHeader.Add("(created)"); + } + + if (requestOptions.PathParameters != null) + { + foreach (var pathParam in requestOptions.PathParameters) + { + var tempPath = path.Replace(pathParam.Key, "0"); + path = string.Format(tempPath, pathParam.Value); + } + } + + var httpValues = HttpUtility.ParseQueryString(String.Empty); + foreach (var parameter in requestOptions.QueryParameters) + { +#if (NETCOREAPP) + if (parameter.Value.Count > 1) + { // array + foreach (var value in parameter.Value) + { + httpValues.Add(HttpUtility.UrlEncode(parameter.Key) + "[]", value); + } + } + else + { + httpValues.Add(HttpUtility.UrlEncode(parameter.Key), parameter.Value[0]); + } +#else + if (parameter.Value.Count > 1) + { // array + foreach (var value in parameter.Value) + { + httpValues.Add(parameter.Key + "[]", value); + } + } + else + { + httpValues.Add(parameter.Key, parameter.Value[0]); + } +#endif + } + var uriBuilder = new UriBuilder(string.Concat(basePath, path)); + uriBuilder.Query = httpValues.ToString().Replace("+", "%20"); + + var dateTime = DateTime.Now; + String Digest = String.Empty; + + //get the body + string requestBody = string.Empty; + if (requestOptions.Data != null) + { + var serializerSettings = new JsonSerializerSettings(); + requestBody = JsonConvert.SerializeObject(requestOptions.Data, serializerSettings); + } + + if (HashAlgorithm == HashAlgorithmName.SHA256) + { + var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody); + Digest = string.Format("SHA-256={0}", Convert.ToBase64String(bodyDigest)); + } + else if (HashAlgorithm == HashAlgorithmName.SHA512) + { + var bodyDigest = GetStringHash(HashAlgorithm.ToString(), requestBody); + Digest = string.Format("SHA-512={0}", Convert.ToBase64String(bodyDigest)); + } + else + { + throw new Exception(string.Format("{0} not supported", HashAlgorithm)); + } + + + foreach (var header in HttpSigningHeader) + { + if (header.Equals(HEADER_REQUEST_TARGET)) + { + var targetUrl = string.Format("{0} {1}{2}", method.ToLower(), uriBuilder.Path, uriBuilder.Query); + HttpSignatureHeader.Add(header.ToLower(), targetUrl); + } + else if (header.Equals(HEADER_EXPIRES)) + { + var expireDateTime = dateTime.AddSeconds(SignatureValidityPeriod); + HttpSignatureHeader.Add(header.ToLower(), GetUnixTime(expireDateTime).ToString()); + } + else if (header.Equals(HEADER_DATE)) + { + var utcDateTime = dateTime.ToString("r").ToString(); + HttpSignatureHeader.Add(header.ToLower(), utcDateTime); + HttpSignedRequestHeader.Add(HEADER_DATE, utcDateTime); + } + else if (header.Equals(HEADER_HOST)) + { + HttpSignatureHeader.Add(header.ToLower(), uriBuilder.Host); + HttpSignedRequestHeader.Add(HEADER_HOST, uriBuilder.Host); + } + else if (header.Equals(HEADER_CREATED)) + { + HttpSignatureHeader.Add(header.ToLower(), GetUnixTime(dateTime).ToString()); + } + else if (header.Equals(HEADER_DIGEST)) + { + HttpSignedRequestHeader.Add(HEADER_DIGEST, Digest); + HttpSignatureHeader.Add(header.ToLower(), Digest); + } + else + { + bool isHeaderFound = false; + foreach (var item in requestOptions.HeaderParameters) + { + if (string.Equals(item.Key, header, StringComparison.OrdinalIgnoreCase)) + { + HttpSignatureHeader.Add(header.ToLower(), item.Value.ToString()); + isHeaderFound = true; + break; + } + } + if (!isHeaderFound) + { + throw new Exception(string.Format("Cannot sign HTTP request.Request does not contain the {0} header.",header)); + } + } + + } + var headersKeysString = String.Join(" ", HttpSignatureHeader.Keys); + var headerValuesList = new List(); + + foreach (var keyVal in HttpSignatureHeader) + { + headerValuesList.Add(string.Format("{0}: {1}", keyVal.Key, keyVal.Value)); + + } + //Concatinate headers value separated by new line + var headerValuesString = string.Join("\n", headerValuesList); + var signatureStringHash = GetStringHash(HashAlgorithm.ToString(), headerValuesString); + string headerSignatureStr = null; + var keyType = GetKeyType(KeyFilePath); + + if (keyType == PrivateKeyType.RSA) + { + headerSignatureStr = GetRSASignature(signatureStringHash); + } + else if (keyType == PrivateKeyType.ECDSA) + { + headerSignatureStr = GetECDSASignature(signatureStringHash); + } + var cryptographicScheme = "hs2019"; + var authorizationHeaderValue = string.Format("Signature keyId=\"{0}\",algorithm=\"{1}\"", + KeyId, cryptographicScheme); + + if (HttpSignatureHeader.ContainsKey(HEADER_CREATED)) + { + authorizationHeaderValue += string.Format(",created={0}", HttpSignatureHeader[HEADER_CREATED]); + } + + if (HttpSignatureHeader.ContainsKey(HEADER_EXPIRES)) + { + authorizationHeaderValue += string.Format(",expires={0}", HttpSignatureHeader[HEADER_EXPIRES]); + } + + authorizationHeaderValue += string.Format(",headers=\"{0}\",signature=\"{1}\"", + headersKeysString, headerSignatureStr); + + HttpSignedRequestHeader.Add(HEADER_AUTHORIZATION, authorizationHeaderValue); + + return HttpSignedRequestHeader; + } + + private byte[] GetStringHash(string hashName, string stringToBeHashed) + { + var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName); + var bytes = Encoding.UTF8.GetBytes(stringToBeHashed); + var stringHash = hashAlgorithm.ComputeHash(bytes); + return stringHash; + } + + private int GetUnixTime(DateTime date2) + { + DateTime date1 = new DateTime(1970, 01, 01); + TimeSpan timeSpan = date2 - date1; + return (int)timeSpan.TotalSeconds; + } + + private string GetRSASignature(byte[] stringToSign) + { + RSA rsa = GetRSAProviderFromPemFile(KeyFilePath, KeyPassPhrase); + if (SigningAlgorithm == "RSASSA-PSS") + { + var signedbytes = rsa.SignHash(stringToSign, HashAlgorithm, RSASignaturePadding.Pss); + return Convert.ToBase64String(signedbytes); + } + else if (SigningAlgorithm == "PKCS1-v15") + { + var signedbytes = rsa.SignHash(stringToSign, HashAlgorithm, RSASignaturePadding.Pkcs1); + return Convert.ToBase64String(signedbytes); + } + return string.Empty; + } + + /// + /// Gets the ECDSA signature + /// + /// + /// + private string GetECDSASignature(byte[] dataToSign) + { + if (!File.Exists(KeyFilePath)) + { + throw new Exception("key file path does not exist."); + } + + var ecKeyHeader = "-----BEGIN EC PRIVATE KEY-----"; + var ecKeyFooter = "-----END EC PRIVATE KEY-----"; + var keyStr = File.ReadAllText(KeyFilePath); + var ecKeyBase64String = keyStr.Replace(ecKeyHeader, "").Replace(ecKeyFooter, "").Trim(); + var keyBytes = System.Convert.FromBase64String(ecKeyBase64String); + var ecdsa = ECDsa.Create(); + +#if (NETCOREAPP3_0 || NETCOREAPP3_1 || NET5_0) + var byteCount = 0; + if (KeyPassPhrase != null) + { + IntPtr unmanagedString = IntPtr.Zero; + try + { + // convert secure string to byte array + unmanagedString = Marshal.SecureStringToGlobalAllocUnicode(KeyPassPhrase); + ecdsa.ImportEncryptedPkcs8PrivateKey(Encoding.UTF8.GetBytes(Marshal.PtrToStringUni(unmanagedString)), keyBytes, out byteCount); + } + finally + { + if (unmanagedString != IntPtr.Zero) + { + Marshal.ZeroFreeBSTR(unmanagedString); + } + } + } + else + { + ecdsa.ImportPkcs8PrivateKey(keyBytes, out byteCount); + } + var signedBytes = ecdsa.SignHash(dataToSign); + var derBytes = ConvertToECDSAANS1Format(signedBytes); + var signedString = System.Convert.ToBase64String(derBytes); + + return signedString; +#else + throw new Exception("ECDSA signing is supported only on NETCOREAPP3_0 and above"); +#endif + + } + + private byte[] ConvertToECDSAANS1Format(byte[] signedBytes) + { + var derBytes = new List(); + byte derLength = 68; //default lenght for ECDSA code signinged bit 0x44 + byte rbytesLength = 32; //R length 0x20 + byte sbytesLength = 32; //S length 0x20 + var rBytes = new List(); + var sBytes = new List(); + for (int i = 0; i < 32; i++) + { + rBytes.Add(signedBytes[i]); + } + for (int i = 32; i < 64; i++) + { + sBytes.Add(signedBytes[i]); + } + + if (rBytes[0] > 0x7F) + { + derLength++; + rbytesLength++; + var tempBytes = new List(); + tempBytes.AddRange(rBytes); + rBytes.Clear(); + rBytes.Add(0x00); + rBytes.AddRange(tempBytes); + } + + if (sBytes[0] > 0x7F) + { + derLength++; + sbytesLength++; + var tempBytes = new List(); + tempBytes.AddRange(sBytes); + sBytes.Clear(); + sBytes.Add(0x00); + sBytes.AddRange(tempBytes); + + } + + derBytes.Add(48); //start of the sequence 0x30 + derBytes.Add(derLength); //total length r lenth, type and r bytes + + derBytes.Add(2); //tag for integer + derBytes.Add(rbytesLength); //length of r + derBytes.AddRange(rBytes); + + derBytes.Add(2); //tag for integer + derBytes.Add(sbytesLength); //length of s + derBytes.AddRange(sBytes); + return derBytes.ToArray(); + } + + private RSACryptoServiceProvider GetRSAProviderFromPemFile(String pemfile, SecureString keyPassPharse = null) + { + const String pempubheader = "-----BEGIN PUBLIC KEY-----"; + const String pempubfooter = "-----END PUBLIC KEY-----"; + bool isPrivateKeyFile = true; + byte[] pemkey = null; + + if (!File.Exists(pemfile)) + { + throw new Exception("private key file does not exist."); + } + string pemstr = File.ReadAllText(pemfile).Trim(); + + if (pemstr.StartsWith(pempubheader) && pemstr.EndsWith(pempubfooter)) + { + isPrivateKeyFile = false; + } + + if (isPrivateKeyFile) + { + pemkey = ConvertPrivateKeyToBytes(pemstr, keyPassPharse); + if (pemkey == null) + { + return null; + } + return DecodeRSAPrivateKey(pemkey); + } + return null; + } + + private byte[] ConvertPrivateKeyToBytes(String instr, SecureString keyPassPharse = null) + { + const String pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; + const String pemprivfooter = "-----END RSA PRIVATE KEY-----"; + String pemstr = instr.Trim(); + byte[] binkey; + + if (!pemstr.StartsWith(pemprivheader) || !pemstr.EndsWith(pemprivfooter)) + { + return null; + } + + StringBuilder sb = new StringBuilder(pemstr); + sb.Replace(pemprivheader, ""); + sb.Replace(pemprivfooter, ""); + String pvkstr = sb.ToString().Trim(); + + try + { // if there are no PEM encryption info lines, this is an UNencrypted PEM private key + binkey = Convert.FromBase64String(pvkstr); + return binkey; + } + catch (System.FormatException) + { + StringReader str = new StringReader(pvkstr); + + //-------- read PEM encryption info. lines and extract salt ----- + if (!str.ReadLine().StartsWith("Proc-Type: 4,ENCRYPTED")) + { + return null; + } + String saltline = str.ReadLine(); + if (!saltline.StartsWith("DEK-Info: DES-EDE3-CBC,")) + { + return null; + } + String saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); + byte[] salt = new byte[saltstr.Length / 2]; + for (int i = 0; i < salt.Length; i++) + salt[i] = Convert.ToByte(saltstr.Substring(i * 2, 2), 16); + if (!(str.ReadLine() == "")) + { + return null; + } + + //------ remaining b64 data is encrypted RSA key ---- + String encryptedstr = str.ReadToEnd(); + + try + { //should have b64 encrypted RSA key now + binkey = Convert.FromBase64String(encryptedstr); + } + catch (System.FormatException) + { //data is not in base64 fromat + return null; + } + + byte[] deskey = GetEncryptedKey(salt, keyPassPharse, 1, 2); // count=1 (for OpenSSL implementation); 2 iterations to get at least 24 bytes + if (deskey == null) + { + return null; + } + + //------ Decrypt the encrypted 3des-encrypted RSA private key ------ + byte[] rsakey = DecryptKey(binkey, deskey, salt); //OpenSSL uses salt value in PEM header also as 3DES IV + return rsakey; + } + } + + private RSACryptoServiceProvider DecodeRSAPrivateKey(byte[] privkey) + { + byte[] MODULUS, E, D, P, Q, DP, DQ, IQ; + + // --------- Set up stream to decode the asn.1 encoded RSA private key ------ + MemoryStream mem = new MemoryStream(privkey); + BinaryReader binr = new BinaryReader(mem); //wrap Memory Stream with BinaryReader for easy reading + byte bt = 0; + ushort twobytes = 0; + int elems = 0; + try + { + twobytes = binr.ReadUInt16(); + if (twobytes == 0x8130) //data read as little endian order (actual data order for Sequence is 30 81) + { + binr.ReadByte(); //advance 1 byte + } + else if (twobytes == 0x8230) + { + binr.ReadInt16(); //advance 2 bytes + } + else + { + return null; + } + + twobytes = binr.ReadUInt16(); + if (twobytes != 0x0102) //version number + { + return null; + } + bt = binr.ReadByte(); + if (bt != 0x00) + { + return null; + } + + //------ all private key components are Integer sequences ---- + elems = GetIntegerSize(binr); + MODULUS = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + E = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + D = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + P = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + Q = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + DP = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + DQ = binr.ReadBytes(elems); + + elems = GetIntegerSize(binr); + IQ = binr.ReadBytes(elems); + + // ------- create RSACryptoServiceProvider instance and initialize with public key ----- + RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); + RSAParameters RSAparams = new RSAParameters(); + RSAparams.Modulus = MODULUS; + RSAparams.Exponent = E; + RSAparams.D = D; + RSAparams.P = P; + RSAparams.Q = Q; + RSAparams.DP = DP; + RSAparams.DQ = DQ; + RSAparams.InverseQ = IQ; + RSA.ImportParameters(RSAparams); + return RSA; + } + catch (Exception) + { + return null; + } + finally + { + binr.Close(); + } + } + + private int GetIntegerSize(BinaryReader binr) + { + byte bt = 0; + byte lowbyte = 0x00; + byte highbyte = 0x00; + int count = 0; + bt = binr.ReadByte(); + if (bt != 0x02) //expect integer + { + return 0; + } + bt = binr.ReadByte(); + + if (bt == 0x81) + { + count = binr.ReadByte(); // data size in next byte + } + else if (bt == 0x82) + { + highbyte = binr.ReadByte(); // data size in next 2 bytes + lowbyte = binr.ReadByte(); + byte[] modint = { lowbyte, highbyte, 0x00, 0x00 }; + count = BitConverter.ToInt32(modint, 0); + } + else + { + count = bt; // we already have the data size + } + while (binr.ReadByte() == 0x00) + { + //remove high order zeros in data + count -= 1; + } + binr.BaseStream.Seek(-1, SeekOrigin.Current); + //last ReadByte wasn't a removed zero, so back up a byte + return count; + } + + private byte[] GetEncryptedKey(byte[] salt, SecureString secpswd, int count, int miter) + { + IntPtr unmanagedPswd = IntPtr.Zero; + int HASHLENGTH = 16; //MD5 bytes + byte[] keymaterial = new byte[HASHLENGTH * miter]; //to store contatenated Mi hashed results + + byte[] psbytes = new byte[secpswd.Length]; + unmanagedPswd = Marshal.SecureStringToGlobalAllocAnsi(secpswd); + Marshal.Copy(unmanagedPswd, psbytes, 0, psbytes.Length); + Marshal.ZeroFreeGlobalAllocAnsi(unmanagedPswd); + + // --- contatenate salt and pswd bytes into fixed data array --- + byte[] data00 = new byte[psbytes.Length + salt.Length]; + Array.Copy(psbytes, data00, psbytes.Length); //copy the pswd bytes + Array.Copy(salt, 0, data00, psbytes.Length, salt.Length); //concatenate the salt bytes + + // ---- do multi-hashing and contatenate results D1, D2 ... into keymaterial bytes ---- + MD5 md5 = new MD5CryptoServiceProvider(); + byte[] result = null; + byte[] hashtarget = new byte[HASHLENGTH + data00.Length]; //fixed length initial hashtarget + + for (int j = 0; j < miter; j++) + { + // ---- Now hash consecutively for count times ------ + if (j == 0) + { + result = data00; //initialize + } + else + { + Array.Copy(result, hashtarget, result.Length); + Array.Copy(data00, 0, hashtarget, result.Length, data00.Length); + result = hashtarget; + } + + for (int i = 0; i < count; i++) + result = md5.ComputeHash(result); + Array.Copy(result, 0, keymaterial, j * HASHLENGTH, result.Length); //contatenate to keymaterial + } + byte[] deskey = new byte[24]; + Array.Copy(keymaterial, deskey, deskey.Length); + + Array.Clear(psbytes, 0, psbytes.Length); + Array.Clear(data00, 0, data00.Length); + Array.Clear(result, 0, result.Length); + Array.Clear(hashtarget, 0, hashtarget.Length); + Array.Clear(keymaterial, 0, keymaterial.Length); + return deskey; + } + + private byte[] DecryptKey(byte[] cipherData, byte[] desKey, byte[] IV) + { + MemoryStream memst = new MemoryStream(); + TripleDES alg = TripleDES.Create(); + alg.Key = desKey; + alg.IV = IV; + try + { + CryptoStream cs = new CryptoStream(memst, alg.CreateDecryptor(), CryptoStreamMode.Write); + cs.Write(cipherData, 0, cipherData.Length); + cs.Close(); + } + catch (Exception) + { + return null; + } + byte[] decryptedData = memst.ToArray(); + return decryptedData; + } + + /// + /// Detect the key type from the pem file. + /// + /// key file path in pem format + /// + private PrivateKeyType GetKeyType(string keyFilePath) + { + if (!File.Exists(keyFilePath)) + { + throw new Exception("Key file path does not exist."); + } + + var ecPrivateKeyHeader = "BEGIN EC PRIVATE KEY"; + var ecPrivateKeyFooter = "END EC PRIVATE KEY"; + var rsaPrivateKeyHeader = "BEGIN RSA PRIVATE KEY"; + var rsaPrivateFooter = "END RSA PRIVATE KEY"; + //var pkcs8Header = "BEGIN PRIVATE KEY"; + //var pkcs8Footer = "END PRIVATE KEY"; + var keyType = PrivateKeyType.None; + var key = File.ReadAllLines(keyFilePath); + + if (key[0].ToString().Contains(rsaPrivateKeyHeader) && + key[key.Length - 1].ToString().Contains(rsaPrivateFooter)) + { + keyType = PrivateKeyType.RSA; + } + else if (key[0].ToString().Contains(ecPrivateKeyHeader) && + key[key.Length - 1].ToString().Contains(ecPrivateKeyFooter)) + { + keyType = PrivateKeyType.ECDSA; + } + else if (key[0].ToString().Contains(ecPrivateKeyHeader) && + key[key.Length - 1].ToString().Contains(ecPrivateKeyFooter)) + { + + /* this type of key can hold many type different types of private key, but here due lack of pem header + Considering this as EC key + */ + //TODO :- update the key based on oid + keyType = PrivateKeyType.ECDSA; + } + else + { + throw new Exception("Either the key is invalid or key is not supported"); + + } + return keyType; + } + #endregion + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IApiAccessor.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IApiAccessor.cs new file mode 100644 index 00000000000..59465ae8e90 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IApiAccessor.cs @@ -0,0 +1,37 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; + +namespace Org.OpenAPITools.Client +{ + /// + /// Represents configuration aspects required to interact with the API endpoints. + /// + public interface IApiAccessor + { + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + IReadableConfiguration Configuration { get; set; } + + /// + /// Gets the base path of the API client. + /// + /// The base path + String GetBasePath(); + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + ExceptionFactory ExceptionFactory { get; set; } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IAsynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IAsynchronousClient.cs new file mode 100644 index 00000000000..8a6f726678a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IAsynchronousClient.cs @@ -0,0 +1,100 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Threading.Tasks; + +namespace Org.OpenAPITools.Client +{ + /// + /// Contract for Asynchronous RESTful API interactions. + /// + /// This interface allows consumers to provide a custom API accessor client. + /// + public interface IAsynchronousClient + { + /// + /// Executes a non-blocking call to some using the GET http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> GetAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the POST http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> PostAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the PUT http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> PutAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the DELETE http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> DeleteAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the HEAD http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> HeadAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the OPTIONS http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> OptionsAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + + /// + /// Executes a non-blocking call to some using the PATCH http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// Cancellation Token to cancel the request. + /// The return type. + /// A task eventually representing the response data, decorated with + Task> PatchAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IReadableConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IReadableConfiguration.cs new file mode 100644 index 00000000000..141e65a5b72 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IReadableConfiguration.cs @@ -0,0 +1,120 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.Net; +using System.Security.Cryptography.X509Certificates; + +namespace Org.OpenAPITools.Client +{ + /// + /// Represents a readable-only configuration contract. + /// + public interface IReadableConfiguration + { + /// + /// Gets the access token. + /// + /// Access token. + string AccessToken { get; } + + /// + /// Gets the API key. + /// + /// API key. + IDictionary ApiKey { get; } + + /// + /// Gets the API key prefix. + /// + /// API key prefix. + IDictionary ApiKeyPrefix { get; } + + /// + /// Gets the base path. + /// + /// Base path. + string BasePath { get; } + + /// + /// Gets the date time format. + /// + /// Date time foramt. + string DateTimeFormat { get; } + + /// + /// Gets the default header. + /// + /// Default header. + [Obsolete("Use DefaultHeaders instead.")] + IDictionary DefaultHeader { get; } + + /// + /// Gets the default headers. + /// + /// Default headers. + IDictionary DefaultHeaders { get; } + + /// + /// Gets the temp folder path. + /// + /// Temp folder path. + string TempFolderPath { get; } + + /// + /// Gets the HTTP connection timeout (in milliseconds) + /// + /// HTTP connection timeout. + int Timeout { get; } + + /// + /// Gets the proxy. + /// + /// Proxy. + WebProxy Proxy { get; } + + /// + /// Gets the user agent. + /// + /// User agent. + string UserAgent { get; } + + /// + /// Gets the username. + /// + /// Username. + string Username { get; } + + /// + /// Gets the password. + /// + /// Password. + string Password { get; } + + /// + /// Gets the API key with prefix. + /// + /// API key identifier (authentication scheme). + /// API key with prefix. + string GetApiKeyWithPrefix(string apiKeyIdentifier); + + /// + /// Gets certificate collection to be sent with requests. + /// + /// X509 Certificate collection. + X509CertificateCollection ClientCertificates { get; } + + /// + /// Gets the HttpSigning configuration + /// + HttpSigningConfiguration HttpSigningConfiguration { get; } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ISynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ISynchronousClient.cs new file mode 100644 index 00000000000..d27f01a588b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ISynchronousClient.cs @@ -0,0 +1,93 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.IO; + +namespace Org.OpenAPITools.Client +{ + /// + /// Contract for Synchronous RESTful API interactions. + /// + /// This interface allows consumers to provide a custom API accessor client. + /// + public interface ISynchronousClient + { + /// + /// Executes a blocking call to some using the GET http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Get(String path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the POST http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Post(String path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the PUT http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Put(String path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the DELETE http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Delete(String path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the HEAD http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Head(String path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the OPTIONS http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Options(String path, RequestOptions options, IReadableConfiguration configuration = null); + + /// + /// Executes a blocking call to some using the PATCH http verb. + /// + /// The relative path to invoke. + /// The request parameters to pass along to the client. + /// Per-request configurable settings. + /// The return type. + /// The response data, decorated with + ApiResponse Patch(String path, RequestOptions options, IReadableConfiguration configuration = null); + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/Multimap.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/Multimap.cs new file mode 100644 index 00000000000..738a64c570b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/Multimap.cs @@ -0,0 +1,295 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Org.OpenAPITools.Client +{ + /// + /// A dictionary in which one key has many associated values. + /// + /// The type of the key + /// The type of the value associated with the key. + public class Multimap : IDictionary> + { + #region Private Fields + + private readonly Dictionary> _dictionary; + + #endregion Private Fields + + #region Constructors + + /// + /// Empty Constructor. + /// + public Multimap() + { + _dictionary = new Dictionary>(); + } + + /// + /// Constructor with comparer. + /// + /// + public Multimap(IEqualityComparer comparer) + { + _dictionary = new Dictionary>(comparer); + } + + #endregion Constructors + + #region Enumerators + + /// + /// To get the enumerator. + /// + /// Enumerator + public IEnumerator>> GetEnumerator() + { + return _dictionary.GetEnumerator(); + } + + /// + /// To get the enumerator. + /// + /// Enumerator + IEnumerator IEnumerable.GetEnumerator() + { + return _dictionary.GetEnumerator(); + } + + #endregion Enumerators + + #region Public Members + /// + /// Add values to Multimap + /// + /// Key value pair + public void Add(KeyValuePair> item) + { + if (!TryAdd(item.Key, item.Value)) + throw new InvalidOperationException("Could not add values to Multimap."); + } + + /// + /// Add Multimap to Multimap + /// + /// Multimap + public void Add(Multimap multimap) + { + foreach (var item in multimap) + { + if (!TryAdd(item.Key, item.Value)) + throw new InvalidOperationException("Could not add values to Multimap."); + } + } + + /// + /// Clear Multimap + /// + public void Clear() + { + _dictionary.Clear(); + } + + /// + /// Determines whether Multimap contains the specified item. + /// + /// Key value pair + /// Method needs to be implemented + /// true if the Multimap contains the item; otherwise, false. + public bool Contains(KeyValuePair> item) + { + throw new NotImplementedException(); + } + + /// + /// Copy items of the Multimap to an array, + /// starting at a particular array index. + /// + /// The array that is the destination of the items copied + /// from Multimap. The array must have zero-based indexing. + /// The zero-based index in array at which copying begins. + /// Method needs to be implemented + public void CopyTo(KeyValuePair>[] array, int arrayIndex) + { + throw new NotImplementedException(); + } + + /// + /// Removes the specified item from the Multimap. + /// + /// Key value pair + /// true if the item is successfully removed; otherwise, false. + /// Method needs to be implemented + public bool Remove(KeyValuePair> item) + { + throw new NotImplementedException(); + } + + /// + /// Gets the number of items contained in the Multimap. + /// + public int Count => _dictionary.Count; + + /// + /// Gets a value indicating whether the Multimap is read-only. + /// + public bool IsReadOnly => false; + + /// + /// Adds an item with the provided key and value to the Multimap. + /// + /// The object to use as the key of the item to add. + /// The object to use as the value of the item to add. + /// Thrown when couldn't add the value to Multimap. + public void Add(TKey key, IList value) + { + if (value != null && value.Count > 0) + { + if (_dictionary.TryGetValue(key, out var list)) + { + foreach (var k in value) list.Add(k); + } + else + { + list = new List(value); + if (!TryAdd(key, list)) + throw new InvalidOperationException("Could not add values to Multimap."); + } + } + } + + /// + /// Determines whether the Multimap contains an item with the specified key. + /// + /// The key to locate in the Multimap. + /// true if the Multimap contains an item with + /// the key; otherwise, false. + public bool ContainsKey(TKey key) + { + return _dictionary.ContainsKey(key); + } + + /// + /// Removes item with the specified key from the Multimap. + /// + /// The key to locate in the Multimap. + /// true if the item is successfully removed; otherwise, false. + public bool Remove(TKey key) + { + return TryRemove(key, out var _); + } + + /// + /// Gets the value associated with the specified key. + /// + /// The key whose value to get. + /// When this method returns, the value associated with the specified key, if the + /// key is found; otherwise, the default value for the type of the value parameter. + /// This parameter is passed uninitialized. + /// true if the object that implements Multimap contains + /// an item with the specified key; otherwise, false. + public bool TryGetValue(TKey key, out IList value) + { + return _dictionary.TryGetValue(key, out value); + } + + /// + /// Gets or sets the item with the specified key. + /// + /// The key of the item to get or set. + /// The value of the specified key. + public IList this[TKey key] + { + get => _dictionary[key]; + set => _dictionary[key] = value; + } + + /// + /// Gets a System.Collections.Generic.ICollection containing the keys of the Multimap. + /// + public ICollection Keys => _dictionary.Keys; + + /// + /// Gets a System.Collections.Generic.ICollection containing the values of the Multimap. + /// + public ICollection> Values => _dictionary.Values; + + /// + /// Copy the items of the Multimap to an System.Array, + /// starting at a particular System.Array index. + /// + /// The one-dimensional System.Array that is the destination of the items copied + /// from Multimap. The System.Array must have zero-based indexing. + /// The zero-based index in array at which copying begins. + public void CopyTo(Array array, int index) + { + ((ICollection)_dictionary).CopyTo(array, index); + } + + /// + /// Adds an item with the provided key and value to the Multimap. + /// + /// The object to use as the key of the item to add. + /// The object to use as the value of the item to add. + /// Thrown when couldn't add value to Multimap. + public void Add(TKey key, TValue value) + { + if (value != null) + { + if (_dictionary.TryGetValue(key, out var list)) + { + list.Add(value); + } + else + { + list = new List { value }; + if (!TryAdd(key, list)) + throw new InvalidOperationException("Could not add value to Multimap."); + } + } + } + + #endregion Public Members + + #region Private Members + + /** + * Helper method to encapsulate generator differences between dictionary types. + */ + private bool TryRemove(TKey key, out IList value) + { + _dictionary.TryGetValue(key, out value); + return _dictionary.Remove(key); + } + + /** + * Helper method to encapsulate generator differences between dictionary types. + */ + private bool TryAdd(TKey key, IList value) + { + try + { + _dictionary.Add(key, value); + } + catch (ArgumentException) + { + return false; + } + + return true; + } + #endregion Private Members + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs new file mode 100644 index 00000000000..a5253e58201 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs @@ -0,0 +1,29 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + +using Newtonsoft.Json.Converters; + +namespace Org.OpenAPITools.Client +{ + /// + /// Formatter for 'date' openapi formats ss defined by full-date - RFC3339 + /// see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#data-types + /// + public class OpenAPIDateConverter : IsoDateTimeConverter + { + /// + /// Initializes a new instance of the class. + /// + public OpenAPIDateConverter() + { + // full-date = date-fullyear "-" date-month "-" date-mday + DateTimeFormat = "yyyy-MM-dd"; + } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/RequestOptions.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/RequestOptions.cs new file mode 100644 index 00000000000..d8da585db9c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/RequestOptions.cs @@ -0,0 +1,74 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; + +namespace Org.OpenAPITools.Client +{ + /// + /// A container for generalized request inputs. This type allows consumers to extend the request functionality + /// by abstracting away from the default (built-in) request framework (e.g. RestSharp). + /// + public class RequestOptions + { + /// + /// Parameters to be bound to path parts of the Request's URL + /// + public Dictionary PathParameters { get; set; } + + /// + /// Query parameters to be applied to the request. + /// Keys may have 1 or more values associated. + /// + public Multimap QueryParameters { get; set; } + + /// + /// Header parameters to be applied to to the request. + /// Keys may have 1 or more values associated. + /// + public Multimap HeaderParameters { get; set; } + + /// + /// Form parameters to be sent along with the request. + /// + public Dictionary FormParameters { get; set; } + + /// + /// File parameters to be sent along with the request. + /// + public Dictionary FileParameters { get; set; } + + /// + /// Cookies to be sent along with the request. + /// + public List Cookies { get; set; } + + /// + /// Any data associated with a request body. + /// + public Object Data { get; set; } + + /// + /// Constructs a new instance of + /// + public RequestOptions() + { + PathParameters = new Dictionary(); + QueryParameters = new Multimap(); + HeaderParameters = new Multimap(); + FormParameters = new Dictionary(); + FileParameters = new Dictionary(); + Cookies = new List(); + } + } +} \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/RetryConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/RetryConfiguration.cs new file mode 100644 index 00000000000..c93633a36d9 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/RetryConfiguration.cs @@ -0,0 +1,21 @@ +using Polly; +using RestSharp; + +namespace Org.OpenAPITools.Client +{ + /// + /// Configuration class to set the polly retry policies to be applied to the requests. + /// + public class RetryConfiguration + { + /// + /// Retry policy + /// + public static Policy RetryPolicy { get; set; } + + /// + /// Async retry policy + /// + public static AsyncPolicy AsyncRetryPolicy { get; set; } + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs new file mode 100644 index 00000000000..b3fc4c3c7a3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AbstractOpenAPISchema.cs @@ -0,0 +1,76 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; + +namespace Org.OpenAPITools.Model +{ + /// + /// Abstract base class for oneOf, anyOf schemas in the OpenAPI specification + /// + public abstract partial class AbstractOpenAPISchema + { + /// + /// Custom JSON serializer + /// + static public readonly JsonSerializerSettings SerializerSettings = new JsonSerializerSettings + { + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + MissingMemberHandling = MissingMemberHandling.Error, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } + }; + + /// + /// Custom JSON serializer for objects with additional properties + /// + static public readonly JsonSerializerSettings AdditionalPropertiesSerializerSettings = new JsonSerializerSettings + { + // OpenAPI generated types generally hide default constructors. + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + MissingMemberHandling = MissingMemberHandling.Ignore, + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy + { + OverrideSpecifiedNames = false + } + } + }; + + /// + /// Gets or Sets the actual instance + /// + public abstract Object ActualInstance { get; set; } + + /// + /// Gets or Sets IsNullable to indicate whether the instance is nullable + /// + public bool IsNullable { get; protected set; } + + /// + /// Gets or Sets the schema type, which can be either `oneOf` or `anyOf` + /// + public string SchemaType { get; protected set; } + + /// + /// Converts the instance into JSON string. + /// + public abstract string ToJson(); + } +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs new file mode 100644 index 00000000000..8a3ae3533a0 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs @@ -0,0 +1,350 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// AdditionalPropertiesClass + /// + [DataContract(Name = "AdditionalPropertiesClass")] + public partial class AdditionalPropertiesClass : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// mapProperty. + /// mapOfMapProperty. + /// anytype1. + /// mapWithUndeclaredPropertiesAnytype1. + /// mapWithUndeclaredPropertiesAnytype2. + /// mapWithUndeclaredPropertiesAnytype3. + /// an object with no declared properties and no undeclared properties, hence it's an empty map.. + /// mapWithUndeclaredPropertiesString. + public AdditionalPropertiesClass(Dictionary mapProperty = default(Dictionary), Dictionary> mapOfMapProperty = default(Dictionary>), Object anytype1 = default(Object), Object mapWithUndeclaredPropertiesAnytype1 = default(Object), Object mapWithUndeclaredPropertiesAnytype2 = default(Object), Dictionary mapWithUndeclaredPropertiesAnytype3 = default(Dictionary), Object emptyMap = default(Object), Dictionary mapWithUndeclaredPropertiesString = default(Dictionary)) + { + this._MapProperty = mapProperty; + this._MapOfMapProperty = mapOfMapProperty; + this._Anytype1 = anytype1; + this._MapWithUndeclaredPropertiesAnytype1 = mapWithUndeclaredPropertiesAnytype1; + this._MapWithUndeclaredPropertiesAnytype2 = mapWithUndeclaredPropertiesAnytype2; + this._MapWithUndeclaredPropertiesAnytype3 = mapWithUndeclaredPropertiesAnytype3; + this._EmptyMap = emptyMap; + this._MapWithUndeclaredPropertiesString = mapWithUndeclaredPropertiesString; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets MapProperty + /// + [DataMember(Name = "map_property", EmitDefaultValue = false)] + public Dictionary MapProperty + { + get{ return _MapProperty;} + set + { + _MapProperty = value; + _flagMapProperty = true; + } + } + private Dictionary _MapProperty; + private bool _flagMapProperty; + + /// + /// Returns false as MapProperty should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMapProperty() + { + return _flagMapProperty; + } + /// + /// Gets or Sets MapOfMapProperty + /// + [DataMember(Name = "map_of_map_property", EmitDefaultValue = false)] + public Dictionary> MapOfMapProperty + { + get{ return _MapOfMapProperty;} + set + { + _MapOfMapProperty = value; + _flagMapOfMapProperty = true; + } + } + private Dictionary> _MapOfMapProperty; + private bool _flagMapOfMapProperty; + + /// + /// Returns false as MapOfMapProperty should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMapOfMapProperty() + { + return _flagMapOfMapProperty; + } + /// + /// Gets or Sets Anytype1 + /// + [DataMember(Name = "anytype_1", EmitDefaultValue = true)] + public Object Anytype1 + { + get{ return _Anytype1;} + set + { + _Anytype1 = value; + _flagAnytype1 = true; + } + } + private Object _Anytype1; + private bool _flagAnytype1; + + /// + /// Returns false as Anytype1 should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeAnytype1() + { + return _flagAnytype1; + } + /// + /// Gets or Sets MapWithUndeclaredPropertiesAnytype1 + /// + [DataMember(Name = "map_with_undeclared_properties_anytype_1", EmitDefaultValue = false)] + public Object MapWithUndeclaredPropertiesAnytype1 + { + get{ return _MapWithUndeclaredPropertiesAnytype1;} + set + { + _MapWithUndeclaredPropertiesAnytype1 = value; + _flagMapWithUndeclaredPropertiesAnytype1 = true; + } + } + private Object _MapWithUndeclaredPropertiesAnytype1; + private bool _flagMapWithUndeclaredPropertiesAnytype1; + + /// + /// Returns false as MapWithUndeclaredPropertiesAnytype1 should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMapWithUndeclaredPropertiesAnytype1() + { + return _flagMapWithUndeclaredPropertiesAnytype1; + } + /// + /// Gets or Sets MapWithUndeclaredPropertiesAnytype2 + /// + [DataMember(Name = "map_with_undeclared_properties_anytype_2", EmitDefaultValue = false)] + public Object MapWithUndeclaredPropertiesAnytype2 + { + get{ return _MapWithUndeclaredPropertiesAnytype2;} + set + { + _MapWithUndeclaredPropertiesAnytype2 = value; + _flagMapWithUndeclaredPropertiesAnytype2 = true; + } + } + private Object _MapWithUndeclaredPropertiesAnytype2; + private bool _flagMapWithUndeclaredPropertiesAnytype2; + + /// + /// Returns false as MapWithUndeclaredPropertiesAnytype2 should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMapWithUndeclaredPropertiesAnytype2() + { + return _flagMapWithUndeclaredPropertiesAnytype2; + } + /// + /// Gets or Sets MapWithUndeclaredPropertiesAnytype3 + /// + [DataMember(Name = "map_with_undeclared_properties_anytype_3", EmitDefaultValue = false)] + public Dictionary MapWithUndeclaredPropertiesAnytype3 + { + get{ return _MapWithUndeclaredPropertiesAnytype3;} + set + { + _MapWithUndeclaredPropertiesAnytype3 = value; + _flagMapWithUndeclaredPropertiesAnytype3 = true; + } + } + private Dictionary _MapWithUndeclaredPropertiesAnytype3; + private bool _flagMapWithUndeclaredPropertiesAnytype3; + + /// + /// Returns false as MapWithUndeclaredPropertiesAnytype3 should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMapWithUndeclaredPropertiesAnytype3() + { + return _flagMapWithUndeclaredPropertiesAnytype3; + } + /// + /// an object with no declared properties and no undeclared properties, hence it's an empty map. + /// + /// an object with no declared properties and no undeclared properties, hence it's an empty map. + [DataMember(Name = "empty_map", EmitDefaultValue = false)] + public Object EmptyMap + { + get{ return _EmptyMap;} + set + { + _EmptyMap = value; + _flagEmptyMap = true; + } + } + private Object _EmptyMap; + private bool _flagEmptyMap; + + /// + /// Returns false as EmptyMap should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeEmptyMap() + { + return _flagEmptyMap; + } + /// + /// Gets or Sets MapWithUndeclaredPropertiesString + /// + [DataMember(Name = "map_with_undeclared_properties_string", EmitDefaultValue = false)] + public Dictionary MapWithUndeclaredPropertiesString + { + get{ return _MapWithUndeclaredPropertiesString;} + set + { + _MapWithUndeclaredPropertiesString = value; + _flagMapWithUndeclaredPropertiesString = true; + } + } + private Dictionary _MapWithUndeclaredPropertiesString; + private bool _flagMapWithUndeclaredPropertiesString; + + /// + /// Returns false as MapWithUndeclaredPropertiesString should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMapWithUndeclaredPropertiesString() + { + return _flagMapWithUndeclaredPropertiesString; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class AdditionalPropertiesClass {\n"); + sb.Append(" MapProperty: ").Append(MapProperty).Append("\n"); + sb.Append(" MapOfMapProperty: ").Append(MapOfMapProperty).Append("\n"); + sb.Append(" Anytype1: ").Append(Anytype1).Append("\n"); + sb.Append(" MapWithUndeclaredPropertiesAnytype1: ").Append(MapWithUndeclaredPropertiesAnytype1).Append("\n"); + sb.Append(" MapWithUndeclaredPropertiesAnytype2: ").Append(MapWithUndeclaredPropertiesAnytype2).Append("\n"); + sb.Append(" MapWithUndeclaredPropertiesAnytype3: ").Append(MapWithUndeclaredPropertiesAnytype3).Append("\n"); + sb.Append(" EmptyMap: ").Append(EmptyMap).Append("\n"); + sb.Append(" MapWithUndeclaredPropertiesString: ").Append(MapWithUndeclaredPropertiesString).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as AdditionalPropertiesClass).AreEqual; + } + + /// + /// Returns true if AdditionalPropertiesClass instances are equal + /// + /// Instance of AdditionalPropertiesClass to be compared + /// Boolean + public bool Equals(AdditionalPropertiesClass input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.MapProperty != null) + hashCode = hashCode * 59 + this.MapProperty.GetHashCode(); + if (this.MapOfMapProperty != null) + hashCode = hashCode * 59 + this.MapOfMapProperty.GetHashCode(); + if (this.Anytype1 != null) + hashCode = hashCode * 59 + this.Anytype1.GetHashCode(); + if (this.MapWithUndeclaredPropertiesAnytype1 != null) + hashCode = hashCode * 59 + this.MapWithUndeclaredPropertiesAnytype1.GetHashCode(); + if (this.MapWithUndeclaredPropertiesAnytype2 != null) + hashCode = hashCode * 59 + this.MapWithUndeclaredPropertiesAnytype2.GetHashCode(); + if (this.MapWithUndeclaredPropertiesAnytype3 != null) + hashCode = hashCode * 59 + this.MapWithUndeclaredPropertiesAnytype3.GetHashCode(); + if (this.EmptyMap != null) + hashCode = hashCode * 59 + this.EmptyMap.GetHashCode(); + if (this.MapWithUndeclaredPropertiesString != null) + hashCode = hashCode * 59 + this.MapWithUndeclaredPropertiesString.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Animal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Animal.cs new file mode 100644 index 00000000000..9e554565830 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Animal.cs @@ -0,0 +1,199 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Animal + /// + [DataContract(Name = "Animal")] + [JsonConverter(typeof(JsonSubtypes), "ClassName")] + [JsonSubtypes.KnownSubType(typeof(Cat), "Cat")] + [JsonSubtypes.KnownSubType(typeof(Dog), "Dog")] + public partial class Animal : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Animal() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// className (required). + /// color (default to "red"). + public Animal(string className = default(string), string color = "red") + { + // to ensure "className" is required (not null) + this._ClassName = className ?? throw new ArgumentNullException("className is a required property for Animal and cannot be null"); + // use default value if no "color" provided + this.Color = color ?? "red"; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ClassName + /// + [DataMember(Name = "className", IsRequired = true, EmitDefaultValue = false)] + public string ClassName + { + get{ return _ClassName;} + set + { + _ClassName = value; + _flagClassName = true; + } + } + private string _ClassName; + private bool _flagClassName; + + /// + /// Returns false as ClassName should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeClassName() + { + return _flagClassName; + } + /// + /// Gets or Sets Color + /// + [DataMember(Name = "color", EmitDefaultValue = false)] + public string Color + { + get{ return _Color;} + set + { + _Color = value; + _flagColor = true; + } + } + private string _Color; + private bool _flagColor; + + /// + /// Returns false as Color should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeColor() + { + return _flagColor; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Animal {\n"); + sb.Append(" ClassName: ").Append(ClassName).Append("\n"); + sb.Append(" Color: ").Append(Color).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Animal).AreEqual; + } + + /// + /// Returns true if Animal instances are equal + /// + /// Instance of Animal to be compared + /// Boolean + public bool Equals(Animal input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ClassName != null) + hashCode = hashCode * 59 + this.ClassName.GetHashCode(); + if (this.Color != null) + hashCode = hashCode * 59 + this.Color.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ApiResponse.cs new file mode 100644 index 00000000000..7e4ec34e624 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ApiResponse.cs @@ -0,0 +1,203 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ApiResponse + /// + [DataContract(Name = "ApiResponse")] + public partial class ApiResponse : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// code. + /// type. + /// message. + public ApiResponse(int code = default(int), string type = default(string), string message = default(string)) + { + this._Code = code; + this._Type = type; + this._Message = message; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Code + /// + [DataMember(Name = "code", EmitDefaultValue = false)] + public int Code + { + get{ return _Code;} + set + { + _Code = value; + _flagCode = true; + } + } + private int _Code; + private bool _flagCode; + + /// + /// Returns false as Code should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeCode() + { + return _flagCode; + } + /// + /// Gets or Sets Type + /// + [DataMember(Name = "type", EmitDefaultValue = false)] + public string Type + { + get{ return _Type;} + set + { + _Type = value; + _flagType = true; + } + } + private string _Type; + private bool _flagType; + + /// + /// Returns false as Type should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeType() + { + return _flagType; + } + /// + /// Gets or Sets Message + /// + [DataMember(Name = "message", EmitDefaultValue = false)] + public string Message + { + get{ return _Message;} + set + { + _Message = value; + _flagMessage = true; + } + } + private string _Message; + private bool _flagMessage; + + /// + /// Returns false as Message should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMessage() + { + return _flagMessage; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ApiResponse {\n"); + sb.Append(" Code: ").Append(Code).Append("\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" Message: ").Append(Message).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ApiResponse).AreEqual; + } + + /// + /// Returns true if ApiResponse instances are equal + /// + /// Instance of ApiResponse to be compared + /// Boolean + public bool Equals(ApiResponse input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Code.GetHashCode(); + if (this.Type != null) + hashCode = hashCode * 59 + this.Type.GetHashCode(); + if (this.Message != null) + hashCode = hashCode * 59 + this.Message.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Apple.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Apple.cs new file mode 100644 index 00000000000..1ffbb0c0951 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Apple.cs @@ -0,0 +1,189 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Apple + /// + [DataContract(Name = "apple")] + public partial class Apple : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// cultivar. + /// origin. + public Apple(string cultivar = default(string), string origin = default(string)) + { + this._Cultivar = cultivar; + this._Origin = origin; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Cultivar + /// + [DataMember(Name = "cultivar", EmitDefaultValue = false)] + public string Cultivar + { + get{ return _Cultivar;} + set + { + _Cultivar = value; + _flagCultivar = true; + } + } + private string _Cultivar; + private bool _flagCultivar; + + /// + /// Returns false as Cultivar should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeCultivar() + { + return _flagCultivar; + } + /// + /// Gets or Sets Origin + /// + [DataMember(Name = "origin", EmitDefaultValue = false)] + public string Origin + { + get{ return _Origin;} + set + { + _Origin = value; + _flagOrigin = true; + } + } + private string _Origin; + private bool _flagOrigin; + + /// + /// Returns false as Origin should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeOrigin() + { + return _flagOrigin; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Apple {\n"); + sb.Append(" Cultivar: ").Append(Cultivar).Append("\n"); + sb.Append(" Origin: ").Append(Origin).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Apple).AreEqual; + } + + /// + /// Returns true if Apple instances are equal + /// + /// Instance of Apple to be compared + /// Boolean + public bool Equals(Apple input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Cultivar != null) + hashCode = hashCode * 59 + this.Cultivar.GetHashCode(); + if (this.Origin != null) + hashCode = hashCode * 59 + this.Origin.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + // Cultivar (string) pattern + Regex regexCultivar = new Regex(@"^[a-zA-Z\\s]*$", RegexOptions.CultureInvariant); + if (false == regexCultivar.Match(this.Cultivar).Success) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Cultivar, must match a pattern of " + regexCultivar, new [] { "Cultivar" }); + } + + // Origin (string) pattern + Regex regexOrigin = new Regex(@"^[A-Z\\s]*$", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase); + if (false == regexOrigin.Match(this.Origin).Success) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Origin, must match a pattern of " + regexOrigin, new [] { "Origin" }); + } + + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AppleReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AppleReq.cs new file mode 100644 index 00000000000..f0fc8d536b0 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AppleReq.cs @@ -0,0 +1,170 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// AppleReq + /// + [DataContract(Name = "appleReq")] + public partial class AppleReq : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected AppleReq() { } + /// + /// Initializes a new instance of the class. + /// + /// cultivar (required). + /// mealy. + public AppleReq(string cultivar = default(string), bool mealy = default(bool)) + { + // to ensure "cultivar" is required (not null) + this._Cultivar = cultivar ?? throw new ArgumentNullException("cultivar is a required property for AppleReq and cannot be null"); + this._Mealy = mealy; + } + + /// + /// Gets or Sets Cultivar + /// + [DataMember(Name = "cultivar", IsRequired = true, EmitDefaultValue = false)] + public string Cultivar + { + get{ return _Cultivar;} + set + { + _Cultivar = value; + _flagCultivar = true; + } + } + private string _Cultivar; + private bool _flagCultivar; + + /// + /// Returns false as Cultivar should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeCultivar() + { + return _flagCultivar; + } + /// + /// Gets or Sets Mealy + /// + [DataMember(Name = "mealy", EmitDefaultValue = true)] + public bool Mealy + { + get{ return _Mealy;} + set + { + _Mealy = value; + _flagMealy = true; + } + } + private bool _Mealy; + private bool _flagMealy; + + /// + /// Returns false as Mealy should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMealy() + { + return _flagMealy; + } + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class AppleReq {\n"); + sb.Append(" Cultivar: ").Append(Cultivar).Append("\n"); + sb.Append(" Mealy: ").Append(Mealy).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as AppleReq).AreEqual; + } + + /// + /// Returns true if AppleReq instances are equal + /// + /// Instance of AppleReq to be compared + /// Boolean + public bool Equals(AppleReq input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Cultivar != null) + hashCode = hashCode * 59 + this.Cultivar.GetHashCode(); + hashCode = hashCode * 59 + this.Mealy.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs new file mode 100644 index 00000000000..99d5a446460 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs @@ -0,0 +1,146 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ArrayOfArrayOfNumberOnly + /// + [DataContract(Name = "ArrayOfArrayOfNumberOnly")] + public partial class ArrayOfArrayOfNumberOnly : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// arrayArrayNumber. + public ArrayOfArrayOfNumberOnly(List> arrayArrayNumber = default(List>)) + { + this._ArrayArrayNumber = arrayArrayNumber; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ArrayArrayNumber + /// + [DataMember(Name = "ArrayArrayNumber", EmitDefaultValue = false)] + public List> ArrayArrayNumber + { + get{ return _ArrayArrayNumber;} + set + { + _ArrayArrayNumber = value; + _flagArrayArrayNumber = true; + } + } + private List> _ArrayArrayNumber; + private bool _flagArrayArrayNumber; + + /// + /// Returns false as ArrayArrayNumber should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeArrayArrayNumber() + { + return _flagArrayArrayNumber; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ArrayOfArrayOfNumberOnly {\n"); + sb.Append(" ArrayArrayNumber: ").Append(ArrayArrayNumber).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ArrayOfArrayOfNumberOnly).AreEqual; + } + + /// + /// Returns true if ArrayOfArrayOfNumberOnly instances are equal + /// + /// Instance of ArrayOfArrayOfNumberOnly to be compared + /// Boolean + public bool Equals(ArrayOfArrayOfNumberOnly input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ArrayArrayNumber != null) + hashCode = hashCode * 59 + this.ArrayArrayNumber.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs new file mode 100644 index 00000000000..7aa2e525878 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs @@ -0,0 +1,146 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ArrayOfNumberOnly + /// + [DataContract(Name = "ArrayOfNumberOnly")] + public partial class ArrayOfNumberOnly : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// arrayNumber. + public ArrayOfNumberOnly(List arrayNumber = default(List)) + { + this._ArrayNumber = arrayNumber; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ArrayNumber + /// + [DataMember(Name = "ArrayNumber", EmitDefaultValue = false)] + public List ArrayNumber + { + get{ return _ArrayNumber;} + set + { + _ArrayNumber = value; + _flagArrayNumber = true; + } + } + private List _ArrayNumber; + private bool _flagArrayNumber; + + /// + /// Returns false as ArrayNumber should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeArrayNumber() + { + return _flagArrayNumber; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ArrayOfNumberOnly {\n"); + sb.Append(" ArrayNumber: ").Append(ArrayNumber).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ArrayOfNumberOnly).AreEqual; + } + + /// + /// Returns true if ArrayOfNumberOnly instances are equal + /// + /// Instance of ArrayOfNumberOnly to be compared + /// Boolean + public bool Equals(ArrayOfNumberOnly input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ArrayNumber != null) + hashCode = hashCode * 59 + this.ArrayNumber.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayTest.cs new file mode 100644 index 00000000000..a35053405f3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayTest.cs @@ -0,0 +1,204 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ArrayTest + /// + [DataContract(Name = "ArrayTest")] + public partial class ArrayTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// arrayOfString. + /// arrayArrayOfInteger. + /// arrayArrayOfModel. + public ArrayTest(List arrayOfString = default(List), List> arrayArrayOfInteger = default(List>), List> arrayArrayOfModel = default(List>)) + { + this._ArrayOfString = arrayOfString; + this._ArrayArrayOfInteger = arrayArrayOfInteger; + this._ArrayArrayOfModel = arrayArrayOfModel; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ArrayOfString + /// + [DataMember(Name = "array_of_string", EmitDefaultValue = false)] + public List ArrayOfString + { + get{ return _ArrayOfString;} + set + { + _ArrayOfString = value; + _flagArrayOfString = true; + } + } + private List _ArrayOfString; + private bool _flagArrayOfString; + + /// + /// Returns false as ArrayOfString should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeArrayOfString() + { + return _flagArrayOfString; + } + /// + /// Gets or Sets ArrayArrayOfInteger + /// + [DataMember(Name = "array_array_of_integer", EmitDefaultValue = false)] + public List> ArrayArrayOfInteger + { + get{ return _ArrayArrayOfInteger;} + set + { + _ArrayArrayOfInteger = value; + _flagArrayArrayOfInteger = true; + } + } + private List> _ArrayArrayOfInteger; + private bool _flagArrayArrayOfInteger; + + /// + /// Returns false as ArrayArrayOfInteger should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeArrayArrayOfInteger() + { + return _flagArrayArrayOfInteger; + } + /// + /// Gets or Sets ArrayArrayOfModel + /// + [DataMember(Name = "array_array_of_model", EmitDefaultValue = false)] + public List> ArrayArrayOfModel + { + get{ return _ArrayArrayOfModel;} + set + { + _ArrayArrayOfModel = value; + _flagArrayArrayOfModel = true; + } + } + private List> _ArrayArrayOfModel; + private bool _flagArrayArrayOfModel; + + /// + /// Returns false as ArrayArrayOfModel should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeArrayArrayOfModel() + { + return _flagArrayArrayOfModel; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ArrayTest {\n"); + sb.Append(" ArrayOfString: ").Append(ArrayOfString).Append("\n"); + sb.Append(" ArrayArrayOfInteger: ").Append(ArrayArrayOfInteger).Append("\n"); + sb.Append(" ArrayArrayOfModel: ").Append(ArrayArrayOfModel).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ArrayTest).AreEqual; + } + + /// + /// Returns true if ArrayTest instances are equal + /// + /// Instance of ArrayTest to be compared + /// Boolean + public bool Equals(ArrayTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ArrayOfString != null) + hashCode = hashCode * 59 + this.ArrayOfString.GetHashCode(); + if (this.ArrayArrayOfInteger != null) + hashCode = hashCode * 59 + this.ArrayArrayOfInteger.GetHashCode(); + if (this.ArrayArrayOfModel != null) + hashCode = hashCode * 59 + this.ArrayArrayOfModel.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Banana.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Banana.cs new file mode 100644 index 00000000000..74fce16d819 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Banana.cs @@ -0,0 +1,145 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Banana + /// + [DataContract(Name = "banana")] + public partial class Banana : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// lengthCm. + public Banana(decimal lengthCm = default(decimal)) + { + this._LengthCm = lengthCm; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets LengthCm + /// + [DataMember(Name = "lengthCm", EmitDefaultValue = false)] + public decimal LengthCm + { + get{ return _LengthCm;} + set + { + _LengthCm = value; + _flagLengthCm = true; + } + } + private decimal _LengthCm; + private bool _flagLengthCm; + + /// + /// Returns false as LengthCm should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeLengthCm() + { + return _flagLengthCm; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Banana {\n"); + sb.Append(" LengthCm: ").Append(LengthCm).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Banana).AreEqual; + } + + /// + /// Returns true if Banana instances are equal + /// + /// Instance of Banana to be compared + /// Boolean + public bool Equals(Banana input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.LengthCm.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BananaReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BananaReq.cs new file mode 100644 index 00000000000..82e049f2eab --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BananaReq.cs @@ -0,0 +1,168 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// BananaReq + /// + [DataContract(Name = "bananaReq")] + public partial class BananaReq : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected BananaReq() { } + /// + /// Initializes a new instance of the class. + /// + /// lengthCm (required). + /// sweet. + public BananaReq(decimal lengthCm = default(decimal), bool sweet = default(bool)) + { + this._LengthCm = lengthCm; + this._Sweet = sweet; + } + + /// + /// Gets or Sets LengthCm + /// + [DataMember(Name = "lengthCm", IsRequired = true, EmitDefaultValue = false)] + public decimal LengthCm + { + get{ return _LengthCm;} + set + { + _LengthCm = value; + _flagLengthCm = true; + } + } + private decimal _LengthCm; + private bool _flagLengthCm; + + /// + /// Returns false as LengthCm should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeLengthCm() + { + return _flagLengthCm; + } + /// + /// Gets or Sets Sweet + /// + [DataMember(Name = "sweet", EmitDefaultValue = true)] + public bool Sweet + { + get{ return _Sweet;} + set + { + _Sweet = value; + _flagSweet = true; + } + } + private bool _Sweet; + private bool _flagSweet; + + /// + /// Returns false as Sweet should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeSweet() + { + return _flagSweet; + } + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class BananaReq {\n"); + sb.Append(" LengthCm: ").Append(LengthCm).Append("\n"); + sb.Append(" Sweet: ").Append(Sweet).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as BananaReq).AreEqual; + } + + /// + /// Returns true if BananaReq instances are equal + /// + /// Instance of BananaReq to be compared + /// Boolean + public bool Equals(BananaReq input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.LengthCm.GetHashCode(); + hashCode = hashCode * 59 + this.Sweet.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BasquePig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BasquePig.cs new file mode 100644 index 00000000000..1dca71f0558 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BasquePig.cs @@ -0,0 +1,155 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// BasquePig + /// + [DataContract(Name = "BasquePig")] + public partial class BasquePig : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected BasquePig() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// className (required). + public BasquePig(string className = default(string)) + { + // to ensure "className" is required (not null) + this._ClassName = className ?? throw new ArgumentNullException("className is a required property for BasquePig and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ClassName + /// + [DataMember(Name = "className", IsRequired = true, EmitDefaultValue = false)] + public string ClassName + { + get{ return _ClassName;} + set + { + _ClassName = value; + _flagClassName = true; + } + } + private string _ClassName; + private bool _flagClassName; + + /// + /// Returns false as ClassName should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeClassName() + { + return _flagClassName; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class BasquePig {\n"); + sb.Append(" ClassName: ").Append(ClassName).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as BasquePig).AreEqual; + } + + /// + /// Returns true if BasquePig instances are equal + /// + /// Instance of BasquePig to be compared + /// Boolean + public bool Equals(BasquePig input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ClassName != null) + hashCode = hashCode * 59 + this.ClassName.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Capitalization.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Capitalization.cs new file mode 100644 index 00000000000..0e7d2fc0fb8 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Capitalization.cs @@ -0,0 +1,292 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Capitalization + /// + [DataContract(Name = "Capitalization")] + public partial class Capitalization : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// smallCamel. + /// capitalCamel. + /// smallSnake. + /// capitalSnake. + /// sCAETHFlowPoints. + /// Name of the pet . + public Capitalization(string smallCamel = default(string), string capitalCamel = default(string), string smallSnake = default(string), string capitalSnake = default(string), string sCAETHFlowPoints = default(string), string aTTNAME = default(string)) + { + this._SmallCamel = smallCamel; + this._CapitalCamel = capitalCamel; + this._SmallSnake = smallSnake; + this._CapitalSnake = capitalSnake; + this._SCAETHFlowPoints = sCAETHFlowPoints; + this._ATT_NAME = aTTNAME; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets SmallCamel + /// + [DataMember(Name = "smallCamel", EmitDefaultValue = false)] + public string SmallCamel + { + get{ return _SmallCamel;} + set + { + _SmallCamel = value; + _flagSmallCamel = true; + } + } + private string _SmallCamel; + private bool _flagSmallCamel; + + /// + /// Returns false as SmallCamel should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeSmallCamel() + { + return _flagSmallCamel; + } + /// + /// Gets or Sets CapitalCamel + /// + [DataMember(Name = "CapitalCamel", EmitDefaultValue = false)] + public string CapitalCamel + { + get{ return _CapitalCamel;} + set + { + _CapitalCamel = value; + _flagCapitalCamel = true; + } + } + private string _CapitalCamel; + private bool _flagCapitalCamel; + + /// + /// Returns false as CapitalCamel should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeCapitalCamel() + { + return _flagCapitalCamel; + } + /// + /// Gets or Sets SmallSnake + /// + [DataMember(Name = "small_Snake", EmitDefaultValue = false)] + public string SmallSnake + { + get{ return _SmallSnake;} + set + { + _SmallSnake = value; + _flagSmallSnake = true; + } + } + private string _SmallSnake; + private bool _flagSmallSnake; + + /// + /// Returns false as SmallSnake should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeSmallSnake() + { + return _flagSmallSnake; + } + /// + /// Gets or Sets CapitalSnake + /// + [DataMember(Name = "Capital_Snake", EmitDefaultValue = false)] + public string CapitalSnake + { + get{ return _CapitalSnake;} + set + { + _CapitalSnake = value; + _flagCapitalSnake = true; + } + } + private string _CapitalSnake; + private bool _flagCapitalSnake; + + /// + /// Returns false as CapitalSnake should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeCapitalSnake() + { + return _flagCapitalSnake; + } + /// + /// Gets or Sets SCAETHFlowPoints + /// + [DataMember(Name = "SCA_ETH_Flow_Points", EmitDefaultValue = false)] + public string SCAETHFlowPoints + { + get{ return _SCAETHFlowPoints;} + set + { + _SCAETHFlowPoints = value; + _flagSCAETHFlowPoints = true; + } + } + private string _SCAETHFlowPoints; + private bool _flagSCAETHFlowPoints; + + /// + /// Returns false as SCAETHFlowPoints should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeSCAETHFlowPoints() + { + return _flagSCAETHFlowPoints; + } + /// + /// Name of the pet + /// + /// Name of the pet + [DataMember(Name = "ATT_NAME", EmitDefaultValue = false)] + public string ATT_NAME + { + get{ return _ATT_NAME;} + set + { + _ATT_NAME = value; + _flagATT_NAME = true; + } + } + private string _ATT_NAME; + private bool _flagATT_NAME; + + /// + /// Returns false as ATT_NAME should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeATT_NAME() + { + return _flagATT_NAME; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Capitalization {\n"); + sb.Append(" SmallCamel: ").Append(SmallCamel).Append("\n"); + sb.Append(" CapitalCamel: ").Append(CapitalCamel).Append("\n"); + sb.Append(" SmallSnake: ").Append(SmallSnake).Append("\n"); + sb.Append(" CapitalSnake: ").Append(CapitalSnake).Append("\n"); + sb.Append(" SCAETHFlowPoints: ").Append(SCAETHFlowPoints).Append("\n"); + sb.Append(" ATT_NAME: ").Append(ATT_NAME).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Capitalization).AreEqual; + } + + /// + /// Returns true if Capitalization instances are equal + /// + /// Instance of Capitalization to be compared + /// Boolean + public bool Equals(Capitalization input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.SmallCamel != null) + hashCode = hashCode * 59 + this.SmallCamel.GetHashCode(); + if (this.CapitalCamel != null) + hashCode = hashCode * 59 + this.CapitalCamel.GetHashCode(); + if (this.SmallSnake != null) + hashCode = hashCode * 59 + this.SmallSnake.GetHashCode(); + if (this.CapitalSnake != null) + hashCode = hashCode * 59 + this.CapitalSnake.GetHashCode(); + if (this.SCAETHFlowPoints != null) + hashCode = hashCode * 59 + this.SCAETHFlowPoints.GetHashCode(); + if (this.ATT_NAME != null) + hashCode = hashCode * 59 + this.ATT_NAME.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Cat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Cat.cs new file mode 100644 index 00000000000..b2fec9a105f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Cat.cs @@ -0,0 +1,169 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Cat + /// + [DataContract(Name = "Cat")] + [JsonConverter(typeof(JsonSubtypes), "ClassName")] + public partial class Cat : Animal, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Cat() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// declawed. + /// className (required) (default to "Cat"). + /// color (default to "red"). + public Cat(bool declawed = default(bool), string className = "Cat", string color = "red") : base(className, color) + { + this._Declawed = declawed; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Declawed + /// + [DataMember(Name = "declawed", EmitDefaultValue = true)] + public bool Declawed + { + get{ return _Declawed;} + set + { + _Declawed = value; + _flagDeclawed = true; + } + } + private bool _Declawed; + private bool _flagDeclawed; + + /// + /// Returns false as Declawed should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeDeclawed() + { + return _flagDeclawed; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Cat {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" Declawed: ").Append(Declawed).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Cat).AreEqual; + } + + /// + /// Returns true if Cat instances are equal + /// + /// Instance of Cat to be compared + /// Boolean + public bool Equals(Cat input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + hashCode = hashCode * 59 + this.Declawed.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach(var x in BaseValidate(validationContext)) yield return x; + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/CatAllOf.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/CatAllOf.cs new file mode 100644 index 00000000000..d8032316af5 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/CatAllOf.cs @@ -0,0 +1,145 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// CatAllOf + /// + [DataContract(Name = "Cat_allOf")] + public partial class CatAllOf : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// declawed. + public CatAllOf(bool declawed = default(bool)) + { + this._Declawed = declawed; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Declawed + /// + [DataMember(Name = "declawed", EmitDefaultValue = true)] + public bool Declawed + { + get{ return _Declawed;} + set + { + _Declawed = value; + _flagDeclawed = true; + } + } + private bool _Declawed; + private bool _flagDeclawed; + + /// + /// Returns false as Declawed should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeDeclawed() + { + return _flagDeclawed; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CatAllOf {\n"); + sb.Append(" Declawed: ").Append(Declawed).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as CatAllOf).AreEqual; + } + + /// + /// Returns true if CatAllOf instances are equal + /// + /// Instance of CatAllOf to be compared + /// Boolean + public bool Equals(CatAllOf input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Declawed.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Category.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Category.cs new file mode 100644 index 00000000000..a99b2e4df1f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Category.cs @@ -0,0 +1,183 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Category + /// + [DataContract(Name = "Category")] + public partial class Category : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Category() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// id. + /// name (required) (default to "default-name"). + public Category(long id = default(long), string name = "default-name") + { + // to ensure "name" is required (not null) + this._Name = name ?? throw new ArgumentNullException("name is a required property for Category and cannot be null"); + this._Id = id; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Id + /// + [DataMember(Name = "id", EmitDefaultValue = false)] + public long Id + { + get{ return _Id;} + set + { + _Id = value; + _flagId = true; + } + } + private long _Id; + private bool _flagId; + + /// + /// Returns false as Id should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeId() + { + return _flagId; + } + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = false)] + public string Name + { + get{ return _Name;} + set + { + _Name = value; + _flagName = true; + } + } + private string _Name; + private bool _flagName; + + /// + /// Returns false as Name should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeName() + { + return _flagName; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Category {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Category).AreEqual; + } + + /// + /// Returns true if Category instances are equal + /// + /// Instance of Category to be compared + /// Boolean + public bool Equals(Category input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCat.cs new file mode 100644 index 00000000000..e07206d390c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCat.cs @@ -0,0 +1,212 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ChildCat + /// + [DataContract(Name = "ChildCat")] + [JsonConverter(typeof(JsonSubtypes), "PetType")] + public partial class ChildCat : ParentPet, IEquatable, IValidatableObject + { + /// + /// Defines PetType + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum PetTypeEnum + { + /// + /// Enum ChildCat for value: ChildCat + /// + [EnumMember(Value = "ChildCat")] + ChildCat = 1 + + } + + + /// + /// Gets or Sets PetType + /// + + [DataMember(Name = "pet_type", IsRequired = true, EmitDefaultValue = false)] + public PetTypeEnum PetType + { + get{ return _PetType;} + set + { + _PetType = value; + _flagPetType = true; + } + } + private PetTypeEnum _PetType; + private bool _flagPetType; + + /// + /// Returns false as PetType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePetType() + { + return _flagPetType; + } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ChildCat() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// name. + /// petType (required) (default to PetTypeEnum.ChildCat). + public ChildCat(string name = default(string), PetTypeEnum petType = PetTypeEnum.ChildCat) : base() + { + this._PetType = petType; + this._Name = name; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name + { + get{ return _Name;} + set + { + _Name = value; + _flagName = true; + } + } + private string _Name; + private bool _flagName; + + /// + /// Returns false as Name should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeName() + { + return _flagName; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ChildCat {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" PetType: ").Append(PetType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ChildCat).AreEqual; + } + + /// + /// Returns true if ChildCat instances are equal + /// + /// Instance of ChildCat to be compared + /// Boolean + public bool Equals(ChildCat input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + hashCode = hashCode * 59 + this.PetType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach(var x in BaseValidate(validationContext)) yield return x; + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCatAllOf.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCatAllOf.cs new file mode 100644 index 00000000000..d3f5e7519b3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCatAllOf.cs @@ -0,0 +1,190 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ChildCatAllOf + /// + [DataContract(Name = "ChildCat_allOf")] + public partial class ChildCatAllOf : IEquatable, IValidatableObject + { + /// + /// Defines PetType + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum PetTypeEnum + { + /// + /// Enum ChildCat for value: ChildCat + /// + [EnumMember(Value = "ChildCat")] + ChildCat = 1 + + } + + + /// + /// Gets or Sets PetType + /// + + [DataMember(Name = "pet_type", EmitDefaultValue = false)] + public PetTypeEnum? PetType + { + get{ return _PetType;} + set + { + _PetType = value; + _flagPetType = true; + } + } + private PetTypeEnum? _PetType; + private bool _flagPetType; + + /// + /// Returns false as PetType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePetType() + { + return _flagPetType; + } + /// + /// Initializes a new instance of the class. + /// + /// name. + /// petType (default to PetTypeEnum.ChildCat). + public ChildCatAllOf(string name = default(string), PetTypeEnum? petType = PetTypeEnum.ChildCat) + { + this._Name = name; + this.PetType = petType; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name + { + get{ return _Name;} + set + { + _Name = value; + _flagName = true; + } + } + private string _Name; + private bool _flagName; + + /// + /// Returns false as Name should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeName() + { + return _flagName; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ChildCatAllOf {\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" PetType: ").Append(PetType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ChildCatAllOf).AreEqual; + } + + /// + /// Returns true if ChildCatAllOf instances are equal + /// + /// Instance of ChildCatAllOf to be compared + /// Boolean + public bool Equals(ChildCatAllOf input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + hashCode = hashCode * 59 + this.PetType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ClassModel.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ClassModel.cs new file mode 100644 index 00000000000..398ba005da8 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ClassModel.cs @@ -0,0 +1,146 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Model for testing model with \"_class\" property + /// + [DataContract(Name = "ClassModel")] + public partial class ClassModel : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// _class. + public ClassModel(string _class = default(string)) + { + this._Class = _class; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Class + /// + [DataMember(Name = "_class", EmitDefaultValue = false)] + public string Class + { + get{ return _Class;} + set + { + _Class = value; + _flagClass = true; + } + } + private string _Class; + private bool _flagClass; + + /// + /// Returns false as Class should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeClass() + { + return _flagClass; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ClassModel {\n"); + sb.Append(" Class: ").Append(Class).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ClassModel).AreEqual; + } + + /// + /// Returns true if ClassModel instances are equal + /// + /// Instance of ClassModel to be compared + /// Boolean + public bool Equals(ClassModel input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Class != null) + hashCode = hashCode * 59 + this.Class.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs new file mode 100644 index 00000000000..50a0471ba56 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs @@ -0,0 +1,185 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ComplexQuadrilateral + /// + [DataContract(Name = "ComplexQuadrilateral")] + public partial class ComplexQuadrilateral : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ComplexQuadrilateral() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// shapeType (required). + /// quadrilateralType (required). + public ComplexQuadrilateral(string shapeType = default(string), string quadrilateralType = default(string)) + { + // to ensure "shapeType" is required (not null) + this._ShapeType = shapeType ?? throw new ArgumentNullException("shapeType is a required property for ComplexQuadrilateral and cannot be null"); + // to ensure "quadrilateralType" is required (not null) + this._QuadrilateralType = quadrilateralType ?? throw new ArgumentNullException("quadrilateralType is a required property for ComplexQuadrilateral and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ShapeType + /// + [DataMember(Name = "shapeType", IsRequired = true, EmitDefaultValue = false)] + public string ShapeType + { + get{ return _ShapeType;} + set + { + _ShapeType = value; + _flagShapeType = true; + } + } + private string _ShapeType; + private bool _flagShapeType; + + /// + /// Returns false as ShapeType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeShapeType() + { + return _flagShapeType; + } + /// + /// Gets or Sets QuadrilateralType + /// + [DataMember(Name = "quadrilateralType", IsRequired = true, EmitDefaultValue = false)] + public string QuadrilateralType + { + get{ return _QuadrilateralType;} + set + { + _QuadrilateralType = value; + _flagQuadrilateralType = true; + } + } + private string _QuadrilateralType; + private bool _flagQuadrilateralType; + + /// + /// Returns false as QuadrilateralType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeQuadrilateralType() + { + return _flagQuadrilateralType; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ComplexQuadrilateral {\n"); + sb.Append(" ShapeType: ").Append(ShapeType).Append("\n"); + sb.Append(" QuadrilateralType: ").Append(QuadrilateralType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ComplexQuadrilateral).AreEqual; + } + + /// + /// Returns true if ComplexQuadrilateral instances are equal + /// + /// Instance of ComplexQuadrilateral to be compared + /// Boolean + public bool Equals(ComplexQuadrilateral input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ShapeType != null) + hashCode = hashCode * 59 + this.ShapeType.GetHashCode(); + if (this.QuadrilateralType != null) + hashCode = hashCode * 59 + this.QuadrilateralType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DanishPig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DanishPig.cs new file mode 100644 index 00000000000..9e783bb28d0 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DanishPig.cs @@ -0,0 +1,155 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// DanishPig + /// + [DataContract(Name = "DanishPig")] + public partial class DanishPig : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected DanishPig() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// className (required). + public DanishPig(string className = default(string)) + { + // to ensure "className" is required (not null) + this._ClassName = className ?? throw new ArgumentNullException("className is a required property for DanishPig and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ClassName + /// + [DataMember(Name = "className", IsRequired = true, EmitDefaultValue = false)] + public string ClassName + { + get{ return _ClassName;} + set + { + _ClassName = value; + _flagClassName = true; + } + } + private string _ClassName; + private bool _flagClassName; + + /// + /// Returns false as ClassName should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeClassName() + { + return _flagClassName; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class DanishPig {\n"); + sb.Append(" ClassName: ").Append(ClassName).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as DanishPig).AreEqual; + } + + /// + /// Returns true if DanishPig instances are equal + /// + /// Instance of DanishPig to be compared + /// Boolean + public bool Equals(DanishPig input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ClassName != null) + hashCode = hashCode * 59 + this.ClassName.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Dog.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Dog.cs new file mode 100644 index 00000000000..713e93b0b13 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Dog.cs @@ -0,0 +1,170 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Dog + /// + [DataContract(Name = "Dog")] + [JsonConverter(typeof(JsonSubtypes), "ClassName")] + public partial class Dog : Animal, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Dog() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// breed. + /// className (required) (default to "Dog"). + /// color (default to "red"). + public Dog(string breed = default(string), string className = "Dog", string color = "red") : base(className, color) + { + this._Breed = breed; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Breed + /// + [DataMember(Name = "breed", EmitDefaultValue = false)] + public string Breed + { + get{ return _Breed;} + set + { + _Breed = value; + _flagBreed = true; + } + } + private string _Breed; + private bool _flagBreed; + + /// + /// Returns false as Breed should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeBreed() + { + return _flagBreed; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Dog {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" Breed: ").Append(Breed).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Dog).AreEqual; + } + + /// + /// Returns true if Dog instances are equal + /// + /// Instance of Dog to be compared + /// Boolean + public bool Equals(Dog input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + if (this.Breed != null) + hashCode = hashCode * 59 + this.Breed.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach(var x in BaseValidate(validationContext)) yield return x; + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DogAllOf.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DogAllOf.cs new file mode 100644 index 00000000000..d82ab386dc2 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DogAllOf.cs @@ -0,0 +1,146 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// DogAllOf + /// + [DataContract(Name = "Dog_allOf")] + public partial class DogAllOf : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// breed. + public DogAllOf(string breed = default(string)) + { + this._Breed = breed; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Breed + /// + [DataMember(Name = "breed", EmitDefaultValue = false)] + public string Breed + { + get{ return _Breed;} + set + { + _Breed = value; + _flagBreed = true; + } + } + private string _Breed; + private bool _flagBreed; + + /// + /// Returns false as Breed should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeBreed() + { + return _flagBreed; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class DogAllOf {\n"); + sb.Append(" Breed: ").Append(Breed).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as DogAllOf).AreEqual; + } + + /// + /// Returns true if DogAllOf instances are equal + /// + /// Instance of DogAllOf to be compared + /// Boolean + public bool Equals(DogAllOf input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Breed != null) + hashCode = hashCode * 59 + this.Breed.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Drawing.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Drawing.cs new file mode 100644 index 00000000000..2dd0540c37d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Drawing.cs @@ -0,0 +1,224 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Drawing + /// + [DataContract(Name = "Drawing")] + public partial class Drawing : Dictionary, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// mainShape. + /// shapeOrNull. + /// nullableShape. + /// shapes. + public Drawing(Shape mainShape = default(Shape), ShapeOrNull shapeOrNull = default(ShapeOrNull), NullableShape nullableShape = default(NullableShape), List shapes = default(List)) : base() + { + this._MainShape = mainShape; + this._ShapeOrNull = shapeOrNull; + this._NullableShape = nullableShape; + this._Shapes = shapes; + } + + /// + /// Gets or Sets MainShape + /// + [DataMember(Name = "mainShape", EmitDefaultValue = false)] + public Shape MainShape + { + get{ return _MainShape;} + set + { + _MainShape = value; + _flagMainShape = true; + } + } + private Shape _MainShape; + private bool _flagMainShape; + + /// + /// Returns false as MainShape should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMainShape() + { + return _flagMainShape; + } + /// + /// Gets or Sets ShapeOrNull + /// + [DataMember(Name = "shapeOrNull", EmitDefaultValue = false)] + public ShapeOrNull ShapeOrNull + { + get{ return _ShapeOrNull;} + set + { + _ShapeOrNull = value; + _flagShapeOrNull = true; + } + } + private ShapeOrNull _ShapeOrNull; + private bool _flagShapeOrNull; + + /// + /// Returns false as ShapeOrNull should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeShapeOrNull() + { + return _flagShapeOrNull; + } + /// + /// Gets or Sets NullableShape + /// + [DataMember(Name = "nullableShape", EmitDefaultValue = true)] + public NullableShape NullableShape + { + get{ return _NullableShape;} + set + { + _NullableShape = value; + _flagNullableShape = true; + } + } + private NullableShape _NullableShape; + private bool _flagNullableShape; + + /// + /// Returns false as NullableShape should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeNullableShape() + { + return _flagNullableShape; + } + /// + /// Gets or Sets Shapes + /// + [DataMember(Name = "shapes", EmitDefaultValue = false)] + public List Shapes + { + get{ return _Shapes;} + set + { + _Shapes = value; + _flagShapes = true; + } + } + private List _Shapes; + private bool _flagShapes; + + /// + /// Returns false as Shapes should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeShapes() + { + return _flagShapes; + } + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Drawing {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" MainShape: ").Append(MainShape).Append("\n"); + sb.Append(" ShapeOrNull: ").Append(ShapeOrNull).Append("\n"); + sb.Append(" NullableShape: ").Append(NullableShape).Append("\n"); + sb.Append(" Shapes: ").Append(Shapes).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Drawing).AreEqual; + } + + /// + /// Returns true if Drawing instances are equal + /// + /// Instance of Drawing to be compared + /// Boolean + public bool Equals(Drawing input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + if (this.MainShape != null) + hashCode = hashCode * 59 + this.MainShape.GetHashCode(); + if (this.ShapeOrNull != null) + hashCode = hashCode * 59 + this.ShapeOrNull.GetHashCode(); + if (this.NullableShape != null) + hashCode = hashCode * 59 + this.NullableShape.GetHashCode(); + if (this.Shapes != null) + hashCode = hashCode * 59 + this.Shapes.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumArrays.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumArrays.cs new file mode 100644 index 00000000000..6d745892008 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumArrays.cs @@ -0,0 +1,218 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// EnumArrays + /// + [DataContract(Name = "EnumArrays")] + public partial class EnumArrays : IEquatable, IValidatableObject + { + /// + /// Defines JustSymbol + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum JustSymbolEnum + { + /// + /// Enum GreaterThanOrEqualTo for value: >= + /// + [EnumMember(Value = ">=")] + GreaterThanOrEqualTo = 1, + + /// + /// Enum Dollar for value: $ + /// + [EnumMember(Value = "$")] + Dollar = 2 + + } + + + /// + /// Gets or Sets JustSymbol + /// + + [DataMember(Name = "just_symbol", EmitDefaultValue = false)] + public JustSymbolEnum? JustSymbol + { + get{ return _JustSymbol;} + set + { + _JustSymbol = value; + _flagJustSymbol = true; + } + } + private JustSymbolEnum? _JustSymbol; + private bool _flagJustSymbol; + + /// + /// Returns false as JustSymbol should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeJustSymbol() + { + return _flagJustSymbol; + } + /// + /// Defines ArrayEnum + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum ArrayEnumEnum + { + /// + /// Enum Fish for value: fish + /// + [EnumMember(Value = "fish")] + Fish = 1, + + /// + /// Enum Crab for value: crab + /// + [EnumMember(Value = "crab")] + Crab = 2 + + } + + + + /// + /// Gets or Sets ArrayEnum + /// + + [DataMember(Name = "array_enum", EmitDefaultValue = false)] + public List ArrayEnum + { + get{ return _ArrayEnum;} + set + { + _ArrayEnum = value; + _flagArrayEnum = true; + } + } + private List _ArrayEnum; + private bool _flagArrayEnum; + + /// + /// Returns false as ArrayEnum should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeArrayEnum() + { + return _flagArrayEnum; + } + /// + /// Initializes a new instance of the class. + /// + /// justSymbol. + /// arrayEnum. + public EnumArrays(JustSymbolEnum? justSymbol = default(JustSymbolEnum?), List arrayEnum = default(List)) + { + this._JustSymbol = justSymbol; + this._ArrayEnum = arrayEnum; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class EnumArrays {\n"); + sb.Append(" JustSymbol: ").Append(JustSymbol).Append("\n"); + sb.Append(" ArrayEnum: ").Append(ArrayEnum).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as EnumArrays).AreEqual; + } + + /// + /// Returns true if EnumArrays instances are equal + /// + /// Instance of EnumArrays to be compared + /// Boolean + public bool Equals(EnumArrays input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.JustSymbol.GetHashCode(); + hashCode = hashCode * 59 + this.ArrayEnum.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumClass.cs new file mode 100644 index 00000000000..48b3d7d0e7e --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumClass.cs @@ -0,0 +1,55 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Defines EnumClass + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum EnumClass + { + /// + /// Enum Abc for value: _abc + /// + [EnumMember(Value = "_abc")] + Abc = 1, + + /// + /// Enum Efg for value: -efg + /// + [EnumMember(Value = "-efg")] + Efg = 2, + + /// + /// Enum Xyz for value: (xyz) + /// + [EnumMember(Value = "(xyz)")] + Xyz = 3 + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumTest.cs new file mode 100644 index 00000000000..a00c9816092 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumTest.cs @@ -0,0 +1,501 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// EnumTest + /// + [DataContract(Name = "Enum_Test")] + public partial class EnumTest : IEquatable, IValidatableObject + { + /// + /// Defines EnumString + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum EnumStringEnum + { + /// + /// Enum UPPER for value: UPPER + /// + [EnumMember(Value = "UPPER")] + UPPER = 1, + + /// + /// Enum Lower for value: lower + /// + [EnumMember(Value = "lower")] + Lower = 2, + + /// + /// Enum Empty for value: + /// + [EnumMember(Value = "")] + Empty = 3 + + } + + + /// + /// Gets or Sets EnumString + /// + + [DataMember(Name = "enum_string", EmitDefaultValue = false)] + public EnumStringEnum? EnumString + { + get{ return _EnumString;} + set + { + _EnumString = value; + _flagEnumString = true; + } + } + private EnumStringEnum? _EnumString; + private bool _flagEnumString; + + /// + /// Returns false as EnumString should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeEnumString() + { + return _flagEnumString; + } + /// + /// Defines EnumStringRequired + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum EnumStringRequiredEnum + { + /// + /// Enum UPPER for value: UPPER + /// + [EnumMember(Value = "UPPER")] + UPPER = 1, + + /// + /// Enum Lower for value: lower + /// + [EnumMember(Value = "lower")] + Lower = 2, + + /// + /// Enum Empty for value: + /// + [EnumMember(Value = "")] + Empty = 3 + + } + + + /// + /// Gets or Sets EnumStringRequired + /// + + [DataMember(Name = "enum_string_required", IsRequired = true, EmitDefaultValue = false)] + public EnumStringRequiredEnum EnumStringRequired + { + get{ return _EnumStringRequired;} + set + { + _EnumStringRequired = value; + _flagEnumStringRequired = true; + } + } + private EnumStringRequiredEnum _EnumStringRequired; + private bool _flagEnumStringRequired; + + /// + /// Returns false as EnumStringRequired should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeEnumStringRequired() + { + return _flagEnumStringRequired; + } + /// + /// Defines EnumInteger + /// + public enum EnumIntegerEnum + { + /// + /// Enum NUMBER_1 for value: 1 + /// + NUMBER_1 = 1, + + /// + /// Enum NUMBER_MINUS_1 for value: -1 + /// + NUMBER_MINUS_1 = -1 + + } + + + /// + /// Gets or Sets EnumInteger + /// + + [DataMember(Name = "enum_integer", EmitDefaultValue = false)] + public EnumIntegerEnum? EnumInteger + { + get{ return _EnumInteger;} + set + { + _EnumInteger = value; + _flagEnumInteger = true; + } + } + private EnumIntegerEnum? _EnumInteger; + private bool _flagEnumInteger; + + /// + /// Returns false as EnumInteger should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeEnumInteger() + { + return _flagEnumInteger; + } + /// + /// Defines EnumIntegerOnly + /// + public enum EnumIntegerOnlyEnum + { + /// + /// Enum NUMBER_2 for value: 2 + /// + NUMBER_2 = 2, + + /// + /// Enum NUMBER_MINUS_2 for value: -2 + /// + NUMBER_MINUS_2 = -2 + + } + + + /// + /// Gets or Sets EnumIntegerOnly + /// + + [DataMember(Name = "enum_integer_only", EmitDefaultValue = false)] + public EnumIntegerOnlyEnum? EnumIntegerOnly + { + get{ return _EnumIntegerOnly;} + set + { + _EnumIntegerOnly = value; + _flagEnumIntegerOnly = true; + } + } + private EnumIntegerOnlyEnum? _EnumIntegerOnly; + private bool _flagEnumIntegerOnly; + + /// + /// Returns false as EnumIntegerOnly should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeEnumIntegerOnly() + { + return _flagEnumIntegerOnly; + } + /// + /// Defines EnumNumber + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum EnumNumberEnum + { + /// + /// Enum NUMBER_1_DOT_1 for value: 1.1 + /// + [EnumMember(Value = "1.1")] + NUMBER_1_DOT_1 = 1, + + /// + /// Enum NUMBER_MINUS_1_DOT_2 for value: -1.2 + /// + [EnumMember(Value = "-1.2")] + NUMBER_MINUS_1_DOT_2 = 2 + + } + + + /// + /// Gets or Sets EnumNumber + /// + + [DataMember(Name = "enum_number", EmitDefaultValue = false)] + public EnumNumberEnum? EnumNumber + { + get{ return _EnumNumber;} + set + { + _EnumNumber = value; + _flagEnumNumber = true; + } + } + private EnumNumberEnum? _EnumNumber; + private bool _flagEnumNumber; + + /// + /// Returns false as EnumNumber should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeEnumNumber() + { + return _flagEnumNumber; + } + + /// + /// Gets or Sets OuterEnum + /// + + [DataMember(Name = "outerEnum", EmitDefaultValue = true)] + public OuterEnum? OuterEnum + { + get{ return _OuterEnum;} + set + { + _OuterEnum = value; + _flagOuterEnum = true; + } + } + private OuterEnum? _OuterEnum; + private bool _flagOuterEnum; + + /// + /// Returns false as OuterEnum should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeOuterEnum() + { + return _flagOuterEnum; + } + + /// + /// Gets or Sets OuterEnumInteger + /// + + [DataMember(Name = "outerEnumInteger", EmitDefaultValue = false)] + public OuterEnumInteger? OuterEnumInteger + { + get{ return _OuterEnumInteger;} + set + { + _OuterEnumInteger = value; + _flagOuterEnumInteger = true; + } + } + private OuterEnumInteger? _OuterEnumInteger; + private bool _flagOuterEnumInteger; + + /// + /// Returns false as OuterEnumInteger should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeOuterEnumInteger() + { + return _flagOuterEnumInteger; + } + + /// + /// Gets or Sets OuterEnumDefaultValue + /// + + [DataMember(Name = "outerEnumDefaultValue", EmitDefaultValue = false)] + public OuterEnumDefaultValue? OuterEnumDefaultValue + { + get{ return _OuterEnumDefaultValue;} + set + { + _OuterEnumDefaultValue = value; + _flagOuterEnumDefaultValue = true; + } + } + private OuterEnumDefaultValue? _OuterEnumDefaultValue; + private bool _flagOuterEnumDefaultValue; + + /// + /// Returns false as OuterEnumDefaultValue should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeOuterEnumDefaultValue() + { + return _flagOuterEnumDefaultValue; + } + + /// + /// Gets or Sets OuterEnumIntegerDefaultValue + /// + + [DataMember(Name = "outerEnumIntegerDefaultValue", EmitDefaultValue = false)] + public OuterEnumIntegerDefaultValue? OuterEnumIntegerDefaultValue + { + get{ return _OuterEnumIntegerDefaultValue;} + set + { + _OuterEnumIntegerDefaultValue = value; + _flagOuterEnumIntegerDefaultValue = true; + } + } + private OuterEnumIntegerDefaultValue? _OuterEnumIntegerDefaultValue; + private bool _flagOuterEnumIntegerDefaultValue; + + /// + /// Returns false as OuterEnumIntegerDefaultValue should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeOuterEnumIntegerDefaultValue() + { + return _flagOuterEnumIntegerDefaultValue; + } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected EnumTest() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// enumString. + /// enumStringRequired (required). + /// enumInteger. + /// enumIntegerOnly. + /// enumNumber. + /// outerEnum. + /// outerEnumInteger. + /// outerEnumDefaultValue. + /// outerEnumIntegerDefaultValue. + public EnumTest(EnumStringEnum? enumString = default(EnumStringEnum?), EnumStringRequiredEnum enumStringRequired = default(EnumStringRequiredEnum), EnumIntegerEnum? enumInteger = default(EnumIntegerEnum?), EnumIntegerOnlyEnum? enumIntegerOnly = default(EnumIntegerOnlyEnum?), EnumNumberEnum? enumNumber = default(EnumNumberEnum?), OuterEnum? outerEnum = default(OuterEnum?), OuterEnumInteger? outerEnumInteger = default(OuterEnumInteger?), OuterEnumDefaultValue? outerEnumDefaultValue = default(OuterEnumDefaultValue?), OuterEnumIntegerDefaultValue? outerEnumIntegerDefaultValue = default(OuterEnumIntegerDefaultValue?)) + { + this._EnumStringRequired = enumStringRequired; + this._EnumString = enumString; + this._EnumInteger = enumInteger; + this._EnumIntegerOnly = enumIntegerOnly; + this._EnumNumber = enumNumber; + this._OuterEnum = outerEnum; + this._OuterEnumInteger = outerEnumInteger; + this._OuterEnumDefaultValue = outerEnumDefaultValue; + this._OuterEnumIntegerDefaultValue = outerEnumIntegerDefaultValue; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class EnumTest {\n"); + sb.Append(" EnumString: ").Append(EnumString).Append("\n"); + sb.Append(" EnumStringRequired: ").Append(EnumStringRequired).Append("\n"); + sb.Append(" EnumInteger: ").Append(EnumInteger).Append("\n"); + sb.Append(" EnumIntegerOnly: ").Append(EnumIntegerOnly).Append("\n"); + sb.Append(" EnumNumber: ").Append(EnumNumber).Append("\n"); + sb.Append(" OuterEnum: ").Append(OuterEnum).Append("\n"); + sb.Append(" OuterEnumInteger: ").Append(OuterEnumInteger).Append("\n"); + sb.Append(" OuterEnumDefaultValue: ").Append(OuterEnumDefaultValue).Append("\n"); + sb.Append(" OuterEnumIntegerDefaultValue: ").Append(OuterEnumIntegerDefaultValue).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as EnumTest).AreEqual; + } + + /// + /// Returns true if EnumTest instances are equal + /// + /// Instance of EnumTest to be compared + /// Boolean + public bool Equals(EnumTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.EnumString.GetHashCode(); + hashCode = hashCode * 59 + this.EnumStringRequired.GetHashCode(); + hashCode = hashCode * 59 + this.EnumInteger.GetHashCode(); + hashCode = hashCode * 59 + this.EnumIntegerOnly.GetHashCode(); + hashCode = hashCode * 59 + this.EnumNumber.GetHashCode(); + hashCode = hashCode * 59 + this.OuterEnum.GetHashCode(); + hashCode = hashCode * 59 + this.OuterEnumInteger.GetHashCode(); + hashCode = hashCode * 59 + this.OuterEnumDefaultValue.GetHashCode(); + hashCode = hashCode * 59 + this.OuterEnumIntegerDefaultValue.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EquilateralTriangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EquilateralTriangle.cs new file mode 100644 index 00000000000..cab8c52b583 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EquilateralTriangle.cs @@ -0,0 +1,185 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// EquilateralTriangle + /// + [DataContract(Name = "EquilateralTriangle")] + public partial class EquilateralTriangle : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected EquilateralTriangle() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// shapeType (required). + /// triangleType (required). + public EquilateralTriangle(string shapeType = default(string), string triangleType = default(string)) + { + // to ensure "shapeType" is required (not null) + this._ShapeType = shapeType ?? throw new ArgumentNullException("shapeType is a required property for EquilateralTriangle and cannot be null"); + // to ensure "triangleType" is required (not null) + this._TriangleType = triangleType ?? throw new ArgumentNullException("triangleType is a required property for EquilateralTriangle and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ShapeType + /// + [DataMember(Name = "shapeType", IsRequired = true, EmitDefaultValue = false)] + public string ShapeType + { + get{ return _ShapeType;} + set + { + _ShapeType = value; + _flagShapeType = true; + } + } + private string _ShapeType; + private bool _flagShapeType; + + /// + /// Returns false as ShapeType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeShapeType() + { + return _flagShapeType; + } + /// + /// Gets or Sets TriangleType + /// + [DataMember(Name = "triangleType", IsRequired = true, EmitDefaultValue = false)] + public string TriangleType + { + get{ return _TriangleType;} + set + { + _TriangleType = value; + _flagTriangleType = true; + } + } + private string _TriangleType; + private bool _flagTriangleType; + + /// + /// Returns false as TriangleType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeTriangleType() + { + return _flagTriangleType; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class EquilateralTriangle {\n"); + sb.Append(" ShapeType: ").Append(ShapeType).Append("\n"); + sb.Append(" TriangleType: ").Append(TriangleType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as EquilateralTriangle).AreEqual; + } + + /// + /// Returns true if EquilateralTriangle instances are equal + /// + /// Instance of EquilateralTriangle to be compared + /// Boolean + public bool Equals(EquilateralTriangle input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ShapeType != null) + hashCode = hashCode * 59 + this.ShapeType.GetHashCode(); + if (this.TriangleType != null) + hashCode = hashCode * 59 + this.TriangleType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/File.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/File.cs new file mode 100644 index 00000000000..9e67adfbae2 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/File.cs @@ -0,0 +1,147 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Must be named `File` for test. + /// + [DataContract(Name = "File")] + public partial class File : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// Test capitalization. + public File(string sourceURI = default(string)) + { + this._SourceURI = sourceURI; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Test capitalization + /// + /// Test capitalization + [DataMember(Name = "sourceURI", EmitDefaultValue = false)] + public string SourceURI + { + get{ return _SourceURI;} + set + { + _SourceURI = value; + _flagSourceURI = true; + } + } + private string _SourceURI; + private bool _flagSourceURI; + + /// + /// Returns false as SourceURI should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeSourceURI() + { + return _flagSourceURI; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class File {\n"); + sb.Append(" SourceURI: ").Append(SourceURI).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as File).AreEqual; + } + + /// + /// Returns true if File instances are equal + /// + /// Instance of File to be compared + /// Boolean + public bool Equals(File input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.SourceURI != null) + hashCode = hashCode * 59 + this.SourceURI.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs new file mode 100644 index 00000000000..9b51606f001 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs @@ -0,0 +1,175 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// FileSchemaTestClass + /// + [DataContract(Name = "FileSchemaTestClass")] + public partial class FileSchemaTestClass : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// file. + /// files. + public FileSchemaTestClass(File file = default(File), List files = default(List)) + { + this._File = file; + this._Files = files; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets File + /// + [DataMember(Name = "file", EmitDefaultValue = false)] + public File File + { + get{ return _File;} + set + { + _File = value; + _flagFile = true; + } + } + private File _File; + private bool _flagFile; + + /// + /// Returns false as File should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeFile() + { + return _flagFile; + } + /// + /// Gets or Sets Files + /// + [DataMember(Name = "files", EmitDefaultValue = false)] + public List Files + { + get{ return _Files;} + set + { + _Files = value; + _flagFiles = true; + } + } + private List _Files; + private bool _flagFiles; + + /// + /// Returns false as Files should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeFiles() + { + return _flagFiles; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class FileSchemaTestClass {\n"); + sb.Append(" File: ").Append(File).Append("\n"); + sb.Append(" Files: ").Append(Files).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as FileSchemaTestClass).AreEqual; + } + + /// + /// Returns true if FileSchemaTestClass instances are equal + /// + /// Instance of FileSchemaTestClass to be compared + /// Boolean + public bool Equals(FileSchemaTestClass input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.File != null) + hashCode = hashCode * 59 + this.File.GetHashCode(); + if (this.Files != null) + hashCode = hashCode * 59 + this.Files.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Foo.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Foo.cs new file mode 100644 index 00000000000..cf002ab2981 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Foo.cs @@ -0,0 +1,147 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Foo + /// + [DataContract(Name = "Foo")] + public partial class Foo : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// bar (default to "bar"). + public Foo(string bar = "bar") + { + // use default value if no "bar" provided + this.Bar = bar ?? "bar"; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Bar + /// + [DataMember(Name = "bar", EmitDefaultValue = false)] + public string Bar + { + get{ return _Bar;} + set + { + _Bar = value; + _flagBar = true; + } + } + private string _Bar; + private bool _flagBar; + + /// + /// Returns false as Bar should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeBar() + { + return _flagBar; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Foo {\n"); + sb.Append(" Bar: ").Append(Bar).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Foo).AreEqual; + } + + /// + /// Returns true if Foo instances are equal + /// + /// Instance of Foo to be compared + /// Boolean + public bool Equals(Foo input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Bar != null) + hashCode = hashCode * 59 + this.Bar.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FormatTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FormatTest.cs new file mode 100644 index 00000000000..771481dcbf4 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FormatTest.cs @@ -0,0 +1,680 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// FormatTest + /// + [DataContract(Name = "format_test")] + public partial class FormatTest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected FormatTest() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// integer. + /// int32. + /// int64. + /// number (required). + /// _float. + /// _double. + /// _decimal. + /// _string. + /// _byte (required). + /// binary. + /// date (required). + /// dateTime. + /// uuid. + /// password (required). + /// A string that is a 10 digit number. Can have leading zeros.. + /// A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.. + public FormatTest(int integer = default(int), int int32 = default(int), long int64 = default(long), decimal number = default(decimal), float _float = default(float), double _double = default(double), decimal _decimal = default(decimal), string _string = default(string), byte[] _byte = default(byte[]), System.IO.Stream binary = default(System.IO.Stream), DateTime date = default(DateTime), DateTime dateTime = default(DateTime), Guid uuid = default(Guid), string password = default(string), string patternWithDigits = default(string), string patternWithDigitsAndDelimiter = default(string)) + { + this._Number = number; + // to ensure "_byte" is required (not null) + this._Byte = _byte ?? throw new ArgumentNullException("_byte is a required property for FormatTest and cannot be null"); + this._Date = date; + // to ensure "password" is required (not null) + this._Password = password ?? throw new ArgumentNullException("password is a required property for FormatTest and cannot be null"); + this._Integer = integer; + this._Int32 = int32; + this._Int64 = int64; + this._Float = _float; + this._Double = _double; + this._Decimal = _decimal; + this._String = _string; + this._Binary = binary; + this._DateTime = dateTime; + this._Uuid = uuid; + this._PatternWithDigits = patternWithDigits; + this._PatternWithDigitsAndDelimiter = patternWithDigitsAndDelimiter; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Integer + /// + [DataMember(Name = "integer", EmitDefaultValue = false)] + public int Integer + { + get{ return _Integer;} + set + { + _Integer = value; + _flagInteger = true; + } + } + private int _Integer; + private bool _flagInteger; + + /// + /// Returns false as Integer should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeInteger() + { + return _flagInteger; + } + /// + /// Gets or Sets Int32 + /// + [DataMember(Name = "int32", EmitDefaultValue = false)] + public int Int32 + { + get{ return _Int32;} + set + { + _Int32 = value; + _flagInt32 = true; + } + } + private int _Int32; + private bool _flagInt32; + + /// + /// Returns false as Int32 should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeInt32() + { + return _flagInt32; + } + /// + /// Gets or Sets Int64 + /// + [DataMember(Name = "int64", EmitDefaultValue = false)] + public long Int64 + { + get{ return _Int64;} + set + { + _Int64 = value; + _flagInt64 = true; + } + } + private long _Int64; + private bool _flagInt64; + + /// + /// Returns false as Int64 should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeInt64() + { + return _flagInt64; + } + /// + /// Gets or Sets Number + /// + [DataMember(Name = "number", IsRequired = true, EmitDefaultValue = false)] + public decimal Number + { + get{ return _Number;} + set + { + _Number = value; + _flagNumber = true; + } + } + private decimal _Number; + private bool _flagNumber; + + /// + /// Returns false as Number should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeNumber() + { + return _flagNumber; + } + /// + /// Gets or Sets Float + /// + [DataMember(Name = "float", EmitDefaultValue = false)] + public float Float + { + get{ return _Float;} + set + { + _Float = value; + _flagFloat = true; + } + } + private float _Float; + private bool _flagFloat; + + /// + /// Returns false as Float should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeFloat() + { + return _flagFloat; + } + /// + /// Gets or Sets Double + /// + [DataMember(Name = "double", EmitDefaultValue = false)] + public double Double + { + get{ return _Double;} + set + { + _Double = value; + _flagDouble = true; + } + } + private double _Double; + private bool _flagDouble; + + /// + /// Returns false as Double should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeDouble() + { + return _flagDouble; + } + /// + /// Gets or Sets Decimal + /// + [DataMember(Name = "decimal", EmitDefaultValue = false)] + public decimal Decimal + { + get{ return _Decimal;} + set + { + _Decimal = value; + _flagDecimal = true; + } + } + private decimal _Decimal; + private bool _flagDecimal; + + /// + /// Returns false as Decimal should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeDecimal() + { + return _flagDecimal; + } + /// + /// Gets or Sets String + /// + [DataMember(Name = "string", EmitDefaultValue = false)] + public string String + { + get{ return _String;} + set + { + _String = value; + _flagString = true; + } + } + private string _String; + private bool _flagString; + + /// + /// Returns false as String should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeString() + { + return _flagString; + } + /// + /// Gets or Sets Byte + /// + [DataMember(Name = "byte", IsRequired = true, EmitDefaultValue = false)] + public byte[] Byte + { + get{ return _Byte;} + set + { + _Byte = value; + _flagByte = true; + } + } + private byte[] _Byte; + private bool _flagByte; + + /// + /// Returns false as Byte should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeByte() + { + return _flagByte; + } + /// + /// Gets or Sets Binary + /// + [DataMember(Name = "binary", EmitDefaultValue = false)] + public System.IO.Stream Binary + { + get{ return _Binary;} + set + { + _Binary = value; + _flagBinary = true; + } + } + private System.IO.Stream _Binary; + private bool _flagBinary; + + /// + /// Returns false as Binary should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeBinary() + { + return _flagBinary; + } + /// + /// Gets or Sets Date + /// + [JsonConverter(typeof(OpenAPIDateConverter))] + [DataMember(Name = "date", IsRequired = true, EmitDefaultValue = false)] + public DateTime Date + { + get{ return _Date;} + set + { + _Date = value; + _flagDate = true; + } + } + private DateTime _Date; + private bool _flagDate; + + /// + /// Returns false as Date should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeDate() + { + return _flagDate; + } + /// + /// Gets or Sets DateTime + /// + [DataMember(Name = "dateTime", EmitDefaultValue = false)] + public DateTime DateTime + { + get{ return _DateTime;} + set + { + _DateTime = value; + _flagDateTime = true; + } + } + private DateTime _DateTime; + private bool _flagDateTime; + + /// + /// Returns false as DateTime should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeDateTime() + { + return _flagDateTime; + } + /// + /// Gets or Sets Uuid + /// + [DataMember(Name = "uuid", EmitDefaultValue = false)] + public Guid Uuid + { + get{ return _Uuid;} + set + { + _Uuid = value; + _flagUuid = true; + } + } + private Guid _Uuid; + private bool _flagUuid; + + /// + /// Returns false as Uuid should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeUuid() + { + return _flagUuid; + } + /// + /// Gets or Sets Password + /// + [DataMember(Name = "password", IsRequired = true, EmitDefaultValue = false)] + public string Password + { + get{ return _Password;} + set + { + _Password = value; + _flagPassword = true; + } + } + private string _Password; + private bool _flagPassword; + + /// + /// Returns false as Password should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePassword() + { + return _flagPassword; + } + /// + /// A string that is a 10 digit number. Can have leading zeros. + /// + /// A string that is a 10 digit number. Can have leading zeros. + [DataMember(Name = "pattern_with_digits", EmitDefaultValue = false)] + public string PatternWithDigits + { + get{ return _PatternWithDigits;} + set + { + _PatternWithDigits = value; + _flagPatternWithDigits = true; + } + } + private string _PatternWithDigits; + private bool _flagPatternWithDigits; + + /// + /// Returns false as PatternWithDigits should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePatternWithDigits() + { + return _flagPatternWithDigits; + } + /// + /// A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. + /// + /// A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. + [DataMember(Name = "pattern_with_digits_and_delimiter", EmitDefaultValue = false)] + public string PatternWithDigitsAndDelimiter + { + get{ return _PatternWithDigitsAndDelimiter;} + set + { + _PatternWithDigitsAndDelimiter = value; + _flagPatternWithDigitsAndDelimiter = true; + } + } + private string _PatternWithDigitsAndDelimiter; + private bool _flagPatternWithDigitsAndDelimiter; + + /// + /// Returns false as PatternWithDigitsAndDelimiter should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePatternWithDigitsAndDelimiter() + { + return _flagPatternWithDigitsAndDelimiter; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class FormatTest {\n"); + sb.Append(" Integer: ").Append(Integer).Append("\n"); + sb.Append(" Int32: ").Append(Int32).Append("\n"); + sb.Append(" Int64: ").Append(Int64).Append("\n"); + sb.Append(" Number: ").Append(Number).Append("\n"); + sb.Append(" Float: ").Append(Float).Append("\n"); + sb.Append(" Double: ").Append(Double).Append("\n"); + sb.Append(" Decimal: ").Append(Decimal).Append("\n"); + sb.Append(" String: ").Append(String).Append("\n"); + sb.Append(" Byte: ").Append(Byte).Append("\n"); + sb.Append(" Binary: ").Append(Binary).Append("\n"); + sb.Append(" Date: ").Append(Date).Append("\n"); + sb.Append(" DateTime: ").Append(DateTime).Append("\n"); + sb.Append(" Uuid: ").Append(Uuid).Append("\n"); + sb.Append(" Password: ").Append(Password).Append("\n"); + sb.Append(" PatternWithDigits: ").Append(PatternWithDigits).Append("\n"); + sb.Append(" PatternWithDigitsAndDelimiter: ").Append(PatternWithDigitsAndDelimiter).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as FormatTest).AreEqual; + } + + /// + /// Returns true if FormatTest instances are equal + /// + /// Instance of FormatTest to be compared + /// Boolean + public bool Equals(FormatTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Integer.GetHashCode(); + hashCode = hashCode * 59 + this.Int32.GetHashCode(); + hashCode = hashCode * 59 + this.Int64.GetHashCode(); + hashCode = hashCode * 59 + this.Number.GetHashCode(); + hashCode = hashCode * 59 + this.Float.GetHashCode(); + hashCode = hashCode * 59 + this.Double.GetHashCode(); + hashCode = hashCode * 59 + this.Decimal.GetHashCode(); + if (this.String != null) + hashCode = hashCode * 59 + this.String.GetHashCode(); + if (this.Byte != null) + hashCode = hashCode * 59 + this.Byte.GetHashCode(); + if (this.Binary != null) + hashCode = hashCode * 59 + this.Binary.GetHashCode(); + if (this.Date != null) + hashCode = hashCode * 59 + this.Date.GetHashCode(); + if (this.DateTime != null) + hashCode = hashCode * 59 + this.DateTime.GetHashCode(); + if (this.Uuid != null) + hashCode = hashCode * 59 + this.Uuid.GetHashCode(); + if (this.Password != null) + hashCode = hashCode * 59 + this.Password.GetHashCode(); + if (this.PatternWithDigits != null) + hashCode = hashCode * 59 + this.PatternWithDigits.GetHashCode(); + if (this.PatternWithDigitsAndDelimiter != null) + hashCode = hashCode * 59 + this.PatternWithDigitsAndDelimiter.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + // Integer (int) maximum + if(this.Integer > (int)100) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Integer, must be a value less than or equal to 100.", new [] { "Integer" }); + } + + // Integer (int) minimum + if(this.Integer < (int)10) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Integer, must be a value greater than or equal to 10.", new [] { "Integer" }); + } + + // Int32 (int) maximum + if(this.Int32 > (int)200) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Int32, must be a value less than or equal to 200.", new [] { "Int32" }); + } + + // Int32 (int) minimum + if(this.Int32 < (int)20) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Int32, must be a value greater than or equal to 20.", new [] { "Int32" }); + } + + // Number (decimal) maximum + if(this.Number > (decimal)543.2) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Number, must be a value less than or equal to 543.2.", new [] { "Number" }); + } + + // Number (decimal) minimum + if(this.Number < (decimal)32.1) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Number, must be a value greater than or equal to 32.1.", new [] { "Number" }); + } + + // Float (float) maximum + if(this.Float > (float)987.6) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Float, must be a value less than or equal to 987.6.", new [] { "Float" }); + } + + // Float (float) minimum + if(this.Float < (float)54.3) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Float, must be a value greater than or equal to 54.3.", new [] { "Float" }); + } + + // Double (double) maximum + if(this.Double > (double)123.4) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Double, must be a value less than or equal to 123.4.", new [] { "Double" }); + } + + // Double (double) minimum + if(this.Double < (double)67.8) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Double, must be a value greater than or equal to 67.8.", new [] { "Double" }); + } + + // String (string) pattern + Regex regexString = new Regex(@"[a-z]", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase); + if (false == regexString.Match(this.String).Success) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for String, must match a pattern of " + regexString, new [] { "String" }); + } + + // Password (string) maxLength + if(this.Password != null && this.Password.Length > 64) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Password, length must be less than 64.", new [] { "Password" }); + } + + // Password (string) minLength + if(this.Password != null && this.Password.Length < 10) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for Password, length must be greater than 10.", new [] { "Password" }); + } + + // PatternWithDigits (string) pattern + Regex regexPatternWithDigits = new Regex(@"^\\d{10}$", RegexOptions.CultureInvariant); + if (false == regexPatternWithDigits.Match(this.PatternWithDigits).Success) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for PatternWithDigits, must match a pattern of " + regexPatternWithDigits, new [] { "PatternWithDigits" }); + } + + // PatternWithDigitsAndDelimiter (string) pattern + Regex regexPatternWithDigitsAndDelimiter = new Regex(@"^image_\\d{1,3}$", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase); + if (false == regexPatternWithDigitsAndDelimiter.Match(this.PatternWithDigitsAndDelimiter).Success) + { + yield return new System.ComponentModel.DataAnnotations.ValidationResult("Invalid value for PatternWithDigitsAndDelimiter, must match a pattern of " + regexPatternWithDigitsAndDelimiter, new [] { "PatternWithDigitsAndDelimiter" }); + } + + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Fruit.cs new file mode 100644 index 00000000000..132be5b4d3b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Fruit.cs @@ -0,0 +1,291 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// Fruit + /// + [JsonConverter(typeof(FruitJsonConverter))] + [DataContract(Name = "fruit")] + public partial class Fruit : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Apple. + public Fruit(Apple actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Banana. + public Fruit(Banana actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(Apple)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Banana)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: Apple, Banana"); + } + } + } + + /// + /// Get the actual instance of `Apple`. If the actual instanct is not `Apple`, + /// the InvalidClassException will be thrown + /// + /// An instance of Apple + public Apple GetApple() + { + return (Apple)this.ActualInstance; + } + + /// + /// Get the actual instance of `Banana`. If the actual instanct is not `Banana`, + /// the InvalidClassException will be thrown + /// + /// An instance of Banana + public Banana GetBanana() + { + return (Banana)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Fruit {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, Fruit.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of Fruit + /// + /// JSON string + /// An instance of Fruit + public static Fruit FromJson(string jsonString) + { + Fruit newFruit = null; + + if (jsonString == null) + { + return newFruit; + } + int match = 0; + List matchedTypes = new List(); + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(Apple).GetProperty("AdditionalProperties") == null) + { + newFruit = new Fruit(JsonConvert.DeserializeObject(jsonString, Fruit.SerializerSettings)); + } + else + { + newFruit = new Fruit(JsonConvert.DeserializeObject(jsonString, Fruit.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("Apple"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(Banana).GetProperty("AdditionalProperties") == null) + { + newFruit = new Fruit(JsonConvert.DeserializeObject(jsonString, Fruit.SerializerSettings)); + } + else + { + newFruit = new Fruit(JsonConvert.DeserializeObject(jsonString, Fruit.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("Banana"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newFruit; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Fruit).AreEqual; + } + + /// + /// Returns true if Fruit instances are equal + /// + /// Instance of Fruit to be compared + /// Boolean + public bool Equals(Fruit input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for Fruit + /// + public class FruitJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return Fruit.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FruitReq.cs new file mode 100644 index 00000000000..380896933df --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FruitReq.cs @@ -0,0 +1,300 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// FruitReq + /// + [JsonConverter(typeof(FruitReqJsonConverter))] + [DataContract(Name = "fruitReq")] + public partial class FruitReq : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + public FruitReq() + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of AppleReq. + public FruitReq(AppleReq actualInstance) + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance; + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of BananaReq. + public FruitReq(BananaReq actualInstance) + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance; + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(AppleReq)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(BananaReq)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: AppleReq, BananaReq"); + } + } + } + + /// + /// Get the actual instance of `AppleReq`. If the actual instanct is not `AppleReq`, + /// the InvalidClassException will be thrown + /// + /// An instance of AppleReq + public AppleReq GetAppleReq() + { + return (AppleReq)this.ActualInstance; + } + + /// + /// Get the actual instance of `BananaReq`. If the actual instanct is not `BananaReq`, + /// the InvalidClassException will be thrown + /// + /// An instance of BananaReq + public BananaReq GetBananaReq() + { + return (BananaReq)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class FruitReq {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, FruitReq.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of FruitReq + /// + /// JSON string + /// An instance of FruitReq + public static FruitReq FromJson(string jsonString) + { + FruitReq newFruitReq = null; + + if (jsonString == null) + { + return newFruitReq; + } + int match = 0; + List matchedTypes = new List(); + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(AppleReq).GetProperty("AdditionalProperties") == null) + { + newFruitReq = new FruitReq(JsonConvert.DeserializeObject(jsonString, FruitReq.SerializerSettings)); + } + else + { + newFruitReq = new FruitReq(JsonConvert.DeserializeObject(jsonString, FruitReq.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("AppleReq"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(BananaReq).GetProperty("AdditionalProperties") == null) + { + newFruitReq = new FruitReq(JsonConvert.DeserializeObject(jsonString, FruitReq.SerializerSettings)); + } + else + { + newFruitReq = new FruitReq(JsonConvert.DeserializeObject(jsonString, FruitReq.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("BananaReq"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newFruitReq; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as FruitReq).AreEqual; + } + + /// + /// Returns true if FruitReq instances are equal + /// + /// Instance of FruitReq to be compared + /// Boolean + public bool Equals(FruitReq input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for FruitReq + /// + public class FruitReqJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return FruitReq.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GmFruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GmFruit.cs new file mode 100644 index 00000000000..c168aa41d4c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GmFruit.cs @@ -0,0 +1,263 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// GmFruit + /// + [JsonConverter(typeof(GmFruitJsonConverter))] + [DataContract(Name = "gmFruit")] + public partial class GmFruit : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Apple. + public GmFruit(Apple actualInstance) + { + this.IsNullable = false; + this.SchemaType= "anyOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Banana. + public GmFruit(Banana actualInstance) + { + this.IsNullable = false; + this.SchemaType= "anyOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(Apple)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Banana)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: Apple, Banana"); + } + } + } + + /// + /// Get the actual instance of `Apple`. If the actual instanct is not `Apple`, + /// the InvalidClassException will be thrown + /// + /// An instance of Apple + public Apple GetApple() + { + return (Apple)this.ActualInstance; + } + + /// + /// Get the actual instance of `Banana`. If the actual instanct is not `Banana`, + /// the InvalidClassException will be thrown + /// + /// An instance of Banana + public Banana GetBanana() + { + return (Banana)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class GmFruit {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, GmFruit.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of GmFruit + /// + /// JSON string + /// An instance of GmFruit + public static GmFruit FromJson(string jsonString) + { + GmFruit newGmFruit = null; + + if (jsonString == null) + { + return newGmFruit; + } + + try + { + newGmFruit = new GmFruit(JsonConvert.DeserializeObject(jsonString, GmFruit.SerializerSettings)); + // deserialization is considered successful at this point if no exception has been thrown. + return newGmFruit; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + } + + try + { + newGmFruit = new GmFruit(JsonConvert.DeserializeObject(jsonString, GmFruit.SerializerSettings)); + // deserialization is considered successful at this point if no exception has been thrown. + return newGmFruit; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + } + + // no match found, throw an exception + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as GmFruit).AreEqual; + } + + /// + /// Returns true if GmFruit instances are equal + /// + /// Instance of GmFruit to be compared + /// Boolean + public bool Equals(GmFruit input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for GmFruit + /// + public class GmFruitJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return GmFruit.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GrandparentAnimal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GrandparentAnimal.cs new file mode 100644 index 00000000000..ab4b68f27ac --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GrandparentAnimal.cs @@ -0,0 +1,169 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// GrandparentAnimal + /// + [DataContract(Name = "GrandparentAnimal")] + [JsonConverter(typeof(JsonSubtypes), "PetType")] + [JsonSubtypes.KnownSubType(typeof(ChildCat), "ChildCat")] + [JsonSubtypes.KnownSubType(typeof(ParentPet), "ParentPet")] + public partial class GrandparentAnimal : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected GrandparentAnimal() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// petType (required). + public GrandparentAnimal(string petType = default(string)) + { + // to ensure "petType" is required (not null) + this._PetType = petType ?? throw new ArgumentNullException("petType is a required property for GrandparentAnimal and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets PetType + /// + [DataMember(Name = "pet_type", IsRequired = true, EmitDefaultValue = false)] + public string PetType + { + get{ return _PetType;} + set + { + _PetType = value; + _flagPetType = true; + } + } + private string _PetType; + private bool _flagPetType; + + /// + /// Returns false as PetType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePetType() + { + return _flagPetType; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class GrandparentAnimal {\n"); + sb.Append(" PetType: ").Append(PetType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as GrandparentAnimal).AreEqual; + } + + /// + /// Returns true if GrandparentAnimal instances are equal + /// + /// Instance of GrandparentAnimal to be compared + /// Boolean + public bool Equals(GrandparentAnimal input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.PetType != null) + hashCode = hashCode * 59 + this.PetType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs new file mode 100644 index 00000000000..76b3bfdcce3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs @@ -0,0 +1,152 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// HasOnlyReadOnly + /// + [DataContract(Name = "hasOnlyReadOnly")] + public partial class HasOnlyReadOnly : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public HasOnlyReadOnly() + { + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Bar + /// + [DataMember(Name = "bar", EmitDefaultValue = false)] + public string Bar { get; private set; } + + /// + /// Returns false as Bar should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeBar() + { + return false; + } + /// + /// Gets or Sets Foo + /// + [DataMember(Name = "foo", EmitDefaultValue = false)] + public string Foo { get; private set; } + + /// + /// Returns false as Foo should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeFoo() + { + return false; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class HasOnlyReadOnly {\n"); + sb.Append(" Bar: ").Append(Bar).Append("\n"); + sb.Append(" Foo: ").Append(Foo).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as HasOnlyReadOnly).AreEqual; + } + + /// + /// Returns true if HasOnlyReadOnly instances are equal + /// + /// Instance of HasOnlyReadOnly to be compared + /// Boolean + public bool Equals(HasOnlyReadOnly input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Bar != null) + hashCode = hashCode * 59 + this.Bar.GetHashCode(); + if (this.Foo != null) + hashCode = hashCode * 59 + this.Foo.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HealthCheckResult.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HealthCheckResult.cs new file mode 100644 index 00000000000..d0a48d18a8f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HealthCheckResult.cs @@ -0,0 +1,146 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Just a string to inform instance is up and running. Make it nullable in hope to get it as pointer in generated model. + /// + [DataContract(Name = "HealthCheckResult")] + public partial class HealthCheckResult : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// nullableMessage. + public HealthCheckResult(string nullableMessage = default(string)) + { + this._NullableMessage = nullableMessage; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets NullableMessage + /// + [DataMember(Name = "NullableMessage", EmitDefaultValue = true)] + public string NullableMessage + { + get{ return _NullableMessage;} + set + { + _NullableMessage = value; + _flagNullableMessage = true; + } + } + private string _NullableMessage; + private bool _flagNullableMessage; + + /// + /// Returns false as NullableMessage should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeNullableMessage() + { + return _flagNullableMessage; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class HealthCheckResult {\n"); + sb.Append(" NullableMessage: ").Append(NullableMessage).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as HealthCheckResult).AreEqual; + } + + /// + /// Returns true if HealthCheckResult instances are equal + /// + /// Instance of HealthCheckResult to be compared + /// Boolean + public bool Equals(HealthCheckResult input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.NullableMessage != null) + hashCode = hashCode * 59 + this.NullableMessage.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/InlineResponseDefault.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/InlineResponseDefault.cs new file mode 100644 index 00000000000..3110927e009 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/InlineResponseDefault.cs @@ -0,0 +1,146 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// InlineResponseDefault + /// + [DataContract(Name = "inline_response_default")] + public partial class InlineResponseDefault : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// _string. + public InlineResponseDefault(Foo _string = default(Foo)) + { + this._String = _string; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets String + /// + [DataMember(Name = "string", EmitDefaultValue = false)] + public Foo String + { + get{ return _String;} + set + { + _String = value; + _flagString = true; + } + } + private Foo _String; + private bool _flagString; + + /// + /// Returns false as String should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeString() + { + return _flagString; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class InlineResponseDefault {\n"); + sb.Append(" String: ").Append(String).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as InlineResponseDefault).AreEqual; + } + + /// + /// Returns true if InlineResponseDefault instances are equal + /// + /// Instance of InlineResponseDefault to be compared + /// Boolean + public bool Equals(InlineResponseDefault input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.String != null) + hashCode = hashCode * 59 + this.String.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs new file mode 100644 index 00000000000..f23664d54c9 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs @@ -0,0 +1,172 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// IsoscelesTriangle + /// + [DataContract(Name = "IsoscelesTriangle")] + public partial class IsoscelesTriangle : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected IsoscelesTriangle() { } + /// + /// Initializes a new instance of the class. + /// + /// shapeType (required). + /// triangleType (required). + public IsoscelesTriangle(string shapeType = default(string), string triangleType = default(string)) + { + // to ensure "shapeType" is required (not null) + this._ShapeType = shapeType ?? throw new ArgumentNullException("shapeType is a required property for IsoscelesTriangle and cannot be null"); + // to ensure "triangleType" is required (not null) + this._TriangleType = triangleType ?? throw new ArgumentNullException("triangleType is a required property for IsoscelesTriangle and cannot be null"); + } + + /// + /// Gets or Sets ShapeType + /// + [DataMember(Name = "shapeType", IsRequired = true, EmitDefaultValue = false)] + public string ShapeType + { + get{ return _ShapeType;} + set + { + _ShapeType = value; + _flagShapeType = true; + } + } + private string _ShapeType; + private bool _flagShapeType; + + /// + /// Returns false as ShapeType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeShapeType() + { + return _flagShapeType; + } + /// + /// Gets or Sets TriangleType + /// + [DataMember(Name = "triangleType", IsRequired = true, EmitDefaultValue = false)] + public string TriangleType + { + get{ return _TriangleType;} + set + { + _TriangleType = value; + _flagTriangleType = true; + } + } + private string _TriangleType; + private bool _flagTriangleType; + + /// + /// Returns false as TriangleType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeTriangleType() + { + return _flagTriangleType; + } + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class IsoscelesTriangle {\n"); + sb.Append(" ShapeType: ").Append(ShapeType).Append("\n"); + sb.Append(" TriangleType: ").Append(TriangleType).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as IsoscelesTriangle).AreEqual; + } + + /// + /// Returns true if IsoscelesTriangle instances are equal + /// + /// Instance of IsoscelesTriangle to be compared + /// Boolean + public bool Equals(IsoscelesTriangle input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ShapeType != null) + hashCode = hashCode * 59 + this.ShapeType.GetHashCode(); + if (this.TriangleType != null) + hashCode = hashCode * 59 + this.TriangleType.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/List.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/List.cs new file mode 100644 index 00000000000..dfb5a8abd4c --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/List.cs @@ -0,0 +1,146 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// List + /// + [DataContract(Name = "List")] + public partial class List : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// _123list. + public List(string _123list = default(string)) + { + this.__123List = _123list; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets _123List + /// + [DataMember(Name = "123-list", EmitDefaultValue = false)] + public string _123List + { + get{ return __123List;} + set + { + __123List = value; + _flag_123List = true; + } + } + private string __123List; + private bool _flag_123List; + + /// + /// Returns false as _123List should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize_123List() + { + return _flag_123List; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class List {\n"); + sb.Append(" _123List: ").Append(_123List).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as List).AreEqual; + } + + /// + /// Returns true if List instances are equal + /// + /// Instance of List to be compared + /// Boolean + public bool Equals(List input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this._123List != null) + hashCode = hashCode * 59 + this._123List.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Mammal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Mammal.cs new file mode 100644 index 00000000000..2e847a10eb6 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Mammal.cs @@ -0,0 +1,356 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// Mammal + /// + [JsonConverter(typeof(MammalJsonConverter))] + [DataContract(Name = "mammal")] + public partial class Mammal : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Pig. + public Mammal(Pig actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Whale. + public Mammal(Whale actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Zebra. + public Mammal(Zebra actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(Pig)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Whale)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Zebra)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: Pig, Whale, Zebra"); + } + } + } + + /// + /// Get the actual instance of `Pig`. If the actual instanct is not `Pig`, + /// the InvalidClassException will be thrown + /// + /// An instance of Pig + public Pig GetPig() + { + return (Pig)this.ActualInstance; + } + + /// + /// Get the actual instance of `Whale`. If the actual instanct is not `Whale`, + /// the InvalidClassException will be thrown + /// + /// An instance of Whale + public Whale GetWhale() + { + return (Whale)this.ActualInstance; + } + + /// + /// Get the actual instance of `Zebra`. If the actual instanct is not `Zebra`, + /// the InvalidClassException will be thrown + /// + /// An instance of Zebra + public Zebra GetZebra() + { + return (Zebra)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Mammal {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, Mammal.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of Mammal + /// + /// JSON string + /// An instance of Mammal + public static Mammal FromJson(string jsonString) + { + Mammal newMammal = null; + + if (jsonString == null) + { + return newMammal; + } + + string discriminatorValue = JObject.Parse(jsonString)["className"].ToString(); + switch (discriminatorValue) + { + case "Pig": + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); + return newMammal; + case "whale": + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); + return newMammal; + case "zebra": + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); + return newMammal; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Mammal. Possible values: Pig whale zebra", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(Pig).GetProperty("AdditionalProperties") == null) + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.SerializerSettings)); + } + else + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("Pig"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(Whale).GetProperty("AdditionalProperties") == null) + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.SerializerSettings)); + } + else + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("Whale"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(Zebra).GetProperty("AdditionalProperties") == null) + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.SerializerSettings)); + } + else + { + newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("Zebra"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newMammal; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Mammal).AreEqual; + } + + /// + /// Returns true if Mammal instances are equal + /// + /// Instance of Mammal to be compared + /// Boolean + public bool Equals(Mammal input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for Mammal + /// + public class MammalJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return Mammal.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MapTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MapTest.cs new file mode 100644 index 00000000000..46684e9a9b3 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MapTest.cs @@ -0,0 +1,255 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// MapTest + /// + [DataContract(Name = "MapTest")] + public partial class MapTest : IEquatable, IValidatableObject + { + /// + /// Defines Inner + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum InnerEnum + { + /// + /// Enum UPPER for value: UPPER + /// + [EnumMember(Value = "UPPER")] + UPPER = 1, + + /// + /// Enum Lower for value: lower + /// + [EnumMember(Value = "lower")] + Lower = 2 + + } + + + + /// + /// Gets or Sets MapOfEnumString + /// + + [DataMember(Name = "map_of_enum_string", EmitDefaultValue = false)] + public Dictionary MapOfEnumString + { + get{ return _MapOfEnumString;} + set + { + _MapOfEnumString = value; + _flagMapOfEnumString = true; + } + } + private Dictionary _MapOfEnumString; + private bool _flagMapOfEnumString; + + /// + /// Returns false as MapOfEnumString should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMapOfEnumString() + { + return _flagMapOfEnumString; + } + /// + /// Initializes a new instance of the class. + /// + /// mapMapOfString. + /// mapOfEnumString. + /// directMap. + /// indirectMap. + public MapTest(Dictionary> mapMapOfString = default(Dictionary>), Dictionary mapOfEnumString = default(Dictionary), Dictionary directMap = default(Dictionary), Dictionary indirectMap = default(Dictionary)) + { + this._MapMapOfString = mapMapOfString; + this._MapOfEnumString = mapOfEnumString; + this._DirectMap = directMap; + this._IndirectMap = indirectMap; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets MapMapOfString + /// + [DataMember(Name = "map_map_of_string", EmitDefaultValue = false)] + public Dictionary> MapMapOfString + { + get{ return _MapMapOfString;} + set + { + _MapMapOfString = value; + _flagMapMapOfString = true; + } + } + private Dictionary> _MapMapOfString; + private bool _flagMapMapOfString; + + /// + /// Returns false as MapMapOfString should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMapMapOfString() + { + return _flagMapMapOfString; + } + /// + /// Gets or Sets DirectMap + /// + [DataMember(Name = "direct_map", EmitDefaultValue = false)] + public Dictionary DirectMap + { + get{ return _DirectMap;} + set + { + _DirectMap = value; + _flagDirectMap = true; + } + } + private Dictionary _DirectMap; + private bool _flagDirectMap; + + /// + /// Returns false as DirectMap should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeDirectMap() + { + return _flagDirectMap; + } + /// + /// Gets or Sets IndirectMap + /// + [DataMember(Name = "indirect_map", EmitDefaultValue = false)] + public Dictionary IndirectMap + { + get{ return _IndirectMap;} + set + { + _IndirectMap = value; + _flagIndirectMap = true; + } + } + private Dictionary _IndirectMap; + private bool _flagIndirectMap; + + /// + /// Returns false as IndirectMap should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeIndirectMap() + { + return _flagIndirectMap; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class MapTest {\n"); + sb.Append(" MapMapOfString: ").Append(MapMapOfString).Append("\n"); + sb.Append(" MapOfEnumString: ").Append(MapOfEnumString).Append("\n"); + sb.Append(" DirectMap: ").Append(DirectMap).Append("\n"); + sb.Append(" IndirectMap: ").Append(IndirectMap).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as MapTest).AreEqual; + } + + /// + /// Returns true if MapTest instances are equal + /// + /// Instance of MapTest to be compared + /// Boolean + public bool Equals(MapTest input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.MapMapOfString != null) + hashCode = hashCode * 59 + this.MapMapOfString.GetHashCode(); + hashCode = hashCode * 59 + this.MapOfEnumString.GetHashCode(); + if (this.DirectMap != null) + hashCode = hashCode * 59 + this.DirectMap.GetHashCode(); + if (this.IndirectMap != null) + hashCode = hashCode * 59 + this.IndirectMap.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs new file mode 100644 index 00000000000..398f665583f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs @@ -0,0 +1,204 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// MixedPropertiesAndAdditionalPropertiesClass + /// + [DataContract(Name = "MixedPropertiesAndAdditionalPropertiesClass")] + public partial class MixedPropertiesAndAdditionalPropertiesClass : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// uuid. + /// dateTime. + /// map. + public MixedPropertiesAndAdditionalPropertiesClass(Guid uuid = default(Guid), DateTime dateTime = default(DateTime), Dictionary map = default(Dictionary)) + { + this._Uuid = uuid; + this._DateTime = dateTime; + this._Map = map; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Uuid + /// + [DataMember(Name = "uuid", EmitDefaultValue = false)] + public Guid Uuid + { + get{ return _Uuid;} + set + { + _Uuid = value; + _flagUuid = true; + } + } + private Guid _Uuid; + private bool _flagUuid; + + /// + /// Returns false as Uuid should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeUuid() + { + return _flagUuid; + } + /// + /// Gets or Sets DateTime + /// + [DataMember(Name = "dateTime", EmitDefaultValue = false)] + public DateTime DateTime + { + get{ return _DateTime;} + set + { + _DateTime = value; + _flagDateTime = true; + } + } + private DateTime _DateTime; + private bool _flagDateTime; + + /// + /// Returns false as DateTime should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeDateTime() + { + return _flagDateTime; + } + /// + /// Gets or Sets Map + /// + [DataMember(Name = "map", EmitDefaultValue = false)] + public Dictionary Map + { + get{ return _Map;} + set + { + _Map = value; + _flagMap = true; + } + } + private Dictionary _Map; + private bool _flagMap; + + /// + /// Returns false as Map should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMap() + { + return _flagMap; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class MixedPropertiesAndAdditionalPropertiesClass {\n"); + sb.Append(" Uuid: ").Append(Uuid).Append("\n"); + sb.Append(" DateTime: ").Append(DateTime).Append("\n"); + sb.Append(" Map: ").Append(Map).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as MixedPropertiesAndAdditionalPropertiesClass).AreEqual; + } + + /// + /// Returns true if MixedPropertiesAndAdditionalPropertiesClass instances are equal + /// + /// Instance of MixedPropertiesAndAdditionalPropertiesClass to be compared + /// Boolean + public bool Equals(MixedPropertiesAndAdditionalPropertiesClass input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Uuid != null) + hashCode = hashCode * 59 + this.Uuid.GetHashCode(); + if (this.DateTime != null) + hashCode = hashCode * 59 + this.DateTime.GetHashCode(); + if (this.Map != null) + hashCode = hashCode * 59 + this.Map.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Model200Response.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Model200Response.cs new file mode 100644 index 00000000000..551edfd19de --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Model200Response.cs @@ -0,0 +1,174 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Model for testing model name starting with number + /// + [DataContract(Name = "200_response")] + public partial class Model200Response : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// name. + /// _class. + public Model200Response(int name = default(int), string _class = default(string)) + { + this._Name = name; + this._Class = _class; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", EmitDefaultValue = false)] + public int Name + { + get{ return _Name;} + set + { + _Name = value; + _flagName = true; + } + } + private int _Name; + private bool _flagName; + + /// + /// Returns false as Name should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeName() + { + return _flagName; + } + /// + /// Gets or Sets Class + /// + [DataMember(Name = "class", EmitDefaultValue = false)] + public string Class + { + get{ return _Class;} + set + { + _Class = value; + _flagClass = true; + } + } + private string _Class; + private bool _flagClass; + + /// + /// Returns false as Class should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeClass() + { + return _flagClass; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Model200Response {\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Class: ").Append(Class).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Model200Response).AreEqual; + } + + /// + /// Returns true if Model200Response instances are equal + /// + /// Instance of Model200Response to be compared + /// Boolean + public bool Equals(Model200Response input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.Class != null) + hashCode = hashCode * 59 + this.Class.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ModelClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ModelClient.cs new file mode 100644 index 00000000000..0bef108925e --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ModelClient.cs @@ -0,0 +1,146 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ModelClient + /// + [DataContract(Name = "_Client")] + public partial class ModelClient : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// _client. + public ModelClient(string _client = default(string)) + { + this.__Client = _client; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets _Client + /// + [DataMember(Name = "client", EmitDefaultValue = false)] + public string _Client + { + get{ return __Client;} + set + { + __Client = value; + _flag_Client = true; + } + } + private string __Client; + private bool _flag_Client; + + /// + /// Returns false as _Client should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize_Client() + { + return _flag_Client; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ModelClient {\n"); + sb.Append(" _Client: ").Append(_Client).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ModelClient).AreEqual; + } + + /// + /// Returns true if ModelClient instances are equal + /// + /// Instance of ModelClient to be compared + /// Boolean + public bool Equals(ModelClient input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this._Client != null) + hashCode = hashCode * 59 + this._Client.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Name.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Name.cs new file mode 100644 index 00000000000..02b318f8a35 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Name.cs @@ -0,0 +1,214 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Model for testing model name same as property name + /// + [DataContract(Name = "Name")] + public partial class Name : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Name() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// name (required). + /// property. + public Name(int name = default(int), string property = default(string)) + { + this.__Name = name; + this._Property = property; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets _Name + /// + [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = false)] + public int _Name + { + get{ return __Name;} + set + { + __Name = value; + _flag_Name = true; + } + } + private int __Name; + private bool _flag_Name; + + /// + /// Returns false as _Name should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize_Name() + { + return _flag_Name; + } + /// + /// Gets or Sets SnakeCase + /// + [DataMember(Name = "snake_case", EmitDefaultValue = false)] + public int SnakeCase { get; private set; } + + /// + /// Returns false as SnakeCase should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeSnakeCase() + { + return false; + } + /// + /// Gets or Sets Property + /// + [DataMember(Name = "property", EmitDefaultValue = false)] + public string Property + { + get{ return _Property;} + set + { + _Property = value; + _flagProperty = true; + } + } + private string _Property; + private bool _flagProperty; + + /// + /// Returns false as Property should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeProperty() + { + return _flagProperty; + } + /// + /// Gets or Sets _123Number + /// + [DataMember(Name = "123Number", EmitDefaultValue = false)] + public int _123Number { get; private set; } + + /// + /// Returns false as _123Number should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize_123Number() + { + return false; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Name {\n"); + sb.Append(" _Name: ").Append(_Name).Append("\n"); + sb.Append(" SnakeCase: ").Append(SnakeCase).Append("\n"); + sb.Append(" Property: ").Append(Property).Append("\n"); + sb.Append(" _123Number: ").Append(_123Number).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Name).AreEqual; + } + + /// + /// Returns true if Name instances are equal + /// + /// Instance of Name to be compared + /// Boolean + public bool Equals(Name input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this._Name.GetHashCode(); + hashCode = hashCode * 59 + this.SnakeCase.GetHashCode(); + if (this.Property != null) + hashCode = hashCode * 59 + this.Property.GetHashCode(); + hashCode = hashCode * 59 + this._123Number.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableClass.cs new file mode 100644 index 00000000000..0df684cf534 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableClass.cs @@ -0,0 +1,457 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// NullableClass + /// + [DataContract(Name = "NullableClass")] + public partial class NullableClass : Dictionary, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// integerProp. + /// numberProp. + /// booleanProp. + /// stringProp. + /// dateProp. + /// datetimeProp. + /// arrayNullableProp. + /// arrayAndItemsNullableProp. + /// arrayItemsNullable. + /// objectNullableProp. + /// objectAndItemsNullableProp. + /// objectItemsNullable. + public NullableClass(int? integerProp = default(int?), decimal? numberProp = default(decimal?), bool? booleanProp = default(bool?), string stringProp = default(string), DateTime? dateProp = default(DateTime?), DateTime? datetimeProp = default(DateTime?), List arrayNullableProp = default(List), List arrayAndItemsNullableProp = default(List), List arrayItemsNullable = default(List), Dictionary objectNullableProp = default(Dictionary), Dictionary objectAndItemsNullableProp = default(Dictionary), Dictionary objectItemsNullable = default(Dictionary)) : base() + { + this._IntegerProp = integerProp; + this._NumberProp = numberProp; + this._BooleanProp = booleanProp; + this._StringProp = stringProp; + this._DateProp = dateProp; + this._DatetimeProp = datetimeProp; + this._ArrayNullableProp = arrayNullableProp; + this._ArrayAndItemsNullableProp = arrayAndItemsNullableProp; + this._ArrayItemsNullable = arrayItemsNullable; + this._ObjectNullableProp = objectNullableProp; + this._ObjectAndItemsNullableProp = objectAndItemsNullableProp; + this._ObjectItemsNullable = objectItemsNullable; + } + + /// + /// Gets or Sets IntegerProp + /// + [DataMember(Name = "integer_prop", EmitDefaultValue = true)] + public int? IntegerProp + { + get{ return _IntegerProp;} + set + { + _IntegerProp = value; + _flagIntegerProp = true; + } + } + private int? _IntegerProp; + private bool _flagIntegerProp; + + /// + /// Returns false as IntegerProp should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeIntegerProp() + { + return _flagIntegerProp; + } + /// + /// Gets or Sets NumberProp + /// + [DataMember(Name = "number_prop", EmitDefaultValue = true)] + public decimal? NumberProp + { + get{ return _NumberProp;} + set + { + _NumberProp = value; + _flagNumberProp = true; + } + } + private decimal? _NumberProp; + private bool _flagNumberProp; + + /// + /// Returns false as NumberProp should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeNumberProp() + { + return _flagNumberProp; + } + /// + /// Gets or Sets BooleanProp + /// + [DataMember(Name = "boolean_prop", EmitDefaultValue = true)] + public bool? BooleanProp + { + get{ return _BooleanProp;} + set + { + _BooleanProp = value; + _flagBooleanProp = true; + } + } + private bool? _BooleanProp; + private bool _flagBooleanProp; + + /// + /// Returns false as BooleanProp should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeBooleanProp() + { + return _flagBooleanProp; + } + /// + /// Gets or Sets StringProp + /// + [DataMember(Name = "string_prop", EmitDefaultValue = true)] + public string StringProp + { + get{ return _StringProp;} + set + { + _StringProp = value; + _flagStringProp = true; + } + } + private string _StringProp; + private bool _flagStringProp; + + /// + /// Returns false as StringProp should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeStringProp() + { + return _flagStringProp; + } + /// + /// Gets or Sets DateProp + /// + [JsonConverter(typeof(OpenAPIDateConverter))] + [DataMember(Name = "date_prop", EmitDefaultValue = true)] + public DateTime? DateProp + { + get{ return _DateProp;} + set + { + _DateProp = value; + _flagDateProp = true; + } + } + private DateTime? _DateProp; + private bool _flagDateProp; + + /// + /// Returns false as DateProp should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeDateProp() + { + return _flagDateProp; + } + /// + /// Gets or Sets DatetimeProp + /// + [DataMember(Name = "datetime_prop", EmitDefaultValue = true)] + public DateTime? DatetimeProp + { + get{ return _DatetimeProp;} + set + { + _DatetimeProp = value; + _flagDatetimeProp = true; + } + } + private DateTime? _DatetimeProp; + private bool _flagDatetimeProp; + + /// + /// Returns false as DatetimeProp should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeDatetimeProp() + { + return _flagDatetimeProp; + } + /// + /// Gets or Sets ArrayNullableProp + /// + [DataMember(Name = "array_nullable_prop", EmitDefaultValue = true)] + public List ArrayNullableProp + { + get{ return _ArrayNullableProp;} + set + { + _ArrayNullableProp = value; + _flagArrayNullableProp = true; + } + } + private List _ArrayNullableProp; + private bool _flagArrayNullableProp; + + /// + /// Returns false as ArrayNullableProp should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeArrayNullableProp() + { + return _flagArrayNullableProp; + } + /// + /// Gets or Sets ArrayAndItemsNullableProp + /// + [DataMember(Name = "array_and_items_nullable_prop", EmitDefaultValue = true)] + public List ArrayAndItemsNullableProp + { + get{ return _ArrayAndItemsNullableProp;} + set + { + _ArrayAndItemsNullableProp = value; + _flagArrayAndItemsNullableProp = true; + } + } + private List _ArrayAndItemsNullableProp; + private bool _flagArrayAndItemsNullableProp; + + /// + /// Returns false as ArrayAndItemsNullableProp should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeArrayAndItemsNullableProp() + { + return _flagArrayAndItemsNullableProp; + } + /// + /// Gets or Sets ArrayItemsNullable + /// + [DataMember(Name = "array_items_nullable", EmitDefaultValue = false)] + public List ArrayItemsNullable + { + get{ return _ArrayItemsNullable;} + set + { + _ArrayItemsNullable = value; + _flagArrayItemsNullable = true; + } + } + private List _ArrayItemsNullable; + private bool _flagArrayItemsNullable; + + /// + /// Returns false as ArrayItemsNullable should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeArrayItemsNullable() + { + return _flagArrayItemsNullable; + } + /// + /// Gets or Sets ObjectNullableProp + /// + [DataMember(Name = "object_nullable_prop", EmitDefaultValue = true)] + public Dictionary ObjectNullableProp + { + get{ return _ObjectNullableProp;} + set + { + _ObjectNullableProp = value; + _flagObjectNullableProp = true; + } + } + private Dictionary _ObjectNullableProp; + private bool _flagObjectNullableProp; + + /// + /// Returns false as ObjectNullableProp should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeObjectNullableProp() + { + return _flagObjectNullableProp; + } + /// + /// Gets or Sets ObjectAndItemsNullableProp + /// + [DataMember(Name = "object_and_items_nullable_prop", EmitDefaultValue = true)] + public Dictionary ObjectAndItemsNullableProp + { + get{ return _ObjectAndItemsNullableProp;} + set + { + _ObjectAndItemsNullableProp = value; + _flagObjectAndItemsNullableProp = true; + } + } + private Dictionary _ObjectAndItemsNullableProp; + private bool _flagObjectAndItemsNullableProp; + + /// + /// Returns false as ObjectAndItemsNullableProp should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeObjectAndItemsNullableProp() + { + return _flagObjectAndItemsNullableProp; + } + /// + /// Gets or Sets ObjectItemsNullable + /// + [DataMember(Name = "object_items_nullable", EmitDefaultValue = false)] + public Dictionary ObjectItemsNullable + { + get{ return _ObjectItemsNullable;} + set + { + _ObjectItemsNullable = value; + _flagObjectItemsNullable = true; + } + } + private Dictionary _ObjectItemsNullable; + private bool _flagObjectItemsNullable; + + /// + /// Returns false as ObjectItemsNullable should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeObjectItemsNullable() + { + return _flagObjectItemsNullable; + } + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class NullableClass {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" IntegerProp: ").Append(IntegerProp).Append("\n"); + sb.Append(" NumberProp: ").Append(NumberProp).Append("\n"); + sb.Append(" BooleanProp: ").Append(BooleanProp).Append("\n"); + sb.Append(" StringProp: ").Append(StringProp).Append("\n"); + sb.Append(" DateProp: ").Append(DateProp).Append("\n"); + sb.Append(" DatetimeProp: ").Append(DatetimeProp).Append("\n"); + sb.Append(" ArrayNullableProp: ").Append(ArrayNullableProp).Append("\n"); + sb.Append(" ArrayAndItemsNullableProp: ").Append(ArrayAndItemsNullableProp).Append("\n"); + sb.Append(" ArrayItemsNullable: ").Append(ArrayItemsNullable).Append("\n"); + sb.Append(" ObjectNullableProp: ").Append(ObjectNullableProp).Append("\n"); + sb.Append(" ObjectAndItemsNullableProp: ").Append(ObjectAndItemsNullableProp).Append("\n"); + sb.Append(" ObjectItemsNullable: ").Append(ObjectItemsNullable).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as NullableClass).AreEqual; + } + + /// + /// Returns true if NullableClass instances are equal + /// + /// Instance of NullableClass to be compared + /// Boolean + public bool Equals(NullableClass input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + if (this.IntegerProp != null) + hashCode = hashCode * 59 + this.IntegerProp.GetHashCode(); + if (this.NumberProp != null) + hashCode = hashCode * 59 + this.NumberProp.GetHashCode(); + if (this.BooleanProp != null) + hashCode = hashCode * 59 + this.BooleanProp.GetHashCode(); + if (this.StringProp != null) + hashCode = hashCode * 59 + this.StringProp.GetHashCode(); + if (this.DateProp != null) + hashCode = hashCode * 59 + this.DateProp.GetHashCode(); + if (this.DatetimeProp != null) + hashCode = hashCode * 59 + this.DatetimeProp.GetHashCode(); + if (this.ArrayNullableProp != null) + hashCode = hashCode * 59 + this.ArrayNullableProp.GetHashCode(); + if (this.ArrayAndItemsNullableProp != null) + hashCode = hashCode * 59 + this.ArrayAndItemsNullableProp.GetHashCode(); + if (this.ArrayItemsNullable != null) + hashCode = hashCode * 59 + this.ArrayItemsNullable.GetHashCode(); + if (this.ObjectNullableProp != null) + hashCode = hashCode * 59 + this.ObjectNullableProp.GetHashCode(); + if (this.ObjectAndItemsNullableProp != null) + hashCode = hashCode * 59 + this.ObjectAndItemsNullableProp.GetHashCode(); + if (this.ObjectItemsNullable != null) + hashCode = hashCode * 59 + this.ObjectItemsNullable.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableShape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableShape.cs new file mode 100644 index 00000000000..80339ebf79b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableShape.cs @@ -0,0 +1,316 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// The value may be a shape or the 'null' value. The 'nullable' attribute was introduced in OAS schema >= 3.0 and has been deprecated in OAS schema >= 3.1. + /// + [JsonConverter(typeof(NullableShapeJsonConverter))] + [DataContract(Name = "NullableShape")] + public partial class NullableShape : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + public NullableShape() + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Quadrilateral. + public NullableShape(Quadrilateral actualInstance) + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance; + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Triangle. + public NullableShape(Triangle actualInstance) + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance; + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(Quadrilateral)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Triangle)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: Quadrilateral, Triangle"); + } + } + } + + /// + /// Get the actual instance of `Quadrilateral`. If the actual instanct is not `Quadrilateral`, + /// the InvalidClassException will be thrown + /// + /// An instance of Quadrilateral + public Quadrilateral GetQuadrilateral() + { + return (Quadrilateral)this.ActualInstance; + } + + /// + /// Get the actual instance of `Triangle`. If the actual instanct is not `Triangle`, + /// the InvalidClassException will be thrown + /// + /// An instance of Triangle + public Triangle GetTriangle() + { + return (Triangle)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class NullableShape {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, NullableShape.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of NullableShape + /// + /// JSON string + /// An instance of NullableShape + public static NullableShape FromJson(string jsonString) + { + NullableShape newNullableShape = null; + + if (jsonString == null) + { + return newNullableShape; + } + + string discriminatorValue = JObject.Parse(jsonString)["shapeType"].ToString(); + switch (discriminatorValue) + { + case "Quadrilateral": + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); + return newNullableShape; + case "Triangle": + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); + return newNullableShape; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for NullableShape. Possible values: Quadrilateral Triangle", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(Quadrilateral).GetProperty("AdditionalProperties") == null) + { + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.SerializerSettings)); + } + else + { + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("Quadrilateral"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(Triangle).GetProperty("AdditionalProperties") == null) + { + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.SerializerSettings)); + } + else + { + newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("Triangle"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newNullableShape; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as NullableShape).AreEqual; + } + + /// + /// Returns true if NullableShape instances are equal + /// + /// Instance of NullableShape to be compared + /// Boolean + public bool Equals(NullableShape input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for NullableShape + /// + public class NullableShapeJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return NullableShape.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NumberOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NumberOnly.cs new file mode 100644 index 00000000000..9209ffb0261 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NumberOnly.cs @@ -0,0 +1,145 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// NumberOnly + /// + [DataContract(Name = "NumberOnly")] + public partial class NumberOnly : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// justNumber. + public NumberOnly(decimal justNumber = default(decimal)) + { + this._JustNumber = justNumber; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets JustNumber + /// + [DataMember(Name = "JustNumber", EmitDefaultValue = false)] + public decimal JustNumber + { + get{ return _JustNumber;} + set + { + _JustNumber = value; + _flagJustNumber = true; + } + } + private decimal _JustNumber; + private bool _flagJustNumber; + + /// + /// Returns false as JustNumber should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeJustNumber() + { + return _flagJustNumber; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class NumberOnly {\n"); + sb.Append(" JustNumber: ").Append(JustNumber).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as NumberOnly).AreEqual; + } + + /// + /// Returns true if NumberOnly instances are equal + /// + /// Instance of NumberOnly to be compared + /// Boolean + public bool Equals(NumberOnly input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.JustNumber.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Order.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Order.cs new file mode 100644 index 00000000000..57d93427399 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Order.cs @@ -0,0 +1,316 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Order + /// + [DataContract(Name = "Order")] + public partial class Order : IEquatable, IValidatableObject + { + /// + /// Order Status + /// + /// Order Status + [JsonConverter(typeof(StringEnumConverter))] + public enum StatusEnum + { + /// + /// Enum Placed for value: placed + /// + [EnumMember(Value = "placed")] + Placed = 1, + + /// + /// Enum Approved for value: approved + /// + [EnumMember(Value = "approved")] + Approved = 2, + + /// + /// Enum Delivered for value: delivered + /// + [EnumMember(Value = "delivered")] + Delivered = 3 + + } + + + /// + /// Order Status + /// + /// Order Status + + [DataMember(Name = "status", EmitDefaultValue = false)] + public StatusEnum? Status + { + get{ return _Status;} + set + { + _Status = value; + _flagStatus = true; + } + } + private StatusEnum? _Status; + private bool _flagStatus; + + /// + /// Returns false as Status should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeStatus() + { + return _flagStatus; + } + /// + /// Initializes a new instance of the class. + /// + /// id. + /// petId. + /// quantity. + /// shipDate. + /// Order Status. + /// complete (default to false). + public Order(long id = default(long), long petId = default(long), int quantity = default(int), DateTime shipDate = default(DateTime), StatusEnum? status = default(StatusEnum?), bool complete = false) + { + this._Id = id; + this._PetId = petId; + this._Quantity = quantity; + this._ShipDate = shipDate; + this._Status = status; + this.Complete = complete; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Id + /// + [DataMember(Name = "id", EmitDefaultValue = false)] + public long Id + { + get{ return _Id;} + set + { + _Id = value; + _flagId = true; + } + } + private long _Id; + private bool _flagId; + + /// + /// Returns false as Id should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeId() + { + return _flagId; + } + /// + /// Gets or Sets PetId + /// + [DataMember(Name = "petId", EmitDefaultValue = false)] + public long PetId + { + get{ return _PetId;} + set + { + _PetId = value; + _flagPetId = true; + } + } + private long _PetId; + private bool _flagPetId; + + /// + /// Returns false as PetId should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePetId() + { + return _flagPetId; + } + /// + /// Gets or Sets Quantity + /// + [DataMember(Name = "quantity", EmitDefaultValue = false)] + public int Quantity + { + get{ return _Quantity;} + set + { + _Quantity = value; + _flagQuantity = true; + } + } + private int _Quantity; + private bool _flagQuantity; + + /// + /// Returns false as Quantity should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeQuantity() + { + return _flagQuantity; + } + /// + /// Gets or Sets ShipDate + /// + [DataMember(Name = "shipDate", EmitDefaultValue = false)] + public DateTime ShipDate + { + get{ return _ShipDate;} + set + { + _ShipDate = value; + _flagShipDate = true; + } + } + private DateTime _ShipDate; + private bool _flagShipDate; + + /// + /// Returns false as ShipDate should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeShipDate() + { + return _flagShipDate; + } + /// + /// Gets or Sets Complete + /// + [DataMember(Name = "complete", EmitDefaultValue = true)] + public bool Complete + { + get{ return _Complete;} + set + { + _Complete = value; + _flagComplete = true; + } + } + private bool _Complete; + private bool _flagComplete; + + /// + /// Returns false as Complete should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeComplete() + { + return _flagComplete; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Order {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" PetId: ").Append(PetId).Append("\n"); + sb.Append(" Quantity: ").Append(Quantity).Append("\n"); + sb.Append(" ShipDate: ").Append(ShipDate).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" Complete: ").Append(Complete).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Order).AreEqual; + } + + /// + /// Returns true if Order instances are equal + /// + /// Instance of Order to be compared + /// Boolean + public bool Equals(Order input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Id.GetHashCode(); + hashCode = hashCode * 59 + this.PetId.GetHashCode(); + hashCode = hashCode * 59 + this.Quantity.GetHashCode(); + if (this.ShipDate != null) + hashCode = hashCode * 59 + this.ShipDate.GetHashCode(); + hashCode = hashCode * 59 + this.Status.GetHashCode(); + hashCode = hashCode * 59 + this.Complete.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterComposite.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterComposite.cs new file mode 100644 index 00000000000..9fb0d68d1a8 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterComposite.cs @@ -0,0 +1,202 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// OuterComposite + /// + [DataContract(Name = "OuterComposite")] + public partial class OuterComposite : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// myNumber. + /// myString. + /// myBoolean. + public OuterComposite(decimal myNumber = default(decimal), string myString = default(string), bool myBoolean = default(bool)) + { + this._MyNumber = myNumber; + this._MyString = myString; + this._MyBoolean = myBoolean; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets MyNumber + /// + [DataMember(Name = "my_number", EmitDefaultValue = false)] + public decimal MyNumber + { + get{ return _MyNumber;} + set + { + _MyNumber = value; + _flagMyNumber = true; + } + } + private decimal _MyNumber; + private bool _flagMyNumber; + + /// + /// Returns false as MyNumber should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMyNumber() + { + return _flagMyNumber; + } + /// + /// Gets or Sets MyString + /// + [DataMember(Name = "my_string", EmitDefaultValue = false)] + public string MyString + { + get{ return _MyString;} + set + { + _MyString = value; + _flagMyString = true; + } + } + private string _MyString; + private bool _flagMyString; + + /// + /// Returns false as MyString should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMyString() + { + return _flagMyString; + } + /// + /// Gets or Sets MyBoolean + /// + [DataMember(Name = "my_boolean", EmitDefaultValue = true)] + public bool MyBoolean + { + get{ return _MyBoolean;} + set + { + _MyBoolean = value; + _flagMyBoolean = true; + } + } + private bool _MyBoolean; + private bool _flagMyBoolean; + + /// + /// Returns false as MyBoolean should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeMyBoolean() + { + return _flagMyBoolean; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class OuterComposite {\n"); + sb.Append(" MyNumber: ").Append(MyNumber).Append("\n"); + sb.Append(" MyString: ").Append(MyString).Append("\n"); + sb.Append(" MyBoolean: ").Append(MyBoolean).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as OuterComposite).AreEqual; + } + + /// + /// Returns true if OuterComposite instances are equal + /// + /// Instance of OuterComposite to be compared + /// Boolean + public bool Equals(OuterComposite input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.MyNumber.GetHashCode(); + if (this.MyString != null) + hashCode = hashCode * 59 + this.MyString.GetHashCode(); + hashCode = hashCode * 59 + this.MyBoolean.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnum.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnum.cs new file mode 100644 index 00000000000..2aa496a2e07 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnum.cs @@ -0,0 +1,55 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Defines OuterEnum + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum OuterEnum + { + /// + /// Enum Placed for value: placed + /// + [EnumMember(Value = "placed")] + Placed = 1, + + /// + /// Enum Approved for value: approved + /// + [EnumMember(Value = "approved")] + Approved = 2, + + /// + /// Enum Delivered for value: delivered + /// + [EnumMember(Value = "delivered")] + Delivered = 3 + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs new file mode 100644 index 00000000000..dd79c7010d6 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnumDefaultValue.cs @@ -0,0 +1,55 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Defines OuterEnumDefaultValue + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum OuterEnumDefaultValue + { + /// + /// Enum Placed for value: placed + /// + [EnumMember(Value = "placed")] + Placed = 1, + + /// + /// Enum Approved for value: approved + /// + [EnumMember(Value = "approved")] + Approved = 2, + + /// + /// Enum Delivered for value: delivered + /// + [EnumMember(Value = "delivered")] + Delivered = 3 + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnumInteger.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnumInteger.cs new file mode 100644 index 00000000000..44dc91c700a --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnumInteger.cs @@ -0,0 +1,51 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Defines OuterEnumInteger + /// + public enum OuterEnumInteger + { + /// + /// Enum NUMBER_0 for value: 0 + /// + NUMBER_0 = 0, + + /// + /// Enum NUMBER_1 for value: 1 + /// + NUMBER_1 = 1, + + /// + /// Enum NUMBER_2 for value: 2 + /// + NUMBER_2 = 2 + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs new file mode 100644 index 00000000000..b927507cf97 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterEnumIntegerDefaultValue.cs @@ -0,0 +1,51 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Defines OuterEnumIntegerDefaultValue + /// + public enum OuterEnumIntegerDefaultValue + { + /// + /// Enum NUMBER_0 for value: 0 + /// + NUMBER_0 = 0, + + /// + /// Enum NUMBER_1 for value: 1 + /// + NUMBER_1 = 1, + + /// + /// Enum NUMBER_2 for value: 2 + /// + NUMBER_2 = 2 + + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ParentPet.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ParentPet.cs new file mode 100644 index 00000000000..a205b59b6d0 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ParentPet.cs @@ -0,0 +1,141 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ParentPet + /// + [DataContract(Name = "ParentPet")] + [JsonConverter(typeof(JsonSubtypes), "PetType")] + [JsonSubtypes.KnownSubType(typeof(ChildCat), "ChildCat")] + public partial class ParentPet : GrandparentAnimal, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ParentPet() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// petType (required) (default to "ParentPet"). + public ParentPet(string petType = "ParentPet") : base(petType) + { + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ParentPet {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ParentPet).AreEqual; + } + + /// + /// Returns true if ParentPet instances are equal + /// + /// Instance of ParentPet to be compared + /// Boolean + public bool Equals(ParentPet input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + return this.BaseValidate(validationContext); + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + protected IEnumerable BaseValidate(ValidationContext validationContext) + { + foreach(var x in BaseValidate(validationContext)) yield return x; + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pet.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pet.cs new file mode 100644 index 00000000000..d9b77cf3b8f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pet.cs @@ -0,0 +1,329 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Pet + /// + [DataContract(Name = "Pet")] + public partial class Pet : IEquatable, IValidatableObject + { + /// + /// pet status in the store + /// + /// pet status in the store + [JsonConverter(typeof(StringEnumConverter))] + public enum StatusEnum + { + /// + /// Enum Available for value: available + /// + [EnumMember(Value = "available")] + Available = 1, + + /// + /// Enum Pending for value: pending + /// + [EnumMember(Value = "pending")] + Pending = 2, + + /// + /// Enum Sold for value: sold + /// + [EnumMember(Value = "sold")] + Sold = 3 + + } + + + /// + /// pet status in the store + /// + /// pet status in the store + + [DataMember(Name = "status", EmitDefaultValue = false)] + public StatusEnum? Status + { + get{ return _Status;} + set + { + _Status = value; + _flagStatus = true; + } + } + private StatusEnum? _Status; + private bool _flagStatus; + + /// + /// Returns false as Status should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeStatus() + { + return _flagStatus; + } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Pet() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// id. + /// category. + /// name (required). + /// photoUrls (required). + /// tags. + /// pet status in the store. + public Pet(long id = default(long), Category category = default(Category), string name = default(string), List photoUrls = default(List), List tags = default(List), StatusEnum? status = default(StatusEnum?)) + { + // to ensure "name" is required (not null) + this._Name = name ?? throw new ArgumentNullException("name is a required property for Pet and cannot be null"); + // to ensure "photoUrls" is required (not null) + this._PhotoUrls = photoUrls ?? throw new ArgumentNullException("photoUrls is a required property for Pet and cannot be null"); + this._Id = id; + this._Category = category; + this._Tags = tags; + this._Status = status; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Id + /// + [DataMember(Name = "id", EmitDefaultValue = false)] + public long Id + { + get{ return _Id;} + set + { + _Id = value; + _flagId = true; + } + } + private long _Id; + private bool _flagId; + + /// + /// Returns false as Id should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeId() + { + return _flagId; + } + /// + /// Gets or Sets Category + /// + [DataMember(Name = "category", EmitDefaultValue = false)] + public Category Category + { + get{ return _Category;} + set + { + _Category = value; + _flagCategory = true; + } + } + private Category _Category; + private bool _flagCategory; + + /// + /// Returns false as Category should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeCategory() + { + return _flagCategory; + } + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = false)] + public string Name + { + get{ return _Name;} + set + { + _Name = value; + _flagName = true; + } + } + private string _Name; + private bool _flagName; + + /// + /// Returns false as Name should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeName() + { + return _flagName; + } + /// + /// Gets or Sets PhotoUrls + /// + [DataMember(Name = "photoUrls", IsRequired = true, EmitDefaultValue = false)] + public List PhotoUrls + { + get{ return _PhotoUrls;} + set + { + _PhotoUrls = value; + _flagPhotoUrls = true; + } + } + private List _PhotoUrls; + private bool _flagPhotoUrls; + + /// + /// Returns false as PhotoUrls should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePhotoUrls() + { + return _flagPhotoUrls; + } + /// + /// Gets or Sets Tags + /// + [DataMember(Name = "tags", EmitDefaultValue = false)] + public List Tags + { + get{ return _Tags;} + set + { + _Tags = value; + _flagTags = true; + } + } + private List _Tags; + private bool _flagTags; + + /// + /// Returns false as Tags should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeTags() + { + return _flagTags; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Pet {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Category: ").Append(Category).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" PhotoUrls: ").Append(PhotoUrls).Append("\n"); + sb.Append(" Tags: ").Append(Tags).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Pet).AreEqual; + } + + /// + /// Returns true if Pet instances are equal + /// + /// Instance of Pet to be compared + /// Boolean + public bool Equals(Pet input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Category != null) + hashCode = hashCode * 59 + this.Category.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.PhotoUrls != null) + hashCode = hashCode * 59 + this.PhotoUrls.GetHashCode(); + if (this.Tags != null) + hashCode = hashCode * 59 + this.Tags.GetHashCode(); + hashCode = hashCode * 59 + this.Status.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pig.cs new file mode 100644 index 00000000000..d8605861e63 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pig.cs @@ -0,0 +1,307 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// Pig + /// + [JsonConverter(typeof(PigJsonConverter))] + [DataContract(Name = "Pig")] + public partial class Pig : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of BasquePig. + public Pig(BasquePig actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of DanishPig. + public Pig(DanishPig actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(BasquePig)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(DanishPig)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: BasquePig, DanishPig"); + } + } + } + + /// + /// Get the actual instance of `BasquePig`. If the actual instanct is not `BasquePig`, + /// the InvalidClassException will be thrown + /// + /// An instance of BasquePig + public BasquePig GetBasquePig() + { + return (BasquePig)this.ActualInstance; + } + + /// + /// Get the actual instance of `DanishPig`. If the actual instanct is not `DanishPig`, + /// the InvalidClassException will be thrown + /// + /// An instance of DanishPig + public DanishPig GetDanishPig() + { + return (DanishPig)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Pig {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, Pig.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of Pig + /// + /// JSON string + /// An instance of Pig + public static Pig FromJson(string jsonString) + { + Pig newPig = null; + + if (jsonString == null) + { + return newPig; + } + + string discriminatorValue = JObject.Parse(jsonString)["className"].ToString(); + switch (discriminatorValue) + { + case "BasquePig": + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); + return newPig; + case "DanishPig": + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); + return newPig; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Pig. Possible values: BasquePig DanishPig", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(BasquePig).GetProperty("AdditionalProperties") == null) + { + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.SerializerSettings)); + } + else + { + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("BasquePig"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(DanishPig).GetProperty("AdditionalProperties") == null) + { + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.SerializerSettings)); + } + else + { + newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("DanishPig"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newPig; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Pig).AreEqual; + } + + /// + /// Returns true if Pig instances are equal + /// + /// Instance of Pig to be compared + /// Boolean + public bool Equals(Pig input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for Pig + /// + public class PigJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return Pig.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Quadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Quadrilateral.cs new file mode 100644 index 00000000000..17463ca09a4 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Quadrilateral.cs @@ -0,0 +1,307 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// Quadrilateral + /// + [JsonConverter(typeof(QuadrilateralJsonConverter))] + [DataContract(Name = "Quadrilateral")] + public partial class Quadrilateral : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of ComplexQuadrilateral. + public Quadrilateral(ComplexQuadrilateral actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of SimpleQuadrilateral. + public Quadrilateral(SimpleQuadrilateral actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(ComplexQuadrilateral)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(SimpleQuadrilateral)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: ComplexQuadrilateral, SimpleQuadrilateral"); + } + } + } + + /// + /// Get the actual instance of `ComplexQuadrilateral`. If the actual instanct is not `ComplexQuadrilateral`, + /// the InvalidClassException will be thrown + /// + /// An instance of ComplexQuadrilateral + public ComplexQuadrilateral GetComplexQuadrilateral() + { + return (ComplexQuadrilateral)this.ActualInstance; + } + + /// + /// Get the actual instance of `SimpleQuadrilateral`. If the actual instanct is not `SimpleQuadrilateral`, + /// the InvalidClassException will be thrown + /// + /// An instance of SimpleQuadrilateral + public SimpleQuadrilateral GetSimpleQuadrilateral() + { + return (SimpleQuadrilateral)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Quadrilateral {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, Quadrilateral.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of Quadrilateral + /// + /// JSON string + /// An instance of Quadrilateral + public static Quadrilateral FromJson(string jsonString) + { + Quadrilateral newQuadrilateral = null; + + if (jsonString == null) + { + return newQuadrilateral; + } + + string discriminatorValue = JObject.Parse(jsonString)["quadrilateralType"].ToString(); + switch (discriminatorValue) + { + case "ComplexQuadrilateral": + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); + return newQuadrilateral; + case "SimpleQuadrilateral": + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); + return newQuadrilateral; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Quadrilateral. Possible values: ComplexQuadrilateral SimpleQuadrilateral", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(ComplexQuadrilateral).GetProperty("AdditionalProperties") == null) + { + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.SerializerSettings)); + } + else + { + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("ComplexQuadrilateral"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(SimpleQuadrilateral).GetProperty("AdditionalProperties") == null) + { + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.SerializerSettings)); + } + else + { + newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("SimpleQuadrilateral"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newQuadrilateral; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Quadrilateral).AreEqual; + } + + /// + /// Returns true if Quadrilateral instances are equal + /// + /// Instance of Quadrilateral to be compared + /// Boolean + public bool Equals(Quadrilateral input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for Quadrilateral + /// + public class QuadrilateralJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return Quadrilateral.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs new file mode 100644 index 00000000000..08a2bfdd7fe --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs @@ -0,0 +1,155 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// QuadrilateralInterface + /// + [DataContract(Name = "QuadrilateralInterface")] + public partial class QuadrilateralInterface : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected QuadrilateralInterface() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// quadrilateralType (required). + public QuadrilateralInterface(string quadrilateralType = default(string)) + { + // to ensure "quadrilateralType" is required (not null) + this._QuadrilateralType = quadrilateralType ?? throw new ArgumentNullException("quadrilateralType is a required property for QuadrilateralInterface and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets QuadrilateralType + /// + [DataMember(Name = "quadrilateralType", IsRequired = true, EmitDefaultValue = false)] + public string QuadrilateralType + { + get{ return _QuadrilateralType;} + set + { + _QuadrilateralType = value; + _flagQuadrilateralType = true; + } + } + private string _QuadrilateralType; + private bool _flagQuadrilateralType; + + /// + /// Returns false as QuadrilateralType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeQuadrilateralType() + { + return _flagQuadrilateralType; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class QuadrilateralInterface {\n"); + sb.Append(" QuadrilateralType: ").Append(QuadrilateralType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as QuadrilateralInterface).AreEqual; + } + + /// + /// Returns true if QuadrilateralInterface instances are equal + /// + /// Instance of QuadrilateralInterface to be compared + /// Boolean + public bool Equals(QuadrilateralInterface input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.QuadrilateralType != null) + hashCode = hashCode * 59 + this.QuadrilateralType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs new file mode 100644 index 00000000000..0720f542905 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs @@ -0,0 +1,163 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ReadOnlyFirst + /// + [DataContract(Name = "ReadOnlyFirst")] + public partial class ReadOnlyFirst : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// baz. + public ReadOnlyFirst(string baz = default(string)) + { + this._Baz = baz; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Bar + /// + [DataMember(Name = "bar", EmitDefaultValue = false)] + public string Bar { get; private set; } + + /// + /// Returns false as Bar should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeBar() + { + return false; + } + /// + /// Gets or Sets Baz + /// + [DataMember(Name = "baz", EmitDefaultValue = false)] + public string Baz + { + get{ return _Baz;} + set + { + _Baz = value; + _flagBaz = true; + } + } + private string _Baz; + private bool _flagBaz; + + /// + /// Returns false as Baz should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeBaz() + { + return _flagBaz; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ReadOnlyFirst {\n"); + sb.Append(" Bar: ").Append(Bar).Append("\n"); + sb.Append(" Baz: ").Append(Baz).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ReadOnlyFirst).AreEqual; + } + + /// + /// Returns true if ReadOnlyFirst instances are equal + /// + /// Instance of ReadOnlyFirst to be compared + /// Boolean + public bool Equals(ReadOnlyFirst input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Bar != null) + hashCode = hashCode * 59 + this.Bar.GetHashCode(); + if (this.Baz != null) + hashCode = hashCode * 59 + this.Baz.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Return.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Return.cs new file mode 100644 index 00000000000..4d71922d6bf --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Return.cs @@ -0,0 +1,145 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Model for testing reserved words + /// + [DataContract(Name = "Return")] + public partial class Return : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// _return. + public Return(int _return = default(int)) + { + this.__Return = _return; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets _Return + /// + [DataMember(Name = "return", EmitDefaultValue = false)] + public int _Return + { + get{ return __Return;} + set + { + __Return = value; + _flag_Return = true; + } + } + private int __Return; + private bool _flag_Return; + + /// + /// Returns false as _Return should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize_Return() + { + return _flag_Return; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Return {\n"); + sb.Append(" _Return: ").Append(_Return).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Return).AreEqual; + } + + /// + /// Returns true if Return instances are equal + /// + /// Instance of Return to be compared + /// Boolean + public bool Equals(Return input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this._Return.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ScaleneTriangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ScaleneTriangle.cs new file mode 100644 index 00000000000..c99f9c1b94b --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ScaleneTriangle.cs @@ -0,0 +1,185 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ScaleneTriangle + /// + [DataContract(Name = "ScaleneTriangle")] + public partial class ScaleneTriangle : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ScaleneTriangle() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// shapeType (required). + /// triangleType (required). + public ScaleneTriangle(string shapeType = default(string), string triangleType = default(string)) + { + // to ensure "shapeType" is required (not null) + this._ShapeType = shapeType ?? throw new ArgumentNullException("shapeType is a required property for ScaleneTriangle and cannot be null"); + // to ensure "triangleType" is required (not null) + this._TriangleType = triangleType ?? throw new ArgumentNullException("triangleType is a required property for ScaleneTriangle and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ShapeType + /// + [DataMember(Name = "shapeType", IsRequired = true, EmitDefaultValue = false)] + public string ShapeType + { + get{ return _ShapeType;} + set + { + _ShapeType = value; + _flagShapeType = true; + } + } + private string _ShapeType; + private bool _flagShapeType; + + /// + /// Returns false as ShapeType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeShapeType() + { + return _flagShapeType; + } + /// + /// Gets or Sets TriangleType + /// + [DataMember(Name = "triangleType", IsRequired = true, EmitDefaultValue = false)] + public string TriangleType + { + get{ return _TriangleType;} + set + { + _TriangleType = value; + _flagTriangleType = true; + } + } + private string _TriangleType; + private bool _flagTriangleType; + + /// + /// Returns false as TriangleType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeTriangleType() + { + return _flagTriangleType; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ScaleneTriangle {\n"); + sb.Append(" ShapeType: ").Append(ShapeType).Append("\n"); + sb.Append(" TriangleType: ").Append(TriangleType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ScaleneTriangle).AreEqual; + } + + /// + /// Returns true if ScaleneTriangle instances are equal + /// + /// Instance of ScaleneTriangle to be compared + /// Boolean + public bool Equals(ScaleneTriangle input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ShapeType != null) + hashCode = hashCode * 59 + this.ShapeType.GetHashCode(); + if (this.TriangleType != null) + hashCode = hashCode * 59 + this.TriangleType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Shape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Shape.cs new file mode 100644 index 00000000000..e75e0e8b167 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Shape.cs @@ -0,0 +1,307 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// Shape + /// + [JsonConverter(typeof(ShapeJsonConverter))] + [DataContract(Name = "Shape")] + public partial class Shape : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Quadrilateral. + public Shape(Quadrilateral actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Triangle. + public Shape(Triangle actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(Quadrilateral)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Triangle)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: Quadrilateral, Triangle"); + } + } + } + + /// + /// Get the actual instance of `Quadrilateral`. If the actual instanct is not `Quadrilateral`, + /// the InvalidClassException will be thrown + /// + /// An instance of Quadrilateral + public Quadrilateral GetQuadrilateral() + { + return (Quadrilateral)this.ActualInstance; + } + + /// + /// Get the actual instance of `Triangle`. If the actual instanct is not `Triangle`, + /// the InvalidClassException will be thrown + /// + /// An instance of Triangle + public Triangle GetTriangle() + { + return (Triangle)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Shape {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, Shape.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of Shape + /// + /// JSON string + /// An instance of Shape + public static Shape FromJson(string jsonString) + { + Shape newShape = null; + + if (jsonString == null) + { + return newShape; + } + + string discriminatorValue = JObject.Parse(jsonString)["shapeType"].ToString(); + switch (discriminatorValue) + { + case "Quadrilateral": + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); + return newShape; + case "Triangle": + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); + return newShape; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Shape. Possible values: Quadrilateral Triangle", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(Quadrilateral).GetProperty("AdditionalProperties") == null) + { + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.SerializerSettings)); + } + else + { + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("Quadrilateral"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(Triangle).GetProperty("AdditionalProperties") == null) + { + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.SerializerSettings)); + } + else + { + newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("Triangle"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newShape; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Shape).AreEqual; + } + + /// + /// Returns true if Shape instances are equal + /// + /// Instance of Shape to be compared + /// Boolean + public bool Equals(Shape input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for Shape + /// + public class ShapeJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return Shape.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeInterface.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeInterface.cs new file mode 100644 index 00000000000..252d2f1b67d --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeInterface.cs @@ -0,0 +1,155 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// ShapeInterface + /// + [DataContract(Name = "ShapeInterface")] + public partial class ShapeInterface : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ShapeInterface() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// shapeType (required). + public ShapeInterface(string shapeType = default(string)) + { + // to ensure "shapeType" is required (not null) + this._ShapeType = shapeType ?? throw new ArgumentNullException("shapeType is a required property for ShapeInterface and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ShapeType + /// + [DataMember(Name = "shapeType", IsRequired = true, EmitDefaultValue = false)] + public string ShapeType + { + get{ return _ShapeType;} + set + { + _ShapeType = value; + _flagShapeType = true; + } + } + private string _ShapeType; + private bool _flagShapeType; + + /// + /// Returns false as ShapeType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeShapeType() + { + return _flagShapeType; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ShapeInterface {\n"); + sb.Append(" ShapeType: ").Append(ShapeType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ShapeInterface).AreEqual; + } + + /// + /// Returns true if ShapeInterface instances are equal + /// + /// Instance of ShapeInterface to be compared + /// Boolean + public bool Equals(ShapeInterface input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ShapeType != null) + hashCode = hashCode * 59 + this.ShapeType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeOrNull.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeOrNull.cs new file mode 100644 index 00000000000..7471bafb379 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeOrNull.cs @@ -0,0 +1,316 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// The value may be a shape or the 'null' value. This is introduced in OAS schema >= 3.1. + /// + [JsonConverter(typeof(ShapeOrNullJsonConverter))] + [DataContract(Name = "ShapeOrNull")] + public partial class ShapeOrNull : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + public ShapeOrNull() + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Quadrilateral. + public ShapeOrNull(Quadrilateral actualInstance) + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance; + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of Triangle. + public ShapeOrNull(Triangle actualInstance) + { + this.IsNullable = true; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance; + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(Quadrilateral)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(Triangle)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: Quadrilateral, Triangle"); + } + } + } + + /// + /// Get the actual instance of `Quadrilateral`. If the actual instanct is not `Quadrilateral`, + /// the InvalidClassException will be thrown + /// + /// An instance of Quadrilateral + public Quadrilateral GetQuadrilateral() + { + return (Quadrilateral)this.ActualInstance; + } + + /// + /// Get the actual instance of `Triangle`. If the actual instanct is not `Triangle`, + /// the InvalidClassException will be thrown + /// + /// An instance of Triangle + public Triangle GetTriangle() + { + return (Triangle)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ShapeOrNull {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, ShapeOrNull.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of ShapeOrNull + /// + /// JSON string + /// An instance of ShapeOrNull + public static ShapeOrNull FromJson(string jsonString) + { + ShapeOrNull newShapeOrNull = null; + + if (jsonString == null) + { + return newShapeOrNull; + } + + string discriminatorValue = JObject.Parse(jsonString)["shapeType"].ToString(); + switch (discriminatorValue) + { + case "Quadrilateral": + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); + return newShapeOrNull; + case "Triangle": + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); + return newShapeOrNull; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for ShapeOrNull. Possible values: Quadrilateral Triangle", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(Quadrilateral).GetProperty("AdditionalProperties") == null) + { + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.SerializerSettings)); + } + else + { + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("Quadrilateral"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(Triangle).GetProperty("AdditionalProperties") == null) + { + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.SerializerSettings)); + } + else + { + newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("Triangle"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newShapeOrNull; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as ShapeOrNull).AreEqual; + } + + /// + /// Returns true if ShapeOrNull instances are equal + /// + /// Instance of ShapeOrNull to be compared + /// Boolean + public bool Equals(ShapeOrNull input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for ShapeOrNull + /// + public class ShapeOrNullJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return ShapeOrNull.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs new file mode 100644 index 00000000000..987c37ca8fd --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs @@ -0,0 +1,185 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// SimpleQuadrilateral + /// + [DataContract(Name = "SimpleQuadrilateral")] + public partial class SimpleQuadrilateral : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected SimpleQuadrilateral() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// shapeType (required). + /// quadrilateralType (required). + public SimpleQuadrilateral(string shapeType = default(string), string quadrilateralType = default(string)) + { + // to ensure "shapeType" is required (not null) + this._ShapeType = shapeType ?? throw new ArgumentNullException("shapeType is a required property for SimpleQuadrilateral and cannot be null"); + // to ensure "quadrilateralType" is required (not null) + this._QuadrilateralType = quadrilateralType ?? throw new ArgumentNullException("quadrilateralType is a required property for SimpleQuadrilateral and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ShapeType + /// + [DataMember(Name = "shapeType", IsRequired = true, EmitDefaultValue = false)] + public string ShapeType + { + get{ return _ShapeType;} + set + { + _ShapeType = value; + _flagShapeType = true; + } + } + private string _ShapeType; + private bool _flagShapeType; + + /// + /// Returns false as ShapeType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeShapeType() + { + return _flagShapeType; + } + /// + /// Gets or Sets QuadrilateralType + /// + [DataMember(Name = "quadrilateralType", IsRequired = true, EmitDefaultValue = false)] + public string QuadrilateralType + { + get{ return _QuadrilateralType;} + set + { + _QuadrilateralType = value; + _flagQuadrilateralType = true; + } + } + private string _QuadrilateralType; + private bool _flagQuadrilateralType; + + /// + /// Returns false as QuadrilateralType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeQuadrilateralType() + { + return _flagQuadrilateralType; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class SimpleQuadrilateral {\n"); + sb.Append(" ShapeType: ").Append(ShapeType).Append("\n"); + sb.Append(" QuadrilateralType: ").Append(QuadrilateralType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as SimpleQuadrilateral).AreEqual; + } + + /// + /// Returns true if SimpleQuadrilateral instances are equal + /// + /// Instance of SimpleQuadrilateral to be compared + /// Boolean + public bool Equals(SimpleQuadrilateral input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ShapeType != null) + hashCode = hashCode * 59 + this.ShapeType.GetHashCode(); + if (this.QuadrilateralType != null) + hashCode = hashCode * 59 + this.QuadrilateralType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SpecialModelName.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SpecialModelName.cs new file mode 100644 index 00000000000..15361a89e62 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SpecialModelName.cs @@ -0,0 +1,174 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// SpecialModelName + /// + [DataContract(Name = "_special_model.name_")] + public partial class SpecialModelName : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// specialPropertyName. + /// specialModelName. + public SpecialModelName(long specialPropertyName = default(long), string specialModelName = default(string)) + { + this._SpecialPropertyName = specialPropertyName; + this.__SpecialModelName = specialModelName; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets SpecialPropertyName + /// + [DataMember(Name = "$special[property.name]", EmitDefaultValue = false)] + public long SpecialPropertyName + { + get{ return _SpecialPropertyName;} + set + { + _SpecialPropertyName = value; + _flagSpecialPropertyName = true; + } + } + private long _SpecialPropertyName; + private bool _flagSpecialPropertyName; + + /// + /// Returns false as SpecialPropertyName should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeSpecialPropertyName() + { + return _flagSpecialPropertyName; + } + /// + /// Gets or Sets _SpecialModelName + /// + [DataMember(Name = "_special_model.name_", EmitDefaultValue = false)] + public string _SpecialModelName + { + get{ return __SpecialModelName;} + set + { + __SpecialModelName = value; + _flag_SpecialModelName = true; + } + } + private string __SpecialModelName; + private bool _flag_SpecialModelName; + + /// + /// Returns false as _SpecialModelName should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerialize_SpecialModelName() + { + return _flag_SpecialModelName; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class SpecialModelName {\n"); + sb.Append(" SpecialPropertyName: ").Append(SpecialPropertyName).Append("\n"); + sb.Append(" _SpecialModelName: ").Append(_SpecialModelName).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as SpecialModelName).AreEqual; + } + + /// + /// Returns true if SpecialModelName instances are equal + /// + /// Instance of SpecialModelName to be compared + /// Boolean + public bool Equals(SpecialModelName input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.SpecialPropertyName.GetHashCode(); + if (this._SpecialModelName != null) + hashCode = hashCode * 59 + this._SpecialModelName.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Tag.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Tag.cs new file mode 100644 index 00000000000..573443ca6ad --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Tag.cs @@ -0,0 +1,174 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Tag + /// + [DataContract(Name = "Tag")] + public partial class Tag : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// id. + /// name. + public Tag(long id = default(long), string name = default(string)) + { + this._Id = id; + this._Name = name; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Id + /// + [DataMember(Name = "id", EmitDefaultValue = false)] + public long Id + { + get{ return _Id;} + set + { + _Id = value; + _flagId = true; + } + } + private long _Id; + private bool _flagId; + + /// + /// Returns false as Id should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeId() + { + return _flagId; + } + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name + { + get{ return _Name;} + set + { + _Name = value; + _flagName = true; + } + } + private string _Name; + private bool _flagName; + + /// + /// Returns false as Name should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeName() + { + return _flagName; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Tag {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Tag).AreEqual; + } + + /// + /// Returns true if Tag instances are equal + /// + /// Instance of Tag to be compared + /// Boolean + public bool Equals(Tag input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Triangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Triangle.cs new file mode 100644 index 00000000000..cccaa79a8ff --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Triangle.cs @@ -0,0 +1,356 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using JsonSubTypes; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; +using System.Reflection; + +namespace Org.OpenAPITools.Model +{ + /// + /// Triangle + /// + [JsonConverter(typeof(TriangleJsonConverter))] + [DataContract(Name = "Triangle")] + public partial class Triangle : AbstractOpenAPISchema, IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of EquilateralTriangle. + public Triangle(EquilateralTriangle actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of IsoscelesTriangle. + public Triangle(IsoscelesTriangle actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + /// + /// Initializes a new instance of the class + /// with the class + /// + /// An instance of ScaleneTriangle. + public Triangle(ScaleneTriangle actualInstance) + { + this.IsNullable = false; + this.SchemaType= "oneOf"; + this.ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); + } + + + private Object _actualInstance; + + /// + /// Gets or Sets ActualInstance + /// + public override Object ActualInstance + { + get + { + return _actualInstance; + } + set + { + if (value.GetType() == typeof(EquilateralTriangle)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(IsoscelesTriangle)) + { + this._actualInstance = value; + } + else if (value.GetType() == typeof(ScaleneTriangle)) + { + this._actualInstance = value; + } + else + { + throw new ArgumentException("Invalid instance found. Must be the following types: EquilateralTriangle, IsoscelesTriangle, ScaleneTriangle"); + } + } + } + + /// + /// Get the actual instance of `EquilateralTriangle`. If the actual instanct is not `EquilateralTriangle`, + /// the InvalidClassException will be thrown + /// + /// An instance of EquilateralTriangle + public EquilateralTriangle GetEquilateralTriangle() + { + return (EquilateralTriangle)this.ActualInstance; + } + + /// + /// Get the actual instance of `IsoscelesTriangle`. If the actual instanct is not `IsoscelesTriangle`, + /// the InvalidClassException will be thrown + /// + /// An instance of IsoscelesTriangle + public IsoscelesTriangle GetIsoscelesTriangle() + { + return (IsoscelesTriangle)this.ActualInstance; + } + + /// + /// Get the actual instance of `ScaleneTriangle`. If the actual instanct is not `ScaleneTriangle`, + /// the InvalidClassException will be thrown + /// + /// An instance of ScaleneTriangle + public ScaleneTriangle GetScaleneTriangle() + { + return (ScaleneTriangle)this.ActualInstance; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Triangle {\n"); + sb.Append(" ActualInstance: ").Append(this.ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonConvert.SerializeObject(this.ActualInstance, Triangle.SerializerSettings); + } + + /// + /// Converts the JSON string into an instance of Triangle + /// + /// JSON string + /// An instance of Triangle + public static Triangle FromJson(string jsonString) + { + Triangle newTriangle = null; + + if (jsonString == null) + { + return newTriangle; + } + + string discriminatorValue = JObject.Parse(jsonString)["triangleType"].ToString(); + switch (discriminatorValue) + { + case "EquilateralTriangle": + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); + return newTriangle; + case "IsoscelesTriangle": + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); + return newTriangle; + case "ScaleneTriangle": + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); + return newTriangle; + default: + System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Triangle. Possible values: EquilateralTriangle IsoscelesTriangle ScaleneTriangle", discriminatorValue)); + break; + } + + int match = 0; + List matchedTypes = new List(); + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(EquilateralTriangle).GetProperty("AdditionalProperties") == null) + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.SerializerSettings)); + } + else + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("EquilateralTriangle"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(IsoscelesTriangle).GetProperty("AdditionalProperties") == null) + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.SerializerSettings)); + } + else + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("IsoscelesTriangle"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); + } + + try + { + // if it does not contains "AdditionalProperties", use SerializerSettings to deserialize + if (typeof(ScaleneTriangle).GetProperty("AdditionalProperties") == null) + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.SerializerSettings)); + } + else + { + newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); + } + matchedTypes.Add("ScaleneTriangle"); + match++; + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); + } + + if (match == 0) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` cannot be deserialized into any schema defined."); + } + else if (match > 1) + { + throw new InvalidDataException("The JSON string `" + jsonString + "` incorrectly matches more than one schema (should be exactly one match): " + matchedTypes); + } + + // deserialization is considered successful at this point if no exception has been thrown. + return newTriangle; + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Triangle).AreEqual; + } + + /// + /// Returns true if Triangle instances are equal + /// + /// Instance of Triangle to be compared + /// Boolean + public bool Equals(Triangle input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ActualInstance != null) + hashCode = hashCode * 59 + this.ActualInstance.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + + /// + /// Custom JSON converter for Triangle + /// + public class TriangleJsonConverter : JsonConverter + { + /// + /// To write the JSON string + /// + /// JSON writer + /// Object to be converted into a JSON string + /// JSON Serializer + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteRawValue((String)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Existing value + /// JSON Serializer + /// The object converted from the JSON string + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if(reader.TokenType != JsonToken.Null) + { + return Triangle.FromJson(JObject.Load(reader).ToString(Formatting.None)); + } + return null; + } + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return false; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/TriangleInterface.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/TriangleInterface.cs new file mode 100644 index 00000000000..21ef9120066 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/TriangleInterface.cs @@ -0,0 +1,155 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// TriangleInterface + /// + [DataContract(Name = "TriangleInterface")] + public partial class TriangleInterface : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected TriangleInterface() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// triangleType (required). + public TriangleInterface(string triangleType = default(string)) + { + // to ensure "triangleType" is required (not null) + this._TriangleType = triangleType ?? throw new ArgumentNullException("triangleType is a required property for TriangleInterface and cannot be null"); + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets TriangleType + /// + [DataMember(Name = "triangleType", IsRequired = true, EmitDefaultValue = false)] + public string TriangleType + { + get{ return _TriangleType;} + set + { + _TriangleType = value; + _flagTriangleType = true; + } + } + private string _TriangleType; + private bool _flagTriangleType; + + /// + /// Returns false as TriangleType should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeTriangleType() + { + return _flagTriangleType; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class TriangleInterface {\n"); + sb.Append(" TriangleType: ").Append(TriangleType).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as TriangleInterface).AreEqual; + } + + /// + /// Returns true if TriangleInterface instances are equal + /// + /// Instance of TriangleInterface to be compared + /// Boolean + public bool Equals(TriangleInterface input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.TriangleType != null) + hashCode = hashCode * 59 + this.TriangleType.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/User.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/User.cs new file mode 100644 index 00000000000..16e9fdf6b7f --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/User.cs @@ -0,0 +1,468 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// User + /// + [DataContract(Name = "User")] + public partial class User : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// id. + /// username. + /// firstName. + /// lastName. + /// email. + /// password. + /// phone. + /// User Status. + /// test code generation for objects Value must be a map of strings to values. It cannot be the 'null' value.. + /// test code generation for nullable objects. Value must be a map of strings to values or the 'null' value.. + /// test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. See https://github.com/OAI/OpenAPI-Specification/issues/1389. + /// test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. The 'nullable' attribute does not change the allowed values.. + public User(long id = default(long), string username = default(string), string firstName = default(string), string lastName = default(string), string email = default(string), string password = default(string), string phone = default(string), int userStatus = default(int), Object objectWithNoDeclaredProps = default(Object), Object objectWithNoDeclaredPropsNullable = default(Object), Object anyTypeProp = default(Object), Object anyTypePropNullable = default(Object)) + { + this._Id = id; + this._Username = username; + this._FirstName = firstName; + this._LastName = lastName; + this._Email = email; + this._Password = password; + this._Phone = phone; + this._UserStatus = userStatus; + this._ObjectWithNoDeclaredProps = objectWithNoDeclaredProps; + this._ObjectWithNoDeclaredPropsNullable = objectWithNoDeclaredPropsNullable; + this._AnyTypeProp = anyTypeProp; + this._AnyTypePropNullable = anyTypePropNullable; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets Id + /// + [DataMember(Name = "id", EmitDefaultValue = false)] + public long Id + { + get{ return _Id;} + set + { + _Id = value; + _flagId = true; + } + } + private long _Id; + private bool _flagId; + + /// + /// Returns false as Id should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeId() + { + return _flagId; + } + /// + /// Gets or Sets Username + /// + [DataMember(Name = "username", EmitDefaultValue = false)] + public string Username + { + get{ return _Username;} + set + { + _Username = value; + _flagUsername = true; + } + } + private string _Username; + private bool _flagUsername; + + /// + /// Returns false as Username should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeUsername() + { + return _flagUsername; + } + /// + /// Gets or Sets FirstName + /// + [DataMember(Name = "firstName", EmitDefaultValue = false)] + public string FirstName + { + get{ return _FirstName;} + set + { + _FirstName = value; + _flagFirstName = true; + } + } + private string _FirstName; + private bool _flagFirstName; + + /// + /// Returns false as FirstName should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeFirstName() + { + return _flagFirstName; + } + /// + /// Gets or Sets LastName + /// + [DataMember(Name = "lastName", EmitDefaultValue = false)] + public string LastName + { + get{ return _LastName;} + set + { + _LastName = value; + _flagLastName = true; + } + } + private string _LastName; + private bool _flagLastName; + + /// + /// Returns false as LastName should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeLastName() + { + return _flagLastName; + } + /// + /// Gets or Sets Email + /// + [DataMember(Name = "email", EmitDefaultValue = false)] + public string Email + { + get{ return _Email;} + set + { + _Email = value; + _flagEmail = true; + } + } + private string _Email; + private bool _flagEmail; + + /// + /// Returns false as Email should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeEmail() + { + return _flagEmail; + } + /// + /// Gets or Sets Password + /// + [DataMember(Name = "password", EmitDefaultValue = false)] + public string Password + { + get{ return _Password;} + set + { + _Password = value; + _flagPassword = true; + } + } + private string _Password; + private bool _flagPassword; + + /// + /// Returns false as Password should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePassword() + { + return _flagPassword; + } + /// + /// Gets or Sets Phone + /// + [DataMember(Name = "phone", EmitDefaultValue = false)] + public string Phone + { + get{ return _Phone;} + set + { + _Phone = value; + _flagPhone = true; + } + } + private string _Phone; + private bool _flagPhone; + + /// + /// Returns false as Phone should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializePhone() + { + return _flagPhone; + } + /// + /// User Status + /// + /// User Status + [DataMember(Name = "userStatus", EmitDefaultValue = false)] + public int UserStatus + { + get{ return _UserStatus;} + set + { + _UserStatus = value; + _flagUserStatus = true; + } + } + private int _UserStatus; + private bool _flagUserStatus; + + /// + /// Returns false as UserStatus should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeUserStatus() + { + return _flagUserStatus; + } + /// + /// test code generation for objects Value must be a map of strings to values. It cannot be the 'null' value. + /// + /// test code generation for objects Value must be a map of strings to values. It cannot be the 'null' value. + [DataMember(Name = "objectWithNoDeclaredProps", EmitDefaultValue = false)] + public Object ObjectWithNoDeclaredProps + { + get{ return _ObjectWithNoDeclaredProps;} + set + { + _ObjectWithNoDeclaredProps = value; + _flagObjectWithNoDeclaredProps = true; + } + } + private Object _ObjectWithNoDeclaredProps; + private bool _flagObjectWithNoDeclaredProps; + + /// + /// Returns false as ObjectWithNoDeclaredProps should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeObjectWithNoDeclaredProps() + { + return _flagObjectWithNoDeclaredProps; + } + /// + /// test code generation for nullable objects. Value must be a map of strings to values or the 'null' value. + /// + /// test code generation for nullable objects. Value must be a map of strings to values or the 'null' value. + [DataMember(Name = "objectWithNoDeclaredPropsNullable", EmitDefaultValue = true)] + public Object ObjectWithNoDeclaredPropsNullable + { + get{ return _ObjectWithNoDeclaredPropsNullable;} + set + { + _ObjectWithNoDeclaredPropsNullable = value; + _flagObjectWithNoDeclaredPropsNullable = true; + } + } + private Object _ObjectWithNoDeclaredPropsNullable; + private bool _flagObjectWithNoDeclaredPropsNullable; + + /// + /// Returns false as ObjectWithNoDeclaredPropsNullable should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeObjectWithNoDeclaredPropsNullable() + { + return _flagObjectWithNoDeclaredPropsNullable; + } + /// + /// test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. See https://github.com/OAI/OpenAPI-Specification/issues/1389 + /// + /// test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. See https://github.com/OAI/OpenAPI-Specification/issues/1389 + [DataMember(Name = "anyTypeProp", EmitDefaultValue = true)] + public Object AnyTypeProp + { + get{ return _AnyTypeProp;} + set + { + _AnyTypeProp = value; + _flagAnyTypeProp = true; + } + } + private Object _AnyTypeProp; + private bool _flagAnyTypeProp; + + /// + /// Returns false as AnyTypeProp should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeAnyTypeProp() + { + return _flagAnyTypeProp; + } + /// + /// test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. The 'nullable' attribute does not change the allowed values. + /// + /// test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. The 'nullable' attribute does not change the allowed values. + [DataMember(Name = "anyTypePropNullable", EmitDefaultValue = true)] + public Object AnyTypePropNullable + { + get{ return _AnyTypePropNullable;} + set + { + _AnyTypePropNullable = value; + _flagAnyTypePropNullable = true; + } + } + private Object _AnyTypePropNullable; + private bool _flagAnyTypePropNullable; + + /// + /// Returns false as AnyTypePropNullable should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeAnyTypePropNullable() + { + return _flagAnyTypePropNullable; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class User {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Username: ").Append(Username).Append("\n"); + sb.Append(" FirstName: ").Append(FirstName).Append("\n"); + sb.Append(" LastName: ").Append(LastName).Append("\n"); + sb.Append(" Email: ").Append(Email).Append("\n"); + sb.Append(" Password: ").Append(Password).Append("\n"); + sb.Append(" Phone: ").Append(Phone).Append("\n"); + sb.Append(" UserStatus: ").Append(UserStatus).Append("\n"); + sb.Append(" ObjectWithNoDeclaredProps: ").Append(ObjectWithNoDeclaredProps).Append("\n"); + sb.Append(" ObjectWithNoDeclaredPropsNullable: ").Append(ObjectWithNoDeclaredPropsNullable).Append("\n"); + sb.Append(" AnyTypeProp: ").Append(AnyTypeProp).Append("\n"); + sb.Append(" AnyTypePropNullable: ").Append(AnyTypePropNullable).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as User).AreEqual; + } + + /// + /// Returns true if User instances are equal + /// + /// Instance of User to be compared + /// Boolean + public bool Equals(User input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Username != null) + hashCode = hashCode * 59 + this.Username.GetHashCode(); + if (this.FirstName != null) + hashCode = hashCode * 59 + this.FirstName.GetHashCode(); + if (this.LastName != null) + hashCode = hashCode * 59 + this.LastName.GetHashCode(); + if (this.Email != null) + hashCode = hashCode * 59 + this.Email.GetHashCode(); + if (this.Password != null) + hashCode = hashCode * 59 + this.Password.GetHashCode(); + if (this.Phone != null) + hashCode = hashCode * 59 + this.Phone.GetHashCode(); + hashCode = hashCode * 59 + this.UserStatus.GetHashCode(); + if (this.ObjectWithNoDeclaredProps != null) + hashCode = hashCode * 59 + this.ObjectWithNoDeclaredProps.GetHashCode(); + if (this.ObjectWithNoDeclaredPropsNullable != null) + hashCode = hashCode * 59 + this.ObjectWithNoDeclaredPropsNullable.GetHashCode(); + if (this.AnyTypeProp != null) + hashCode = hashCode * 59 + this.AnyTypeProp.GetHashCode(); + if (this.AnyTypePropNullable != null) + hashCode = hashCode * 59 + this.AnyTypePropNullable.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Whale.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Whale.cs new file mode 100644 index 00000000000..74433740aa0 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Whale.cs @@ -0,0 +1,211 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Whale + /// + [DataContract(Name = "whale")] + public partial class Whale : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Whale() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// hasBaleen. + /// hasTeeth. + /// className (required). + public Whale(bool hasBaleen = default(bool), bool hasTeeth = default(bool), string className = default(string)) + { + // to ensure "className" is required (not null) + this._ClassName = className ?? throw new ArgumentNullException("className is a required property for Whale and cannot be null"); + this._HasBaleen = hasBaleen; + this._HasTeeth = hasTeeth; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets HasBaleen + /// + [DataMember(Name = "hasBaleen", EmitDefaultValue = true)] + public bool HasBaleen + { + get{ return _HasBaleen;} + set + { + _HasBaleen = value; + _flagHasBaleen = true; + } + } + private bool _HasBaleen; + private bool _flagHasBaleen; + + /// + /// Returns false as HasBaleen should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeHasBaleen() + { + return _flagHasBaleen; + } + /// + /// Gets or Sets HasTeeth + /// + [DataMember(Name = "hasTeeth", EmitDefaultValue = true)] + public bool HasTeeth + { + get{ return _HasTeeth;} + set + { + _HasTeeth = value; + _flagHasTeeth = true; + } + } + private bool _HasTeeth; + private bool _flagHasTeeth; + + /// + /// Returns false as HasTeeth should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeHasTeeth() + { + return _flagHasTeeth; + } + /// + /// Gets or Sets ClassName + /// + [DataMember(Name = "className", IsRequired = true, EmitDefaultValue = false)] + public string ClassName + { + get{ return _ClassName;} + set + { + _ClassName = value; + _flagClassName = true; + } + } + private string _ClassName; + private bool _flagClassName; + + /// + /// Returns false as ClassName should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeClassName() + { + return _flagClassName; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Whale {\n"); + sb.Append(" HasBaleen: ").Append(HasBaleen).Append("\n"); + sb.Append(" HasTeeth: ").Append(HasTeeth).Append("\n"); + sb.Append(" ClassName: ").Append(ClassName).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Whale).AreEqual; + } + + /// + /// Returns true if Whale instances are equal + /// + /// Instance of Whale to be compared + /// Boolean + public bool Equals(Whale input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = hashCode * 59 + this.HasBaleen.GetHashCode(); + hashCode = hashCode * 59 + this.HasTeeth.GetHashCode(); + if (this.ClassName != null) + hashCode = hashCode * 59 + this.ClassName.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Zebra.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Zebra.cs new file mode 100644 index 00000000000..ea635932f88 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Zebra.cs @@ -0,0 +1,212 @@ +/* + * 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 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// Zebra + /// + [DataContract(Name = "zebra")] + public partial class Zebra : Dictionary, IEquatable, IValidatableObject + { + /// + /// Defines Type + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum TypeEnum + { + /// + /// Enum Plains for value: plains + /// + [EnumMember(Value = "plains")] + Plains = 1, + + /// + /// Enum Mountain for value: mountain + /// + [EnumMember(Value = "mountain")] + Mountain = 2, + + /// + /// Enum Grevys for value: grevys + /// + [EnumMember(Value = "grevys")] + Grevys = 3 + + } + + + /// + /// Gets or Sets Type + /// + + [DataMember(Name = "type", EmitDefaultValue = false)] + public TypeEnum? Type + { + get{ return _Type;} + set + { + _Type = value; + _flagType = true; + } + } + private TypeEnum? _Type; + private bool _flagType; + + /// + /// Returns false as Type should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeType() + { + return _flagType; + } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Zebra() + { + this.AdditionalProperties = new Dictionary(); + } + /// + /// Initializes a new instance of the class. + /// + /// type. + /// className (required). + public Zebra(TypeEnum? type = default(TypeEnum?), string className = default(string)) : base() + { + // to ensure "className" is required (not null) + this._ClassName = className ?? throw new ArgumentNullException("className is a required property for Zebra and cannot be null"); + this._Type = type; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets ClassName + /// + [DataMember(Name = "className", IsRequired = true, EmitDefaultValue = false)] + public string ClassName + { + get{ return _ClassName;} + set + { + _ClassName = value; + _flagClassName = true; + } + } + private string _ClassName; + private bool _flagClassName; + + /// + /// Returns false as ClassName should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeClassName() + { + return _flagClassName; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Zebra {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" ClassName: ").Append(ClassName).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as Zebra).AreEqual; + } + + /// + /// Returns true if Zebra instances are equal + /// + /// Instance of Zebra to be compared + /// Boolean + public bool Equals(Zebra input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + hashCode = hashCode * 59 + this.Type.GetHashCode(); + if (this.ClassName != null) + hashCode = hashCode * 59 + this.ClassName.GetHashCode(); + if (this.AdditionalProperties != null) + hashCode = hashCode * 59 + this.AdditionalProperties.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Org.OpenAPITools.csproj new file mode 100644 index 00000000000..46d46e09809 --- /dev/null +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Org.OpenAPITools.csproj @@ -0,0 +1,31 @@ + + + + false + netstandard2.0 + Org.OpenAPITools + Org.OpenAPITools + Library + OpenAPI + OpenAPI + OpenAPI Library + A library generated from a OpenAPI doc + No Copyright + Org.OpenAPITools + 1.0.0 + bin\$(Configuration)\$(TargetFramework)\Org.OpenAPITools.xml + https://github.com/GIT_USER_ID/GIT_REPO_ID.git + git + Minor update + + + + + + + + + + + + diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs index 84c369eb478..c212df1374a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs @@ -56,7 +56,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Foo /// @@ -71,7 +70,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets additional properties /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Name.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Name.cs index 25cd5ddb635..020b46d015b 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Name.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Name.cs @@ -73,7 +73,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Property /// @@ -94,7 +93,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets additional properties /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs index 99ad2a8307c..93efaf44bf1 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs @@ -57,7 +57,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Baz /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs index 3a2c3d26a92..fecd58bf6e8 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs @@ -55,7 +55,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Foo /// @@ -70,7 +69,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets additional properties /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Name.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Name.cs index a6a01dd4ed3..0f5da18eafa 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Name.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/Name.cs @@ -72,7 +72,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Property /// @@ -93,7 +92,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets additional properties /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs index 4ab8f7d5c6a..20483c31cdc 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs @@ -56,7 +56,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Baz /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs index 3a2c3d26a92..fecd58bf6e8 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs @@ -55,7 +55,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Foo /// @@ -70,7 +69,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets additional properties /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Name.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Name.cs index a6a01dd4ed3..0f5da18eafa 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Name.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/Name.cs @@ -72,7 +72,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Property /// @@ -93,7 +92,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets additional properties /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs index 4ab8f7d5c6a..20483c31cdc 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs @@ -56,7 +56,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Baz /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs index 3a2c3d26a92..fecd58bf6e8 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs @@ -55,7 +55,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Foo /// @@ -70,7 +69,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets additional properties /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Name.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Name.cs index a6a01dd4ed3..0f5da18eafa 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Name.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/Name.cs @@ -72,7 +72,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Property /// @@ -93,7 +92,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets additional properties /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs index 4ab8f7d5c6a..20483c31cdc 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs @@ -56,7 +56,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Baz /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs index dd453ef37f6..5558958ab6a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs @@ -54,7 +54,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Foo /// @@ -69,7 +68,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Returns the string presentation of the object /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Name.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Name.cs index a2000b1598b..58a46775ccf 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Name.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/Name.cs @@ -68,7 +68,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Property /// @@ -89,7 +88,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Returns the string presentation of the object /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs index 17a7c072a84..5bff2796ed9 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs @@ -55,7 +55,6 @@ namespace Org.OpenAPITools.Model { return false; } - /// /// Gets or Sets Baz /// From cd2bd84bb69decc5c150e8a1dfb6877aa4e6c517 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 29 Jun 2021 20:37:09 +0800 Subject: [PATCH 166/192] update samples --- .../Org.OpenAPITools/Api/AnotherFakeApi.cs | 12 +- .../src/Org.OpenAPITools/Api/DefaultApi.cs | 12 +- .../src/Org.OpenAPITools/Api/FakeApi.cs | 132 +++++++++--------- .../Api/FakeClassnameTags123Api.cs | 16 +-- .../src/Org.OpenAPITools/Api/PetApi.cs | 112 +++++++-------- .../src/Org.OpenAPITools/Api/StoreApi.cs | 40 +++--- .../src/Org.OpenAPITools/Api/UserApi.cs | 68 ++++----- .../src/Org.OpenAPITools/Client/ApiClient.cs | 10 +- .../Org.OpenAPITools/Client/ApiResponse.cs | 4 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 14 +- .../Org.OpenAPITools/Client/Configuration.cs | 6 +- .../Client/HttpSigningConfiguration.cs | 28 ++-- .../Org.OpenAPITools/Client/IApiAccessor.cs | 2 +- .../Client/IAsynchronousClient.cs | 14 +- .../Client/ISynchronousClient.cs | 14 +- .../Org.OpenAPITools/Client/RequestOptions.cs | 14 +- .../src/Org.OpenAPITools/Model/Fruit.cs | 6 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 6 +- .../src/Org.OpenAPITools/Model/GmFruit.cs | 6 +- .../src/Org.OpenAPITools/Model/Mammal.cs | 10 +- .../Org.OpenAPITools/Model/NullableShape.cs | 8 +- .../src/Org.OpenAPITools/Model/Pig.cs | 8 +- .../Org.OpenAPITools/Model/Quadrilateral.cs | 8 +- .../src/Org.OpenAPITools/Model/Shape.cs | 8 +- .../src/Org.OpenAPITools/Model/ShapeOrNull.cs | 8 +- .../src/Org.OpenAPITools/Model/Triangle.cs | 10 +- 26 files changed, 288 insertions(+), 288 deletions(-) diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 94d8b854b0d..ad48306e00c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -109,7 +109,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public AnotherFakeApi(String basePath) + public AnotherFakeApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -225,12 +225,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -284,12 +284,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/DefaultApi.cs index 27789c4533a..8844aca4ab7 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -102,7 +102,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public DefaultApi(String basePath) + public DefaultApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -165,7 +165,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -212,11 +212,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -263,11 +263,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeApi.cs index d7749151314..fe862283f1e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeApi.cs @@ -826,7 +826,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeApi(String basePath) + public FakeApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -889,7 +889,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -936,11 +936,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -987,11 +987,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1039,12 +1039,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1094,12 +1094,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1148,12 +1148,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1203,12 +1203,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1257,12 +1257,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1312,12 +1312,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1366,12 +1366,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1421,12 +1421,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "*/*" }; @@ -1473,11 +1473,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1524,11 +1524,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1579,12 +1579,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1636,12 +1636,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1698,12 +1698,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1762,12 +1762,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1820,12 +1820,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1879,12 +1879,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1966,12 +1966,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2027,7 +2027,7 @@ namespace Org.OpenAPITools.Api // authentication (http_basic_test) required // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } @@ -2102,12 +2102,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2164,7 +2164,7 @@ namespace Org.OpenAPITools.Api // authentication (http_basic_test) required // http basic authentication required - if (!String.IsNullOrEmpty(this.Configuration.Username) || !String.IsNullOrEmpty(this.Configuration.Password)) + if (!string.IsNullOrEmpty(this.Configuration.Username) || !string.IsNullOrEmpty(this.Configuration.Password)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Basic " + Org.OpenAPITools.Client.ClientUtils.Base64Encode(this.Configuration.Username + ":" + this.Configuration.Password)); } @@ -2217,12 +2217,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2315,12 +2315,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2408,11 +2408,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2439,7 +2439,7 @@ namespace Org.OpenAPITools.Api // authentication (bearer_test) required // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -2490,11 +2490,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2522,7 +2522,7 @@ namespace Org.OpenAPITools.Api // authentication (bearer_test) required // bearer authentication required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -2565,12 +2565,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2622,12 +2622,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2684,12 +2684,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2748,12 +2748,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -2829,11 +2829,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -2913,11 +2913,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 56ebdf5fd10..d4fbb5868ad 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -109,7 +109,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeClassnameTags123Api(String basePath) + public FakeClassnameTags123Api(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -172,7 +172,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -225,12 +225,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -243,7 +243,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = modelClient; // authentication (api_key_query) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) { localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); } @@ -289,12 +289,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -308,7 +308,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.Data = modelClient; // authentication (api_key_query) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key_query"))) { localVarRequestOptions.QueryParameters.Add(Org.OpenAPITools.Client.ClientUtils.ParameterToMultiMap("", "api_key_query", this.Configuration.GetApiKeyWithPrefix("api_key_query"))); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/PetApi.cs index 61759145f12..2bf19af1b1a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/PetApi.cs @@ -471,7 +471,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public PetApi(String basePath) + public PetApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -534,7 +534,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -586,13 +586,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -621,7 +621,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -666,13 +666,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -702,7 +702,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -743,11 +743,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -764,7 +764,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -807,11 +807,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -829,7 +829,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -873,11 +873,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -908,7 +908,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -954,11 +954,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -990,7 +990,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1034,11 +1034,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1069,7 +1069,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1115,11 +1115,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1151,7 +1151,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1191,11 +1191,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1209,7 +1209,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1251,11 +1251,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1270,7 +1270,7 @@ namespace Org.OpenAPITools.Api localVarRequestOptions.PathParameters.Add("petId", Org.OpenAPITools.Client.ClientUtils.ParameterToString(petId)); // path parameter // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -1313,13 +1313,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1348,7 +1348,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1393,13 +1393,13 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json", "application/xml" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1429,7 +1429,7 @@ namespace Org.OpenAPITools.Api } // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1472,12 +1472,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1498,7 +1498,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1543,12 +1543,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/x-www-form-urlencoded" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1570,7 +1570,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1614,12 +1614,12 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1641,7 +1641,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1687,12 +1687,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1715,7 +1715,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1763,12 +1763,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1787,7 +1787,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } @@ -1837,12 +1837,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "multipart/form-data" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -1862,7 +1862,7 @@ namespace Org.OpenAPITools.Api // authentication (petstore_auth) required // oauth required - if (!String.IsNullOrEmpty(this.Configuration.AccessToken)) + if (!string.IsNullOrEmpty(this.Configuration.AccessToken)) { localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/StoreApi.cs index 6ab56c9e9bf..ad7387db705 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/StoreApi.cs @@ -234,7 +234,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public StoreApi(String basePath) + public StoreApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -297,7 +297,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -349,11 +349,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -405,11 +405,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -455,11 +455,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -471,7 +471,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -511,11 +511,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/json" }; @@ -528,7 +528,7 @@ namespace Org.OpenAPITools.Api // authentication (api_key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api_key"))) { localVarRequestOptions.HeaderParameters.Add("api_key", this.Configuration.GetApiKeyWithPrefix("api_key")); } @@ -568,11 +568,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -623,11 +623,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -681,12 +681,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -741,12 +741,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/UserApi.cs index 80436c9b433..a2f2598c8ac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Api/UserApi.cs @@ -406,7 +406,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public UserApi(String basePath) + public UserApi(string basePath) { this.Configuration = Org.OpenAPITools.Client.Configuration.MergeConfigurations( Org.OpenAPITools.Client.GlobalConfiguration.Instance, @@ -469,7 +469,7 @@ namespace Org.OpenAPITools.Api /// Gets the base path of the API client. /// /// The base path - public String GetBasePath() + public string GetBasePath() { return this.Configuration.BasePath; } @@ -521,12 +521,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -578,12 +578,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -634,12 +634,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -691,12 +691,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -747,12 +747,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -804,12 +804,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -860,11 +860,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -916,11 +916,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -972,11 +972,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1031,11 +1031,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1095,11 +1095,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1161,11 +1161,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { "application/xml", "application/json" }; @@ -1213,11 +1213,11 @@ namespace Org.OpenAPITools.Api { Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1262,11 +1262,11 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; @@ -1322,12 +1322,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes); @@ -1386,12 +1386,12 @@ namespace Org.OpenAPITools.Api Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions(); - String[] _contentTypes = new String[] { + string[] _contentTypes = new string[] { "application/json" }; // to determine the Accept header - String[] _accepts = new String[] { + string[] _accepts = new string[] { }; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiClient.cs index c3d43b29bb4..68cf1fd135b 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiClient.cs @@ -106,7 +106,7 @@ namespace Org.OpenAPITools.Client var bytes = response.RawBytes; if (response.Headers != null) { - var filePath = String.IsNullOrEmpty(_configuration.TempFolderPath) + var filePath = string.IsNullOrEmpty(_configuration.TempFolderPath) ? Path.GetTempPath() : _configuration.TempFolderPath; var regex = new Regex(@"Content-Disposition=.*filename=['""]?([^'""\s]+)['""]?$"); @@ -130,7 +130,7 @@ namespace Org.OpenAPITools.Client return DateTime.Parse(response.Content, null, System.Globalization.DateTimeStyles.RoundtripKind); } - if (type == typeof(String) || type.Name.StartsWith("System.Nullable")) // return primitive type + if (type == typeof(string) || type.Name.StartsWith("System.Nullable")) // return primitive type { return Convert.ChangeType(response.Content, type); } @@ -162,7 +162,7 @@ namespace Org.OpenAPITools.Client /// public partial class ApiClient : ISynchronousClient, IAsynchronousClient { - private readonly String _baseUrl; + private readonly string _baseUrl; /// /// Specifies the settings on a object. @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Client /// /// The target service's base path in URL format. /// - public ApiClient(String basePath) + public ApiClient(string basePath) { if (string.IsNullOrEmpty(basePath)) throw new ArgumentException("basePath cannot be empty"); @@ -268,7 +268,7 @@ namespace Org.OpenAPITools.Client /// private RestRequest NewRequest( HttpMethod method, - String path, + string path, RequestOptions options, IReadableConfiguration configuration) { diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiResponse.cs index 1b7d787c84b..ca2de833a5a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiResponse.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiResponse.cs @@ -44,7 +44,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - String ErrorText { get; set; } + string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. @@ -85,7 +85,7 @@ namespace Org.OpenAPITools.Client /// /// Gets or sets any error text defined by the calling client. /// - public String ErrorText { get; set; } + public string ErrorText { get; set; } /// /// Gets or sets any cookies passed along on the response. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ClientUtils.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ClientUtils.cs index 2b6e52d6065..3d038d5ce69 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ClientUtils.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ClientUtils.cs @@ -124,7 +124,7 @@ namespace Org.OpenAPITools.Client /// URL encode a string /// Credit/Ref: https://github.com/restsharp/RestSharp/blob/master/RestSharp/Extensions/StringExtensions.cs#L50 /// - /// String to be URL encoded + /// string to be URL encoded /// Byte array public static string UrlEncode(string input) { @@ -158,7 +158,7 @@ namespace Org.OpenAPITools.Client /// /// Encode string in base64 format. /// - /// String to be encoded. + /// string to be encoded. /// Encoded string. public static string Base64Encode(string text) { @@ -186,7 +186,7 @@ namespace Org.OpenAPITools.Client /// /// The Content-Type array to select from. /// The Content-Type header to use. - public static String SelectHeaderContentType(String[] contentTypes) + public static string SelectHeaderContentType(string[] contentTypes) { if (contentTypes.Length == 0) return null; @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Client /// /// The accepts array to select from. /// The Accept header to use. - public static String SelectHeaderAccept(String[] accepts) + public static string SelectHeaderAccept(string[] accepts) { if (accepts.Length == 0) return null; @@ -215,7 +215,7 @@ namespace Org.OpenAPITools.Client if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase)) return "application/json"; - return String.Join(",", accepts); + return string.Join(",", accepts); } /// @@ -233,9 +233,9 @@ namespace Org.OpenAPITools.Client /// /// MIME /// Returns True if MIME type is json. - public static bool IsJsonMime(String mime) + public static bool IsJsonMime(string mime) { - if (String.IsNullOrWhiteSpace(mime)) return false; + if (string.IsNullOrWhiteSpace(mime)) return false; return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json"); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/Configuration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/Configuration.cs index bca7db624cd..06154ad382c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/Configuration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/Configuration.cs @@ -67,7 +67,7 @@ namespace Org.OpenAPITools.Client /// Defines the base path of the target API server. /// Example: http://localhost:3000/v1/ /// - private String _basePath; + private string _basePath; /// /// Gets or sets the API key based on the authentication name. @@ -511,9 +511,9 @@ namespace Org.OpenAPITools.Client /// /// Returns a string with essential information for debugging. /// - public static String ToDebugReport() + public static string ToDebugReport() { - String report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; + string report = "C# SDK (Org.OpenAPITools) Debug Report:\n"; report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; report += " Version of the API: 1.0.0\n"; diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs index 1b9f9b7a99f..1d2d0019cae 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/HttpSigningConfiguration.cs @@ -120,7 +120,7 @@ namespace Org.OpenAPITools.Client } } - var httpValues = HttpUtility.ParseQueryString(String.Empty); + var httpValues = HttpUtility.ParseQueryString(string.Empty); foreach (var parameter in requestOptions.QueryParameters) { #if (NETCOREAPP) @@ -153,7 +153,7 @@ namespace Org.OpenAPITools.Client uriBuilder.Query = httpValues.ToString().Replace("+", "%20"); var dateTime = DateTime.Now; - String Digest = String.Empty; + string Digest = string.Empty; //get the body string requestBody = string.Empty; @@ -230,7 +230,7 @@ namespace Org.OpenAPITools.Client } } - var headersKeysString = String.Join(" ", HttpSignatureHeader.Keys); + var headersKeysString = string.Join(" ", HttpSignatureHeader.Keys); var headerValuesList = new List(); foreach (var keyVal in HttpSignatureHeader) @@ -411,10 +411,10 @@ namespace Org.OpenAPITools.Client return derBytes.ToArray(); } - private RSACryptoServiceProvider GetRSAProviderFromPemFile(String pemfile, SecureString keyPassPharse = null) + private RSACryptoServiceProvider GetRSAProviderFromPemFile(string pemfile, SecureString keyPassPharse = null) { - const String pempubheader = "-----BEGIN PUBLIC KEY-----"; - const String pempubfooter = "-----END PUBLIC KEY-----"; + const string pempubheader = "-----BEGIN PUBLIC KEY-----"; + const string pempubfooter = "-----END PUBLIC KEY-----"; bool isPrivateKeyFile = true; byte[] pemkey = null; @@ -441,11 +441,11 @@ namespace Org.OpenAPITools.Client return null; } - private byte[] ConvertPrivateKeyToBytes(String instr, SecureString keyPassPharse = null) + private byte[] ConvertPrivateKeyToBytes(string instr, SecureString keyPassPharse = null) { - const String pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; - const String pemprivfooter = "-----END RSA PRIVATE KEY-----"; - String pemstr = instr.Trim(); + const string pemprivheader = "-----BEGIN RSA PRIVATE KEY-----"; + const string pemprivfooter = "-----END RSA PRIVATE KEY-----"; + string pemstr = instr.Trim(); byte[] binkey; if (!pemstr.StartsWith(pemprivheader) || !pemstr.EndsWith(pemprivfooter)) @@ -456,7 +456,7 @@ namespace Org.OpenAPITools.Client StringBuilder sb = new StringBuilder(pemstr); sb.Replace(pemprivheader, ""); sb.Replace(pemprivfooter, ""); - String pvkstr = sb.ToString().Trim(); + string pvkstr = sb.ToString().Trim(); try { // if there are no PEM encryption info lines, this is an UNencrypted PEM private key @@ -472,12 +472,12 @@ namespace Org.OpenAPITools.Client { return null; } - String saltline = str.ReadLine(); + string saltline = str.ReadLine(); if (!saltline.StartsWith("DEK-Info: DES-EDE3-CBC,")) { return null; } - String saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); + string saltstr = saltline.Substring(saltline.IndexOf(",") + 1).Trim(); byte[] salt = new byte[saltstr.Length / 2]; for (int i = 0; i < salt.Length; i++) salt[i] = Convert.ToByte(saltstr.Substring(i * 2, 2), 16); @@ -487,7 +487,7 @@ namespace Org.OpenAPITools.Client } //------ remaining b64 data is encrypted RSA key ---- - String encryptedstr = str.ReadToEnd(); + string encryptedstr = str.ReadToEnd(); try { //should have b64 encrypted RSA key now diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IApiAccessor.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IApiAccessor.cs index 59465ae8e90..2bd76416004 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IApiAccessor.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IApiAccessor.cs @@ -27,7 +27,7 @@ namespace Org.OpenAPITools.Client /// Gets the base path of the API client. /// /// The base path - String GetBasePath(); + string GetBasePath(); /// /// Provides a factory method hook for the creation of exceptions. diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IAsynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IAsynchronousClient.cs index 8a6f726678a..601e86d561c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IAsynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/IAsynchronousClient.cs @@ -29,7 +29,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> GetAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> GetAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the POST http verb. @@ -40,7 +40,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PostAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PostAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PUT http verb. @@ -51,7 +51,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PutAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PutAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the DELETE http verb. @@ -62,7 +62,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> DeleteAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> DeleteAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the HEAD http verb. @@ -73,7 +73,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> HeadAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> HeadAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the OPTIONS http verb. @@ -84,7 +84,7 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> OptionsAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> OptionsAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); /// /// Executes a non-blocking call to some using the PATCH http verb. @@ -95,6 +95,6 @@ namespace Org.OpenAPITools.Client /// Cancellation Token to cancel the request. /// The return type. /// A task eventually representing the response data, decorated with - Task> PatchAsync(String path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + Task> PatchAsync(string path, RequestOptions options, IReadableConfiguration configuration = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ISynchronousClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ISynchronousClient.cs index d27f01a588b..0e0a7fedacf 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ISynchronousClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ISynchronousClient.cs @@ -28,7 +28,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Get(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Get(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the POST http verb. @@ -38,7 +38,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Post(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Post(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PUT http verb. @@ -48,7 +48,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Put(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Put(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the DELETE http verb. @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Delete(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Delete(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the HEAD http verb. @@ -68,7 +68,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Head(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Head(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the OPTIONS http verb. @@ -78,7 +78,7 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Options(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Options(string path, RequestOptions options, IReadableConfiguration configuration = null); /// /// Executes a blocking call to some using the PATCH http verb. @@ -88,6 +88,6 @@ namespace Org.OpenAPITools.Client /// Per-request configurable settings. /// The return type. /// The response data, decorated with - ApiResponse Patch(String path, RequestOptions options, IReadableConfiguration configuration = null); + ApiResponse Patch(string path, RequestOptions options, IReadableConfiguration configuration = null); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/RequestOptions.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/RequestOptions.cs index d8da585db9c..7a1d5b97a88 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/RequestOptions.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/RequestOptions.cs @@ -24,29 +24,29 @@ namespace Org.OpenAPITools.Client /// /// Parameters to be bound to path parts of the Request's URL /// - public Dictionary PathParameters { get; set; } + public Dictionary PathParameters { get; set; } /// /// Query parameters to be applied to the request. /// Keys may have 1 or more values associated. /// - public Multimap QueryParameters { get; set; } + public Multimap QueryParameters { get; set; } /// /// Header parameters to be applied to to the request. /// Keys may have 1 or more values associated. /// - public Multimap HeaderParameters { get; set; } + public Multimap HeaderParameters { get; set; } /// /// Form parameters to be sent along with the request. /// - public Dictionary FormParameters { get; set; } + public Dictionary FormParameters { get; set; } /// /// File parameters to be sent along with the request. /// - public Dictionary FileParameters { get; set; } + public Dictionary FileParameters { get; set; } /// /// Cookies to be sent along with the request. @@ -67,8 +67,8 @@ namespace Org.OpenAPITools.Client QueryParameters = new Multimap(); HeaderParameters = new Multimap(); FormParameters = new Dictionary(); - FileParameters = new Dictionary(); + FileParameters = new Dictionary(); Cookies = new List(); } } -} \ No newline at end of file +} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Fruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Fruit.cs index 132be5b4d3b..66de6a1c6f1 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Fruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Fruit.cs @@ -162,7 +162,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); } try @@ -182,7 +182,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -257,7 +257,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Fruit).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FruitReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FruitReq.cs index 380896933df..488c489d73a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FruitReq.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FruitReq.cs @@ -171,7 +171,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into AppleReq: {1}", jsonString, exception.ToString())); } try @@ -191,7 +191,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into BananaReq: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -266,7 +266,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(FruitReq).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GmFruit.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GmFruit.cs index c168aa41d4c..1aaa59d3f8b 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GmFruit.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GmFruit.cs @@ -151,7 +151,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Apple: {1}", jsonString, exception.ToString())); } try @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Banana: {1}", jsonString, exception.ToString())); } // no match found, throw an exception @@ -229,7 +229,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(GmFruit).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Mammal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Mammal.cs index 2e847a10eb6..ed940d7ab6f 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Mammal.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Mammal.cs @@ -183,7 +183,7 @@ namespace Org.OpenAPITools.Model newMammal = new Mammal(JsonConvert.DeserializeObject(jsonString, Mammal.AdditionalPropertiesSerializerSettings)); return newMammal; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Mammal. Possible values: Pig whale zebra", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Mammal. Possible values: Pig whale zebra", discriminatorValue)); break; } @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Pig: {1}", jsonString, exception.ToString())); } try @@ -227,7 +227,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Whale: {1}", jsonString, exception.ToString())); } try @@ -247,7 +247,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Zebra: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -322,7 +322,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Mammal).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableShape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableShape.cs index 80339ebf79b..20be30e5b89 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableShape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableShape.cs @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model newNullableShape = new NullableShape(JsonConvert.DeserializeObject(jsonString, NullableShape.AdditionalPropertiesSerializerSettings)); return newNullableShape; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for NullableShape. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for NullableShape. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -187,7 +187,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -282,7 +282,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(NullableShape).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pig.cs index d8605861e63..967d2139a0a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pig.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pig.cs @@ -154,7 +154,7 @@ namespace Org.OpenAPITools.Model newPig = new Pig(JsonConvert.DeserializeObject(jsonString, Pig.AdditionalPropertiesSerializerSettings)); return newPig; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Pig. Possible values: BasquePig DanishPig", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Pig. Possible values: BasquePig DanishPig", discriminatorValue)); break; } @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into BasquePig: {1}", jsonString, exception.ToString())); } try @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into DanishPig: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -273,7 +273,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Pig).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Quadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Quadrilateral.cs index 17463ca09a4..19bc98ed2ec 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Quadrilateral.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Quadrilateral.cs @@ -154,7 +154,7 @@ namespace Org.OpenAPITools.Model newQuadrilateral = new Quadrilateral(JsonConvert.DeserializeObject(jsonString, Quadrilateral.AdditionalPropertiesSerializerSettings)); return newQuadrilateral; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Quadrilateral. Possible values: ComplexQuadrilateral SimpleQuadrilateral", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Quadrilateral. Possible values: ComplexQuadrilateral SimpleQuadrilateral", discriminatorValue)); break; } @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ComplexQuadrilateral: {1}", jsonString, exception.ToString())); } try @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into SimpleQuadrilateral: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -273,7 +273,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Quadrilateral).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Shape.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Shape.cs index e75e0e8b167..f17c4d9a8f5 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Shape.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Shape.cs @@ -154,7 +154,7 @@ namespace Org.OpenAPITools.Model newShape = new Shape(JsonConvert.DeserializeObject(jsonString, Shape.AdditionalPropertiesSerializerSettings)); return newShape; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Shape. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Shape. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -178,7 +178,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -198,7 +198,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -273,7 +273,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Shape).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeOrNull.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeOrNull.cs index 7471bafb379..df321dc9e81 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeOrNull.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeOrNull.cs @@ -163,7 +163,7 @@ namespace Org.OpenAPITools.Model newShapeOrNull = new ShapeOrNull(JsonConvert.DeserializeObject(jsonString, ShapeOrNull.AdditionalPropertiesSerializerSettings)); return newShapeOrNull; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for ShapeOrNull. Possible values: Quadrilateral Triangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for ShapeOrNull. Possible values: Quadrilateral Triangle", discriminatorValue)); break; } @@ -187,7 +187,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Quadrilateral: {1}", jsonString, exception.ToString())); } try @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into Triangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -282,7 +282,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(ShapeOrNull).GetMethod("ToJson").Invoke(value, null))); } /// diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Triangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Triangle.cs index cccaa79a8ff..6f33859a898 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Triangle.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Triangle.cs @@ -183,7 +183,7 @@ namespace Org.OpenAPITools.Model newTriangle = new Triangle(JsonConvert.DeserializeObject(jsonString, Triangle.AdditionalPropertiesSerializerSettings)); return newTriangle; default: - System.Diagnostics.Debug.WriteLine(String.Format("Failed to lookup discriminator value `{0}` for Triangle. Possible values: EquilateralTriangle IsoscelesTriangle ScaleneTriangle", discriminatorValue)); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to lookup discriminator value `{0}` for Triangle. Possible values: EquilateralTriangle IsoscelesTriangle ScaleneTriangle", discriminatorValue)); break; } @@ -207,7 +207,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into EquilateralTriangle: {1}", jsonString, exception.ToString())); } try @@ -227,7 +227,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into IsoscelesTriangle: {1}", jsonString, exception.ToString())); } try @@ -247,7 +247,7 @@ namespace Org.OpenAPITools.Model catch (Exception exception) { // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine(String.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); + System.Diagnostics.Debug.WriteLine(string.Format("Failed to deserialize `{0}` into ScaleneTriangle: {1}", jsonString, exception.ToString())); } if (match == 0) @@ -322,7 +322,7 @@ namespace Org.OpenAPITools.Model /// JSON Serializer public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - writer.WriteRawValue((String)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); + writer.WriteRawValue((string)(typeof(Triangle).GetMethod("ToJson").Invoke(value, null))); } /// From f0cbfbc8207c43b65ab414d41d8aad5220ba57f1 Mon Sep 17 00:00:00 2001 From: Bernhard Danecker Date: Thu, 1 Jul 2021 11:48:28 +0200 Subject: [PATCH 167/192] Updated openapi-generator-gradle-plugin/README.adoc to latest plugin version (#9874) Updated docs to reference latest gradle plugin version with important support for gradle 7 --- modules/openapi-generator-gradle-plugin/README.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator-gradle-plugin/README.adoc b/modules/openapi-generator-gradle-plugin/README.adoc index 08b09304900..86c2df36c1f 100644 --- a/modules/openapi-generator-gradle-plugin/README.adoc +++ b/modules/openapi-generator-gradle-plugin/README.adoc @@ -97,7 +97,7 @@ task validateGoodSpec(type: org.openapitools.generator.gradle.plugin.tasks.Valid [source,group] ---- plugins { - id "org.openapi.generator" version "5.1.0" + id "org.openapi.generator" version "5.1.1" } ---- @@ -113,7 +113,7 @@ buildscript { // url "https://plugins.gradle.org/m2/" } dependencies { - classpath "org.openapitools:openapi-generator-gradle-plugin:5.1.0" + classpath "org.openapitools:openapi-generator-gradle-plugin:5.1.1" } } From 147367e5591229b18003996d6cbf5d1cb56b4da2 Mon Sep 17 00:00:00 2001 From: Adriaan Duz Date: Thu, 1 Jul 2021 11:54:04 +0200 Subject: [PATCH 168/192] [Kotlin][Bug] Added open, external and internal as reserved keywords for kotlin (#9842) * Added open, external and internal as reserved keywords for kotlin * ./bin/generate-samples.sh ./bin/utils/export_docs_generators.sh with only kotlin --- docs/generators/kotlin-server-deprecated.md | 3 ++ docs/generators/kotlin-server.md | 3 ++ docs/generators/kotlin-spring.md | 3 ++ docs/generators/kotlin-vertx.md | 3 ++ docs/generators/kotlin.md | 3 ++ .../languages/AbstractKotlinCodegen.java | 5 +- .../kotlin/KotlinReservedWordsTest.java | 5 +- .../resources/3_0/kotlin/reserved_words.yaml | 49 ++++++++++++++++++- 8 files changed, 71 insertions(+), 3 deletions(-) diff --git a/docs/generators/kotlin-server-deprecated.md b/docs/generators/kotlin-server-deprecated.md index 5499354747c..aa33465abdd 100644 --- a/docs/generators/kotlin-server-deprecated.md +++ b/docs/generators/kotlin-server-deprecated.md @@ -80,15 +80,18 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • continue
  • do
  • else
  • +
  • external
  • false
  • for
  • fun
  • if
  • in
  • interface
  • +
  • internal
  • is
  • null
  • object
  • +
  • open
  • package
  • return
  • super
  • diff --git a/docs/generators/kotlin-server.md b/docs/generators/kotlin-server.md index 7d9beb5ae10..4ea1d39a6ee 100644 --- a/docs/generators/kotlin-server.md +++ b/docs/generators/kotlin-server.md @@ -82,15 +82,18 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • continue
  • do
  • else
  • +
  • external
  • false
  • for
  • fun
  • if
  • in
  • interface
  • +
  • internal
  • is
  • null
  • object
  • +
  • open
  • package
  • return
  • super
  • diff --git a/docs/generators/kotlin-spring.md b/docs/generators/kotlin-spring.md index 3c62035e71e..e2895ecc57f 100644 --- a/docs/generators/kotlin-spring.md +++ b/docs/generators/kotlin-spring.md @@ -93,15 +93,18 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • continue
  • do
  • else
  • +
  • external
  • false
  • for
  • fun
  • if
  • in
  • interface
  • +
  • internal
  • is
  • null
  • object
  • +
  • open
  • package
  • return
  • super
  • diff --git a/docs/generators/kotlin-vertx.md b/docs/generators/kotlin-vertx.md index f92dadaf520..2d0fb923d13 100644 --- a/docs/generators/kotlin-vertx.md +++ b/docs/generators/kotlin-vertx.md @@ -74,15 +74,18 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • continue
  • do
  • else
  • +
  • external
  • false
  • for
  • fun
  • if
  • in
  • interface
  • +
  • internal
  • is
  • null
  • object
  • +
  • open
  • package
  • return
  • super
  • diff --git a/docs/generators/kotlin.md b/docs/generators/kotlin.md index 6432fc5be67..5883c0f573e 100644 --- a/docs/generators/kotlin.md +++ b/docs/generators/kotlin.md @@ -84,15 +84,18 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • continue
  • do
  • else
  • +
  • external
  • false
  • for
  • fun
  • if
  • in
  • interface
  • +
  • internal
  • is
  • null
  • object
  • +
  • open
  • package
  • return
  • super
  • diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index c681aaf51cb..8905d13a3f7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -125,7 +125,10 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co "val", "var", "when", - "while" + "while", + "open", + "external", + "internal" )); defaultIncludes = new HashSet(Arrays.asList( diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinReservedWordsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinReservedWordsTest.java index 58727aa3803..914ed814da8 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinReservedWordsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinReservedWordsTest.java @@ -48,7 +48,10 @@ public class KotlinReservedWordsTest { {"val"}, {"var"}, {"when"}, - {"while"} + {"while"}, + {"open"}, + {"external"}, + {"internal"} }; } diff --git a/modules/openapi-generator/src/test/resources/3_0/kotlin/reserved_words.yaml b/modules/openapi-generator/src/test/resources/3_0/kotlin/reserved_words.yaml index c4022711783..881ffe49499 100644 --- a/modules/openapi-generator/src/test/resources/3_0/kotlin/reserved_words.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/kotlin/reserved_words.yaml @@ -120,6 +120,18 @@ paths: in: header schema: type: string + - name: open + in: header + schema: + type: string + - name: external + in: header + schema: + type: string + - name: internal + in: header + schema: + type: string responses: '200': $ref: "#/components/schemas/Good" @@ -186,6 +198,12 @@ components: type: string while: type: string + open: + type: string + external: + type: string + internal: + type: string linked: $ref: '#/components/schemas/Linked' @@ -249,7 +267,12 @@ components: $ref: '#/components/schemas/when' while: $ref: '#/components/schemas/while' - + open: + $ref: '#/components/schemas/open' + external: + $ref: '#/components/schemas/external' + internal: + $ref: '#/components/schemas/internal' as: title: Testing reserved word 'as' type: object @@ -469,6 +492,30 @@ components: while: title: Testing reserved word 'while' type: object + properties: + id: + type: integer + format: int64 + + open: + title: Testing reserved word 'open' + type: object + properties: + id: + type: integer + format: int64 + + external: + title: Testing reserved word 'external' + type: object + properties: + id: + type: integer + format: int64 + + internal: + title: Testing reserved word 'internal' + type: object properties: id: type: integer From bba23272ff4291abd4e426a2e7bb038a08cbbcdc Mon Sep 17 00:00:00 2001 From: Marc de Jonge Date: Thu, 1 Jul 2021 11:56:28 +0200 Subject: [PATCH 169/192] #9848 Add support for generating a Set for a list with uniqueItems set to true (#9849) --- .../kotlin-client/data_class_opt_var.mustache | 2 +- .../kotlin-client/data_class_req_var.mustache | 2 +- .../kotlin/KotlinModelCodegenTest.java | 37 +++++++++++++- .../src/test/resources/3_0/issue_9848.yaml | 50 +++++++++++++++++++ 4 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/issue_9848.yaml diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache index deae3ebd5dc..2ce65fd1d16 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache @@ -18,4 +18,4 @@ {{#deprecated}} @Deprecated(message = "This property is deprecated.") {{/deprecated}} - {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isArray}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{^items.isPrimitiveType}}{{^items.isModel}}{{#kotlinx_serialization}}@Contextual {{/kotlinx_serialization}}{{/items.isModel}}{{/items.isPrimitiveType}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInCamelCase}}}{{/items.isEnum}}>{{/isArray}}{{^isEnum}}{{^isArray}}{{{dataType}}}{{/isArray}}{{/isEnum}}{{#isEnum}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}} \ No newline at end of file + {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isArray}}{{#isList}}{{#uniqueItems}}kotlin.collections.Set{{/uniqueItems}}{{^uniqueItems}}kotlin.collections.List{{/uniqueItems}}{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{^items.isPrimitiveType}}{{^items.isModel}}{{#kotlinx_serialization}}@Contextual {{/kotlinx_serialization}}{{/items.isModel}}{{/items.isPrimitiveType}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInCamelCase}}}{{/items.isEnum}}>{{/isArray}}{{^isEnum}}{{^isArray}}{{{dataType}}}{{/isArray}}{{/isEnum}}{{#isEnum}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache index 2c44be195c8..d7a2fcf31bd 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache @@ -18,4 +18,4 @@ {{#deprecated}} @Deprecated(message = "This property is deprecated.") {{/deprecated}} - {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isArray}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{^items.isPrimitiveType}}{{^items.isModel}}{{#kotlinx_serialization}}@Contextual {{/kotlinx_serialization}}{{/items.isModel}}{{/items.isPrimitiveType}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInCamelCase}}}{{/items.isEnum}}>{{/isArray}}{{^isEnum}}{{^isArray}}{{{dataType}}}{{/isArray}}{{/isEnum}}{{#isEnum}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}{{#isNullable}}?{{/isNullable}} \ No newline at end of file + {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isArray}}{{#isList}}{{#isUniqueItems}}kotlin.collections.Set{{/isUniqueItems}}{{^isUniqueItems}}kotlin.collections.List{{/isUniqueItems}}{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{^items.isPrimitiveType}}{{^items.isModel}}{{#kotlinx_serialization}}@Contextual {{/kotlinx_serialization}}{{/items.isModel}}{{/items.isPrimitiveType}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInCamelCase}}}{{/items.isEnum}}>{{/isArray}}{{^isEnum}}{{^isArray}}{{{dataType}}}{{/isArray}}{{/isEnum}}{{#isEnum}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}{{#isNullable}}?{{/isNullable}} \ No newline at end of file diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinModelCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinModelCodegenTest.java index 19829496e23..af675c8913d 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinModelCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinModelCodegenTest.java @@ -52,12 +52,17 @@ public class KotlinModelCodegenTest { } private void checkModel(AbstractKotlinCodegen codegen, boolean mutable, String... props) throws IOException { + String outputPath = generateModels(codegen, "src/test/resources/3_0/generic.yaml", mutable); + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/models/Animal.kt"), props); + } + + private String generateModels(AbstractKotlinCodegen codegen, String fileName, boolean mutable) throws IOException { File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); output.deleteOnExit(); String outputPath = output.getAbsolutePath().replace('\\', '/'); OpenAPI openAPI = new OpenAPIParser() - .readLocation("src/test/resources/3_0/generic.yaml", null, new ParseOptions()).getOpenAPI(); + .readLocation(fileName, null, new ParseOptions()).getOpenAPI(); codegen.setOutputDir(output.getAbsolutePath()); codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "models"); @@ -77,6 +82,34 @@ public class KotlinModelCodegenTest { generator.opts(input).generate(); - assertFileContains(Paths.get(outputPath + "/src/main/kotlin/models/Animal.kt"), props); + return outputPath; + } + + @Test(dataProvider = "generators") + public void valuesArrayWithUniqueItems(AbstractKotlinCodegen codegen) throws IOException { + String outputPath = generateModels(codegen, "src/test/resources/3_0/issue_9848.yaml", false); + + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/models/NonUniqueArray.kt"), + codegen instanceof KotlinVertxServerCodegen || codegen instanceof KotlinServerDeprecatedCodegen + ? "val array: kotlin.Array" + : "val array: kotlin.collections.List" + ); + + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/models/UniqueArray.kt"), + "val array: kotlin.collections.Set"); + } + + @Test(dataProvider = "generators") + public void mutableArrayWithUniqueItems(AbstractKotlinCodegen codegen) throws IOException { + String outputPath = generateModels(codegen, "src/test/resources/3_0/issue_9848.yaml", true); + + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/models/NonUniqueArray.kt"), + codegen instanceof KotlinVertxServerCodegen || codegen instanceof KotlinServerDeprecatedCodegen + ? "var array: kotlin.Array" + : "var array: kotlin.collections.List" + ); + + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/models/UniqueArray.kt"), + "var array: kotlin.collections.Set"); } } diff --git a/modules/openapi-generator/src/test/resources/3_0/issue_9848.yaml b/modules/openapi-generator/src/test/resources/3_0/issue_9848.yaml new file mode 100644 index 00000000000..5fc12434df5 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/issue_9848.yaml @@ -0,0 +1,50 @@ +openapi: 3.0.1 +info: + title: OpenAPI Petstore + description: "sample spec" + license: + name: Apache-2.0 + url: https://www.apache.org/licenses/LICENSE-2.0.html + version: 1.0.0 +servers: + - url: http://petstore.swagger.io:80/v2 +tags: + - name: isX + description: an api that ensures that isX properties are present on Schema classes +paths: + /uniqueTypes: + get: + responses: + '200': + description: 'unique array' + content: + application/json: + schema: + $ref: '#/components/schemas/uniqueArray' + /nonUniqueTypes: + get: + responses: + '200': + description: 'non-unique array' + content: + application/json: + schema: + $ref: '#/components/schemas/nonUniqueArray' +components: + schemas: + uniqueArray: + type: object + properties: + array: + type: array + items: + type: string + uniqueItems: true + nonUniqueArray: + type: object + properties: + array: + type: array + items: + type: string + uniqueItems: false From 32a3eb16558c900747f18a3f289d70d000ff5d79 Mon Sep 17 00:00:00 2001 From: Bernhard Danecker Date: Sat, 3 Jul 2021 16:09:53 +0200 Subject: [PATCH 170/192] fix generate-samples code sample line break (#9880) --- CONTRIBUTING.md | 8 +++----- docs/contributing.md | 8 +++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0fe833163af..4e59158cdb8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -88,12 +88,10 @@ To add test cases (optional) covering the change in the code generator, please r To test the templates, please perform the following: -- Update the Petstore sample by running the shell scripts under the `bin` folder. For example, run `./bin/generate-samples.sh . -/bin/configs/python*` to update the Python-related samples under [`samples`](https://github.com/openapitools/openapi-generator/tree/master/samples). For Windows, please install [GIT bash](https://gitforwindows.org/). (If you find that there are new files generated or unexpected changes as a result of the update, that's not unusual as the test cases are added to the OpenAPI spec from time to time. If you've questions or concerns, please open a ticket to start a discussion) -- During development it can be helpful to quickly regenerate the samples without recompiling all of openapi-generator, e.g. when you have only updated the mustache templates. This can be done by passing the `-t` parameter: `-t modules/openapi-generator/src/main/resources/python`. +- Update the Petstore sample by running the shell scripts under the `bin` folder. For example, run `./bin/generate-samples.sh ./bin/configs/python*` to update the Python-related samples under [`samples`](https://github.com/openapitools/openapi-generator/tree/master/samples). For Windows, please install [GIT bash](https://gitforwindows.org/). (If you find that there are new files generated or unexpected changes as a result of the update, that's not unusual as the test cases are added to the OpenAPI spec from time to time. If you've questions or concerns, please open a ticket to start a discussion) +- During development, it can be helpful to quickly regenerate the samples without recompiling all of openapi-generator, e.g. when you have only updated the mustache templates. This can be done by passing the `-t` parameter: `-t modules/openapi-generator/src/main/resources/python`. - Run the tests in the sample folder using maven `mvn integration-test -f /path/to/pom.xml`, e.g. `mvn integration-test -f samples/client/petstore/python/pom.xml`. (some languages may not contain unit testing for Petstore and we're looking for contribution from the community to implement those tests) -- Finally, git commit the updated samples files: `git commit -a` - (`git add -A` if added files with new test cases) +- Finally, git commit the updated samples files: `git commit -a` (`git add -A` if added files with new test cases) - For new test cases, please add to the [Fake Petstore spec](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml) To start the CI tests, you can: diff --git a/docs/contributing.md b/docs/contributing.md index fe325ae17e1..f47d79bd09f 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -92,12 +92,10 @@ To add test cases (optional) covering the change in the code generator, please r To test the templates, please perform the following: -- Update the Petstore sample by running the shell scripts under the `bin` folder. For example, run `./bin/generate-samples.sh . -/bin/configs/python*` to update the Python-related samples under [`samples`](https://github.com/openapitools/openapi-generator/tree/master/samples). For Windows, please install [GIT bash](https://gitforwindows.org/). (If you find that there are new files generated or unexpected changes as a result of the update, that's not unusual as the test cases are added to the OpenAPI spec from time to time. If you've questions or concerns, please open a ticket to start a discussion) -- During development it can be helpful to quickly regenerate the samples without recompiling all of openapi-generator, e.g. when you have only updated the mustache templates. This can be done by passing the `-t` parameter: `-t modules/openapi-generator/src/main/resources/python`. +- Update the Petstore sample by running the shell scripts under the `bin` folder. For example, run `./bin/generate-samples.sh ./bin/configs/python*` to update the Python-related samples under [`samples`](https://github.com/openapitools/openapi-generator/tree/master/samples). For Windows, please install [GIT bash](https://gitforwindows.org/). (If you find that there are new files generated or unexpected changes as a result of the update, that's not unusual as the test cases are added to the OpenAPI spec from time to time. If you've questions or concerns, please open a ticket to start a discussion) +- During development, it can be helpful to quickly regenerate the samples without recompiling all of openapi-generator, e.g. when you have only updated the mustache templates. This can be done by passing the `-t` parameter: `-t modules/openapi-generator/src/main/resources/python`. - Run the tests in the sample folder using maven `mvn integration-test -f /path/to/pom.xml`, e.g. `mvn integration-test -f samples/client/petstore/python/pom.xml`. (some languages may not contain unit testing for Petstore and we're looking for contribution from the community to implement those tests) -- Finally, git commit the updated samples files: `git commit -a` - (`git add -A` if added files with new test cases) +- Finally, git commit the updated samples files: `git commit -a` (`git add -A` if added files with new test cases) - For new test cases, please add to the [Fake Petstore spec](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml) To start the CI tests, you can: From 3663831b4dd24f85b9e56f514604d7471ebef349 Mon Sep 17 00:00:00 2001 From: SimeonGerginov Date: Sat, 3 Jul 2021 17:27:06 +0300 Subject: [PATCH 171/192] [REQ][PowerShell] Improve generated PowerShell examples (#9836) * Implement new PowerShell example structure Signed-off-by: Simeon Gerginov * Modify documentation template to work with the new PowerShell example format Signed-off-by: Simeon Gerginov * Update PowerShell Generator documentation with the new properties Signed-off-by: Simeon Gerginov * Update PowerShell samples with the new PowerShell example format Signed-off-by: Simeon Gerginov * Fix issues with array of models as parameters Signed-off-by: Simeon Gerginov * Change string value generation to include the prefix 'My' Signed-off-by: Simeon Gerginov * Remove multiple new lines and trim leading and trailing spaces in PowerShell example Signed-off-by: Simeon Gerginov --- docs/generators/powershell.md | 2 + .../languages/PowerShellClientCodegen.java | 374 +++++++++++++----- .../resources/powershell/api_doc.mustache | 17 +- .../petstore/powershell/docs/PSPetApi.md | 72 ++-- .../petstore/powershell/docs/PSStoreApi.md | 20 +- .../petstore/powershell/docs/PSUserApi.md | 52 +-- 6 files changed, 360 insertions(+), 177 deletions(-) diff --git a/docs/generators/powershell.md b/docs/generators/powershell.md index a9c14eab47d..c822e241889 100644 --- a/docs/generators/powershell.md +++ b/docs/generators/powershell.md @@ -13,6 +13,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |discardReadOnly|Set discardReadonly to true to generate the Initialize cmdlet without readonly parameters| |null| |iconUri|A URL to an icon representing the generated PowerShell module| |null| |licenseUri|A URL to the license for the generated PowerShell module| |null| +|modelsCmdletVerb|Verb to be used when generating the Models cmdlets in the examples.| |Initialize| |packageGuid|GUID for PowerShell module (e.g. a27b908d-2a20-467f-bc32-af6f3a654ac5). A random GUID will be generated by default.| |null| |packageName|Client package name (e.g. PSTwitter).| |PSOpenAPITools| |packageVersion|Package version (e.g. 0.1.2).| |0.1.2| @@ -21,6 +22,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |releaseNotes|Release notes of the generated PowerShell module| |null| |skipVerbParsing|Set skipVerbParsing to not try get powershell verbs of operation names| |null| |tags|Tags applied to the generated PowerShell module. These help with module discovery in online galleries| |null| +|useClassNameInModelsExamples|Use classname instead of name when generating the Models cmdlets in the examples.| |true| |useOneOfDiscriminatorLookup|Use the discriminator's mapping in oneOf to speed up the model lookup. IMPORTANT: Validation (e.g. one and only one match in oneOf's schemas) will be skipped.| |null| ## IMPORT MAPPING diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java index 9eda8091fdf..97c3b260375 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java @@ -63,6 +63,8 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo protected String tags; protected String iconUri; protected Set paramNameReservedWords; + protected String modelsCmdletVerb = "Initialize"; + protected boolean useClassNameInModelsExamples = true; /** * Constructs an instance of `PowerShellClientCodegen`. @@ -539,6 +541,13 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo cliOptions.add(new CliOption("iconUri","A URL to an icon representing the generated PowerShell module")); cliOptions.add(new CliOption("releaseNotes","Release notes of the generated PowerShell module")); cliOptions.add(new CliOption("skipVerbParsing", "Set skipVerbParsing to not try get powershell verbs of operation names")); + cliOptions.add(new CliOption("modelsCmdletVerb", "Verb to be used when generating the Models cmdlets in the examples.").defaultValue(this.modelsCmdletVerb)); + + CliOption useClassNameInModelsExamplesOpt = CliOption.newBoolean( + "useClassNameInModelsExamples", + "Use classname instead of name when generating the Models cmdlets in the examples." + ).defaultValue(this.useClassNameInModelsExamples ? Boolean.TRUE.toString() : Boolean.FALSE.toString()); + cliOptions.add(useClassNameInModelsExamplesOpt); // option to change how we process + set the data in the 'additionalProperties' keyword. CliOption disallowAdditionalPropertiesIfNotPresentOpt = CliOption.newBoolean( @@ -632,6 +641,10 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo public void setSkipVerbParsing(boolean skipVerbParsing) { this.skipVerbParsing = skipVerbParsing; } + public void SetModelsCmdletVerb(String modelsCmdletVerb) { this.modelsCmdletVerb = modelsCmdletVerb; } + + public void SetUseClassNameInModelsExamples(boolean useClassNameInModelsExamples) { this.useClassNameInModelsExamples = useClassNameInModelsExamples; } + @Override public void processOpts() { this.setLegacyDiscriminatorBehavior(false); @@ -704,6 +717,18 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo additionalProperties.put("iconUri", iconUri); } + if (additionalProperties.containsKey("modelsCmdletVerb")) { + this.SetModelsCmdletVerb((String) additionalProperties.get("modelsCmdletVerb")); + } else { + additionalProperties.put("modelsCmdletVerb", this.modelsCmdletVerb); + } + + if (additionalProperties.containsKey("useClassNameInModelsExamples")) { + this.SetUseClassNameInModelsExamples(convertPropertyToBoolean("useClassNameInModelsExamples")); + } else { + additionalProperties.put("useClassNameInModelsExamples", this.useClassNameInModelsExamples); + } + if (StringUtils.isNotBlank(powershellGalleryUrl)) { // get the last segment of the URL // e.g. https://www.powershellgallery.com/packages/PSTwitter => PSTwitter @@ -1000,11 +1025,22 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo int index = 0; for (CodegenParameter p : op.allParams) { p.vendorExtensions.put("x-powershell-data-type", getPSDataType(p)); - p.vendorExtensions.put("x-powershell-example", constructExampleCode(p, modelMaps, processedModelMaps)); + p.vendorExtensions.put("x-powershell-example", constructExampleCode(p, modelMaps, processedModelMaps, false)); + + if (p.required) { + // clear processed Models after each constructed API Operation full example. + processedModelMaps.clear(); + + p.vendorExtensions.put("x-powershell-example-required", constructExampleCode(p, modelMaps, processedModelMaps, true)); + } + p.vendorExtensions.put("x-index", index); index++; } + // clear processed Models after each constructed API Operation examples. + processedModelMaps.clear(); + if (!op.vendorExtensions.containsKey("x-powershell-method-name")) { // x-powershell-method-name not set String methodName = toMethodName(op.operationId); op.vendorExtensions.put("x-powershell-method-name", methodName); @@ -1025,13 +1061,6 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo } } - processedModelMaps.clear(); - for (CodegenOperation operation : operationList) { - for (CodegenParameter cp : operation.allParams) { - cp.vendorExtensions.put("x-powershell-example", constructExampleCode(cp, modelMaps, processedModelMaps)); - } - } - // check if return type is oneOf/anyeOf model for (CodegenOperation op : operationList) { if (op.returnType != null) { @@ -1115,126 +1144,259 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo return name; } - private String constructExampleCode(CodegenParameter codegenParameter, HashMap modelMaps, HashMap processedModelMap) { - if (codegenParameter.isArray) { // array - return "@(" + constructExampleCode(codegenParameter.items, modelMaps, processedModelMap) + ")"; - } else if (codegenParameter.isMap) { // TODO: map, file type - return "@{ \"Key\" = \"Value\" }"; - } else if (languageSpecificPrimitives.contains(codegenParameter.dataType) || - nullablePrimitives.contains(codegenParameter.dataType)) { // primitive type - if ("String".equals(codegenParameter.dataType) || "Character".equals(codegenParameter.dataType)) { - if (StringUtils.isEmpty(codegenParameter.example)) { - return "\"" + codegenParameter.example + "\""; - } else { - if (Boolean.TRUE.equals(codegenParameter.isEnum)) { // enum - List enumValues = (List) codegenParameter.allowableValues.get("values"); - return "\"" + String.valueOf(enumValues.get(0)) + "\""; - } else { - return "\"" + codegenParameter.paramName + "_example\""; - } - } - } else if ("Boolean".equals(codegenParameter.dataType) || - "System.Nullable[Boolean]".equals(codegenParameter.dataType)) { // boolean - if (Boolean.parseBoolean(codegenParameter.example)) { - return "true"; - } else { - return "false"; - } - } else if ("URL".equals(codegenParameter.dataType)) { // URL - return "URL(string: \"https://example.com\")!"; - } else if ("System.DateTime".equals(codegenParameter.dataType)) { // datetime or date - return "Get-Date"; - } else { // numeric - if (StringUtils.isEmpty(codegenParameter.example)) { - return codegenParameter.example; - } else { - return "987"; - } + private String constructExampleCode(CodegenParameter codegenParameter, HashMap modelMaps, HashMap processedModelMap, boolean requiredOnly) { + StringBuilder example = new StringBuilder(); + + if (codegenParameter.isString) { + if (codegenParameter.isEnum || (codegenParameter.allowableValues != null && !codegenParameter.allowableValues.isEmpty())) { + example.append(constructEnumExample(codegenParameter.allowableValues)); + } else { + String genericStringExample = codegenParameter.paramName + "_example"; + example.append(constructStringExample(codegenParameter.paramName, codegenParameter.example, genericStringExample)); } - } else { // model - // look up the model + } else if (codegenParameter.isBoolean) { + example.append(constructBooleanExample(codegenParameter.example)); + } else if (codegenParameter.isDate || codegenParameter.isDateTime) { + example.append("(Get-Date)"); + } else if (codegenParameter.isArray) { + if (codegenParameter.items.isModel || (modelMaps.containsKey(codegenParameter.items.dataType) && codegenParameter.items.allowableValues == null)) { + String modelExample; + if (codegenParameter.items.isModel) { + modelExample = constructExampleCode(codegenParameter.items, modelMaps, processedModelMap, requiredOnly); + } else { + modelExample = constructExampleCode(modelMaps.get(codegenParameter.items.dataType), modelMaps, processedModelMap, requiredOnly); + } + + if (!StringUtils.isEmpty(modelExample)) { + example.append(modelExample); + } + } else if (codegenParameter.items.isString) { + if (codegenParameter.items.isEnum || (codegenParameter.items.allowableValues != null && !codegenParameter.items.allowableValues.isEmpty())) { + example.append(constructEnumExample(codegenParameter.items.allowableValues)); + } else { + String genericStringExample = codegenParameter.items.name + "_example"; + example.append(constructStringExample(codegenParameter.paramName, codegenParameter.items.example, genericStringExample)); + } + } else { + example.append(constructExampleCode(codegenParameter.items, modelMaps, processedModelMap, requiredOnly)); + } + } else if (codegenParameter.isMap) { + if (codegenParameter.items.isModel) { + String modelExample = constructExampleCode(codegenParameter.items, modelMaps, processedModelMap, requiredOnly); + if (!StringUtils.isEmpty(modelExample)) { + example.append(modelExample + "\n"); + } + + example.append("$" + codegenParameter.paramName + " = @{ key_example = $" + codegenParameter.items.dataType + " }"); + } else { + example.append("@{ key_example = "); + example.append(constructExampleCode(codegenParameter.items, modelMaps, processedModelMap, requiredOnly)); + example.append(" }"); + } + } else if (codegenParameter.isEnum || (codegenParameter.allowableValues != null && !codegenParameter.allowableValues.isEmpty())) { + example.append(constructEnumExample(codegenParameter.allowableValues)); + } else if (codegenParameter.isModel) { if (modelMaps.containsKey(codegenParameter.dataType)) { - return constructExampleCode(modelMaps.get(codegenParameter.dataType), modelMaps, processedModelMap); - } else { - //LOGGER.error("Error in constructing examples. Failed to look up the model " + codegenParameter.dataType); - return "TODO"; + String modelExample = constructExampleCode(modelMaps.get(codegenParameter.dataType), modelMaps, processedModelMap, requiredOnly); + if (!StringUtils.isEmpty(modelExample)) { + example.append(modelExample); + } } + } else if ((languageSpecificPrimitives.contains(codegenParameter.dataType) || nullablePrimitives.contains(codegenParameter.dataType)) && !codegenParameter.isFile) { + // If the data type is primitive and it is not a String, Enum, Boolean, File, Date or DateTime, then it's a number. + example.append(constructNumericExample(codegenParameter.example)); } + + // Replace multiple new lines with a single new line and trim leading and trailing spaces. + return example.toString().replaceAll("[\n]{2,}", "\n\n").trim(); } - private String constructExampleCode(CodegenProperty codegenProperty, HashMap modelMaps, HashMap processedModelMap) { - if (codegenProperty.isArray) { // array - return "@(" + constructExampleCode(codegenProperty.items, modelMaps, processedModelMap) + ")"; - } else if (codegenProperty.isMap) { // map - return "\"TODO\""; - } else if (languageSpecificPrimitives.contains(codegenProperty.dataType) || // primitive type - nullablePrimitives.contains(codegenProperty.dataType)) { // nullable primitive type - if ("String".equals(codegenProperty.dataType)) { - if (StringUtils.isEmpty(codegenProperty.example)) { - return "\"" + codegenProperty.example + "\""; - } else { - if (Boolean.TRUE.equals(codegenProperty.isEnum)) { // enum - List enumValues = (List) codegenProperty.allowableValues.get("values"); - return "\"" + String.valueOf(enumValues.get(0)) + "\""; - } else { - return "\"" + codegenProperty.name + "_example\""; - } - } - } else if ("Boolean".equals(codegenProperty.dataType) || - "System.Nullable[Boolean]".equals(codegenProperty.dataType)) { // boolean - if (Boolean.parseBoolean(codegenProperty.example)) { - return "$true"; - } else { - return "$false"; - } - } else if ("URL".equals(codegenProperty.dataType)) { // URL - return "URL(string: \"https://example.com\")!"; - } else if ("System.DateTime".equals(codegenProperty.dataType)) { // datetime or date - return "Get-Date"; - } else { // numeric - if (StringUtils.isEmpty(codegenProperty.example)) { - return codegenProperty.example; - } else { - return "123"; - } + private String constructExampleCode(CodegenProperty codegenProperty, HashMap modelMaps, HashMap processedModelMap, boolean requiredOnly) { + StringBuilder example = new StringBuilder(); + + if (codegenProperty.isString) { + if (codegenProperty.isEnum || (codegenProperty.allowableValues != null && !codegenProperty.allowableValues.isEmpty())) { + example.append(constructEnumExample(codegenProperty.allowableValues)); + } else { + String genericStringExample = codegenProperty.name + "_example"; + example.append(constructStringExample(codegenProperty.name, codegenProperty.example, genericStringExample)); } - } else { - // look up the model + } else if (codegenProperty.isBoolean) { + example.append(constructBooleanExample(codegenProperty.example)); + } else if (codegenProperty.isDate || codegenProperty.isDateTime) { + example.append("(Get-Date)"); + } else if (codegenProperty.isArray) { + example.append(constructExampleCode(codegenProperty.items, modelMaps, processedModelMap, requiredOnly)); + } else if (codegenProperty.isMap) { + example.append("@{ key_example = "); + example.append(constructExampleCode(codegenProperty.items, modelMaps, processedModelMap, requiredOnly)); + example.append(" }"); + } else if (codegenProperty.isEnum || (codegenProperty.allowableValues != null && !codegenProperty.allowableValues.isEmpty())) { + example.append(constructEnumExample(codegenProperty.allowableValues)); + } else if (codegenProperty.isModel) { if (modelMaps.containsKey(codegenProperty.dataType)) { - return constructExampleCode(modelMaps.get(codegenProperty.dataType), modelMaps, processedModelMap); - } else { - //LOGGER.error("Error in constructing examples. Failed to look up the model " + codegenProperty.dataType); - return "\"TODO\""; + String modelExample = constructExampleCode(modelMaps.get(codegenProperty.dataType), modelMaps, processedModelMap, requiredOnly); + if (!StringUtils.isEmpty(modelExample)) { + example.append(modelExample); + } } + } else if ((languageSpecificPrimitives.contains(codegenProperty.dataType) || nullablePrimitives.contains(codegenProperty.dataType)) && !codegenProperty.isFile) { + // If the data type is primitive and it is not a String, Enum, Boolean, File, Date or DateTime, then it's a number. + example.append(constructNumericExample(codegenProperty.example)); } + + return example.toString(); } - private String constructExampleCode(CodegenModel codegenModel, HashMap modelMaps, HashMap processedModelMap) { - String example; + private String constructExampleCode(CodegenModel codegenModel, HashMap modelMaps, HashMap processedModelMap, boolean requiredOnly) { + StringBuilder example = new StringBuilder(); + Boolean hasModelProperty = false; - // break infinite recursion. Return, in case a model is already processed in the current context. + // This behaviour is needed to break infinite recursion. Return, in case a model is already processed in the current context. String model = codegenModel.name; if (processedModelMap.containsKey(model)) { - int count = processedModelMap.get(model); - if (count == 1) { - processedModelMap.put(model, 2); - } else if (count == 2) { - return ""; - } else { - throw new RuntimeException("Invalid count when constructing example: " + count); - } + return ""; } else { processedModelMap.put(model, 1); } - example = "(Initialize-" + codegenModel.name + " "; List propertyExamples = new ArrayList<>(); for (CodegenProperty codegenProperty : codegenModel.allVars) { - propertyExamples.add("-" + codegenProperty.name + " " + constructExampleCode(codegenProperty, modelMaps, processedModelMap)); + if ( + !hasModelProperty && ( + codegenProperty.isModel || + (codegenProperty.isArray && (codegenProperty.items.isModel || (modelMaps.containsKey(codegenProperty.items.dataType) && codegenProperty.items.allowableValues == null))) || + (codegenProperty.isMap && codegenProperty.items.isModel)) + ) { + example.append("\n"); + hasModelProperty = true; + } + + if (requiredOnly && !codegenProperty.required) { + continue; + } + + if (codegenProperty.isModel) { + String modelExample = constructExampleCode(codegenProperty, modelMaps, processedModelMap, requiredOnly); + if (!StringUtils.isEmpty(modelExample)) { + example.append(modelExample + "\n"); + } + + propertyExamples.add("-" + codegenProperty.name + " " + "$" + codegenProperty.dataType); + } else if (codegenProperty.isArray && (codegenProperty.items.isModel || (modelMaps.containsKey(codegenProperty.items.dataType) && codegenProperty.items.allowableValues == null))) { + String modelExample; + if (codegenProperty.items.isModel) { + modelExample = constructExampleCode(codegenProperty.items, modelMaps, processedModelMap, requiredOnly); + } else { + modelExample = constructExampleCode(modelMaps.get(codegenProperty.items.dataType), modelMaps, processedModelMap, requiredOnly); + } + + if (!StringUtils.isEmpty(modelExample)) { + example.append(modelExample + "\n"); + } + + propertyExamples.add("-" + codegenProperty.name + " " + "$" + codegenProperty.complexType); + } else if (codegenProperty.isArray && codegenProperty.items.isString) { + if (codegenProperty.items.isEnum || (codegenProperty.items.allowableValues != null && !codegenProperty.items.allowableValues.isEmpty())) { + example.append(constructEnumExample(codegenProperty.items.allowableValues)); + propertyExamples.add("-" + codegenProperty.name + " " + example.toString()); + } else { + StringBuilder stringArrayPropertyValue = new StringBuilder(); + String genericStringExample = codegenProperty.items.name + "_example"; + + stringArrayPropertyValue.append(constructStringExample(codegenProperty.name, codegenProperty.items.example, genericStringExample)); + + propertyExamples.add("-" + codegenProperty.name + " " + stringArrayPropertyValue.toString()); + } + } else if (codegenProperty.isMap && codegenProperty.items.isModel) { + String modelExample = constructExampleCode(codegenProperty.items, modelMaps, processedModelMap, requiredOnly); + if (!StringUtils.isEmpty(modelExample)) { + example.append(modelExample + "\n"); + } + + propertyExamples.add("-" + codegenProperty.name + " " + "@{ key_example = " + "$" + codegenProperty.complexType + " }"); + } else { + propertyExamples.add("-" + codegenProperty.name + " " + constructExampleCode(codegenProperty, modelMaps, processedModelMap, requiredOnly)); + } } - example += StringUtils.join(propertyExamples, " "); - example += ")"; - return example; + + example.append("$"); + if (this.useClassNameInModelsExamples) { + example.append(codegenModel.classname); + } else { + example.append(codegenModel.name); + } + example.append(" = " + this.modelsCmdletVerb + "-"); + if (this.useClassNameInModelsExamples) { + example.append(codegenModel.classname); + } else { + example.append(codegenModel.name); + } + example.append(" "); + + example.append(StringUtils.join(propertyExamples, " ")); + + if (hasModelProperty) { + example.append("\n"); + } + + return example.toString(); + } + + private String constructStringExample(String codegenName, String codegenExample, String genericStringExample) { + StringBuilder example = new StringBuilder(); + example.append("\""); + + if ( + StringUtils.isEmpty(codegenExample) || + codegenExample.equals("null") || + codegenExample.equals(genericStringExample) + ) { + example.append("My" + codegenName); + } else { + example.append(codegenExample); + } + + example.append("\""); + + return example.toString(); + } + + private String constructEnumExample(Map allowableValues) { + StringBuilder example = new StringBuilder(); + + example.append("\""); + + List enumValues = (List) allowableValues.get("values"); + example.append(String.valueOf(enumValues.get(0))); + + example.append("\""); + + return example.toString(); + } + + private String constructNumericExample(String codegenExample) { + StringBuilder example = new StringBuilder(); + + if (StringUtils.isEmpty(codegenExample) || codegenExample.equals("null")) { + example.append("0"); + } else { + example.append(codegenExample); + } + + return example.toString(); + } + + private String constructBooleanExample(String codegenExample) { + StringBuilder example = new StringBuilder(); + + if (Boolean.parseBoolean(codegenExample)) { + example.append("$true"); + } else { + example.append("$false"); + } + + return example.toString(); } private String getPSDataType(CodegenProperty cp) { diff --git a/modules/openapi-generator/src/main/resources/powershell/api_doc.mustache b/modules/openapi-generator/src/main/resources/powershell/api_doc.mustache index 7903ec98afe..2f5ec53c9e2 100644 --- a/modules/openapi-generator/src/main/resources/powershell/api_doc.mustache +++ b/modules/openapi-generator/src/main/resources/powershell/api_doc.mustache @@ -56,14 +56,29 @@ Set-ConfigurationHttpSigning $httpSigningParams {{/authMethods}} {{/hasAuthMethods}} {{#allParams}} +{{^isArray}} +{{#isModel}} +{{{vendorExtensions.x-powershell-example}}} # {{{dataType}}} | {{{description}}}{{^required}} (optional){{/required}}{{#defaultValue}} (default to {{{.}}}){{/defaultValue}} +{{/isModel}} +{{^isModel}} ${{paramName}} = {{{vendorExtensions.x-powershell-example}}} # {{{dataType}}} | {{{description}}}{{^required}} (optional){{/required}}{{#defaultValue}} (default to {{{.}}}){{/defaultValue}} +{{/isModel}} +{{/isArray}} +{{#isArray}} +{{#items.isModel}} +{{{vendorExtensions.x-powershell-example}}} # {{{dataType}}} | {{{description}}}{{^required}} (optional){{/required}}{{#defaultValue}} (default to {{{.}}}){{/defaultValue}} +{{/items.isModel}} +{{^items.isModel}} +${{paramName}} = {{{vendorExtensions.x-powershell-example}}} # {{{dataType}}} | {{{description}}}{{^required}} (optional){{/required}}{{#defaultValue}} (default to {{{.}}}){{/defaultValue}} +{{/items.isModel}} +{{/isArray}} {{/allParams}} {{#summary}} # {{{.}}} {{/summary}} try { - $Result = {{{vendorExtensions.x-powershell-method-name}}}{{#allParams}} -{{paramName}} ${{paramName}}{{/allParams}} + $Result = {{{vendorExtensions.x-powershell-method-name}}}{{#allParams}} -{{paramName}} ${{paramName}}{{/allParams}} } catch { Write-Host ("Exception occured when calling {{{vendorExtensions.x-powershell-method-name}}}: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) diff --git a/samples/client/petstore/powershell/docs/PSPetApi.md b/samples/client/petstore/powershell/docs/PSPetApi.md index 5b8c2a0f2e3..37f092f680d 100644 --- a/samples/client/petstore/powershell/docs/PSPetApi.md +++ b/samples/client/petstore/powershell/docs/PSPetApi.md @@ -28,11 +28,13 @@ $Configuration = Get-Configuration # Configure OAuth2 access token for authorization: petstore_auth $Configuration.AccessToken = "YOUR_ACCESS_TOKEN" -$Pet = (Initialize-Pet -Id 123 -Category (Initialize-Category -Id 123 -Name "Name_example") -Name "Name_example" -PhotoUrls @("PhotoUrls_example") -Tags @((Initialize-Tag -Id 123 -Name "Name_example")) -Status "available") # Pet | Pet object that needs to be added to the store +$Category = Initialize-Category -Id 0 -Name "MyName" +$Tag = Initialize-Tag -Id 0 -Name "MyName" +$Pet = Initialize-Pet -Id 0 -Category $Category -Name "doggie" -PhotoUrls "MyPhotoUrls" -Tags $Tag -Status "available" # Pet | Pet object that needs to be added to the store # Add a new pet to the store try { - $Result = Add-PSPet -Pet $Pet + $Result = Add-PSPet -Pet $Pet } catch { Write-Host ("Exception occured when calling Add-PSPet: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -43,7 +45,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + **Pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -75,12 +77,12 @@ $Configuration = Get-Configuration # Configure OAuth2 access token for authorization: petstore_auth $Configuration.AccessToken = "YOUR_ACCESS_TOKEN" -$PetId = 987 # Int64 | Pet id to delete -$ApiKey = "ApiKey_example" # String | (optional) +$PetId = 789 # Int64 | Pet id to delete +$ApiKey = "MyApiKey" # String | (optional) # Deletes a pet try { - $Result = Remove-Pet -PetId $PetId -ApiKey $ApiKey + $Result = Remove-Pet -PetId $PetId -ApiKey $ApiKey } catch { Write-Host ("Exception occured when calling Remove-Pet: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -91,8 +93,8 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **PetId** | **Int64**| Pet id to delete | - **ApiKey** | **String**| | [optional] + **PetId** | **Int64**| Pet id to delete | + **ApiKey** | **String**| | [optional] ### Return type @@ -125,11 +127,11 @@ $Configuration = Get-Configuration # Configure OAuth2 access token for authorization: petstore_auth $Configuration.AccessToken = "YOUR_ACCESS_TOKEN" -$Status = @("available") # String[] | Status values that need to be considered for filter +$Status = "available" # String[] | Status values that need to be considered for filter # Finds Pets by status try { - $Result = Find-PSPetsByStatus -Status $Status + $Result = Find-PSPetsByStatus -Status $Status } catch { Write-Host ("Exception occured when calling Find-PSPetsByStatus: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -140,7 +142,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Status** | [**String[]**](String.md)| Status values that need to be considered for filter | + **Status** | [**String[]**](String.md)| Status values that need to be considered for filter | ### Return type @@ -173,11 +175,11 @@ $Configuration = Get-Configuration # Configure OAuth2 access token for authorization: petstore_auth $Configuration.AccessToken = "YOUR_ACCESS_TOKEN" -$Tags = @("Inner_example") # String[] | Tags to filter by +$Tags = "MyTags" # String[] | Tags to filter by # Finds Pets by tags try { - $Result = Find-PSPetsByTags -Tags $Tags + $Result = Find-PSPetsByTags -Tags $Tags } catch { Write-Host ("Exception occured when calling Find-PSPetsByTags: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -188,7 +190,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Tags** | [**String[]**](String.md)| Tags to filter by | + **Tags** | [**String[]**](String.md)| Tags to filter by | ### Return type @@ -223,11 +225,11 @@ $Configuration.ApiKey.api_key = "YOUR_API_KEY" # Uncomment below to setup prefix (e.g. Bearer) for API key, if needed #$Configuration.ApiKeyPrefix.api_key = "Bearer" -$PetId = 987 # Int64 | ID of pet to return +$PetId = 789 # Int64 | ID of pet to return # Find pet by ID try { - $Result = Get-PSPetById -PetId $PetId + $Result = Get-PSPetById -PetId $PetId } catch { Write-Host ("Exception occured when calling Get-PSPetById: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -238,7 +240,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **PetId** | **Int64**| ID of pet to return | + **PetId** | **Int64**| ID of pet to return | ### Return type @@ -269,11 +271,13 @@ $Configuration = Get-Configuration # Configure OAuth2 access token for authorization: petstore_auth $Configuration.AccessToken = "YOUR_ACCESS_TOKEN" -$Pet = (Initialize-Pet -Id 123 -Category (Initialize-Category -Id 123 -Name "Name_example") -Name "Name_example" -PhotoUrls @("PhotoUrls_example") -Tags @((Initialize-Tag -Id 123 -Name "Name_example")) -Status "available") # Pet | Pet object that needs to be added to the store +$Category = Initialize-Category -Id 0 -Name "MyName" +$Tag = Initialize-Tag -Id 0 -Name "MyName" +$Pet = Initialize-Pet -Id 0 -Category $Category -Name "doggie" -PhotoUrls "MyPhotoUrls" -Tags $Tag -Status "available" # Pet | Pet object that needs to be added to the store # Update an existing pet try { - $Result = Update-PSPet -Pet $Pet + $Result = Update-PSPet -Pet $Pet } catch { Write-Host ("Exception occured when calling Update-PSPet: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -284,7 +288,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + **Pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -317,13 +321,13 @@ $Configuration = Get-Configuration # Configure OAuth2 access token for authorization: petstore_auth $Configuration.AccessToken = "YOUR_ACCESS_TOKEN" -$PetId = 987 # Int64 | ID of pet that needs to be updated -$Name = "Name_example" # String | Updated name of the pet (optional) -$Status = "Status_example" # String | Updated status of the pet (optional) +$PetId = 789 # Int64 | ID of pet that needs to be updated +$Name = "MyName" # String | Updated name of the pet (optional) +$Status = "MyStatus" # String | Updated status of the pet (optional) # Updates a pet in the store with form data try { - $Result = Update-PSPetWithForm -PetId $PetId -Name $Name -Status $Status + $Result = Update-PSPetWithForm -PetId $PetId -Name $Name -Status $Status } catch { Write-Host ("Exception occured when calling Update-PSPetWithForm: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -334,9 +338,9 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **PetId** | **Int64**| ID of pet that needs to be updated | - **Name** | **String**| Updated name of the pet | [optional] - **Status** | **String**| Updated status of the pet | [optional] + **PetId** | **Int64**| ID of pet that needs to be updated | + **Name** | **String**| Updated name of the pet | [optional] + **Status** | **String**| Updated status of the pet | [optional] ### Return type @@ -369,13 +373,13 @@ $Configuration = Get-Configuration # Configure OAuth2 access token for authorization: petstore_auth $Configuration.AccessToken = "YOUR_ACCESS_TOKEN" -$PetId = 987 # Int64 | ID of pet to update -$AdditionalMetadata = "AdditionalMetadata_example" # String | Additional data to pass to server (optional) -$File = 987 # System.IO.FileInfo | file to upload (optional) +$PetId = 789 # Int64 | ID of pet to update +$AdditionalMetadata = "MyAdditionalMetadata" # String | Additional data to pass to server (optional) +$File = # System.IO.FileInfo | file to upload (optional) # uploads an image try { - $Result = Invoke-PSUploadFile -PetId $PetId -AdditionalMetadata $AdditionalMetadata -File $File + $Result = Invoke-PSUploadFile -PetId $PetId -AdditionalMetadata $AdditionalMetadata -File $File } catch { Write-Host ("Exception occured when calling Invoke-PSUploadFile: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -386,9 +390,9 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **PetId** | **Int64**| ID of pet to update | - **AdditionalMetadata** | **String**| Additional data to pass to server | [optional] - **File** | **System.IO.FileInfo****System.IO.FileInfo**| file to upload | [optional] + **PetId** | **Int64**| ID of pet to update | + **AdditionalMetadata** | **String**| Additional data to pass to server | [optional] + **File** | **System.IO.FileInfo****System.IO.FileInfo**| file to upload | [optional] ### Return type diff --git a/samples/client/petstore/powershell/docs/PSStoreApi.md b/samples/client/petstore/powershell/docs/PSStoreApi.md index 33b3541ced6..d31285c6e4b 100644 --- a/samples/client/petstore/powershell/docs/PSStoreApi.md +++ b/samples/client/petstore/powershell/docs/PSStoreApi.md @@ -21,11 +21,11 @@ For valid response try integer IDs with value < 1000. Anything above 1000 or non ### Example ```powershell -$OrderId = "OrderId_example" # String | ID of the order that needs to be deleted +$OrderId = "MyOrderId" # String | ID of the order that needs to be deleted # Delete purchase order by ID try { - $Result = Remove-PSOrder -OrderId $OrderId + $Result = Remove-PSOrder -OrderId $OrderId } catch { Write-Host ("Exception occured when calling Remove-PSOrder: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -36,7 +36,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **OrderId** | **String**| ID of the order that needs to be deleted | + **OrderId** | **String**| ID of the order that needs to be deleted | ### Return type @@ -73,7 +73,7 @@ $Configuration.ApiKey.api_key = "YOUR_API_KEY" # Returns pet inventories by status try { - $Result = Get-PSInventory + $Result = Get-PSInventory } catch { Write-Host ("Exception occured when calling Get-PSInventory: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -109,11 +109,11 @@ For valid response try integer IDs with value <= 5 or > 10. Other values will ge ### Example ```powershell -$OrderId = 987 # Int64 | ID of pet that needs to be fetched +$OrderId = 789 # Int64 | ID of pet that needs to be fetched # Find purchase order by ID try { - $Result = Get-PSOrderById -OrderId $OrderId + $Result = Get-PSOrderById -OrderId $OrderId } catch { Write-Host ("Exception occured when calling Get-PSOrderById: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -124,7 +124,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **OrderId** | **Int64**| ID of pet that needs to be fetched | + **OrderId** | **Int64**| ID of pet that needs to be fetched | ### Return type @@ -150,11 +150,11 @@ Place an order for a pet ### Example ```powershell -$Order = (Initialize-Order -Id 123 -PetId 123 -Quantity 123 -ShipDate Get-Date -Status "placed" -Complete $false) # Order | order placed for purchasing the pet +$Order = Initialize-Order -Id 0 -PetId 0 -Quantity 0 -ShipDate (Get-Date) -Status "placed" -Complete $false # Order | order placed for purchasing the pet # Place an order for a pet try { - $Result = Invoke-PSPlaceOrder -Order $Order + $Result = Invoke-PSPlaceOrder -Order $Order } catch { Write-Host ("Exception occured when calling Invoke-PSPlaceOrder: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -165,7 +165,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Order** | [**Order**](Order.md)| order placed for purchasing the pet | + **Order** | [**Order**](Order.md)| order placed for purchasing the pet | ### Return type diff --git a/samples/client/petstore/powershell/docs/PSUserApi.md b/samples/client/petstore/powershell/docs/PSUserApi.md index f008e292f2c..e6982e1cfe4 100644 --- a/samples/client/petstore/powershell/docs/PSUserApi.md +++ b/samples/client/petstore/powershell/docs/PSUserApi.md @@ -32,11 +32,11 @@ $Configuration.ApiKey.AUTH_KEY = "YOUR_API_KEY" # Uncomment below to setup prefix (e.g. Bearer) for API key, if needed #$Configuration.ApiKeyPrefix.AUTH_KEY = "Bearer" -$User = (Initialize-User -Id 123 -Username "Username_example" -FirstName "FirstName_example" -LastName "LastName_example" -Email "Email_example" -Password "Password_example" -Phone "Phone_example" -UserStatus 123) # User | Created user object +$User = Initialize-User -Id 0 -Username "MyUsername" -FirstName "MyFirstName" -LastName "MyLastName" -Email "MyEmail" -Password "MyPassword" -Phone "MyPhone" -UserStatus 0 # User | Created user object # Create user try { - $Result = New-PSUser -User $User + $Result = New-PSUser -User $User } catch { Write-Host ("Exception occured when calling New-PSUser: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -47,7 +47,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **User** | [**User**](User.md)| Created user object | + **User** | [**User**](User.md)| Created user object | ### Return type @@ -80,11 +80,11 @@ $Configuration.ApiKey.AUTH_KEY = "YOUR_API_KEY" # Uncomment below to setup prefix (e.g. Bearer) for API key, if needed #$Configuration.ApiKeyPrefix.AUTH_KEY = "Bearer" -$User = @((Initialize-User -Id 123 -Username "Username_example" -FirstName "FirstName_example" -LastName "LastName_example" -Email "Email_example" -Password "Password_example" -Phone "Phone_example" -UserStatus 123)) # User[] | List of user object +$User = Initialize-User -Id 0 -Username "MyUsername" -FirstName "MyFirstName" -LastName "MyLastName" -Email "MyEmail" -Password "MyPassword" -Phone "MyPhone" -UserStatus 0 # User[] | List of user object # Creates list of users with given input array try { - $Result = New-PSUsersWithArrayInput -User $User + $Result = New-PSUsersWithArrayInput -User $User } catch { Write-Host ("Exception occured when calling New-PSUsersWithArrayInput: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -95,7 +95,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **User** | [**User[]**](User.md)| List of user object | + **User** | [**User[]**](User.md)| List of user object | ### Return type @@ -128,11 +128,11 @@ $Configuration.ApiKey.AUTH_KEY = "YOUR_API_KEY" # Uncomment below to setup prefix (e.g. Bearer) for API key, if needed #$Configuration.ApiKeyPrefix.AUTH_KEY = "Bearer" -$User = @() # User[] | List of user object +$User = Initialize-User -Id 0 -Username "MyUsername" -FirstName "MyFirstName" -LastName "MyLastName" -Email "MyEmail" -Password "MyPassword" -Phone "MyPhone" -UserStatus 0 # User[] | List of user object # Creates list of users with given input array try { - $Result = New-PSUsersWithListInput -User $User + $Result = New-PSUsersWithListInput -User $User } catch { Write-Host ("Exception occured when calling New-PSUsersWithListInput: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -143,7 +143,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **User** | [**User[]**](User.md)| List of user object | + **User** | [**User[]**](User.md)| List of user object | ### Return type @@ -178,11 +178,11 @@ $Configuration.ApiKey.AUTH_KEY = "YOUR_API_KEY" # Uncomment below to setup prefix (e.g. Bearer) for API key, if needed #$Configuration.ApiKeyPrefix.AUTH_KEY = "Bearer" -$Username = "Username_example" # String | The name that needs to be deleted +$Username = "MyUsername" # String | The name that needs to be deleted # Delete user try { - $Result = Remove-PSUser -Username $Username + $Result = Remove-PSUser -Username $Username } catch { Write-Host ("Exception occured when calling Remove-PSUser: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -193,7 +193,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Username** | **String**| The name that needs to be deleted | + **Username** | **String**| The name that needs to be deleted | ### Return type @@ -219,11 +219,11 @@ Get user by user name ### Example ```powershell -$Username = "Username_example" # String | The name that needs to be fetched. Use user1 for testing. +$Username = "MyUsername" # String | The name that needs to be fetched. Use user1 for testing. # Get user by user name try { - $Result = Get-PSUserByName -Username $Username + $Result = Get-PSUserByName -Username $Username } catch { Write-Host ("Exception occured when calling Get-PSUserByName: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -234,7 +234,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Username** | **String**| The name that needs to be fetched. Use user1 for testing. | + **Username** | **String**| The name that needs to be fetched. Use user1 for testing. | ### Return type @@ -261,12 +261,12 @@ Logs user into the system ### Example ```powershell -$Username = "Username_example" # String | The user name for login -$Password = "Password_example" # String | The password for login in clear text +$Username = "MyUsername" # String | The user name for login +$Password = "MyPassword" # String | The password for login in clear text # Logs user into the system try { - $Result = Invoke-PSLoginUser -Username $Username -Password $Password + $Result = Invoke-PSLoginUser -Username $Username -Password $Password } catch { Write-Host ("Exception occured when calling Invoke-PSLoginUser: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -277,8 +277,8 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Username** | **String**| The user name for login | - **Password** | **String**| The password for login in clear text | + **Username** | **String**| The user name for login | + **Password** | **String**| The password for login in clear text | ### Return type @@ -313,7 +313,7 @@ $Configuration.ApiKey.AUTH_KEY = "YOUR_API_KEY" # Logs out current logged in user session try { - $Result = Invoke-PSLogoutUser + $Result = Invoke-PSLogoutUser } catch { Write-Host ("Exception occured when calling Invoke-PSLogoutUser: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -357,12 +357,12 @@ $Configuration.ApiKey.AUTH_KEY = "YOUR_API_KEY" # Uncomment below to setup prefix (e.g. Bearer) for API key, if needed #$Configuration.ApiKeyPrefix.AUTH_KEY = "Bearer" -$Username = "Username_example" # String | name that need to be deleted -$User = # User | Updated user object +$Username = "MyUsername" # String | name that need to be deleted +$User = Initialize-User -Id 0 -Username "MyUsername" -FirstName "MyFirstName" -LastName "MyLastName" -Email "MyEmail" -Password "MyPassword" -Phone "MyPhone" -UserStatus 0 # User | Updated user object # Updated user try { - $Result = Update-PSUser -Username $Username -User $User + $Result = Update-PSUser -Username $Username -User $User } catch { Write-Host ("Exception occured when calling Update-PSUser: {0}" -f ($_.ErrorDetails | ConvertFrom-Json)) Write-Host ("Response headers: {0}" -f ($_.Exception.Response.Headers | ConvertTo-Json)) @@ -373,8 +373,8 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Username** | **String**| name that need to be deleted | - **User** | [**User**](User.md)| Updated user object | + **Username** | **String**| name that need to be deleted | + **User** | [**User**](User.md)| Updated user object | ### Return type From 173c7ca652d6402d7dd88ff84e2184c40d314572 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 3 Jul 2021 22:30:54 +0800 Subject: [PATCH 172/192] update powershell samples --- .../petstore/powershell/docs/PSPetApi.md | 26 +++++++++---------- .../petstore/powershell/docs/PSStoreApi.md | 6 ++--- .../petstore/powershell/docs/PSUserApi.md | 18 ++++++------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/samples/client/petstore/powershell/docs/PSPetApi.md b/samples/client/petstore/powershell/docs/PSPetApi.md index 37f092f680d..913618efaf3 100644 --- a/samples/client/petstore/powershell/docs/PSPetApi.md +++ b/samples/client/petstore/powershell/docs/PSPetApi.md @@ -45,7 +45,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + **Pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -93,8 +93,8 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **PetId** | **Int64**| Pet id to delete | - **ApiKey** | **String**| | [optional] + **PetId** | **Int64**| Pet id to delete | + **ApiKey** | **String**| | [optional] ### Return type @@ -142,7 +142,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Status** | [**String[]**](String.md)| Status values that need to be considered for filter | + **Status** | [**String[]**](String.md)| Status values that need to be considered for filter | ### Return type @@ -190,7 +190,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Tags** | [**String[]**](String.md)| Tags to filter by | + **Tags** | [**String[]**](String.md)| Tags to filter by | ### Return type @@ -240,7 +240,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **PetId** | **Int64**| ID of pet to return | + **PetId** | **Int64**| ID of pet to return | ### Return type @@ -288,7 +288,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + **Pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -338,9 +338,9 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **PetId** | **Int64**| ID of pet that needs to be updated | - **Name** | **String**| Updated name of the pet | [optional] - **Status** | **String**| Updated status of the pet | [optional] + **PetId** | **Int64**| ID of pet that needs to be updated | + **Name** | **String**| Updated name of the pet | [optional] + **Status** | **String**| Updated status of the pet | [optional] ### Return type @@ -390,9 +390,9 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **PetId** | **Int64**| ID of pet to update | - **AdditionalMetadata** | **String**| Additional data to pass to server | [optional] - **File** | **System.IO.FileInfo****System.IO.FileInfo**| file to upload | [optional] + **PetId** | **Int64**| ID of pet to update | + **AdditionalMetadata** | **String**| Additional data to pass to server | [optional] + **File** | **System.IO.FileInfo****System.IO.FileInfo**| file to upload | [optional] ### Return type diff --git a/samples/client/petstore/powershell/docs/PSStoreApi.md b/samples/client/petstore/powershell/docs/PSStoreApi.md index d31285c6e4b..479c994a009 100644 --- a/samples/client/petstore/powershell/docs/PSStoreApi.md +++ b/samples/client/petstore/powershell/docs/PSStoreApi.md @@ -36,7 +36,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **OrderId** | **String**| ID of the order that needs to be deleted | + **OrderId** | **String**| ID of the order that needs to be deleted | ### Return type @@ -124,7 +124,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **OrderId** | **Int64**| ID of pet that needs to be fetched | + **OrderId** | **Int64**| ID of pet that needs to be fetched | ### Return type @@ -165,7 +165,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Order** | [**Order**](Order.md)| order placed for purchasing the pet | + **Order** | [**Order**](Order.md)| order placed for purchasing the pet | ### Return type diff --git a/samples/client/petstore/powershell/docs/PSUserApi.md b/samples/client/petstore/powershell/docs/PSUserApi.md index e6982e1cfe4..f701d6daba9 100644 --- a/samples/client/petstore/powershell/docs/PSUserApi.md +++ b/samples/client/petstore/powershell/docs/PSUserApi.md @@ -47,7 +47,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **User** | [**User**](User.md)| Created user object | + **User** | [**User**](User.md)| Created user object | ### Return type @@ -95,7 +95,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **User** | [**User[]**](User.md)| List of user object | + **User** | [**User[]**](User.md)| List of user object | ### Return type @@ -143,7 +143,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **User** | [**User[]**](User.md)| List of user object | + **User** | [**User[]**](User.md)| List of user object | ### Return type @@ -193,7 +193,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Username** | **String**| The name that needs to be deleted | + **Username** | **String**| The name that needs to be deleted | ### Return type @@ -234,7 +234,7 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Username** | **String**| The name that needs to be fetched. Use user1 for testing. | + **Username** | **String**| The name that needs to be fetched. Use user1 for testing. | ### Return type @@ -277,8 +277,8 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Username** | **String**| The user name for login | - **Password** | **String**| The password for login in clear text | + **Username** | **String**| The user name for login | + **Password** | **String**| The password for login in clear text | ### Return type @@ -373,8 +373,8 @@ try { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **Username** | **String**| name that need to be deleted | - **User** | [**User**](User.md)| Updated user object | + **Username** | **String**| name that need to be deleted | + **User** | [**User**](User.md)| Updated user object | ### Return type From 17b6379df517153ab0caba56fcb5672c9084bf66 Mon Sep 17 00:00:00 2001 From: Matthias Ernst Date: Sat, 3 Jul 2021 17:33:39 +0200 Subject: [PATCH 173/192] [Kotlin Multiplatform] Update and fixes for Kotlin 1.5.10 and Kotlinx.serialization 1.2.1 (#9755) * Update Kotlin Multiplatform with Kotlin 1.5.10, Ktor 1.6.0 and Kotlinx.serialization 1.2.1 * remove @Serializable from interfaces * Using 'String(CharArray): String' is an error. Use CharArray.concatToString() instead * Fix, RequestConfig needs a type to infer type variable T Fixes from @DevSrSouzaern * Fix `private` keyword not being handle as a reservedWords * Fix enum serialization generation * Migrate gradle build to Kotlin DSL * update samples and documentation * PR Review changes * sample update * revert non multiplatform kotlinx_serialization removal * default Json{} in ApiClient * revert accidental version push for jvm client * Match ktor and Kotlinx Serialization version in documentation and build.gradle.kts * remove const from JSON_DEFAULT * Update AbstractKotlinCodegen.java Co-authored-by: Gabriel Souza Co-authored-by: ern --- docs/generators/kotlin-server-deprecated.md | 1 + docs/generators/kotlin-server.md | 1 + docs/generators/kotlin-spring.md | 1 + docs/generators/kotlin-vertx.md | 1 + docs/generators/kotlin.md | 3 +- .../languages/AbstractKotlinCodegen.java | 1 + .../languages/KotlinClientCodegen.java | 11 +- .../resources/kotlin-client/README.mustache | 4 +- .../kotlin-client/data_class.mustache | 12 +- .../kotlin-client/enum_class.mustache | 7 +- .../libraries/multiplatform/api.mustache | 40 +---- .../multiplatform/build.gradle.kts.mustache | 95 +++++++++++ .../multiplatform/build.gradle.mustache | 161 ------------------ .../infrastructure/ApiClient.kt.mustache | 46 ++--- .../Base64ByteArray.kt.mustache | 5 +- .../infrastructure/Bytes.kt.mustache | 4 +- .../infrastructure/HttpResponse.kt.mustache | 16 +- .../infrastructure/OctetByteArray.kt.mustache | 5 +- .../serial_wrapper_request_list.mustache | 8 +- .../serial_wrapper_request_map.mustache | 8 +- .../serial_wrapper_response_list.mustache | 8 +- .../serial_wrapper_response_map.mustache | 8 +- .../settings.gradle.kts.mustache | 2 + .../.openapi-generator/FILES | 4 +- .../petstore/kotlin-multiplatform/README.md | 2 +- .../kotlin-multiplatform/build.gradle | 161 ------------------ .../kotlin-multiplatform/build.gradle.kts | 95 +++++++++++ .../kotlin-multiplatform/settings.gradle | 2 - .../kotlin-multiplatform/settings.gradle.kts | 2 + .../org/openapitools/client/apis/PetApi.kt | 61 +++---- .../org/openapitools/client/apis/StoreApi.kt | 43 ++--- .../org/openapitools/client/apis/UserApi.kt | 61 +++---- .../client/infrastructure/ApiClient.kt | 53 ++---- .../client/infrastructure/Base64ByteArray.kt | 5 +- .../client/infrastructure/Bytes.kt | 4 +- .../client/infrastructure/HttpResponse.kt | 16 +- .../client/infrastructure/OctetByteArray.kt | 5 +- .../openapitools/client/models/ApiResponse.kt | 3 +- .../openapitools/client/models/Category.kt | 3 +- .../org/openapitools/client/models/Order.kt | 10 +- .../org/openapitools/client/models/Pet.kt | 10 +- .../org/openapitools/client/models/Tag.kt | 3 +- .../org/openapitools/client/models/User.kt | 3 +- .../org/openapitools/client/models/PetEnum.kt | 1 + 44 files changed, 392 insertions(+), 603 deletions(-) create mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache delete mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.mustache create mode 100644 modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/settings.gradle.kts.mustache delete mode 100644 samples/client/petstore/kotlin-multiplatform/build.gradle create mode 100644 samples/client/petstore/kotlin-multiplatform/build.gradle.kts delete mode 100644 samples/client/petstore/kotlin-multiplatform/settings.gradle create mode 100644 samples/client/petstore/kotlin-multiplatform/settings.gradle.kts diff --git a/docs/generators/kotlin-server-deprecated.md b/docs/generators/kotlin-server-deprecated.md index aa33465abdd..778b13ee7b3 100644 --- a/docs/generators/kotlin-server-deprecated.md +++ b/docs/generators/kotlin-server-deprecated.md @@ -93,6 +93,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • object
  • open
  • package
  • +
  • private
  • return
  • super
  • this
  • diff --git a/docs/generators/kotlin-server.md b/docs/generators/kotlin-server.md index 4ea1d39a6ee..f6e6c260343 100644 --- a/docs/generators/kotlin-server.md +++ b/docs/generators/kotlin-server.md @@ -95,6 +95,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • object
  • open
  • package
  • +
  • private
  • return
  • super
  • this
  • diff --git a/docs/generators/kotlin-spring.md b/docs/generators/kotlin-spring.md index e2895ecc57f..58152432964 100644 --- a/docs/generators/kotlin-spring.md +++ b/docs/generators/kotlin-spring.md @@ -106,6 +106,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • object
  • open
  • package
  • +
  • private
  • return
  • super
  • this
  • diff --git a/docs/generators/kotlin-vertx.md b/docs/generators/kotlin-vertx.md index 2d0fb923d13..246ffa62a64 100644 --- a/docs/generators/kotlin-vertx.md +++ b/docs/generators/kotlin-vertx.md @@ -87,6 +87,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • object
  • open
  • package
  • +
  • private
  • return
  • super
  • this
  • diff --git a/docs/generators/kotlin.md b/docs/generators/kotlin.md index 5883c0f573e..8f853b41cac 100644 --- a/docs/generators/kotlin.md +++ b/docs/generators/kotlin.md @@ -14,7 +14,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |dateLibrary|Option. Date library to use|
    **threetenbp-localdatetime**
    Threetenbp - Backport of JSR310 (jvm only, for legacy app only)
    **string**
    String
    **java8-localdatetime**
    Java 8 native JSR310 (jvm only, for legacy app only)
    **java8**
    Java 8 native JSR310 (jvm only, preferred for jdk 1.8+)
    **threetenbp**
    Threetenbp - Backport of JSR310 (jvm only, preferred for jdk < 1.8)
    |java8| |enumPropertyNaming|Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original'| |camelCase| |groupId|Generated artifact package's organization (i.e. maven groupId).| |org.openapitools| -|library|Library template (sub-template) to use|
    **jvm-okhttp4**
    [DEFAULT] Platform: Java Virtual Machine. HTTP client: OkHttp 4.2.0 (Android 5.0+ and Java 8+). JSON processing: Moshi 1.8.0.
    **jvm-okhttp3**
    Platform: Java Virtual Machine. HTTP client: OkHttp 3.12.4 (Android 2.3+ and Java 7+). JSON processing: Moshi 1.8.0.
    **jvm-retrofit2**
    Platform: Java Virtual Machine. HTTP client: Retrofit 2.6.2.
    **multiplatform**
    Platform: Kotlin multiplatform. HTTP client: Ktor 1.2.4. JSON processing: Kotlinx Serialization: 0.12.0.
    |jvm-okhttp4| +|library|Library template (sub-template) to use|
    **jvm-okhttp4**
    [DEFAULT] Platform: Java Virtual Machine. HTTP client: OkHttp 4.2.0 (Android 5.0+ and Java 8+). JSON processing: Moshi 1.8.0.
    **jvm-okhttp3**
    Platform: Java Virtual Machine. HTTP client: OkHttp 3.12.4 (Android 2.3+ and Java 7+). JSON processing: Moshi 1.8.0.
    **jvm-retrofit2**
    Platform: Java Virtual Machine. HTTP client: Retrofit 2.6.2.
    **multiplatform**
    Platform: Kotlin multiplatform. HTTP client: Ktor 1.6.0. JSON processing: Kotlinx Serialization: 1.2.1.
    |jvm-okhttp4| |modelMutable|Create mutable models| |false| |moshiCodeGen|Whether to enable codegen with the Moshi library. Refer to the [official Moshi doc](https://github.com/square/moshi#codegen) for more info.| |false| |packageName|Generated artifact package name.| |org.openapitools.client| @@ -97,6 +97,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • object
  • open
  • package
  • +
  • private
  • return
  • super
  • this
  • diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index 8905d13a3f7..2506f6d7e0c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -126,6 +126,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co "var", "when", "while", + "private", "open", "external", "internal" diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index 5c9b27ae59d..1b71f1a9e27 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -188,7 +188,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { supportedLibraries.put(JVM_OKHTTP4, "[DEFAULT] Platform: Java Virtual Machine. HTTP client: OkHttp 4.2.0 (Android 5.0+ and Java 8+). JSON processing: Moshi 1.8.0."); supportedLibraries.put(JVM_OKHTTP3, "Platform: Java Virtual Machine. HTTP client: OkHttp 3.12.4 (Android 2.3+ and Java 7+). JSON processing: Moshi 1.8.0."); supportedLibraries.put(JVM_RETROFIT2, "Platform: Java Virtual Machine. HTTP client: Retrofit 2.6.2."); - supportedLibraries.put(MULTIPLATFORM, "Platform: Kotlin multiplatform. HTTP client: Ktor 1.2.4. JSON processing: Kotlinx Serialization: 0.12.0."); + supportedLibraries.put(MULTIPLATFORM, "Platform: Kotlin multiplatform. HTTP client: Ktor 1.6.0. JSON processing: Kotlinx Serialization: 1.2.1."); CliOption libraryOption = new CliOption(CodegenConstants.LIBRARY, "Library template (sub-template) to use"); libraryOption.setEnum(supportedLibraries); @@ -591,8 +591,13 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { private void commonSupportingFiles() { supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); - supportingFiles.add(new SupportingFile("build.gradle.mustache", "", "build.gradle")); - supportingFiles.add(new SupportingFile("settings.gradle.mustache", "", "settings.gradle")); + if(getLibrary().equals(MULTIPLATFORM)) { + supportingFiles.add(new SupportingFile("build.gradle.kts.mustache", "", "build.gradle.kts")); + supportingFiles.add(new SupportingFile("settings.gradle.kts.mustache", "", "settings.gradle.kts")); + } else { + supportingFiles.add(new SupportingFile("build.gradle.mustache", "", "build.gradle")); + supportingFiles.add(new SupportingFile("settings.gradle.mustache", "", "settings.gradle")); + } // gradle wrapper supporting files supportingFiles.add(new SupportingFile("gradlew.mustache", "", "gradlew")); diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/README.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/README.mustache index 110b828a0b9..546790a7fb6 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/README.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/README.mustache @@ -7,7 +7,7 @@ * Gradle 6.8.3 {{/jvm}} {{#multiplatform}} -* Kotlin 1.3.50 +* Kotlin 1.5.10 {{/multiplatform}} ## Build @@ -89,4 +89,4 @@ Authentication schemes defined for the API: {{/scopes}} {{/isOAuth}} -{{/authMethods}} \ No newline at end of file +{{/authMethods}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache index f840db6e394..093d3031839 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache @@ -29,7 +29,8 @@ import kotlinx.parcelize.Parcelize {{/multiplatform}} {{#multiplatform}} import kotlinx.serialization.* -import kotlinx.serialization.internal.CommonEnumSerializer +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* {{/multiplatform}} {{#serializableModel}} import java.io.Serializable @@ -44,7 +45,7 @@ import java.io.Serializable {{#parcelizeModels}} @Parcelize {{/parcelizeModels}} -{{#multiplatform}}@Serializable{{/multiplatform}}{{#kotlinx_serialization}}{{#serializableModel}}@KSerializable{{/serializableModel}}{{^serializableModel}}@Serializable{{/serializableModel}}{{/kotlinx_serialization}}{{#moshi}}{{#moshiCodeGen}}@JsonClass(generateAdapter = true){{/moshiCodeGen}}{{/moshi}}{{#jackson}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{/jackson}} +{{#multiplatform}}{{#discriminator}}{{/discriminator}}{{^discriminator}}@Serializable{{/discriminator}}{{/multiplatform}}{{#kotlinx_serialization}}{{#serializableModel}}@KSerializable{{/serializableModel}}{{^serializableModel}}@Serializable{{/serializableModel}}{{/kotlinx_serialization}}{{#moshi}}{{#moshiCodeGen}}@JsonClass(generateAdapter = true){{/moshiCodeGen}}{{/moshi}}{{#jackson}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{/jackson}} {{#isDeprecated}} @Deprecated(message = "This schema is deprecated.") {{/isDeprecated}} @@ -69,9 +70,14 @@ import java.io.Serializable * {{{description}}} * Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} */ + {{^multiplatform}} {{#kotlinx_serialization}} {{#serializableModel}}@KSerializable{{/serializableModel}}{{^serializableModel}}@Serializable{{/serializableModel}} {{/kotlinx_serialization}} + {{/multiplatform}} + {{#multiplatform}} + @Serializable + {{/multiplatform}} {{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{{nameInCamelCase}}}(val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) { {{#allowableValues}} {{#enumVars}} @@ -90,7 +96,7 @@ import java.io.Serializable {{/kotlinx_serialization}} {{/multiplatform}} {{#multiplatform}} - {{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}} + @SerialName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) {{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}} {{/multiplatform}} {{/enumVars}} {{/allowableValues}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/enum_class.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/enum_class.mustache index 2071a6b537a..4a6a7acfa31 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/enum_class.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/enum_class.mustache @@ -15,14 +15,14 @@ import kotlinx.serialization.Serializable {{/multiplatform}} {{#multiplatform}} import kotlinx.serialization.* -import kotlinx.serialization.internal.CommonEnumSerializer {{/multiplatform}} /** * {{{description}}} * Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}} */ -{{#multiplatform}}@Serializable(with = {{classname}}.Serializer::class){{/multiplatform}}{{#kotlinx_serialization}}@Serializable{{/kotlinx_serialization}} + +{{#multiplatform}}@Serializable{{/multiplatform}}{{#kotlinx_serialization}}@Serializable{{/kotlinx_serialization}} {{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{classname}}(val value: {{{dataType}}}) { {{#allowableValues}}{{#enumVars}} @@ -40,6 +40,9 @@ import kotlinx.serialization.internal.CommonEnumSerializer @SerialName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) {{/kotlinx_serialization}} {{/multiplatform}} + {{#multiplatform}} + @SerialName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) + {{/multiplatform}} {{#isArray}} {{#isList}} {{&name}}(listOf({{{value}}})){{^-last}},{{/-last}}{{#-last}};{{/-last}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache index e51da4590b8..232dda06db3 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache @@ -6,28 +6,20 @@ package {{apiPackage}} import {{packageName}}.infrastructure.* import io.ktor.client.request.forms.formData -import kotlinx.serialization.UnstableDefault import io.ktor.client.engine.HttpClientEngine import io.ktor.client.features.json.serializer.KotlinxSerializer import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonConfiguration import io.ktor.http.ParametersBuilder import kotlinx.serialization.* -import kotlinx.serialization.internal.StringDescriptor +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* {{#operations}} -{{#nonPublicApi}}internal {{/nonPublicApi}}class {{classname}} @UseExperimental(UnstableDefault::class) constructor( - baseUrl: kotlin.String = "{{{basePath}}}", +{{#nonPublicApi}}internal {{/nonPublicApi}}class {{classname}}( + baseUrl: String = ApiClient.BASE_URL, httpClientEngine: HttpClientEngine? = null, - serializer: KotlinxSerializer -) : ApiClient(baseUrl, httpClientEngine, serializer) { - - @UseExperimental(UnstableDefault::class) - constructor( - baseUrl: kotlin.String = "{{{basePath}}}", - httpClientEngine: HttpClientEngine? = null, - jsonConfiguration: JsonConfiguration = JsonConfiguration.Default - ) : this(baseUrl, httpClientEngine, KotlinxSerializer(Json(jsonConfiguration))) + jsonSerializer: Json = ApiClient.JSON_DEFAULT +) : ApiClient(baseUrl, httpClientEngine, jsonSerializer) { {{#operation}} /** @@ -76,7 +68,7 @@ import kotlinx.serialization.internal.StringDescriptor {{{paramName}}}?.apply { localVariableHeaders["{{baseName}}"] = {{#isContainer}}this.joinToString(separator = collectionDelimiter("{{collectionFormat}}")){{/isContainer}}{{^isContainer}}this.toString(){{/isContainer}} } {{/headerParams}} - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.{{httpMethod}}, "{{path}}"{{#pathParams}}.replace("{" + "{{baseName}}" + "}", "${{{paramName}}}"){{/pathParams}}, query = localVariableQuery, @@ -103,23 +95,5 @@ import kotlinx.serialization.internal.StringDescriptor {{/isMap}} {{/operation}} - - {{#nonPublicApi}}internal {{/nonPublicApi}}companion object { - internal fun setMappers(serializer: KotlinxSerializer) { - {{#operation}} - {{#hasBodyParam}} - {{#bodyParam}} - {{#isArray}}serializer.setMapper({{operationIdCamelCase}}Request::class, {{operationIdCamelCase}}Request.serializer()){{/isArray}}{{#isMap}}serializer.setMapper({{operationIdCamelCase}}Request::class, {{operationIdCamelCase}}Request.serializer()){{/isMap}} - {{/bodyParam}} - {{/hasBodyParam}} - {{#isArray}} - serializer.setMapper({{operationIdCamelCase}}Response::class, {{operationIdCamelCase}}Response.serializer()) - {{/isArray}} - {{#isMap}} - serializer.setMapper({{operationIdCamelCase}}Response::class, {{operationIdCamelCase}}Response.serializer()) - {{/isMap}} - {{/operation}} - } - } } {{/operations}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache new file mode 100644 index 00000000000..c6fb465777f --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.kts.mustache @@ -0,0 +1,95 @@ +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget + +plugins { + kotlin("multiplatform") version "1.5.10" // kotlin_version + kotlin("plugin.serialization") version "1.5.10" // kotlin_version +} + +group = "{{groupId}}" +version = "{{artifactVersion}}" + +val kotlin_version = "1.5.10" +val coroutines_version = "1.5.0" +val serialization_version = "1.2.1" +val ktor_version = "1.6.0" + +repositories { + mavenCentral() +} + +kotlin { + jvm() + ios { binaries { framework { freeCompilerArgs += "-Xobjc-generics" } } } + js { + browser() + nodejs() + } + + sourceSets { + val commonMain by getting { + dependencies { + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$serialization_version") + api("io.ktor:ktor-client-core:$ktor_version") + api("io.ktor:ktor-client-json:$ktor_version") + api("io.ktor:ktor-client-serialization:$ktor_version") + } + } + + val commonTest by getting { + dependencies { + implementation(kotlin("test")) + implementation("io.ktor:ktor-client-mock:$ktor_version") + } + } + + val jvmMain by getting { + dependencies { + implementation(kotlin("stdlib-jdk7")) + } + } + + val jvmTest by getting { + dependencies { + implementation(kotlin("test-junit")) + } + } + + val iosMain by getting { + dependencies { + api("io.ktor:ktor-client-ios:$ktor_version") + } + } + + val iosTest by getting + + val jsMain by getting { + dependencies { + api("io.ktor:ktor-client-js:$ktor_version") + } + } + + val jsTest by getting + + all { + languageSettings.apply { + useExperimentalAnnotation("kotlin.Experimental") + } + } + } +} + +tasks { + register("iosTest") { + val device = project.findProperty("device")?.toString() ?: "iPhone 8" + dependsOn("linkDebugTestIosX64") + group = JavaBasePlugin.VERIFICATION_GROUP + description = "Execute unit tests on ${device} simulator" + doLast { + val binary = kotlin.targets.getByName("iosX64").binaries.getTest("DEBUG") + exec { + commandLine("xcrun", "simctl", "spawn", device, binary.outputFile) + } + } + } +} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.mustache deleted file mode 100644 index dfc6736dc6d..00000000000 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/build.gradle.mustache +++ /dev/null @@ -1,161 +0,0 @@ -apply plugin: 'kotlin-multiplatform' -apply plugin: 'kotlinx-serialization' - -group '{{groupId}}' -version '{{artifactVersion}}' - -ext { - kotlin_version = '1.3.50' - kotlinx_version = '1.1.0' - coroutines_version = '1.3.1' - serialization_version = '0.12.0' - ktor_version = '1.2.4' -} - -buildscript { - repositories { - jcenter() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50" // $kotlin_version - classpath "org.jetbrains.kotlin:kotlin-serialization:1.3.50" // $kotlin_version - } -} - -repositories { - jcenter() -} - -kotlin { - jvm() - iosArm64() { binaries { framework { freeCompilerArgs.add("-Xobjc-generics") } } } - iosX64() { binaries { framework { freeCompilerArgs.add("-Xobjc-generics") } } } - js() - - sourceSets { - commonMain { - dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$coroutines_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$serialization_version" - api "io.ktor:ktor-client-core:$ktor_version" - api "io.ktor:ktor-client-json:$ktor_version" - api "io.ktor:ktor-client-serialization:$ktor_version" - } - } - - commonTest { - dependencies { - implementation "org.jetbrains.kotlin:kotlin-test-common" - implementation "org.jetbrains.kotlin:kotlin-test-annotations-common" - implementation "io.ktor:ktor-client-mock:$ktor_version" - } - } - - jvmMain { - dependsOn commonMain - dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serialization_version" - api "io.ktor:ktor-client-core-jvm:$ktor_version" - api "io.ktor:ktor-client-json-jvm:$ktor_version" - api "io.ktor:ktor-client-serialization-jvm:$ktor_version" - } - } - - jvmTest { - dependsOn commonTest - dependencies { - implementation "org.jetbrains.kotlin:kotlin-test" - implementation "org.jetbrains.kotlin:kotlin-test-junit" - implementation "io.ktor:ktor-client-mock-jvm:$ktor_version" - } - } - - iosMain { - dependsOn commonMain - dependencies { - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:$coroutines_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$serialization_version" - api "io.ktor:ktor-client-ios:$ktor_version" - } - } - - iosTest { - dependsOn commonTest - dependencies { - implementation "io.ktor:ktor-client-mock-native:$ktor_version" - } - } - - iosArm64().compilations.main.defaultSourceSet { - dependsOn iosMain - dependencies { - api "io.ktor:ktor-client-ios-iosarm64:$ktor_version" - api "io.ktor:ktor-client-json-iosarm64:$ktor_version" - api "io.ktor:ktor-client-serialization-iosarm64:$ktor_version" - } - } - - iosArm64().compilations.test.defaultSourceSet { - dependsOn iosTest - } - - iosX64().compilations.main.defaultSourceSet { - dependsOn iosMain - dependencies { - api "io.ktor:ktor-client-ios-iosx64:$ktor_version" - api "io.ktor:ktor-client-json-iosx64:$ktor_version" - api "io.ktor:ktor-client-serialization-iosx64:$ktor_version" - } - } - - jsMain { - dependsOn commonMain - dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-js:$coroutines_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$serialization_version" - api "io.ktor:ktor-client-js:$ktor_version" - api "io.ktor:ktor-client-json-js:$ktor_version" - api "io.ktor:ktor-client-serialization-js:$ktor_version" - } - } - - jsTest { - dependsOn commonTest - dependencies { - implementation "io.ktor:ktor-client-mock-js:$ktor_version" - implementation "io.ktor:ktor-client-js:$ktor_version" - implementation "io.ktor:ktor-client-json:$ktor_version" - implementation "io.ktor:ktor-client-serialization-js:$ktor_version" - } - } - - iosX64().compilations.test.defaultSourceSet { - dependsOn iosTest - } - - all { - languageSettings { - useExperimentalAnnotation('kotlin.Experimental') - } - } - } -} - -task iosTest { - def device = project.findProperty("device")?.toString() ?: "iPhone 8" - dependsOn 'linkDebugTestIosX64' - group = JavaBasePlugin.VERIFICATION_GROUP - description = "Execute unit tests on ${device} simulator" - doLast { - def binary = kotlin.targets.iosX64.binaries.getTest('DEBUG') - exec { commandLine 'xcrun', 'simctl', 'spawn', device, binary.outputFile } - } -} - -configurations { // workaround for https://youtrack.jetbrains.com/issue/KT-27170 - compileClasspath -} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache index b1cf9583bdb..27b6162f121 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/ApiClient.kt.mustache @@ -2,24 +2,21 @@ package {{packageName}}.infrastructure import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig -import io.ktor.client.call.call import io.ktor.client.engine.HttpClientEngine import io.ktor.client.features.json.JsonFeature import io.ktor.client.features.json.JsonSerializer import io.ktor.client.features.json.serializer.KotlinxSerializer -import io.ktor.client.request.accept +import io.ktor.client.request.* import io.ktor.client.request.forms.FormDataContent import io.ktor.client.request.forms.MultiPartFormDataContent import io.ktor.client.request.header import io.ktor.client.request.parameter -import io.ktor.client.response.HttpResponse +import io.ktor.client.statement.HttpResponse import io.ktor.client.utils.EmptyContent import io.ktor.http.* import io.ktor.http.content.OutgoingContent import io.ktor.http.content.PartData -import kotlinx.serialization.UnstableDefault import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonConfiguration import {{apiPackage}}.* import {{modelPackage}}.* @@ -28,17 +25,11 @@ import {{packageName}}.auth.* {{#nonPublicApi}}internal {{/nonPublicApi}}open class ApiClient( private val baseUrl: String, httpClientEngine: HttpClientEngine?, - serializer: KotlinxSerializer) { - - @UseExperimental(UnstableDefault::class) - constructor( - baseUrl: String, - httpClientEngine: HttpClientEngine?, - jsonConfiguration: JsonConfiguration) : - this(baseUrl, httpClientEngine, KotlinxSerializer(Json(jsonConfiguration))) + private val json: Json +) { private val serializer: JsonSerializer by lazy { - serializer.apply { setMappers(this) }.ignoreOutgoingContent() + KotlinxSerializer(json).ignoreOutgoingContent() } private val client: HttpClient by lazy { @@ -60,16 +51,9 @@ import {{packageName}}.auth.* {{/hasAuthMethods}} {{#nonPublicApi}}internal {{/nonPublicApi}}companion object { + const val BASE_URL = "{{{basePath}}}" + val JSON_DEFAULT = Json { ignoreUnknownKeys = true } protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) - - private fun setMappers(serializer: KotlinxSerializer) { - {{#apiInfo}}{{#apis}} - {{classname}}.setMappers(serializer) - {{/apis}}{{/apiInfo}} - {{#models}} - {{#model}}{{^isAlias}}serializer.setMapper({{modelPackage}}.{{classname}}::class, {{modelPackage}}.{{classname}}.{{#isEnum}}Serializer{{/isEnum}}{{^isEnum}}serializer(){{/isEnum}}){{/isAlias}}{{/model}} - {{/models}} - } } /** @@ -140,26 +124,26 @@ import {{packageName}}.auth.* auth.bearerToken = bearerToken } - protected suspend fun multipartFormRequest(requestConfig: RequestConfig, body: kotlin.collections.List?, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun multipartFormRequest(requestConfig: RequestConfig, body: kotlin.collections.List?, authNames: kotlin.collections.List): HttpResponse { return request(requestConfig, MultiPartFormDataContent(body ?: listOf()), authNames) } - protected suspend fun urlEncodedFormRequest(requestConfig: RequestConfig, body: Parameters?, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun urlEncodedFormRequest(requestConfig: RequestConfig, body: Parameters?, authNames: kotlin.collections.List): HttpResponse { return request(requestConfig, FormDataContent(body ?: Parameters.Empty), authNames) } - protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { val contentType = (requestConfig.headers[HttpHeaders.ContentType]?.let { ContentType.parse(it) } ?: ContentType.Application.Json) return if (body != null) request(requestConfig, serializer.write(body, contentType), authNames) else request(requestConfig, authNames = authNames) } - protected suspend inline fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { - requestConfig.updateForAuth(authNames) + protected suspend fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { + requestConfig.updateForAuth(authNames) val headers = requestConfig.headers - return client.call { + return client.request { this.url { this.takeFrom(URLBuilder(baseUrl)) appendPath(requestConfig.path.trimStart('/').split('/')) @@ -174,10 +158,10 @@ import {{packageName}}.auth.* if (requestConfig.method in listOf(RequestMethod.PUT, RequestMethod.POST, RequestMethod.PATCH)) this.body = body - }.response + } } - private fun RequestConfig.updateForAuth(authNames: kotlin.collections.List) { + private fun RequestConfig.updateForAuth(authNames: kotlin.collections.List) { for (authName in authNames) { val auth = authentications?.get(authName) ?: throw Exception("Authentication undefined: $authName") auth.apply(query, headers) diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/Base64ByteArray.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/Base64ByteArray.kt.mustache index 168cfc993c3..c3122bd2a59 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/Base64ByteArray.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/Base64ByteArray.kt.mustache @@ -1,13 +1,14 @@ package {{packageName}}.infrastructure import kotlinx.serialization.* -import kotlinx.serialization.internal.StringDescriptor +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* @Serializable class Base64ByteArray(val value: ByteArray) { @Serializer(Base64ByteArray::class) companion object : KSerializer { - override val descriptor = StringDescriptor.withName("Base64ByteArray") + override val descriptor = PrimitiveSerialDescriptor("Base64ByteArray", PrimitiveKind.STRING) override fun serialize(encoder: Encoder, obj: Base64ByteArray) = encoder.encodeString(obj.value.encodeBase64()) override fun deserialize(decoder: Decoder) = Base64ByteArray(decoder.decodeString().decodeBase64Bytes()) } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/Bytes.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/Bytes.kt.mustache index b85013e647b..e882220ade6 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/Bytes.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/Bytes.kt.mustache @@ -1,6 +1,6 @@ package {{packageName}}.infrastructure -import kotlinx.io.core.* +import io.ktor.utils.io.core.* import kotlin.experimental.and private val digits = "0123456789abcdef".toCharArray() @@ -32,7 +32,7 @@ internal fun hex(bytes: ByteArray): String { result[resultIndex++] = digits[b and 0x0f] } - return String(result) + return result.concatToString() } /** diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/HttpResponse.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/HttpResponse.kt.mustache index 87f27a5cf56..12d26567461 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/HttpResponse.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/HttpResponse.kt.mustache @@ -5,7 +5,7 @@ import io.ktor.client.call.typeInfo import io.ktor.http.Headers import io.ktor.http.isSuccess -{{#nonPublicApi}}internal {{/nonPublicApi}}open class HttpResponse(val response: io.ktor.client.response.HttpResponse, val provider: BodyProvider) { +{{#nonPublicApi}}internal {{/nonPublicApi}}open class HttpResponse(val response: io.ktor.client.statement.HttpResponse, val provider: BodyProvider) { val status: Int = response.status.value val success: Boolean = response.status.isSuccess() val headers: Map> = response.headers.mapEntries() @@ -22,29 +22,29 @@ import io.ktor.http.isSuccess } {{#nonPublicApi}}internal {{/nonPublicApi}}interface BodyProvider { - suspend fun body(response: io.ktor.client.response.HttpResponse): T - suspend fun typedBody(response: io.ktor.client.response.HttpResponse, type: TypeInfo): V + suspend fun body(response: io.ktor.client.statement.HttpResponse): T + suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V } {{#nonPublicApi}}internal {{/nonPublicApi}}class TypedBodyProvider(private val type: TypeInfo) : BodyProvider { @Suppress("UNCHECKED_CAST") - override suspend fun body(response: io.ktor.client.response.HttpResponse): T = + override suspend fun body(response: io.ktor.client.statement.HttpResponse): T = response.call.receive(type) as T @Suppress("UNCHECKED_CAST") - override suspend fun typedBody(response: io.ktor.client.response.HttpResponse, type: TypeInfo): V = + override suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V = response.call.receive(type) as V } {{#nonPublicApi}}internal {{/nonPublicApi}}class MappedBodyProvider(private val provider: BodyProvider, private val block: S.() -> T) : BodyProvider { - override suspend fun body(response: io.ktor.client.response.HttpResponse): T = + override suspend fun body(response: io.ktor.client.statement.HttpResponse): T = block(provider.body(response)) - override suspend fun typedBody(response: io.ktor.client.response.HttpResponse, type: TypeInfo): V = + override suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V = provider.typedBody(response, type) } -{{#nonPublicApi}}internal {{/nonPublicApi}}inline fun io.ktor.client.response.HttpResponse.wrap(): HttpResponse = +{{#nonPublicApi}}internal {{/nonPublicApi}}inline fun io.ktor.client.statement.HttpResponse.wrap(): HttpResponse = HttpResponse(this, TypedBodyProvider(typeInfo())) {{#nonPublicApi}}internal {{/nonPublicApi}}fun HttpResponse.map(block: T.() -> V): HttpResponse = diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/OctetByteArray.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/OctetByteArray.kt.mustache index c23ac3ec000..d77a0bcbb48 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/OctetByteArray.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/infrastructure/OctetByteArray.kt.mustache @@ -1,13 +1,14 @@ package {{packageName}}.infrastructure import kotlinx.serialization.* -import kotlinx.serialization.internal.StringDescriptor +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* @Serializable class OctetByteArray(val value: ByteArray) { @Serializer(OctetByteArray::class) companion object : KSerializer { - override val descriptor = StringDescriptor.withName("OctetByteArray") + override val descriptor = PrimitiveSerialDescriptor("OctetByteArray", PrimitiveKind.STRING) override fun serialize(encoder: Encoder, obj: OctetByteArray) = encoder.encodeString(hex(obj.value)) override fun deserialize(decoder: Decoder) = OctetByteArray(hex(decoder.decodeString())) } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_request_list.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_request_list.mustache index a44a242cbd2..f3b0464445e 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_request_list.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_request_list.mustache @@ -2,9 +2,9 @@ private class {{operationIdCamelCase}}Request(val value: List<{{#bodyParam}}{{baseType}}{{/bodyParam}}>) { @Serializer({{operationIdCamelCase}}Request::class) {{#nonPublicApi}}internal {{/nonPublicApi}}companion object : KSerializer<{{operationIdCamelCase}}Request> { - private val serializer: KSerializer> = {{#bodyParam}}{{baseType}}{{/bodyParam}}.serializer().list - override val descriptor = StringDescriptor.withName("{{operationIdCamelCase}}Request") - override fun serialize(encoder: Encoder, obj: {{operationIdCamelCase}}Request) = serializer.serialize(encoder, obj.value) - override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Request(serializer.deserialize(decoder)) + private val serializer: KSerializer> = serializer>() + override val descriptor = serializer.descriptor + override fun serialize(encoder: Encoder, obj: {{operationIdCamelCase}}Request) = serializer.serialize(encoder, obj.value) + override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Request(serializer.deserialize(decoder)) } } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_request_map.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_request_map.mustache index 5dc6864aae8..a287882728d 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_request_map.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_request_map.mustache @@ -2,9 +2,9 @@ private class {{operationIdCamelCase}}Request(val value: Map) { @Serializer({{operationIdCamelCase}}Request::class) {{#nonPublicApi}}internal {{/nonPublicApi}}companion object : KSerializer<{{operationIdCamelCase}}Request> { - private val serializer: KSerializer> = (kotlin.String.serializer() to {{#bodyParam}}{{baseType}}{{/bodyParam}}.serializer()).map - override val descriptor = StringDescriptor.withName("{{operationIdCamelCase}}Request") - override fun serialize(encoder: Encoder, obj: {{operationIdCamelCase}}Request) = serializer.serialize(encoder, obj.value) - override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Request(serializer.deserialize(decoder)) + private val serializer: KSerializer> = serializer>() + override val descriptor = serializer.descriptor + override fun serialize(encoder: Encoder, obj: {{operationIdCamelCase}}Request) = serializer.serialize(encoder, obj.value) + override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Request(serializer.deserialize(decoder)) } } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_response_list.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_response_list.mustache index a4e70a219ca..227d6a351f2 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_response_list.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_response_list.mustache @@ -2,9 +2,9 @@ private class {{operationIdCamelCase}}Response(val value: List<{{returnBaseType}}>) { @Serializer({{operationIdCamelCase}}Response::class) {{#nonPublicApi}}internal {{/nonPublicApi}}companion object : KSerializer<{{operationIdCamelCase}}Response> { - private val serializer: KSerializer> = {{returnBaseType}}.serializer().list - override val descriptor = StringDescriptor.withName("{{operationIdCamelCase}}Response") - override fun serialize(encoder: Encoder, obj: {{operationIdCamelCase}}Response) = serializer.serialize(encoder, obj.value) - override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Response(serializer.deserialize(decoder)) + private val serializer: KSerializer> = serializer>() + override val descriptor = serializer.descriptor + override fun serialize(encoder: Encoder, obj: {{operationIdCamelCase}}Response) = serializer.serialize(encoder, obj.value) + override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Response(serializer.deserialize(decoder)) } } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_response_map.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_response_map.mustache index 8253dc1f1a1..a6bdd6c166a 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_response_map.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/serial_wrapper_response_map.mustache @@ -2,9 +2,9 @@ private class {{operationIdCamelCase}}Response(val value: Map) { @Serializer({{operationIdCamelCase}}Response::class) {{#nonPublicApi}}internal {{/nonPublicApi}}companion object : KSerializer<{{operationIdCamelCase}}Response> { - private val serializer: KSerializer> = (kotlin.String.serializer() to {{returnBaseType}}.serializer()).map - override val descriptor = StringDescriptor.withName("{{operationIdCamelCase}}Response") - override fun serialize(encoder: Encoder, obj: {{operationIdCamelCase}}Response) = serializer.serialize(encoder, obj.value) - override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Response(serializer.deserialize(decoder)) + private val serializer: KSerializer> = serializer>() + override val descriptor = serializer.descriptor + override fun serialize(encoder: Encoder, obj: {{operationIdCamelCase}}Response) = serializer.serialize(encoder, obj.value) + override fun deserialize(decoder: Decoder) = {{operationIdCamelCase}}Response(serializer.deserialize(decoder)) } } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/settings.gradle.kts.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/settings.gradle.kts.mustache new file mode 100644 index 00000000000..bf286c5e8c2 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/settings.gradle.kts.mustache @@ -0,0 +1,2 @@ +enableFeaturePreview("GRADLE_METADATA") +rootProject.name = "{{artifactId}}" \ No newline at end of file diff --git a/samples/client/petstore/kotlin-multiplatform/.openapi-generator/FILES b/samples/client/petstore/kotlin-multiplatform/.openapi-generator/FILES index e79293ae571..d95b6af6c45 100644 --- a/samples/client/petstore/kotlin-multiplatform/.openapi-generator/FILES +++ b/samples/client/petstore/kotlin-multiplatform/.openapi-generator/FILES @@ -1,5 +1,5 @@ README.md -build.gradle +build.gradle.kts docs/ApiResponse.md docs/Category.md docs/Order.md @@ -9,7 +9,7 @@ docs/StoreApi.md docs/Tag.md docs/User.md docs/UserApi.md -settings.gradle +settings.gradle.kts src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt src/commonMain/kotlin/org/openapitools/client/apis/StoreApi.kt src/commonMain/kotlin/org/openapitools/client/apis/UserApi.kt diff --git a/samples/client/petstore/kotlin-multiplatform/README.md b/samples/client/petstore/kotlin-multiplatform/README.md index 308e8b1c99e..28a4e3f1201 100644 --- a/samples/client/petstore/kotlin-multiplatform/README.md +++ b/samples/client/petstore/kotlin-multiplatform/README.md @@ -2,7 +2,7 @@ ## Requires -* Kotlin 1.3.50 +* Kotlin 1.5.10 ## Build diff --git a/samples/client/petstore/kotlin-multiplatform/build.gradle b/samples/client/petstore/kotlin-multiplatform/build.gradle deleted file mode 100644 index 47045bb577e..00000000000 --- a/samples/client/petstore/kotlin-multiplatform/build.gradle +++ /dev/null @@ -1,161 +0,0 @@ -apply plugin: 'kotlin-multiplatform' -apply plugin: 'kotlinx-serialization' - -group 'org.openapitools' -version '1.0.0' - -ext { - kotlin_version = '1.3.50' - kotlinx_version = '1.1.0' - coroutines_version = '1.3.1' - serialization_version = '0.12.0' - ktor_version = '1.2.4' -} - -buildscript { - repositories { - jcenter() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50" // $kotlin_version - classpath "org.jetbrains.kotlin:kotlin-serialization:1.3.50" // $kotlin_version - } -} - -repositories { - jcenter() -} - -kotlin { - jvm() - iosArm64() { binaries { framework { freeCompilerArgs.add("-Xobjc-generics") } } } - iosX64() { binaries { framework { freeCompilerArgs.add("-Xobjc-generics") } } } - js() - - sourceSets { - commonMain { - dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$coroutines_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$serialization_version" - api "io.ktor:ktor-client-core:$ktor_version" - api "io.ktor:ktor-client-json:$ktor_version" - api "io.ktor:ktor-client-serialization:$ktor_version" - } - } - - commonTest { - dependencies { - implementation "org.jetbrains.kotlin:kotlin-test-common" - implementation "org.jetbrains.kotlin:kotlin-test-annotations-common" - implementation "io.ktor:ktor-client-mock:$ktor_version" - } - } - - jvmMain { - dependsOn commonMain - dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serialization_version" - api "io.ktor:ktor-client-core-jvm:$ktor_version" - api "io.ktor:ktor-client-json-jvm:$ktor_version" - api "io.ktor:ktor-client-serialization-jvm:$ktor_version" - } - } - - jvmTest { - dependsOn commonTest - dependencies { - implementation "org.jetbrains.kotlin:kotlin-test" - implementation "org.jetbrains.kotlin:kotlin-test-junit" - implementation "io.ktor:ktor-client-mock-jvm:$ktor_version" - } - } - - iosMain { - dependsOn commonMain - dependencies { - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:$coroutines_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$serialization_version" - api "io.ktor:ktor-client-ios:$ktor_version" - } - } - - iosTest { - dependsOn commonTest - dependencies { - implementation "io.ktor:ktor-client-mock-native:$ktor_version" - } - } - - iosArm64().compilations.main.defaultSourceSet { - dependsOn iosMain - dependencies { - api "io.ktor:ktor-client-ios-iosarm64:$ktor_version" - api "io.ktor:ktor-client-json-iosarm64:$ktor_version" - api "io.ktor:ktor-client-serialization-iosarm64:$ktor_version" - } - } - - iosArm64().compilations.test.defaultSourceSet { - dependsOn iosTest - } - - iosX64().compilations.main.defaultSourceSet { - dependsOn iosMain - dependencies { - api "io.ktor:ktor-client-ios-iosx64:$ktor_version" - api "io.ktor:ktor-client-json-iosx64:$ktor_version" - api "io.ktor:ktor-client-serialization-iosx64:$ktor_version" - } - } - - jsMain { - dependsOn commonMain - dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-js:$coroutines_version" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$serialization_version" - api "io.ktor:ktor-client-js:$ktor_version" - api "io.ktor:ktor-client-json-js:$ktor_version" - api "io.ktor:ktor-client-serialization-js:$ktor_version" - } - } - - jsTest { - dependsOn commonTest - dependencies { - implementation "io.ktor:ktor-client-mock-js:$ktor_version" - implementation "io.ktor:ktor-client-js:$ktor_version" - implementation "io.ktor:ktor-client-json:$ktor_version" - implementation "io.ktor:ktor-client-serialization-js:$ktor_version" - } - } - - iosX64().compilations.test.defaultSourceSet { - dependsOn iosTest - } - - all { - languageSettings { - useExperimentalAnnotation('kotlin.Experimental') - } - } - } -} - -task iosTest { - def device = project.findProperty("device")?.toString() ?: "iPhone 8" - dependsOn 'linkDebugTestIosX64' - group = JavaBasePlugin.VERIFICATION_GROUP - description = "Execute unit tests on ${device} simulator" - doLast { - def binary = kotlin.targets.iosX64.binaries.getTest('DEBUG') - exec { commandLine 'xcrun', 'simctl', 'spawn', device, binary.outputFile } - } -} - -configurations { // workaround for https://youtrack.jetbrains.com/issue/KT-27170 - compileClasspath -} diff --git a/samples/client/petstore/kotlin-multiplatform/build.gradle.kts b/samples/client/petstore/kotlin-multiplatform/build.gradle.kts new file mode 100644 index 00000000000..1b7fdd939c3 --- /dev/null +++ b/samples/client/petstore/kotlin-multiplatform/build.gradle.kts @@ -0,0 +1,95 @@ +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget + +plugins { + kotlin("multiplatform") version "1.5.10" // kotlin_version + kotlin("plugin.serialization") version "1.5.10" // kotlin_version +} + +group = "org.openapitools" +version = "1.0.0" + +val kotlin_version = "1.5.10" +val coroutines_version = "1.5.0" +val serialization_version = "1.2.1" +val ktor_version = "1.6.0" + +repositories { + mavenCentral() +} + +kotlin { + jvm() + ios { binaries { framework { freeCompilerArgs += "-Xobjc-generics" } } } + js { + browser() + nodejs() + } + + sourceSets { + val commonMain by getting { + dependencies { + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$serialization_version") + api("io.ktor:ktor-client-core:$ktor_version") + api("io.ktor:ktor-client-json:$ktor_version") + api("io.ktor:ktor-client-serialization:$ktor_version") + } + } + + val commonTest by getting { + dependencies { + implementation(kotlin("test")) + implementation("io.ktor:ktor-client-mock:$ktor_version") + } + } + + val jvmMain by getting { + dependencies { + implementation(kotlin("stdlib-jdk7")) + } + } + + val jvmTest by getting { + dependencies { + implementation(kotlin("test-junit")) + } + } + + val iosMain by getting { + dependencies { + api("io.ktor:ktor-client-ios:$ktor_version") + } + } + + val iosTest by getting + + val jsMain by getting { + dependencies { + api("io.ktor:ktor-client-js:$ktor_version") + } + } + + val jsTest by getting + + all { + languageSettings.apply { + useExperimentalAnnotation("kotlin.Experimental") + } + } + } +} + +tasks { + register("iosTest") { + val device = project.findProperty("device")?.toString() ?: "iPhone 8" + dependsOn("linkDebugTestIosX64") + group = JavaBasePlugin.VERIFICATION_GROUP + description = "Execute unit tests on ${device} simulator" + doLast { + val binary = kotlin.targets.getByName("iosX64").binaries.getTest("DEBUG") + exec { + commandLine("xcrun", "simctl", "spawn", device, binary.outputFile) + } + } + } +} diff --git a/samples/client/petstore/kotlin-multiplatform/settings.gradle b/samples/client/petstore/kotlin-multiplatform/settings.gradle deleted file mode 100644 index b000833f485..00000000000 --- a/samples/client/petstore/kotlin-multiplatform/settings.gradle +++ /dev/null @@ -1,2 +0,0 @@ -enableFeaturePreview('GRADLE_METADATA') -rootProject.name = 'kotlin-client-petstore-multiplatform' \ No newline at end of file diff --git a/samples/client/petstore/kotlin-multiplatform/settings.gradle.kts b/samples/client/petstore/kotlin-multiplatform/settings.gradle.kts new file mode 100644 index 00000000000..15cae2a9fd0 --- /dev/null +++ b/samples/client/petstore/kotlin-multiplatform/settings.gradle.kts @@ -0,0 +1,2 @@ +enableFeaturePreview("GRADLE_METADATA") +rootProject.name = "kotlin-client-petstore-multiplatform" \ No newline at end of file diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt index e164a6cf4d0..5df1dfc40ee 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt @@ -16,27 +16,19 @@ import org.openapitools.client.models.Pet import org.openapitools.client.infrastructure.* import io.ktor.client.request.forms.formData -import kotlinx.serialization.UnstableDefault import io.ktor.client.engine.HttpClientEngine import io.ktor.client.features.json.serializer.KotlinxSerializer import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonConfiguration import io.ktor.http.ParametersBuilder import kotlinx.serialization.* -import kotlinx.serialization.internal.StringDescriptor +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* -class PetApi @UseExperimental(UnstableDefault::class) constructor( - baseUrl: kotlin.String = "http://petstore.swagger.io/v2", +class PetApi( + baseUrl: String = ApiClient.BASE_URL, httpClientEngine: HttpClientEngine? = null, - serializer: KotlinxSerializer -) : ApiClient(baseUrl, httpClientEngine, serializer) { - - @UseExperimental(UnstableDefault::class) - constructor( - baseUrl: kotlin.String = "http://petstore.swagger.io/v2", - httpClientEngine: HttpClientEngine? = null, - jsonConfiguration: JsonConfiguration = JsonConfiguration.Default - ) : this(baseUrl, httpClientEngine, KotlinxSerializer(Json(jsonConfiguration))) + jsonSerializer: Json = ApiClient.JSON_DEFAULT +) : ApiClient(baseUrl, httpClientEngine, jsonSerializer) { /** * Add a new pet to the store @@ -54,7 +46,7 @@ class PetApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.POST, "/pet", query = localVariableQuery, @@ -89,7 +81,7 @@ class PetApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() apiKey?.apply { localVariableHeaders["api_key"] = this.toString() } - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.DELETE, "/pet/{petId}".replace("{" + "petId" + "}", "$petId"), query = localVariableQuery, @@ -123,7 +115,7 @@ class PetApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.GET, "/pet/findByStatus", query = localVariableQuery, @@ -141,10 +133,10 @@ class PetApi @UseExperimental(UnstableDefault::class) constructor( private class FindPetsByStatusResponse(val value: List) { @Serializer(FindPetsByStatusResponse::class) companion object : KSerializer { - private val serializer: KSerializer> = Pet.serializer().list - override val descriptor = StringDescriptor.withName("FindPetsByStatusResponse") - override fun serialize(encoder: Encoder, obj: FindPetsByStatusResponse) = serializer.serialize(encoder, obj.value) - override fun deserialize(decoder: Decoder) = FindPetsByStatusResponse(serializer.deserialize(decoder)) + private val serializer: KSerializer> = serializer>() + override val descriptor = serializer.descriptor + override fun serialize(encoder: Encoder, obj: FindPetsByStatusResponse) = serializer.serialize(encoder, obj.value) + override fun deserialize(decoder: Decoder) = FindPetsByStatusResponse(serializer.deserialize(decoder)) } } @@ -167,7 +159,7 @@ class PetApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.GET, "/pet/findByTags", query = localVariableQuery, @@ -185,10 +177,10 @@ class PetApi @UseExperimental(UnstableDefault::class) constructor( private class FindPetsByTagsResponse(val value: List) { @Serializer(FindPetsByTagsResponse::class) companion object : KSerializer { - private val serializer: KSerializer> = Pet.serializer().list - override val descriptor = StringDescriptor.withName("FindPetsByTagsResponse") - override fun serialize(encoder: Encoder, obj: FindPetsByTagsResponse) = serializer.serialize(encoder, obj.value) - override fun deserialize(decoder: Decoder) = FindPetsByTagsResponse(serializer.deserialize(decoder)) + private val serializer: KSerializer> = serializer>() + override val descriptor = serializer.descriptor + override fun serialize(encoder: Encoder, obj: FindPetsByTagsResponse) = serializer.serialize(encoder, obj.value) + override fun deserialize(decoder: Decoder) = FindPetsByTagsResponse(serializer.deserialize(decoder)) } } @@ -210,7 +202,7 @@ class PetApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.GET, "/pet/{petId}".replace("{" + "petId" + "}", "$petId"), query = localVariableQuery, @@ -241,7 +233,7 @@ class PetApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.PUT, "/pet", query = localVariableQuery, @@ -279,7 +271,7 @@ class PetApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.POST, "/pet/{petId}".replace("{" + "petId" + "}", "$petId"), query = localVariableQuery, @@ -317,7 +309,7 @@ class PetApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.POST, "/pet/{petId}/uploadImage".replace("{" + "petId" + "}", "$petId"), query = localVariableQuery, @@ -332,13 +324,4 @@ class PetApi @UseExperimental(UnstableDefault::class) constructor( } - - companion object { - internal fun setMappers(serializer: KotlinxSerializer) { - - serializer.setMapper(FindPetsByStatusResponse::class, FindPetsByStatusResponse.serializer()) - serializer.setMapper(FindPetsByTagsResponse::class, FindPetsByTagsResponse.serializer()) - - } - } } diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/StoreApi.kt index 8ca30e8ca3a..345ef648864 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/StoreApi.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/StoreApi.kt @@ -15,27 +15,19 @@ import org.openapitools.client.models.Order import org.openapitools.client.infrastructure.* import io.ktor.client.request.forms.formData -import kotlinx.serialization.UnstableDefault import io.ktor.client.engine.HttpClientEngine import io.ktor.client.features.json.serializer.KotlinxSerializer import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonConfiguration import io.ktor.http.ParametersBuilder import kotlinx.serialization.* -import kotlinx.serialization.internal.StringDescriptor +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* -class StoreApi @UseExperimental(UnstableDefault::class) constructor( - baseUrl: kotlin.String = "http://petstore.swagger.io/v2", +class StoreApi( + baseUrl: String = ApiClient.BASE_URL, httpClientEngine: HttpClientEngine? = null, - serializer: KotlinxSerializer -) : ApiClient(baseUrl, httpClientEngine, serializer) { - - @UseExperimental(UnstableDefault::class) - constructor( - baseUrl: kotlin.String = "http://petstore.swagger.io/v2", - httpClientEngine: HttpClientEngine? = null, - jsonConfiguration: JsonConfiguration = JsonConfiguration.Default - ) : this(baseUrl, httpClientEngine, KotlinxSerializer(Json(jsonConfiguration))) + jsonSerializer: Json = ApiClient.JSON_DEFAULT +) : ApiClient(baseUrl, httpClientEngine, jsonSerializer) { /** * Delete purchase order by ID @@ -54,7 +46,7 @@ class StoreApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.DELETE, "/store/order/{orderId}".replace("{" + "orderId" + "}", "$orderId"), query = localVariableQuery, @@ -86,7 +78,7 @@ class StoreApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.GET, "/store/inventory", query = localVariableQuery, @@ -104,10 +96,10 @@ class StoreApi @UseExperimental(UnstableDefault::class) constructor( private class GetInventoryResponse(val value: Map) { @Serializer(GetInventoryResponse::class) companion object : KSerializer { - private val serializer: KSerializer> = (kotlin.String.serializer() to kotlin.Int.serializer()).map - override val descriptor = StringDescriptor.withName("GetInventoryResponse") - override fun serialize(encoder: Encoder, obj: GetInventoryResponse) = serializer.serialize(encoder, obj.value) - override fun deserialize(decoder: Decoder) = GetInventoryResponse(serializer.deserialize(decoder)) + private val serializer: KSerializer> = serializer>() + override val descriptor = serializer.descriptor + override fun serialize(encoder: Encoder, obj: GetInventoryResponse) = serializer.serialize(encoder, obj.value) + override fun deserialize(decoder: Decoder) = GetInventoryResponse(serializer.deserialize(decoder)) } } @@ -129,7 +121,7 @@ class StoreApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.GET, "/store/order/{orderId}".replace("{" + "orderId" + "}", "$orderId"), query = localVariableQuery, @@ -161,7 +153,7 @@ class StoreApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.POST, "/store/order", query = localVariableQuery, @@ -177,11 +169,4 @@ class StoreApi @UseExperimental(UnstableDefault::class) constructor( - - companion object { - internal fun setMappers(serializer: KotlinxSerializer) { - serializer.setMapper(GetInventoryResponse::class, GetInventoryResponse.serializer()) - - } - } } diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/UserApi.kt index 88474dc9ef8..6e1f7d50f25 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/UserApi.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/UserApi.kt @@ -15,27 +15,19 @@ import org.openapitools.client.models.User import org.openapitools.client.infrastructure.* import io.ktor.client.request.forms.formData -import kotlinx.serialization.UnstableDefault import io.ktor.client.engine.HttpClientEngine import io.ktor.client.features.json.serializer.KotlinxSerializer import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonConfiguration import io.ktor.http.ParametersBuilder import kotlinx.serialization.* -import kotlinx.serialization.internal.StringDescriptor +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* -class UserApi @UseExperimental(UnstableDefault::class) constructor( - baseUrl: kotlin.String = "http://petstore.swagger.io/v2", +class UserApi( + baseUrl: String = ApiClient.BASE_URL, httpClientEngine: HttpClientEngine? = null, - serializer: KotlinxSerializer -) : ApiClient(baseUrl, httpClientEngine, serializer) { - - @UseExperimental(UnstableDefault::class) - constructor( - baseUrl: kotlin.String = "http://petstore.swagger.io/v2", - httpClientEngine: HttpClientEngine? = null, - jsonConfiguration: JsonConfiguration = JsonConfiguration.Default - ) : this(baseUrl, httpClientEngine, KotlinxSerializer(Json(jsonConfiguration))) + jsonSerializer: Json = ApiClient.JSON_DEFAULT +) : ApiClient(baseUrl, httpClientEngine, jsonSerializer) { /** * Create user @@ -53,7 +45,7 @@ class UserApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.POST, "/user", query = localVariableQuery, @@ -85,7 +77,7 @@ class UserApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.POST, "/user/createWithArray", query = localVariableQuery, @@ -103,10 +95,10 @@ class UserApi @UseExperimental(UnstableDefault::class) constructor( private class CreateUsersWithArrayInputRequest(val value: List) { @Serializer(CreateUsersWithArrayInputRequest::class) companion object : KSerializer { - private val serializer: KSerializer> = User.serializer().list - override val descriptor = StringDescriptor.withName("CreateUsersWithArrayInputRequest") - override fun serialize(encoder: Encoder, obj: CreateUsersWithArrayInputRequest) = serializer.serialize(encoder, obj.value) - override fun deserialize(decoder: Decoder) = CreateUsersWithArrayInputRequest(serializer.deserialize(decoder)) + private val serializer: KSerializer> = serializer>() + override val descriptor = serializer.descriptor + override fun serialize(encoder: Encoder, obj: CreateUsersWithArrayInputRequest) = serializer.serialize(encoder, obj.value) + override fun deserialize(decoder: Decoder) = CreateUsersWithArrayInputRequest(serializer.deserialize(decoder)) } } @@ -126,7 +118,7 @@ class UserApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.POST, "/user/createWithList", query = localVariableQuery, @@ -144,10 +136,10 @@ class UserApi @UseExperimental(UnstableDefault::class) constructor( private class CreateUsersWithListInputRequest(val value: List) { @Serializer(CreateUsersWithListInputRequest::class) companion object : KSerializer { - private val serializer: KSerializer> = User.serializer().list - override val descriptor = StringDescriptor.withName("CreateUsersWithListInputRequest") - override fun serialize(encoder: Encoder, obj: CreateUsersWithListInputRequest) = serializer.serialize(encoder, obj.value) - override fun deserialize(decoder: Decoder) = CreateUsersWithListInputRequest(serializer.deserialize(decoder)) + private val serializer: KSerializer> = serializer>() + override val descriptor = serializer.descriptor + override fun serialize(encoder: Encoder, obj: CreateUsersWithListInputRequest) = serializer.serialize(encoder, obj.value) + override fun deserialize(decoder: Decoder) = CreateUsersWithListInputRequest(serializer.deserialize(decoder)) } } @@ -168,7 +160,7 @@ class UserApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.DELETE, "/user/{username}".replace("{" + "username" + "}", "$username"), query = localVariableQuery, @@ -201,7 +193,7 @@ class UserApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.GET, "/user/{username}".replace("{" + "username" + "}", "$username"), query = localVariableQuery, @@ -237,7 +229,7 @@ class UserApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.GET, "/user/login", query = localVariableQuery, @@ -268,7 +260,7 @@ class UserApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.GET, "/user/logout", query = localVariableQuery, @@ -300,7 +292,7 @@ class UserApi @UseExperimental(UnstableDefault::class) constructor( val localVariableHeaders = mutableMapOf() - val localVariableConfig = RequestConfig( + val localVariableConfig = RequestConfig( RequestMethod.PUT, "/user/{username}".replace("{" + "username" + "}", "$username"), query = localVariableQuery, @@ -316,13 +308,4 @@ class UserApi @UseExperimental(UnstableDefault::class) constructor( - - companion object { - internal fun setMappers(serializer: KotlinxSerializer) { - - serializer.setMapper(CreateUsersWithArrayInputRequest::class, CreateUsersWithArrayInputRequest.serializer()) - serializer.setMapper(CreateUsersWithListInputRequest::class, CreateUsersWithListInputRequest.serializer()) - - } - } } diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 42d2a68d5b4..9f25b105953 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -2,24 +2,21 @@ package org.openapitools.client.infrastructure import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig -import io.ktor.client.call.call import io.ktor.client.engine.HttpClientEngine import io.ktor.client.features.json.JsonFeature import io.ktor.client.features.json.JsonSerializer import io.ktor.client.features.json.serializer.KotlinxSerializer -import io.ktor.client.request.accept +import io.ktor.client.request.* import io.ktor.client.request.forms.FormDataContent import io.ktor.client.request.forms.MultiPartFormDataContent import io.ktor.client.request.header import io.ktor.client.request.parameter -import io.ktor.client.response.HttpResponse +import io.ktor.client.statement.HttpResponse import io.ktor.client.utils.EmptyContent import io.ktor.http.* import io.ktor.http.content.OutgoingContent import io.ktor.http.content.PartData -import kotlinx.serialization.UnstableDefault import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonConfiguration import org.openapitools.client.apis.* import org.openapitools.client.models.* @@ -28,17 +25,11 @@ import org.openapitools.client.auth.* open class ApiClient( private val baseUrl: String, httpClientEngine: HttpClientEngine?, - serializer: KotlinxSerializer) { - - @UseExperimental(UnstableDefault::class) - constructor( - baseUrl: String, - httpClientEngine: HttpClientEngine?, - jsonConfiguration: JsonConfiguration) : - this(baseUrl, httpClientEngine, KotlinxSerializer(Json(jsonConfiguration))) + private val json: Json +) { private val serializer: JsonSerializer by lazy { - serializer.apply { setMappers(this) }.ignoreOutgoingContent() + KotlinxSerializer(json).ignoreOutgoingContent() } private val client: HttpClient by lazy { @@ -53,23 +44,9 @@ open class ApiClient( } companion object { + const val BASE_URL = "http://petstore.swagger.io/v2" + val JSON_DEFAULT = Json { ignoreUnknownKeys = true } protected val UNSAFE_HEADERS = listOf(HttpHeaders.ContentType) - - private fun setMappers(serializer: KotlinxSerializer) { - - PetApi.setMappers(serializer) - - StoreApi.setMappers(serializer) - - UserApi.setMappers(serializer) - - serializer.setMapper(org.openapitools.client.models.ApiResponse::class, org.openapitools.client.models.ApiResponse.serializer()) - serializer.setMapper(org.openapitools.client.models.Category::class, org.openapitools.client.models.Category.serializer()) - serializer.setMapper(org.openapitools.client.models.Order::class, org.openapitools.client.models.Order.serializer()) - serializer.setMapper(org.openapitools.client.models.Pet::class, org.openapitools.client.models.Pet.serializer()) - serializer.setMapper(org.openapitools.client.models.Tag::class, org.openapitools.client.models.Tag.serializer()) - serializer.setMapper(org.openapitools.client.models.User::class, org.openapitools.client.models.User.serializer()) - } } /** @@ -140,26 +117,26 @@ open class ApiClient( auth.bearerToken = bearerToken } - protected suspend fun multipartFormRequest(requestConfig: RequestConfig, body: kotlin.collections.List?, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun multipartFormRequest(requestConfig: RequestConfig, body: kotlin.collections.List?, authNames: kotlin.collections.List): HttpResponse { return request(requestConfig, MultiPartFormDataContent(body ?: listOf()), authNames) } - protected suspend fun urlEncodedFormRequest(requestConfig: RequestConfig, body: Parameters?, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun urlEncodedFormRequest(requestConfig: RequestConfig, body: Parameters?, authNames: kotlin.collections.List): HttpResponse { return request(requestConfig, FormDataContent(body ?: Parameters.Empty), authNames) } - protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { + protected suspend fun jsonRequest(requestConfig: RequestConfig, body: Any? = null, authNames: kotlin.collections.List): HttpResponse { val contentType = (requestConfig.headers[HttpHeaders.ContentType]?.let { ContentType.parse(it) } ?: ContentType.Application.Json) return if (body != null) request(requestConfig, serializer.write(body, contentType), authNames) else request(requestConfig, authNames = authNames) } - protected suspend inline fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { - requestConfig.updateForAuth(authNames) + protected suspend fun request(requestConfig: RequestConfig, body: OutgoingContent = EmptyContent, authNames: kotlin.collections.List): HttpResponse { + requestConfig.updateForAuth(authNames) val headers = requestConfig.headers - return client.call { + return client.request { this.url { this.takeFrom(URLBuilder(baseUrl)) appendPath(requestConfig.path.trimStart('/').split('/')) @@ -174,10 +151,10 @@ open class ApiClient( if (requestConfig.method in listOf(RequestMethod.PUT, RequestMethod.POST, RequestMethod.PATCH)) this.body = body - }.response + } } - private fun RequestConfig.updateForAuth(authNames: kotlin.collections.List) { + private fun RequestConfig.updateForAuth(authNames: kotlin.collections.List) { for (authName in authNames) { val auth = authentications?.get(authName) ?: throw Exception("Authentication undefined: $authName") auth.apply(query, headers) diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt index 4bc1197cf00..7c635c14fdd 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Base64ByteArray.kt @@ -1,13 +1,14 @@ package org.openapitools.client.infrastructure import kotlinx.serialization.* -import kotlinx.serialization.internal.StringDescriptor +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* @Serializable class Base64ByteArray(val value: ByteArray) { @Serializer(Base64ByteArray::class) companion object : KSerializer { - override val descriptor = StringDescriptor.withName("Base64ByteArray") + override val descriptor = PrimitiveSerialDescriptor("Base64ByteArray", PrimitiveKind.STRING) override fun serialize(encoder: Encoder, obj: Base64ByteArray) = encoder.encodeString(obj.value.encodeBase64()) override fun deserialize(decoder: Decoder) = Base64ByteArray(decoder.decodeString().decodeBase64Bytes()) } diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Bytes.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Bytes.kt index 8a222416cf2..b8f12a08529 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Bytes.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/Bytes.kt @@ -1,6 +1,6 @@ package org.openapitools.client.infrastructure -import kotlinx.io.core.* +import io.ktor.utils.io.core.* import kotlin.experimental.and private val digits = "0123456789abcdef".toCharArray() @@ -32,7 +32,7 @@ internal fun hex(bytes: ByteArray): String { result[resultIndex++] = digits[b and 0x0f] } - return String(result) + return result.concatToString() } /** diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt index c457eb4bce0..61e55bc5b15 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/HttpResponse.kt @@ -5,7 +5,7 @@ import io.ktor.client.call.typeInfo import io.ktor.http.Headers import io.ktor.http.isSuccess -open class HttpResponse(val response: io.ktor.client.response.HttpResponse, val provider: BodyProvider) { +open class HttpResponse(val response: io.ktor.client.statement.HttpResponse, val provider: BodyProvider) { val status: Int = response.status.value val success: Boolean = response.status.isSuccess() val headers: Map> = response.headers.mapEntries() @@ -22,29 +22,29 @@ open class HttpResponse(val response: io.ktor.client.response.HttpRespo } interface BodyProvider { - suspend fun body(response: io.ktor.client.response.HttpResponse): T - suspend fun typedBody(response: io.ktor.client.response.HttpResponse, type: TypeInfo): V + suspend fun body(response: io.ktor.client.statement.HttpResponse): T + suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V } class TypedBodyProvider(private val type: TypeInfo) : BodyProvider { @Suppress("UNCHECKED_CAST") - override suspend fun body(response: io.ktor.client.response.HttpResponse): T = + override suspend fun body(response: io.ktor.client.statement.HttpResponse): T = response.call.receive(type) as T @Suppress("UNCHECKED_CAST") - override suspend fun typedBody(response: io.ktor.client.response.HttpResponse, type: TypeInfo): V = + override suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V = response.call.receive(type) as V } class MappedBodyProvider(private val provider: BodyProvider, private val block: S.() -> T) : BodyProvider { - override suspend fun body(response: io.ktor.client.response.HttpResponse): T = + override suspend fun body(response: io.ktor.client.statement.HttpResponse): T = block(provider.body(response)) - override suspend fun typedBody(response: io.ktor.client.response.HttpResponse, type: TypeInfo): V = + override suspend fun typedBody(response: io.ktor.client.statement.HttpResponse, type: TypeInfo): V = provider.typedBody(response, type) } -inline fun io.ktor.client.response.HttpResponse.wrap(): HttpResponse = +inline fun io.ktor.client.statement.HttpResponse.wrap(): HttpResponse = HttpResponse(this, TypedBodyProvider(typeInfo())) fun HttpResponse.map(block: T.() -> V): HttpResponse = diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt index 735e4e6e3f6..04c88673331 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/infrastructure/OctetByteArray.kt @@ -1,13 +1,14 @@ package org.openapitools.client.infrastructure import kotlinx.serialization.* -import kotlinx.serialization.internal.StringDescriptor +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* @Serializable class OctetByteArray(val value: ByteArray) { @Serializer(OctetByteArray::class) companion object : KSerializer { - override val descriptor = StringDescriptor.withName("OctetByteArray") + override val descriptor = PrimitiveSerialDescriptor("OctetByteArray", PrimitiveKind.STRING) override fun serialize(encoder: Encoder, obj: OctetByteArray) = encoder.encodeString(hex(obj.value)) override fun deserialize(decoder: Decoder) = OctetByteArray(hex(decoder.decodeString())) } diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt index a035628a8f9..91150fbf26b 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt @@ -13,7 +13,8 @@ package org.openapitools.client.models import kotlinx.serialization.* -import kotlinx.serialization.internal.CommonEnumSerializer +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* /** * Describes the result of uploading an image resource diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt index d5f9a45fd4d..8c17893935b 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt @@ -13,7 +13,8 @@ package org.openapitools.client.models import kotlinx.serialization.* -import kotlinx.serialization.internal.CommonEnumSerializer +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* /** * A category for a pet diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt index 0a53ba0740e..f5ae575d19e 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt @@ -13,7 +13,8 @@ package org.openapitools.client.models import kotlinx.serialization.* -import kotlinx.serialization.internal.CommonEnumSerializer +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* /** * An order for a pets from the pet store @@ -39,10 +40,11 @@ data class Order ( * Order Status * Values: placed,approved,delivered */ + @Serializable enum class Status(val value: kotlin.String) { - placed("placed"), - approved("approved"), - delivered("delivered"); + @SerialName(value = "placed") placed("placed"), + @SerialName(value = "approved") approved("approved"), + @SerialName(value = "delivered") delivered("delivered"); } } diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt index 1649cf0fb29..55879c6c7ac 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt @@ -15,7 +15,8 @@ import org.openapitools.client.models.Category import org.openapitools.client.models.Tag import kotlinx.serialization.* -import kotlinx.serialization.internal.CommonEnumSerializer +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* /** * A pet for sale in the pet store @@ -41,10 +42,11 @@ data class Pet ( * pet status in the store * Values: available,pending,sold */ + @Serializable enum class Status(val value: kotlin.String) { - available("available"), - pending("pending"), - sold("sold"); + @SerialName(value = "available") available("available"), + @SerialName(value = "pending") pending("pending"), + @SerialName(value = "sold") sold("sold"); } } diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt index 6116e50d3f9..54a4e01d29a 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt @@ -13,7 +13,8 @@ package org.openapitools.client.models import kotlinx.serialization.* -import kotlinx.serialization.internal.CommonEnumSerializer +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* /** * A tag for a pet diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt index 97b53a049c1..4c69c432e2e 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt @@ -13,7 +13,8 @@ package org.openapitools.client.models import kotlinx.serialization.* -import kotlinx.serialization.internal.CommonEnumSerializer +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* /** * A User who is purchasing from the pet store diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt index 9e1d0b06d7b..0bc84e75f73 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt +++ b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/models/PetEnum.kt @@ -19,6 +19,7 @@ import com.squareup.moshi.Json * Values: MY_FIRST_VALUE,MY_SECOND_VALUE */ + enum class PetEnum(val value: kotlin.String) { From 510e64fa43a9a54a2f00aa4a69e933c4bd7eb6f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastien=20G=C3=A9rard?= Date: Sun, 4 Jul 2021 06:29:55 +0200 Subject: [PATCH 174/192] Fix minor typo in @cached_property docstring (#9886) --- .../src/main/resources/python/model_utils.mustache | 2 +- samples/client/petstore/python/petstore_api/model_utils.py | 2 +- .../petstore_api/model_utils.py | 2 +- .../x-auth-id-alias/python/x_auth_id_alias/model_utils.py | 2 +- .../dynamic-servers/python/dynamic_servers/model_utils.py | 2 +- .../openapi3/client/petstore/python/petstore_api/model_utils.py | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python/model_utils.mustache b/modules/openapi-generator/src/main/resources/python/model_utils.mustache index c7944e4fdcf..4615a34ec33 100644 --- a/modules/openapi-generator/src/main/resources/python/model_utils.mustache +++ b/modules/openapi-generator/src/main/resources/python/model_utils.mustache @@ -39,7 +39,7 @@ def convert_js_args_to_python_args(fn): class cached_property(object): # this caches the result of the function call for fn with no inputs - # use this as a decorator on fuction methods that you want converted + # use this as a decorator on function methods that you want converted # into cached properties result_key = '_results' diff --git a/samples/client/petstore/python/petstore_api/model_utils.py b/samples/client/petstore/python/petstore_api/model_utils.py index 97f9b2881cc..aa747a3f9a8 100644 --- a/samples/client/petstore/python/petstore_api/model_utils.py +++ b/samples/client/petstore/python/petstore_api/model_utils.py @@ -47,7 +47,7 @@ def convert_js_args_to_python_args(fn): class cached_property(object): # this caches the result of the function call for fn with no inputs - # use this as a decorator on fuction methods that you want converted + # use this as a decorator on function methods that you want converted # into cached properties result_key = '_results' diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/model_utils.py b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/model_utils.py index 97f9b2881cc..aa747a3f9a8 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/model_utils.py +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/model_utils.py @@ -47,7 +47,7 @@ def convert_js_args_to_python_args(fn): class cached_property(object): # this caches the result of the function call for fn with no inputs - # use this as a decorator on fuction methods that you want converted + # use this as a decorator on function methods that you want converted # into cached properties result_key = '_results' diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/model_utils.py b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/model_utils.py index bd30ebabb27..13277887d39 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/model_utils.py +++ b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/model_utils.py @@ -47,7 +47,7 @@ def convert_js_args_to_python_args(fn): class cached_property(object): # this caches the result of the function call for fn with no inputs - # use this as a decorator on fuction methods that you want converted + # use this as a decorator on function methods that you want converted # into cached properties result_key = '_results' diff --git a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/model_utils.py b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/model_utils.py index c73de248681..fa10b2d24f9 100644 --- a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/model_utils.py +++ b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/model_utils.py @@ -47,7 +47,7 @@ def convert_js_args_to_python_args(fn): class cached_property(object): # this caches the result of the function call for fn with no inputs - # use this as a decorator on fuction methods that you want converted + # use this as a decorator on function methods that you want converted # into cached properties result_key = '_results' diff --git a/samples/openapi3/client/petstore/python/petstore_api/model_utils.py b/samples/openapi3/client/petstore/python/petstore_api/model_utils.py index 97f9b2881cc..aa747a3f9a8 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/model_utils.py +++ b/samples/openapi3/client/petstore/python/petstore_api/model_utils.py @@ -47,7 +47,7 @@ def convert_js_args_to_python_args(fn): class cached_property(object): # this caches the result of the function call for fn with no inputs - # use this as a decorator on fuction methods that you want converted + # use this as a decorator on function methods that you want converted # into cached properties result_key = '_results' From e345eef32cb38af009966f923e691715213668a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 Jul 2021 12:43:08 +0800 Subject: [PATCH 175/192] Bump actions/upload-artifact from 2.2.3 to 2.2.4 (#9794) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2.2.3 to 2.2.4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v2.2.3...v2.2.4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/check-supported-versions.yaml | 2 +- .github/workflows/openapi-generator.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check-supported-versions.yaml b/.github/workflows/check-supported-versions.yaml index 65d3688ca07..2a4fc4f1a1f 100644 --- a/.github/workflows/check-supported-versions.yaml +++ b/.github/workflows/check-supported-versions.yaml @@ -50,7 +50,7 @@ jobs: run: mvn -nsu -B --quiet -Djacoco.skip=true -Dorg.slf4j.simpleLogger.defaultLogLevel=error --no-transfer-progress clean install --file pom.xml ${{ matrix.flags }} - name: Upload Maven build artifact - uses: actions/upload-artifact@v2.2.3 + uses: actions/upload-artifact@v2.2.4 if: matrix.java == '8' && matrix.os == 'ubuntu-latest' with: name: artifact diff --git a/.github/workflows/openapi-generator.yaml b/.github/workflows/openapi-generator.yaml index 16b3d68c274..3471484fb34 100644 --- a/.github/workflows/openapi-generator.yaml +++ b/.github/workflows/openapi-generator.yaml @@ -38,7 +38,7 @@ jobs: run: mvn --no-snapshot-updates --batch-mode --quiet install -DskipTests -Dorg.slf4j.simpleLogger.defaultLogLevel=error - run: ls -la modules/openapi-generator-cli/target - name: Upload openapi-generator-cli.jar artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v2.2.4 with: name: openapi-generator-cli.jar path: modules/openapi-generator-cli/target/openapi-generator-cli.jar @@ -73,7 +73,7 @@ jobs: run: mvn --no-snapshot-updates --batch-mode --quiet --fail-at-end test -Dorg.slf4j.simpleLogger.defaultLogLevel=error - name: Publish unit test reports if: ${{ always() }} - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v2.2.4 with: name: surefire-test-results path: '**/surefire-reports/TEST-*.xml' From 6c6525aa313352a0f8b7c791b157414747687af3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 Jul 2021 12:43:34 +0800 Subject: [PATCH 176/192] Bump actions/download-artifact from 2.0.9 to 2.0.10 (#9793) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2.0.9 to 2.0.10. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v2.0.9...v2.0.10) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/check-supported-versions.yaml | 2 +- .github/workflows/openapi-generator.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check-supported-versions.yaml b/.github/workflows/check-supported-versions.yaml index 2a4fc4f1a1f..f8c7034de03 100644 --- a/.github/workflows/check-supported-versions.yaml +++ b/.github/workflows/check-supported-versions.yaml @@ -81,7 +81,7 @@ jobs: - name: Check out code uses: actions/checkout@v2 - name: Download build artifact - uses: actions/download-artifact@v2.0.9 + uses: actions/download-artifact@v2.0.10 with: name: artifact - name: Run Ensures Script diff --git a/.github/workflows/openapi-generator.yaml b/.github/workflows/openapi-generator.yaml index 3471484fb34..aa1a94e21e9 100644 --- a/.github/workflows/openapi-generator.yaml +++ b/.github/workflows/openapi-generator.yaml @@ -90,7 +90,7 @@ jobs: with: java-version: 8 - name: Download openapi-generator-cli.jar artifact - uses: actions/download-artifact@v2.0.9 + uses: actions/download-artifact@v2.0.10 with: name: openapi-generator-cli.jar path: modules/openapi-generator-cli/target @@ -128,7 +128,7 @@ jobs: with: java-version: 8 - name: Download openapi-generator-cli.jar artifact - uses: actions/download-artifact@v2.0.9 + uses: actions/download-artifact@v2.0.10 with: name: openapi-generator-cli.jar path: modules/openapi-generator-cli/target From b134e8e135e0699a9b07e81c240765479b65d1cc Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sun, 4 Jul 2021 13:53:25 +0800 Subject: [PATCH 177/192] Fix GitHub action (#9887) * fix missing jar * add comment --- .github/workflows/check-supported-versions.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check-supported-versions.yaml b/.github/workflows/check-supported-versions.yaml index f8c7034de03..3702fd30fb4 100644 --- a/.github/workflows/check-supported-versions.yaml +++ b/.github/workflows/check-supported-versions.yaml @@ -90,6 +90,6 @@ jobs: git config --global core.fileMode false git config --global core.safecrlf false git config --global core.autocrlf true - mkdir -p modules/openapi-generator-cli/target/ - mv artifact/openapi-generator-cli.jar modules/openapi-generator-cli/target/ - ./bin/utils/ensure-up-to-date ${{ matrix.flags }} + mvn clean package -Dmaven.test.skip=true -Dmaven.javadoc.skip=true + # test with java (jersey2) client generation only as ensure-uptodate script is run in another job instead + ./bin/generate-samples.sh ./bin/configs/java-jersey2-8.yaml From 54814caeb146190a335ae389853d968f88a1716a Mon Sep 17 00:00:00 2001 From: cal Date: Sun, 4 Jul 2021 08:44:57 +0200 Subject: [PATCH 178/192] [cleanup] erefactor/EclipseJdt - Add missing @Override annotation - include interface implementations (#9860) EclipseJdt cleanup 'AddMissingOverrideAnnotation' applied by erefactor. For EclipseJdt see https://www.eclipse.org/eclipse/news/4.20/jdt.php For erefactor see https://github.com/cal101/erefactor --- .../openapitools/codegen/CodegenProperty.java | 2 + .../openapitools/codegen/DefaultCodegen.java | 116 ++++++++++++++++++ .../openapitools/codegen/TemplateManager.java | 1 + .../codegen/languages/AbstractAdaCodegen.java | 1 + .../languages/AbstractApexCodegen.java | 1 + .../codegen/languages/AbstractCppCodegen.java | 2 + .../languages/AbstractGraphQLCodegen.java | 1 + .../AbstractJavaJAXRSServerCodegen.java | 1 + .../languages/AbstractRubyCodegen.java | 1 + .../AsciidocDocumentationCodegen.java | 3 + .../codegen/languages/BashClientCodegen.java | 6 + .../languages/CSharpClientCodegen.java | 2 + .../languages/CSharpNetCoreClientCodegen.java | 3 + .../languages/CppPistacheServerCodegen.java | 1 + .../languages/CppRestSdkClientCodegen.java | 3 + .../languages/CppRestbedServerCodegen.java | 4 + .../languages/CppTinyClientCodegen.java | 4 + .../languages/CppTizenClientCodegen.java | 1 + .../languages/CppUE4ClientCodegen.java | 3 + .../languages/CrystalClientCodegen.java | 1 + 20 files changed, 157 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java index c77abfbec98..4ccbb8c3a9d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java @@ -678,10 +678,12 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti this.maxProperties = maxProperties; } + @Override public Number getMultipleOf() { return multipleOf; } + @Override public void setMultipleOf(Number multipleOf) { this.multipleOf = multipleOf; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 1d6f244e9cc..68f8b7d3c31 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -256,10 +256,12 @@ public class DefaultCodegen implements CodegenConfig { // A cache to efficiently lookup a Schema instance based on the return value of `toModelName()`. private Map modelNameToSchemaCache; + @Override public List cliOptions() { return cliOptions; } + @Override public void processOpts() { if (additionalProperties.containsKey(CodegenConstants.TEMPLATE_DIR)) { this.setTemplateDir((String) additionalProperties.get(CodegenConstants.TEMPLATE_DIR)); @@ -410,6 +412,7 @@ public class DefaultCodegen implements CodegenConfig { } // override with any special post-processing for all models + @Override @SuppressWarnings({"static-method", "unchecked"}) public Map postProcessAllModels(Map objs) { if (this.useOneOfInterfaces) { @@ -512,6 +515,7 @@ public class DefaultCodegen implements CodegenConfig { * @param objs Map of models * @return maps of models with various updates */ + @Override public Map updateAllModels(Map objs) { Map allModels = getAllModels(objs); @@ -624,6 +628,7 @@ public class DefaultCodegen implements CodegenConfig { } // override with any special post-processing + @Override @SuppressWarnings("static-method") public Map postProcessModels(Map objs) { return objs; @@ -768,6 +773,7 @@ public class DefaultCodegen implements CodegenConfig { } // override with any message to be shown right before the process finishes + @Override @SuppressWarnings("static-method") public void postProcess() { System.out.println("################################################################################"); @@ -778,28 +784,33 @@ public class DefaultCodegen implements CodegenConfig { } // override with any special post-processing + @Override @SuppressWarnings("static-method") public Map postProcessOperationsWithModels(Map objs, List allModels) { return objs; } // override with any special post-processing + @Override @SuppressWarnings("static-method") public Map postProcessSupportingFileData(Map objs) { return objs; } // override to post-process any model properties + @Override @SuppressWarnings("unused") public void postProcessModelProperty(CodegenModel model, CodegenProperty property) { } // override to post-process any parameters + @Override @SuppressWarnings("unused") public void postProcessParameter(CodegenParameter parameter) { } //override with any special handling of the entire OpenAPI spec document + @Override @SuppressWarnings("unused") public void preprocessOpenAPI(OpenAPI openAPI) { if (useOneOfInterfaces) { @@ -884,23 +895,27 @@ public class DefaultCodegen implements CodegenConfig { } // override with any special handling of the entire OpenAPI spec document + @Override @SuppressWarnings("unused") public void processOpenAPI(OpenAPI openAPI) { } // override with any special handling of the JMustache compiler + @Override @SuppressWarnings("unused") public Compiler processCompiler(Compiler compiler) { return compiler; } // override with any special handling for the templating engine + @Override @SuppressWarnings("unused") public TemplatingEngineAdapter processTemplatingEngine(TemplatingEngineAdapter templatingEngine) { return templatingEngine; } // override with any special text escaping logic + @Override @SuppressWarnings("static-method") public String escapeText(String input) { if (input == null) { @@ -927,6 +942,7 @@ public class DefaultCodegen implements CodegenConfig { * @param input String to be escaped * @return escaped string */ + @Override public String escapeTextWhileAllowingNewLines(String input) { if (input == null) { return input; @@ -947,6 +963,7 @@ public class DefaultCodegen implements CodegenConfig { } // override with any special encoding and escaping logic + @Override @SuppressWarnings("static-method") public String encodePath(String input) { return escapeText(input); @@ -959,6 +976,7 @@ public class DefaultCodegen implements CodegenConfig { * @param input String to be cleaned up * @return string with unsafe characters removed or escaped */ + @Override public String escapeUnsafeCharacters(String input) { LOGGER.warn("escapeUnsafeCharacters should be overridden in the code generator with proper logic to escape " + "unsafe characters"); @@ -975,56 +993,69 @@ public class DefaultCodegen implements CodegenConfig { * @param input String to be cleaned up * @return string with quotation mark removed or escaped */ + @Override public String escapeQuotationMark(String input) { LOGGER.warn("escapeQuotationMark should be overridden in the code generator with proper logic to escape " + "single/double quote"); return input.replace("\"", "\\\""); } + @Override public Set defaultIncludes() { return defaultIncludes; } + @Override public Map typeMapping() { return typeMapping; } + @Override public Map instantiationTypes() { return instantiationTypes; } + @Override public Set reservedWords() { return reservedWords; } + @Override public Set languageSpecificPrimitives() { return languageSpecificPrimitives; } + @Override public Map importMapping() { return importMapping; } + @Override public String testPackage() { return testPackage; } + @Override public String modelPackage() { return modelPackage; } + @Override public String apiPackage() { return apiPackage; } + @Override public String fileSuffix() { return fileSuffix; } + @Override public String templateDir() { return templateDir; } + @Override public String embeddedTemplateDir() { if (embeddedTemplateDir != null) { return embeddedTemplateDir; @@ -1033,90 +1064,112 @@ public class DefaultCodegen implements CodegenConfig { } } + @Override public Map apiDocTemplateFiles() { return apiDocTemplateFiles; } + @Override public Map modelDocTemplateFiles() { return modelDocTemplateFiles; } + @Override public Map reservedWordsMappings() { return reservedWordsMappings; } + @Override public Map apiTestTemplateFiles() { return apiTestTemplateFiles; } + @Override public Map modelTestTemplateFiles() { return modelTestTemplateFiles; } + @Override public Map apiTemplateFiles() { return apiTemplateFiles; } + @Override public Map modelTemplateFiles() { return modelTemplateFiles; } + @Override public String apiFileFolder() { return outputFolder + File.separator + apiPackage().replace('.', File.separatorChar); } + @Override public String modelFileFolder() { return outputFolder + File.separator + modelPackage().replace('.', File.separatorChar); } + @Override public String apiTestFileFolder() { return outputFolder + File.separator + testPackage().replace('.', File.separatorChar); } + @Override public String modelTestFileFolder() { return outputFolder + File.separator + testPackage().replace('.', File.separatorChar); } + @Override public String apiDocFileFolder() { return outputFolder; } + @Override public String modelDocFileFolder() { return outputFolder; } + @Override public Map additionalProperties() { return additionalProperties; } + @Override public Map serverVariableOverrides() { return serverVariables; } + @Override public Map vendorExtensions() { return vendorExtensions; } + @Override public List supportingFiles() { return supportingFiles; } + @Override public String outputFolder() { return outputFolder; } + @Override public void setOutputDir(String dir) { this.outputFolder = dir; } + @Override public String getOutputDir() { return outputFolder(); } + @Override public String getInputSpec() { return inputSpec; } + @Override public void setInputSpec(String inputSpec) { this.inputSpec = inputSpec; } @@ -1245,6 +1298,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the file name of the Api * @return the file name of the Api */ + @Override public String toApiFilename(String name) { return toApiName(name); } @@ -1255,6 +1309,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the file name of the Api * @return the file name of the Api */ + @Override public String toApiDocFilename(String name) { return toApiName(name); } @@ -1265,6 +1320,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the file name of the Api * @return the file name of the Api */ + @Override public String toApiTestFilename(String name) { return toApiName(name) + "Test"; } @@ -1275,6 +1331,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the varible name of the Api * @return the snake-cased variable name */ + @Override public String toApiVarName(String name) { return lowerCamelCase(name); } @@ -1285,6 +1342,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the model name * @return the file name of the model */ + @Override public String toModelFilename(String name) { return camelize(name); } @@ -1295,6 +1353,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the model name * @return the file name of the model */ + @Override public String toModelTestFilename(String name) { return camelize(name) + "Test"; } @@ -1305,6 +1364,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the model name * @return the file name of the model */ + @Override public String toModelDocFilename(String name) { return camelize(name); } @@ -1358,6 +1418,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name Codegen property object * @return the sanitized parameter name */ + @Override public String toParamName(String name) { name = removeNonNameElementToCamelCase(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'. if (reservedWords.contains(name)) { @@ -1398,6 +1459,7 @@ public class DefaultCodegen implements CodegenConfig { *

    * throws Runtime exception as reserved word is not allowed (default behavior) */ + @Override @SuppressWarnings("static-method") public String escapeReservedWord(String name) { throw new RuntimeException("reserved word " + name + " not allowed"); @@ -1409,6 +1471,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the name of the "Model" * @return the fully-qualified "Model" name for import */ + @Override public String toModelImport(String name) { if ("".equals(modelPackage())) { return name; @@ -1423,6 +1486,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the name of the "Model" * @return Map of fully-qualified models. */ + @Override public Map toModelImportMap(String name){ return Collections.singletonMap(this.toModelImport(name),name); } @@ -1433,6 +1497,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the name of the "Api" * @return the fully-qualified "Api" name for import */ + @Override public String toApiImport(String name) { return apiPackage() + "." + name; } @@ -1604,6 +1669,7 @@ public class DefaultCodegen implements CodegenConfig { * @param operation OAS operation object * @return string presentation of the example path */ + @Override @SuppressWarnings("static-method") public String generateExamplePath(String path, Operation operation) { StringBuilder sb = new StringBuilder(); @@ -2012,6 +2078,7 @@ public class DefaultCodegen implements CodegenConfig { return "oneOf<" + String.join(",", names) + ">"; } + @Override public Schema unaliasSchema(Schema schema, Map usedImportMappings) { return ModelUtils.unaliasSchema(this.openAPI, schema, usedImportMappings); } @@ -2154,6 +2221,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name name * @return a string presentation of the type */ + @Override @SuppressWarnings("static-method") public String getTypeDeclaration(String name) { return name; @@ -2165,6 +2233,7 @@ public class DefaultCodegen implements CodegenConfig { * @param schema property schema * @return a string presentation of the property type */ + @Override public String getTypeDeclaration(Schema schema) { if (schema == null) { LOGGER.warn("Null schema found. Default type to `NULL_SCHEMA_ERR`"); @@ -2201,6 +2270,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the name of the property * @return getter name based on naming convention */ + @Override public String toBooleanGetter(String name) { return "get" + getterAndSetterCapitalize(name); } @@ -2211,6 +2281,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the name of the property * @return getter name based on naming convention */ + @Override public String toGetter(String name) { return "get" + getterAndSetterCapitalize(name); } @@ -2221,6 +2292,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the name of the property * @return setter name based on naming convention */ + @Override public String toSetter(String name) { return "set" + getterAndSetterCapitalize(name); } @@ -2232,6 +2304,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the name of the Api * @return capitalized Api name */ + @Override public String toApiName(String name) { if (name.length() == 0) { return "DefaultApi"; @@ -2247,6 +2320,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name the name of the model * @return capitalized model name */ + @Override public String toModelName(final String name) { return camelize(modelNamePrefix + "_" + name + "_" + modelNameSuffix); } @@ -2283,6 +2357,7 @@ public class DefaultCodegen implements CodegenConfig { * @param schema OAS Model object * @return Codegen Model object */ + @Override public CodegenModel fromModel(String name, Schema schema) { Map allDefinitions = ModelUtils.getSchemas(this.openAPI); if (typeAliases == null) { @@ -3713,6 +3788,7 @@ public class DefaultCodegen implements CodegenConfig { * @param servers list of servers * @return Codegen Operation object */ + @Override public CodegenOperation fromOperation(String path, String httpMethod, Operation operation, @@ -4528,6 +4604,7 @@ public class DefaultCodegen implements CodegenConfig { * @param securitySchemeMap a map of OAS SecuritySchemeDefinition object * @return a list of Codegen Security objects */ + @Override @SuppressWarnings("static-method") public List fromSecurity(Map securitySchemeMap) { if (securitySchemeMap == null) { @@ -4749,6 +4826,7 @@ public class DefaultCodegen implements CodegenConfig { * @param co Codegen Operation object * @param operations map of Codegen operations */ + @Override @SuppressWarnings("static-method") public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map> operations) { @@ -5036,11 +5114,13 @@ public class DefaultCodegen implements CodegenConfig { return result; } + @Override public String apiFilename(String templateName, String tag) { String suffix = apiTemplateFiles().get(templateName); return apiFileFolder() + File.separator + toApiFilename(tag) + suffix; } + @Override public String modelFilename(String templateName, String modelName) { String suffix = modelTemplateFiles().get(templateName); return modelFileFolder() + File.separator + toModelFilename(modelName) + suffix; @@ -5053,6 +5133,7 @@ public class DefaultCodegen implements CodegenConfig { * @param tag tag * @return the API documentation file name with full path */ + @Override public String apiDocFilename(String templateName, String tag) { String docExtension = getDocExtension(); String suffix = docExtension != null ? docExtension : apiDocTemplateFiles().get(templateName); @@ -5066,31 +5147,38 @@ public class DefaultCodegen implements CodegenConfig { * @param tag tag * @return the API test file name with full path */ + @Override public String apiTestFilename(String templateName, String tag) { String suffix = apiTestTemplateFiles().get(templateName); return apiTestFileFolder() + File.separator + toApiTestFilename(tag) + suffix; } + @Override public boolean shouldOverwrite(String filename) { return !(skipOverwrite && new File(filename).exists()); } + @Override public boolean isSkipOverwrite() { return skipOverwrite; } + @Override public void setSkipOverwrite(boolean skipOverwrite) { this.skipOverwrite = skipOverwrite; } + @Override public boolean isRemoveOperationIdPrefix() { return removeOperationIdPrefix; } + @Override public boolean isSkipOperationExample() { return skipOperationExample; } + @Override public void setRemoveOperationIdPrefix(boolean removeOperationIdPrefix) { this.removeOperationIdPrefix = removeOperationIdPrefix; } @@ -5111,14 +5199,17 @@ public class DefaultCodegen implements CodegenConfig { this.removeOperationIdPrefixCount = removeOperationIdPrefixCount; } + @Override public void setSkipOperationExample(boolean skipOperationExample) { this.skipOperationExample = skipOperationExample; } + @Override public boolean isHideGenerationTimestamp() { return hideGenerationTimestamp; } + @Override public void setHideGenerationTimestamp(boolean hideGenerationTimestamp) { this.hideGenerationTimestamp = hideGenerationTimestamp; } @@ -5129,6 +5220,7 @@ public class DefaultCodegen implements CodegenConfig { * * @return the supported libraries */ + @Override public Map supportedLibraries() { return supportedLibraries; } @@ -5138,6 +5230,7 @@ public class DefaultCodegen implements CodegenConfig { * * @param library Library template */ + @Override public void setLibrary(String library) { if (library != null && !supportedLibraries.containsKey(library)) { StringBuilder sb = new StringBuilder("Unknown library: " + library + "\nAvailable libraries:"); @@ -5158,6 +5251,7 @@ public class DefaultCodegen implements CodegenConfig { * * @return Library template */ + @Override public String getLibrary() { return library; } @@ -5176,6 +5270,7 @@ public class DefaultCodegen implements CodegenConfig { * * @param gitHost Git host */ + @Override public void setGitHost(String gitHost) { this.gitHost = gitHost; } @@ -5185,6 +5280,7 @@ public class DefaultCodegen implements CodegenConfig { * * @return Git host */ + @Override public String getGitHost() { return gitHost; } @@ -5194,6 +5290,7 @@ public class DefaultCodegen implements CodegenConfig { * * @param gitUserId Git user ID */ + @Override public void setGitUserId(String gitUserId) { this.gitUserId = gitUserId; } @@ -5203,6 +5300,7 @@ public class DefaultCodegen implements CodegenConfig { * * @return Git user ID */ + @Override public String getGitUserId() { return gitUserId; } @@ -5212,6 +5310,7 @@ public class DefaultCodegen implements CodegenConfig { * * @param gitRepoId Git repo ID */ + @Override public void setGitRepoId(String gitRepoId) { this.gitRepoId = gitRepoId; } @@ -5221,6 +5320,7 @@ public class DefaultCodegen implements CodegenConfig { * * @return Git repo ID */ + @Override public String getGitRepoId() { return gitRepoId; } @@ -5230,6 +5330,7 @@ public class DefaultCodegen implements CodegenConfig { * * @param releaseNote Release note */ + @Override public void setReleaseNote(String releaseNote) { this.releaseNote = releaseNote; } @@ -5239,6 +5340,7 @@ public class DefaultCodegen implements CodegenConfig { * * @return Release note */ + @Override public String getReleaseNote() { return releaseNote; } @@ -5248,6 +5350,7 @@ public class DefaultCodegen implements CodegenConfig { * * @return Documentation files extension */ + @Override public String getDocExtension() { return docExtension; } @@ -5257,6 +5360,7 @@ public class DefaultCodegen implements CodegenConfig { * * @param userDocExtension documentation files extension */ + @Override public void setDocExtension(String userDocExtension) { this.docExtension = userDocExtension; } @@ -5266,6 +5370,7 @@ public class DefaultCodegen implements CodegenConfig { * * @param httpUserAgent HTTP user agent */ + @Override public void setHttpUserAgent(String httpUserAgent) { this.httpUserAgent = httpUserAgent; } @@ -5275,6 +5380,7 @@ public class DefaultCodegen implements CodegenConfig { * * @return HTTP user agent */ + @Override public String getHttpUserAgent() { return httpUserAgent; } @@ -5294,6 +5400,7 @@ public class DefaultCodegen implements CodegenConfig { * @param name string to be sanitize * @return sanitized string */ + @Override @SuppressWarnings("static-method") public String sanitizeName(String name) { return sanitizeName(name, "\\W"); @@ -5403,6 +5510,7 @@ public class DefaultCodegen implements CodegenConfig { * @param tag Tag * @return Sanitized tag */ + @Override public String sanitizeTag(String tag) { tag = camelize(sanitizeName(tag)); @@ -5642,6 +5750,7 @@ public class DefaultCodegen implements CodegenConfig { * * @return a string of the full path to an override ignore file. */ + @Override public String getIgnoreFilePathOverride() { return ignoreFilePathOverride; } @@ -5651,6 +5760,7 @@ public class DefaultCodegen implements CodegenConfig { * * @param ignoreFileOverride The full path to an ignore file */ + @Override public void setIgnoreFilePathOverride(final String ignoreFileOverride) { this.ignoreFilePathOverride = ignoreFileOverride; } @@ -5831,14 +5941,17 @@ public class DefaultCodegen implements CodegenConfig { } } + @Override public CodegenType getTag() { return null; } + @Override public String getName() { return null; } + @Override public String getHelp() { return null; } @@ -6427,6 +6540,7 @@ public class DefaultCodegen implements CodegenConfig { * @param file file to be processed * @param fileType file type */ + @Override public void postProcessFile(File file, String fileType) { LOGGER.debug("Post processing file {} ({})", file, fileType); } @@ -6436,6 +6550,7 @@ public class DefaultCodegen implements CodegenConfig { * * @return true if the option is enabled */ + @Override public boolean isEnablePostProcessFile() { return enablePostProcessFile; } @@ -6445,6 +6560,7 @@ public class DefaultCodegen implements CodegenConfig { * * @param enablePostProcessFile true to enable post-processing file */ + @Override public void setEnablePostProcessFile(boolean enablePostProcessFile) { this.enablePostProcessFile = enablePostProcessFile; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/TemplateManager.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/TemplateManager.java index 3af30d83bab..072bb4037ef 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/TemplateManager.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/TemplateManager.java @@ -206,6 +206,7 @@ public class TemplateManager implements TemplatingExecutor, TemplateProcessor { * @return File representing the written file. * @throws IOException If file cannot be written. */ + @Override public File writeToFile(String filename, byte[] contents) throws IOException { // Use Paths.get here to normalize path (for Windows file separator, space escaping on Linux/Mac, etc) File outputFile = Paths.get(filename).toFile(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java index f6374d6d946..7ef64adcd71 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java @@ -277,6 +277,7 @@ abstract public class AbstractAdaCodegen extends DefaultCodegen implements Codeg * @param name the name of the model * @return capitalized model name */ + @Override public String toModelName(final String name) { String result = camelize(sanitizeName(name)); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java index 2b27370900e..0049bb6554d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java @@ -643,6 +643,7 @@ public abstract class AbstractApexCodegen extends DefaultCodegen implements Code return p.replaceAll("\"", "%22"); } + @Override public String toRegularExpression(String pattern) { return escapeText(pattern); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java index 24dabafd7cf..2adc4b8e1b2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java @@ -275,6 +275,7 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg * @param name the name of the property * @return getter name based on naming convention */ + @Override public String toBooleanGetter(String name) { return "is" + getterAndSetterCapitalize(name); } @@ -284,6 +285,7 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg return "std::shared_ptr<" + toModelName(str) + ">"; } + @Override public void processOpts() { super.processOpts(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java index c5a04049af0..041ead342ae 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java @@ -143,6 +143,7 @@ public abstract class AbstractGraphQLCodegen extends DefaultCodegen implements C return outputFolder + File.separator + packageName + File.separator + "api" + File.separator; } + @Override public String modelFileFolder() { return outputFolder + File.separator + packageName + File.separator + "model" + File.separator; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java index 8ee05fcd3e4..e631ae130fa 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaJAXRSServerCodegen.java @@ -305,6 +305,7 @@ public abstract class AbstractJavaJAXRSServerCodegen extends AbstractJavaCodegen return outputFolder + "/" + output + "/" + apiPackage().replace('.', '/'); } + @Override public void setUseBeanValidation(boolean useBeanValidation) { this.useBeanValidation = useBeanValidation; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java index 07c8a6e3cf6..040434952c0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java @@ -191,6 +191,7 @@ abstract public class AbstractRubyCodegen extends DefaultCodegen implements Code return varName; } + @Override public String toRegularExpression(String pattern) { return addRegularExpressionDelimiter(pattern); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java index 83c32409a8a..fa66f2a33a2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java @@ -163,6 +163,7 @@ public class AsciidocDocumentationCodegen extends DefaultCodegen implements Code private IncludeMarkupLambda includeSnippetMarkupLambda; private LinkMarkupLambda linkSnippetMarkupLambda; + @Override public CodegenType getTag() { return CodegenType.DOCUMENTATION; } @@ -181,10 +182,12 @@ public class AsciidocDocumentationCodegen extends DefaultCodegen implements Code return sanitized.startsWith(File.separator) || sanitized.startsWith("/") ? sanitized.substring(1) : sanitized; } + @Override public String getName() { return "asciidoc"; } + @Override public String getHelp() { return "Generates asciidoc markup based documentation."; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java index 214f98ea3b3..8f2c32f2a7e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java @@ -75,6 +75,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig { * * @return the CodegenType for this generator */ + @Override public CodegenType getTag() { return CodegenType.CLIENT; } @@ -85,6 +86,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig { * * @return the friendly name for the generator */ + @Override public String getName() { return "bash"; } @@ -95,6 +97,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig { * * @return A string value for the help message */ + @Override public String getHelp() { return "Generates a Bash client script based on cURL."; } @@ -380,6 +383,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig { * Location to write model files. You can use the modelPackage() as defined * when the class is instantiated. */ + @Override public String modelFileFolder() { return outputFolder; } @@ -509,6 +513,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig { /** * Override with any special text escaping logic */ + @Override @SuppressWarnings("static-method") public String escapeText(String input) { if (input == null) { @@ -605,6 +610,7 @@ public class BashClientCodegen extends DefaultCodegen implements CodegenConfig { * @param input String to be cleaned up * @return string with unsafe characters removed or escaped */ + @Override public String escapeUnsafeCharacters(String input) { /** diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java index 6f93f3294c9..f69ffd9237f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java @@ -874,10 +874,12 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen { } } + @Override public void setPackageName(String packageName) { this.packageName = packageName; } + @Override public void setPackageVersion(String packageVersion) { this.packageVersion = packageVersion; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java index 2554a645131..2e0a3bd1223 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java @@ -781,10 +781,12 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { this.packageGuid = packageGuid; } + @Override public void setPackageName(String packageName) { this.packageName = packageName; } + @Override public void setPackageVersion(String packageVersion) { this.packageVersion = packageVersion; } @@ -855,6 +857,7 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen { this.licenseId = licenseId; } + @Override public void setReleaseNote(String releaseNote) { this.releaseNote = releaseNote; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java index 5d199f8e0fb..18cfb324f9a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java @@ -423,6 +423,7 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen { * Location to write model files. You can use the modelPackage() as defined * when the class is instantiated */ + @Override public String modelFileFolder() { return (outputFolder + "/model").replace("/", File.separator); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java index 8dd888dd7db..f6b62cdd144 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java @@ -52,6 +52,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { * @return the CodegenType for this generator * @see org.openapitools.codegen.CodegenType */ + @Override public CodegenType getTag() { return CodegenType.CLIENT; } @@ -62,6 +63,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { * * @return the friendly name for the generator */ + @Override public String getName() { return "cpp-restsdk"; } @@ -72,6 +74,7 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen { * * @return A string value for the help message */ + @Override public String getHelp() { return "Generates a C++ API client with C++ REST SDK (https://github.com/Microsoft/cpprestsdk)."; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java index 6cd87d18f2c..9d9bc5932c9 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java @@ -175,6 +175,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { * * @return the CodegenType for this generator */ + @Override public CodegenType getTag() { return CodegenType.SERVER; } @@ -185,6 +186,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { * * @return the friendly name for the generator */ + @Override public String getName() { return "cpp-restbed-server"; } @@ -195,6 +197,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { * * @return A string value for the help message */ + @Override public String getHelp() { return "Generates a C++ API Server with Restbed (https://github.com/Corvusoft/restbed)."; } @@ -228,6 +231,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { * Location to write model files. You can use the modelPackage() as defined * when the class is instantiated */ + @Override public String modelFileFolder() { return (outputFolder + "/model").replace("/", File.separator); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTinyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTinyClientCodegen.java index d339555a86e..3229730bfa6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTinyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTinyClientCodegen.java @@ -43,6 +43,7 @@ public class CppTinyClientCodegen extends AbstractCppCodegen implements CodegenC protected String controller = "esp32"; + @Override public CodegenType getTag() { return CodegenType.CLIENT; } @@ -53,6 +54,7 @@ public class CppTinyClientCodegen extends AbstractCppCodegen implements CodegenC * * @return the friendly name for the generator */ + @Override public String getName() { return "cpp-tiny"; } @@ -63,6 +65,7 @@ public class CppTinyClientCodegen extends AbstractCppCodegen implements CodegenC * * @return A string value for the help message */ + @Override public String getHelp() { return "Generates a C++ Arduino REST API client."; } @@ -317,6 +320,7 @@ public class CppTinyClientCodegen extends AbstractCppCodegen implements CodegenC return "" + paramName; } + @Override public String toDefaultValue(Schema p) { if (ModelUtils.isBooleanSchema(p)) { return "bool(false)"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTizenClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTizenClientCodegen.java index 16bd058996f..d23bf246cac 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTizenClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTizenClientCodegen.java @@ -319,6 +319,7 @@ public class CppTizenClientCodegen extends AbstractCppCodegen implements Codegen * @param name the name of the property * @return getter name based on naming convention */ + @Override public String toBooleanGetter(String name) { return "get" + getterAndSetterCapitalize(name); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppUE4ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppUE4ClientCodegen.java index 7ee6cac252a..223a4f7644b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppUE4ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppUE4ClientCodegen.java @@ -539,14 +539,17 @@ public class CppUE4ClientCodegen extends AbstractCppCodegen { return input.replace("*/", "*_/").replace("/*", "/_*"); } + @Override public String toBooleanGetter(String name) { return "Is" + getterAndSetterCapitalize(name); } + @Override public String toGetter(String name) { return "Get" + getterAndSetterCapitalize(name); } + @Override public String toSetter(String name) { return "Set" + getterAndSetterCapitalize(name); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java index 65083f70694..38e95c67d26 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java @@ -837,6 +837,7 @@ public class CrystalClientCodegen extends DefaultCodegen { return varName; } + @Override public String toRegularExpression(String pattern) { return addRegularExpressionDelimiter(pattern); } From 611a3effa60d32b59c9402766a87d144ecf1eec4 Mon Sep 17 00:00:00 2001 From: cal Date: Sun, 4 Jul 2021 08:47:52 +0200 Subject: [PATCH 179/192] [cleanup] erefactor/AutoRefactor - Log parameters rather than log message (#9859) AutoRefactor cleanup 'LogParametersRatherThanLogMessage' applied by erefactor: Replaces a string concatenation as parameter of a logger method by a string template followed by objects. For AutoRefactor see https://github.com/JnRouvignac/AutoRefactor For erefactor see https://github.com/cal101/erefactor --- .../codegen/languages/RustServerCodegen.java | 16 +++++++++------- .../languages/ScalaAkkaHttpServerCodegen.java | 9 ++++----- .../ScalaPlayFrameworkServerCodegen.java | 2 +- .../codegen/languages/SpringCodegen.java | 2 +- .../codegen/languages/StaticHtml2Generator.java | 2 +- .../codegen/languages/Swift4Codegen.java | 15 ++++++--------- .../codegen/languages/Swift5ClientCodegen.java | 15 ++++++--------- .../languages/TypeScriptClientCodegen.java | 8 +++++--- .../languages/TypeScriptRxjsClientCodegen.java | 2 +- .../codegen/utils/JsonCacheImpl.java | 10 +++++----- .../codegen/asciidoc/AsciidocGeneratorTest.java | 4 ++-- 11 files changed, 41 insertions(+), 44 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java index a47e86573fb..e73361311a1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java @@ -396,14 +396,15 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { // model name cannot use reserved keyword, e.g. return if (isReservedWord(camelizedName)) { camelizedName = "Model" + camelizedName; - LOGGER.warn(camelizedName + " (reserved word) cannot be used as model name. Renamed to " + camelizedName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", camelizedName, camelizedName); } // model name starts with number else if (camelizedName.matches("^\\d.*")) { // e.g. 200Response => Model200Response (after camelize) camelizedName = "Model" + camelizedName; - LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelizedName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + camelizedName); } return camelizedName; @@ -435,10 +436,11 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { public String toOperationId(String operationId) { // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { - LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + camelize("call_" + operationId)); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, camelize("call_" + operationId)); operationId = "call_" + operationId; } else if (operationId.matches("\\d.*")) { - LOGGER.warn(operationId + " cannot be used as method name because it starts with a digit. Renamed to " + camelize("call_" + operationId)); + LOGGER.warn("{} cannot be used as method name because it starts with a digit. Renamed to {}", operationId, + camelize("call_" + operationId)); operationId = "call_" + operationId; } @@ -459,7 +461,7 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name)); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, camelize("model_" + name)); name = "model_" + name; // e.g. return => ModelReturn (after camelize) } @@ -1098,7 +1100,7 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { co, Map> operations) { // only generate operation for the first tag of the tags if (tag != null && co.tags.size() > 1 && !tag.equals(co.tags.get(0).getName())) { - LOGGER.info("generated skip additional tag `" + tag + "` with operationId=" + co.operationId); + LOGGER.info("generated skip additional tag `{}` with operationId={}", tag, co.operationId); return; } super.addOperationToGroup(tag, resourcePath, operation, co, operations); @@ -1163,7 +1165,7 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { datatype = "models::" + datatype; } } catch (Exception e) { - LOGGER.warn("Error obtaining the datatype from schema (model):" + p + ". Datatype default to Object"); + LOGGER.warn("Error obtaining the datatype from schema (model):{}. Datatype default to Object", p); datatype = "Object"; LOGGER.error(e.getMessage(), e); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java index f2d63fbf140..35a308f639a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java @@ -245,7 +245,7 @@ public class ScalaAkkaHttpServerCodegen extends AbstractScalaCodegen implements } } catch (NumberFormatException e) { - LOGGER.warn("Unable to parse " + AKKA_HTTP_VERSION + ": " + akkaHttpVersion + ", fallback to " + DEFAULT_AKKA_HTTP_VERSION); + LOGGER.warn("Unable to parse {}: {}, fallback to {}", AKKA_HTTP_VERSION, akkaHttpVersion, DEFAULT_AKKA_HTTP_VERSION); akkaHttpVersion = DEFAULT_AKKA_HTTP_VERSION; is10_1_10AndAbove = true; } @@ -318,10 +318,9 @@ public class ScalaAkkaHttpServerCodegen extends AbstractScalaCodegen implements if (pathParam.baseName.equals(parameterName)) { String matcher = pathTypeToMatcher.get(pathParam.dataType); if (matcher == null) { - LOGGER.warn("The path parameter " + pathParam.baseName + - " with the datatype " + pathParam.dataType + - " could not be translated to a corresponding path matcher of akka http" + - " and therefore has been translated to string."); + LOGGER.warn( + "The path parameter {} with the datatype {} could not be translated to a corresponding path matcher of akka http and therefore has been translated to string.", + pathParam.baseName, pathParam.dataType); matcher = pathTypeToMatcher.get("String"); } if (pathParam.pattern != null && !pathParam.pattern.isEmpty()) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java index 3181dde93e6..f38d42d1020 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java @@ -317,7 +317,7 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem } if (null == openAPIType) { - LOGGER.error("No Type defined for Schema " + p); + LOGGER.error("No Type defined for Schema {}", p); } return toModelName(openAPIType); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index 058acbed956..0dd93bfc594 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -229,7 +229,7 @@ public class SpringCodegen extends AbstractJavaCodegen // set invokerPackage as basePackage: this.setBasePackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); additionalProperties.put(BASE_PACKAGE, basePackage); - LOGGER.info("Set base package to invoker package (" + basePackage + ")"); + LOGGER.info("Set base package to invoker package ({})", basePackage); } super.processOpts(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java index 18f774e3710..fa94bcfa29b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java @@ -229,7 +229,7 @@ public class StaticHtml2Generator extends DefaultCodegen implements CodegenConfi Markdown markInstance = new Markdown(); openAPI.getInfo().setDescription(markInstance.toHtml(currentDescription)); } else { - LOGGER.error("OpenAPI object description is empty [" + openAPI.getInfo().getTitle() + "]"); + LOGGER.error("OpenAPI object description is empty [{}]", openAPI.getInfo().getTitle()); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java index 0133cfb3c17..5992ab51560 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift4Codegen.java @@ -568,8 +568,7 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { String modelName = "Model" + name; - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " - + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, modelName); return modelName; } @@ -577,9 +576,8 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { if (name.matches("^\\d.*")) { // e.g. 200Response => Model200Response (after camelize) String modelName = "Model" + name; - LOGGER.warn(name - + " (model name starts with number) cannot be used as model name." - + " Renamed to " + modelName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + modelName); return modelName; } @@ -674,14 +672,13 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = camelize(("call_" + operationId), true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name." - + " Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } // operationId starts with a number if (operationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + camelize(sanitizeName("call_" + operationId), true)); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, camelize(sanitizeName("call_" + operationId), true)); operationId = camelize(sanitizeName("call_" + operationId), true); } @@ -973,7 +970,7 @@ public class Swift4Codegen extends DefaultCodegen implements CodegenConfig { if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index e8b4ecb4fe8..4b109700254 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -674,8 +674,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig // model name cannot use reserved keyword, e.g. return if (isReservedWord(name)) { String modelName = "Model" + name; - LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " - + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", name, modelName); return modelName; } @@ -683,9 +682,8 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig if (name.matches("^\\d.*")) { // e.g. 200Response => Model200Response (after camelize) String modelName = "Model" + name; - LOGGER.warn(name - + " (model name starts with number) cannot be used as model name." - + " Renamed to " + modelName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name, + modelName); return modelName; } @@ -785,14 +783,13 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig // method name cannot use reserved keyword, e.g. return if (isReservedWord(operationId)) { String newOperationId = camelize(("call_" + operationId), true); - LOGGER.warn(operationId + " (reserved word) cannot be used as method name." - + " Renamed to " + newOperationId); + LOGGER.warn("{} (reserved word) cannot be used as method name. Renamed to {}", operationId, newOperationId); return newOperationId; } // operationId starts with a number if (operationId.matches("^\\d.*")) { - LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + camelize(sanitizeName("call_" + operationId), true)); + LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, camelize(sanitizeName("call_" + operationId), true)); operationId = camelize(sanitizeName("call_" + operationId), true); } @@ -1107,7 +1104,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig if (exitValue != 0) { LOGGER.error("Error running the command ({}). Exit value: {}", command, exitValue); } else { - LOGGER.info("Successfully executed: " + command); + LOGGER.info("Successfully executed: {}", command); } } catch (InterruptedException | IOException e) { LOGGER.error("Error running the command ({}). Exception: {}", command, e.getMessage()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java index 389408e8fae..821d190f5eb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java @@ -410,20 +410,22 @@ public class TypeScriptClientCodegen extends DefaultCodegen implements CodegenCo // this is unlikely to happen, because we have just camelized the name, while reserved words are usually all lowcase if (isReservedWord(sanName)) { String modelName = safePrefix + sanName; - LOGGER.warn(sanName + " (reserved word) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", sanName, modelName); return modelName; } // model name starts with number if (sanName.matches("^\\d.*")) { String modelName = safePrefix + sanName; // e.g. 200Response => Model200Response - LOGGER.warn(sanName + " (model name starts with number) cannot be used as model name. Renamed to " + modelName); + LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", sanName, + modelName); return modelName; } if (languageSpecificPrimitives.contains(sanName)) { String modelName = safePrefix + sanName; - LOGGER.warn(sanName + " (model name matches existing language type) cannot be used as a model name. Renamed to " + modelName); + LOGGER.warn("{} (model name matches existing language type) cannot be used as a model name. Renamed to {}", + sanName, modelName); return modelName; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java index bdecf7febe1..9a15de44bd7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java @@ -271,7 +271,7 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen if(this.reservedParamNames.contains(p.paramName)){ paramNameAlternative = p.paramName + "Alias"; - LOGGER.info("param: "+p.paramName+" isReserved ––> "+paramNameAlternative); + LOGGER.info("param: {} isReserved ––> {}", p.paramName, paramNameAlternative); } setParamNameAlternative(p, p.paramName, paramNameAlternative); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/JsonCacheImpl.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/JsonCacheImpl.java index a08173dedb1..cb02519d507 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/JsonCacheImpl.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/JsonCacheImpl.java @@ -1602,23 +1602,23 @@ class JsonCacheImpl implements JsonCache.Root { destObject.set(fieldName, srcChild); // Mark the cache as dirty as we've added items from another file. isDirty = true; - LOGGER.info("Existing root property '" + fieldName - + "' has been overwritten by incoming data"); + LOGGER.info("Existing root property '{}' has been overwritten by incoming data", + fieldName); break; case MERGE_RECURSIVE: if (destChild.isContainerNode() && srcChild.isContainerNode()) merge((ContainerNode) destChild, (ContainerNode) srcChild); break; case KEEP_EXISTING: - LOGGER.info("Existing root property '" + fieldName - + "' will not be overwritten by incoming data"); + LOGGER.info("Existing root property '{}' will not be overwritten by incoming data", + fieldName); default: // Nothing to do. break; } } else { destObject.set(fieldName, srcChild); - LOGGER.info("New property '" + fieldName + "' has been added from incoming data"); + LOGGER.info("New property '{}' has been added from incoming data", fieldName); // Mark the cache as dirty as we've added items from another file. isDirty = true; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/AsciidocGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/AsciidocGeneratorTest.java index 0933a120a35..c5f01e4b74d 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/AsciidocGeneratorTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/asciidoc/AsciidocGeneratorTest.java @@ -85,7 +85,7 @@ public class AsciidocGeneratorTest { public void testAdditionalDirectoriesGeneratedIntoHeaderAttributes() throws Exception { File output = Files.createTempDirectory("test").toFile(); - LOGGER.info("test: generating sample markup " + output.getAbsolutePath()); + LOGGER.info("test: generating sample markup {}", output.getAbsolutePath()); Map props = new TreeMap(); props.put("specDir", "spec"); @@ -117,7 +117,7 @@ public class AsciidocGeneratorTest { public void testHeaderAttributesFlagRemovesAttributesFromMarkupHeaderSection() throws Exception { File output = Files.createTempDirectory("test").toFile(); - LOGGER.info("test: generating sample markup " + output.getAbsolutePath()); + LOGGER.info("test: generating sample markup {}", output.getAbsolutePath()); Map props = new TreeMap(); props.put("specDir", "spec"); From d2e79be728186ec3d386e620f4ff720bba9a9a30 Mon Sep 17 00:00:00 2001 From: cal Date: Sun, 4 Jul 2021 08:49:47 +0200 Subject: [PATCH 180/192] [cleanup] erefactor/AutoRefactor - TestNG asserts (#9861) AutoRefactor cleanup 'TestNGAssert' applied by erefactor: Refactors to a proper use of TestNG assertions. For AutoRefactor see https://github.com/JnRouvignac/AutoRefactor For erefactor see https://github.com/cal101/erefactor --- .../codegen/DefaultCodegenTest.java | 382 +++++++++--------- .../android/AndroidClientCodegenTest.java | 2 +- .../csharp/CSharpClientCodegenTest.java | 6 +- .../codegen/csharp/CSharpModelTest.java | 2 +- .../codegen/dart/DartClientCodegenTest.java | 12 +- .../dart/dio/DartDioClientCodegenTest.java | 12 +- .../dio/DartDioNextClientCodegenTest.java | 12 +- .../eiffel/AbstractEiffelCodegenTest.java | 6 +- .../eiffel/EiffelClientCodegenTest.java | 6 +- .../fsharp/FSharpServerCodegenTest.java | 2 +- .../codegen/go/AbstractGoCodegenTest.java | 6 +- .../codegen/go/GoClientCodegenTest.java | 6 +- .../HaskellHttpClientCodegenTest.java | 6 +- .../haskellservant/HaskellModelTest.java | 1 - .../codegen/java/AbstractJavaCodegenTest.java | 6 +- .../java/JavaCXFClientCodegenTest.java | 6 +- .../codegen/java/JavaClientCodegenTest.java | 18 +- .../codegen/java/JavaModelEnumTest.java | 6 +- .../codegen/java/JavaModelTest.java | 26 +- .../AbstractJavaJAXRSServerCodegenTest.java | 6 +- 20 files changed, 264 insertions(+), 265 deletions(-) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index 7b2866bffbc..4f6e36a62de 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -76,8 +76,8 @@ public class DefaultCodegenTest { final DefaultCodegen codegen = new DefaultCodegen(); - Assert.assertEquals(codegen.hasBodyParameter(openAPI, pingOperation), false); - Assert.assertEquals(codegen.hasBodyParameter(openAPI, createOperation), true); + Assert.assertFalse(codegen.hasBodyParameter(openAPI, pingOperation)); + Assert.assertTrue(codegen.hasBodyParameter(openAPI, createOperation)); } @Test(expectedExceptions = RuntimeException.class) @@ -174,7 +174,7 @@ public class DefaultCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); } @Test @@ -184,7 +184,7 @@ public class DefaultCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -194,7 +194,7 @@ public class DefaultCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -248,7 +248,7 @@ public class DefaultCodegenTest { codegen.setDisallowAdditionalPropertiesIfNotPresent(true); Schema schema = openAPI.getComponents().getSchemas().get("AdditionalPropertiesClass"); - Assert.assertEquals(schema.getAdditionalProperties(), null); + Assert.assertNull(schema.getAdditionalProperties()); Schema addProps = ModelUtils.getAdditionalProperties(openAPI, schema); // The petstore-with-fake-endpoints-models-for-testing.yaml does not set the @@ -337,7 +337,7 @@ public class DefaultCodegenTest { */ Schema schema = openAPI.getComponents().getSchemas().get("AdditionalPropertiesClass"); - Assert.assertEquals(schema.getAdditionalProperties(), null); + Assert.assertNull(schema.getAdditionalProperties()); Schema addProps = ModelUtils.getAdditionalProperties(openAPI, schema); // The petstore-with-fake-endpoints-models-for-testing.yaml does not set the @@ -939,19 +939,19 @@ public class DefaultCodegenTest { // to test allOf with double refs Schema supermanSchema = openAPI.getComponents().getSchemas().get("SuperMan"); CodegenModel supermanModel = codegen.fromModel("SuperMan", supermanSchema); - Assert.assertEquals(supermanModel.parent, null); + Assert.assertNull(supermanModel.parent); Assert.assertEquals(supermanModel.allParents, null); // to test allOf with single ref Schema superboySchema = openAPI.getComponents().getSchemas().get("SuperBoy"); CodegenModel superboyModel = codegen.fromModel("SuperBoy", superboySchema); - Assert.assertEquals(superboyModel.parent, null); + Assert.assertNull(superboyModel.parent); Assert.assertEquals(superboyModel.allParents, null); // to test allOf with single ref and no "type: object" in the (last) inline schema Schema superbabySchema = openAPI.getComponents().getSchemas().get("SuperBaby"); CodegenModel superbabyModel = codegen.fromModel("SuperBaby", superbabySchema); - Assert.assertEquals(superbabyModel.parent, null); + Assert.assertNull(superbabyModel.parent); Assert.assertEquals(superbabyModel.allParents, null); } @@ -1093,7 +1093,7 @@ public class DefaultCodegenTest { for (String leafModelName: leafModelNames) { Schema leafSc = openAPI.getComponents().getSchemas().get(leafModelName); CodegenModel leafCm = codegen.fromModel(leafModelName, leafSc); - Assert.assertEquals(leafCm.discriminator, null); + Assert.assertNull(leafCm.discriminator); } // the Pet discriminator map contains all animals + Reptile (children + grandchildren) @@ -1124,7 +1124,7 @@ public class DefaultCodegenTest { modelName = "Reptile"; sc = openAPI.getComponents().getSchemas().get(modelName); CodegenModel reptile = codegen.fromModel(modelName, sc); - Assert.assertEquals(reptile.discriminator, null); + Assert.assertNull(reptile.discriminator); // the MyPets discriminator contains Cat and Lizard CodegenDiscriminator myPetDisc = new CodegenDiscriminator(); @@ -1140,7 +1140,7 @@ public class DefaultCodegenTest { modelName = "MyPetsNoDisc"; sc = openAPI.getComponents().getSchemas().get(modelName); CodegenModel myPetsNoDisc = codegen.fromModel(modelName, sc); - Assert.assertEquals(myPetsNoDisc.discriminator, null); + Assert.assertNull(myPetsNoDisc.discriminator); CodegenModel cm; @@ -1156,13 +1156,13 @@ public class DefaultCodegenTest { modelName = "B"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - Assert.assertEquals(cm.discriminator, null); + Assert.assertNull(cm.discriminator); // the mapping in b is in C modelName = "C"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - Assert.assertEquals(cm.discriminator, null); + Assert.assertNull(cm.discriminator); } @Test @@ -1922,7 +1922,7 @@ public class DefaultCodegenTest { openAPI.getComponents().getSchemas().get("MyParameterTextField") ); Assert.assertTrue(typeAliasModel.isAlias); - Assert.assertEquals("string", typeAliasModel.dataType); + Assert.assertEquals(typeAliasModel.dataType, "string"); CodegenModel composedModel = codegen.fromModel( "ComposedModel", @@ -2192,7 +2192,7 @@ public class DefaultCodegenTest { @Test public void setStyle() { CodegenParameter parameter = codegenParameter("/set_style"); - assertEquals("form", parameter.style); + assertEquals(parameter.style, "form"); } @Test @@ -2528,26 +2528,26 @@ public class DefaultCodegenTest { sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); assertEquals(cm.getAdditionalProperties(), anyTypeSchema); - assertEquals(cm.getAdditionalPropertiesIsAnyType(), true); + assertTrue(cm.getAdditionalPropertiesIsAnyType()); modelName = "AdditionalPropertiesTrue"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); assertEquals(cm.getAdditionalProperties(), anyTypeSchema); - assertEquals(cm.getAdditionalPropertiesIsAnyType(), true); + assertTrue(cm.getAdditionalPropertiesIsAnyType()); modelName = "AdditionalPropertiesFalse"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.getAdditionalProperties(), null); - assertEquals(cm.getAdditionalPropertiesIsAnyType(), false); + assertNull(cm.getAdditionalProperties()); + assertFalse(cm.getAdditionalPropertiesIsAnyType()); modelName = "AdditionalPropertiesSchema"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); CodegenProperty stringCp = codegen.fromProperty("", new Schema().type("string")); assertEquals(cm.getAdditionalProperties(), stringCp); - assertEquals(cm.getAdditionalPropertiesIsAnyType(), false); + assertFalse(cm.getAdditionalPropertiesIsAnyType()); } @Test @@ -2578,32 +2578,32 @@ public class DefaultCodegenTest { cm = codegen.fromModel(modelName, sc); mapWithAddPropsUnset = cm.getVars().get(0); assertEquals(mapWithAddPropsUnset.getAdditionalProperties(), anyTypeSchema); - assertEquals(mapWithAddPropsUnset.getAdditionalPropertiesIsAnyType(), true); + assertTrue(mapWithAddPropsUnset.getAdditionalPropertiesIsAnyType()); mapWithAddPropsTrue = cm.getVars().get(1); assertEquals(mapWithAddPropsTrue.getAdditionalProperties(), anyTypeSchema); - assertEquals(mapWithAddPropsTrue.getAdditionalPropertiesIsAnyType(), true); + assertTrue(mapWithAddPropsTrue.getAdditionalPropertiesIsAnyType()); mapWithAddPropsFalse = cm.getVars().get(2); - assertEquals(mapWithAddPropsFalse.getAdditionalProperties(), null); - assertEquals(mapWithAddPropsFalse.getAdditionalPropertiesIsAnyType(), false); + assertNull(mapWithAddPropsFalse.getAdditionalProperties()); + assertFalse(mapWithAddPropsFalse.getAdditionalPropertiesIsAnyType()); mapWithAddPropsSchema = cm.getVars().get(3); assertEquals(mapWithAddPropsSchema.getAdditionalProperties(), stringCp); - assertEquals(mapWithAddPropsSchema.getAdditionalPropertiesIsAnyType(), false); + assertFalse(mapWithAddPropsSchema.getAdditionalPropertiesIsAnyType()); modelName = "ObjectModelWithAddPropsInProps"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); mapWithAddPropsUnset = cm.getVars().get(0); assertEquals(mapWithAddPropsUnset.getAdditionalProperties(), anyTypeSchema); - assertEquals(mapWithAddPropsUnset.getAdditionalPropertiesIsAnyType(), true); + assertTrue(mapWithAddPropsUnset.getAdditionalPropertiesIsAnyType()); mapWithAddPropsTrue = cm.getVars().get(1); assertEquals(mapWithAddPropsTrue.getAdditionalProperties(), anyTypeSchema); - assertEquals(mapWithAddPropsTrue.getAdditionalPropertiesIsAnyType(), true); + assertTrue(mapWithAddPropsTrue.getAdditionalPropertiesIsAnyType()); mapWithAddPropsFalse = cm.getVars().get(2); - assertEquals(mapWithAddPropsFalse.getAdditionalProperties(), null); - assertEquals(mapWithAddPropsFalse.getAdditionalPropertiesIsAnyType(), false); + assertNull(mapWithAddPropsFalse.getAdditionalProperties()); + assertFalse(mapWithAddPropsFalse.getAdditionalPropertiesIsAnyType()); mapWithAddPropsSchema = cm.getVars().get(3); assertEquals(mapWithAddPropsSchema.getAdditionalProperties(), stringCp); - assertEquals(mapWithAddPropsSchema.getAdditionalPropertiesIsAnyType(), false); + assertFalse(mapWithAddPropsSchema.getAdditionalPropertiesIsAnyType()); if (isGenerateAliasAsModel) { // restore the setting GlobalSettings.setProperty("generateAliasAsModel", "true"); @@ -2639,32 +2639,32 @@ public class DefaultCodegenTest { co = codegen.fromOperation(path, "POST", operation, null); mapWithAddPropsUnset = co.queryParams.get(0); assertEquals(mapWithAddPropsUnset.getAdditionalProperties(), anyTypeSchema); - assertEquals(mapWithAddPropsUnset.getAdditionalPropertiesIsAnyType(), true); + assertTrue(mapWithAddPropsUnset.getAdditionalPropertiesIsAnyType()); mapWithAddPropsTrue = co.queryParams.get(1); assertEquals(mapWithAddPropsTrue.getAdditionalProperties(), anyTypeSchema); - assertEquals(mapWithAddPropsTrue.getAdditionalPropertiesIsAnyType(), true); + assertTrue(mapWithAddPropsTrue.getAdditionalPropertiesIsAnyType()); mapWithAddPropsFalse = co.queryParams.get(2); - assertEquals(mapWithAddPropsFalse.getAdditionalProperties(), null); - assertEquals(mapWithAddPropsFalse.getAdditionalPropertiesIsAnyType(), false); + assertNull(mapWithAddPropsFalse.getAdditionalProperties()); + assertFalse(mapWithAddPropsFalse.getAdditionalPropertiesIsAnyType()); mapWithAddPropsSchema = co.queryParams.get(3); assertEquals(mapWithAddPropsSchema.getAdditionalProperties(), stringCp); - assertEquals(mapWithAddPropsSchema.getAdditionalPropertiesIsAnyType(), false); + assertFalse(mapWithAddPropsSchema.getAdditionalPropertiesIsAnyType()); path = "/additional_properties/"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); mapWithAddPropsUnset = co.queryParams.get(0); assertEquals(mapWithAddPropsUnset.getAdditionalProperties(), anyTypeSchema); - assertEquals(mapWithAddPropsUnset.getAdditionalPropertiesIsAnyType(), true); + assertTrue(mapWithAddPropsUnset.getAdditionalPropertiesIsAnyType()); mapWithAddPropsTrue = co.queryParams.get(1); assertEquals(mapWithAddPropsTrue.getAdditionalProperties(), anyTypeSchema); - assertEquals(mapWithAddPropsTrue.getAdditionalPropertiesIsAnyType(), true); + assertTrue(mapWithAddPropsTrue.getAdditionalPropertiesIsAnyType()); mapWithAddPropsFalse = co.queryParams.get(2); - assertEquals(mapWithAddPropsFalse.getAdditionalProperties(), null); - assertEquals(mapWithAddPropsFalse.getAdditionalPropertiesIsAnyType(), false); + assertNull(mapWithAddPropsFalse.getAdditionalProperties()); + assertFalse(mapWithAddPropsFalse.getAdditionalPropertiesIsAnyType()); mapWithAddPropsSchema = co.queryParams.get(3); assertEquals(mapWithAddPropsSchema.getAdditionalProperties(), stringCp); - assertEquals(mapWithAddPropsSchema.getAdditionalPropertiesIsAnyType(), false); + assertFalse(mapWithAddPropsSchema.getAdditionalPropertiesIsAnyType()); if (isGenerateAliasAsModel) { // restore the setting GlobalSettings.setProperty("generateAliasAsModel", "true"); @@ -2700,32 +2700,32 @@ public class DefaultCodegenTest { co = codegen.fromOperation(path, "POST", operation, null); mapWithAddPropsUnset = co.responses.get(0); assertEquals(mapWithAddPropsUnset.getAdditionalProperties(), anyTypeSchema); - assertEquals(mapWithAddPropsUnset.getAdditionalPropertiesIsAnyType(), true); + assertTrue(mapWithAddPropsUnset.getAdditionalPropertiesIsAnyType()); mapWithAddPropsTrue = co.responses.get(1); assertEquals(mapWithAddPropsTrue.getAdditionalProperties(), anyTypeSchema); - assertEquals(mapWithAddPropsTrue.getAdditionalPropertiesIsAnyType(), true); + assertTrue(mapWithAddPropsTrue.getAdditionalPropertiesIsAnyType()); mapWithAddPropsFalse = co.responses.get(2); - assertEquals(mapWithAddPropsFalse.getAdditionalProperties(), null); - assertEquals(mapWithAddPropsFalse.getAdditionalPropertiesIsAnyType(), false); + assertNull(mapWithAddPropsFalse.getAdditionalProperties()); + assertFalse(mapWithAddPropsFalse.getAdditionalPropertiesIsAnyType()); mapWithAddPropsSchema = co.responses.get(3); assertEquals(mapWithAddPropsSchema.getAdditionalProperties(), stringCp); - assertEquals(mapWithAddPropsSchema.getAdditionalPropertiesIsAnyType(), false); + assertFalse(mapWithAddPropsSchema.getAdditionalPropertiesIsAnyType()); path = "/additional_properties/"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); mapWithAddPropsUnset = co.responses.get(0); assertEquals(mapWithAddPropsUnset.getAdditionalProperties(), anyTypeSchema); - assertEquals(mapWithAddPropsUnset.getAdditionalPropertiesIsAnyType(), true); + assertTrue(mapWithAddPropsUnset.getAdditionalPropertiesIsAnyType()); mapWithAddPropsTrue = co.responses.get(1); assertEquals(mapWithAddPropsTrue.getAdditionalProperties(), anyTypeSchema); - assertEquals(mapWithAddPropsTrue.getAdditionalPropertiesIsAnyType(), true); + assertTrue(mapWithAddPropsTrue.getAdditionalPropertiesIsAnyType()); mapWithAddPropsFalse = co.responses.get(2); - assertEquals(mapWithAddPropsFalse.getAdditionalProperties(), null); - assertEquals(mapWithAddPropsFalse.getAdditionalPropertiesIsAnyType(), false); + assertNull(mapWithAddPropsFalse.getAdditionalProperties()); + assertFalse(mapWithAddPropsFalse.getAdditionalPropertiesIsAnyType()); mapWithAddPropsSchema = co.responses.get(3); assertEquals(mapWithAddPropsSchema.getAdditionalProperties(), stringCp); - assertEquals(mapWithAddPropsSchema.getAdditionalPropertiesIsAnyType(), false); + assertFalse(mapWithAddPropsSchema.getAdditionalPropertiesIsAnyType()); if (isGenerateAliasAsModel) { // restore the setting GlobalSettings.setProperty("generateAliasAsModel", "true"); @@ -2745,31 +2745,31 @@ public class DefaultCodegenTest { modelName = "DateWithValidation"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.isString, false); - assertEquals(cm.isDate, true); + assertFalse(cm.isString); + assertTrue(cm.isDate); modelName = "NullModel"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.isNull, true); + assertTrue(cm.isNull); modelName = "ObjectWithTypeNullProperties"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.getVars().get(0).isNull, true); - assertEquals(cm.getVars().get(1).getItems().isNull, true); - assertEquals(cm.getAdditionalProperties().isNull, true); + assertTrue(cm.getVars().get(0).isNull); + assertTrue(cm.getVars().get(1).getItems().isNull); + assertTrue(cm.getAdditionalProperties().isNull); modelName = "ArrayOfNulls"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.getItems().isNull, true); + assertTrue(cm.getItems().isNull); modelName = "ObjectWithDateWithValidation"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.getVars().get(0).isString, false); - assertEquals(cm.getVars().get(0).isDate, true); + assertFalse(cm.getVars().get(0).isString); + assertTrue(cm.getVars().get(0).isDate); String path; Operation operation; @@ -2778,68 +2778,68 @@ public class DefaultCodegenTest { path = "/ref_date_with_validation/{date}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); - assertEquals(co.pathParams.get(0).isString, false); - assertEquals(co.pathParams.get(0).isDate, true); - assertEquals(co.bodyParams.get(0).isString, false); - assertEquals(co.bodyParams.get(0).isDate, true); - assertEquals(co.responses.get(0).isString, false); - assertEquals(co.responses.get(0).isDate, true); + assertFalse(co.pathParams.get(0).isString); + assertTrue(co.pathParams.get(0).isDate); + assertFalse(co.bodyParams.get(0).isString); + assertTrue(co.bodyParams.get(0).isDate); + assertFalse(co.responses.get(0).isString); + assertTrue(co.responses.get(0).isDate); path = "/date_with_validation/{date}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); - assertEquals(co.pathParams.get(0).isString, false); - assertEquals(co.pathParams.get(0).isDate, true); - assertEquals(co.bodyParams.get(0).isString, false); - assertEquals(co.bodyParams.get(0).isDate, true); - assertEquals(co.responses.get(0).isString, false); - assertEquals(co.responses.get(0).isDate, true); + assertFalse(co.pathParams.get(0).isString); + assertTrue(co.pathParams.get(0).isDate); + assertFalse(co.bodyParams.get(0).isString); + assertTrue(co.bodyParams.get(0).isDate); + assertFalse(co.responses.get(0).isString); + assertTrue(co.responses.get(0).isDate); modelName = "DateTimeWithValidation"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.isString, false); - assertEquals(cm.isDateTime, true); + assertFalse(cm.isString); + assertTrue(cm.isDateTime); modelName = "ObjectWithDateTimeWithValidation"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.getVars().get(0).isString, false); - assertEquals(cm.getVars().get(0).isDateTime, true); + assertFalse(cm.getVars().get(0).isString); + assertTrue(cm.getVars().get(0).isDateTime); path = "/ref_date_time_with_validation/{dateTime}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); - assertEquals(co.pathParams.get(0).isString, false); - assertEquals(co.pathParams.get(0).isDateTime, true); - assertEquals(co.bodyParams.get(0).isString, false); - assertEquals(co.bodyParams.get(0).isDateTime, true); - assertEquals(co.responses.get(0).isString, false); - assertEquals(co.responses.get(0).isDateTime, true); + assertFalse(co.pathParams.get(0).isString); + assertTrue(co.pathParams.get(0).isDateTime); + assertFalse(co.bodyParams.get(0).isString); + assertTrue(co.bodyParams.get(0).isDateTime); + assertFalse(co.responses.get(0).isString); + assertTrue(co.responses.get(0).isDateTime); path = "/date_time_with_validation/{dateTime}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); - assertEquals(co.pathParams.get(0).isString, false); - assertEquals(co.pathParams.get(0).isDateTime, true); - assertEquals(co.bodyParams.get(0).isString, false); - assertEquals(co.bodyParams.get(0).isDateTime, true); - assertEquals(co.responses.get(0).isString, false); - assertEquals(co.responses.get(0).isDateTime, true); + assertFalse(co.pathParams.get(0).isString); + assertTrue(co.pathParams.get(0).isDateTime); + assertFalse(co.bodyParams.get(0).isString); + assertTrue(co.bodyParams.get(0).isDateTime); + assertFalse(co.responses.get(0).isString); + assertTrue(co.responses.get(0).isDateTime); path = "/null/{param}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); - assertEquals(co.pathParams.get(0).isNull, true); - assertEquals(co.bodyParams.get(0).isNull, true); - assertEquals(co.responses.get(0).isNull, true); + assertTrue(co.pathParams.get(0).isNull); + assertTrue(co.bodyParams.get(0).isNull); + assertTrue(co.responses.get(0).isNull); path = "/ref_null/{param}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); - assertEquals(co.pathParams.get(0).isNull, true); - assertEquals(co.bodyParams.get(0).isNull, true); - assertEquals(co.responses.get(0).isNull, true); + assertTrue(co.pathParams.get(0).isNull); + assertTrue(co.bodyParams.get(0).isNull); + assertTrue(co.responses.get(0).isNull); } @Test @@ -2906,7 +2906,7 @@ public class DefaultCodegenTest { for (String modelName : modelNames) { sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.getHasValidation(), true); + assertTrue(cm.getHasValidation()); } } @@ -2923,7 +2923,7 @@ public class DefaultCodegenTest { List props = cm.getVars(); assertEquals(props.size(), 50); for (CodegenProperty prop : props) { - assertEquals(prop.getHasValidation(), true); + assertTrue(prop.getHasValidation()); } } @@ -2939,7 +2939,7 @@ public class DefaultCodegenTest { List params = co.queryParams; assertEquals(params.size(), 50); for (CodegenParameter param : params) { - assertEquals(param.getHasValidation(), true); + assertTrue(param.getHasValidation()); } } @@ -2955,7 +2955,7 @@ public class DefaultCodegenTest { List params = co.headerParams; assertEquals(params.size(), 50); for (CodegenParameter param : params) { - assertEquals(param.getHasValidation(), true); + assertTrue(param.getHasValidation()); } } @@ -2971,7 +2971,7 @@ public class DefaultCodegenTest { List params = co.cookieParams; assertEquals(params.size(), 50); for (CodegenParameter param : params) { - assertEquals(param.getHasValidation(), true); + assertTrue(param.getHasValidation()); } } @@ -2987,7 +2987,7 @@ public class DefaultCodegenTest { List params = co.pathParams; assertEquals(params.size(), 50); for (CodegenParameter param : params) { - assertEquals(param.getHasValidation(), true); + assertTrue(param.getHasValidation()); } } @@ -3058,8 +3058,8 @@ public class DefaultCodegenTest { path = "/"+modelName; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); - assertEquals(co.bodyParam.getHasValidation(), true); - assertEquals(co.responses.get(0).getHasValidation(), true); + assertTrue(co.bodyParam.getHasValidation()); + assertTrue(co.responses.get(0).getHasValidation()); } } @@ -3102,7 +3102,7 @@ public class DefaultCodegenTest { assertEquals(co.bodyParams.get(0).requiredVars, requiredVars); // CodegenOperation puts the inline schema into schemas and refs it - assertEquals(co.responses.get(0).isModel, true); + assertTrue(co.responses.get(0).isModel); assertEquals(co.responses.get(0).baseType, "objectData"); modelName = "objectData"; sc = openAPI.getComponents().getSchemas().get(modelName); @@ -3115,7 +3115,7 @@ public class DefaultCodegenTest { sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); CodegenProperty cp = cm.getVars().get(0); - assertEquals(cp.isModel, true); + assertTrue(cp.isModel); assertEquals(cp.complexType, "objectData"); } @@ -3141,7 +3141,7 @@ public class DefaultCodegenTest { for (String modelName : modelNames) { sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.getHasVars(), false); + assertFalse(cm.getHasVars()); } modelNames = Arrays.asList( @@ -3153,7 +3153,7 @@ public class DefaultCodegenTest { for (String modelName : modelNames) { sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.getHasVars(), true); + assertTrue(cm.getHasVars()); } } @@ -3177,19 +3177,19 @@ public class DefaultCodegenTest { for (String modelName : modelNames) { sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.vars.get(0).getHasVars(), false); + assertFalse(cm.vars.get(0).getHasVars()); } String modelName; modelName = "ArrayWithObjectWithPropsInItems"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.getItems().getHasVars(), true); + assertTrue(cm.getItems().getHasVars()); modelName = "ObjectWithObjectWithPropsInAdditionalProperties"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.getAdditionalProperties().getHasVars(), true); + assertTrue(cm.getAdditionalProperties().getHasVars()); } @Test @@ -3206,14 +3206,14 @@ public class DefaultCodegenTest { path = "/array_with_validations_in_items/{items}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); - assertEquals(co.pathParams.get(0).getHasVars(), false); - assertEquals(co.bodyParam.getHasVars(), false); + assertFalse(co.pathParams.get(0).getHasVars()); + assertFalse(co.bodyParam.getHasVars()); path = "/object_with_optional_and_required_props/{objectData}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); - assertEquals(co.pathParams.get(0).getHasVars(), true); - assertEquals(co.bodyParam.getHasVars(), true); + assertTrue(co.pathParams.get(0).getHasVars()); + assertTrue(co.bodyParam.getHasVars()); } @Test @@ -3230,13 +3230,13 @@ public class DefaultCodegenTest { path = "/additional_properties/"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); - assertEquals(co.responses.get(0).getHasVars(), false); + assertFalse(co.responses.get(0).getHasVars()); path = "/object_with_optional_and_required_props/{objectData}"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); // does not have vars because the inline schema was extracted into a component ref - assertEquals(co.responses.get(0).getHasVars(), false); + assertFalse(co.responses.get(0).getHasVars()); } @Test @@ -3268,7 +3268,7 @@ public class DefaultCodegenTest { for (String modelName : modelNamesWithoutRequired) { sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.getHasRequired(), false); + assertFalse(cm.getHasRequired()); } List modelNamesWithRequired = Arrays.asList( @@ -3284,7 +3284,7 @@ public class DefaultCodegenTest { for (String modelName : modelNamesWithRequired) { sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.getHasRequired(), true); + assertTrue(cm.getHasRequired()); } } @@ -3328,12 +3328,12 @@ public class DefaultCodegenTest { for (CodegenProperty var : cm.getVars()) { boolean hasRequired = var.getHasRequired(); if (modelNamesWithoutRequired.contains(var.name)) { - assertEquals(hasRequired, false); + assertFalse(hasRequired); } else if (modelNamesWithRequired.contains(var.name)) { - assertEquals(hasRequired, true); + assertTrue(hasRequired); } else { // All variables must be in the above sets - assertEquals(true, false); + fail(); } } } @@ -3378,12 +3378,12 @@ public class DefaultCodegenTest { for (CodegenParameter param : co.pathParams) { boolean hasRequired = param.getHasRequired(); if (modelNamesWithoutRequired.contains(param.baseName)) { - assertEquals(hasRequired, false); + assertFalse(hasRequired); } else if (modelNamesWithRequired.contains(param.baseName)) { - assertEquals(hasRequired, true); + assertTrue(hasRequired); } else { // All variables must be in the above sets - assertEquals(true, false); + fail(); } } } @@ -3428,12 +3428,12 @@ public class DefaultCodegenTest { for (CodegenResponse cr : co.responses) { boolean hasRequired = cr.getHasRequired(); if (modelNamesWithoutRequired.contains(cr.message)) { - assertEquals(hasRequired, false); + assertFalse(hasRequired); } else if (modelNamesWithRequired.contains(cr.message)) { - assertEquals(hasRequired, true); + assertTrue(hasRequired); } else { // All variables must be in the above sets - assertEquals(true, false); + fail(); } } } @@ -3452,50 +3452,50 @@ public class DefaultCodegenTest { modelName = "UnboundedInteger"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.isUnboundedInteger, true); - assertEquals(cm.isInteger, true); - assertEquals(cm.isShort, false); - assertEquals(cm.isLong, false); + assertTrue(cm.isUnboundedInteger); + assertTrue(cm.isInteger); + assertFalse(cm.isShort); + assertFalse(cm.isLong); modelName = "Int32"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.isUnboundedInteger, false); - assertEquals(cm.isInteger, true); - assertEquals(cm.isShort, true); - assertEquals(cm.isLong, false); + assertFalse(cm.isUnboundedInteger); + assertTrue(cm.isInteger); + assertTrue(cm.isShort); + assertFalse(cm.isLong); modelName = "Int64"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.isUnboundedInteger, false); - assertEquals(cm.isInteger, false); - assertEquals(cm.isShort, false); - assertEquals(cm.isLong, true); + assertFalse(cm.isUnboundedInteger); + assertFalse(cm.isInteger); + assertFalse(cm.isShort); + assertTrue(cm.isLong); modelName = "ObjectModelWithIntegerProps"; sc = openAPI.getComponents().getSchemas().get(modelName); cm = codegen.fromModel(modelName, sc); - assertEquals(cm.isUnboundedInteger, false); - assertEquals(cm.isInteger, false); - assertEquals(cm.isShort, false); - assertEquals(cm.isLong, false); + assertFalse(cm.isUnboundedInteger); + assertFalse(cm.isInteger); + assertFalse(cm.isShort); + assertFalse(cm.isLong); CodegenProperty cp; cp = cm.vars.get(0); - assertEquals(cp.isUnboundedInteger, true); - assertEquals(cp.isInteger, true); - assertEquals(cp.isShort, false); - assertEquals(cp.isLong, false); + assertTrue(cp.isUnboundedInteger); + assertTrue(cp.isInteger); + assertFalse(cp.isShort); + assertFalse(cp.isLong); cp = cm.vars.get(1); - assertEquals(cp.isUnboundedInteger, false); - assertEquals(cp.isInteger, true); - assertEquals(cp.isShort, true); - assertEquals(cp.isLong, false); + assertFalse(cp.isUnboundedInteger); + assertTrue(cp.isInteger); + assertTrue(cp.isShort); + assertFalse(cp.isLong); cp = cm.vars.get(2); - assertEquals(cp.isUnboundedInteger, false); - assertEquals(cp.isInteger, false); - assertEquals(cp.isShort, false); - assertEquals(cp.isLong, true); + assertFalse(cp.isUnboundedInteger); + assertFalse(cp.isInteger); + assertFalse(cp.isShort); + assertTrue(cp.isLong); String path; Operation operation; @@ -3507,58 +3507,58 @@ public class DefaultCodegenTest { operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); cpa = co.pathParams.get(0); - assertEquals(cpa.isUnboundedInteger, true); - assertEquals(cpa.isInteger, true); - assertEquals(cpa.isShort, false); - assertEquals(cpa.isLong, false); + assertTrue(cpa.isUnboundedInteger); + assertTrue(cpa.isInteger); + assertFalse(cpa.isShort); + assertFalse(cpa.isLong); cpa = co.bodyParam; - assertEquals(cpa.isUnboundedInteger, true); - assertEquals(cpa.isInteger, true); - assertEquals(cpa.isShort, false); - assertEquals(cpa.isLong, false); + assertTrue(cpa.isUnboundedInteger); + assertTrue(cpa.isInteger); + assertFalse(cpa.isShort); + assertFalse(cpa.isLong); cr = co.responses.get(0); - assertEquals(cr.isUnboundedInteger, true); - assertEquals(cr.isInteger, true); - assertEquals(cr.isShort, false); - assertEquals(cr.isLong, false); + assertTrue(cr.isUnboundedInteger); + assertTrue(cr.isInteger); + assertFalse(cr.isShort); + assertFalse(cr.isLong); path = "/Int32"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); cpa = co.pathParams.get(0); - assertEquals(cpa.isUnboundedInteger, false); - assertEquals(cpa.isInteger, true); - assertEquals(cpa.isShort, true); - assertEquals(cpa.isLong, false); + assertFalse(cpa.isUnboundedInteger); + assertTrue(cpa.isInteger); + assertTrue(cpa.isShort); + assertFalse(cpa.isLong); cpa = co.bodyParam; - assertEquals(cpa.isUnboundedInteger, false); - assertEquals(cpa.isInteger, true); - assertEquals(cpa.isShort, true); - assertEquals(cpa.isLong, false); + assertFalse(cpa.isUnboundedInteger); + assertTrue(cpa.isInteger); + assertTrue(cpa.isShort); + assertFalse(cpa.isLong); cr = co.responses.get(0); - assertEquals(cr.isUnboundedInteger, false); - assertEquals(cr.isInteger, true); - assertEquals(cr.isShort, true); - assertEquals(cr.isLong, false); + assertFalse(cr.isUnboundedInteger); + assertTrue(cr.isInteger); + assertTrue(cr.isShort); + assertFalse(cr.isLong); path = "/Int64"; operation = openAPI.getPaths().get(path).getPost(); co = codegen.fromOperation(path, "POST", operation, null); cpa = co.pathParams.get(0); - assertEquals(cpa.isUnboundedInteger, false); - assertEquals(cpa.isInteger, false); - assertEquals(cpa.isShort, false); - assertEquals(cpa.isLong, true); + assertFalse(cpa.isUnboundedInteger); + assertFalse(cpa.isInteger); + assertFalse(cpa.isShort); + assertTrue(cpa.isLong); cpa = co.bodyParam; - assertEquals(cpa.isUnboundedInteger, false); - assertEquals(cpa.isInteger, false); - assertEquals(cpa.isShort, false); - assertEquals(cpa.isLong, true); + assertFalse(cpa.isUnboundedInteger); + assertFalse(cpa.isInteger); + assertFalse(cpa.isShort); + assertTrue(cpa.isLong); cr = co.responses.get(0); - assertEquals(cr.isUnboundedInteger, false); - assertEquals(cr.isInteger, false); - assertEquals(cr.isShort, false); - assertEquals(cr.isLong, true); + assertFalse(cr.isUnboundedInteger); + assertFalse(cr.isInteger); + assertFalse(cr.isShort); + assertTrue(cr.isLong); } @Test diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/android/AndroidClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/android/AndroidClientCodegenTest.java index 214df7effa4..f5ede0eb5a9 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/android/AndroidClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/android/AndroidClientCodegenTest.java @@ -30,7 +30,7 @@ public class AndroidClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "org.openapitools.client.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "org.openapitools.client.model"); Assert.assertEquals(codegen.apiPackage(), "org.openapitools.client.api"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpClientCodegenTest.java index 96555ccb25b..5529f6d611f 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpClientCodegenTest.java @@ -30,7 +30,7 @@ public class CSharpClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); } @Test @@ -40,7 +40,7 @@ public class CSharpClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -50,7 +50,7 @@ public class CSharpClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java index b387a0a2986..5384570b9d1 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java @@ -78,7 +78,7 @@ public class CSharpModelTest { final CodegenProperty property = generated.vars.get(1); Assert.assertEquals(property.baseName, "examples"); Assert.assertEquals(property.name, "Examples"); - Assert.assertEquals(property.defaultValue, null); + Assert.assertNull(property.defaultValue); Assert.assertEquals(property.dataType, "Collection"); Assert.assertEquals(property.baseType, "Collection"); Assert.assertEquals(property.containerType, "array"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/DartClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/DartClientCodegenTest.java index d69f5f71122..a49ee4e825c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/DartClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/DartClientCodegenTest.java @@ -38,7 +38,7 @@ public class DartClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); } @Test @@ -48,7 +48,7 @@ public class DartClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -58,7 +58,7 @@ public class DartClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -77,11 +77,11 @@ public class DartClientCodegenTest { Assert.fail(errorString, e); } - Assert.assertEquals(reservedWordsList.size() > 20, true); - Assert.assertEquals(codegen.reservedWords().size() == reservedWordsList.size(), true); + Assert.assertTrue(reservedWordsList.size() > 20); + Assert.assertEquals(codegen.reservedWords().size(), reservedWordsList.size()); for(String keyword : reservedWordsList) { // reserved words are stored in lowercase - Assert.assertEquals(codegen.reservedWords().contains(keyword.toLowerCase(Locale.ROOT)), true, String.format(Locale.ROOT, "%s, part of %s, was not found in %s", keyword, reservedWordsList, codegen.reservedWords().toString())); + Assert.assertTrue(codegen.reservedWords().contains(keyword.toLowerCase(Locale.ROOT)), String.format(Locale.ROOT, "%s, part of %s, was not found in %s", keyword, reservedWordsList, codegen.reservedWords().toString())); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/dio/DartDioClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/dio/DartDioClientCodegenTest.java index e0ad1e14e8a..95a47ba87fe 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/dio/DartDioClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/dio/DartDioClientCodegenTest.java @@ -37,7 +37,7 @@ public class DartDioClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); } @Test @@ -47,7 +47,7 @@ public class DartDioClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -57,7 +57,7 @@ public class DartDioClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -74,11 +74,11 @@ public class DartDioClientCodegenTest { Assert.fail(errorString, e); } - Assert.assertEquals(reservedWordsList.size() > 20, true); - Assert.assertEquals(codegen.reservedWords().size() == reservedWordsList.size(), true); + Assert.assertTrue(reservedWordsList.size() > 20); + Assert.assertEquals(codegen.reservedWords().size(), reservedWordsList.size()); for(String keyword : reservedWordsList) { // reserved words are stored in lowercase - Assert.assertEquals(codegen.reservedWords().contains(keyword.toLowerCase(Locale.ROOT)), true, String.format(Locale.ROOT, "%s, part of %s, was not found in %s", keyword, reservedWordsList, codegen.reservedWords().toString())); + Assert.assertTrue(codegen.reservedWords().contains(keyword.toLowerCase(Locale.ROOT)), String.format(Locale.ROOT, "%s, part of %s, was not found in %s", keyword, reservedWordsList, codegen.reservedWords().toString())); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/dio/DartDioNextClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/dio/DartDioNextClientCodegenTest.java index 3886a252193..805d9dd03e3 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/dio/DartDioNextClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/dart/dio/DartDioNextClientCodegenTest.java @@ -38,7 +38,7 @@ public class DartDioNextClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); } @Test @@ -48,7 +48,7 @@ public class DartDioNextClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -58,7 +58,7 @@ public class DartDioNextClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -75,11 +75,11 @@ public class DartDioNextClientCodegenTest { Assert.fail(errorString, e); } - Assert.assertEquals(reservedWordsList.size() > 20, true); - Assert.assertEquals(codegen.reservedWords().size() == reservedWordsList.size(), true); + Assert.assertTrue(reservedWordsList.size() > 20); + Assert.assertEquals(codegen.reservedWords().size(), reservedWordsList.size()); for(String keyword : reservedWordsList) { // reserved words are stored in lowercase - Assert.assertEquals(codegen.reservedWords().contains(keyword.toLowerCase(Locale.ROOT)), true, String.format(Locale.ROOT, "%s, part of %s, was not found in %s", keyword, reservedWordsList, codegen.reservedWords().toString())); + Assert.assertTrue(codegen.reservedWords().contains(keyword.toLowerCase(Locale.ROOT)), String.format(Locale.ROOT, "%s, part of %s, was not found in %s", keyword, reservedWordsList, codegen.reservedWords().toString())); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/eiffel/AbstractEiffelCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/eiffel/AbstractEiffelCodegenTest.java index 1a2bcaeeb1b..e0b2dc42507 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/eiffel/AbstractEiffelCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/eiffel/AbstractEiffelCodegenTest.java @@ -31,7 +31,7 @@ public class AbstractEiffelCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -41,7 +41,7 @@ public class AbstractEiffelCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); } @Test @@ -51,7 +51,7 @@ public class AbstractEiffelCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); } private static class P_AbstractEiffelCodegen extends AbstractEiffelCodegen { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/eiffel/EiffelClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/eiffel/EiffelClientCodegenTest.java index 9cbea46c024..f470a48e3ce 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/eiffel/EiffelClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/eiffel/EiffelClientCodegenTest.java @@ -30,7 +30,7 @@ public class EiffelClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); } @Test @@ -40,7 +40,7 @@ public class EiffelClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -50,7 +50,7 @@ public class EiffelClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/fsharp/FSharpServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/fsharp/FSharpServerCodegenTest.java index 47c23b2ea73..fb822ec2df8 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/fsharp/FSharpServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/fsharp/FSharpServerCodegenTest.java @@ -65,7 +65,7 @@ public class FSharpServerCodegenTest { Object[] keys = sorted.keySet().toArray(); - Assert.assertTrue("wheel".equals(keys[0])); + Assert.assertEquals(keys[0], "wheel"); Assert.assertTrue("bike".equals(keys[1]) || "car".equals(keys[1])); Assert.assertTrue("bike".equals(keys[2]) || "car".equals(keys[2])); Assert.assertEquals(keys[3], "parent"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/AbstractGoCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/AbstractGoCodegenTest.java index f5b730e1ccf..4bb8762268d 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/AbstractGoCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/AbstractGoCodegenTest.java @@ -38,7 +38,7 @@ public class AbstractGoCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -48,7 +48,7 @@ public class AbstractGoCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); } @Test @@ -58,7 +58,7 @@ public class AbstractGoCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); } @Test diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java index 9c5763e9e0a..b6df5e72e00 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java @@ -36,7 +36,7 @@ public class GoClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); } @Test @@ -46,7 +46,7 @@ public class GoClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -56,7 +56,7 @@ public class GoClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test(description = "test example value for body parameter") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/haskellhttpclient/HaskellHttpClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/haskellhttpclient/HaskellHttpClientCodegenTest.java index 7c5e50459a0..403000c1955 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/haskellhttpclient/HaskellHttpClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/haskellhttpclient/HaskellHttpClientCodegenTest.java @@ -30,7 +30,7 @@ public class HaskellHttpClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); } @Test @@ -40,7 +40,7 @@ public class HaskellHttpClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } @Test @@ -50,7 +50,7 @@ public class HaskellHttpClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/haskellservant/HaskellModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/haskellservant/HaskellModelTest.java index 55896b6ecfa..82e4f915fde 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/haskellservant/HaskellModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/haskellservant/HaskellModelTest.java @@ -24,6 +24,5 @@ public class HaskellModelTest { @Test(description = "convert a haskell model with dots") public void modelTest() { - Assert.assertEquals(true, true); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java index 362f4cc3da0..5cfeb03d57f 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java @@ -131,7 +131,7 @@ public class AbstractJavaCodegenTest { codegen.preprocessOpenAPI(openAPI); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "invalidPackageName"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "invalidPackageName"); Assert.assertEquals(codegen.apiPackage(), "invalidPackageName"); @@ -160,7 +160,7 @@ public class AbstractJavaCodegenTest { codegen.preprocessOpenAPI(openAPI); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "xyz.yyyyy.zzzzzzz.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "xyz.yyyyy.zzzzzzz.model"); Assert.assertEquals(codegen.apiPackage(), "xyz.yyyyy.zzzzzzz.api"); @@ -188,7 +188,7 @@ public class AbstractJavaCodegenTest { Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "xyz.yyyyy.model.oooooo"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "xyz.yyyyy.model.oooooo"); Assert.assertEquals(codegen.apiPackage(), "xyz.yyyyy.api.oooooo"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaCXFClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaCXFClientCodegenTest.java index 02f3d81f6ff..9f1bc6f7e60 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaCXFClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaCXFClientCodegenTest.java @@ -79,7 +79,7 @@ public class JavaCXFClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "org.openapitools.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "org.openapitools.model"); @@ -97,7 +97,7 @@ public class JavaCXFClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "org.openapitools.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "org.openapitools.model"); Assert.assertEquals(codegen.apiPackage(), "org.openapitools.api"); @@ -114,7 +114,7 @@ public class JavaCXFClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "org.openapitools.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "org.openapitools.model"); Assert.assertEquals(codegen.apiPackage(), "org.openapitools.api"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index 3ead6f31f9e..48fa9cadcfb 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -146,7 +146,7 @@ public class JavaClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "org.openapitools.client.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "org.openapitools.client.model"); @@ -168,7 +168,7 @@ public class JavaClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "xyz.yyyyy.zzzzzzz.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "xyz.yyyyy.zzzzzzz.model"); Assert.assertEquals(codegen.apiPackage(), "xyz.yyyyy.zzzzzzz.api"); @@ -190,7 +190,7 @@ public class JavaClientCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "xyz.yyyyy.zzzzzzz.mmmmm.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "xyz.yyyyy.zzzzzzz.mmmmm.model"); Assert.assertEquals(codegen.apiPackage(), "xyz.yyyyy.zzzzzzz.aaaaa.api"); @@ -526,10 +526,10 @@ public class JavaClientCodegenTest { ApiResponse ok_200 = openAPI.getComponents().getResponses().get("OK_200"); CodegenResponse response = codegen.fromResponse("200", ok_200); - Assert.assertEquals(1, response.headers.size()); + Assert.assertEquals(response.headers.size(), 1); CodegenProperty header = response.headers.get(0); - Assert.assertEquals("UUID", header.dataType); - Assert.assertEquals("Request", header.baseName); + Assert.assertEquals(header.dataType, "UUID"); + Assert.assertEquals(header.baseName, "Request"); } @Test @@ -746,9 +746,9 @@ public class JavaClientCodegenTest { @Test public void escapeName() { final JavaClientCodegen codegen = new JavaClientCodegen(); - assertEquals("_default", codegen.toApiVarName("Default")); - assertEquals("_int", codegen.toApiVarName("int")); - assertEquals("pony", codegen.toApiVarName("pony")); + assertEquals(codegen.toApiVarName("Default"), "_default"); + assertEquals(codegen.toApiVarName("int"), "_int"); + assertEquals(codegen.toApiVarName("pony"), "pony"); } @Test diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelEnumTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelEnumTest.java index f108ce00b50..11c39751450 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelEnumTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelEnumTest.java @@ -52,7 +52,7 @@ public class JavaModelEnumTest { Assert.assertEquals(enumVar.dataType, "String"); Assert.assertEquals(enumVar.datatypeWithEnum, "NameEnum"); Assert.assertEquals(enumVar.name, "name"); - Assert.assertEquals(enumVar.defaultValue, null); + Assert.assertNull(enumVar.defaultValue); Assert.assertEquals(enumVar.baseType, "String"); Assert.assertTrue(enumVar.isEnum); } @@ -83,7 +83,7 @@ public class JavaModelEnumTest { Assert.assertEquals(enumVar.mostInnerItems.dataType, "String"); Assert.assertEquals(enumVar.mostInnerItems.datatypeWithEnum, "NameEnum"); Assert.assertEquals(enumVar.mostInnerItems.name, "name"); - Assert.assertEquals(enumVar.mostInnerItems.defaultValue, null); + Assert.assertNull(enumVar.mostInnerItems.defaultValue); Assert.assertEquals(enumVar.mostInnerItems.baseType, "String"); Assert.assertEquals(enumVar.mostInnerItems.baseType, enumVar.items.baseType); @@ -116,7 +116,7 @@ public class JavaModelEnumTest { Assert.assertEquals(enumVar.mostInnerItems.dataType, "String"); Assert.assertEquals(enumVar.mostInnerItems.datatypeWithEnum, "NameEnum"); Assert.assertEquals(enumVar.mostInnerItems.name, "name"); - Assert.assertEquals(enumVar.mostInnerItems.defaultValue, null); + Assert.assertNull(enumVar.mostInnerItems.defaultValue); Assert.assertEquals(enumVar.mostInnerItems.baseType, "String"); Assert.assertEquals(enumVar.mostInnerItems.baseType, enumVar.items.items.baseType); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java index 74beee0159a..8827229bfad 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java @@ -71,7 +71,7 @@ public class JavaModelTest { Assert.assertEquals(property1.setter, "setId"); Assert.assertEquals(property1.dataType, "Long"); Assert.assertEquals(property1.name, "id"); - Assert.assertEquals(property1.defaultValue, null); + Assert.assertNull(property1.defaultValue); Assert.assertEquals(property1.baseType, "Long"); Assert.assertTrue(property1.required); Assert.assertFalse(property1.isContainer); @@ -84,7 +84,7 @@ public class JavaModelTest { Assert.assertEquals(property2.setter, "setName"); Assert.assertEquals(property2.dataType, "String"); Assert.assertEquals(property2.name, "name"); - Assert.assertEquals(property2.defaultValue, null); + Assert.assertNull(property2.defaultValue); Assert.assertEquals(property2.baseType, "String"); Assert.assertEquals(property2.example, "Tony"); Assert.assertTrue(property2.required); @@ -98,7 +98,7 @@ public class JavaModelTest { Assert.assertEquals(property3.setter, "setCreatedAt"); Assert.assertEquals(property3.dataType, "Date"); Assert.assertEquals(property3.name, "createdAt"); - Assert.assertEquals(property3.defaultValue, null); + Assert.assertNull(property3.defaultValue); Assert.assertEquals(property3.baseType, "Date"); Assert.assertFalse(property3.required); Assert.assertFalse(property3.isContainer); @@ -274,7 +274,7 @@ public class JavaModelTest { Assert.assertEquals(property.setter, "setAtSomeColonRestrictedPercentCharactersHashToExclamationHandlePlus"); Assert.assertEquals(property.dataType, "Boolean"); Assert.assertEquals(property.name, "atSomeColonRestrictedPercentCharactersHashToExclamationHandlePlus"); - Assert.assertEquals(property.defaultValue, null); + Assert.assertNull(property.defaultValue); Assert.assertEquals(property.baseType, "Boolean"); Assert.assertFalse(property.required); Assert.assertFalse(property.isContainer); @@ -491,7 +491,7 @@ public class JavaModelTest { Assert.assertEquals(property.setter, "setNAME"); Assert.assertEquals(property.dataType, "String"); Assert.assertEquals(property.name, "NAME"); - Assert.assertEquals(property.defaultValue, null); + Assert.assertNull(property.defaultValue); Assert.assertEquals(property.baseType, "String"); Assert.assertTrue(property.required); Assert.assertFalse(property.isContainer); @@ -518,7 +518,7 @@ public class JavaModelTest { Assert.assertEquals(property.setter, "setNAME1"); Assert.assertEquals(property.dataType, "String"); Assert.assertEquals(property.name, "NAME1"); - Assert.assertEquals(property.defaultValue, null); + Assert.assertNull(property.defaultValue); Assert.assertEquals(property.baseType, "String"); Assert.assertTrue(property.required); Assert.assertFalse(property.isContainer); @@ -545,7 +545,7 @@ public class JavaModelTest { Assert.assertEquals(property.setter, "setpId"); Assert.assertEquals(property.dataType, "String"); Assert.assertEquals(property.name, "pId"); - Assert.assertEquals(property.defaultValue, null); + Assert.assertNull(property.defaultValue); Assert.assertEquals(property.baseType, "String"); Assert.assertTrue(property.required); Assert.assertFalse(property.isContainer); @@ -572,7 +572,7 @@ public class JavaModelTest { Assert.assertEquals(property.setter, "setAtTName"); Assert.assertEquals(property.dataType, "String"); Assert.assertEquals(property.name, "atTName"); - Assert.assertEquals(property.defaultValue, null); + Assert.assertNull(property.defaultValue); Assert.assertEquals(property.baseType, "String"); Assert.assertTrue(property.required); Assert.assertFalse(property.isContainer); @@ -599,7 +599,7 @@ public class JavaModelTest { Assert.assertEquals(property.setter, "setATTNAME"); Assert.assertEquals(property.dataType, "String"); Assert.assertEquals(property.name, "ATT_NAME"); - Assert.assertEquals(property.defaultValue, null); + Assert.assertNull(property.defaultValue); Assert.assertEquals(property.baseType, "String"); Assert.assertTrue(property.required); Assert.assertFalse(property.isContainer); @@ -668,7 +668,7 @@ public class JavaModelTest { Assert.assertEquals(property.setter, "setInputBinaryData"); Assert.assertEquals(property.dataType, "byte[]"); Assert.assertEquals(property.name, "inputBinaryData"); - Assert.assertEquals(property.defaultValue, null); + Assert.assertNull(property.defaultValue); Assert.assertEquals(property.baseType, "byte[]"); Assert.assertFalse(property.required); Assert.assertFalse(property.isContainer); @@ -694,7 +694,7 @@ public class JavaModelTest { Assert.assertEquals(property.setter, "setU"); Assert.assertEquals(property.dataType, "String"); Assert.assertEquals(property.name, "u"); - Assert.assertEquals(property.defaultValue, null); + Assert.assertNull(property.defaultValue); Assert.assertEquals(property.baseType, "String"); Assert.assertFalse(property.isContainer); } @@ -839,7 +839,7 @@ public class JavaModelTest { Assert.assertEquals(property2.setter, "setName"); Assert.assertEquals(property2.dataType, "String"); Assert.assertEquals(property2.name, "name"); - Assert.assertEquals(property2.defaultValue, null); + Assert.assertNull(property2.defaultValue); Assert.assertEquals(property2.baseType, "String"); Assert.assertEquals(property2.example, "Tony"); Assert.assertTrue(property2.required); @@ -854,7 +854,7 @@ public class JavaModelTest { Assert.assertEquals(property3.setter, "setCreatedAt"); Assert.assertEquals(property3.dataType, "Date"); Assert.assertEquals(property3.name, "createdAt"); - Assert.assertEquals(property3.defaultValue, null); + Assert.assertNull(property3.defaultValue); Assert.assertEquals(property3.baseType, "Date"); Assert.assertFalse(property3.required); Assert.assertFalse(property3.isContainer); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/AbstractJavaJAXRSServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/AbstractJavaJAXRSServerCodegenTest.java index 7aaf1ac6c38..bd10d0beffc 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/AbstractJavaJAXRSServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/AbstractJavaJAXRSServerCodegenTest.java @@ -51,7 +51,7 @@ public class AbstractJavaJAXRSServerCodegenTest { codegen.preprocessOpenAPI(openAPI); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "org.openapitools.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "org.openapitools.model"); Assert.assertEquals(codegen.apiPackage(), "org.openapitools.api"); @@ -71,7 +71,7 @@ public class AbstractJavaJAXRSServerCodegenTest { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "xx.yyyyyyyy.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "xx.yyyyyyyy.model"); Assert.assertEquals(codegen.apiPackage(), "xx.yyyyyyyy.api"); @@ -95,7 +95,7 @@ public class AbstractJavaJAXRSServerCodegenTest { codegen.preprocessOpenAPI(openAPI); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "xyz.yyyyy.mmmmm.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "xyz.yyyyy.mmmmm.model"); Assert.assertEquals(codegen.apiPackage(), "xyz.yyyyy.aaaaa.api"); From a5c98dd416ef6c3384f4876fc2786ca149a5276f Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sun, 4 Jul 2021 15:16:19 +0800 Subject: [PATCH 181/192] better null check to surpress sonarcloud warning (#9888) --- .../src/main/java/org/openapitools/codegen/DefaultCodegen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 68f8b7d3c31..72f6c72c016 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -2834,7 +2834,7 @@ public class DefaultCodegen implements CodegenConfig { "'{}' defines discriminator '{}', but the referenced AnyOf schema '{}' is missing {}", composedSchemaName, discPropName, modelName, discPropName); } - if (cp.dataType == null) { + if (cp != null && cp.dataType == null) { cp = thisCp; continue; } From 870c1e1894229acecc3e313ab35d437ab4675a07 Mon Sep 17 00:00:00 2001 From: Jens Fischer Date: Mon, 5 Jul 2021 02:57:40 +0200 Subject: [PATCH 182/192] [Java] [Native] Unify exception messages for async, add the status code (#9825) * [Java] [Native] Unify exception messages for async, add the status code The template has two methods for creating API exceptions, and the enhancements from #9169 didn't make it to the async version. - unify the signatures of the two methods (name, arguments) - make sure the sync version is not generated with asyncNative - extract the formatting logic into a common formatExceptionMessage() method - add the status code to the exception message as well, not just the body - shortened "call received non-success response" to a more concise "call failed with" * Treat an empty body the same as a null body Co-authored-by: Jens Fischer --- .../Java/libraries/native/api.mustache | 27 +++++++----- .../client/api/AnotherFakeApi.java | 17 +++----- .../org/openapitools/client/api/FakeApi.java | 17 +++----- .../client/api/FakeClassnameTags123Api.java | 17 +++----- .../org/openapitools/client/api/PetApi.java | 17 +++----- .../org/openapitools/client/api/StoreApi.java | 17 +++----- .../org/openapitools/client/api/UserApi.java | 17 +++----- .../client/api/AnotherFakeApi.java | 15 ++++--- .../org/openapitools/client/api/FakeApi.java | 41 ++++++++++-------- .../client/api/FakeClassnameTags123Api.java | 15 ++++--- .../org/openapitools/client/api/PetApi.java | 31 +++++++------ .../org/openapitools/client/api/StoreApi.java | 21 +++++---- .../org/openapitools/client/api/UserApi.java | 29 +++++++------ .../client/api/AnotherFakeApi.java | 15 ++++--- .../openapitools/client/api/DefaultApi.java | 15 ++++--- .../org/openapitools/client/api/FakeApi.java | 43 +++++++++++-------- .../client/api/FakeClassnameTags123Api.java | 15 ++++--- .../org/openapitools/client/api/PetApi.java | 31 +++++++------ .../org/openapitools/client/api/StoreApi.java | 21 +++++---- .../org/openapitools/client/api/UserApi.java | 29 +++++++------ 20 files changed, 251 insertions(+), 199 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache index e91e72f97b9..35922945360 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache @@ -57,20 +57,25 @@ public class {{classname}} { } {{#asyncNative}} - private ApiException getApiException(String operationId, HttpResponselocalVarResponse) { - return new ApiException(localVarResponse.statusCode(), - operationId + " call received non-success response", - localVarResponse.headers(), - localVarResponse.body()); + private ApiException getApiException(String operationId, HttpResponse response) { + String message = formatExceptionMessage(operationId, response.statusCode(), response.body()); + return new ApiException(response.statusCode(), message, response.headers(), response.body()); + } + {{/asyncNative}} + {{^asyncNative}} + + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { + String body = response.body() == null ? null : new String(response.body().readAllBytes()); + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); } {{/asyncNative}} - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { - String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } {{#operation}} @@ -215,7 +220,7 @@ public class {{classname}} { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "{{operationId}} call received non-success response"); + throw getApiException("{{operationId}}", localVarResponse); } return new ApiResponse<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>( localVarResponse.statusCode(), diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/AnotherFakeApi.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/AnotherFakeApi.java index f2247d141bb..59947067502 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/AnotherFakeApi.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/AnotherFakeApi.java @@ -60,19 +60,16 @@ public class AnotherFakeApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - private ApiException getApiException(String operationId, HttpResponselocalVarResponse) { - return new ApiException(localVarResponse.statusCode(), - operationId + " call received non-success response", - localVarResponse.headers(), - localVarResponse.body()); + private ApiException getApiException(String operationId, HttpResponse response) { + String message = formatExceptionMessage(operationId, response.statusCode(), response.body()); + return new ApiException(response.statusCode(), message, response.headers(), response.body()); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { - String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/FakeApi.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/FakeApi.java index 388dce55a87..c84924f6aba 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/FakeApi.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/FakeApi.java @@ -68,19 +68,16 @@ public class FakeApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - private ApiException getApiException(String operationId, HttpResponselocalVarResponse) { - return new ApiException(localVarResponse.statusCode(), - operationId + " call received non-success response", - localVarResponse.headers(), - localVarResponse.body()); + private ApiException getApiException(String operationId, HttpResponse response) { + String message = formatExceptionMessage(operationId, response.statusCode(), response.body()); + return new ApiException(response.statusCode(), message, response.headers(), response.body()); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { - String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java index f8076cd6914..ea9a7d97193 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java @@ -60,19 +60,16 @@ public class FakeClassnameTags123Api { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - private ApiException getApiException(String operationId, HttpResponselocalVarResponse) { - return new ApiException(localVarResponse.statusCode(), - operationId + " call received non-success response", - localVarResponse.headers(), - localVarResponse.body()); + private ApiException getApiException(String operationId, HttpResponse response) { + String message = formatExceptionMessage(operationId, response.statusCode(), response.body()); + return new ApiException(response.statusCode(), message, response.headers(), response.body()); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { - String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/PetApi.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/PetApi.java index 2dcd304b1f5..e65cb647aaf 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/PetApi.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/PetApi.java @@ -63,19 +63,16 @@ public class PetApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - private ApiException getApiException(String operationId, HttpResponselocalVarResponse) { - return new ApiException(localVarResponse.statusCode(), - operationId + " call received non-success response", - localVarResponse.headers(), - localVarResponse.body()); + private ApiException getApiException(String operationId, HttpResponse response) { + String message = formatExceptionMessage(operationId, response.statusCode(), response.body()); + return new ApiException(response.statusCode(), message, response.headers(), response.body()); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { - String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/StoreApi.java index ec19468ccef..82bb7296d85 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/StoreApi.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/StoreApi.java @@ -60,19 +60,16 @@ public class StoreApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - private ApiException getApiException(String operationId, HttpResponselocalVarResponse) { - return new ApiException(localVarResponse.statusCode(), - operationId + " call received non-success response", - localVarResponse.headers(), - localVarResponse.body()); + private ApiException getApiException(String operationId, HttpResponse response) { + String message = formatExceptionMessage(operationId, response.statusCode(), response.body()); + return new ApiException(response.statusCode(), message, response.headers(), response.body()); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { - String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** diff --git a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/UserApi.java b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/UserApi.java index ba2cad99cf8..3d9893a34f4 100644 --- a/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/UserApi.java +++ b/samples/client/petstore/java/native-async/src/main/java/org/openapitools/client/api/UserApi.java @@ -60,19 +60,16 @@ public class UserApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - private ApiException getApiException(String operationId, HttpResponselocalVarResponse) { - return new ApiException(localVarResponse.statusCode(), - operationId + " call received non-success response", - localVarResponse.headers(), - localVarResponse.body()); + private ApiException getApiException(String operationId, HttpResponse response) { + String message = formatExceptionMessage(operationId, response.statusCode(), response.body()); + return new ApiException(response.statusCode(), message, response.headers(), response.body()); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { - String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/AnotherFakeApi.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/AnotherFakeApi.java index 2c0088e76d8..e31f3cd51f9 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/AnotherFakeApi.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/AnotherFakeApi.java @@ -58,12 +58,17 @@ public class AnotherFakeApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -95,7 +100,7 @@ public class AnotherFakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "call123testSpecialTags call received non-success response"); + throw getApiException("call123testSpecialTags", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeApi.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeApi.java index 6d3b64d8344..d12c79a0c0d 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeApi.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeApi.java @@ -66,12 +66,17 @@ public class FakeApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -101,7 +106,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "createXmlItem call received non-success response"); + throw getApiException("createXmlItem", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -175,7 +180,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "fakeOuterBooleanSerialize call received non-success response"); + throw getApiException("fakeOuterBooleanSerialize", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -245,7 +250,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "fakeOuterCompositeSerialize call received non-success response"); + throw getApiException("fakeOuterCompositeSerialize", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -315,7 +320,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "fakeOuterNumberSerialize call received non-success response"); + throw getApiException("fakeOuterNumberSerialize", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -385,7 +390,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "fakeOuterStringSerialize call received non-success response"); + throw getApiException("fakeOuterStringSerialize", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -453,7 +458,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testBodyWithFileSchema call received non-success response"); + throw getApiException("testBodyWithFileSchema", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -527,7 +532,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testBodyWithQueryParams call received non-success response"); + throw getApiException("testBodyWithQueryParams", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -614,7 +619,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testClientModel call received non-success response"); + throw getApiException("testClientModel", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -712,7 +717,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testEndpointParameters call received non-success response"); + throw getApiException("testEndpointParameters", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -804,7 +809,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testEnumParameters call received non-success response"); + throw getApiException("testEnumParameters", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -927,7 +932,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testGroupParameters call received non-success response"); + throw getApiException("testGroupParameters", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -1096,7 +1101,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testInlineAdditionalProperties call received non-success response"); + throw getApiException("testInlineAdditionalProperties", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -1170,7 +1175,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testJsonFormData call received non-success response"); + throw getApiException("testJsonFormData", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -1248,7 +1253,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testQueryParameterCollectionFormat call received non-success response"); + throw getApiException("testQueryParameterCollectionFormat", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java index b16a097a9c3..f81bfe6b042 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java @@ -58,12 +58,17 @@ public class FakeClassnameTags123Api { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -95,7 +100,7 @@ public class FakeClassnameTags123Api { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testClassname call received non-success response"); + throw getApiException("testClassname", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/PetApi.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/PetApi.java index ff744b27275..36cdfe2419d 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/PetApi.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/PetApi.java @@ -61,12 +61,17 @@ public class PetApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -96,7 +101,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "addPet call received non-success response"); + throw getApiException("addPet", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -170,7 +175,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "deletePet call received non-success response"); + throw getApiException("deletePet", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -242,7 +247,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "findPetsByStatus call received non-success response"); + throw getApiException("findPetsByStatus", localVarResponse); } return new ApiResponse>( localVarResponse.statusCode(), @@ -323,7 +328,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "findPetsByTags call received non-success response"); + throw getApiException("findPetsByTags", localVarResponse); } return new ApiResponse>( localVarResponse.statusCode(), @@ -400,7 +405,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "getPetById call received non-success response"); + throw getApiException("getPetById", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -467,7 +472,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "updatePet call received non-success response"); + throw getApiException("updatePet", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -543,7 +548,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "updatePetWithForm call received non-success response"); + throw getApiException("updatePetWithForm", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -616,7 +621,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "uploadFile call received non-success response"); + throw getApiException("uploadFile", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -689,7 +694,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "uploadFileWithRequiredFile call received non-success response"); + throw getApiException("uploadFileWithRequiredFile", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/StoreApi.java index caffb9cd6ff..7ff31d54a16 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/StoreApi.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/StoreApi.java @@ -58,12 +58,17 @@ public class StoreApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -93,7 +98,7 @@ public class StoreApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "deleteOrder call received non-success response"); + throw getApiException("deleteOrder", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -160,7 +165,7 @@ public class StoreApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "getInventory call received non-success response"); + throw getApiException("getInventory", localVarResponse); } return new ApiResponse>( localVarResponse.statusCode(), @@ -224,7 +229,7 @@ public class StoreApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "getOrderById call received non-success response"); + throw getApiException("getOrderById", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -293,7 +298,7 @@ public class StoreApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "placeOrder call received non-success response"); + throw getApiException("placeOrder", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), diff --git a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/UserApi.java b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/UserApi.java index e841c2cd1e6..3d657dacaea 100644 --- a/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/UserApi.java +++ b/samples/client/petstore/java/native/src/main/java/org/openapitools/client/api/UserApi.java @@ -58,12 +58,17 @@ public class UserApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -93,7 +98,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "createUser call received non-success response"); + throw getApiException("createUser", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -165,7 +170,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "createUsersWithArrayInput call received non-success response"); + throw getApiException("createUsersWithArrayInput", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -237,7 +242,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "createUsersWithListInput call received non-success response"); + throw getApiException("createUsersWithListInput", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -309,7 +314,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "deleteUser call received non-success response"); + throw getApiException("deleteUser", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -378,7 +383,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "getUserByName call received non-success response"); + throw getApiException("getUserByName", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -449,7 +454,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "loginUser call received non-success response"); + throw getApiException("loginUser", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -527,7 +532,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "logoutUser call received non-success response"); + throw getApiException("logoutUser", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -591,7 +596,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "updateUser call received non-success response"); + throw getApiException("updateUser", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/AnotherFakeApi.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/AnotherFakeApi.java index 1d87022e718..9e3aae36505 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/AnotherFakeApi.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/AnotherFakeApi.java @@ -58,12 +58,17 @@ public class AnotherFakeApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -95,7 +100,7 @@ public class AnotherFakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "call123testSpecialTags call received non-success response"); + throw getApiException("call123testSpecialTags", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/DefaultApi.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/DefaultApi.java index fc06f1fc039..5dc086e5edb 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/DefaultApi.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/DefaultApi.java @@ -58,12 +58,17 @@ public class DefaultApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -93,7 +98,7 @@ public class DefaultApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "fooGet call received non-success response"); + throw getApiException("fooGet", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeApi.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeApi.java index b5b0a141d33..996001b7aac 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeApi.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeApi.java @@ -67,12 +67,17 @@ public class FakeApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -102,7 +107,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "fakeHealthGet call received non-success response"); + throw getApiException("fakeHealthGet", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -166,7 +171,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "fakeOuterBooleanSerialize call received non-success response"); + throw getApiException("fakeOuterBooleanSerialize", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -236,7 +241,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "fakeOuterCompositeSerialize call received non-success response"); + throw getApiException("fakeOuterCompositeSerialize", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -306,7 +311,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "fakeOuterNumberSerialize call received non-success response"); + throw getApiException("fakeOuterNumberSerialize", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -376,7 +381,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "fakeOuterStringSerialize call received non-success response"); + throw getApiException("fakeOuterStringSerialize", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -444,7 +449,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "getArrayOfEnums call received non-success response"); + throw getApiException("getArrayOfEnums", localVarResponse); } return new ApiResponse>( localVarResponse.statusCode(), @@ -506,7 +511,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testBodyWithFileSchema call received non-success response"); + throw getApiException("testBodyWithFileSchema", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -580,7 +585,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testBodyWithQueryParams call received non-success response"); + throw getApiException("testBodyWithQueryParams", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -667,7 +672,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testClientModel call received non-success response"); + throw getApiException("testClientModel", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -765,7 +770,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testEndpointParameters call received non-success response"); + throw getApiException("testEndpointParameters", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -857,7 +862,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testEnumParameters call received non-success response"); + throw getApiException("testEnumParameters", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -980,7 +985,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testGroupParameters call received non-success response"); + throw getApiException("testGroupParameters", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -1149,7 +1154,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testInlineAdditionalProperties call received non-success response"); + throw getApiException("testInlineAdditionalProperties", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -1223,7 +1228,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testJsonFormData call received non-success response"); + throw getApiException("testJsonFormData", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -1301,7 +1306,7 @@ public class FakeApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testQueryParameterCollectionFormat call received non-success response"); + throw getApiException("testQueryParameterCollectionFormat", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java index caeaf872f78..098b07e149e 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java @@ -58,12 +58,17 @@ public class FakeClassnameTags123Api { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -95,7 +100,7 @@ public class FakeClassnameTags123Api { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "testClassname call received non-success response"); + throw getApiException("testClassname", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/PetApi.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/PetApi.java index 530d75960d9..4f2bfe172fe 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/PetApi.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/PetApi.java @@ -60,12 +60,17 @@ public class PetApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -95,7 +100,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "addPet call received non-success response"); + throw getApiException("addPet", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -169,7 +174,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "deletePet call received non-success response"); + throw getApiException("deletePet", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -241,7 +246,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "findPetsByStatus call received non-success response"); + throw getApiException("findPetsByStatus", localVarResponse); } return new ApiResponse>( localVarResponse.statusCode(), @@ -322,7 +327,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "findPetsByTags call received non-success response"); + throw getApiException("findPetsByTags", localVarResponse); } return new ApiResponse>( localVarResponse.statusCode(), @@ -399,7 +404,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "getPetById call received non-success response"); + throw getApiException("getPetById", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -466,7 +471,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "updatePet call received non-success response"); + throw getApiException("updatePet", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -542,7 +547,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "updatePetWithForm call received non-success response"); + throw getApiException("updatePetWithForm", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -615,7 +620,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "uploadFile call received non-success response"); + throw getApiException("uploadFile", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -688,7 +693,7 @@ public class PetApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "uploadFileWithRequiredFile call received non-success response"); + throw getApiException("uploadFileWithRequiredFile", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/StoreApi.java index c06efabb4a8..0bd1cd35ff4 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/StoreApi.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/StoreApi.java @@ -58,12 +58,17 @@ public class StoreApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -93,7 +98,7 @@ public class StoreApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "deleteOrder call received non-success response"); + throw getApiException("deleteOrder", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -160,7 +165,7 @@ public class StoreApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "getInventory call received non-success response"); + throw getApiException("getInventory", localVarResponse); } return new ApiResponse>( localVarResponse.statusCode(), @@ -224,7 +229,7 @@ public class StoreApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "getOrderById call received non-success response"); + throw getApiException("getOrderById", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -293,7 +298,7 @@ public class StoreApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "placeOrder call received non-success response"); + throw getApiException("placeOrder", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), diff --git a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/UserApi.java b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/UserApi.java index 3c1a68c9881..008303b316d 100644 --- a/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/UserApi.java +++ b/samples/openapi3/client/petstore/java/native/src/main/java/org/openapitools/client/api/UserApi.java @@ -58,12 +58,17 @@ public class UserApi { memberVarResponseInterceptor = apiClient.getResponseInterceptor(); } - protected ApiException createApiException(HttpResponse response, String msgPrefix) throws IOException { + protected ApiException getApiException(String operationId, HttpResponse response) throws IOException { String body = response.body() == null ? null : new String(response.body().readAllBytes()); - if (body != null) { - msgPrefix += ": " + body; + String message = formatExceptionMessage(operationId, response.statusCode(), body); + return new ApiException(response.statusCode(), message, response.headers(), body); + } + + private String formatExceptionMessage(String operationId, int statusCode, String body) { + if (body == null || body.isEmpty()) { + body = "[no body]"; } - return new ApiException(response.statusCode(), msgPrefix, response.headers(), body); + return operationId + " call failed with: " + statusCode + " - " + body; } /** @@ -93,7 +98,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "createUser call received non-success response"); + throw getApiException("createUser", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -165,7 +170,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "createUsersWithArrayInput call received non-success response"); + throw getApiException("createUsersWithArrayInput", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -237,7 +242,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "createUsersWithListInput call received non-success response"); + throw getApiException("createUsersWithListInput", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -309,7 +314,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "deleteUser call received non-success response"); + throw getApiException("deleteUser", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -378,7 +383,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "getUserByName call received non-success response"); + throw getApiException("getUserByName", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -449,7 +454,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "loginUser call received non-success response"); + throw getApiException("loginUser", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -527,7 +532,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "logoutUser call received non-success response"); + throw getApiException("logoutUser", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), @@ -591,7 +596,7 @@ public class UserApi { memberVarResponseInterceptor.accept(localVarResponse); } if (localVarResponse.statusCode()/ 100 != 2) { - throw createApiException(localVarResponse, "updateUser call received non-success response"); + throw getApiException("updateUser", localVarResponse); } return new ApiResponse( localVarResponse.statusCode(), From a835f6ec0e2ed6986e29a548c722ae21a130b1b9 Mon Sep 17 00:00:00 2001 From: Katsuya Oda Date: Mon, 5 Jul 2021 10:16:35 +0900 Subject: [PATCH 183/192] fix: missing vendor extensions in inlined objects #8064 (#9810) --- .../main/java/org/openapitools/codegen/DefaultCodegen.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 72f6c72c016..1b0b007a46e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -3297,6 +3297,11 @@ public class DefaultCodegen implements CodegenConfig { } if (p.getExtensions() != null && !p.getExtensions().isEmpty()) { property.getVendorExtensions().putAll(p.getExtensions()); + } else if (p.get$ref() != null) { + Schema referencedSchema = ModelUtils.getReferencedSchema(this.openAPI, p); + if (referencedSchema.getExtensions() != null && !referencedSchema.getExtensions().isEmpty()) { + property.getVendorExtensions().putAll(referencedSchema.getExtensions()); + } } String type = getSchemaType(p); From eb2e56dbb161d6f447d0e03657776b6cae8fc6bf Mon Sep 17 00:00:00 2001 From: William Cheng Date: Mon, 5 Jul 2021 09:30:51 +0800 Subject: [PATCH 184/192] better code indentation --- .../java/org/openapitools/codegen/DefaultCodegen.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 1b0b007a46e..b17b449893f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -3298,10 +3298,10 @@ public class DefaultCodegen implements CodegenConfig { if (p.getExtensions() != null && !p.getExtensions().isEmpty()) { property.getVendorExtensions().putAll(p.getExtensions()); } else if (p.get$ref() != null) { - Schema referencedSchema = ModelUtils.getReferencedSchema(this.openAPI, p); - if (referencedSchema.getExtensions() != null && !referencedSchema.getExtensions().isEmpty()) { - property.getVendorExtensions().putAll(referencedSchema.getExtensions()); - } + Schema referencedSchema = ModelUtils.getReferencedSchema(this.openAPI, p); + if (referencedSchema.getExtensions() != null && !referencedSchema.getExtensions().isEmpty()) { + property.getVendorExtensions().putAll(referencedSchema.getExtensions()); + } } String type = getSchemaType(p); From efe0e1d7a0f275e9bfb2c7e6def55d865b0e7a12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Leszczuk?= <12996461+thereallukl@users.noreply.github.com> Date: Mon, 5 Jul 2021 07:11:45 +0200 Subject: [PATCH 185/192] Fix cancellation token usage for async calls in csharp-netcore. (#9841) --- .../src/main/resources/csharp-netcore/ApiClient.mustache | 2 +- .../src/Org.OpenAPITools/Client/ApiClient.cs | 2 +- .../src/Org.OpenAPITools/Client/ApiClient.cs | 2 +- .../OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs | 2 +- .../OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs | 2 +- .../src/Org.OpenAPITools/Client/ApiClient.cs | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache index 8f62efb7394..65cbf8d76bc 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/ApiClient.mustache @@ -594,7 +594,7 @@ namespace {{packageName}}.Client if (RetryConfiguration.AsyncRetryPolicy != null) { var policy = RetryConfiguration.AsyncRetryPolicy; - var policyResult = await policy.ExecuteAndCaptureAsync(() => client.ExecuteAsync(req, cancellationToken)).ConfigureAwait(false); + var policyResult = await policy.ExecuteAndCaptureAsync((ct) => client.ExecuteAsync(req, ct), cancellationToken).ConfigureAwait(false); response = (policyResult.Outcome == OutcomeType.Successful) ? client.Deserialize(policyResult.Result) : new RestResponse { Request = req, diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs index dd44f97a907..0a6db477bbc 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/src/Org.OpenAPITools/Client/ApiClient.cs @@ -592,7 +592,7 @@ namespace Org.OpenAPITools.Client if (RetryConfiguration.AsyncRetryPolicy != null) { var policy = RetryConfiguration.AsyncRetryPolicy; - var policyResult = await policy.ExecuteAndCaptureAsync(() => client.ExecuteAsync(req, cancellationToken)).ConfigureAwait(false); + var policyResult = await policy.ExecuteAndCaptureAsync((ct) => client.ExecuteAsync(req, ct), cancellationToken).ConfigureAwait(false); response = (policyResult.Outcome == OutcomeType.Successful) ? client.Deserialize(policyResult.Result) : new RestResponse { Request = req, diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs index dd44f97a907..0a6db477bbc 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/src/Org.OpenAPITools/Client/ApiClient.cs @@ -592,7 +592,7 @@ namespace Org.OpenAPITools.Client if (RetryConfiguration.AsyncRetryPolicy != null) { var policy = RetryConfiguration.AsyncRetryPolicy; - var policyResult = await policy.ExecuteAndCaptureAsync(() => client.ExecuteAsync(req, cancellationToken)).ConfigureAwait(false); + var policyResult = await policy.ExecuteAndCaptureAsync((ct) => client.ExecuteAsync(req, ct), cancellationToken).ConfigureAwait(false); response = (policyResult.Outcome == OutcomeType.Successful) ? client.Deserialize(policyResult.Result) : new RestResponse { Request = req, diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs index 68cf1fd135b..e3647002317 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools/Client/ApiClient.cs @@ -591,7 +591,7 @@ namespace Org.OpenAPITools.Client if (RetryConfiguration.AsyncRetryPolicy != null) { var policy = RetryConfiguration.AsyncRetryPolicy; - var policyResult = await policy.ExecuteAndCaptureAsync(() => client.ExecuteAsync(req, cancellationToken)).ConfigureAwait(false); + var policyResult = await policy.ExecuteAndCaptureAsync((ct) => client.ExecuteAsync(req, ct), cancellationToken).ConfigureAwait(false); response = (policyResult.Outcome == OutcomeType.Successful) ? client.Deserialize(policyResult.Result) : new RestResponse { Request = req, diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs index dd44f97a907..0a6db477bbc 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/src/Org.OpenAPITools/Client/ApiClient.cs @@ -592,7 +592,7 @@ namespace Org.OpenAPITools.Client if (RetryConfiguration.AsyncRetryPolicy != null) { var policy = RetryConfiguration.AsyncRetryPolicy; - var policyResult = await policy.ExecuteAndCaptureAsync(() => client.ExecuteAsync(req, cancellationToken)).ConfigureAwait(false); + var policyResult = await policy.ExecuteAndCaptureAsync((ct) => client.ExecuteAsync(req, ct), cancellationToken).ConfigureAwait(false); response = (policyResult.Outcome == OutcomeType.Successful) ? client.Deserialize(policyResult.Result) : new RestResponse { Request = req, diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ApiClient.cs index a515d30c958..9d4a14d562e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/src/Org.OpenAPITools/Client/ApiClient.cs @@ -591,7 +591,7 @@ namespace Org.OpenAPITools.Client if (RetryConfiguration.AsyncRetryPolicy != null) { var policy = RetryConfiguration.AsyncRetryPolicy; - var policyResult = await policy.ExecuteAndCaptureAsync(() => client.ExecuteAsync(req, cancellationToken)).ConfigureAwait(false); + var policyResult = await policy.ExecuteAndCaptureAsync((ct) => client.ExecuteAsync(req, ct), cancellationToken).ConfigureAwait(false); response = (policyResult.Outcome == OutcomeType.Successful) ? client.Deserialize(policyResult.Result) : new RestResponse { Request = req, From 046780657c68425a7e2eeec75473d7b800234fe3 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 6 Jul 2021 11:10:08 +0800 Subject: [PATCH 186/192] fix regex in erlang, update samples (#9892) --- .../languages/ErlangClientCodegen.java | 5 +++++ .../languages/ErlangProperCodegen.java | 5 +++++ .../languages/ErlangServerCodegen.java | 4 ++++ .../erlang-client/.openapi-generator/FILES | 13 ++++++++++++ .../erlang-client/.openapi-generator/VERSION | 2 +- .../erlang-client/src/petstore_pet_api.erl | 18 ++++++++--------- .../erlang-client/src/petstore_store_api.erl | 10 +++++----- .../erlang-client/src/petstore_user_api.erl | 18 ++++++++--------- .../erlang-proper/.openapi-generator/FILES | 20 +++++++++++++++++++ .../erlang-proper/.openapi-generator/VERSION | 2 +- .../erlang-server/src/openapi_api.erl | 2 +- 11 files changed, 73 insertions(+), 26 deletions(-) create mode 100644 samples/client/petstore/erlang-client/.openapi-generator/FILES create mode 100644 samples/client/petstore/erlang-proper/.openapi-generator/FILES diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java index 231d1136b77..3349e256072 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangClientCodegen.java @@ -474,4 +474,9 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig this.replacedPathName = replacedPathName; } } + + @Override + public String addRegularExpressionDelimiter(String pattern) { + return pattern; + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java index 40947a5e958..aec98664149 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java @@ -568,4 +568,9 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig this.replacedPathName = replacedPathName; } } + + @Override + public String addRegularExpressionDelimiter(String pattern) { + return pattern; + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java index b1cda784a5a..0c9fc2dcc19 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangServerCodegen.java @@ -326,4 +326,8 @@ public class ErlangServerCodegen extends DefaultCodegen implements CodegenConfig return input.replace("-ifdef", "- if def").replace("-endif", "- end if"); } + @Override + public String addRegularExpressionDelimiter(String pattern) { + return pattern; + } } diff --git a/samples/client/petstore/erlang-client/.openapi-generator/FILES b/samples/client/petstore/erlang-client/.openapi-generator/FILES new file mode 100644 index 00000000000..63262b16b50 --- /dev/null +++ b/samples/client/petstore/erlang-client/.openapi-generator/FILES @@ -0,0 +1,13 @@ +README.md +rebar.config +src/petstore.app.src +src/petstore_api_response.erl +src/petstore_category.erl +src/petstore_order.erl +src/petstore_pet.erl +src/petstore_pet_api.erl +src/petstore_store_api.erl +src/petstore_tag.erl +src/petstore_user.erl +src/petstore_user_api.erl +src/petstore_utils.erl diff --git a/samples/client/petstore/erlang-client/.openapi-generator/VERSION b/samples/client/petstore/erlang-client/.openapi-generator/VERSION index c30f0ec2be7..6555596f931 100644 --- a/samples/client/petstore/erlang-client/.openapi-generator/VERSION +++ b/samples/client/petstore/erlang-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.1.0-SNAPSHOT \ No newline at end of file +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/erlang-client/src/petstore_pet_api.erl b/samples/client/petstore/erlang-client/src/petstore_pet_api.erl index 54991ba9dd1..0aa298cb360 100644 --- a/samples/client/petstore/erlang-client/src/petstore_pet_api.erl +++ b/samples/client/petstore/erlang-client/src/petstore_pet_api.erl @@ -9,7 +9,7 @@ update_pet_with_form/2, update_pet_with_form/3, upload_file/2, upload_file/3]). --define(BASE_URL, "/v2"). +-define(BASE_URL, <<"/v2">>). %% @doc Add a new pet to the store %% @@ -23,7 +23,7 @@ add_pet(Ctx, PetstorePet, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = post, - Path = ["/pet"], + Path = [<<"/pet">>], QS = [], Headers = [], Body1 = PetstorePet, @@ -44,7 +44,7 @@ delete_pet(Ctx, PetId, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = delete, - Path = ["/pet/", PetId, ""], + Path = [<<"/pet/", PetId, "">>], QS = [], Headers = []++petstore_utils:optional_params(['api_key'], _OptionalParams), Body1 = [], @@ -65,7 +65,7 @@ find_pets_by_status(Ctx, Status, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = get, - Path = ["/pet/findByStatus"], + Path = [<<"/pet/findByStatus">>], QS = lists:flatten([[{<<"status">>, X} || X <- Status]])++petstore_utils:optional_params([], _OptionalParams), Headers = [], Body1 = [], @@ -86,7 +86,7 @@ find_pets_by_tags(Ctx, Tags, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = get, - Path = ["/pet/findByTags"], + Path = [<<"/pet/findByTags">>], QS = lists:flatten([[{<<"tags">>, X} || X <- Tags]])++petstore_utils:optional_params([], _OptionalParams), Headers = [], Body1 = [], @@ -107,7 +107,7 @@ get_pet_by_id(Ctx, PetId, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = get, - Path = ["/pet/", PetId, ""], + Path = [<<"/pet/", PetId, "">>], QS = [], Headers = [], Body1 = [], @@ -128,7 +128,7 @@ update_pet(Ctx, PetstorePet, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = put, - Path = ["/pet"], + Path = [<<"/pet">>], QS = [], Headers = [], Body1 = PetstorePet, @@ -149,7 +149,7 @@ update_pet_with_form(Ctx, PetId, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = post, - Path = ["/pet/", PetId, ""], + Path = [<<"/pet/", PetId, "">>], QS = [], Headers = [], Body1 = {form, []++petstore_utils:optional_params(['name', 'status'], _OptionalParams)}, @@ -170,7 +170,7 @@ upload_file(Ctx, PetId, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = post, - Path = ["/pet/", PetId, "/uploadImage"], + Path = [<<"/pet/", PetId, "/uploadImage">>], QS = [], Headers = [], Body1 = {form, []++petstore_utils:optional_params(['additionalMetadata', 'file'], _OptionalParams)}, diff --git a/samples/client/petstore/erlang-client/src/petstore_store_api.erl b/samples/client/petstore/erlang-client/src/petstore_store_api.erl index 2e72823d9d9..0d59557dc98 100644 --- a/samples/client/petstore/erlang-client/src/petstore_store_api.erl +++ b/samples/client/petstore/erlang-client/src/petstore_store_api.erl @@ -5,7 +5,7 @@ get_order_by_id/2, get_order_by_id/3, place_order/2, place_order/3]). --define(BASE_URL, "/v2"). +-define(BASE_URL, <<"/v2">>). %% @doc Delete purchase order by ID %% For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors @@ -19,7 +19,7 @@ delete_order(Ctx, OrderId, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = delete, - Path = ["/store/order/", OrderId, ""], + Path = [<<"/store/order/", OrderId, "">>], QS = [], Headers = [], Body1 = [], @@ -40,7 +40,7 @@ get_inventory(Ctx, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = get, - Path = ["/store/inventory"], + Path = [<<"/store/inventory">>], QS = [], Headers = [], Body1 = [], @@ -61,7 +61,7 @@ get_order_by_id(Ctx, OrderId, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = get, - Path = ["/store/order/", OrderId, ""], + Path = [<<"/store/order/", OrderId, "">>], QS = [], Headers = [], Body1 = [], @@ -82,7 +82,7 @@ place_order(Ctx, PetstoreOrder, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = post, - Path = ["/store/order"], + Path = [<<"/store/order">>], QS = [], Headers = [], Body1 = PetstoreOrder, diff --git a/samples/client/petstore/erlang-client/src/petstore_user_api.erl b/samples/client/petstore/erlang-client/src/petstore_user_api.erl index 45a8a9d7872..a60ccfb43eb 100644 --- a/samples/client/petstore/erlang-client/src/petstore_user_api.erl +++ b/samples/client/petstore/erlang-client/src/petstore_user_api.erl @@ -9,7 +9,7 @@ logout_user/1, logout_user/2, update_user/3, update_user/4]). --define(BASE_URL, "/v2"). +-define(BASE_URL, <<"/v2">>). %% @doc Create user %% This can only be done by the logged in user. @@ -23,7 +23,7 @@ create_user(Ctx, PetstoreUser, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = post, - Path = ["/user"], + Path = [<<"/user">>], QS = [], Headers = [], Body1 = PetstoreUser, @@ -44,7 +44,7 @@ create_users_with_array_input(Ctx, PetstoreUserArray, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = post, - Path = ["/user/createWithArray"], + Path = [<<"/user/createWithArray">>], QS = [], Headers = [], Body1 = PetstoreUserArray, @@ -65,7 +65,7 @@ create_users_with_list_input(Ctx, PetstoreUserArray, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = post, - Path = ["/user/createWithList"], + Path = [<<"/user/createWithList">>], QS = [], Headers = [], Body1 = PetstoreUserArray, @@ -86,7 +86,7 @@ delete_user(Ctx, Username, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = delete, - Path = ["/user/", Username, ""], + Path = [<<"/user/", Username, "">>], QS = [], Headers = [], Body1 = [], @@ -107,7 +107,7 @@ get_user_by_name(Ctx, Username, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = get, - Path = ["/user/", Username, ""], + Path = [<<"/user/", Username, "">>], QS = [], Headers = [], Body1 = [], @@ -128,7 +128,7 @@ login_user(Ctx, Username, Password, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = get, - Path = ["/user/login"], + Path = [<<"/user/login">>], QS = lists:flatten([{<<"username">>, Username}, {<<"password">>, Password}])++petstore_utils:optional_params([], _OptionalParams), Headers = [], Body1 = [], @@ -149,7 +149,7 @@ logout_user(Ctx, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = get, - Path = ["/user/logout"], + Path = [<<"/user/logout">>], QS = [], Headers = [], Body1 = [], @@ -170,7 +170,7 @@ update_user(Ctx, Username, PetstoreUser, Optional) -> Cfg = maps:get(cfg, Optional, application:get_env(kuberl, config, #{})), Method = put, - Path = ["/user/", Username, ""], + Path = [<<"/user/", Username, "">>], QS = [], Headers = [], Body1 = PetstoreUser, diff --git a/samples/client/petstore/erlang-proper/.openapi-generator/FILES b/samples/client/petstore/erlang-proper/.openapi-generator/FILES new file mode 100644 index 00000000000..2a5af8d28a5 --- /dev/null +++ b/samples/client/petstore/erlang-proper/.openapi-generator/FILES @@ -0,0 +1,20 @@ +README.md +rebar.config +src/model/petstore_api_response.erl +src/model/petstore_category.erl +src/model/petstore_order.erl +src/model/petstore_pet.erl +src/model/petstore_tag.erl +src/model/petstore_user.erl +src/petstore.app.src +src/petstore.hrl +src/petstore_api.erl +src/petstore_api.erl +src/petstore_api.erl +src/petstore_gen.erl +src/petstore_statem.erl +src/petstore_statem.erl +src/petstore_statem.erl +src/petstore_statem.hrl +src/petstore_utils.erl +test/prop_petstore.erl diff --git a/samples/client/petstore/erlang-proper/.openapi-generator/VERSION b/samples/client/petstore/erlang-proper/.openapi-generator/VERSION index d99e7162d01..6555596f931 100644 --- a/samples/client/petstore/erlang-proper/.openapi-generator/VERSION +++ b/samples/client/petstore/erlang-proper/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0-SNAPSHOT \ No newline at end of file +5.2.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/erlang-server/src/openapi_api.erl b/samples/server/petstore/erlang-server/src/openapi_api.erl index a1a6fa220ec..19e8f7b542c 100644 --- a/samples/server/petstore/erlang-server/src/openapi_api.erl +++ b/samples/server/petstore/erlang-server/src/openapi_api.erl @@ -349,7 +349,7 @@ request_param_info('LoginUser', 'username') -> source => qs_val , rules => [ {type, 'binary'}, - {pattern, "/^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$/" }, + {pattern, "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$" }, required ] }; From 60c4c88a74ee1eed07db574c6af8d3bdba3382e1 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 6 Jul 2021 15:36:48 +0800 Subject: [PATCH 187/192] update samples --- .../src/Org.OpenAPITools/Client/ApiClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiClient.cs index 68cf1fd135b..e3647002317 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiClient.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Client/ApiClient.cs @@ -591,7 +591,7 @@ namespace Org.OpenAPITools.Client if (RetryConfiguration.AsyncRetryPolicy != null) { var policy = RetryConfiguration.AsyncRetryPolicy; - var policyResult = await policy.ExecuteAndCaptureAsync(() => client.ExecuteAsync(req, cancellationToken)).ConfigureAwait(false); + var policyResult = await policy.ExecuteAndCaptureAsync((ct) => client.ExecuteAsync(req, ct), cancellationToken).ConfigureAwait(false); response = (policyResult.Outcome == OutcomeType.Successful) ? client.Deserialize(policyResult.Result) : new RestResponse { Request = req, From 7084a79ede025ffdcac2562a2a03da40dcedaf44 Mon Sep 17 00:00:00 2001 From: John Boyes <154404+johnboyes@users.noreply.github.com> Date: Wed, 7 Jul 2021 04:04:26 +0100 Subject: [PATCH 188/192] [BUG][PYTHON] Do not set Content-Type for GET, HEAD or DELETE requests (#9852) * [BUG][PYTHON] Do not set Content-Type for GET, HEAD or DELETE requests The Python generator no longer sets a default `Content-Type` of `application/json` for `GET`, `HEAD` and `DELETE` requests. Having the `Content-Type` set for these requests was causing issues with other tools which insist that GET, HEAD and DELETE requests do not have a Content-Type (as per the OpenAPI 3 specification). An example of the problem that this commit fixes is when using [Prism][1] as a [validation proxy][2]. [Prism rejects any GET request that has a Content-Type][3]. Here is [an example of the problem manifesting itself][4]. To validate the fix in this commit: 1. Start with any OpenAPI3 spec e.g. the Petstore example at https://editor.swagger.io/ 2. Generate Python client code for the spec 3. Look at the generated `rest.py` e.g. in the [standard sample in this repo][5] and see that the `Content-Type` defaults to `application/json` for all HTTP methods (including `GET`, `HEAD` and `DELETE`), rather than there being no `Content-Type` for `GET`, `HEAD` and `DELETE`. Fixes #9831 [1]: https://github.com/stoplightio/prism [2]: https://meta.stoplight.io/docs/prism/docs/guides/03-validation-proxy.md [3]: https://github.com/stoplightio/prism/issues/1408#issuecomment-690948020 [4]: https://github.com/agilepathway/gauge-openapi-example/pull/28/checks?check_run_id=2888606052#step:13:18 [5]: https://github.com/OpenAPITools/openapi-generator/blob/969cea8ce10cb9d012c3936fb377d631c0d044c9/samples/openapi3/client/petstore/python/petstore_api/rest.py#L141 * update samples * Fix Python DELETE bug introduced in earlier commit The earlier commit 9dfe1f6 introduced a bug for `DELETE` requests on the standard Python generator. This commit fixes that bug and also includes the updated samples. Co-authored-by: William Cheng --- .../src/main/resources/python/rest.mustache | 8 ++++---- samples/client/petstore/python/petstore_api/rest.py | 8 ++++---- .../petstore_api/rest.py | 8 ++++---- .../x-auth-id-alias/python/x_auth_id_alias/rest.py | 8 ++++---- .../dynamic-servers/python/dynamic_servers/rest.py | 8 ++++---- .../openapi3/client/petstore/python/petstore_api/rest.py | 8 ++++---- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python/rest.mustache b/modules/openapi-generator/src/main/resources/python/rest.mustache index 9e733864895..21c8d5b44c0 100644 --- a/modules/openapi-generator/src/main/resources/python/rest.mustache +++ b/modules/openapi-generator/src/main/resources/python/rest.mustache @@ -129,15 +129,15 @@ class RESTClientObject(object): timeout = urllib3.Timeout( connect=_request_timeout[0], read=_request_timeout[1]) - if 'Content-Type' not in headers: - headers['Content-Type'] = 'application/json' - try: # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']: + # Only set a default Content-Type for POST, PUT, PATCH and OPTIONS requests + if (method != 'DELETE') and ('Content-Type' not in headers): + headers['Content-Type'] = 'application/json' if query_params: url += '?' + urlencode(query_params) - if re.search('json', headers['Content-Type'], re.IGNORECASE): + if ('Content-Type' not in headers) or (re.search('json', headers['Content-Type'], re.IGNORECASE)): request_body = None if body is not None: request_body = json.dumps(body) diff --git a/samples/client/petstore/python/petstore_api/rest.py b/samples/client/petstore/python/petstore_api/rest.py index a1d580fbe05..a38fcec1c84 100644 --- a/samples/client/petstore/python/petstore_api/rest.py +++ b/samples/client/petstore/python/petstore_api/rest.py @@ -137,15 +137,15 @@ class RESTClientObject(object): timeout = urllib3.Timeout( connect=_request_timeout[0], read=_request_timeout[1]) - if 'Content-Type' not in headers: - headers['Content-Type'] = 'application/json' - try: # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']: + # Only set a default Content-Type for POST, PUT, PATCH and OPTIONS requests + if (method != 'DELETE') and ('Content-Type' not in headers): + headers['Content-Type'] = 'application/json' if query_params: url += '?' + urlencode(query_params) - if re.search('json', headers['Content-Type'], re.IGNORECASE): + if ('Content-Type' not in headers) or (re.search('json', headers['Content-Type'], re.IGNORECASE)): request_body = None if body is not None: request_body = json.dumps(body) diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/rest.py b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/rest.py index a1d580fbe05..a38fcec1c84 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/rest.py +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/petstore_api/rest.py @@ -137,15 +137,15 @@ class RESTClientObject(object): timeout = urllib3.Timeout( connect=_request_timeout[0], read=_request_timeout[1]) - if 'Content-Type' not in headers: - headers['Content-Type'] = 'application/json' - try: # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']: + # Only set a default Content-Type for POST, PUT, PATCH and OPTIONS requests + if (method != 'DELETE') and ('Content-Type' not in headers): + headers['Content-Type'] = 'application/json' if query_params: url += '?' + urlencode(query_params) - if re.search('json', headers['Content-Type'], re.IGNORECASE): + if ('Content-Type' not in headers) or (re.search('json', headers['Content-Type'], re.IGNORECASE)): request_body = None if body is not None: request_body = json.dumps(body) diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/rest.py b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/rest.py index a0a26a797db..a7c5fd3304a 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/rest.py +++ b/samples/openapi3/client/extensions/x-auth-id-alias/python/x_auth_id_alias/rest.py @@ -137,15 +137,15 @@ class RESTClientObject(object): timeout = urllib3.Timeout( connect=_request_timeout[0], read=_request_timeout[1]) - if 'Content-Type' not in headers: - headers['Content-Type'] = 'application/json' - try: # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']: + # Only set a default Content-Type for POST, PUT, PATCH and OPTIONS requests + if (method != 'DELETE') and ('Content-Type' not in headers): + headers['Content-Type'] = 'application/json' if query_params: url += '?' + urlencode(query_params) - if re.search('json', headers['Content-Type'], re.IGNORECASE): + if ('Content-Type' not in headers) or (re.search('json', headers['Content-Type'], re.IGNORECASE)): request_body = None if body is not None: request_body = json.dumps(body) diff --git a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/rest.py b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/rest.py index 979c58eb200..191d850b87d 100644 --- a/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/rest.py +++ b/samples/openapi3/client/features/dynamic-servers/python/dynamic_servers/rest.py @@ -137,15 +137,15 @@ class RESTClientObject(object): timeout = urllib3.Timeout( connect=_request_timeout[0], read=_request_timeout[1]) - if 'Content-Type' not in headers: - headers['Content-Type'] = 'application/json' - try: # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']: + # Only set a default Content-Type for POST, PUT, PATCH and OPTIONS requests + if (method != 'DELETE') and ('Content-Type' not in headers): + headers['Content-Type'] = 'application/json' if query_params: url += '?' + urlencode(query_params) - if re.search('json', headers['Content-Type'], re.IGNORECASE): + if ('Content-Type' not in headers) or (re.search('json', headers['Content-Type'], re.IGNORECASE)): request_body = None if body is not None: request_body = json.dumps(body) diff --git a/samples/openapi3/client/petstore/python/petstore_api/rest.py b/samples/openapi3/client/petstore/python/petstore_api/rest.py index a1d580fbe05..a38fcec1c84 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/rest.py +++ b/samples/openapi3/client/petstore/python/petstore_api/rest.py @@ -137,15 +137,15 @@ class RESTClientObject(object): timeout = urllib3.Timeout( connect=_request_timeout[0], read=_request_timeout[1]) - if 'Content-Type' not in headers: - headers['Content-Type'] = 'application/json' - try: # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']: + # Only set a default Content-Type for POST, PUT, PATCH and OPTIONS requests + if (method != 'DELETE') and ('Content-Type' not in headers): + headers['Content-Type'] = 'application/json' if query_params: url += '?' + urlencode(query_params) - if re.search('json', headers['Content-Type'], re.IGNORECASE): + if ('Content-Type' not in headers) or (re.search('json', headers['Content-Type'], re.IGNORECASE)): request_body = None if body is not None: request_body = json.dumps(body) From f5c3430a265188f3744ccc17f70019906471a098 Mon Sep 17 00:00:00 2001 From: Bruno Coelho <4brunu@users.noreply.github.com> Date: Thu, 8 Jul 2021 18:03:54 +0100 Subject: [PATCH 189/192] [swift5][client] avoid local variable name collision (#9913) * [swift5][client] avoid variable name collision * [swift5][client] update sample projects --- .../src/main/resources/swift5/api.mustache | 55 ++-- .../swift5/alamofireLibrary/Package.resolved | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 16 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 210 +++++++-------- .../APIs/FakeClassnameTags123API.swift | 16 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 170 ++++++------ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 68 ++--- .../Classes/OpenAPIs/APIs/UserAPI.swift | 136 +++++----- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 16 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 210 +++++++-------- .../APIs/FakeClassnameTags123API.swift | 16 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 170 ++++++------ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 68 ++--- .../Classes/OpenAPIs/APIs/UserAPI.swift | 136 +++++----- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 16 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 244 +++++++++--------- .../APIs/FakeClassnameTags123API.swift | 16 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 170 ++++++------ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 68 ++--- .../Classes/OpenAPIs/APIs/UserAPI.swift | 136 +++++----- .../Classes/OpenAPIs/APIs/PetAPI.swift | 148 +++++------ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 68 ++--- .../Classes/OpenAPIs/APIs/UserAPI.swift | 136 +++++----- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 16 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 210 +++++++-------- .../APIs/FakeClassnameTags123API.swift | 16 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 170 ++++++------ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 68 ++--- .../Classes/OpenAPIs/APIs/UserAPI.swift | 136 +++++----- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 16 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 210 +++++++-------- .../APIs/FakeClassnameTags123API.swift | 16 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 170 ++++++------ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 68 ++--- .../Classes/OpenAPIs/APIs/UserAPI.swift | 136 +++++----- .../Classes/OpenAPIs/APIs/DefaultAPI.swift | 16 +- .../swift5/promisekitLibrary/Package.resolved | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 16 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 210 +++++++-------- .../APIs/FakeClassnameTags123API.swift | 16 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 170 ++++++------ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 68 ++--- .../Classes/OpenAPIs/APIs/UserAPI.swift | 136 +++++----- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 16 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 210 +++++++-------- .../APIs/FakeClassnameTags123API.swift | 16 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 170 ++++++------ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 68 ++--- .../Classes/OpenAPIs/APIs/UserAPI.swift | 136 +++++----- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 16 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 210 +++++++-------- .../APIs/FakeClassnameTags123API.swift | 16 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 170 ++++++------ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 68 ++--- .../Classes/OpenAPIs/APIs/UserAPI.swift | 136 +++++----- .../swift5/rxswiftLibrary/Package.resolved | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 16 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 210 +++++++-------- .../APIs/FakeClassnameTags123API.swift | 16 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 170 ++++++------ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 68 ++--- .../Classes/OpenAPIs/APIs/UserAPI.swift | 136 +++++----- .../swift5/urlsessionLibrary/Package.resolved | 2 +- .../PetstoreClient/APIs/AnotherFakeAPI.swift | 16 +- .../Sources/PetstoreClient/APIs/FakeAPI.swift | 210 +++++++-------- .../APIs/FakeClassnameTags123API.swift | 16 +- .../Sources/PetstoreClient/APIs/PetAPI.swift | 170 ++++++------ .../PetstoreClient/APIs/StoreAPI.swift | 68 ++--- .../Sources/PetstoreClient/APIs/UserAPI.swift | 136 +++++----- .../swift5/vaporLibrary/Package.resolved | 34 +-- .../PetstoreClient/APIs/AnotherFakeAPI.swift | 14 +- .../Sources/PetstoreClient/APIs/FakeAPI.swift | 220 ++++++++-------- .../APIs/FakeClassnameTags123API.swift | 14 +- .../Sources/PetstoreClient/APIs/PetAPI.swift | 134 +++++----- .../PetstoreClient/APIs/StoreAPI.swift | 54 ++-- .../Sources/PetstoreClient/APIs/UserAPI.swift | 112 ++++---- .../swift5/x-swift-hashable/Package.resolved | 2 +- .../OpenAPIs/APIs/AnotherFakeAPI.swift | 16 +- .../Classes/OpenAPIs/APIs/FakeAPI.swift | 210 +++++++-------- .../APIs/FakeClassnameTags123API.swift | 16 +- .../Classes/OpenAPIs/APIs/PetAPI.swift | 170 ++++++------ .../Classes/OpenAPIs/APIs/StoreAPI.swift | 68 ++--- .../Classes/OpenAPIs/APIs/UserAPI.swift | 136 +++++----- 83 files changed, 3910 insertions(+), 3915 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/swift5/api.mustache b/modules/openapi-generator/src/main/resources/swift5/api.mustache index 7d84971ab98..135c47069c6 100644 --- a/modules/openapi-generator/src/main/resources/swift5/api.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/api.mustache @@ -232,31 +232,30 @@ extension {{projectName}} { @available(*, deprecated, message: "This operation is deprecated.") {{/isDeprecated}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}Raw({{#allParams}}{{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - {{^pathParams}}let{{/pathParams}}{{#pathParams}}{{#-first}}var{{/-first}}{{/pathParams}} path = "{{{path}}}"{{#pathParams}} + {{^pathParams}}let{{/pathParams}}{{#pathParams}}{{#-first}}var{{/-first}}{{/pathParams}} localVariablePath = "{{{path}}}"{{#pathParams}} let {{paramName}}PreEscape = String(describing: {{#isEnum}}{{paramName}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}.rawValue{{/isContainer}}{{/isEnum}}{{^isEnum}}{{paramName}}{{/isEnum}}) let {{paramName}}PostEscape = {{paramName}}PreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}} - let URLString = {{projectName}}.basePath + path + localVariablePath = localVariablePath.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}} + let localVariableURLString = {{projectName}}.basePath + localVariablePath - guard let apiClient = {{#swiftUseApiNamespace}}{{projectName}}.{{/swiftUseApiNamespace}}Configuration.apiClient else { + guard let localVariableApiClient = {{#swiftUseApiNamespace}}{{projectName}}.{{/swiftUseApiNamespace}}Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.{{httpMethod}}, headers: headers, to: URI(string: URLString)) { request in - try {{#swiftUseApiNamespace}}{{projectName}}.{{/swiftUseApiNamespace}}Configuration.apiWrapper(&request) + return localVariableApiClient.send(.{{httpMethod}}, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try {{#swiftUseApiNamespace}}{{projectName}}.{{/swiftUseApiNamespace}}Configuration.apiWrapper(&localVariableRequest) {{#hasHeaderParams}}{{#headerParams}} - request.headers.add(name: "{{baseName}}", value: {{#isArray}}{{paramName}}{{^required}}?{{/required}}.map { $0{{#isEnum}}.rawValue{{/isEnum}}.description }.description{{/isArray}}{{^isArray}}{{#isEnum}}{{paramName}}{{^required}}?{{/required}}.rawValue.description{{/isEnum}}{{^isEnum}}{{paramName}}{{^required}}?{{/required}}.description{{/isEnum}}{{/isArray}}{{^required}} ?? ""{{/required}}) + localVariableRequest.headers.add(name: "{{baseName}}", value: {{#isArray}}{{paramName}}{{^required}}?{{/required}}.map { $0{{#isEnum}}.rawValue{{/isEnum}}.description }.description{{/isArray}}{{^isArray}}{{#isEnum}}{{paramName}}{{^required}}?{{/required}}.rawValue.description{{/isEnum}}{{^isEnum}}{{paramName}}{{^required}}?{{/required}}.description{{/isEnum}}{{/isArray}}{{^required}} ?? ""{{/required}}) {{/headerParams}}{{/hasHeaderParams}} {{#hasQueryParams}}struct QueryParams: Content { {{#queryParams}} var {{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{/required}} {{/queryParams}} } - try request.query.encode(QueryParams({{#queryParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/queryParams}})){{/hasQueryParams}} + try localVariableRequest.query.encode(QueryParams({{#queryParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/queryParams}})){{/hasQueryParams}} {{#hasBodyParam}} - {{#bodyParam}}{{#required}}{{#isBinary}}request.body = ByteBuffer(data: {{paramName}}){{/isBinary}}{{^isBinary}}{{#isFile}}request.body = ByteBuffer(data: {{paramName}}){{/isFile}}try request.content.encode({{paramName}}, using: Configuration.contentConfiguration.requireEncoder(for: {{{dataType}}}.defaultContentType)){{/isBinary}}{{/required}}{{^required}}if let body = {{paramName}} { - - {{#isBinary}}request.body = ByteBuffer(data: body){{/isBinary}}{{^isBinary}}{{#isFile}}request.body = ByteBuffer(data: body){{/isFile}}try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: {{{dataType}}}.defaultContentType)){{/isBinary}} + {{#bodyParam}}{{#required}}{{#isBinary}}localVariableRequest.body = ByteBuffer(data: {{paramName}}){{/isBinary}}{{^isBinary}}{{#isFile}}localVariableRequest.body = ByteBuffer(data: {{paramName}}){{/isFile}}try localVariableRequest.content.encode({{paramName}}, using: Configuration.contentConfiguration.requireEncoder(for: {{{dataType}}}.defaultContentType)){{/isBinary}}{{/required}}{{^required}}if let localVariableBody = {{paramName}} { + {{#isBinary}}localVariableRequest.body = ByteBuffer(data: localVariableBody){{/isBinary}}{{^isBinary}}{{#isFile}}localVariableRequest.body = ByteBuffer(data: localVariableBody){{/isFile}}try localVariableRequest.content.encode(localVariableBody, using: Configuration.contentConfiguration.requireEncoder(for: {{{dataType}}}.defaultContentType)){{/isBinary}} }{{/required}}{{/bodyParam}} {{/hasBodyParam}} {{#hasFormParams}}struct FormParams: Content { @@ -265,8 +264,8 @@ extension {{projectName}} { var {{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{/required}} {{/formParams}} } - try request.content.encode(FormParams({{#formParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/formParams}}), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)){{/hasFormParams}} - try beforeSend(&request) + try localVariableRequest.content.encode(FormParams({{#formParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/formParams}}), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)){{/hasFormParams}} + try beforeSend(&localVariableRequest) } } @@ -352,48 +351,48 @@ extension {{projectName}} { @available(*, deprecated, message: "This operation is deprecated.") {{/isDeprecated}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) -> RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> { - {{^pathParams}}let{{/pathParams}}{{#pathParams}}{{#-first}}var{{/-first}}{{/pathParams}} path = "{{{path}}}"{{#pathParams}} + {{^pathParams}}let{{/pathParams}}{{#pathParams}}{{#-first}}var{{/-first}}{{/pathParams}} localVariablePath = "{{{path}}}"{{#pathParams}} let {{paramName}}PreEscape = "\({{#isEnum}}{{paramName}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}.rawValue{{/isContainer}}{{/isEnum}}{{^isEnum}}APIHelper.mapValueToPathItem({{paramName}}){{/isEnum}})" let {{paramName}}PostEscape = {{paramName}}PreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}} - let URLString = {{projectName}}.basePath + path + localVariablePath = localVariablePath.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}} + let localVariableURLString = {{projectName}}.basePath + localVariablePath {{#bodyParam}} - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: {{paramName}}) + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: {{paramName}}) {{/bodyParam}} {{^bodyParam}} {{#hasFormParams}} - let formParams: [String: Any?] = [ + let localVariableFormParams: [String: Any?] = [ {{#formParams}} {{> _param}}, {{/formParams}} ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) {{/hasFormParams}} {{^hasFormParams}} - let parameters: [String: Any]? = nil + let localVariableParameters: [String: Any]? = nil {{/hasFormParams}} {{/bodyParam}}{{#hasQueryParams}} - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([{{^queryParams}}:{{/queryParams}} + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([{{^queryParams}}:{{/queryParams}} {{#queryParams}} {{> _param}}, {{/queryParams}} ]){{/hasQueryParams}}{{^hasQueryParams}} - let urlComponents = URLComponents(string: URLString){{/hasQueryParams}} + let localVariableUrlComponents = URLComponents(string: localVariableURLString){{/hasQueryParams}} - let nillableHeaders: [String: Any?] = [{{^headerParams}}{{^hasFormParams}} + let localVariableNillableHeaders: [String: Any?] = [{{^headerParams}}{{^hasFormParams}} :{{/hasFormParams}}{{/headerParams}}{{#hasFormParams}} "Content-Type": {{^consumes}}"multipart/form-data"{{/consumes}}{{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}},{{/hasFormParams}}{{#headerParams}} {{> _param}},{{/headerParams}} ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.Type = {{projectName}}.requestBuilderFactory.{{#returnType}}getBuilder(){{/returnType}}{{^returnType}}getNonDecodableBuilder(){{/returnType}} + let localVariableRequestBuilder: RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.Type = {{projectName}}.requestBuilderFactory.{{#returnType}}getBuilder(){{/returnType}}{{^returnType}}getNonDecodableBuilder(){{/returnType}} - return requestBuilder.init(method: "{{httpMethod}}", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "{{httpMethod}}", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } {{/useVapor}} {{/operation}} diff --git a/samples/client/petstore/swift5/alamofireLibrary/Package.resolved b/samples/client/petstore/swift5/alamofireLibrary/Package.resolved index bc55c313035..d1d000eb332 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/Package.resolved +++ b/samples/client/petstore/swift5/alamofireLibrary/Package.resolved @@ -3,7 +3,7 @@ "pins": [ { "package": "Alamofire", - "repositoryURL": "https://github.com/Alamofire/Alamofire.git", + "repositoryURL": "https://github.com/Alamofire/Alamofire", "state": { "branch": null, "revision": "747c8db8d57b68d5e35275f10c92d55f982adbd4", diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 7d09ab30c12..ac9dd9b74f2 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -38,20 +38,20 @@ open class AnotherFakeAPI { - returns: RequestBuilder */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/another-fake/dummy" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/another-fake/dummy" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 5480213e38d..d7260ca2e3a 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -36,21 +36,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { - let path = "/fake/outer/boolean" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/boolean" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -77,21 +77,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { - let path = "/fake/outer/composite" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/composite" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -118,21 +118,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { - let path = "/fake/outer/number" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/number" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -159,21 +159,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { - let path = "/fake/outer/string" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/string" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -200,21 +200,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-file-schema" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -242,24 +242,24 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-query-params" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "query": query.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -288,21 +288,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -360,9 +360,9 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), @@ -379,20 +379,20 @@ open class FakeAPI { "callback": callback?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -502,35 +502,35 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_double": enumQueryDouble?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string": enumHeaderString?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -569,28 +569,28 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "required_string_group": requiredStringGroup.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(), "int64_group": int64Group?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "required_boolean_group": requiredBooleanGroup.encodeToJSON(), "boolean_group": booleanGroup?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -618,21 +618,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + let localVariablePath = "/fake/inline-additionalProperties" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -662,26 +662,26 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { - let path = "/fake/jsonFormData" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake/jsonFormData" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 9683e0ce5b1..a6ca6c66b51 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -41,20 +41,20 @@ open class FakeClassnameTags123API { - returns: RequestBuilder */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake_classname_test" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake_classname_test" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 8cbd15364b6..8b97def931c 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -40,21 +40,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -87,24 +87,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "api_key": apiKey?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -145,24 +145,24 @@ open class PetAPI { - returns: RequestBuilder<[Pet]> */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "status": status.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -196,24 +196,24 @@ open class PetAPI { */ @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "tags": tags.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -245,24 +245,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -293,21 +293,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -342,30 +342,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -400,30 +400,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -458,29 +458,29 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil) -> RequestBuilder { - var path = "/fake/{petId}/uploadImageWithRequiredFile" + var localVariablePath = "/fake/{petId}/uploadImageWithRequiredFile" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index a83e954ae6a..53c1fed1eb3 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -38,24 +38,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -85,21 +85,21 @@ open class StoreAPI { - returns: RequestBuilder<[String: Int]> */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -128,24 +128,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -173,20 +173,20 @@ open class StoreAPI { - returns: RequestBuilder */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index dbff6ade41c..c1e5691390e 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -38,21 +38,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -80,21 +80,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -122,21 +122,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -165,24 +165,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -210,24 +210,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -258,25 +258,25 @@ open class UserAPI { - returns: RequestBuilder */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "username": username.encodeToJSON(), "password": password.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -302,21 +302,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -347,23 +347,23 @@ open class UserAPI { - returns: RequestBuilder */ open class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 70498ae5c83..ebe06db329f 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -46,20 +46,20 @@ open class AnotherFakeAPI { - returns: RequestBuilder */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/another-fake/dummy" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/another-fake/dummy" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 90aa780acc5..f2292f67ada 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -44,21 +44,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { - let path = "/fake/outer/boolean" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/boolean" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -90,21 +90,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { - let path = "/fake/outer/composite" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/composite" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -136,21 +136,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { - let path = "/fake/outer/number" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/number" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -182,21 +182,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { - let path = "/fake/outer/string" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/string" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -228,21 +228,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-file-schema" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -275,24 +275,24 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-query-params" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "query": query.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -326,21 +326,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -403,9 +403,9 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), @@ -422,20 +422,20 @@ open class FakeAPI { "callback": callback?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -550,35 +550,35 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_double": enumQueryDouble?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string": enumHeaderString?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -622,28 +622,28 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "required_string_group": requiredStringGroup.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(), "int64_group": int64Group?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "required_boolean_group": requiredBooleanGroup.encodeToJSON(), "boolean_group": booleanGroup?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -676,21 +676,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + let localVariablePath = "/fake/inline-additionalProperties" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -725,26 +725,26 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { - let path = "/fake/jsonFormData" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake/jsonFormData" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index af9a24d7412..3edea3454e6 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -49,20 +49,20 @@ open class FakeClassnameTags123API { - returns: RequestBuilder */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake_classname_test" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake_classname_test" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 7c968379435..269e48d35d8 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -48,21 +48,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -100,24 +100,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "api_key": apiKey?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -163,24 +163,24 @@ open class PetAPI { - returns: RequestBuilder<[Pet]> */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "status": status.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -219,24 +219,24 @@ open class PetAPI { */ @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "tags": tags.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -273,24 +273,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -326,21 +326,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -380,30 +380,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -443,30 +443,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -506,29 +506,29 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil) -> RequestBuilder { - var path = "/fake/{petId}/uploadImageWithRequiredFile" + var localVariablePath = "/fake/{petId}/uploadImageWithRequiredFile" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 0ed144406b9..9cd38825ece 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -46,24 +46,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -98,21 +98,21 @@ open class StoreAPI { - returns: RequestBuilder<[String: Int]> */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -146,24 +146,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -196,20 +196,20 @@ open class StoreAPI { - returns: RequestBuilder */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index c469d6ed3a1..ce24afbc75c 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -46,21 +46,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -93,21 +93,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -140,21 +140,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -188,24 +188,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -238,24 +238,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -291,25 +291,25 @@ open class UserAPI { - returns: RequestBuilder */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "username": username.encodeToJSON(), "password": password.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -340,21 +340,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -390,23 +390,23 @@ open class UserAPI { - returns: RequestBuilder */ open class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 7d09ab30c12..ac9dd9b74f2 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -38,20 +38,20 @@ open class AnotherFakeAPI { - returns: RequestBuilder */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/another-fake/dummy" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/another-fake/dummy" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 3a25702d994..aaff9fe6752 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -38,21 +38,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func createXmlItemWithRequestBuilder(xmlItem: XmlItem) -> RequestBuilder { - let path = "/fake/create_xml_item" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: xmlItem) + let localVariablePath = "/fake/create_xml_item" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: xmlItem) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -79,21 +79,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { - let path = "/fake/outer/boolean" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/boolean" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -120,21 +120,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { - let path = "/fake/outer/composite" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/composite" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -161,21 +161,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { - let path = "/fake/outer/number" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/number" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -202,21 +202,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { - let path = "/fake/outer/string" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/string" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -243,21 +243,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-file-schema" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -285,24 +285,24 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-query-params" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "query": query.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -331,21 +331,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -403,9 +403,9 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), @@ -422,20 +422,20 @@ open class FakeAPI { "callback": callback?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -545,35 +545,35 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_double": enumQueryDouble?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string": enumHeaderString?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -612,28 +612,28 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "required_string_group": requiredStringGroup.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(), "int64_group": int64Group?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "required_boolean_group": requiredBooleanGroup.encodeToJSON(), "boolean_group": booleanGroup?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -661,21 +661,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + let localVariablePath = "/fake/inline-additionalProperties" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -705,27 +705,27 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { - let path = "/fake/jsonFormData" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake/jsonFormData" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -760,12 +760,12 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testQueryParameterCollectionFormatWithRequestBuilder(pipe: [String], ioutil: [String], http: [String], url: [String], context: [String]) -> RequestBuilder { - let path = "/fake/test-query-paramters" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/fake/test-query-paramters" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "pipe": pipe.encodeToJSON(), "ioutil": ioutil.encodeToJSON(), "http": http.encodeToJSON(), @@ -773,14 +773,14 @@ open class FakeAPI { "context": context.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 9683e0ce5b1..a6ca6c66b51 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -41,20 +41,20 @@ open class FakeClassnameTags123API { - returns: RequestBuilder */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake_classname_test" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake_classname_test" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index e8ab4d6861a..9912bf9a295 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -40,21 +40,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -87,24 +87,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "api_key": apiKey?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -145,24 +145,24 @@ open class PetAPI { - returns: RequestBuilder<[Pet]> */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "status": status.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -196,24 +196,24 @@ open class PetAPI { */ @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: Set) -> RequestBuilder> { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "tags": tags.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -245,24 +245,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -293,21 +293,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -342,30 +342,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -400,30 +400,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -458,29 +458,29 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil) -> RequestBuilder { - var path = "/fake/{petId}/uploadImageWithRequiredFile" + var localVariablePath = "/fake/{petId}/uploadImageWithRequiredFile" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index a83e954ae6a..53c1fed1eb3 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -38,24 +38,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -85,21 +85,21 @@ open class StoreAPI { - returns: RequestBuilder<[String: Int]> */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -128,24 +128,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -173,20 +173,20 @@ open class StoreAPI { - returns: RequestBuilder */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index dbff6ade41c..c1e5691390e 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -38,21 +38,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -80,21 +80,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -122,21 +122,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -165,24 +165,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -210,24 +210,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -258,25 +258,25 @@ open class UserAPI { - returns: RequestBuilder */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "username": username.encodeToJSON(), "password": password.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -302,21 +302,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -347,23 +347,23 @@ open class UserAPI { - returns: RequestBuilder */ open class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 190716faed6..acc589a6af8 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -40,21 +40,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func addPetWithRequestBuilder(pet: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: pet) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: pet) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -87,24 +87,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "api_key": apiKey?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -145,24 +145,24 @@ open class PetAPI { - returns: RequestBuilder<[Pet]> */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "status": status.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -196,24 +196,24 @@ open class PetAPI { */ @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "tags": tags.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -245,24 +245,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -293,21 +293,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithRequestBuilder(pet: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: pet) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: pet) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -342,30 +342,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -400,29 +400,29 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index c25565f0cf8..1be8e579d3d 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -38,24 +38,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{orderId}" + var localVariablePath = "/store/order/{orderId}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{orderId}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{orderId}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -85,21 +85,21 @@ open class StoreAPI { - returns: RequestBuilder<[String: Int]> */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -128,24 +128,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{orderId}" + var localVariablePath = "/store/order/{orderId}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{orderId}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{orderId}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -173,20 +173,20 @@ open class StoreAPI { - returns: RequestBuilder */ open class func placeOrderWithRequestBuilder(order: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: order) + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: order) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 33ee8164a3e..ad96b3a6341 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -41,21 +41,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUserWithRequestBuilder(user: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: user) + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: user) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -86,21 +86,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithArrayInputWithRequestBuilder(user: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: user) + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: user) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -131,21 +131,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithListInputWithRequestBuilder(user: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: user) + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: user) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -177,24 +177,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -222,24 +222,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -270,25 +270,25 @@ open class UserAPI { - returns: RequestBuilder */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "username": username.encodeToJSON(), "password": password.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -317,21 +317,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -365,23 +365,23 @@ open class UserAPI { - returns: RequestBuilder */ open class func updateUserWithRequestBuilder(username: String, user: User) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: user) + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: user) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 8a124ebde97..34779f80996 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -38,20 +38,20 @@ internal class AnotherFakeAPI { - returns: RequestBuilder */ internal class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/another-fake/dummy" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/another-fake/dummy" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 61e43e6ec10..227724b50cb 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -36,21 +36,21 @@ internal class FakeAPI { - returns: RequestBuilder */ internal class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { - let path = "/fake/outer/boolean" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/boolean" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -77,21 +77,21 @@ internal class FakeAPI { - returns: RequestBuilder */ internal class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { - let path = "/fake/outer/composite" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/composite" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -118,21 +118,21 @@ internal class FakeAPI { - returns: RequestBuilder */ internal class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { - let path = "/fake/outer/number" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/number" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -159,21 +159,21 @@ internal class FakeAPI { - returns: RequestBuilder */ internal class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { - let path = "/fake/outer/string" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/string" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -200,21 +200,21 @@ internal class FakeAPI { - returns: RequestBuilder */ internal class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-file-schema" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -242,24 +242,24 @@ internal class FakeAPI { - returns: RequestBuilder */ internal class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-query-params" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "query": query.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -288,21 +288,21 @@ internal class FakeAPI { - returns: RequestBuilder */ internal class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -360,9 +360,9 @@ internal class FakeAPI { - returns: RequestBuilder */ internal class func testEndpointParametersWithRequestBuilder(integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, number: Double, float: Float? = nil, double: Double, string: String? = nil, patternWithoutDelimiter: String, byte: Data, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), @@ -379,20 +379,20 @@ internal class FakeAPI { "callback": callback?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -502,35 +502,35 @@ internal class FakeAPI { - returns: RequestBuilder */ internal class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_double": enumQueryDouble?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string": enumHeaderString?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -569,28 +569,28 @@ internal class FakeAPI { - returns: RequestBuilder */ internal class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "required_string_group": requiredStringGroup.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(), "int64_group": int64Group?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "required_boolean_group": requiredBooleanGroup.encodeToJSON(), "boolean_group": booleanGroup?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -618,21 +618,21 @@ internal class FakeAPI { - returns: RequestBuilder */ internal class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + let localVariablePath = "/fake/inline-additionalProperties" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -662,26 +662,26 @@ internal class FakeAPI { - returns: RequestBuilder */ internal class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { - let path = "/fake/jsonFormData" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake/jsonFormData" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 2a7bc6d2ef8..61e190bec70 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -41,20 +41,20 @@ internal class FakeClassnameTags123API { - returns: RequestBuilder */ internal class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake_classname_test" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake_classname_test" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 9828ee518ff..0d583238fda 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -40,21 +40,21 @@ internal class PetAPI { - returns: RequestBuilder */ internal class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -87,24 +87,24 @@ internal class PetAPI { - returns: RequestBuilder */ internal class func deletePetWithRequestBuilder(apiKey: String? = nil, petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "api_key": apiKey?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -145,24 +145,24 @@ internal class PetAPI { - returns: RequestBuilder<[Pet]> */ internal class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "status": status.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -196,24 +196,24 @@ internal class PetAPI { */ @available(*, deprecated, message: "This operation is deprecated.") internal class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "tags": tags.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -245,24 +245,24 @@ internal class PetAPI { - returns: RequestBuilder */ internal class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -293,21 +293,21 @@ internal class PetAPI { - returns: RequestBuilder */ internal class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -342,30 +342,30 @@ internal class PetAPI { - returns: RequestBuilder */ internal class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -400,30 +400,30 @@ internal class PetAPI { - returns: RequestBuilder */ internal class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -458,29 +458,29 @@ internal class PetAPI { - returns: RequestBuilder */ internal class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, requiredFile: URL) -> RequestBuilder { - var path = "/fake/{petId}/uploadImageWithRequiredFile" + var localVariablePath = "/fake/{petId}/uploadImageWithRequiredFile" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index ab762a4f84c..e29c10d4161 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -38,24 +38,24 @@ internal class StoreAPI { - returns: RequestBuilder */ internal class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -85,21 +85,21 @@ internal class StoreAPI { - returns: RequestBuilder<[String: Int]> */ internal class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -128,24 +128,24 @@ internal class StoreAPI { - returns: RequestBuilder */ internal class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -173,20 +173,20 @@ internal class StoreAPI { - returns: RequestBuilder */ internal class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index a1ac6beeb22..9d8fcd3324c 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -38,21 +38,21 @@ internal class UserAPI { - returns: RequestBuilder */ internal class func createUserWithRequestBuilder(body: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -80,21 +80,21 @@ internal class UserAPI { - returns: RequestBuilder */ internal class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -122,21 +122,21 @@ internal class UserAPI { - returns: RequestBuilder */ internal class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -165,24 +165,24 @@ internal class UserAPI { - returns: RequestBuilder */ internal class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -210,24 +210,24 @@ internal class UserAPI { - returns: RequestBuilder */ internal class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -258,25 +258,25 @@ internal class UserAPI { - returns: RequestBuilder */ internal class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "username": username.encodeToJSON(), "password": password.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -302,21 +302,21 @@ internal class UserAPI { - returns: RequestBuilder */ internal class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -347,23 +347,23 @@ internal class UserAPI { - returns: RequestBuilder */ internal class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 932d46d6ace..a14eef304fe 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -38,20 +38,20 @@ import AnyCodable - returns: RequestBuilder */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/another-fake/dummy" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/another-fake/dummy" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 81f62a73feb..b8c26ff6fce 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -36,21 +36,21 @@ import AnyCodable - returns: RequestBuilder */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { - let path = "/fake/outer/boolean" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/boolean" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -77,21 +77,21 @@ import AnyCodable - returns: RequestBuilder */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { - let path = "/fake/outer/composite" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/composite" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -118,21 +118,21 @@ import AnyCodable - returns: RequestBuilder */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { - let path = "/fake/outer/number" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/number" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -159,21 +159,21 @@ import AnyCodable - returns: RequestBuilder */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { - let path = "/fake/outer/string" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/string" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -200,21 +200,21 @@ import AnyCodable - returns: RequestBuilder */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-file-schema" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -242,24 +242,24 @@ import AnyCodable - returns: RequestBuilder */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-query-params" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "query": query.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -288,21 +288,21 @@ import AnyCodable - returns: RequestBuilder */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -360,9 +360,9 @@ import AnyCodable - returns: RequestBuilder */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), @@ -379,20 +379,20 @@ import AnyCodable "callback": callback?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -502,35 +502,35 @@ import AnyCodable - returns: RequestBuilder */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_double": enumQueryDouble?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string": enumHeaderString?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -569,28 +569,28 @@ import AnyCodable - returns: RequestBuilder */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "required_string_group": requiredStringGroup.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(), "int64_group": int64Group?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "required_boolean_group": requiredBooleanGroup.encodeToJSON(), "boolean_group": booleanGroup?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -618,21 +618,21 @@ import AnyCodable - returns: RequestBuilder */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + let localVariablePath = "/fake/inline-additionalProperties" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -662,26 +662,26 @@ import AnyCodable - returns: RequestBuilder */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { - let path = "/fake/jsonFormData" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake/jsonFormData" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 7f3651400e4..1a85f0ae98a 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -41,20 +41,20 @@ import AnyCodable - returns: RequestBuilder */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake_classname_test" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake_classname_test" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 8797c88211e..260f720e5f0 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -40,21 +40,21 @@ import AnyCodable - returns: RequestBuilder */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -87,24 +87,24 @@ import AnyCodable - returns: RequestBuilder */ open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "api_key": apiKey?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -145,24 +145,24 @@ import AnyCodable - returns: RequestBuilder<[Pet]> */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "status": status.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -196,24 +196,24 @@ import AnyCodable */ @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "tags": tags.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -245,24 +245,24 @@ import AnyCodable - returns: RequestBuilder */ open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -293,21 +293,21 @@ import AnyCodable - returns: RequestBuilder */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -342,30 +342,30 @@ import AnyCodable - returns: RequestBuilder */ open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -400,30 +400,30 @@ import AnyCodable - returns: RequestBuilder */ open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -458,29 +458,29 @@ import AnyCodable - returns: RequestBuilder */ open class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil) -> RequestBuilder { - var path = "/fake/{petId}/uploadImageWithRequiredFile" + var localVariablePath = "/fake/{petId}/uploadImageWithRequiredFile" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 30856f73a3d..af6cb556b0c 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -38,24 +38,24 @@ import AnyCodable - returns: RequestBuilder */ open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -85,21 +85,21 @@ import AnyCodable - returns: RequestBuilder<[String: Int]> */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -128,24 +128,24 @@ import AnyCodable - returns: RequestBuilder */ open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -173,20 +173,20 @@ import AnyCodable - returns: RequestBuilder */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index d66abcb14bf..8e2627a0aaf 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -38,21 +38,21 @@ import AnyCodable - returns: RequestBuilder */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -80,21 +80,21 @@ import AnyCodable - returns: RequestBuilder */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -122,21 +122,21 @@ import AnyCodable - returns: RequestBuilder */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -165,24 +165,24 @@ import AnyCodable - returns: RequestBuilder */ open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -210,24 +210,24 @@ import AnyCodable - returns: RequestBuilder */ open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -258,25 +258,25 @@ import AnyCodable - returns: RequestBuilder */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "username": username.encodeToJSON(), "password": password.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -302,21 +302,21 @@ import AnyCodable - returns: RequestBuilder */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -347,23 +347,23 @@ import AnyCodable - returns: RequestBuilder */ open class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift index 6d18703c99e..a8accc5620a 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/APIs/DefaultAPI.swift @@ -33,20 +33,20 @@ open class DefaultAPI { - returns: RequestBuilder */ open class func rootGetWithRequestBuilder() -> RequestBuilder { - let path = "/" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/promisekitLibrary/Package.resolved b/samples/client/petstore/swift5/promisekitLibrary/Package.resolved index 2db4b9c3ce3..a5cb30382b9 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/Package.resolved +++ b/samples/client/petstore/swift5/promisekitLibrary/Package.resolved @@ -12,7 +12,7 @@ }, { "package": "PromiseKit", - "repositoryURL": "https://github.com/mxcl/PromiseKit.git", + "repositoryURL": "https://github.com/mxcl/PromiseKit", "state": { "branch": null, "revision": "d2f7ba14bcdc45e18f4f60ad9df883fb9055f081", diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 55126ff4f11..b6b46f860e6 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -41,20 +41,20 @@ open class AnotherFakeAPI { - returns: RequestBuilder */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/another-fake/dummy" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/another-fake/dummy" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 23e4ba9c8f5..418fbd1f1b0 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -39,21 +39,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { - let path = "/fake/outer/boolean" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/boolean" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -82,21 +82,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { - let path = "/fake/outer/composite" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/composite" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -125,21 +125,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { - let path = "/fake/outer/number" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/number" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -168,21 +168,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { - let path = "/fake/outer/string" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/string" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -211,21 +211,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-file-schema" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -255,24 +255,24 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-query-params" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "query": query.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -303,21 +303,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -377,9 +377,9 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), @@ -396,20 +396,20 @@ open class FakeAPI { "callback": callback?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -521,35 +521,35 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_double": enumQueryDouble?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string": enumHeaderString?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -590,28 +590,28 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "required_string_group": requiredStringGroup.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(), "int64_group": int64Group?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "required_boolean_group": requiredBooleanGroup.encodeToJSON(), "boolean_group": booleanGroup?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -641,21 +641,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + let localVariablePath = "/fake/inline-additionalProperties" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -687,26 +687,26 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { - let path = "/fake/jsonFormData" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake/jsonFormData" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 52d394026e2..379ab863940 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -44,20 +44,20 @@ open class FakeClassnameTags123API { - returns: RequestBuilder */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake_classname_test" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake_classname_test" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index eabaa59872a..683baa07b70 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -43,21 +43,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -92,24 +92,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "api_key": apiKey?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -152,24 +152,24 @@ open class PetAPI { - returns: RequestBuilder<[Pet]> */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "status": status.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -205,24 +205,24 @@ open class PetAPI { */ @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "tags": tags.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -256,24 +256,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -306,21 +306,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -357,30 +357,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -417,30 +417,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -477,29 +477,29 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil) -> RequestBuilder { - var path = "/fake/{petId}/uploadImageWithRequiredFile" + var localVariablePath = "/fake/{petId}/uploadImageWithRequiredFile" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 8376ab9883e..fcc555ed5fb 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -41,24 +41,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -90,21 +90,21 @@ open class StoreAPI { - returns: RequestBuilder<[String: Int]> */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -135,24 +135,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -182,20 +182,20 @@ open class StoreAPI { - returns: RequestBuilder */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 1d9a3e6a443..535525375b2 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -41,21 +41,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -85,21 +85,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -129,21 +129,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -174,24 +174,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -221,24 +221,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -271,25 +271,25 @@ open class UserAPI { - returns: RequestBuilder */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "username": username.encodeToJSON(), "password": password.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -317,21 +317,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -364,23 +364,23 @@ open class UserAPI { - returns: RequestBuilder */ open class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 7d09ab30c12..ac9dd9b74f2 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -38,20 +38,20 @@ open class AnotherFakeAPI { - returns: RequestBuilder */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/another-fake/dummy" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/another-fake/dummy" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 5480213e38d..d7260ca2e3a 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -36,21 +36,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { - let path = "/fake/outer/boolean" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/boolean" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -77,21 +77,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { - let path = "/fake/outer/composite" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/composite" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -118,21 +118,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { - let path = "/fake/outer/number" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/number" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -159,21 +159,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { - let path = "/fake/outer/string" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/string" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -200,21 +200,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-file-schema" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -242,24 +242,24 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-query-params" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "query": query.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -288,21 +288,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -360,9 +360,9 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), @@ -379,20 +379,20 @@ open class FakeAPI { "callback": callback?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -502,35 +502,35 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_double": enumQueryDouble?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string": enumHeaderString?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -569,28 +569,28 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "required_string_group": requiredStringGroup.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(), "int64_group": int64Group?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "required_boolean_group": requiredBooleanGroup.encodeToJSON(), "boolean_group": booleanGroup?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -618,21 +618,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + let localVariablePath = "/fake/inline-additionalProperties" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -662,26 +662,26 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { - let path = "/fake/jsonFormData" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake/jsonFormData" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 9683e0ce5b1..a6ca6c66b51 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -41,20 +41,20 @@ open class FakeClassnameTags123API { - returns: RequestBuilder */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake_classname_test" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake_classname_test" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 8cbd15364b6..8b97def931c 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -40,21 +40,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -87,24 +87,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "api_key": apiKey?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -145,24 +145,24 @@ open class PetAPI { - returns: RequestBuilder<[Pet]> */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "status": status.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -196,24 +196,24 @@ open class PetAPI { */ @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "tags": tags.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -245,24 +245,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -293,21 +293,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -342,30 +342,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -400,30 +400,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -458,29 +458,29 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil) -> RequestBuilder { - var path = "/fake/{petId}/uploadImageWithRequiredFile" + var localVariablePath = "/fake/{petId}/uploadImageWithRequiredFile" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index a83e954ae6a..53c1fed1eb3 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -38,24 +38,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -85,21 +85,21 @@ open class StoreAPI { - returns: RequestBuilder<[String: Int]> */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -128,24 +128,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -173,20 +173,20 @@ open class StoreAPI { - returns: RequestBuilder */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index dbff6ade41c..c1e5691390e 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -38,21 +38,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -80,21 +80,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -122,21 +122,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -165,24 +165,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -210,24 +210,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -258,25 +258,25 @@ open class UserAPI { - returns: RequestBuilder */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "username": username.encodeToJSON(), "password": password.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -302,21 +302,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -347,23 +347,23 @@ open class UserAPI { - returns: RequestBuilder */ open class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index cae5f3f349a..7c3818d8baa 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -38,20 +38,20 @@ open class AnotherFakeAPI { - returns: RequestBuilder */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/another-fake/dummy" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/another-fake/dummy" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 6a9229f32eb..42e94e88222 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -36,21 +36,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { - let path = "/fake/outer/boolean" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/boolean" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -77,21 +77,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { - let path = "/fake/outer/composite" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/composite" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -118,21 +118,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { - let path = "/fake/outer/number" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/number" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -159,21 +159,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { - let path = "/fake/outer/string" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/string" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -200,21 +200,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-file-schema" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -242,24 +242,24 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-query-params" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "query": query.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -288,21 +288,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -360,9 +360,9 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), @@ -379,20 +379,20 @@ open class FakeAPI { "callback": callback?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -502,35 +502,35 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_double": enumQueryDouble?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string": enumHeaderString?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -569,28 +569,28 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "required_string_group": requiredStringGroup.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(), "int64_group": int64Group?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "required_boolean_group": requiredBooleanGroup.encodeToJSON(), "boolean_group": booleanGroup?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -618,21 +618,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + let localVariablePath = "/fake/inline-additionalProperties" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -662,26 +662,26 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { - let path = "/fake/jsonFormData" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake/jsonFormData" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 2f693b327d4..3dc0e033b32 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -41,20 +41,20 @@ open class FakeClassnameTags123API { - returns: RequestBuilder */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake_classname_test" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake_classname_test" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 6dafda832a6..497686d59d5 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -40,21 +40,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -87,24 +87,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "api_key": apiKey?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -145,24 +145,24 @@ open class PetAPI { - returns: RequestBuilder<[Pet]> */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "status": status.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -196,24 +196,24 @@ open class PetAPI { */ @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "tags": tags.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -245,24 +245,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -293,21 +293,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -342,30 +342,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -400,30 +400,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -458,29 +458,29 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil) -> RequestBuilder { - var path = "/fake/{petId}/uploadImageWithRequiredFile" + var localVariablePath = "/fake/{petId}/uploadImageWithRequiredFile" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 273ca0423a6..41ceebd8b76 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -38,24 +38,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -85,21 +85,21 @@ open class StoreAPI { - returns: RequestBuilder<[String: Int]> */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -128,24 +128,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -173,20 +173,20 @@ open class StoreAPI { - returns: RequestBuilder */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index 62c9dd6e3cb..da5cd64f60d 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -38,21 +38,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -80,21 +80,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -122,21 +122,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -165,24 +165,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -210,24 +210,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -258,25 +258,25 @@ open class UserAPI { - returns: RequestBuilder */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "username": username.encodeToJSON(), "password": password.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -302,21 +302,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -347,23 +347,23 @@ open class UserAPI { - returns: RequestBuilder */ open class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/Package.resolved b/samples/client/petstore/swift5/rxswiftLibrary/Package.resolved index 58d00d4dd63..638fc4cc35b 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/Package.resolved +++ b/samples/client/petstore/swift5/rxswiftLibrary/Package.resolved @@ -12,7 +12,7 @@ }, { "package": "RxSwift", - "repositoryURL": "https://github.com/ReactiveX/RxSwift.git", + "repositoryURL": "https://github.com/ReactiveX/RxSwift", "state": { "branch": null, "revision": "7c17a6ccca06b5c107cfa4284e634562ddaf5951", diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 53feaab19c9..120be970deb 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -43,20 +43,20 @@ open class AnotherFakeAPI { - returns: RequestBuilder */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/another-fake/dummy" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/another-fake/dummy" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 6e93b4da9c3..ea76a5a7ba1 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -41,21 +41,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { - let path = "/fake/outer/boolean" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/boolean" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -86,21 +86,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { - let path = "/fake/outer/composite" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/composite" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -131,21 +131,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { - let path = "/fake/outer/number" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/number" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -176,21 +176,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { - let path = "/fake/outer/string" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/string" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -221,21 +221,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-file-schema" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -267,24 +267,24 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-query-params" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "query": query.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -317,21 +317,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -393,9 +393,9 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), @@ -412,20 +412,20 @@ open class FakeAPI { "callback": callback?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -539,35 +539,35 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_double": enumQueryDouble?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string": enumHeaderString?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -610,28 +610,28 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "required_string_group": requiredStringGroup.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(), "int64_group": int64Group?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "required_boolean_group": requiredBooleanGroup.encodeToJSON(), "boolean_group": booleanGroup?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -663,21 +663,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + let localVariablePath = "/fake/inline-additionalProperties" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -711,26 +711,26 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { - let path = "/fake/jsonFormData" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake/jsonFormData" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 698c1ea36e6..5cdfe3663d1 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -46,20 +46,20 @@ open class FakeClassnameTags123API { - returns: RequestBuilder */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake_classname_test" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake_classname_test" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index a94255d6337..024c54a2b2e 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -45,21 +45,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -96,24 +96,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "api_key": apiKey?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -158,24 +158,24 @@ open class PetAPI { - returns: RequestBuilder<[Pet]> */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "status": status.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -213,24 +213,24 @@ open class PetAPI { */ @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "tags": tags.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -266,24 +266,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -318,21 +318,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -371,30 +371,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -433,30 +433,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -495,29 +495,29 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil) -> RequestBuilder { - var path = "/fake/{petId}/uploadImageWithRequiredFile" + var localVariablePath = "/fake/{petId}/uploadImageWithRequiredFile" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index 6a771cae237..e7f0482ec73 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -43,24 +43,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -94,21 +94,21 @@ open class StoreAPI { - returns: RequestBuilder<[String: Int]> */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -141,24 +141,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -190,20 +190,20 @@ open class StoreAPI { - returns: RequestBuilder */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index a268b55cc45..8df7e2e839f 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -43,21 +43,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -89,21 +89,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -135,21 +135,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -182,24 +182,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -231,24 +231,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -283,25 +283,25 @@ open class UserAPI { - returns: RequestBuilder */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "username": username.encodeToJSON(), "password": password.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -331,21 +331,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -380,23 +380,23 @@ open class UserAPI { - returns: RequestBuilder */ open class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Package.resolved b/samples/client/petstore/swift5/urlsessionLibrary/Package.resolved index cca1f0763b8..79610c3b3b3 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Package.resolved +++ b/samples/client/petstore/swift5/urlsessionLibrary/Package.resolved @@ -3,7 +3,7 @@ "pins": [ { "package": "AnyCodable", - "repositoryURL": "https://github.com/Flight-School/AnyCodable.git", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift index 978e6ba041c..72f79eaf23d 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift @@ -41,21 +41,21 @@ open class AnotherFakeAPI { - returns: RequestBuilder */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/another-fake/dummy" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/another-fake/dummy" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift index 3ddcead03e4..63e6c322351 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift @@ -39,21 +39,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { - let path = "/fake/outer/boolean" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/boolean" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -80,21 +80,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { - let path = "/fake/outer/composite" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/composite" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -121,21 +121,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { - let path = "/fake/outer/number" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/number" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -162,21 +162,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { - let path = "/fake/outer/string" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/string" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -203,21 +203,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-file-schema" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -245,24 +245,24 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-query-params" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "query": query.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -291,21 +291,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -363,9 +363,9 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), @@ -382,20 +382,20 @@ open class FakeAPI { "callback": callback?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -505,35 +505,35 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_double": enumQueryDouble?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string": enumHeaderString?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -572,28 +572,28 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "required_string_group": requiredStringGroup.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(), "int64_group": int64Group?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "required_boolean_group": requiredBooleanGroup.encodeToJSON(), "boolean_group": booleanGroup?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -621,21 +621,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + let localVariablePath = "/fake/inline-additionalProperties" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -665,27 +665,27 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { - let path = "/fake/jsonFormData" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake/jsonFormData" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift index e22de1f00c8..41e062ea4c2 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift @@ -44,21 +44,21 @@ open class FakeClassnameTags123API { - returns: RequestBuilder */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake_classname_test" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake_classname_test" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/PetAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/PetAPI.swift index 52289b62b56..fda9d86850f 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/PetAPI.swift @@ -43,21 +43,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -90,24 +90,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "api_key": apiKey?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -148,24 +148,24 @@ open class PetAPI { - returns: RequestBuilder<[Pet]> */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "status": status.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -199,24 +199,24 @@ open class PetAPI { */ @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "tags": tags.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -248,24 +248,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -296,21 +296,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -345,30 +345,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -403,30 +403,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -461,30 +461,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil) -> RequestBuilder { - var path = "/fake/{petId}/uploadImageWithRequiredFile" + var localVariablePath = "/fake/{petId}/uploadImageWithRequiredFile" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift index 19993eaff1e..eb39c79cb6b 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift @@ -41,24 +41,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -88,21 +88,21 @@ open class StoreAPI { - returns: RequestBuilder<[String: Int]> */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -131,24 +131,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -176,21 +176,21 @@ open class StoreAPI { - returns: RequestBuilder */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/UserAPI.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/UserAPI.swift index 9e0ae01d871..9a97c60cca7 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/APIs/UserAPI.swift @@ -41,21 +41,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -83,21 +83,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -125,21 +125,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -168,24 +168,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -213,24 +213,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -261,25 +261,25 @@ open class UserAPI { - returns: RequestBuilder */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "username": username.encodeToJSON(), "password": password.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -305,21 +305,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -350,24 +350,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } } diff --git a/samples/client/petstore/swift5/vaporLibrary/Package.resolved b/samples/client/petstore/swift5/vaporLibrary/Package.resolved index 753725586cd..2d40b361051 100644 --- a/samples/client/petstore/swift5/vaporLibrary/Package.resolved +++ b/samples/client/petstore/swift5/vaporLibrary/Package.resolved @@ -15,8 +15,8 @@ "repositoryURL": "https://github.com/swift-server/async-http-client.git", "state": { "branch": null, - "revision": "8ccba7328d178ac05a1a9803cf3f2c6660d2f826", - "version": "1.3.0" + "revision": "8e4d51908dd49272667126403bf977c5c503f78f", + "version": "1.5.0" } }, { @@ -42,8 +42,8 @@ "repositoryURL": "https://github.com/vapor/multipart-kit.git", "state": { "branch": null, - "revision": "2376b4949e8a1675f7c495224029498194eecf61", - "version": "4.0.3" + "revision": "c9ea04017b7fb3b1f034ad7a77f8e53d3e080be5", + "version": "4.2.1" } }, { @@ -96,8 +96,8 @@ "repositoryURL": "https://github.com/apple/swift-nio.git", "state": { "branch": null, - "revision": "d161bf658780b209c185994528e7e24376cf7283", - "version": "2.29.0" + "revision": "d79e33308b0ac83326b0ead0ea6446e604b8162d", + "version": "2.30.0" } }, { @@ -105,8 +105,8 @@ "repositoryURL": "https://github.com/apple/swift-nio-extras.git", "state": { "branch": null, - "revision": "de1c80ad1fdff1ba772bcef6b392c3ef735f39a6", - "version": "1.8.0" + "revision": "f72c4688f89c28502105509186eadc49a49cb922", + "version": "1.10.0" } }, { @@ -114,8 +114,8 @@ "repositoryURL": "https://github.com/apple/swift-nio-http2.git", "state": { "branch": null, - "revision": "e3e9024a632b40695ad5d3a85f9776a9b27a4bc6", - "version": "1.17.0" + "revision": "13b6a7a83864005334818d7ea2a3053869a96c04", + "version": "1.18.0" } }, { @@ -123,8 +123,8 @@ "repositoryURL": "https://github.com/apple/swift-nio-ssl.git", "state": { "branch": null, - "revision": "6363cdf6d2fb863e82434f3c4618f4e896e37569", - "version": "2.13.1" + "revision": "9db7cee4b62c39160a6bd513a47a1ecdcceac18a", + "version": "2.14.0" } }, { @@ -132,17 +132,17 @@ "repositoryURL": "https://github.com/apple/swift-nio-transport-services.git", "state": { "branch": null, - "revision": "657537c2cf1845f8d5201ecc4e48f21f21841128", - "version": "1.10.0" + "revision": "39587bceccda72780e2a8a8c5e857e42a9df2fa8", + "version": "1.11.0" } }, { "package": "vapor", - "repositoryURL": "https://github.com/vapor/vapor.git", + "repositoryURL": "https://github.com/vapor/vapor", "state": { "branch": null, - "revision": "bc194e3868cbd9cf3cd41392e9b10d6fad089bc4", - "version": "4.45.7" + "revision": "086d0b80f2c3623ffd6b5e32b964ad00b67c2e90", + "version": "4.47.1" } }, { diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift index fa2b11dab66..ac279c5e199 100644 --- a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/AnotherFakeAPI.swift @@ -21,20 +21,20 @@ open class AnotherFakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func call123testSpecialTagsRaw(body: Client, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/another-fake/dummy" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/another-fake/dummy" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.PATCH, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.PATCH, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Client.defaultContentType)) + try localVariableRequest.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Client.defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift index f9216c9884e..16aa16bac11 100644 --- a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeAPI.swift @@ -21,20 +21,20 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func createXmlItemRaw(xmlItem: XmlItem, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake/create_xml_item" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake/create_xml_item" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(xmlItem, using: Configuration.contentConfiguration.requireEncoder(for: XmlItem.defaultContentType)) + try localVariableRequest.content.encode(xmlItem, using: Configuration.contentConfiguration.requireEncoder(for: XmlItem.defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -69,23 +69,22 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func fakeOuterBooleanSerializeRaw(body: Bool? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake/outer/boolean" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake/outer/boolean" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - if let body = body { - - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Bool.defaultContentType)) + if let localVariableBody = body { + try localVariableRequest.content.encode(localVariableBody, using: Configuration.contentConfiguration.requireEncoder(for: Bool.defaultContentType)) } - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -119,23 +118,22 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func fakeOuterCompositeSerializeRaw(body: OuterComposite? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake/outer/composite" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake/outer/composite" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - if let body = body { - - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: OuterComposite.defaultContentType)) + if let localVariableBody = body { + try localVariableRequest.content.encode(localVariableBody, using: Configuration.contentConfiguration.requireEncoder(for: OuterComposite.defaultContentType)) } - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -169,23 +167,22 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func fakeOuterNumberSerializeRaw(body: Double? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake/outer/number" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake/outer/number" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - if let body = body { - - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Double.defaultContentType)) + if let localVariableBody = body { + try localVariableRequest.content.encode(localVariableBody, using: Configuration.contentConfiguration.requireEncoder(for: Double.defaultContentType)) } - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -219,23 +216,22 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func fakeOuterStringSerializeRaw(body: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake/outer/string" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake/outer/string" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - if let body = body { - - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: String.defaultContentType)) + if let localVariableBody = body { + try localVariableRequest.content.encode(localVariableBody, using: Configuration.contentConfiguration.requireEncoder(for: String.defaultContentType)) } - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -269,20 +265,20 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func testBodyWithFileSchemaRaw(body: FileSchemaTestClass, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake/body-with-file-schema" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.PUT, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.PUT, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: FileSchemaTestClass.defaultContentType)) + try localVariableRequest.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: FileSchemaTestClass.defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -316,23 +312,23 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func testBodyWithQueryParamsRaw(query: String, body: User, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake/body-with-query-params" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.PUT, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.PUT, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) struct QueryParams: Content { var query: String } - try request.query.encode(QueryParams(query: query)) - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: User.defaultContentType)) + try localVariableRequest.query.encode(QueryParams(query: query)) + try localVariableRequest.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: User.defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -367,20 +363,20 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func testClientModelRaw(body: Client, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.PATCH, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.PATCH, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Client.defaultContentType)) + try localVariableRequest.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Client.defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -432,15 +428,15 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func testEndpointParametersRaw(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: Data? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) struct FormParams: Content { @@ -460,8 +456,8 @@ open class FakeAPI { var password: String? var callback: String? } - try request.content.encode(FormParams(integer: integer, int32: int32, int64: int64, number: number, float: float, double: double, string: string, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) - try beforeSend(&request) + try localVariableRequest.content.encode(FormParams(integer: integer, int32: int32, int64: int64, number: number, float: float, double: double, string: string, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) + try beforeSend(&localVariableRequest) } } @@ -590,19 +586,19 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func testEnumParametersRaw(enumHeaderStringArray: [EnumHeaderStringArray_testEnumParameters]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [EnumQueryStringArray_testEnumParameters]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [EnumFormStringArray_testEnumParameters]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.GET, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - request.headers.add(name: "enum_header_string_array", value: enumHeaderStringArray?.map { $0.rawValue.description }.description ?? "") + localVariableRequest.headers.add(name: "enum_header_string_array", value: enumHeaderStringArray?.map { $0.rawValue.description }.description ?? "") - request.headers.add(name: "enum_header_string", value: enumHeaderString?.rawValue.description ?? "") + localVariableRequest.headers.add(name: "enum_header_string", value: enumHeaderString?.rawValue.description ?? "") struct QueryParams: Content { var enumQueryStringArray: [EnumQueryStringArray_testEnumParameters]? @@ -610,14 +606,14 @@ open class FakeAPI { var enumQueryInteger: EnumQueryInteger_testEnumParameters? var enumQueryDouble: EnumQueryDouble_testEnumParameters? } - try request.query.encode(QueryParams(enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble)) + try localVariableRequest.query.encode(QueryParams(enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble)) struct FormParams: Content { static let defaultContentType = Vapor.HTTPMediaType.formData var enumFormStringArray: [EnumFormStringArray_testEnumParameters]? var enumFormString: EnumFormString_testEnumParameters? } - try request.content.encode(FormParams(enumFormStringArray: enumFormStringArray, enumFormString: enumFormString), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) - try beforeSend(&request) + try localVariableRequest.content.encode(FormParams(enumFormStringArray: enumFormStringArray, enumFormString: enumFormString), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) + try beforeSend(&localVariableRequest) } } @@ -668,19 +664,19 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func testGroupParametersRaw(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.DELETE, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.DELETE, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - request.headers.add(name: "required_boolean_group", value: requiredBooleanGroup.description) + localVariableRequest.headers.add(name: "required_boolean_group", value: requiredBooleanGroup.description) - request.headers.add(name: "boolean_group", value: booleanGroup?.description ?? "") + localVariableRequest.headers.add(name: "boolean_group", value: booleanGroup?.description ?? "") struct QueryParams: Content { var requiredStringGroup: Int @@ -688,9 +684,9 @@ open class FakeAPI { var stringGroup: Int? var int64Group: Int64? } - try request.query.encode(QueryParams(requiredStringGroup: requiredStringGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, int64Group: int64Group)) + try localVariableRequest.query.encode(QueryParams(requiredStringGroup: requiredStringGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, int64Group: int64Group)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -730,20 +726,20 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func testInlineAdditionalPropertiesRaw(param: [String: String], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake/inline-additionalProperties" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(param, using: Configuration.contentConfiguration.requireEncoder(for: [String: String].defaultContentType)) + try localVariableRequest.content.encode(param, using: Configuration.contentConfiguration.requireEncoder(for: [String: String].defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -778,15 +774,15 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func testJsonFormDataRaw(param: String, param2: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake/jsonFormData" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake/jsonFormData" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.GET, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) struct FormParams: Content { @@ -794,8 +790,8 @@ open class FakeAPI { var param: String var param2: String } - try request.content.encode(FormParams(param: param, param2: param2), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) - try beforeSend(&request) + try localVariableRequest.content.encode(FormParams(param: param, param2: param2), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) + try beforeSend(&localVariableRequest) } } @@ -834,15 +830,15 @@ open class FakeAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func testQueryParameterCollectionFormatRaw(pipe: [String], ioutil: [String], http: [String], url: [String], context: [String], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake/test-query-paramters" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake/test-query-paramters" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.PUT, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.PUT, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) struct QueryParams: Content { var pipe: [String] @@ -851,9 +847,9 @@ open class FakeAPI { var url: [String] var context: [String] } - try request.query.encode(QueryParams(pipe: pipe, ioutil: ioutil, http: http, url: url, context: context)) + try localVariableRequest.query.encode(QueryParams(pipe: pipe, ioutil: ioutil, http: http, url: url, context: context)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift index 0df1da56467..b7c84887c15 100644 --- a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/FakeClassnameTags123API.swift @@ -24,20 +24,20 @@ open class FakeClassnameTags123API { - returns: `EventLoopFuture` of `ClientResponse` */ open class func testClassnameRaw(body: Client, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/fake_classname_test" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/fake_classname_test" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.PATCH, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.PATCH, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Client.defaultContentType)) + try localVariableRequest.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Client.defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/PetAPI.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/PetAPI.swift index c38aad02331..fb35eba5e72 100644 --- a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/PetAPI.swift @@ -23,20 +23,20 @@ open class PetAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func addPetRaw(body: Pet, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/pet" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Pet.defaultContentType)) + try localVariableRequest.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Pet.defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -80,24 +80,24 @@ open class PetAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func deletePetRaw(petId: Int64, apiKey: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = String(describing: petId) let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.DELETE, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.DELETE, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - request.headers.add(name: "api_key", value: apiKey?.description ?? "") + localVariableRequest.headers.add(name: "api_key", value: apiKey?.description ?? "") - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -151,22 +151,22 @@ open class PetAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func findPetsByStatusRaw(status: [Status_findPetsByStatus], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.GET, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) struct QueryParams: Content { var status: [Status_findPetsByStatus] } - try request.query.encode(QueryParams(status: status)) + try localVariableRequest.query.encode(QueryParams(status: status)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -212,22 +212,22 @@ open class PetAPI { */ @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsRaw(tags: Set, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.GET, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) struct QueryParams: Content { var tags: Set } - try request.query.encode(QueryParams(tags: tags)) + try localVariableRequest.query.encode(QueryParams(tags: tags)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -273,22 +273,22 @@ open class PetAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func getPetByIdRaw(petId: Int64, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = String(describing: petId) let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.GET, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -335,20 +335,20 @@ open class PetAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func updatePetRaw(body: Pet, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/pet" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.PUT, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.PUT, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Pet.defaultContentType)) + try localVariableRequest.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Pet.defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -399,18 +399,18 @@ open class PetAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func updatePetWithFormRaw(petId: Int64, name: String? = nil, status: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = String(describing: petId) let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) struct FormParams: Content { @@ -418,8 +418,8 @@ open class PetAPI { var name: String? var status: String? } - try request.content.encode(FormParams(name: name, status: status), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) - try beforeSend(&request) + try localVariableRequest.content.encode(FormParams(name: name, status: status), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) + try beforeSend(&localVariableRequest) } } @@ -463,18 +463,18 @@ open class PetAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func uploadFileRaw(petId: Int64, additionalMetadata: String? = nil, file: Data? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = String(describing: petId) let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) struct FormParams: Content { @@ -482,8 +482,8 @@ open class PetAPI { var additionalMetadata: String? var file: Data? } - try request.content.encode(FormParams(additionalMetadata: additionalMetadata, file: file), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) - try beforeSend(&request) + try localVariableRequest.content.encode(FormParams(additionalMetadata: additionalMetadata, file: file), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) + try beforeSend(&localVariableRequest) } } @@ -527,18 +527,18 @@ open class PetAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func uploadFileWithRequiredFileRaw(petId: Int64, requiredFile: Data, additionalMetadata: String? = nil, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - var path = "/fake/{petId}/uploadImageWithRequiredFile" + var localVariablePath = "/fake/{petId}/uploadImageWithRequiredFile" let petIdPreEscape = String(describing: petId) let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) struct FormParams: Content { @@ -546,8 +546,8 @@ open class PetAPI { var additionalMetadata: String? var requiredFile: Data } - try request.content.encode(FormParams(additionalMetadata: additionalMetadata, requiredFile: requiredFile), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) - try beforeSend(&request) + try localVariableRequest.content.encode(FormParams(additionalMetadata: additionalMetadata, requiredFile: requiredFile), using: Configuration.contentConfiguration.requireEncoder(for: FormParams.defaultContentType)) + try beforeSend(&localVariableRequest) } } diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift index e4c2f8020b7..0937a57ad3d 100644 --- a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/StoreAPI.swift @@ -21,22 +21,22 @@ open class StoreAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func deleteOrderRaw(orderId: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = String(describing: orderId) let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.DELETE, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.DELETE, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -77,19 +77,19 @@ open class StoreAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func getInventoryRaw(headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.GET, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -127,22 +127,22 @@ open class StoreAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func getOrderByIdRaw(orderId: Int64, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = String(describing: orderId) let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.GET, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -183,20 +183,20 @@ open class StoreAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func placeOrderRaw(body: Order, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Order.defaultContentType)) + try localVariableRequest.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: Order.defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } diff --git a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/UserAPI.swift b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/UserAPI.swift index b8eb7f4d576..a0d83204e50 100644 --- a/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/vaporLibrary/Sources/PetstoreClient/APIs/UserAPI.swift @@ -21,20 +21,20 @@ open class UserAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func createUserRaw(body: User, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/user" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: User.defaultContentType)) + try localVariableRequest.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: User.defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -66,20 +66,20 @@ open class UserAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func createUsersWithArrayInputRaw(body: [User], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: [User].defaultContentType)) + try localVariableRequest.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: [User].defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -110,20 +110,20 @@ open class UserAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func createUsersWithListInputRaw(body: [User], headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.POST, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.POST, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: [User].defaultContentType)) + try localVariableRequest.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: [User].defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -155,22 +155,22 @@ open class UserAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func deleteUserRaw(username: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = String(describing: username) let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.DELETE, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.DELETE, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -208,22 +208,22 @@ open class UserAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func getUserByNameRaw(username: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = String(describing: username) let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.GET, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -265,23 +265,23 @@ open class UserAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func loginUserRaw(username: String, password: String, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.GET, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) struct QueryParams: Content { var username: String var password: String } - try request.query.encode(QueryParams(username: username, password: password)) + try localVariableRequest.query.encode(QueryParams(username: username, password: password)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -319,19 +319,19 @@ open class UserAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func logoutUserRaw(headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.GET, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.GET, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } @@ -363,23 +363,23 @@ open class UserAPI { - returns: `EventLoopFuture` of `ClientResponse` */ open class func updateUserRaw(username: String, body: User, headers: HTTPHeaders = PetstoreClient.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = String(describing: username) let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath - guard let apiClient = Configuration.apiClient else { + guard let localVariableApiClient = Configuration.apiClient else { fatalError("Configuration.apiClient is not set.") } - return apiClient.send(.PUT, headers: headers, to: URI(string: URLString)) { request in - try Configuration.apiWrapper(&request) + return localVariableApiClient.send(.PUT, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in + try Configuration.apiWrapper(&localVariableRequest) - try request.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: User.defaultContentType)) + try localVariableRequest.content.encode(body, using: Configuration.contentConfiguration.requireEncoder(for: User.defaultContentType)) - try beforeSend(&request) + try beforeSend(&localVariableRequest) } } diff --git a/samples/client/petstore/swift5/x-swift-hashable/Package.resolved b/samples/client/petstore/swift5/x-swift-hashable/Package.resolved index cca1f0763b8..79610c3b3b3 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/Package.resolved +++ b/samples/client/petstore/swift5/x-swift-hashable/Package.resolved @@ -3,7 +3,7 @@ "pins": [ { "package": "AnyCodable", - "repositoryURL": "https://github.com/Flight-School/AnyCodable.git", + "repositoryURL": "https://github.com/Flight-School/AnyCodable", "state": { "branch": null, "revision": "69261f239f0fffaf51495dadc4f8483fbfe97025", diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift index 7d09ab30c12..ac9dd9b74f2 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/AnotherFakeAPI.swift @@ -38,20 +38,20 @@ open class AnotherFakeAPI { - returns: RequestBuilder */ open class func call123testSpecialTagsWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/another-fake/dummy" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/another-fake/dummy" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift index 5480213e38d..d7260ca2e3a 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift @@ -36,21 +36,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterBooleanSerializeWithRequestBuilder(body: Bool? = nil) -> RequestBuilder { - let path = "/fake/outer/boolean" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/boolean" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -77,21 +77,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterCompositeSerializeWithRequestBuilder(body: OuterComposite? = nil) -> RequestBuilder { - let path = "/fake/outer/composite" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/composite" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -118,21 +118,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterNumberSerializeWithRequestBuilder(body: Double? = nil) -> RequestBuilder { - let path = "/fake/outer/number" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/number" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -159,21 +159,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func fakeOuterStringSerializeWithRequestBuilder(body: String? = nil) -> RequestBuilder { - let path = "/fake/outer/string" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/outer/string" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -200,21 +200,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithFileSchemaWithRequestBuilder(body: FileSchemaTestClass) -> RequestBuilder { - let path = "/fake/body-with-file-schema" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-file-schema" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -242,24 +242,24 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testBodyWithQueryParamsWithRequestBuilder(query: String, body: User) -> RequestBuilder { - let path = "/fake/body-with-query-params" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake/body-with-query-params" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "query": query.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -288,21 +288,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testClientModelWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -360,9 +360,9 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEndpointParametersWithRequestBuilder(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "integer": integer?.encodeToJSON(), "int32": int32?.encodeToJSON(), "int64": int64?.encodeToJSON(), @@ -379,20 +379,20 @@ open class FakeAPI { "callback": callback?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -502,35 +502,35 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testEnumParametersWithRequestBuilder(enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string": enumFormString?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_double": enumQueryDouble?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string": enumHeaderString?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -569,28 +569,28 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testGroupParametersWithRequestBuilder(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil) -> RequestBuilder { - let path = "/fake" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/fake" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "required_string_group": requiredStringGroup.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(), "int64_group": int64Group?.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "required_boolean_group": requiredBooleanGroup.encodeToJSON(), "boolean_group": booleanGroup?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -618,21 +618,21 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testInlineAdditionalPropertiesWithRequestBuilder(param: [String: String]) -> RequestBuilder { - let path = "/fake/inline-additionalProperties" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) + let localVariablePath = "/fake/inline-additionalProperties" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: param) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -662,26 +662,26 @@ open class FakeAPI { - returns: RequestBuilder */ open class func testJsonFormDataWithRequestBuilder(param: String, param2: String) -> RequestBuilder { - let path = "/fake/jsonFormData" - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + let localVariablePath = "/fake/jsonFormData" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "param": param.encodeToJSON(), "param2": param2.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift index 9683e0ce5b1..a6ca6c66b51 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/FakeClassnameTags123API.swift @@ -41,20 +41,20 @@ open class FakeClassnameTags123API { - returns: RequestBuilder */ open class func testClassnameWithRequestBuilder(body: Client) -> RequestBuilder { - let path = "/fake_classname_test" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/fake_classname_test" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "PATCH", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PATCH", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift index 8cbd15364b6..8b97def931c 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift @@ -40,21 +40,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func addPetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -87,24 +87,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func deletePetWithRequestBuilder(petId: Int64, apiKey: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "api_key": apiKey?.encodeToJSON(), ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -145,24 +145,24 @@ open class PetAPI { - returns: RequestBuilder<[Pet]> */ open class func findPetsByStatusWithRequestBuilder(status: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByStatus" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByStatus" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "status": status.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -196,24 +196,24 @@ open class PetAPI { */ @available(*, deprecated, message: "This operation is deprecated.") open class func findPetsByTagsWithRequestBuilder(tags: [String]) -> RequestBuilder<[Pet]> { - let path = "/pet/findByTags" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/pet/findByTags" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "tags": tags.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -245,24 +245,24 @@ open class PetAPI { - returns: RequestBuilder */ open class func getPetByIdWithRequestBuilder(petId: Int64) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -293,21 +293,21 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithRequestBuilder(body: Pet) -> RequestBuilder { - let path = "/pet" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/pet" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -342,30 +342,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func updatePetWithFormWithRequestBuilder(petId: Int64, name: String? = nil, status: String? = nil) -> RequestBuilder { - var path = "/pet/{petId}" + var localVariablePath = "/pet/{petId}" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "name": name?.encodeToJSON(), "status": status?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "application/x-www-form-urlencoded", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -400,30 +400,30 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequestBuilder(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil) -> RequestBuilder { - var path = "/pet/{petId}/uploadImage" + var localVariablePath = "/pet/{petId}/uploadImage" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "file": file?.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -458,29 +458,29 @@ open class PetAPI { - returns: RequestBuilder */ open class func uploadFileWithRequiredFileWithRequestBuilder(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil) -> RequestBuilder { - var path = "/fake/{petId}/uploadImageWithRequiredFile" + var localVariablePath = "/fake/{petId}/uploadImageWithRequiredFile" let petIdPreEscape = "\(APIHelper.mapValueToPathItem(petId))" let petIdPostEscape = petIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let formParams: [String: Any?] = [ + localVariablePath = localVariablePath.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableFormParams: [String: Any?] = [ "additionalMetadata": additionalMetadata?.encodeToJSON(), "requiredFile": requiredFile.encodeToJSON(), ] - let nonNullParameters = APIHelper.rejectNil(formParams) - let parameters = APIHelper.convertBoolToString(nonNullParameters) + let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams) + let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ "Content-Type": "multipart/form-data", ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift index a83e954ae6a..53c1fed1eb3 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/StoreAPI.swift @@ -38,24 +38,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func deleteOrderWithRequestBuilder(orderId: String) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -85,21 +85,21 @@ open class StoreAPI { - returns: RequestBuilder<[String: Int]> */ open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { - let path = "/store/inventory" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/store/inventory" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -128,24 +128,24 @@ open class StoreAPI { - returns: RequestBuilder */ open class func getOrderByIdWithRequestBuilder(orderId: Int64) -> RequestBuilder { - var path = "/store/order/{order_id}" + var localVariablePath = "/store/order/{order_id}" let orderIdPreEscape = "\(APIHelper.mapValueToPathItem(orderId))" let orderIdPostEscape = orderIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{order_id}", with: orderIdPostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -173,20 +173,20 @@ open class StoreAPI { - returns: RequestBuilder */ open class func placeOrderWithRequestBuilder(body: Order) -> RequestBuilder { - let path = "/store/order" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/store/order" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift index dbff6ade41c..c1e5691390e 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift @@ -38,21 +38,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUserWithRequestBuilder(body: User) -> RequestBuilder { - let path = "/user" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -80,21 +80,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithArrayInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithArray" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithArray" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -122,21 +122,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func createUsersWithListInputWithRequestBuilder(body: [User]) -> RequestBuilder { - let path = "/user/createWithList" - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + let localVariablePath = "/user/createWithList" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "POST", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -165,24 +165,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func deleteUserWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "DELETE", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -210,24 +210,24 @@ open class UserAPI { - returns: RequestBuilder */ open class func getUserByNameWithRequestBuilder(username: String) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -258,25 +258,25 @@ open class UserAPI { - returns: RequestBuilder */ open class func loginUserWithRequestBuilder(username: String, password: String) -> RequestBuilder { - let path = "/user/login" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/login" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - var urlComponents = URLComponents(string: URLString) - urlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ "username": username.encodeToJSON(), "password": password.encodeToJSON(), ]) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -302,21 +302,21 @@ open class UserAPI { - returns: RequestBuilder */ open class func logoutUserWithRequestBuilder() -> RequestBuilder { - let path = "/user/logout" - let URLString = PetstoreClient.basePath + path - let parameters: [String: Any]? = nil + let localVariablePath = "/user/logout" + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "GET", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } /** @@ -347,23 +347,23 @@ open class UserAPI { - returns: RequestBuilder */ open class func updateUserWithRequestBuilder(username: String, body: User) -> RequestBuilder { - var path = "/user/{username}" + var localVariablePath = "/user/{username}" let usernamePreEscape = "\(APIHelper.mapValueToPathItem(username))" let usernamePostEscape = usernamePreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? "" - path = path.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) - let URLString = PetstoreClient.basePath + path - let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) + localVariablePath = localVariablePath.replacingOccurrences(of: "{username}", with: usernamePostEscape, options: .literal, range: nil) + let localVariableURLString = PetstoreClient.basePath + localVariablePath + let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: body) - let urlComponents = URLComponents(string: URLString) + let localVariableUrlComponents = URLComponents(string: localVariableURLString) - let nillableHeaders: [String: Any?] = [ + let localVariableNillableHeaders: [String: Any?] = [ : ] - let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) - let requestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() + let localVariableRequestBuilder: RequestBuilder.Type = PetstoreClient.requestBuilderFactory.getNonDecodableBuilder() - return requestBuilder.init(method: "PUT", URLString: (urlComponents?.string ?? URLString), parameters: parameters, headers: headerParameters) + return localVariableRequestBuilder.init(method: "PUT", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) } } From 90f7bcd909db20fe2030f2fe53e0d1229a02b9e6 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 9 Jul 2021 17:06:55 +0800 Subject: [PATCH 190/192] Prepare v5.2.0 release (#9920) * 5.2.0 release * update samples * update meta codegen --- bin/utils/release/release_version_update.sh | 1 - modules/openapi-generator-cli/pom.xml | 2 +- modules/openapi-generator-core/pom.xml | 2 +- modules/openapi-generator-gradle-plugin/gradle.properties | 2 +- modules/openapi-generator-gradle-plugin/pom.xml | 2 +- modules/openapi-generator-maven-plugin/examples/java-client.xml | 2 +- .../examples/multi-module/java-client/pom.xml | 2 +- .../examples/non-java-invalid-spec.xml | 2 +- modules/openapi-generator-maven-plugin/examples/non-java.xml | 2 +- modules/openapi-generator-maven-plugin/pom.xml | 2 +- modules/openapi-generator-online/pom.xml | 2 +- modules/openapi-generator/pom.xml | 2 +- pom.xml | 2 +- samples/client/petstore/R/.openapi-generator/VERSION | 2 +- samples/client/petstore/apex/.openapi-generator/VERSION | 2 +- samples/client/petstore/bash/.openapi-generator/VERSION | 2 +- samples/client/petstore/c/.openapi-generator/VERSION | 2 +- samples/client/petstore/cpp-qt/.openapi-generator/VERSION | 2 +- .../petstore/cpp-restsdk/client/.openapi-generator/VERSION | 2 +- samples/client/petstore/cpp-restsdk/client/ApiClient.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/ApiClient.h | 2 +- samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h | 2 +- samples/client/petstore/cpp-restsdk/client/ApiException.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/ApiException.h | 2 +- samples/client/petstore/cpp-restsdk/client/HttpContent.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/HttpContent.h | 2 +- samples/client/petstore/cpp-restsdk/client/IHttpBody.h | 2 +- samples/client/petstore/cpp-restsdk/client/JsonBody.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/JsonBody.h | 2 +- samples/client/petstore/cpp-restsdk/client/ModelBase.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/ModelBase.h | 2 +- .../client/petstore/cpp-restsdk/client/MultipartFormData.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/MultipartFormData.h | 2 +- samples/client/petstore/cpp-restsdk/client/Object.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/Object.h | 2 +- samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/api/PetApi.h | 2 +- samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/api/StoreApi.h | 2 +- samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/api/UserApi.h | 2 +- .../client/petstore/cpp-restsdk/client/model/ApiResponse.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h | 2 +- samples/client/petstore/cpp-restsdk/client/model/Category.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/model/Category.h | 2 +- samples/client/petstore/cpp-restsdk/client/model/Order.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/model/Order.h | 2 +- samples/client/petstore/cpp-restsdk/client/model/Pet.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/model/Pet.h | 2 +- samples/client/petstore/cpp-restsdk/client/model/Tag.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/model/Tag.h | 2 +- samples/client/petstore/cpp-restsdk/client/model/User.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/model/User.h | 2 +- samples/client/petstore/cpp-tiny/.openapi-generator/VERSION | 2 +- samples/client/petstore/crystal/.openapi-generator/VERSION | 2 +- samples/client/petstore/crystal/.travis.yml | 2 +- samples/client/petstore/crystal/spec/spec_helper.cr | 2 +- samples/client/petstore/crystal/src/petstore.cr | 2 +- samples/client/petstore/crystal/src/petstore/api/pet_api.cr | 2 +- samples/client/petstore/crystal/src/petstore/api/store_api.cr | 2 +- samples/client/petstore/crystal/src/petstore/api/user_api.cr | 2 +- samples/client/petstore/crystal/src/petstore/api_client.cr | 2 +- samples/client/petstore/crystal/src/petstore/api_error.cr | 2 +- samples/client/petstore/crystal/src/petstore/configuration.cr | 2 +- .../client/petstore/crystal/src/petstore/models/api_response.cr | 2 +- samples/client/petstore/crystal/src/petstore/models/category.cr | 2 +- samples/client/petstore/crystal/src/petstore/models/order.cr | 2 +- samples/client/petstore/crystal/src/petstore/models/pet.cr | 2 +- samples/client/petstore/crystal/src/petstore/models/tag.cr | 2 +- samples/client/petstore/crystal/src/petstore/models/user.cr | 2 +- .../.openapi-generator/VERSION | 2 +- .../OpenAPIClient-httpclient/.openapi-generator/VERSION | 2 +- .../OpenAPIClient-net47/.openapi-generator/VERSION | 2 +- .../OpenAPIClient-net5.0/.openapi-generator/VERSION | 2 +- .../csharp-netcore/OpenAPIClient/.openapi-generator/VERSION | 2 +- .../csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION | 2 +- .../OpenAPIClientCoreAndNet47/.openapi-generator/VERSION | 2 +- .../petstore/csharp/OpenAPIClient/.openapi-generator/VERSION | 2 +- samples/client/petstore/elixir/.openapi-generator/VERSION | 2 +- .../client/petstore/go/go-petstore/.openapi-generator/VERSION | 2 +- samples/client/petstore/groovy/.openapi-generator/VERSION | 2 +- .../petstore/haskell-http-client/.openapi-generator/VERSION | 2 +- .../petstore/java/feign-no-nullable/.openapi-generator/VERSION | 2 +- samples/client/petstore/java/feign/.openapi-generator/VERSION | 2 +- .../petstore/java/google-api-client/.openapi-generator/VERSION | 2 +- samples/client/petstore/java/jersey1/.openapi-generator/VERSION | 2 +- .../java/jersey2-java8-localdatetime/.openapi-generator/VERSION | 2 +- .../petstore/java/jersey2-java8/.openapi-generator/VERSION | 2 +- .../java/microprofile-rest-client/.openapi-generator/VERSION | 2 +- .../petstore/java/native-async/.openapi-generator/VERSION | 2 +- samples/client/petstore/java/native/.openapi-generator/VERSION | 2 +- .../okhttp-gson-dynamicOperations/.openapi-generator/VERSION | 2 +- .../java/okhttp-gson-parcelableModel/.openapi-generator/VERSION | 2 +- .../client/petstore/java/okhttp-gson/.openapi-generator/VERSION | 2 +- .../java/rest-assured-jackson/.openapi-generator/VERSION | 2 +- .../petstore/java/rest-assured/.openapi-generator/VERSION | 2 +- .../client/petstore/java/resteasy/.openapi-generator/VERSION | 2 +- .../java/resttemplate-withXml/.openapi-generator/VERSION | 2 +- .../petstore/java/resttemplate/.openapi-generator/VERSION | 2 +- .../petstore/java/retrofit2-play26/.openapi-generator/VERSION | 2 +- .../client/petstore/java/retrofit2/.openapi-generator/VERSION | 2 +- .../petstore/java/retrofit2rx2/.openapi-generator/VERSION | 2 +- .../petstore/java/retrofit2rx3/.openapi-generator/VERSION | 2 +- .../petstore/java/vertx-no-nullable/.openapi-generator/VERSION | 2 +- samples/client/petstore/java/vertx/.openapi-generator/VERSION | 2 +- .../client/petstore/java/webclient/.openapi-generator/VERSION | 2 +- .../client/petstore/javascript-es6/.openapi-generator/VERSION | 2 +- .../petstore/javascript-promise-es6/.openapi-generator/VERSION | 2 +- samples/client/petstore/kotlin-gson/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-jackson/.openapi-generator/VERSION | 2 +- .../kotlin-json-request-string/.openapi-generator/VERSION | 2 +- .../kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-moshi-codegen/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-multiplatform/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-nonpublic/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-nullable/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-okhttp3/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-retrofit2/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-string/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-threetenbp/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-uppercase-enum/.openapi-generator/VERSION | 2 +- samples/client/petstore/kotlin/.openapi-generator/VERSION | 2 +- samples/client/petstore/lua/.openapi-generator/VERSION | 2 +- samples/client/petstore/nim/.openapi-generator/VERSION | 2 +- .../client/petstore/objc/core-data/.openapi-generator/VERSION | 2 +- samples/client/petstore/objc/default/.openapi-generator/VERSION | 2 +- samples/client/petstore/perl/.openapi-generator/VERSION | 2 +- .../petstore/php/OpenAPIClient-php/.openapi-generator/VERSION | 2 +- .../petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php | 2 +- .../php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/ApiException.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Configuration.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/HeaderSelector.php | 2 +- .../OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php | 2 +- .../OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php | 2 +- .../php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php | 2 +- samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/Category.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/Client.php | 2 +- samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/File.php | 2 +- .../php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php | 2 +- samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php | 2 +- .../php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php | 2 +- .../php/OpenAPIClient-php/lib/Model/HealthCheckResult.php | 2 +- .../php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php | 2 +- .../lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Model200Response.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ModelList.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/Name.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/Order.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php | 2 +- .../php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php | 2 +- .../php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php | 2 +- .../lib/Model/OuterEnumIntegerDefaultValue.php | 2 +- .../OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php | 2 +- samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php | 2 +- .../php/OpenAPIClient-php/lib/Model/SpecialModelName.php | 2 +- samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/User.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php | 2 +- samples/client/petstore/powershell/.openapi-generator/VERSION | 2 +- .../client/petstore/python-asyncio/.openapi-generator/VERSION | 2 +- .../client/petstore/python-legacy/.openapi-generator/VERSION | 2 +- .../client/petstore/python-tornado/.openapi-generator/VERSION | 2 +- samples/client/petstore/python/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- samples/client/petstore/ruby-faraday/.openapi-generator/VERSION | 2 +- samples/client/petstore/ruby-faraday/lib/petstore.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/api/default_api.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/api/store_api.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/api/user_api.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/configuration.rb | 2 +- .../lib/petstore/models/additional_properties_class.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/animal.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/api_response.rb | 2 +- .../lib/petstore/models/array_of_array_of_number_only.rb | 2 +- .../ruby-faraday/lib/petstore/models/array_of_number_only.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/array_test.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/capitalization.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/category.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/class_model.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/client.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/enum_class.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/enum_test.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/file.rb | 2 +- .../ruby-faraday/lib/petstore/models/file_schema_test_class.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/format_test.rb | 2 +- .../ruby-faraday/lib/petstore/models/has_only_read_only.rb | 2 +- .../ruby-faraday/lib/petstore/models/health_check_result.rb | 2 +- .../ruby-faraday/lib/petstore/models/inline_response_default.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/list.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/map_test.rb | 2 +- .../models/mixed_properties_and_additional_properties_class.rb | 2 +- .../ruby-faraday/lib/petstore/models/model200_response.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/model_return.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/name.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/nullable_class.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/number_only.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/order.rb | 2 +- .../ruby-faraday/lib/petstore/models/outer_composite.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/outer_enum.rb | 2 +- .../lib/petstore/models/outer_enum_default_value.rb | 2 +- .../ruby-faraday/lib/petstore/models/outer_enum_integer.rb | 2 +- .../lib/petstore/models/outer_enum_integer_default_value.rb | 2 +- .../lib/petstore/models/outer_object_with_enum_property.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb | 2 +- .../ruby-faraday/lib/petstore/models/read_only_first.rb | 2 +- .../ruby-faraday/lib/petstore/models/special_model_name.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/user.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/version.rb | 2 +- samples/client/petstore/ruby-faraday/petstore.gemspec | 2 +- samples/client/petstore/ruby-faraday/spec/api_client_spec.rb | 2 +- samples/client/petstore/ruby-faraday/spec/configuration_spec.rb | 2 +- samples/client/petstore/ruby-faraday/spec/spec_helper.rb | 2 +- samples/client/petstore/ruby/.openapi-generator/VERSION | 2 +- samples/client/petstore/ruby/lib/petstore.rb | 2 +- .../client/petstore/ruby/lib/petstore/api/another_fake_api.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api/default_api.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api/fake_api.rb | 2 +- .../ruby/lib/petstore/api/fake_classname_tags123_api.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api/pet_api.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api/store_api.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api/user_api.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api_client.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api_error.rb | 2 +- samples/client/petstore/ruby/lib/petstore/configuration.rb | 2 +- .../ruby/lib/petstore/models/additional_properties_class.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/animal.rb | 2 +- .../client/petstore/ruby/lib/petstore/models/api_response.rb | 2 +- .../ruby/lib/petstore/models/array_of_array_of_number_only.rb | 2 +- .../petstore/ruby/lib/petstore/models/array_of_number_only.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/array_test.rb | 2 +- .../client/petstore/ruby/lib/petstore/models/capitalization.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/cat.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/category.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/class_model.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/client.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/dog.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/enum_class.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/enum_test.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/file.rb | 2 +- .../petstore/ruby/lib/petstore/models/file_schema_test_class.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/foo.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/format_test.rb | 2 +- .../petstore/ruby/lib/petstore/models/has_only_read_only.rb | 2 +- .../petstore/ruby/lib/petstore/models/health_check_result.rb | 2 +- .../ruby/lib/petstore/models/inline_response_default.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/list.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/map_test.rb | 2 +- .../models/mixed_properties_and_additional_properties_class.rb | 2 +- .../petstore/ruby/lib/petstore/models/model200_response.rb | 2 +- .../client/petstore/ruby/lib/petstore/models/model_return.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/name.rb | 2 +- .../client/petstore/ruby/lib/petstore/models/nullable_class.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/number_only.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/order.rb | 2 +- .../client/petstore/ruby/lib/petstore/models/outer_composite.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb | 2 +- .../ruby/lib/petstore/models/outer_enum_default_value.rb | 2 +- .../petstore/ruby/lib/petstore/models/outer_enum_integer.rb | 2 +- .../lib/petstore/models/outer_enum_integer_default_value.rb | 2 +- .../ruby/lib/petstore/models/outer_object_with_enum_property.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/pet.rb | 2 +- .../client/petstore/ruby/lib/petstore/models/read_only_first.rb | 2 +- .../petstore/ruby/lib/petstore/models/special_model_name.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/tag.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/user.rb | 2 +- samples/client/petstore/ruby/lib/petstore/version.rb | 2 +- samples/client/petstore/ruby/petstore.gemspec | 2 +- samples/client/petstore/ruby/spec/api_client_spec.rb | 2 +- samples/client/petstore/ruby/spec/configuration_spec.rb | 2 +- samples/client/petstore/ruby/spec/spec_helper.rb | 2 +- .../petstore/rust/hyper/petstore/.openapi-generator/VERSION | 2 +- .../rust/reqwest/petstore-async/.openapi-generator/VERSION | 2 +- .../petstore/rust/reqwest/petstore/.openapi-generator/VERSION | 2 +- samples/client/petstore/scala-akka/.openapi-generator/VERSION | 2 +- .../scala-httpclient-deprecated/.openapi-generator/VERSION | 2 +- samples/client/petstore/scala-sttp/.openapi-generator/VERSION | 2 +- .../petstore/spring-cloud-async/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../spring-cloud-no-nullable/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../spring-cloud-spring-pageable/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- samples/client/petstore/spring-cloud/.openapi-generator/VERSION | 2 +- .../spring-cloud/src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- samples/client/petstore/spring-stubs/.openapi-generator/VERSION | 2 +- .../spring-stubs/src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/swift5/alamofireLibrary/.openapi-generator/VERSION | 2 +- .../petstore/swift5/combineLibrary/.openapi-generator/VERSION | 2 +- .../client/petstore/swift5/default/.openapi-generator/VERSION | 2 +- .../petstore/swift5/deprecated/.openapi-generator/VERSION | 2 +- .../petstore/swift5/nonPublicApi/.openapi-generator/VERSION | 2 +- .../petstore/swift5/objcCompatible/.openapi-generator/VERSION | 2 +- samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION | 2 +- .../swift5/promisekitLibrary/.openapi-generator/VERSION | 2 +- .../swift5/readonlyProperties/.openapi-generator/VERSION | 2 +- .../petstore/swift5/resultLibrary/.openapi-generator/VERSION | 2 +- .../petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION | 2 +- .../swift5/urlsessionLibrary/.openapi-generator/VERSION | 2 +- .../petstore/swift5/vaporLibrary/.openapi-generator/VERSION | 2 +- .../petstore/swift5/x-swift-hashable/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/single-request-parameter/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/with-prefixed-module-name/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../typescript-aurelia/default/.openapi-generator/VERSION | 2 +- .../builds/composed-schemas/.openapi-generator/VERSION | 2 +- .../typescript-axios/builds/default/.openapi-generator/VERSION | 2 +- .../builds/es6-target/.openapi-generator/VERSION | 2 +- .../builds/with-complex-headers/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../builds/with-interfaces/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../builds/with-npm-version/.openapi-generator/VERSION | 2 +- .../with-single-request-parameters/.openapi-generator/VERSION | 2 +- .../builds/default-v3.0/.openapi-generator/VERSION | 2 +- .../typescript-fetch/builds/default/.openapi-generator/VERSION | 2 +- .../typescript-fetch/builds/enum/.openapi-generator/VERSION | 2 +- .../builds/es6-target/.openapi-generator/VERSION | 2 +- .../builds/multiple-parameters/.openapi-generator/VERSION | 2 +- .../prefix-parameter-interfaces/.openapi-generator/VERSION | 2 +- .../builds/sagas-and-records/.openapi-generator/VERSION | 2 +- .../builds/typescript-three-plus/.openapi-generator/VERSION | 2 +- .../builds/with-interfaces/.openapi-generator/VERSION | 2 +- .../builds/with-npm-version/.openapi-generator/VERSION | 2 +- .../builds/without-runtime-checks/.openapi-generator/VERSION | 2 +- .../petstore/typescript-inversify/.openapi-generator/VERSION | 2 +- .../typescript-jquery/default/.openapi-generator/VERSION | 2 +- .../petstore/typescript-jquery/npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../petstore/typescript-node/default/.openapi-generator/VERSION | 2 +- .../petstore/typescript-node/npm/.openapi-generator/VERSION | 2 +- .../builds/with-npm-version/.openapi-generator/VERSION | 2 +- .../typescript-rxjs/builds/default/.openapi-generator/VERSION | 2 +- .../builds/es6-target/.openapi-generator/VERSION | 2 +- .../builds/with-npm-version/.openapi-generator/VERSION | 2 +- .../builds/with-progress-subscriber/.openapi-generator/VERSION | 2 +- .../config/petstore/protobuf-schema/.openapi-generator/VERSION | 2 +- samples/meta-codegen/lib/pom.xml | 2 +- samples/meta-codegen/usage/.openapi-generator/VERSION | 2 +- samples/openapi3/client/elm/.openapi-generator/VERSION | 2 +- .../x-auth-id-alias/go-experimental/.openapi-generator/VERSION | 2 +- .../java/jersey2-java8/.openapi-generator/VERSION | 2 +- .../x-auth-id-alias/python/.openapi-generator/VERSION | 2 +- .../x-auth-id-alias/ruby-client/.openapi-generator/VERSION | 2 +- .../x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb | 2 +- .../ruby-client/lib/x_auth_id_alias/api/usage_api.rb | 2 +- .../ruby-client/lib/x_auth_id_alias/api_client.rb | 2 +- .../ruby-client/lib/x_auth_id_alias/api_error.rb | 2 +- .../ruby-client/lib/x_auth_id_alias/configuration.rb | 2 +- .../x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb | 2 +- .../x-auth-id-alias/ruby-client/spec/api_client_spec.rb | 2 +- .../x-auth-id-alias/ruby-client/spec/configuration_spec.rb | 2 +- .../extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb | 2 +- .../x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec | 2 +- .../features/dynamic-servers/python/.openapi-generator/VERSION | 2 +- .../features/dynamic-servers/ruby/.openapi-generator/VERSION | 2 +- .../features/dynamic-servers/ruby/dynamic_servers.gemspec | 2 +- .../client/features/dynamic-servers/ruby/lib/dynamic_servers.rb | 2 +- .../dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb | 2 +- .../dynamic-servers/ruby/lib/dynamic_servers/api_client.rb | 2 +- .../dynamic-servers/ruby/lib/dynamic_servers/api_error.rb | 2 +- .../dynamic-servers/ruby/lib/dynamic_servers/configuration.rb | 2 +- .../dynamic-servers/ruby/lib/dynamic_servers/version.rb | 2 +- .../features/dynamic-servers/ruby/spec/api_client_spec.rb | 2 +- .../features/dynamic-servers/ruby/spec/configuration_spec.rb | 2 +- .../client/features/dynamic-servers/ruby/spec/spec_helper.rb | 2 +- .../ruby-client/.openapi-generator/VERSION | 2 +- .../generate-alias-as-model/ruby-client/lib/petstore.rb | 2 +- .../ruby-client/lib/petstore/api/usage_api.rb | 2 +- .../ruby-client/lib/petstore/api_client.rb | 2 +- .../ruby-client/lib/petstore/api_error.rb | 2 +- .../ruby-client/lib/petstore/configuration.rb | 2 +- .../ruby-client/lib/petstore/models/array_alias.rb | 2 +- .../ruby-client/lib/petstore/models/map_alias.rb | 2 +- .../generate-alias-as-model/ruby-client/lib/petstore/version.rb | 2 +- .../generate-alias-as-model/ruby-client/petstore.gemspec | 2 +- .../generate-alias-as-model/ruby-client/spec/api_client_spec.rb | 2 +- .../ruby-client/spec/configuration_spec.rb | 2 +- .../generate-alias-as-model/ruby-client/spec/spec_helper.rb | 2 +- .../petstore_client_lib_fake/.openapi-generator/VERSION | 2 +- .../dart-dio/petstore_client_lib/.openapi-generator/VERSION | 2 +- .../petstore_client_lib_fake/.openapi-generator/VERSION | 2 +- .../dart2/petstore_client_lib/.openapi-generator/VERSION | 2 +- .../dart2/petstore_client_lib_fake/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../client/petstore/go/go-petstore/.openapi-generator/VERSION | 2 +- .../jersey2-java8-special-characters/.openapi-generator/VERSION | 2 +- .../petstore/java/jersey2-java8/.openapi-generator/VERSION | 2 +- .../client/petstore/java/native/.openapi-generator/VERSION | 2 +- .../client/petstore/python-legacy/.openapi-generator/VERSION | 2 +- .../openapi3/client/petstore/python/.openapi-generator/VERSION | 2 +- .../typescript/builds/default/.openapi-generator/VERSION | 2 +- .../petstore/typescript/builds/deno/.openapi-generator/VERSION | 2 +- .../typescript/builds/inversify/.openapi-generator/VERSION | 2 +- .../typescript/builds/jquery/.openapi-generator/VERSION | 2 +- .../typescript/builds/object_params/.openapi-generator/VERSION | 2 +- samples/schema/petstore/ktorm/.openapi-generator/VERSION | 2 +- samples/schema/petstore/mysql/.openapi-generator/VERSION | 2 +- samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION | 2 +- .../server/petstore/aspnetcore-3.0/.openapi-generator/VERSION | 2 +- .../server/petstore/aspnetcore-3.1/.openapi-generator/VERSION | 2 +- .../server/petstore/aspnetcore-5.0/.openapi-generator/VERSION | 2 +- samples/server/petstore/aspnetcore/.openapi-generator/VERSION | 2 +- samples/server/petstore/cpp-pistache/.openapi-generator/VERSION | 2 +- .../cpp-qt-qhttpengine-server/.openapi-generator/VERSION | 2 +- .../server/petstore/erlang-server/.openapi-generator/VERSION | 2 +- .../server/petstore/go-api-server/.openapi-generator/VERSION | 2 +- .../server/petstore/go-chi-server/.openapi-generator/VERSION | 2 +- .../server/petstore/go-echo-server/.openapi-generator/VERSION | 2 +- .../petstore/go-gin-api-server/.openapi-generator/VERSION | 2 +- .../server/petstore/haskell-servant/.openapi-generator/VERSION | 2 +- samples/server/petstore/java-msf4j/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java-play-framework-async/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java-play-framework-no-interface/.openapi-generator/VERSION | 2 +- .../java-play-framework-no-nullable/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/java-play-framework/.openapi-generator/VERSION | 2 +- .../server/petstore/java-undertow/.openapi-generator/VERSION | 2 +- .../server/petstore/java-vertx-web/.openapi-generator/VERSION | 2 +- .../jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION | 2 +- .../jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION | 2 +- .../server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION | 2 +- .../jaxrs-cxf-non-spring-app/.openapi-generator/VERSION | 2 +- samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION | 2 +- .../server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION | 2 +- samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION | 2 +- .../jaxrs-resteasy/default-value/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-resteasy/default/.openapi-generator/VERSION | 2 +- .../jaxrs-resteasy/eap-java8/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-spec-interface/.openapi-generator/VERSION | 2 +- samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION | 2 +- .../server/petstore/jaxrs/jersey1/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION | 2 +- .../server/petstore/jaxrs/jersey2/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-server/ktor/.openapi-generator/VERSION | 2 +- samples/server/petstore/kotlin-server/ktor/README.md | 2 +- .../kotlin-springboot-delegate/.openapi-generator/VERSION | 2 +- .../src/main/kotlin/org/openapitools/api/PetApi.kt | 2 +- .../src/main/kotlin/org/openapitools/api/StoreApi.kt | 2 +- .../src/main/kotlin/org/openapitools/api/UserApi.kt | 2 +- .../kotlin-springboot-reactive/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-springboot/.openapi-generator/VERSION | 2 +- samples/server/petstore/php-laravel/.openapi-generator/VERSION | 2 +- samples/server/petstore/php-lumen/.openapi-generator/VERSION | 2 +- .../petstore/php-mezzio-ph-modern/.openapi-generator/VERSION | 2 +- .../server/petstore/php-mezzio-ph/.openapi-generator/VERSION | 2 +- samples/server/petstore/php-slim4/.openapi-generator/VERSION | 2 +- .../php-symfony/SymfonyBundle-php/.openapi-generator/VERSION | 2 +- .../python-aiohttp-srclayout/.openapi-generator/VERSION | 2 +- .../server/petstore/python-aiohttp/.openapi-generator/VERSION | 2 +- .../petstore/python-blueplanet/.openapi-generator/VERSION | 2 +- .../server/petstore/python-fastapi/.openapi-generator/VERSION | 2 +- samples/server/petstore/python-flask/.openapi-generator/VERSION | 2 +- .../rust-server/output/multipart-v3/.openapi-generator/VERSION | 2 +- .../rust-server/output/no-example-v3/.openapi-generator/VERSION | 2 +- .../rust-server/output/openapi-v3/.openapi-generator/VERSION | 2 +- .../rust-server/output/ops-v3/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../output/ping-bearer-auth/.openapi-generator/VERSION | 2 +- .../output/rust-server-test/.openapi-generator/VERSION | 2 +- .../spring-mvc-default-value/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/TestHeadersApi.java | 2 +- .../src/main/java/org/openapitools/api/TestQueryParamsApi.java | 2 +- .../petstore/spring-mvc-j8-async/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../spring-mvc-j8-localdatetime/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/spring-mvc-no-nullable/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../spring-mvc-spring-pageable/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- samples/server/petstore/spring-mvc/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../spring-mvc/src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../spring-mvc/src/main/java/org/openapitools/api/PetApi.java | 2 +- .../spring-mvc/src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../spring-mvc/src/main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../springboot-beanvalidation/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/springboot-delegate-j8/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/springboot-delegate/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../springboot-implicitHeaders/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/springboot-reactive/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../springboot-spring-pageable/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/springboot-useoptional/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/springboot-virtualan/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/virtualan/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/virtualan/api/FakeApi.java | 2 +- .../org/openapitools/virtualan/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/virtualan/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/virtualan/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/virtualan/api/UserApi.java | 2 +- samples/server/petstore/springboot/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../springboot/src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../springboot/src/main/java/org/openapitools/api/PetApi.java | 2 +- .../springboot/src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../springboot/src/main/java/org/openapitools/api/UserApi.java | 2 +- 669 files changed, 668 insertions(+), 669 deletions(-) diff --git a/bin/utils/release/release_version_update.sh b/bin/utils/release/release_version_update.sh index c2be83681ca..f57fd7b7daf 100755 --- a/bin/utils/release/release_version_update.sh +++ b/bin/utils/release/release_version_update.sh @@ -83,7 +83,6 @@ declare -a xml_files=( "${root}/modules/openapi-generator-maven-plugin/examples/java-client.xml" "${root}/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml" "${root}/modules/openapi-generator-maven-plugin/examples/non-java.xml" - "${root}/samples/meta-codegen/lib/pom.xml" "${root}/pom.xml" ) diff --git a/modules/openapi-generator-cli/pom.xml b/modules/openapi-generator-cli/pom.xml index fb3c5139b0e..a833a0da3ed 100644 --- a/modules/openapi-generator-cli/pom.xml +++ b/modules/openapi-generator-cli/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 5.2.0-SNAPSHOT + 5.2.0 ../.. diff --git a/modules/openapi-generator-core/pom.xml b/modules/openapi-generator-core/pom.xml index dc964764aa6..b8430f783b2 100644 --- a/modules/openapi-generator-core/pom.xml +++ b/modules/openapi-generator-core/pom.xml @@ -6,7 +6,7 @@ openapi-generator-project org.openapitools - 5.2.0-SNAPSHOT + 5.2.0 ../.. diff --git a/modules/openapi-generator-gradle-plugin/gradle.properties b/modules/openapi-generator-gradle-plugin/gradle.properties index 01c9f563508..4b137a5be36 100644 --- a/modules/openapi-generator-gradle-plugin/gradle.properties +++ b/modules/openapi-generator-gradle-plugin/gradle.properties @@ -1,5 +1,5 @@ # RELEASE_VERSION -openApiGeneratorVersion=5.2.0-SNAPSHOT +openApiGeneratorVersion=5.2.0 # /RELEASE_VERSION # BEGIN placeholders diff --git a/modules/openapi-generator-gradle-plugin/pom.xml b/modules/openapi-generator-gradle-plugin/pom.xml index fc856601f67..206c1a54e6f 100644 --- a/modules/openapi-generator-gradle-plugin/pom.xml +++ b/modules/openapi-generator-gradle-plugin/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 5.2.0-SNAPSHOT + 5.2.0 ../.. diff --git a/modules/openapi-generator-maven-plugin/examples/java-client.xml b/modules/openapi-generator-maven-plugin/examples/java-client.xml index fb7e9a810c3..10a59a3d54c 100644 --- a/modules/openapi-generator-maven-plugin/examples/java-client.xml +++ b/modules/openapi-generator-maven-plugin/examples/java-client.xml @@ -13,7 +13,7 @@ org.openapitools openapi-generator-maven-plugin - 5.2.0-SNAPSHOT + 5.2.0 diff --git a/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml b/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml index b2a3696e1c0..bcdcb07ff78 100644 --- a/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml +++ b/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml @@ -19,7 +19,7 @@ org.openapitools openapi-generator-maven-plugin - 5.2.0-SNAPSHOT + 5.2.0 diff --git a/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml b/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml index f3ef4ff8d49..ed71d760dbb 100644 --- a/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml +++ b/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml @@ -13,7 +13,7 @@ org.openapitools openapi-generator-maven-plugin - 5.2.0-SNAPSHOT + 5.2.0 diff --git a/modules/openapi-generator-maven-plugin/examples/non-java.xml b/modules/openapi-generator-maven-plugin/examples/non-java.xml index 1f18f87d755..96aada54360 100644 --- a/modules/openapi-generator-maven-plugin/examples/non-java.xml +++ b/modules/openapi-generator-maven-plugin/examples/non-java.xml @@ -13,7 +13,7 @@ org.openapitools openapi-generator-maven-plugin - 5.2.0-SNAPSHOT + 5.2.0 diff --git a/modules/openapi-generator-maven-plugin/pom.xml b/modules/openapi-generator-maven-plugin/pom.xml index f58c7f17bcd..9e70e1d36ca 100644 --- a/modules/openapi-generator-maven-plugin/pom.xml +++ b/modules/openapi-generator-maven-plugin/pom.xml @@ -5,7 +5,7 @@ org.openapitools openapi-generator-project - 5.2.0-SNAPSHOT + 5.2.0 ../.. diff --git a/modules/openapi-generator-online/pom.xml b/modules/openapi-generator-online/pom.xml index eff136ed4a3..70edc16885c 100644 --- a/modules/openapi-generator-online/pom.xml +++ b/modules/openapi-generator-online/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 5.2.0-SNAPSHOT + 5.2.0 ../.. diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index 2347fc4090e..9d28e972cca 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 5.2.0-SNAPSHOT + 5.2.0 ../.. diff --git a/pom.xml b/pom.xml index 2dc1b41f00a..cf438be1ce5 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ pom openapi-generator-project - 5.2.0-SNAPSHOT + 5.2.0 https://github.com/openapitools/openapi-generator diff --git a/samples/client/petstore/R/.openapi-generator/VERSION b/samples/client/petstore/R/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/R/.openapi-generator/VERSION +++ b/samples/client/petstore/R/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/apex/.openapi-generator/VERSION b/samples/client/petstore/apex/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/apex/.openapi-generator/VERSION +++ b/samples/client/petstore/apex/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/bash/.openapi-generator/VERSION b/samples/client/petstore/bash/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/bash/.openapi-generator/VERSION +++ b/samples/client/petstore/bash/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/c/.openapi-generator/VERSION b/samples/client/petstore/c/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/c/.openapi-generator/VERSION +++ b/samples/client/petstore/c/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/cpp-qt/.openapi-generator/VERSION b/samples/client/petstore/cpp-qt/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/cpp-qt/.openapi-generator/VERSION +++ b/samples/client/petstore/cpp-qt/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/cpp-restsdk/client/.openapi-generator/VERSION b/samples/client/petstore/cpp-restsdk/client/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/cpp-restsdk/client/.openapi-generator/VERSION +++ b/samples/client/petstore/cpp-restsdk/client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/cpp-restsdk/client/ApiClient.cpp b/samples/client/petstore/cpp-restsdk/client/ApiClient.cpp index cb51123c894..42fd2171fdd 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiClient.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ApiClient.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiClient.h b/samples/client/petstore/cpp-restsdk/client/ApiClient.h index 46e2f100ef2..6ccb62dd282 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiClient.h +++ b/samples/client/petstore/cpp-restsdk/client/ApiClient.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp b/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp index 52554ff63c7..b5fca50c513 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h b/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h index 74c298a5a94..34e4273b2c2 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h +++ b/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiException.cpp b/samples/client/petstore/cpp-restsdk/client/ApiException.cpp index bfae070986e..16cbc233e82 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiException.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ApiException.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiException.h b/samples/client/petstore/cpp-restsdk/client/ApiException.h index cd7915e04e0..c0aeb02c29e 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiException.h +++ b/samples/client/petstore/cpp-restsdk/client/ApiException.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/HttpContent.cpp b/samples/client/petstore/cpp-restsdk/client/HttpContent.cpp index 9de06a9eea1..89b07b06a08 100644 --- a/samples/client/petstore/cpp-restsdk/client/HttpContent.cpp +++ b/samples/client/petstore/cpp-restsdk/client/HttpContent.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/HttpContent.h b/samples/client/petstore/cpp-restsdk/client/HttpContent.h index ffba49f782a..7f93409f1e4 100644 --- a/samples/client/petstore/cpp-restsdk/client/HttpContent.h +++ b/samples/client/petstore/cpp-restsdk/client/HttpContent.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/IHttpBody.h b/samples/client/petstore/cpp-restsdk/client/IHttpBody.h index 1a1b0a55e90..c3818e68eb7 100644 --- a/samples/client/petstore/cpp-restsdk/client/IHttpBody.h +++ b/samples/client/petstore/cpp-restsdk/client/IHttpBody.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/JsonBody.cpp b/samples/client/petstore/cpp-restsdk/client/JsonBody.cpp index 658ef28191c..5aca1dc82b5 100644 --- a/samples/client/petstore/cpp-restsdk/client/JsonBody.cpp +++ b/samples/client/petstore/cpp-restsdk/client/JsonBody.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/JsonBody.h b/samples/client/petstore/cpp-restsdk/client/JsonBody.h index f9717b9c9be..ab46206ef17 100644 --- a/samples/client/petstore/cpp-restsdk/client/JsonBody.h +++ b/samples/client/petstore/cpp-restsdk/client/JsonBody.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp b/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp index 8c02ac7c40d..0f83aac35c8 100644 --- a/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ModelBase.h b/samples/client/petstore/cpp-restsdk/client/ModelBase.h index 417c04a69e0..f4a730542a9 100644 --- a/samples/client/petstore/cpp-restsdk/client/ModelBase.h +++ b/samples/client/petstore/cpp-restsdk/client/ModelBase.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/MultipartFormData.cpp b/samples/client/petstore/cpp-restsdk/client/MultipartFormData.cpp index c6c22d58185..76f71492bf5 100644 --- a/samples/client/petstore/cpp-restsdk/client/MultipartFormData.cpp +++ b/samples/client/petstore/cpp-restsdk/client/MultipartFormData.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/MultipartFormData.h b/samples/client/petstore/cpp-restsdk/client/MultipartFormData.h index ea1f59b31a4..eaf99a266da 100644 --- a/samples/client/petstore/cpp-restsdk/client/MultipartFormData.h +++ b/samples/client/petstore/cpp-restsdk/client/MultipartFormData.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/Object.cpp b/samples/client/petstore/cpp-restsdk/client/Object.cpp index 0c05fe80e4b..5d053224d04 100644 --- a/samples/client/petstore/cpp-restsdk/client/Object.cpp +++ b/samples/client/petstore/cpp-restsdk/client/Object.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/Object.h b/samples/client/petstore/cpp-restsdk/client/Object.h index fcb51a1da3b..090bc43131b 100644 --- a/samples/client/petstore/cpp-restsdk/client/Object.h +++ b/samples/client/petstore/cpp-restsdk/client/Object.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp b/samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp index fe9bcacf458..255014a716d 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp +++ b/samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/PetApi.h b/samples/client/petstore/cpp-restsdk/client/api/PetApi.h index 694cde1512c..bb5dc6cd428 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/PetApi.h +++ b/samples/client/petstore/cpp-restsdk/client/api/PetApi.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp index b60e41cfcfc..3acfba1d938 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp +++ b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h index c5241a6e2d8..10221459d9e 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h +++ b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp b/samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp index 4927b6785ec..48563258905 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp +++ b/samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/UserApi.h b/samples/client/petstore/cpp-restsdk/client/api/UserApi.h index c4aa9ed6024..ce435b18b0a 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/UserApi.h +++ b/samples/client/petstore/cpp-restsdk/client/api/UserApi.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.cpp b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.cpp index e43dcecded1..e8e9865c924 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h index f892cedb7f8..2a58b1fc652 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h +++ b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Category.cpp b/samples/client/petstore/cpp-restsdk/client/model/Category.cpp index 38ee7a83130..f74e5ed9465 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Category.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/Category.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Category.h b/samples/client/petstore/cpp-restsdk/client/model/Category.h index 5aab92bf04d..7d01bd1d2e0 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Category.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Category.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Order.cpp b/samples/client/petstore/cpp-restsdk/client/model/Order.cpp index 17f40a62a73..10dd6aecf3d 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Order.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/Order.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Order.h b/samples/client/petstore/cpp-restsdk/client/model/Order.h index dbe4b2cb774..df8cb81b93d 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Order.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Order.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Pet.cpp b/samples/client/petstore/cpp-restsdk/client/model/Pet.cpp index e7e6228a95f..ebfc215f532 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Pet.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/Pet.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Pet.h b/samples/client/petstore/cpp-restsdk/client/model/Pet.h index 543a4fed12e..a6757958c6d 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Pet.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Pet.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Tag.cpp b/samples/client/petstore/cpp-restsdk/client/model/Tag.cpp index 401b81b6893..02a180cb726 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Tag.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/Tag.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Tag.h b/samples/client/petstore/cpp-restsdk/client/model/Tag.h index f183c7adf9d..12981a2d442 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Tag.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Tag.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/User.cpp b/samples/client/petstore/cpp-restsdk/client/model/User.cpp index 3065eb0b554..5de5821f950 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/User.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/User.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/User.h b/samples/client/petstore/cpp-restsdk/client/model/User.h index 731b2517d6d..2b4854b24a6 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/User.h +++ b/samples/client/petstore/cpp-restsdk/client/model/User.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION b/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION +++ b/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/crystal/.openapi-generator/VERSION b/samples/client/petstore/crystal/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/crystal/.openapi-generator/VERSION +++ b/samples/client/petstore/crystal/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/crystal/.travis.yml b/samples/client/petstore/crystal/.travis.yml index b40e33fb20e..08e2b970b7f 100644 --- a/samples/client/petstore/crystal/.travis.yml +++ b/samples/client/petstore/crystal/.travis.yml @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # language: crystal diff --git a/samples/client/petstore/crystal/spec/spec_helper.cr b/samples/client/petstore/crystal/spec/spec_helper.cr index 6532505ff2b..8b90d641e3c 100644 --- a/samples/client/petstore/crystal/spec/spec_helper.cr +++ b/samples/client/petstore/crystal/spec/spec_helper.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # # load modules diff --git a/samples/client/petstore/crystal/src/petstore.cr b/samples/client/petstore/crystal/src/petstore.cr index fadebdc4848..11e62576d05 100644 --- a/samples/client/petstore/crystal/src/petstore.cr +++ b/samples/client/petstore/crystal/src/petstore.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # # Dependencies diff --git a/samples/client/petstore/crystal/src/petstore/api/pet_api.cr b/samples/client/petstore/crystal/src/petstore/api/pet_api.cr index 41466efaf1b..462cdba46b8 100644 --- a/samples/client/petstore/crystal/src/petstore/api/pet_api.cr +++ b/samples/client/petstore/crystal/src/petstore/api/pet_api.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # require "uri" diff --git a/samples/client/petstore/crystal/src/petstore/api/store_api.cr b/samples/client/petstore/crystal/src/petstore/api/store_api.cr index 03f45309463..d367ab94f2d 100644 --- a/samples/client/petstore/crystal/src/petstore/api/store_api.cr +++ b/samples/client/petstore/crystal/src/petstore/api/store_api.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # require "uri" diff --git a/samples/client/petstore/crystal/src/petstore/api/user_api.cr b/samples/client/petstore/crystal/src/petstore/api/user_api.cr index 0b2468c50d3..6e2a572c3ce 100644 --- a/samples/client/petstore/crystal/src/petstore/api/user_api.cr +++ b/samples/client/petstore/crystal/src/petstore/api/user_api.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # require "uri" diff --git a/samples/client/petstore/crystal/src/petstore/api_client.cr b/samples/client/petstore/crystal/src/petstore/api_client.cr index a0f4a469c48..67623589b12 100644 --- a/samples/client/petstore/crystal/src/petstore/api_client.cr +++ b/samples/client/petstore/crystal/src/petstore/api_client.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/api_error.cr b/samples/client/petstore/crystal/src/petstore/api_error.cr index ef28c709d56..0c72b99de9a 100644 --- a/samples/client/petstore/crystal/src/petstore/api_error.cr +++ b/samples/client/petstore/crystal/src/petstore/api_error.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # module Petstore diff --git a/samples/client/petstore/crystal/src/petstore/configuration.cr b/samples/client/petstore/crystal/src/petstore/configuration.cr index 18ef2969ac3..32d8b23d48b 100644 --- a/samples/client/petstore/crystal/src/petstore/configuration.cr +++ b/samples/client/petstore/crystal/src/petstore/configuration.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # require "log" diff --git a/samples/client/petstore/crystal/src/petstore/models/api_response.cr b/samples/client/petstore/crystal/src/petstore/models/api_response.cr index 7d15b7200f8..bb174fb570b 100644 --- a/samples/client/petstore/crystal/src/petstore/models/api_response.cr +++ b/samples/client/petstore/crystal/src/petstore/models/api_response.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/category.cr b/samples/client/petstore/crystal/src/petstore/models/category.cr index 7d573eb7a82..f1f8f24acb6 100644 --- a/samples/client/petstore/crystal/src/petstore/models/category.cr +++ b/samples/client/petstore/crystal/src/petstore/models/category.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/order.cr b/samples/client/petstore/crystal/src/petstore/models/order.cr index 05de437e07c..f4cbe4b66b7 100644 --- a/samples/client/petstore/crystal/src/petstore/models/order.cr +++ b/samples/client/petstore/crystal/src/petstore/models/order.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/pet.cr b/samples/client/petstore/crystal/src/petstore/models/pet.cr index 2d2c236e48b..cc7eb71b6fe 100644 --- a/samples/client/petstore/crystal/src/petstore/models/pet.cr +++ b/samples/client/petstore/crystal/src/petstore/models/pet.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/tag.cr b/samples/client/petstore/crystal/src/petstore/models/tag.cr index 6e6f16a21d3..256c50bbfa2 100644 --- a/samples/client/petstore/crystal/src/petstore/models/tag.cr +++ b/samples/client/petstore/crystal/src/petstore/models/tag.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/user.cr b/samples/client/petstore/crystal/src/petstore/models/user.cr index 3732dc4d2e4..1575e1cddab 100644 --- a/samples/client/petstore/crystal/src/petstore/models/user.cr +++ b/samples/client/petstore/crystal/src/petstore/models/user.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0-SNAPSHOT +#OpenAPI Generator version: 5.2.0 # require "json" diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION b/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/elixir/.openapi-generator/VERSION b/samples/client/petstore/elixir/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/elixir/.openapi-generator/VERSION +++ b/samples/client/petstore/elixir/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION b/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION +++ b/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/groovy/.openapi-generator/VERSION b/samples/client/petstore/groovy/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/groovy/.openapi-generator/VERSION +++ b/samples/client/petstore/groovy/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION b/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION +++ b/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/feign-no-nullable/.openapi-generator/VERSION b/samples/client/petstore/java/feign-no-nullable/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/feign-no-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/java/feign-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/feign/.openapi-generator/VERSION b/samples/client/petstore/java/feign/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/feign/.openapi-generator/VERSION +++ b/samples/client/petstore/java/feign/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION b/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION +++ b/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/jersey1/.openapi-generator/VERSION b/samples/client/petstore/java/jersey1/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/jersey1/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey1/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/.openapi-generator/VERSION b/samples/client/petstore/java/jersey2-java8-localdatetime/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION b/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION b/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION +++ b/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/native-async/.openapi-generator/VERSION b/samples/client/petstore/java/native-async/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/native-async/.openapi-generator/VERSION +++ b/samples/client/petstore/java/native-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/native/.openapi-generator/VERSION b/samples/client/petstore/java/native/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/native/.openapi-generator/VERSION +++ b/samples/client/petstore/java/native/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/.openapi-generator/VERSION b/samples/client/petstore/java/okhttp-gson-dynamicOperations/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/.openapi-generator/VERSION +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION b/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION b/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION +++ b/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/rest-assured-jackson/.openapi-generator/VERSION b/samples/client/petstore/java/rest-assured-jackson/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/rest-assured-jackson/.openapi-generator/VERSION +++ b/samples/client/petstore/java/rest-assured-jackson/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION b/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION +++ b/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/resteasy/.openapi-generator/VERSION b/samples/client/petstore/java/resteasy/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/resteasy/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resteasy/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION b/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION b/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2rx3/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2rx3/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/retrofit2rx3/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2rx3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/vertx-no-nullable/.openapi-generator/VERSION b/samples/client/petstore/java/vertx-no-nullable/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/vertx-no-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/java/vertx-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/vertx/.openapi-generator/VERSION b/samples/client/petstore/java/vertx/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/vertx/.openapi-generator/VERSION +++ b/samples/client/petstore/java/vertx/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/java/webclient/.openapi-generator/VERSION b/samples/client/petstore/java/webclient/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/java/webclient/.openapi-generator/VERSION +++ b/samples/client/petstore/java/webclient/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/javascript-es6/.openapi-generator/VERSION b/samples/client/petstore/javascript-es6/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/javascript-es6/.openapi-generator/VERSION +++ b/samples/client/petstore/javascript-es6/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION b/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION +++ b/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION b/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION b/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION b/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION b/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION b/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION b/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION b/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/.openapi-generator/VERSION b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION b/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION b/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-string/.openapi-generator/VERSION b/samples/client/petstore/kotlin-string/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-string/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-string/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION b/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/kotlin/.openapi-generator/VERSION b/samples/client/petstore/kotlin/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/kotlin/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/lua/.openapi-generator/VERSION b/samples/client/petstore/lua/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/lua/.openapi-generator/VERSION +++ b/samples/client/petstore/lua/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/nim/.openapi-generator/VERSION b/samples/client/petstore/nim/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/nim/.openapi-generator/VERSION +++ b/samples/client/petstore/nim/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/objc/core-data/.openapi-generator/VERSION b/samples/client/petstore/objc/core-data/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/objc/core-data/.openapi-generator/VERSION +++ b/samples/client/petstore/objc/core-data/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/objc/default/.openapi-generator/VERSION b/samples/client/petstore/objc/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/objc/default/.openapi-generator/VERSION +++ b/samples/client/petstore/objc/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/perl/.openapi-generator/VERSION b/samples/client/petstore/perl/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/perl/.openapi-generator/VERSION +++ b/samples/client/petstore/perl/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION +++ b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php index 82512bbbbfc..f700badcb59 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php index 32aaff8894b..c57b8f8b941 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php index 0fe7bd9aa07..2d7f8323dfa 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php index 2958cadbd4d..c5393fc42a0 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php index 55665ac20ad..aa279326207 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php index 30af05a38c9..60a7d3e25ca 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php index 9ca62c9a05d..28cb799d9bc 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php index e997b629e9b..6f3753caf0a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php index b252ae5ef72..aadd14b3819 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php index f6c880c66d4..df1d97a03f1 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php index f17a767e8c1..99d8366e81a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php index 5b573b955dd..f4454c5b8f5 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php index 98a7e1675c1..f26fec6674c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php index 7e5efea61b0..feaf74cdfa1 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php index fdb9ab4d80b..d5ac28abfb9 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php index e882d134f8d..8b23950797f 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php index a817d7fc271..4606422a4b2 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php index 789214ceee7..8f5e9e46e0d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php index c28e30e0647..5fa072d4404 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php index fe14739688b..a3ca5fd4e73 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php index 5c572564fcf..c6b524cb379 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php index c9296011f49..2f0c8027419 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php index 69ad47d8bc7..ba7519fcdbc 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php index 8749ebfb71e..be4a0b19764 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php index 89dee9f0bc0..a1d0f2a944d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php index 2581be3f148..2702a714300 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php index f332f71f424..708d94bde04 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php index 843efaf3eae..43db69f64b4 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php index 65eaad6cfa8..d83dc52011d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php index 3458c88050b..b51e4309847 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php index d42e123e395..b44de7ba34a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php index d8453ce363b..dbe0ac1c0f0 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php index 73eb87f3717..49233da0737 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php index 442ebd36dce..3bcf3700edd 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php index 06b442f7f85..466c2db48fc 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php index c0bb79463d6..16b557f89da 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php index 8208b69e7bd..ba933753408 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php index 1717e0cfc83..e115ade5107 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php index 72b9ef4039f..e4e0ace67e9 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php index 9dcbc31a715..b664243eadf 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php index 7c795f93125..c11436d8c0c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php index 5a33a1d812e..b13d8f5f52d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php index 7d75b5245b2..be633bf54c2 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php index 81561ed34cf..2957c047d2e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php index 9107917c48e..7c7227d0602 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php index 2db56f93296..103f02c0af1 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php index 53fe34e2b38..3bd1a16255b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php index a79e24efb97..6866c18ee6d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php index 5316f01f713..93f3d303404 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php index 45138c5731d..1d04750f39f 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php index 3d302123614..526a7258fb5 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php index 9f75dae4c0a..9209b08fa73 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php index cde888641f4..d403fc84702 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php index 51cff7e4eb4..4b1516dda70 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php index b3f94cc8a14..2c70b79e7ef 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php index bb58f3bbb9f..9e6f0bb4c29 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0-SNAPSHOT + * OpenAPI Generator version: 5.2.0 */ /** diff --git a/samples/client/petstore/powershell/.openapi-generator/VERSION b/samples/client/petstore/powershell/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/powershell/.openapi-generator/VERSION +++ b/samples/client/petstore/powershell/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/python-asyncio/.openapi-generator/VERSION b/samples/client/petstore/python-asyncio/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/python-asyncio/.openapi-generator/VERSION +++ b/samples/client/petstore/python-asyncio/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/python-legacy/.openapi-generator/VERSION b/samples/client/petstore/python-legacy/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/python-legacy/.openapi-generator/VERSION +++ b/samples/client/petstore/python-legacy/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/python-tornado/.openapi-generator/VERSION b/samples/client/petstore/python-tornado/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/python-tornado/.openapi-generator/VERSION +++ b/samples/client/petstore/python-tornado/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/python/.openapi-generator/VERSION b/samples/client/petstore/python/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/python/.openapi-generator/VERSION +++ b/samples/client/petstore/python/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/.openapi-generator/VERSION b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/.openapi-generator/VERSION +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION b/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION +++ b/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/ruby-faraday/lib/petstore.rb b/samples/client/petstore/ruby-faraday/lib/petstore.rb index 2634c4d132e..e72c52650a3 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb index 6145ff7431c..050807e006e 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb index 9d3dc978d09..e03137201c4 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb index 50a336275d7..5cd5d56d0ec 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb index fd68ab47773..d1e128c7ffa 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb index 4754887194d..fb1285ffceb 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb index 3851c7b2ab6..00e7f72587d 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb index 73bca582e26..f4071566543 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb index c50394c22f2..27171d0d7c4 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb index 124c188d8d8..07510f6ce83 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb b/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb index 9b2851dfaa0..66e2d1fcbda 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb index 01b2eb58d7f..0f2e615271a 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/animal.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/animal.rb index 8e737d582c8..c418f42ca38 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/animal.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/animal.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb index 2bbfba46c3f..bb21206dc5c 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb index 057c5b787b6..b49c37aeb0e 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb index 9585dd80a6b..0a7501408d8 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb index 583ea424607..86cd97d6ed6 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb index 0d698fee60f..b49e27315a2 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb index 984aee85a08..bd621c16978 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb index cca5e6828b3..7e4813da981 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/category.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/category.rb index 3bdce1b83f3..153c0e0714b 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/category.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/category.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb index d185566668f..d4b185e1cbe 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/client.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/client.rb index 7f6d0947223..f48e7f0269d 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/client.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb index 9874575bd0b..9e207ce853a 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb index 62839a7cb13..662474d3b1d 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb index e281d2ddc46..742b859d830 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb index 6c44023fb2b..c2fbc1ebbf4 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb index d3416f495ac..5e23cf64e2c 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/file.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/file.rb index 76ee9955810..ae652038f67 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/file.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/file.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb index c07f1a43ea0..e5ed19dfa7a 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb index 54eb0760f5e..e00376c6d69 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb index 0c57d78ac25..c086bc347c6 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb index 3fe1977ba7d..3c562de5363 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb index aebfc27084e..f9f3d1906de 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb index 2eb6b88a224..56198d95ccf 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/list.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/list.rb index f04fceff81b..c8a846fc41d 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/list.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/list.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb index 552d9ae330a..d435fc7fc26 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb index bf90d3cd06f..8dba86d933f 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb index bad3bfcce3a..552aad5109e 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb index d33b1bf1dac..72b5e47b97e 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/name.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/name.rb index 6a1777a426d..8324c9c615b 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/name.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/name.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb index 3d0d81a7444..9d71c77e512 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb index 7359f1b1115..df5aa205089 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/order.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/order.rb index 6778c4b97fb..fe9ae807d9b 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/order.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/order.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb index b6d4bd88ace..3688d94e844 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb index 92a7aac382b..188a171fbac 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb index 7097f7d9fb9..99fbc6e0153 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb index 30c26017cc7..13349e85869 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb index a95eab63a6e..b0074a08b24 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_object_with_enum_property.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_object_with_enum_property.rb index 6950269d997..a3f95985c98 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_object_with_enum_property.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_object_with_enum_property.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb index c810bf54845..3f0e3eac4c2 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb index 53774ce12d4..ce91229d4cc 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb index 06d53c68ff0..93a98ff9187 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb index b9a14f57974..eda661a82bc 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/user.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/user.rb index c1f7816f475..a9183b572ea 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/user.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/user.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/version.rb b/samples/client/petstore/ruby-faraday/lib/petstore/version.rb index ab3b0dfefbd..9369c16a131 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/version.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/petstore.gemspec b/samples/client/petstore/ruby-faraday/petstore.gemspec index 06a7eb1a52c..043b008c04b 100644 --- a/samples/client/petstore/ruby-faraday/petstore.gemspec +++ b/samples/client/petstore/ruby-faraday/petstore.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/spec/api_client_spec.rb b/samples/client/petstore/ruby-faraday/spec/api_client_spec.rb index 05a5580fd4d..34cfa708a2f 100644 --- a/samples/client/petstore/ruby-faraday/spec/api_client_spec.rb +++ b/samples/client/petstore/ruby-faraday/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/spec/configuration_spec.rb b/samples/client/petstore/ruby-faraday/spec/configuration_spec.rb index 10c9510b239..94de3f9a4e7 100644 --- a/samples/client/petstore/ruby-faraday/spec/configuration_spec.rb +++ b/samples/client/petstore/ruby-faraday/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby-faraday/spec/spec_helper.rb b/samples/client/petstore/ruby-faraday/spec/spec_helper.rb index 86d92cda2b9..9bfe1a1a327 100644 --- a/samples/client/petstore/ruby-faraday/spec/spec_helper.rb +++ b/samples/client/petstore/ruby-faraday/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/.openapi-generator/VERSION b/samples/client/petstore/ruby/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/ruby/.openapi-generator/VERSION +++ b/samples/client/petstore/ruby/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/ruby/lib/petstore.rb b/samples/client/petstore/ruby/lib/petstore.rb index 2634c4d132e..e72c52650a3 100644 --- a/samples/client/petstore/ruby/lib/petstore.rb +++ b/samples/client/petstore/ruby/lib/petstore.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb b/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb index 6145ff7431c..050807e006e 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/default_api.rb b/samples/client/petstore/ruby/lib/petstore/api/default_api.rb index 9d3dc978d09..e03137201c4 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/default_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/default_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb index 50a336275d7..5cd5d56d0ec 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb b/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb index fd68ab47773..d1e128c7ffa 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb b/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb index 13b4b66578d..b8ec8c7cc78 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/store_api.rb b/samples/client/petstore/ruby/lib/petstore/api/store_api.rb index df456319b41..e7286f57576 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/store_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/store_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/user_api.rb b/samples/client/petstore/ruby/lib/petstore/api/user_api.rb index 879e9eb4ad6..213a50da65a 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/user_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/user_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/api_client.rb b/samples/client/petstore/ruby/lib/petstore/api_client.rb index 3a1bf4bd35d..911a88901d8 100644 --- a/samples/client/petstore/ruby/lib/petstore/api_client.rb +++ b/samples/client/petstore/ruby/lib/petstore/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/api_error.rb b/samples/client/petstore/ruby/lib/petstore/api_error.rb index 124c188d8d8..07510f6ce83 100644 --- a/samples/client/petstore/ruby/lib/petstore/api_error.rb +++ b/samples/client/petstore/ruby/lib/petstore/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/configuration.rb b/samples/client/petstore/ruby/lib/petstore/configuration.rb index cc5e1929d67..fb2a1c6f62f 100644 --- a/samples/client/petstore/ruby/lib/petstore/configuration.rb +++ b/samples/client/petstore/ruby/lib/petstore/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb index 01b2eb58d7f..0f2e615271a 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/animal.rb b/samples/client/petstore/ruby/lib/petstore/models/animal.rb index 8e737d582c8..c418f42ca38 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/animal.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/animal.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/api_response.rb b/samples/client/petstore/ruby/lib/petstore/models/api_response.rb index 2bbfba46c3f..bb21206dc5c 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/api_response.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/api_response.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb b/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb index 057c5b787b6..b49c37aeb0e 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb b/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb index 9585dd80a6b..0a7501408d8 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/array_test.rb b/samples/client/petstore/ruby/lib/petstore/models/array_test.rb index 583ea424607..86cd97d6ed6 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/array_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/array_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb b/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb index 0d698fee60f..b49e27315a2 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/cat.rb b/samples/client/petstore/ruby/lib/petstore/models/cat.rb index 984aee85a08..bd621c16978 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/cat.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/cat.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb b/samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb index cca5e6828b3..7e4813da981 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/category.rb b/samples/client/petstore/ruby/lib/petstore/models/category.rb index 3bdce1b83f3..153c0e0714b 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/category.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/category.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/class_model.rb b/samples/client/petstore/ruby/lib/petstore/models/class_model.rb index d185566668f..d4b185e1cbe 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/class_model.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/class_model.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/client.rb b/samples/client/petstore/ruby/lib/petstore/models/client.rb index 7f6d0947223..f48e7f0269d 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/client.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/dog.rb b/samples/client/petstore/ruby/lib/petstore/models/dog.rb index 9874575bd0b..9e207ce853a 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/dog.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/dog.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb b/samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb index 62839a7cb13..662474d3b1d 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb b/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb index e281d2ddc46..742b859d830 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb b/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb index 6c44023fb2b..c2fbc1ebbf4 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb b/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb index d3416f495ac..5e23cf64e2c 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/file.rb b/samples/client/petstore/ruby/lib/petstore/models/file.rb index 76ee9955810..ae652038f67 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/file.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/file.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb b/samples/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb index c07f1a43ea0..e5ed19dfa7a 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/foo.rb b/samples/client/petstore/ruby/lib/petstore/models/foo.rb index 54eb0760f5e..e00376c6d69 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/foo.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/foo.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/format_test.rb b/samples/client/petstore/ruby/lib/petstore/models/format_test.rb index 0c57d78ac25..c086bc347c6 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/format_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/format_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb b/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb index 3fe1977ba7d..3c562de5363 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/health_check_result.rb b/samples/client/petstore/ruby/lib/petstore/models/health_check_result.rb index aebfc27084e..f9f3d1906de 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/health_check_result.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/health_check_result.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/inline_response_default.rb b/samples/client/petstore/ruby/lib/petstore/models/inline_response_default.rb index 2eb6b88a224..56198d95ccf 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/inline_response_default.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/inline_response_default.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/list.rb b/samples/client/petstore/ruby/lib/petstore/models/list.rb index f04fceff81b..c8a846fc41d 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/list.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/list.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/map_test.rb b/samples/client/petstore/ruby/lib/petstore/models/map_test.rb index 552d9ae330a..d435fc7fc26 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/map_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/map_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb b/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb index bf90d3cd06f..8dba86d933f 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb b/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb index bad3bfcce3a..552aad5109e 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/model_return.rb b/samples/client/petstore/ruby/lib/petstore/models/model_return.rb index d33b1bf1dac..72b5e47b97e 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/model_return.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/model_return.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/name.rb b/samples/client/petstore/ruby/lib/petstore/models/name.rb index 6a1777a426d..8324c9c615b 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/name.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/name.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/nullable_class.rb b/samples/client/petstore/ruby/lib/petstore/models/nullable_class.rb index 3d0d81a7444..9d71c77e512 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/nullable_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/nullable_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/number_only.rb b/samples/client/petstore/ruby/lib/petstore/models/number_only.rb index 7359f1b1115..df5aa205089 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/number_only.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/order.rb b/samples/client/petstore/ruby/lib/petstore/models/order.rb index 6778c4b97fb..fe9ae807d9b 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/order.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/order.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb index b6d4bd88ace..3688d94e844 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb index 92a7aac382b..188a171fbac 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb index 7097f7d9fb9..99fbc6e0153 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb index 30c26017cc7..13349e85869 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb index a95eab63a6e..b0074a08b24 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_object_with_enum_property.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_object_with_enum_property.rb index 6950269d997..a3f95985c98 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_object_with_enum_property.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_object_with_enum_property.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/pet.rb b/samples/client/petstore/ruby/lib/petstore/models/pet.rb index c810bf54845..3f0e3eac4c2 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/pet.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/pet.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb b/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb index 53774ce12d4..ce91229d4cc 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb b/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb index 06d53c68ff0..93a98ff9187 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/tag.rb b/samples/client/petstore/ruby/lib/petstore/models/tag.rb index b9a14f57974..eda661a82bc 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/tag.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/tag.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/user.rb b/samples/client/petstore/ruby/lib/petstore/models/user.rb index c1f7816f475..a9183b572ea 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/user.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/user.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/lib/petstore/version.rb b/samples/client/petstore/ruby/lib/petstore/version.rb index ab3b0dfefbd..9369c16a131 100644 --- a/samples/client/petstore/ruby/lib/petstore/version.rb +++ b/samples/client/petstore/ruby/lib/petstore/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/petstore.gemspec b/samples/client/petstore/ruby/petstore.gemspec index fca963ec152..670b6b3f96f 100644 --- a/samples/client/petstore/ruby/petstore.gemspec +++ b/samples/client/petstore/ruby/petstore.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/spec/api_client_spec.rb b/samples/client/petstore/ruby/spec/api_client_spec.rb index 663b8081006..0d2f3ad9459 100644 --- a/samples/client/petstore/ruby/spec/api_client_spec.rb +++ b/samples/client/petstore/ruby/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/spec/configuration_spec.rb b/samples/client/petstore/ruby/spec/configuration_spec.rb index 10c9510b239..94de3f9a4e7 100644 --- a/samples/client/petstore/ruby/spec/configuration_spec.rb +++ b/samples/client/petstore/ruby/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/ruby/spec/spec_helper.rb b/samples/client/petstore/ruby/spec/spec_helper.rb index 86d92cda2b9..9bfe1a1a327 100644 --- a/samples/client/petstore/ruby/spec/spec_helper.rb +++ b/samples/client/petstore/ruby/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/client/petstore/rust/hyper/petstore/.openapi-generator/VERSION b/samples/client/petstore/rust/hyper/petstore/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/rust/hyper/petstore/.openapi-generator/VERSION +++ b/samples/client/petstore/rust/hyper/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/VERSION b/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/VERSION +++ b/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/VERSION b/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/VERSION +++ b/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/scala-akka/.openapi-generator/VERSION b/samples/client/petstore/scala-akka/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/scala-akka/.openapi-generator/VERSION +++ b/samples/client/petstore/scala-akka/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION b/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION +++ b/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/scala-sttp/.openapi-generator/VERSION b/samples/client/petstore/scala-sttp/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/scala-sttp/.openapi-generator/VERSION +++ b/samples/client/petstore/scala-sttp/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/PetApi.java index 6dc5d09f0c8..4ac2f8c1c91 100644 --- a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/StoreApi.java index 0c181e59ee3..f059c01a7f5 100644 --- a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/UserApi.java index f62f460d121..7cd1d12936e 100644 --- a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-no-nullable/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud-no-nullable/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/spring-cloud-no-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/PetApi.java index f77fdf21de2..a4423018756 100644 --- a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/StoreApi.java index 241a82690b1..fb68cb1fc1c 100644 --- a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/UserApi.java index ad21d7b8105..fecb6f1b908 100644 --- a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-spring-pageable/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud-spring-pageable/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/spring-cloud-spring-pageable/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud-spring-pageable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/PetApi.java index 8b6ead39e2c..3b142812713 100644 --- a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java index 83d5530deb7..9dfd829f5b0 100644 --- a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/UserApi.java index 683cff0ce64..8e759301d3a 100644 --- a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/spring-cloud/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java index f77fdf21de2..a4423018756 100644 --- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java index 241a82690b1..fb68cb1fc1c 100644 --- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java index ad21d7b8105..fecb6f1b908 100644 --- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-stubs/.openapi-generator/VERSION b/samples/client/petstore/spring-stubs/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/spring-stubs/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-stubs/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java index 08660cdaac3..7884dc1e310 100644 --- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java index 229a0ba4240..829afc494e9 100644 --- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java index e2d924590ee..c5eb5453f64 100644 --- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/swift5/alamofireLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/alamofireLibrary/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/alamofireLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/combineLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/combineLibrary/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/combineLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/combineLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/default/.openapi-generator/VERSION b/samples/client/petstore/swift5/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/default/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/deprecated/.openapi-generator/VERSION b/samples/client/petstore/swift5/deprecated/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/deprecated/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/deprecated/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/nonPublicApi/.openapi-generator/VERSION b/samples/client/petstore/swift5/nonPublicApi/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/nonPublicApi/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/nonPublicApi/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/objcCompatible/.openapi-generator/VERSION b/samples/client/petstore/swift5/objcCompatible/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/objcCompatible/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/objcCompatible/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION b/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/promisekitLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/promisekitLibrary/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/promisekitLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/readonlyProperties/.openapi-generator/VERSION b/samples/client/petstore/swift5/readonlyProperties/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/readonlyProperties/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/readonlyProperties/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/resultLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/resultLibrary/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/resultLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/resultLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/urlsessionLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/urlsessionLibrary/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/urlsessionLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION b/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/composed-schemas/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/composed-schemas/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-axios/builds/composed-schemas/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/composed-schemas/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-axios/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/es6-target/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/es6-target/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-axios/builds/es6-target/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/es6-target/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-complex-headers/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-complex-headers/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-axios/builds/with-complex-headers/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-complex-headers/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-interfaces/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-interfaces/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-axios/builds/with-interfaces/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-interfaces/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-npm-version/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-npm-version/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-axios/builds/with-npm-version/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-npm-version/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/default-v3.0/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-fetch/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/enum/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/enum/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-fetch/builds/enum/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/enum/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/es6-target/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-fetch/builds/es6-target/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/with-interfaces/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/with-npm-version/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION b/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-redux-query/builds/with-npm-version/.openapi-generator/VERSION b/samples/client/petstore/typescript-redux-query/builds/with-npm-version/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-redux-query/builds/with-npm-version/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-redux-query/builds/with-npm-version/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-rxjs/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/es6-target/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/config/petstore/protobuf-schema/.openapi-generator/VERSION b/samples/config/petstore/protobuf-schema/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/config/petstore/protobuf-schema/.openapi-generator/VERSION +++ b/samples/config/petstore/protobuf-schema/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/meta-codegen/lib/pom.xml b/samples/meta-codegen/lib/pom.xml index 3132601fc90..eb5fd1018d6 100644 --- a/samples/meta-codegen/lib/pom.xml +++ b/samples/meta-codegen/lib/pom.xml @@ -121,7 +121,7 @@ UTF-8 - 5.2.0-SNAPSHOT + 5.2.0 1.0.0 4.8.1 diff --git a/samples/meta-codegen/usage/.openapi-generator/VERSION b/samples/meta-codegen/usage/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/meta-codegen/usage/.openapi-generator/VERSION +++ b/samples/meta-codegen/usage/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/elm/.openapi-generator/VERSION b/samples/openapi3/client/elm/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/elm/.openapi-generator/VERSION +++ b/samples/openapi3/client/elm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/.openapi-generator/VERSION b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/.openapi-generator/VERSION +++ b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/.openapi-generator/VERSION b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/.openapi-generator/VERSION +++ b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/python/.openapi-generator/VERSION b/samples/openapi3/client/extensions/x-auth-id-alias/python/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/python/.openapi-generator/VERSION +++ b/samples/openapi3/client/extensions/x-auth-id-alias/python/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/.openapi-generator/VERSION b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/.openapi-generator/VERSION +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb index e0d70e377a4..a291943990f 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api/usage_api.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api/usage_api.rb index e150a0f673f..13c795882e9 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api/usage_api.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api/usage_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb index dceb19bdb22..2c39d223404 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_error.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_error.rb index 3984528e045..1a3981a33b3 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_error.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb index 65f2cfea56a..32682c92889 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb index 80e58dd211a..7aeaa5d8a58 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/api_client_spec.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/api_client_spec.rb index 0b4502a11c8..8bd913af86a 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/api_client_spec.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/configuration_spec.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/configuration_spec.rb index df8bb818aa7..b850a17baa6 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/configuration_spec.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb index ae5d77411e2..20666f85b4b 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec index 0b5caba0e8b..55a5b220b22 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/dynamic-servers/python/.openapi-generator/VERSION b/samples/openapi3/client/features/dynamic-servers/python/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/features/dynamic-servers/python/.openapi-generator/VERSION +++ b/samples/openapi3/client/features/dynamic-servers/python/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/.openapi-generator/VERSION b/samples/openapi3/client/features/dynamic-servers/ruby/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/.openapi-generator/VERSION +++ b/samples/openapi3/client/features/dynamic-servers/ruby/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/dynamic_servers.gemspec b/samples/openapi3/client/features/dynamic-servers/ruby/dynamic_servers.gemspec index bfaeacb1aed..1cf61846b8f 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/dynamic_servers.gemspec +++ b/samples/openapi3/client/features/dynamic-servers/ruby/dynamic_servers.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers.rb index 2fdd66b4145..9ffbcce2f16 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb index 1fdb9e468f0..ebe43ab2128 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb index 5e236ccddd9..85ac8733557 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_error.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_error.rb index fbb07fa1c4d..e7053cb2062 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_error.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb index 9ae58b4a33a..fb2984d070e 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/version.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/version.rb index 6c7f7ac27d9..4bec55df2a8 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/version.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/spec/api_client_spec.rb b/samples/openapi3/client/features/dynamic-servers/ruby/spec/api_client_spec.rb index 685f1ee26c8..ec042334ca9 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/spec/api_client_spec.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/spec/configuration_spec.rb b/samples/openapi3/client/features/dynamic-servers/ruby/spec/configuration_spec.rb index adc964496e4..6a4f8d5658a 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/spec/configuration_spec.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/spec/spec_helper.rb b/samples/openapi3/client/features/dynamic-servers/ruby/spec/spec_helper.rb index 68368b2e587..7f74d20adac 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/spec/spec_helper.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/.openapi-generator/VERSION b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/.openapi-generator/VERSION +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore.rb index dedc2a733be..f8ff79ac314 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api/usage_api.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api/usage_api.rb index 355c78dd797..2d81791e4d9 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api/usage_api.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api/usage_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb index 02e0f300d10..2b93d83a8f4 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_error.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_error.rb index 921981794eb..e0067eecf42 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_error.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb index 20bb2cf0269..9a137c97d26 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/array_alias.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/array_alias.rb index b9f03227ba9..5d90030dc36 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/array_alias.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/array_alias.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/map_alias.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/map_alias.rb index 6cac74ac13e..9be9ff2199c 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/map_alias.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/map_alias.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/version.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/version.rb index 787763a66f3..893c34188ed 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/version.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/petstore.gemspec b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/petstore.gemspec index af450c8fe8d..f8913c4167f 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/petstore.gemspec +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/petstore.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/api_client_spec.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/api_client_spec.rb index 495e376a094..9798ce8766d 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/api_client_spec.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/configuration_spec.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/configuration_spec.rb index 55ca88de58b..3b423d0b7f1 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/configuration_spec.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/spec_helper.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/spec_helper.rb index 9ab6dba6ba0..898a5c464c6 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/spec_helper.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0-SNAPSHOT +OpenAPI Generator version: 5.2.0 =end diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/go/go-petstore/.openapi-generator/VERSION b/samples/openapi3/client/petstore/go/go-petstore/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/go/go-petstore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/.openapi-generator/VERSION b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/.openapi-generator/VERSION b/samples/openapi3/client/petstore/java/jersey2-java8/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/java/jersey2-java8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/java/native/.openapi-generator/VERSION b/samples/openapi3/client/petstore/java/native/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/java/native/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/java/native/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/python-legacy/.openapi-generator/VERSION b/samples/openapi3/client/petstore/python-legacy/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100755 --- a/samples/openapi3/client/petstore/python-legacy/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/python-legacy/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/python/.openapi-generator/VERSION b/samples/openapi3/client/petstore/python/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/python/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/python/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/schema/petstore/ktorm/.openapi-generator/VERSION b/samples/schema/petstore/ktorm/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/schema/petstore/ktorm/.openapi-generator/VERSION +++ b/samples/schema/petstore/ktorm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/schema/petstore/mysql/.openapi-generator/VERSION b/samples/schema/petstore/mysql/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/schema/petstore/mysql/.openapi-generator/VERSION +++ b/samples/schema/petstore/mysql/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION b/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION +++ b/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore-3.0/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore-3.0/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/aspnetcore-3.0/.openapi-generator/VERSION +++ b/samples/server/petstore/aspnetcore-3.0/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore-3.1/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore-3.1/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/aspnetcore-3.1/.openapi-generator/VERSION +++ b/samples/server/petstore/aspnetcore-3.1/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION +++ b/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/aspnetcore/.openapi-generator/VERSION +++ b/samples/server/petstore/aspnetcore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION b/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION +++ b/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION b/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION +++ b/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/erlang-server/.openapi-generator/VERSION b/samples/server/petstore/erlang-server/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/erlang-server/.openapi-generator/VERSION +++ b/samples/server/petstore/erlang-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/go-api-server/.openapi-generator/VERSION b/samples/server/petstore/go-api-server/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/go-api-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-api-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/go-chi-server/.openapi-generator/VERSION b/samples/server/petstore/go-chi-server/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/go-chi-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-chi-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/go-echo-server/.openapi-generator/VERSION b/samples/server/petstore/go-echo-server/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/go-echo-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-echo-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/go-gin-api-server/.openapi-generator/VERSION b/samples/server/petstore/go-gin-api-server/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/go-gin-api-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-gin-api-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/haskell-servant/.openapi-generator/VERSION b/samples/server/petstore/haskell-servant/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/haskell-servant/.openapi-generator/VERSION +++ b/samples/server/petstore/haskell-servant/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-msf4j/.openapi-generator/VERSION b/samples/server/petstore/java-msf4j/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-msf4j/.openapi-generator/VERSION +++ b/samples/server/petstore/java-msf4j/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-api-package-override/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-api-package-override/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-play-framework-api-package-override/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-api-package-override/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-async/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-async/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-play-framework-async/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-controller-only/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-controller-only/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-play-framework-controller-only/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-controller-only/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-fake-endpoints/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-fake-endpoints/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-play-framework-fake-endpoints/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-fake-endpoints/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-bean-validation/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-bean-validation/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-play-framework-no-bean-validation/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-bean-validation/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-exception-handling/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-exception-handling/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-play-framework-no-exception-handling/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-exception-handling/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-interface/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-interface/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-play-framework-no-interface/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-interface/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-nullable/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-nullable/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-play-framework-no-nullable/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-swagger-ui/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-swagger-ui/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-play-framework-no-swagger-ui/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-swagger-ui/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-wrap-calls/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-wrap-calls/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-play-framework-no-wrap-calls/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-wrap-calls/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-play-framework/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-undertow/.openapi-generator/VERSION b/samples/server/petstore/java-undertow/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-undertow/.openapi-generator/VERSION +++ b/samples/server/petstore/java-undertow/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/java-vertx-web/.openapi-generator/VERSION b/samples/server/petstore/java-vertx-web/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/java-vertx-web/.openapi-generator/VERSION +++ b/samples/server/petstore/java-vertx-web/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/default-value/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/default-value/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-resteasy/default-value/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/default-value/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION b/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/kotlin-server/ktor/README.md b/samples/server/petstore/kotlin-server/ktor/README.md index c18e00d6d35..62451a4b1c1 100644 --- a/samples/server/petstore/kotlin-server/ktor/README.md +++ b/samples/server/petstore/kotlin-server/ktor/README.md @@ -2,7 +2,7 @@ This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -Generated by OpenAPI Generator 5.2.0-SNAPSHOT. +Generated by OpenAPI Generator 5.2.0. ## Requires diff --git a/samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/VERSION b/samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/PetApi.kt b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/PetApi.kt index 2880b39b990..05d6f55d30b 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/PetApi.kt +++ b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/PetApi.kt @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/StoreApi.kt b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/StoreApi.kt index 14a9d0fa525..0906e8f3054 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/StoreApi.kt +++ b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/StoreApi.kt @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/UserApi.kt b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/UserApi.kt index 233a3bb1a5f..26ae6475199 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/UserApi.kt +++ b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/UserApi.kt @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION b/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION b/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/php-laravel/.openapi-generator/VERSION b/samples/server/petstore/php-laravel/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/php-laravel/.openapi-generator/VERSION +++ b/samples/server/petstore/php-laravel/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/php-lumen/.openapi-generator/VERSION b/samples/server/petstore/php-lumen/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/php-lumen/.openapi-generator/VERSION +++ b/samples/server/petstore/php-lumen/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION b/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION +++ b/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/php-mezzio-ph/.openapi-generator/VERSION b/samples/server/petstore/php-mezzio-ph/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/php-mezzio-ph/.openapi-generator/VERSION +++ b/samples/server/petstore/php-mezzio-ph/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/php-slim4/.openapi-generator/VERSION b/samples/server/petstore/php-slim4/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/php-slim4/.openapi-generator/VERSION +++ b/samples/server/petstore/php-slim4/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/.openapi-generator/VERSION b/samples/server/petstore/php-symfony/SymfonyBundle-php/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/php-symfony/SymfonyBundle-php/.openapi-generator/VERSION +++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/VERSION b/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/VERSION +++ b/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION b/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION +++ b/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/python-blueplanet/.openapi-generator/VERSION b/samples/server/petstore/python-blueplanet/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/python-blueplanet/.openapi-generator/VERSION +++ b/samples/server/petstore/python-blueplanet/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/python-fastapi/.openapi-generator/VERSION b/samples/server/petstore/python-fastapi/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/python-fastapi/.openapi-generator/VERSION +++ b/samples/server/petstore/python-fastapi/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/python-flask/.openapi-generator/VERSION b/samples/server/petstore/python-flask/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/python-flask/.openapi-generator/VERSION +++ b/samples/server/petstore/python-flask/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/multipart-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/multipart-v3/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/rust-server/output/multipart-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/multipart-v3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/no-example-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/no-example-v3/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/rust-server/output/no-example-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/no-example-v3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/openapi-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/openapi-v3/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/rust-server/output/openapi-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/openapi-v3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/ops-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/ops-v3/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/rust-server/output/ops-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/ops-v3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/ping-bearer-auth/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/ping-bearer-auth/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/rust-server/output/ping-bearer-auth/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/ping-bearer-auth/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/rust-server-test/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/rust-server-test/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/rust-server/output/rust-server-test/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/rust-server-test/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-default-value/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-default-value/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/spring-mvc-default-value/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-default-value/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestHeadersApi.java b/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestHeadersApi.java index 2d31a64a04d..6389dec165b 100644 --- a/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestHeadersApi.java +++ b/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestHeadersApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestQueryParamsApi.java b/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestQueryParamsApi.java index a3f907809a0..b4c3e2d567f 100644 --- a/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestQueryParamsApi.java +++ b/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestQueryParamsApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java index 8326ab48c02..24fe4f55eb7 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java index b301ad0b485..1915ea23ed4 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 3de6e0e2188..d198c07affe 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java index f2512f9eac3..4c0d59e7452 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java index 03fa53219d9..dcbcfa5d92b 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java index bc349aa67c0..3ca63c1ad21 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java index 62b5e8c1c9e..8dd9d509edc 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java index 1d52ff9cf88..1b9583461bb 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index ce5242fa1b9..484d0f073fc 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java index 6c50971728c..4a411b45b62 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java index a18ef080341..25046b7749f 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java index bdd829c2178..078609a9eb4 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-no-nullable/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java index 62b5e8c1c9e..8dd9d509edc 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeApi.java index 9c17aee08e3..16cb7abb947 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index ce5242fa1b9..484d0f073fc 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/PetApi.java index 6c50971728c..4a411b45b62 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/StoreApi.java index a18ef080341..25046b7749f 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/UserApi.java index bdd829c2178..078609a9eb4 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-spring-pageable/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-spring-pageable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java index 62b5e8c1c9e..8dd9d509edc 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java index b0b57f815bd..c8c3a826206 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index ce5242fa1b9..484d0f073fc 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/PetApi.java index 2e67f9eb609..92f03222402 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java index a18ef080341..25046b7749f 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/UserApi.java index bdd829c2178..078609a9eb4 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/spring-mvc/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java index 62b5e8c1c9e..8dd9d509edc 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java index 9c17aee08e3..16cb7abb947 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index ce5242fa1b9..484d0f073fc 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java index 6c50971728c..4a411b45b62 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java index a18ef080341..25046b7749f 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java index bdd829c2178..078609a9eb4 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/.openapi-generator/VERSION b/samples/server/petstore/springboot-beanvalidation-no-nullable/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java index dfae7d61930..75b941ee702 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeApi.java index 68cec85a19a..942f3a12782 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index d2215dd0d1b..6ebeeb85a7f 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/PetApi.java index b9655c2c700..240be3642fd 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/StoreApi.java index 69c047f7c67..6fee2e320f4 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/UserApi.java index 972cc8bc468..ccd92721348 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION b/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java index 62b5e8c1c9e..8dd9d509edc 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java index 9c17aee08e3..16cb7abb947 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index ce5242fa1b9..484d0f073fc 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java index 6c50971728c..4a411b45b62 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java index a18ef080341..25046b7749f 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java index bdd829c2178..078609a9eb4 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION b/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java index f4afb63f618..585ebc274a1 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java index f085be2317d..d5c9cf0c564 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 572b49ba2a9..38976592ee4 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java index b7a84c916cf..001e473ead0 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java index 05cfb8f5758..e666c58d5c3 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java index 5b351223593..bfc32159fe4 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION b/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java index f4afb63f618..585ebc274a1 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java index f085be2317d..d5c9cf0c564 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 572b49ba2a9..38976592ee4 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java index b7a84c916cf..001e473ead0 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java index 05cfb8f5758..e666c58d5c3 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java index 5b351223593..bfc32159fe4 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION b/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java index 0fa0742fe83..25b0d32e0be 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java index e985e37bc09..ae504056721 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 3d7f2e2ea28..87b9415fbba 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java index 209a72ff977..f3556ff547b 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java index 94057aa6fc5..6d588d2834b 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java index b60e3580cf6..8035938bdbd 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION b/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java index eea35ce51b8..9520695b4b0 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java index 33228158d4d..e20e0a28a5d 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 15b48f22a52..730685efd02 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java index 41ed1eeccd3..87f977783b7 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java index 520c688e3fa..b7fa836ab06 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java index 2f3e0a55c9b..f9082b244c6 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/.openapi-generator/VERSION b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java index dfae7d61930..75b941ee702 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeApi.java index 54e73fc876d..c5a139dc436 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index d2215dd0d1b..6ebeeb85a7f 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/PetApi.java index dcdb633acf6..d426b618d9e 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/StoreApi.java index 69c047f7c67..6fee2e320f4 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/UserApi.java index 972cc8bc468..ccd92721348 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/.openapi-generator/VERSION b/samples/server/petstore/springboot-spring-pageable-delegatePattern/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/AnotherFakeApi.java index f4afb63f618..585ebc274a1 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeApi.java index 02a920c8bf8..be334728b3d 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 572b49ba2a9..38976592ee4 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/PetApi.java index 0e5bdeffced..507f1ee278f 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/StoreApi.java index 05cfb8f5758..e666c58d5c3 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/UserApi.java index 5b351223593..bfc32159fe4 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/.openapi-generator/VERSION b/samples/server/petstore/springboot-spring-pageable-without-j8/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java index dfae7d61930..75b941ee702 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeApi.java index 54e73fc876d..c5a139dc436 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index d2215dd0d1b..6ebeeb85a7f 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/PetApi.java index dcdb633acf6..d426b618d9e 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/StoreApi.java index 69c047f7c67..6fee2e320f4 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/UserApi.java index 972cc8bc468..ccd92721348 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/.openapi-generator/VERSION b/samples/server/petstore/springboot-spring-pageable/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot-spring-pageable/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-spring-pageable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java index 62b5e8c1c9e..8dd9d509edc 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java index b0b57f815bd..c8c3a826206 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index ce5242fa1b9..484d0f073fc 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/PetApi.java index 2e67f9eb609..92f03222402 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java index a18ef080341..25046b7749f 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/UserApi.java index bdd829c2178..078609a9eb4 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION b/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java index 62b5e8c1c9e..8dd9d509edc 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java index 5360eef212b..70fdd8fda37 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index ce5242fa1b9..484d0f073fc 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java index 581c9ec1d36..3574f7a9148 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java index a18ef080341..25046b7749f 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java index bdd829c2178..078609a9eb4 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION b/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java index 5ba806e0898..943b09771e3 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeApi.java index b3dcb0a9400..957e6361ea3 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeClassnameTestApi.java index a963e319969..996120f725f 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/PetApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/PetApi.java index a83c6d8326d..22bcc1aa169 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/PetApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/StoreApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/StoreApi.java index e9cd51627cd..86a4cc864f3 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/StoreApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/UserApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/UserApi.java index d730f7e2ab0..8d72235c890 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/UserApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/.openapi-generator/VERSION b/samples/server/petstore/springboot/.openapi-generator/VERSION index 6555596f931..7cbea073bea 100644 --- a/samples/server/petstore/springboot/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0-SNAPSHOT \ No newline at end of file +5.2.0 \ No newline at end of file diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java index 62b5e8c1c9e..8dd9d509edc 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java index 9c17aee08e3..16cb7abb947 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index ce5242fa1b9..484d0f073fc 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java index 6c50971728c..4a411b45b62 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java index a18ef080341..25046b7749f 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java index bdd829c2178..078609a9eb4 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). * https://openapi-generator.tech * Do not edit the class manually. */ From 02835b35bc3ef49e2ae5321b5d4dbbd571a494f6 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 9 Jul 2021 22:42:31 +0800 Subject: [PATCH 191/192] Prepare v5.2.1 (#9922) * bump verions to 5.2.1-SNAPSHOT * update samples * update readme * fix gradle properties --- README.md | 25 +++++++++++++------ modules/openapi-generator-cli/pom.xml | 2 +- modules/openapi-generator-core/pom.xml | 2 +- .../gradle.properties | 2 +- .../openapi-generator-gradle-plugin/pom.xml | 2 +- .../examples/java-client.xml | 2 +- .../examples/multi-module/java-client/pom.xml | 2 +- .../examples/non-java-invalid-spec.xml | 2 +- .../examples/non-java.xml | 2 +- .../openapi-generator-maven-plugin/pom.xml | 2 +- modules/openapi-generator-online/pom.xml | 2 +- modules/openapi-generator/pom.xml | 2 +- pom.xml | 2 +- .../petstore/R/.openapi-generator/VERSION | 2 +- .../petstore/apex/.openapi-generator/VERSION | 2 +- .../petstore/bash/.openapi-generator/VERSION | 2 +- .../petstore/c/.openapi-generator/VERSION | 2 +- .../cpp-qt/.openapi-generator/VERSION | 2 +- .../client/.openapi-generator/VERSION | 2 +- .../petstore/cpp-restsdk/client/ApiClient.cpp | 2 +- .../petstore/cpp-restsdk/client/ApiClient.h | 2 +- .../cpp-restsdk/client/ApiConfiguration.cpp | 2 +- .../cpp-restsdk/client/ApiConfiguration.h | 2 +- .../cpp-restsdk/client/ApiException.cpp | 2 +- .../cpp-restsdk/client/ApiException.h | 2 +- .../cpp-restsdk/client/HttpContent.cpp | 2 +- .../petstore/cpp-restsdk/client/HttpContent.h | 2 +- .../petstore/cpp-restsdk/client/IHttpBody.h | 2 +- .../petstore/cpp-restsdk/client/JsonBody.cpp | 2 +- .../petstore/cpp-restsdk/client/JsonBody.h | 2 +- .../petstore/cpp-restsdk/client/ModelBase.cpp | 2 +- .../petstore/cpp-restsdk/client/ModelBase.h | 2 +- .../cpp-restsdk/client/MultipartFormData.cpp | 2 +- .../cpp-restsdk/client/MultipartFormData.h | 2 +- .../petstore/cpp-restsdk/client/Object.cpp | 2 +- .../petstore/cpp-restsdk/client/Object.h | 2 +- .../cpp-restsdk/client/api/PetApi.cpp | 2 +- .../petstore/cpp-restsdk/client/api/PetApi.h | 2 +- .../cpp-restsdk/client/api/StoreApi.cpp | 2 +- .../cpp-restsdk/client/api/StoreApi.h | 2 +- .../cpp-restsdk/client/api/UserApi.cpp | 2 +- .../petstore/cpp-restsdk/client/api/UserApi.h | 2 +- .../cpp-restsdk/client/model/ApiResponse.cpp | 2 +- .../cpp-restsdk/client/model/ApiResponse.h | 2 +- .../cpp-restsdk/client/model/Category.cpp | 2 +- .../cpp-restsdk/client/model/Category.h | 2 +- .../cpp-restsdk/client/model/Order.cpp | 2 +- .../petstore/cpp-restsdk/client/model/Order.h | 2 +- .../petstore/cpp-restsdk/client/model/Pet.cpp | 2 +- .../petstore/cpp-restsdk/client/model/Pet.h | 2 +- .../petstore/cpp-restsdk/client/model/Tag.cpp | 2 +- .../petstore/cpp-restsdk/client/model/Tag.h | 2 +- .../cpp-restsdk/client/model/User.cpp | 2 +- .../petstore/cpp-restsdk/client/model/User.h | 2 +- .../cpp-tiny/.openapi-generator/VERSION | 2 +- .../crystal/.openapi-generator/VERSION | 2 +- samples/client/petstore/crystal/.travis.yml | 2 +- .../petstore/crystal/spec/spec_helper.cr | 2 +- .../client/petstore/crystal/src/petstore.cr | 2 +- .../crystal/src/petstore/api/pet_api.cr | 2 +- .../crystal/src/petstore/api/store_api.cr | 2 +- .../crystal/src/petstore/api/user_api.cr | 2 +- .../crystal/src/petstore/api_client.cr | 2 +- .../crystal/src/petstore/api_error.cr | 2 +- .../crystal/src/petstore/configuration.cr | 2 +- .../src/petstore/models/api_response.cr | 2 +- .../crystal/src/petstore/models/category.cr | 2 +- .../crystal/src/petstore/models/order.cr | 2 +- .../crystal/src/petstore/models/pet.cr | 2 +- .../crystal/src/petstore/models/tag.cr | 2 +- .../crystal/src/petstore/models/user.cr | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../OpenAPIClient/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../OpenAPIClient/.openapi-generator/VERSION | 2 +- .../elixir/.openapi-generator/VERSION | 2 +- .../go/go-petstore/.openapi-generator/VERSION | 2 +- .../groovy/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/feign/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/jersey1/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../jersey2-java8/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../native-async/.openapi-generator/VERSION | 2 +- .../java/native/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../okhttp-gson/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../rest-assured/.openapi-generator/VERSION | 2 +- .../java/resteasy/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../resttemplate/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/retrofit2/.openapi-generator/VERSION | 2 +- .../retrofit2rx2/.openapi-generator/VERSION | 2 +- .../retrofit2rx3/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/vertx/.openapi-generator/VERSION | 2 +- .../java/webclient/.openapi-generator/VERSION | 2 +- .../javascript-es6/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-gson/.openapi-generator/VERSION | 2 +- .../kotlin-jackson/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-okhttp3/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-string/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin/.openapi-generator/VERSION | 2 +- .../petstore/lua/.openapi-generator/VERSION | 2 +- .../petstore/nim/.openapi-generator/VERSION | 2 +- .../objc/core-data/.openapi-generator/VERSION | 2 +- .../objc/default/.openapi-generator/VERSION | 2 +- .../petstore/perl/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../lib/Api/AnotherFakeApi.php | 2 +- .../OpenAPIClient-php/lib/Api/DefaultApi.php | 2 +- .../php/OpenAPIClient-php/lib/Api/FakeApi.php | 2 +- .../lib/Api/FakeClassnameTags123Api.php | 2 +- .../php/OpenAPIClient-php/lib/Api/PetApi.php | 2 +- .../OpenAPIClient-php/lib/Api/StoreApi.php | 2 +- .../php/OpenAPIClient-php/lib/Api/UserApi.php | 2 +- .../OpenAPIClient-php/lib/ApiException.php | 2 +- .../OpenAPIClient-php/lib/Configuration.php | 2 +- .../OpenAPIClient-php/lib/HeaderSelector.php | 2 +- .../lib/Model/AdditionalPropertiesClass.php | 2 +- .../OpenAPIClient-php/lib/Model/Animal.php | 2 +- .../lib/Model/ApiResponse.php | 2 +- .../lib/Model/ArrayOfArrayOfNumberOnly.php | 2 +- .../lib/Model/ArrayOfNumberOnly.php | 2 +- .../OpenAPIClient-php/lib/Model/ArrayTest.php | 2 +- .../lib/Model/Capitalization.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Cat.php | 2 +- .../OpenAPIClient-php/lib/Model/CatAllOf.php | 2 +- .../OpenAPIClient-php/lib/Model/Category.php | 2 +- .../lib/Model/ClassModel.php | 2 +- .../OpenAPIClient-php/lib/Model/Client.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Dog.php | 2 +- .../OpenAPIClient-php/lib/Model/DogAllOf.php | 2 +- .../lib/Model/EnumArrays.php | 2 +- .../OpenAPIClient-php/lib/Model/EnumClass.php | 2 +- .../OpenAPIClient-php/lib/Model/EnumTest.php | 2 +- .../php/OpenAPIClient-php/lib/Model/File.php | 2 +- .../lib/Model/FileSchemaTestClass.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Foo.php | 2 +- .../lib/Model/FormatTest.php | 2 +- .../lib/Model/HasOnlyReadOnly.php | 2 +- .../lib/Model/HealthCheckResult.php | 2 +- .../lib/Model/InlineResponseDefault.php | 2 +- .../OpenAPIClient-php/lib/Model/MapTest.php | 2 +- ...PropertiesAndAdditionalPropertiesClass.php | 2 +- .../lib/Model/Model200Response.php | 2 +- .../lib/Model/ModelInterface.php | 2 +- .../OpenAPIClient-php/lib/Model/ModelList.php | 2 +- .../lib/Model/ModelReturn.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Name.php | 2 +- .../lib/Model/NullableClass.php | 2 +- .../lib/Model/NumberOnly.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Order.php | 2 +- .../lib/Model/OuterComposite.php | 2 +- .../OpenAPIClient-php/lib/Model/OuterEnum.php | 2 +- .../lib/Model/OuterEnumDefaultValue.php | 2 +- .../lib/Model/OuterEnumInteger.php | 2 +- .../Model/OuterEnumIntegerDefaultValue.php | 2 +- .../lib/Model/OuterObjectWithEnumProperty.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Pet.php | 2 +- .../lib/Model/ReadOnlyFirst.php | 2 +- .../lib/Model/SpecialModelName.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Tag.php | 2 +- .../php/OpenAPIClient-php/lib/Model/User.php | 2 +- .../lib/ObjectSerializer.php | 2 +- .../powershell/.openapi-generator/VERSION | 2 +- .../python-asyncio/.openapi-generator/VERSION | 2 +- .../python-legacy/.openapi-generator/VERSION | 2 +- .../python-tornado/.openapi-generator/VERSION | 2 +- .../python/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../ruby-faraday/.openapi-generator/VERSION | 2 +- .../petstore/ruby-faraday/lib/petstore.rb | 2 +- .../lib/petstore/api/another_fake_api.rb | 2 +- .../lib/petstore/api/default_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/fake_api.rb | 2 +- .../api/fake_classname_tags123_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/pet_api.rb | 2 +- .../lib/petstore/api/store_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/user_api.rb | 2 +- .../ruby-faraday/lib/petstore/api_client.rb | 2 +- .../ruby-faraday/lib/petstore/api_error.rb | 2 +- .../lib/petstore/configuration.rb | 2 +- .../models/additional_properties_class.rb | 2 +- .../lib/petstore/models/animal.rb | 2 +- .../lib/petstore/models/api_response.rb | 2 +- .../models/array_of_array_of_number_only.rb | 2 +- .../petstore/models/array_of_number_only.rb | 2 +- .../lib/petstore/models/array_test.rb | 2 +- .../lib/petstore/models/capitalization.rb | 2 +- .../ruby-faraday/lib/petstore/models/cat.rb | 2 +- .../lib/petstore/models/cat_all_of.rb | 2 +- .../lib/petstore/models/category.rb | 2 +- .../lib/petstore/models/class_model.rb | 2 +- .../lib/petstore/models/client.rb | 2 +- .../ruby-faraday/lib/petstore/models/dog.rb | 2 +- .../lib/petstore/models/dog_all_of.rb | 2 +- .../lib/petstore/models/enum_arrays.rb | 2 +- .../lib/petstore/models/enum_class.rb | 2 +- .../lib/petstore/models/enum_test.rb | 2 +- .../ruby-faraday/lib/petstore/models/file.rb | 2 +- .../petstore/models/file_schema_test_class.rb | 2 +- .../ruby-faraday/lib/petstore/models/foo.rb | 2 +- .../lib/petstore/models/format_test.rb | 2 +- .../lib/petstore/models/has_only_read_only.rb | 2 +- .../petstore/models/health_check_result.rb | 2 +- .../models/inline_response_default.rb | 2 +- .../ruby-faraday/lib/petstore/models/list.rb | 2 +- .../lib/petstore/models/map_test.rb | 2 +- ...perties_and_additional_properties_class.rb | 2 +- .../lib/petstore/models/model200_response.rb | 2 +- .../lib/petstore/models/model_return.rb | 2 +- .../ruby-faraday/lib/petstore/models/name.rb | 2 +- .../lib/petstore/models/nullable_class.rb | 2 +- .../lib/petstore/models/number_only.rb | 2 +- .../ruby-faraday/lib/petstore/models/order.rb | 2 +- .../lib/petstore/models/outer_composite.rb | 2 +- .../lib/petstore/models/outer_enum.rb | 2 +- .../models/outer_enum_default_value.rb | 2 +- .../lib/petstore/models/outer_enum_integer.rb | 2 +- .../outer_enum_integer_default_value.rb | 2 +- .../models/outer_object_with_enum_property.rb | 2 +- .../ruby-faraday/lib/petstore/models/pet.rb | 2 +- .../lib/petstore/models/read_only_first.rb | 2 +- .../lib/petstore/models/special_model_name.rb | 2 +- .../ruby-faraday/lib/petstore/models/tag.rb | 2 +- .../ruby-faraday/lib/petstore/models/user.rb | 2 +- .../ruby-faraday/lib/petstore/version.rb | 2 +- .../petstore/ruby-faraday/petstore.gemspec | 2 +- .../ruby-faraday/spec/api_client_spec.rb | 2 +- .../ruby-faraday/spec/configuration_spec.rb | 2 +- .../petstore/ruby-faraday/spec/spec_helper.rb | 2 +- .../petstore/ruby/.openapi-generator/VERSION | 2 +- samples/client/petstore/ruby/lib/petstore.rb | 2 +- .../ruby/lib/petstore/api/another_fake_api.rb | 2 +- .../ruby/lib/petstore/api/default_api.rb | 2 +- .../ruby/lib/petstore/api/fake_api.rb | 2 +- .../api/fake_classname_tags123_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/pet_api.rb | 2 +- .../ruby/lib/petstore/api/store_api.rb | 2 +- .../ruby/lib/petstore/api/user_api.rb | 2 +- .../petstore/ruby/lib/petstore/api_client.rb | 2 +- .../petstore/ruby/lib/petstore/api_error.rb | 2 +- .../ruby/lib/petstore/configuration.rb | 2 +- .../models/additional_properties_class.rb | 2 +- .../ruby/lib/petstore/models/animal.rb | 2 +- .../ruby/lib/petstore/models/api_response.rb | 2 +- .../models/array_of_array_of_number_only.rb | 2 +- .../petstore/models/array_of_number_only.rb | 2 +- .../ruby/lib/petstore/models/array_test.rb | 2 +- .../lib/petstore/models/capitalization.rb | 2 +- .../petstore/ruby/lib/petstore/models/cat.rb | 2 +- .../ruby/lib/petstore/models/cat_all_of.rb | 2 +- .../ruby/lib/petstore/models/category.rb | 2 +- .../ruby/lib/petstore/models/class_model.rb | 2 +- .../ruby/lib/petstore/models/client.rb | 2 +- .../petstore/ruby/lib/petstore/models/dog.rb | 2 +- .../ruby/lib/petstore/models/dog_all_of.rb | 2 +- .../ruby/lib/petstore/models/enum_arrays.rb | 2 +- .../ruby/lib/petstore/models/enum_class.rb | 2 +- .../ruby/lib/petstore/models/enum_test.rb | 2 +- .../petstore/ruby/lib/petstore/models/file.rb | 2 +- .../petstore/models/file_schema_test_class.rb | 2 +- .../petstore/ruby/lib/petstore/models/foo.rb | 2 +- .../ruby/lib/petstore/models/format_test.rb | 2 +- .../lib/petstore/models/has_only_read_only.rb | 2 +- .../petstore/models/health_check_result.rb | 2 +- .../models/inline_response_default.rb | 2 +- .../petstore/ruby/lib/petstore/models/list.rb | 2 +- .../ruby/lib/petstore/models/map_test.rb | 2 +- ...perties_and_additional_properties_class.rb | 2 +- .../lib/petstore/models/model200_response.rb | 2 +- .../ruby/lib/petstore/models/model_return.rb | 2 +- .../petstore/ruby/lib/petstore/models/name.rb | 2 +- .../lib/petstore/models/nullable_class.rb | 2 +- .../ruby/lib/petstore/models/number_only.rb | 2 +- .../ruby/lib/petstore/models/order.rb | 2 +- .../lib/petstore/models/outer_composite.rb | 2 +- .../ruby/lib/petstore/models/outer_enum.rb | 2 +- .../models/outer_enum_default_value.rb | 2 +- .../lib/petstore/models/outer_enum_integer.rb | 2 +- .../outer_enum_integer_default_value.rb | 2 +- .../models/outer_object_with_enum_property.rb | 2 +- .../petstore/ruby/lib/petstore/models/pet.rb | 2 +- .../lib/petstore/models/read_only_first.rb | 2 +- .../lib/petstore/models/special_model_name.rb | 2 +- .../petstore/ruby/lib/petstore/models/tag.rb | 2 +- .../petstore/ruby/lib/petstore/models/user.rb | 2 +- .../petstore/ruby/lib/petstore/version.rb | 2 +- samples/client/petstore/ruby/petstore.gemspec | 2 +- .../petstore/ruby/spec/api_client_spec.rb | 2 +- .../petstore/ruby/spec/configuration_spec.rb | 2 +- .../client/petstore/ruby/spec/spec_helper.rb | 2 +- .../hyper/petstore/.openapi-generator/VERSION | 2 +- .../petstore-async/.openapi-generator/VERSION | 2 +- .../petstore/.openapi-generator/VERSION | 2 +- .../scala-akka/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../scala-sttp/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../spring-cloud/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../spring-stubs/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../combineLibrary/.openapi-generator/VERSION | 2 +- .../swift5/default/.openapi-generator/VERSION | 2 +- .../deprecated/.openapi-generator/VERSION | 2 +- .../nonPublicApi/.openapi-generator/VERSION | 2 +- .../objcCompatible/.openapi-generator/VERSION | 2 +- .../swift5/oneOf/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../resultLibrary/.openapi-generator/VERSION | 2 +- .../rxswiftLibrary/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../vaporLibrary/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../with-npm/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../with-npm/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../with-npm/.openapi-generator/VERSION | 2 +- .../default/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../es6-target/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../default-v3.0/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/enum/.openapi-generator/VERSION | 2 +- .../es6-target/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../default/.openapi-generator/VERSION | 2 +- .../npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../default/.openapi-generator/VERSION | 2 +- .../npm/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../es6-target/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- samples/meta-codegen/lib/pom.xml | 2 +- .../usage/.openapi-generator/VERSION | 2 +- .../client/elm/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../jersey2-java8/.openapi-generator/VERSION | 2 +- .../python/.openapi-generator/VERSION | 2 +- .../ruby-client/.openapi-generator/VERSION | 2 +- .../ruby-client/lib/x_auth_id_alias.rb | 2 +- .../lib/x_auth_id_alias/api/usage_api.rb | 2 +- .../lib/x_auth_id_alias/api_client.rb | 2 +- .../lib/x_auth_id_alias/api_error.rb | 2 +- .../lib/x_auth_id_alias/configuration.rb | 2 +- .../lib/x_auth_id_alias/version.rb | 2 +- .../ruby-client/spec/api_client_spec.rb | 2 +- .../ruby-client/spec/configuration_spec.rb | 2 +- .../ruby-client/spec/spec_helper.rb | 2 +- .../ruby-client/x_auth_id_alias.gemspec | 2 +- .../python/.openapi-generator/VERSION | 2 +- .../ruby/.openapi-generator/VERSION | 2 +- .../ruby/dynamic_servers.gemspec | 2 +- .../ruby/lib/dynamic_servers.rb | 2 +- .../ruby/lib/dynamic_servers/api/usage_api.rb | 2 +- .../ruby/lib/dynamic_servers/api_client.rb | 2 +- .../ruby/lib/dynamic_servers/api_error.rb | 2 +- .../ruby/lib/dynamic_servers/configuration.rb | 2 +- .../ruby/lib/dynamic_servers/version.rb | 2 +- .../ruby/spec/api_client_spec.rb | 2 +- .../ruby/spec/configuration_spec.rb | 2 +- .../dynamic-servers/ruby/spec/spec_helper.rb | 2 +- .../ruby-client/.openapi-generator/VERSION | 2 +- .../ruby-client/lib/petstore.rb | 2 +- .../ruby-client/lib/petstore/api/usage_api.rb | 2 +- .../ruby-client/lib/petstore/api_client.rb | 2 +- .../ruby-client/lib/petstore/api_error.rb | 2 +- .../ruby-client/lib/petstore/configuration.rb | 2 +- .../lib/petstore/models/array_alias.rb | 2 +- .../lib/petstore/models/map_alias.rb | 2 +- .../ruby-client/lib/petstore/version.rb | 2 +- .../ruby-client/petstore.gemspec | 2 +- .../ruby-client/spec/api_client_spec.rb | 2 +- .../ruby-client/spec/configuration_spec.rb | 2 +- .../ruby-client/spec/spec_helper.rb | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../go/go-petstore/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../jersey2-java8/.openapi-generator/VERSION | 2 +- .../java/native/.openapi-generator/VERSION | 2 +- .../python-legacy/.openapi-generator/VERSION | 2 +- .../python/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/deno/.openapi-generator/VERSION | 2 +- .../inversify/.openapi-generator/VERSION | 2 +- .../builds/jquery/.openapi-generator/VERSION | 2 +- .../object_params/.openapi-generator/VERSION | 2 +- .../petstore/ktorm/.openapi-generator/VERSION | 2 +- .../petstore/mysql/.openapi-generator/VERSION | 2 +- .../wsdl-schema/.openapi-generator/VERSION | 2 +- .../aspnetcore-3.0/.openapi-generator/VERSION | 2 +- .../aspnetcore-3.1/.openapi-generator/VERSION | 2 +- .../aspnetcore-5.0/.openapi-generator/VERSION | 2 +- .../aspnetcore/.openapi-generator/VERSION | 2 +- .../cpp-pistache/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../erlang-server/.openapi-generator/VERSION | 2 +- .../go-api-server/.openapi-generator/VERSION | 2 +- .../go-chi-server/.openapi-generator/VERSION | 2 +- .../go-echo-server/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java-msf4j/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java-undertow/.openapi-generator/VERSION | 2 +- .../java-vertx-web/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../jaxrs-cxf-cdi/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../jaxrs-cxf/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../jaxrs-jersey/.openapi-generator/VERSION | 2 +- .../default-value/.openapi-generator/VERSION | 2 +- .../default/.openapi-generator/VERSION | 2 +- .../eap-java8/.openapi-generator/VERSION | 2 +- .../eap-joda/.openapi-generator/VERSION | 2 +- .../eap/.openapi-generator/VERSION | 2 +- .../joda/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../jaxrs-spec/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../jaxrs/jersey1/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../jaxrs/jersey2/.openapi-generator/VERSION | 2 +- .../ktor/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-server/ktor/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin/org/openapitools/api/PetApi.kt | 2 +- .../kotlin/org/openapitools/api/StoreApi.kt | 2 +- .../kotlin/org/openapitools/api/UserApi.kt | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../php-laravel/.openapi-generator/VERSION | 2 +- .../php-lumen/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../php-mezzio-ph/.openapi-generator/VERSION | 2 +- .../php-slim4/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../python-aiohttp/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../python-fastapi/.openapi-generator/VERSION | 2 +- .../python-flask/.openapi-generator/VERSION | 2 +- .../multipart-v3/.openapi-generator/VERSION | 2 +- .../no-example-v3/.openapi-generator/VERSION | 2 +- .../openapi-v3/.openapi-generator/VERSION | 2 +- .../output/ops-v3/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/TestHeadersApi.java | 2 +- .../openapitools/api/TestQueryParamsApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../spring-mvc/.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../virtualan/api/AnotherFakeApi.java | 2 +- .../openapitools/virtualan/api/FakeApi.java | 2 +- .../virtualan/api/FakeClassnameTestApi.java | 2 +- .../openapitools/virtualan/api/PetApi.java | 2 +- .../openapitools/virtualan/api/StoreApi.java | 2 +- .../openapitools/virtualan/api/UserApi.java | 2 +- .../springboot/.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- 669 files changed, 685 insertions(+), 676 deletions(-) diff --git a/README.md b/README.md index 6c3fdbc37f9..76fdb0d8d86 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@

    -[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`5.2.0`): +[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`5.2.1`): [![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/master.svg?label=Integration%20Test)](https://travis-ci.com/OpenAPITools/openapi-generator) [![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator) [![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=master&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator) @@ -17,6 +17,14 @@ [![Bitrise](https://img.shields.io/bitrise/4a2b10a819d12b67/master?label=bitrise%3A%20Swift+4,5&token=859FMDR8QHwabCzwvZK6vQ)](https://app.bitrise.io/app/4a2b10a819d12b67) [![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/openapitools/openapi-generator/Check%20Supported%20Java%20Versions/master?label=Check%20Supported%20Java%20Versions&logo=github&logoColor=green)](https://github.com/OpenAPITools/openapi-generator/actions?query=workflow%3A%22Check+Supported+Java+Versions%22) + +[5.3.x](https://github.com/OpenAPITools/openapi-generator/tree/5.3.x) (`5.3.x`): +[![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/5.3.x.svg?label=Integration%20Test)](https://travis-ci.com/OpenAPITools/openapi-generator) +[![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator/tree/5.3.x.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator) +[![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=5.3.x&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator) +[![JDK11 Build](https://cloud.drone.io/api/badges/OpenAPITools/openapi-generator/status.svg?ref=refs/heads/5.3.x)](https://cloud.drone.io/OpenAPITools/openapi-generator) +[![Bitrise](https://img.shields.io/bitrise/4a2b10a819d12b67/5.3.x?label=bitrise%3A%20Swift+4,5&token=859FMDR8QHwabCzwvZK6vQ)](https://app.bitrise.io/app/4a2b10a819d12b67) + [6.0.x](https://github.com/OpenAPITools/openapi-generator/tree/6.0.x) (`6.0.x`): [![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/6.0.x.svg?label=Integration%20Test)](https://travis-ci.com/OpenAPITools/openapi-generator) [![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator/tree/6.0.x.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator) @@ -110,8 +118,9 @@ The OpenAPI Specification has undergone 3 revisions since initial creation in 20 | OpenAPI Generator Version | Release Date | Notes | | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------- | | 6.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/6.0.0-SNAPSHOT/) | Nov/Dec 2021 | Minor release with breaking changes (no fallback) | -| 5.2.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.2.0-SNAPSHOT/) | Jun/Jul 2021 | Minor release with breaking changes (with fallback) | -| [5.1.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v5.1.1) (latest stable release) | 07.05.2021 | Patch release (enhancements, bug fixes, etc) | +| 5.3.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.3.0-SNAPSHOT/) | Aug/Sep 2021 | Minor release with breaking changes (with fallback) | +| 5.2.1 (upcoming patch release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.2.1-SNAPSHOT/) | 09.08.2021 | Patch release (enhancements, bug fixes, etc) | +| [5.2.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v5.2.0) (latest stable release) | 09.07.2021 | Minor release with breaking changes (with fallback) | | [4.3.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v4.3.1) | 06.05.2020 | Patch release (enhancements, bug fixes, etc) | OpenAPI Spec compatibility: 1.0, 1.1, 1.2, 2.0, 3.0 @@ -168,16 +177,16 @@ See the different versions of the [openapi-generator-cli](https://mvnrepository. If you're looking for the latest stable version, you can grab it directly from Maven.org (Java 8 runtime at a minimum): -JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.1.1/openapi-generator-cli-5.1.1.jar` +JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.2.0/openapi-generator-cli-5.2.0.jar` For **Mac/Linux** users: ```sh -wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.1.1/openapi-generator-cli-5.1.1.jar -O openapi-generator-cli.jar +wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.2.0/openapi-generator-cli-5.2.0.jar -O openapi-generator-cli.jar ``` For **Windows** users, you will need to install [wget](http://gnuwin32.sourceforge.net/packages/wget.htm) or you can use Invoke-WebRequest in PowerShell (3.0+), e.g. ``` -Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.1.1/openapi-generator-cli-5.1.1.jar +Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.2.0/openapi-generator-cli-5.2.0.jar ``` After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage. @@ -402,7 +411,7 @@ openapi-generator-cli version To use a specific version of "openapi-generator-cli" ```sh -openapi-generator-cli version-manager set 5.1.1 +openapi-generator-cli version-manager set 5.2.0 ``` Or install it as dev-dependency: @@ -426,7 +435,7 @@ java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generat (if you're on Windows, replace the last command with `java -jar modules\openapi-generator-cli\target\openapi-generator-cli.jar generate -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g php -o c:\temp\php_api_client`) -You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.1.1/openapi-generator-cli-5.1.1.jar) +You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.2.0/openapi-generator-cli-5.2.0.jar) To get a list of **general** options available, please run `java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar help generate` diff --git a/modules/openapi-generator-cli/pom.xml b/modules/openapi-generator-cli/pom.xml index a833a0da3ed..ecf3c56c4e4 100644 --- a/modules/openapi-generator-cli/pom.xml +++ b/modules/openapi-generator-cli/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 5.2.0 + 5.2.1-SNAPSHOT ../.. diff --git a/modules/openapi-generator-core/pom.xml b/modules/openapi-generator-core/pom.xml index b8430f783b2..81f86e9cb34 100644 --- a/modules/openapi-generator-core/pom.xml +++ b/modules/openapi-generator-core/pom.xml @@ -6,7 +6,7 @@ openapi-generator-project org.openapitools - 5.2.0 + 5.2.1-SNAPSHOT ../.. diff --git a/modules/openapi-generator-gradle-plugin/gradle.properties b/modules/openapi-generator-gradle-plugin/gradle.properties index 4b137a5be36..2a71ae5459a 100644 --- a/modules/openapi-generator-gradle-plugin/gradle.properties +++ b/modules/openapi-generator-gradle-plugin/gradle.properties @@ -1,5 +1,5 @@ # RELEASE_VERSION -openApiGeneratorVersion=5.2.0 +openApiGeneratorVersion=5.2.1-SNAPSHOT # /RELEASE_VERSION # BEGIN placeholders diff --git a/modules/openapi-generator-gradle-plugin/pom.xml b/modules/openapi-generator-gradle-plugin/pom.xml index 206c1a54e6f..11cb549c195 100644 --- a/modules/openapi-generator-gradle-plugin/pom.xml +++ b/modules/openapi-generator-gradle-plugin/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 5.2.0 + 5.2.1-SNAPSHOT ../.. diff --git a/modules/openapi-generator-maven-plugin/examples/java-client.xml b/modules/openapi-generator-maven-plugin/examples/java-client.xml index 10a59a3d54c..368c2a89531 100644 --- a/modules/openapi-generator-maven-plugin/examples/java-client.xml +++ b/modules/openapi-generator-maven-plugin/examples/java-client.xml @@ -13,7 +13,7 @@ org.openapitools openapi-generator-maven-plugin - 5.2.0 + 5.2.1-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml b/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml index bcdcb07ff78..2e0ad09aeee 100644 --- a/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml +++ b/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml @@ -19,7 +19,7 @@ org.openapitools openapi-generator-maven-plugin - 5.2.0 + 5.2.1-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml b/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml index ed71d760dbb..a478bbb8527 100644 --- a/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml +++ b/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml @@ -13,7 +13,7 @@ org.openapitools openapi-generator-maven-plugin - 5.2.0 + 5.2.1-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/non-java.xml b/modules/openapi-generator-maven-plugin/examples/non-java.xml index 96aada54360..56620b71e13 100644 --- a/modules/openapi-generator-maven-plugin/examples/non-java.xml +++ b/modules/openapi-generator-maven-plugin/examples/non-java.xml @@ -13,7 +13,7 @@ org.openapitools openapi-generator-maven-plugin - 5.2.0 + 5.2.1-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/pom.xml b/modules/openapi-generator-maven-plugin/pom.xml index 9e70e1d36ca..9252181f3f8 100644 --- a/modules/openapi-generator-maven-plugin/pom.xml +++ b/modules/openapi-generator-maven-plugin/pom.xml @@ -5,7 +5,7 @@ org.openapitools openapi-generator-project - 5.2.0 + 5.2.1-SNAPSHOT ../.. diff --git a/modules/openapi-generator-online/pom.xml b/modules/openapi-generator-online/pom.xml index 70edc16885c..be324c44a9c 100644 --- a/modules/openapi-generator-online/pom.xml +++ b/modules/openapi-generator-online/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 5.2.0 + 5.2.1-SNAPSHOT ../.. diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index 9d28e972cca..1189eb81d53 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 5.2.0 + 5.2.1-SNAPSHOT ../.. diff --git a/pom.xml b/pom.xml index cf438be1ce5..63dbee00700 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ pom openapi-generator-project - 5.2.0 + 5.2.1-SNAPSHOT https://github.com/openapitools/openapi-generator diff --git a/samples/client/petstore/R/.openapi-generator/VERSION b/samples/client/petstore/R/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/R/.openapi-generator/VERSION +++ b/samples/client/petstore/R/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/apex/.openapi-generator/VERSION b/samples/client/petstore/apex/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/apex/.openapi-generator/VERSION +++ b/samples/client/petstore/apex/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/bash/.openapi-generator/VERSION b/samples/client/petstore/bash/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/bash/.openapi-generator/VERSION +++ b/samples/client/petstore/bash/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/c/.openapi-generator/VERSION b/samples/client/petstore/c/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/c/.openapi-generator/VERSION +++ b/samples/client/petstore/c/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/cpp-qt/.openapi-generator/VERSION b/samples/client/petstore/cpp-qt/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/cpp-qt/.openapi-generator/VERSION +++ b/samples/client/petstore/cpp-qt/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/cpp-restsdk/client/.openapi-generator/VERSION b/samples/client/petstore/cpp-restsdk/client/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/cpp-restsdk/client/.openapi-generator/VERSION +++ b/samples/client/petstore/cpp-restsdk/client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/cpp-restsdk/client/ApiClient.cpp b/samples/client/petstore/cpp-restsdk/client/ApiClient.cpp index 42fd2171fdd..9021b81920e 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiClient.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ApiClient.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiClient.h b/samples/client/petstore/cpp-restsdk/client/ApiClient.h index 6ccb62dd282..75526d1acbb 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiClient.h +++ b/samples/client/petstore/cpp-restsdk/client/ApiClient.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp b/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp index b5fca50c513..c17246718ff 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h b/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h index 34e4273b2c2..6306a60b64d 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h +++ b/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiException.cpp b/samples/client/petstore/cpp-restsdk/client/ApiException.cpp index 16cbc233e82..7eceea77a76 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiException.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ApiException.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiException.h b/samples/client/petstore/cpp-restsdk/client/ApiException.h index c0aeb02c29e..520d7fecab5 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiException.h +++ b/samples/client/petstore/cpp-restsdk/client/ApiException.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/HttpContent.cpp b/samples/client/petstore/cpp-restsdk/client/HttpContent.cpp index 89b07b06a08..92e305aa0f6 100644 --- a/samples/client/petstore/cpp-restsdk/client/HttpContent.cpp +++ b/samples/client/petstore/cpp-restsdk/client/HttpContent.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/HttpContent.h b/samples/client/petstore/cpp-restsdk/client/HttpContent.h index 7f93409f1e4..eff1d674374 100644 --- a/samples/client/petstore/cpp-restsdk/client/HttpContent.h +++ b/samples/client/petstore/cpp-restsdk/client/HttpContent.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/IHttpBody.h b/samples/client/petstore/cpp-restsdk/client/IHttpBody.h index c3818e68eb7..3e865324ea4 100644 --- a/samples/client/petstore/cpp-restsdk/client/IHttpBody.h +++ b/samples/client/petstore/cpp-restsdk/client/IHttpBody.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/JsonBody.cpp b/samples/client/petstore/cpp-restsdk/client/JsonBody.cpp index 5aca1dc82b5..4d0f3469bee 100644 --- a/samples/client/petstore/cpp-restsdk/client/JsonBody.cpp +++ b/samples/client/petstore/cpp-restsdk/client/JsonBody.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/JsonBody.h b/samples/client/petstore/cpp-restsdk/client/JsonBody.h index ab46206ef17..c1d9932961c 100644 --- a/samples/client/petstore/cpp-restsdk/client/JsonBody.h +++ b/samples/client/petstore/cpp-restsdk/client/JsonBody.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp b/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp index 0f83aac35c8..0d95022705f 100644 --- a/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ModelBase.h b/samples/client/petstore/cpp-restsdk/client/ModelBase.h index f4a730542a9..ca86ae1bdfb 100644 --- a/samples/client/petstore/cpp-restsdk/client/ModelBase.h +++ b/samples/client/petstore/cpp-restsdk/client/ModelBase.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/MultipartFormData.cpp b/samples/client/petstore/cpp-restsdk/client/MultipartFormData.cpp index 76f71492bf5..a60c5669a5e 100644 --- a/samples/client/petstore/cpp-restsdk/client/MultipartFormData.cpp +++ b/samples/client/petstore/cpp-restsdk/client/MultipartFormData.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/MultipartFormData.h b/samples/client/petstore/cpp-restsdk/client/MultipartFormData.h index eaf99a266da..6030824c841 100644 --- a/samples/client/petstore/cpp-restsdk/client/MultipartFormData.h +++ b/samples/client/petstore/cpp-restsdk/client/MultipartFormData.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/Object.cpp b/samples/client/petstore/cpp-restsdk/client/Object.cpp index 5d053224d04..16170c562c7 100644 --- a/samples/client/petstore/cpp-restsdk/client/Object.cpp +++ b/samples/client/petstore/cpp-restsdk/client/Object.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/Object.h b/samples/client/petstore/cpp-restsdk/client/Object.h index 090bc43131b..e851cfcf57c 100644 --- a/samples/client/petstore/cpp-restsdk/client/Object.h +++ b/samples/client/petstore/cpp-restsdk/client/Object.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp b/samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp index 255014a716d..07719ecfbbb 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp +++ b/samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/PetApi.h b/samples/client/petstore/cpp-restsdk/client/api/PetApi.h index bb5dc6cd428..503846b1282 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/PetApi.h +++ b/samples/client/petstore/cpp-restsdk/client/api/PetApi.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp index 3acfba1d938..5c4dca2fe1a 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp +++ b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h index 10221459d9e..9c41e9ce380 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h +++ b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp b/samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp index 48563258905..b8705d68c8e 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp +++ b/samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/UserApi.h b/samples/client/petstore/cpp-restsdk/client/api/UserApi.h index ce435b18b0a..37835849203 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/UserApi.h +++ b/samples/client/petstore/cpp-restsdk/client/api/UserApi.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.cpp b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.cpp index e8e9865c924..56c5bb9e6e8 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h index 2a58b1fc652..94f852a1400 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h +++ b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Category.cpp b/samples/client/petstore/cpp-restsdk/client/model/Category.cpp index f74e5ed9465..b76ddf693d7 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Category.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/Category.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Category.h b/samples/client/petstore/cpp-restsdk/client/model/Category.h index 7d01bd1d2e0..9e9373f6eb8 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Category.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Category.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Order.cpp b/samples/client/petstore/cpp-restsdk/client/model/Order.cpp index 10dd6aecf3d..a9ce0599a4d 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Order.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/Order.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Order.h b/samples/client/petstore/cpp-restsdk/client/model/Order.h index df8cb81b93d..57e435365ed 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Order.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Order.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Pet.cpp b/samples/client/petstore/cpp-restsdk/client/model/Pet.cpp index ebfc215f532..bdc51156762 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Pet.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/Pet.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Pet.h b/samples/client/petstore/cpp-restsdk/client/model/Pet.h index a6757958c6d..b00832225ad 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Pet.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Pet.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Tag.cpp b/samples/client/petstore/cpp-restsdk/client/model/Tag.cpp index 02a180cb726..c44e9ed8f47 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Tag.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/Tag.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Tag.h b/samples/client/petstore/cpp-restsdk/client/model/Tag.h index 12981a2d442..98cb24fee2a 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Tag.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Tag.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/User.cpp b/samples/client/petstore/cpp-restsdk/client/model/User.cpp index 5de5821f950..371d4a91f97 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/User.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/User.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/User.h b/samples/client/petstore/cpp-restsdk/client/model/User.h index 2b4854b24a6..3018bc892db 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/User.h +++ b/samples/client/petstore/cpp-restsdk/client/model/User.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.0. + * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION b/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION +++ b/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/crystal/.openapi-generator/VERSION b/samples/client/petstore/crystal/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/crystal/.openapi-generator/VERSION +++ b/samples/client/petstore/crystal/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/crystal/.travis.yml b/samples/client/petstore/crystal/.travis.yml index 08e2b970b7f..44fbaf197b1 100644 --- a/samples/client/petstore/crystal/.travis.yml +++ b/samples/client/petstore/crystal/.travis.yml @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # language: crystal diff --git a/samples/client/petstore/crystal/spec/spec_helper.cr b/samples/client/petstore/crystal/spec/spec_helper.cr index 8b90d641e3c..2941dec1e2e 100644 --- a/samples/client/petstore/crystal/spec/spec_helper.cr +++ b/samples/client/petstore/crystal/spec/spec_helper.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # # load modules diff --git a/samples/client/petstore/crystal/src/petstore.cr b/samples/client/petstore/crystal/src/petstore.cr index 11e62576d05..23380adf3a9 100644 --- a/samples/client/petstore/crystal/src/petstore.cr +++ b/samples/client/petstore/crystal/src/petstore.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # # Dependencies diff --git a/samples/client/petstore/crystal/src/petstore/api/pet_api.cr b/samples/client/petstore/crystal/src/petstore/api/pet_api.cr index 462cdba46b8..444cb083b6b 100644 --- a/samples/client/petstore/crystal/src/petstore/api/pet_api.cr +++ b/samples/client/petstore/crystal/src/petstore/api/pet_api.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # require "uri" diff --git a/samples/client/petstore/crystal/src/petstore/api/store_api.cr b/samples/client/petstore/crystal/src/petstore/api/store_api.cr index d367ab94f2d..cd1aa5aaa02 100644 --- a/samples/client/petstore/crystal/src/petstore/api/store_api.cr +++ b/samples/client/petstore/crystal/src/petstore/api/store_api.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # require "uri" diff --git a/samples/client/petstore/crystal/src/petstore/api/user_api.cr b/samples/client/petstore/crystal/src/petstore/api/user_api.cr index 6e2a572c3ce..92be60047d7 100644 --- a/samples/client/petstore/crystal/src/petstore/api/user_api.cr +++ b/samples/client/petstore/crystal/src/petstore/api/user_api.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # require "uri" diff --git a/samples/client/petstore/crystal/src/petstore/api_client.cr b/samples/client/petstore/crystal/src/petstore/api_client.cr index 67623589b12..3862b59ffbf 100644 --- a/samples/client/petstore/crystal/src/petstore/api_client.cr +++ b/samples/client/petstore/crystal/src/petstore/api_client.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/api_error.cr b/samples/client/petstore/crystal/src/petstore/api_error.cr index 0c72b99de9a..0b67e79cfbb 100644 --- a/samples/client/petstore/crystal/src/petstore/api_error.cr +++ b/samples/client/petstore/crystal/src/petstore/api_error.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # module Petstore diff --git a/samples/client/petstore/crystal/src/petstore/configuration.cr b/samples/client/petstore/crystal/src/petstore/configuration.cr index 32d8b23d48b..ef47e397dfa 100644 --- a/samples/client/petstore/crystal/src/petstore/configuration.cr +++ b/samples/client/petstore/crystal/src/petstore/configuration.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # require "log" diff --git a/samples/client/petstore/crystal/src/petstore/models/api_response.cr b/samples/client/petstore/crystal/src/petstore/models/api_response.cr index bb174fb570b..020f88a8890 100644 --- a/samples/client/petstore/crystal/src/petstore/models/api_response.cr +++ b/samples/client/petstore/crystal/src/petstore/models/api_response.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/category.cr b/samples/client/petstore/crystal/src/petstore/models/category.cr index f1f8f24acb6..26df74df71b 100644 --- a/samples/client/petstore/crystal/src/petstore/models/category.cr +++ b/samples/client/petstore/crystal/src/petstore/models/category.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/order.cr b/samples/client/petstore/crystal/src/petstore/models/order.cr index f4cbe4b66b7..edd6396c322 100644 --- a/samples/client/petstore/crystal/src/petstore/models/order.cr +++ b/samples/client/petstore/crystal/src/petstore/models/order.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/pet.cr b/samples/client/petstore/crystal/src/petstore/models/pet.cr index cc7eb71b6fe..f1d96ee1a98 100644 --- a/samples/client/petstore/crystal/src/petstore/models/pet.cr +++ b/samples/client/petstore/crystal/src/petstore/models/pet.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/tag.cr b/samples/client/petstore/crystal/src/petstore/models/tag.cr index 256c50bbfa2..5925f74557c 100644 --- a/samples/client/petstore/crystal/src/petstore/models/tag.cr +++ b/samples/client/petstore/crystal/src/petstore/models/tag.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/user.cr b/samples/client/petstore/crystal/src/petstore/models/user.cr index 1575e1cddab..717a3b1255f 100644 --- a/samples/client/petstore/crystal/src/petstore/models/user.cr +++ b/samples/client/petstore/crystal/src/petstore/models/user.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.0 +#OpenAPI Generator version: 5.2.1-SNAPSHOT # require "json" diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION b/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/elixir/.openapi-generator/VERSION b/samples/client/petstore/elixir/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/elixir/.openapi-generator/VERSION +++ b/samples/client/petstore/elixir/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION b/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION +++ b/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/groovy/.openapi-generator/VERSION b/samples/client/petstore/groovy/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/groovy/.openapi-generator/VERSION +++ b/samples/client/petstore/groovy/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION b/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION +++ b/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/feign-no-nullable/.openapi-generator/VERSION b/samples/client/petstore/java/feign-no-nullable/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/feign-no-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/java/feign-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/feign/.openapi-generator/VERSION b/samples/client/petstore/java/feign/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/feign/.openapi-generator/VERSION +++ b/samples/client/petstore/java/feign/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION b/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION +++ b/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey1/.openapi-generator/VERSION b/samples/client/petstore/java/jersey1/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/jersey1/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey1/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/.openapi-generator/VERSION b/samples/client/petstore/java/jersey2-java8-localdatetime/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION b/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION b/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION +++ b/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/native-async/.openapi-generator/VERSION b/samples/client/petstore/java/native-async/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/native-async/.openapi-generator/VERSION +++ b/samples/client/petstore/java/native-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/native/.openapi-generator/VERSION b/samples/client/petstore/java/native/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/native/.openapi-generator/VERSION +++ b/samples/client/petstore/java/native/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/.openapi-generator/VERSION b/samples/client/petstore/java/okhttp-gson-dynamicOperations/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/.openapi-generator/VERSION +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION b/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION b/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION +++ b/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/rest-assured-jackson/.openapi-generator/VERSION b/samples/client/petstore/java/rest-assured-jackson/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/rest-assured-jackson/.openapi-generator/VERSION +++ b/samples/client/petstore/java/rest-assured-jackson/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION b/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION +++ b/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/resteasy/.openapi-generator/VERSION b/samples/client/petstore/java/resteasy/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/resteasy/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resteasy/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION b/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION b/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2rx3/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2rx3/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/retrofit2rx3/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2rx3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/vertx-no-nullable/.openapi-generator/VERSION b/samples/client/petstore/java/vertx-no-nullable/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/vertx-no-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/java/vertx-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/vertx/.openapi-generator/VERSION b/samples/client/petstore/java/vertx/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/vertx/.openapi-generator/VERSION +++ b/samples/client/petstore/java/vertx/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/webclient/.openapi-generator/VERSION b/samples/client/petstore/java/webclient/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/java/webclient/.openapi-generator/VERSION +++ b/samples/client/petstore/java/webclient/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/javascript-es6/.openapi-generator/VERSION b/samples/client/petstore/javascript-es6/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/javascript-es6/.openapi-generator/VERSION +++ b/samples/client/petstore/javascript-es6/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION b/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION +++ b/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION b/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION b/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION b/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION b/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION b/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION b/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION b/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/.openapi-generator/VERSION b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION b/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION b/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-string/.openapi-generator/VERSION b/samples/client/petstore/kotlin-string/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-string/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-string/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION b/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin/.openapi-generator/VERSION b/samples/client/petstore/kotlin/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/kotlin/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/lua/.openapi-generator/VERSION b/samples/client/petstore/lua/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/lua/.openapi-generator/VERSION +++ b/samples/client/petstore/lua/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/nim/.openapi-generator/VERSION b/samples/client/petstore/nim/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/nim/.openapi-generator/VERSION +++ b/samples/client/petstore/nim/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/objc/core-data/.openapi-generator/VERSION b/samples/client/petstore/objc/core-data/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/objc/core-data/.openapi-generator/VERSION +++ b/samples/client/petstore/objc/core-data/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/objc/default/.openapi-generator/VERSION b/samples/client/petstore/objc/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/objc/default/.openapi-generator/VERSION +++ b/samples/client/petstore/objc/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/perl/.openapi-generator/VERSION b/samples/client/petstore/perl/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/perl/.openapi-generator/VERSION +++ b/samples/client/petstore/perl/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION +++ b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php index f700badcb59..18f6dc801ce 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php index c57b8f8b941..675a7fafee8 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php index 2d7f8323dfa..52cbb0ae79e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php index c5393fc42a0..7312f1e1b0d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php index aa279326207..59e3bf28fcb 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php index 60a7d3e25ca..982cadd4c8f 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php index 28cb799d9bc..9189423bf57 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php index 6f3753caf0a..46f957e474b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php index aadd14b3819..976d61a6ad4 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php index df1d97a03f1..26f7eb622fd 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php index 99d8366e81a..6dd3a61637f 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php index f4454c5b8f5..f5f9533cc0b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php index f26fec6674c..c72c5ed3519 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php index feaf74cdfa1..9d560cfb80a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php index d5ac28abfb9..f445a5aa7cc 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php index 8b23950797f..bb75e996f8a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php index 4606422a4b2..cac15a056ab 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php index 8f5e9e46e0d..c75f8def53e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php index 5fa072d4404..00248db7aca 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php index a3ca5fd4e73..b2d606b17a6 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php index c6b524cb379..2f5f8aa50a4 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php index 2f0c8027419..cf13437b7bf 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php index ba7519fcdbc..fd761dff5da 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php index be4a0b19764..bd0b1bdf50d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php index a1d0f2a944d..4ea8dbd5e8a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php index 2702a714300..3c1dd121bf9 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php index 708d94bde04..d9afb7d7910 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php index 43db69f64b4..44bcedc6fd0 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php index d83dc52011d..c673343b577 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php index b51e4309847..ecd23b4453e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php index b44de7ba34a..a529c2bbb7e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php index dbe0ac1c0f0..4ecd0e9fa5e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php index 49233da0737..59994c7a4a4 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php index 3bcf3700edd..a9ee8ef4aeb 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php index 466c2db48fc..15e499a810d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php index 16b557f89da..338cbb970ba 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php index ba933753408..ffe5cd510ef 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php index e115ade5107..100ad55db79 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php index e4e0ace67e9..0a1638a3e66 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php index b664243eadf..e34629c80f6 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php index c11436d8c0c..a4dcd0bc6bc 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php index b13d8f5f52d..f5081f1efdd 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php index be633bf54c2..ae31e4c734d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php index 2957c047d2e..0873a47c9d4 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php index 7c7227d0602..d393491bb84 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php index 103f02c0af1..553e958abde 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php index 3bd1a16255b..3832c316a4c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php index 6866c18ee6d..1239a82e12e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php index 93f3d303404..32960269c03 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php index 1d04750f39f..2609a874dac 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php index 526a7258fb5..f7c49d9d88d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php index 9209b08fa73..3cf0d460988 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php index d403fc84702..ed92ba90ee1 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php index 4b1516dda70..224c173a463 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php index 2c70b79e7ef..13613409171 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php index 9e6f0bb4c29..22d9ccbb26b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.0 + * OpenAPI Generator version: 5.2.1-SNAPSHOT */ /** diff --git a/samples/client/petstore/powershell/.openapi-generator/VERSION b/samples/client/petstore/powershell/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/powershell/.openapi-generator/VERSION +++ b/samples/client/petstore/powershell/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python-asyncio/.openapi-generator/VERSION b/samples/client/petstore/python-asyncio/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/python-asyncio/.openapi-generator/VERSION +++ b/samples/client/petstore/python-asyncio/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python-legacy/.openapi-generator/VERSION b/samples/client/petstore/python-legacy/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/python-legacy/.openapi-generator/VERSION +++ b/samples/client/petstore/python-legacy/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python-tornado/.openapi-generator/VERSION b/samples/client/petstore/python-tornado/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/python-tornado/.openapi-generator/VERSION +++ b/samples/client/petstore/python-tornado/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python/.openapi-generator/VERSION b/samples/client/petstore/python/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/python/.openapi-generator/VERSION +++ b/samples/client/petstore/python/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/.openapi-generator/VERSION b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/.openapi-generator/VERSION +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION b/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION +++ b/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/ruby-faraday/lib/petstore.rb b/samples/client/petstore/ruby-faraday/lib/petstore.rb index e72c52650a3..afa1babdce0 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb index 050807e006e..92b76e8e9a5 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb index e03137201c4..571880804d4 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb index 5cd5d56d0ec..ecf8994c8ea 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb index d1e128c7ffa..92ecb5bfe94 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb index fb1285ffceb..1fcac74ff88 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb index 00e7f72587d..daef7c8ff1a 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb index f4071566543..a8aebf97c02 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb index 27171d0d7c4..2f2b35b827a 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb index 07510f6ce83..bcc7898d50c 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb b/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb index 66e2d1fcbda..e193e1e4b10 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb index 0f2e615271a..254ced42e0f 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/animal.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/animal.rb index c418f42ca38..ca97eb8167b 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/animal.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/animal.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb index bb21206dc5c..5157e8e709a 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb index b49c37aeb0e..4e6ad34fd37 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb index 0a7501408d8..601bedc078b 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb index 86cd97d6ed6..6b264080bde 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb index b49e27315a2..534d927d145 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb index bd621c16978..f6db6efe5aa 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb index 7e4813da981..c18d0b53bfa 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/category.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/category.rb index 153c0e0714b..88ec6084dd8 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/category.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/category.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb index d4b185e1cbe..39aa024760f 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/client.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/client.rb index f48e7f0269d..db7747b46bb 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/client.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb index 9e207ce853a..b1d6079c82f 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb index 662474d3b1d..1cb84f0e61c 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb index 742b859d830..0a9cb55c0aa 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb index c2fbc1ebbf4..16a9e4bf8b9 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb index 5e23cf64e2c..1acb6f30c05 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/file.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/file.rb index ae652038f67..4a7ff7aaa82 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/file.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/file.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb index e5ed19dfa7a..9730ea35afd 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb index e00376c6d69..88efb8fa1e9 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb index c086bc347c6..f38dc93aa97 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb index 3c562de5363..1182efcfb6c 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb index f9f3d1906de..2b94909e5ae 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb index 56198d95ccf..bb6a2f43f8f 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/list.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/list.rb index c8a846fc41d..f6caf7e1bf7 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/list.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/list.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb index d435fc7fc26..f62e083fbf1 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb index 8dba86d933f..0b43eb18c5f 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb index 552aad5109e..2b621b39f98 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb index 72b5e47b97e..c8329ddd21d 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/name.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/name.rb index 8324c9c615b..0e04c8051e6 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/name.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/name.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb index 9d71c77e512..ca62f36112c 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb index df5aa205089..377b0ebd06d 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/order.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/order.rb index fe9ae807d9b..eb69fcb2f65 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/order.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/order.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb index 3688d94e844..6ad098058e5 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb index 188a171fbac..8fcb778f0cd 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb index 99fbc6e0153..1e3a0d81e0d 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb index 13349e85869..41223e725c1 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb index b0074a08b24..f78be4ae36a 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_object_with_enum_property.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_object_with_enum_property.rb index a3f95985c98..5999b9b7abd 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_object_with_enum_property.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_object_with_enum_property.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb index 3f0e3eac4c2..6eeb1b9d31b 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb index ce91229d4cc..49c5c4d0fd3 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb index 93a98ff9187..6fec567d82b 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb index eda661a82bc..42413453a92 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/user.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/user.rb index a9183b572ea..381f8d7a7fc 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/user.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/user.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/version.rb b/samples/client/petstore/ruby-faraday/lib/petstore/version.rb index 9369c16a131..7944842c999 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/version.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/petstore.gemspec b/samples/client/petstore/ruby-faraday/petstore.gemspec index 043b008c04b..d849d267391 100644 --- a/samples/client/petstore/ruby-faraday/petstore.gemspec +++ b/samples/client/petstore/ruby-faraday/petstore.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/spec/api_client_spec.rb b/samples/client/petstore/ruby-faraday/spec/api_client_spec.rb index 34cfa708a2f..df65c967719 100644 --- a/samples/client/petstore/ruby-faraday/spec/api_client_spec.rb +++ b/samples/client/petstore/ruby-faraday/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/spec/configuration_spec.rb b/samples/client/petstore/ruby-faraday/spec/configuration_spec.rb index 94de3f9a4e7..d4ab07f49d1 100644 --- a/samples/client/petstore/ruby-faraday/spec/configuration_spec.rb +++ b/samples/client/petstore/ruby-faraday/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/spec/spec_helper.rb b/samples/client/petstore/ruby-faraday/spec/spec_helper.rb index 9bfe1a1a327..d3f03e96b98 100644 --- a/samples/client/petstore/ruby-faraday/spec/spec_helper.rb +++ b/samples/client/petstore/ruby-faraday/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/.openapi-generator/VERSION b/samples/client/petstore/ruby/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/ruby/.openapi-generator/VERSION +++ b/samples/client/petstore/ruby/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/ruby/lib/petstore.rb b/samples/client/petstore/ruby/lib/petstore.rb index e72c52650a3..afa1babdce0 100644 --- a/samples/client/petstore/ruby/lib/petstore.rb +++ b/samples/client/petstore/ruby/lib/petstore.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb b/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb index 050807e006e..92b76e8e9a5 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/default_api.rb b/samples/client/petstore/ruby/lib/petstore/api/default_api.rb index e03137201c4..571880804d4 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/default_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/default_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb index 5cd5d56d0ec..ecf8994c8ea 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb b/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb index d1e128c7ffa..92ecb5bfe94 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb b/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb index b8ec8c7cc78..3cf75c585c9 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/store_api.rb b/samples/client/petstore/ruby/lib/petstore/api/store_api.rb index e7286f57576..d82e8b07509 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/store_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/store_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/user_api.rb b/samples/client/petstore/ruby/lib/petstore/api/user_api.rb index 213a50da65a..d308b46ba51 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/user_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/user_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api_client.rb b/samples/client/petstore/ruby/lib/petstore/api_client.rb index 911a88901d8..a814753e2e0 100644 --- a/samples/client/petstore/ruby/lib/petstore/api_client.rb +++ b/samples/client/petstore/ruby/lib/petstore/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api_error.rb b/samples/client/petstore/ruby/lib/petstore/api_error.rb index 07510f6ce83..bcc7898d50c 100644 --- a/samples/client/petstore/ruby/lib/petstore/api_error.rb +++ b/samples/client/petstore/ruby/lib/petstore/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/configuration.rb b/samples/client/petstore/ruby/lib/petstore/configuration.rb index fb2a1c6f62f..c30c1e5ed20 100644 --- a/samples/client/petstore/ruby/lib/petstore/configuration.rb +++ b/samples/client/petstore/ruby/lib/petstore/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb index 0f2e615271a..254ced42e0f 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/animal.rb b/samples/client/petstore/ruby/lib/petstore/models/animal.rb index c418f42ca38..ca97eb8167b 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/animal.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/animal.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/api_response.rb b/samples/client/petstore/ruby/lib/petstore/models/api_response.rb index bb21206dc5c..5157e8e709a 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/api_response.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/api_response.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb b/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb index b49c37aeb0e..4e6ad34fd37 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb b/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb index 0a7501408d8..601bedc078b 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/array_test.rb b/samples/client/petstore/ruby/lib/petstore/models/array_test.rb index 86cd97d6ed6..6b264080bde 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/array_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/array_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb b/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb index b49e27315a2..534d927d145 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/cat.rb b/samples/client/petstore/ruby/lib/petstore/models/cat.rb index bd621c16978..f6db6efe5aa 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/cat.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/cat.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb b/samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb index 7e4813da981..c18d0b53bfa 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/category.rb b/samples/client/petstore/ruby/lib/petstore/models/category.rb index 153c0e0714b..88ec6084dd8 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/category.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/category.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/class_model.rb b/samples/client/petstore/ruby/lib/petstore/models/class_model.rb index d4b185e1cbe..39aa024760f 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/class_model.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/class_model.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/client.rb b/samples/client/petstore/ruby/lib/petstore/models/client.rb index f48e7f0269d..db7747b46bb 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/client.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/dog.rb b/samples/client/petstore/ruby/lib/petstore/models/dog.rb index 9e207ce853a..b1d6079c82f 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/dog.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/dog.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb b/samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb index 662474d3b1d..1cb84f0e61c 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb b/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb index 742b859d830..0a9cb55c0aa 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb b/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb index c2fbc1ebbf4..16a9e4bf8b9 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb b/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb index 5e23cf64e2c..1acb6f30c05 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/file.rb b/samples/client/petstore/ruby/lib/petstore/models/file.rb index ae652038f67..4a7ff7aaa82 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/file.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/file.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb b/samples/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb index e5ed19dfa7a..9730ea35afd 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/foo.rb b/samples/client/petstore/ruby/lib/petstore/models/foo.rb index e00376c6d69..88efb8fa1e9 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/foo.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/foo.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/format_test.rb b/samples/client/petstore/ruby/lib/petstore/models/format_test.rb index c086bc347c6..f38dc93aa97 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/format_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/format_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb b/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb index 3c562de5363..1182efcfb6c 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/health_check_result.rb b/samples/client/petstore/ruby/lib/petstore/models/health_check_result.rb index f9f3d1906de..2b94909e5ae 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/health_check_result.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/health_check_result.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/inline_response_default.rb b/samples/client/petstore/ruby/lib/petstore/models/inline_response_default.rb index 56198d95ccf..bb6a2f43f8f 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/inline_response_default.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/inline_response_default.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/list.rb b/samples/client/petstore/ruby/lib/petstore/models/list.rb index c8a846fc41d..f6caf7e1bf7 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/list.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/list.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/map_test.rb b/samples/client/petstore/ruby/lib/petstore/models/map_test.rb index d435fc7fc26..f62e083fbf1 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/map_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/map_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb b/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb index 8dba86d933f..0b43eb18c5f 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb b/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb index 552aad5109e..2b621b39f98 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/model_return.rb b/samples/client/petstore/ruby/lib/petstore/models/model_return.rb index 72b5e47b97e..c8329ddd21d 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/model_return.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/model_return.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/name.rb b/samples/client/petstore/ruby/lib/petstore/models/name.rb index 8324c9c615b..0e04c8051e6 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/name.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/name.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/nullable_class.rb b/samples/client/petstore/ruby/lib/petstore/models/nullable_class.rb index 9d71c77e512..ca62f36112c 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/nullable_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/nullable_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/number_only.rb b/samples/client/petstore/ruby/lib/petstore/models/number_only.rb index df5aa205089..377b0ebd06d 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/number_only.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/order.rb b/samples/client/petstore/ruby/lib/petstore/models/order.rb index fe9ae807d9b..eb69fcb2f65 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/order.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/order.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb index 3688d94e844..6ad098058e5 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb index 188a171fbac..8fcb778f0cd 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb index 99fbc6e0153..1e3a0d81e0d 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb index 13349e85869..41223e725c1 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb index b0074a08b24..f78be4ae36a 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_object_with_enum_property.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_object_with_enum_property.rb index a3f95985c98..5999b9b7abd 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_object_with_enum_property.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_object_with_enum_property.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/pet.rb b/samples/client/petstore/ruby/lib/petstore/models/pet.rb index 3f0e3eac4c2..6eeb1b9d31b 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/pet.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/pet.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb b/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb index ce91229d4cc..49c5c4d0fd3 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb b/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb index 93a98ff9187..6fec567d82b 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/tag.rb b/samples/client/petstore/ruby/lib/petstore/models/tag.rb index eda661a82bc..42413453a92 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/tag.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/tag.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/user.rb b/samples/client/petstore/ruby/lib/petstore/models/user.rb index a9183b572ea..381f8d7a7fc 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/user.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/user.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/version.rb b/samples/client/petstore/ruby/lib/petstore/version.rb index 9369c16a131..7944842c999 100644 --- a/samples/client/petstore/ruby/lib/petstore/version.rb +++ b/samples/client/petstore/ruby/lib/petstore/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/petstore.gemspec b/samples/client/petstore/ruby/petstore.gemspec index 670b6b3f96f..39a3335d994 100644 --- a/samples/client/petstore/ruby/petstore.gemspec +++ b/samples/client/petstore/ruby/petstore.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/api_client_spec.rb b/samples/client/petstore/ruby/spec/api_client_spec.rb index 0d2f3ad9459..c08c2c07b98 100644 --- a/samples/client/petstore/ruby/spec/api_client_spec.rb +++ b/samples/client/petstore/ruby/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/configuration_spec.rb b/samples/client/petstore/ruby/spec/configuration_spec.rb index 94de3f9a4e7..d4ab07f49d1 100644 --- a/samples/client/petstore/ruby/spec/configuration_spec.rb +++ b/samples/client/petstore/ruby/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/spec_helper.rb b/samples/client/petstore/ruby/spec/spec_helper.rb index 9bfe1a1a327..d3f03e96b98 100644 --- a/samples/client/petstore/ruby/spec/spec_helper.rb +++ b/samples/client/petstore/ruby/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/client/petstore/rust/hyper/petstore/.openapi-generator/VERSION b/samples/client/petstore/rust/hyper/petstore/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/rust/hyper/petstore/.openapi-generator/VERSION +++ b/samples/client/petstore/rust/hyper/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/VERSION b/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/VERSION +++ b/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/VERSION b/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/VERSION +++ b/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/scala-akka/.openapi-generator/VERSION b/samples/client/petstore/scala-akka/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/scala-akka/.openapi-generator/VERSION +++ b/samples/client/petstore/scala-akka/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION b/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION +++ b/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/scala-sttp/.openapi-generator/VERSION b/samples/client/petstore/scala-sttp/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/scala-sttp/.openapi-generator/VERSION +++ b/samples/client/petstore/scala-sttp/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/PetApi.java index 4ac2f8c1c91..f0942e6db7d 100644 --- a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/StoreApi.java index f059c01a7f5..4bae8225606 100644 --- a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/UserApi.java index 7cd1d12936e..d796bc41a17 100644 --- a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-no-nullable/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud-no-nullable/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/spring-cloud-no-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/PetApi.java index a4423018756..93eefd68af0 100644 --- a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/StoreApi.java index fb68cb1fc1c..5a23e71468e 100644 --- a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/UserApi.java index fecb6f1b908..0e813129335 100644 --- a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-spring-pageable/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud-spring-pageable/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/spring-cloud-spring-pageable/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud-spring-pageable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/PetApi.java index 3b142812713..398ff133bc0 100644 --- a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java index 9dfd829f5b0..81c7b71de1c 100644 --- a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/UserApi.java index 8e759301d3a..9d0f30811ff 100644 --- a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/spring-cloud/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java index a4423018756..93eefd68af0 100644 --- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java index fb68cb1fc1c..5a23e71468e 100644 --- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java index fecb6f1b908..0e813129335 100644 --- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-stubs/.openapi-generator/VERSION b/samples/client/petstore/spring-stubs/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/spring-stubs/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-stubs/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java index 7884dc1e310..9fd9bb27849 100644 --- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java index 829afc494e9..673f1f6b32b 100644 --- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java index c5eb5453f64..5a6d3ac6934 100644 --- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/swift5/alamofireLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/alamofireLibrary/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/alamofireLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/combineLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/combineLibrary/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/combineLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/combineLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/default/.openapi-generator/VERSION b/samples/client/petstore/swift5/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/default/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/deprecated/.openapi-generator/VERSION b/samples/client/petstore/swift5/deprecated/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/deprecated/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/deprecated/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/nonPublicApi/.openapi-generator/VERSION b/samples/client/petstore/swift5/nonPublicApi/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/nonPublicApi/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/nonPublicApi/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/objcCompatible/.openapi-generator/VERSION b/samples/client/petstore/swift5/objcCompatible/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/objcCompatible/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/objcCompatible/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION b/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/promisekitLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/promisekitLibrary/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/promisekitLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/readonlyProperties/.openapi-generator/VERSION b/samples/client/petstore/swift5/readonlyProperties/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/readonlyProperties/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/readonlyProperties/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/resultLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/resultLibrary/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/resultLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/resultLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/urlsessionLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/urlsessionLibrary/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/urlsessionLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION b/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/composed-schemas/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/composed-schemas/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-axios/builds/composed-schemas/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/composed-schemas/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-axios/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/es6-target/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/es6-target/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-axios/builds/es6-target/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/es6-target/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-complex-headers/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-complex-headers/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-axios/builds/with-complex-headers/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-complex-headers/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-interfaces/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-interfaces/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-axios/builds/with-interfaces/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-interfaces/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-npm-version/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-npm-version/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-axios/builds/with-npm-version/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-npm-version/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/default-v3.0/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-fetch/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/enum/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/enum/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-fetch/builds/enum/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/enum/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/es6-target/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-fetch/builds/es6-target/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/with-interfaces/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/with-npm-version/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION b/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-redux-query/builds/with-npm-version/.openapi-generator/VERSION b/samples/client/petstore/typescript-redux-query/builds/with-npm-version/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-redux-query/builds/with-npm-version/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-redux-query/builds/with-npm-version/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-rxjs/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/es6-target/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/config/petstore/protobuf-schema/.openapi-generator/VERSION b/samples/config/petstore/protobuf-schema/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/config/petstore/protobuf-schema/.openapi-generator/VERSION +++ b/samples/config/petstore/protobuf-schema/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/meta-codegen/lib/pom.xml b/samples/meta-codegen/lib/pom.xml index eb5fd1018d6..87c5bee9003 100644 --- a/samples/meta-codegen/lib/pom.xml +++ b/samples/meta-codegen/lib/pom.xml @@ -121,7 +121,7 @@ UTF-8 - 5.2.0 + 5.2.1-SNAPSHOT 1.0.0 4.8.1 diff --git a/samples/meta-codegen/usage/.openapi-generator/VERSION b/samples/meta-codegen/usage/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/meta-codegen/usage/.openapi-generator/VERSION +++ b/samples/meta-codegen/usage/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/elm/.openapi-generator/VERSION b/samples/openapi3/client/elm/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/elm/.openapi-generator/VERSION +++ b/samples/openapi3/client/elm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/.openapi-generator/VERSION b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/.openapi-generator/VERSION +++ b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/.openapi-generator/VERSION b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/.openapi-generator/VERSION +++ b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/python/.openapi-generator/VERSION b/samples/openapi3/client/extensions/x-auth-id-alias/python/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/python/.openapi-generator/VERSION +++ b/samples/openapi3/client/extensions/x-auth-id-alias/python/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/.openapi-generator/VERSION b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/.openapi-generator/VERSION +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb index a291943990f..27209ee6258 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api/usage_api.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api/usage_api.rb index 13c795882e9..b6902d57386 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api/usage_api.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api/usage_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb index 2c39d223404..a519f802521 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_error.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_error.rb index 1a3981a33b3..5644ddf70be 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_error.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb index 32682c92889..76aa275da34 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb index 7aeaa5d8a58..246a195574d 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/api_client_spec.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/api_client_spec.rb index 8bd913af86a..f5832089793 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/api_client_spec.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/configuration_spec.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/configuration_spec.rb index b850a17baa6..adf1f285ea7 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/configuration_spec.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb index 20666f85b4b..4ceaf1842c6 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec index 55a5b220b22..e47461deb74 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/python/.openapi-generator/VERSION b/samples/openapi3/client/features/dynamic-servers/python/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/features/dynamic-servers/python/.openapi-generator/VERSION +++ b/samples/openapi3/client/features/dynamic-servers/python/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/.openapi-generator/VERSION b/samples/openapi3/client/features/dynamic-servers/ruby/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/.openapi-generator/VERSION +++ b/samples/openapi3/client/features/dynamic-servers/ruby/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/dynamic_servers.gemspec b/samples/openapi3/client/features/dynamic-servers/ruby/dynamic_servers.gemspec index 1cf61846b8f..fe927f40c59 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/dynamic_servers.gemspec +++ b/samples/openapi3/client/features/dynamic-servers/ruby/dynamic_servers.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers.rb index 9ffbcce2f16..f54cf39e8c9 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb index ebe43ab2128..dbacab75927 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb index 85ac8733557..a12f32b07bf 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_error.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_error.rb index e7053cb2062..36de5507244 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_error.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb index fb2984d070e..658a9776051 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/version.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/version.rb index 4bec55df2a8..b794287804e 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/version.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/spec/api_client_spec.rb b/samples/openapi3/client/features/dynamic-servers/ruby/spec/api_client_spec.rb index ec042334ca9..c7e800a0662 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/spec/api_client_spec.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/spec/configuration_spec.rb b/samples/openapi3/client/features/dynamic-servers/ruby/spec/configuration_spec.rb index 6a4f8d5658a..582cdc3f690 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/spec/configuration_spec.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/spec/spec_helper.rb b/samples/openapi3/client/features/dynamic-servers/ruby/spec/spec_helper.rb index 7f74d20adac..953cdfb66fd 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/spec/spec_helper.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/.openapi-generator/VERSION b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/.openapi-generator/VERSION +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore.rb index f8ff79ac314..6af98b16026 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api/usage_api.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api/usage_api.rb index 2d81791e4d9..192cc874225 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api/usage_api.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api/usage_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb index 2b93d83a8f4..4f2db3ad597 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_error.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_error.rb index e0067eecf42..020c22a7eca 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_error.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb index 9a137c97d26..a2e04a83d6f 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/array_alias.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/array_alias.rb index 5d90030dc36..2be4aff06aa 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/array_alias.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/array_alias.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/map_alias.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/map_alias.rb index 9be9ff2199c..07ea0f110d8 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/map_alias.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/map_alias.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/version.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/version.rb index 893c34188ed..84e0ae869a4 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/version.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/petstore.gemspec b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/petstore.gemspec index f8913c4167f..101c98cef78 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/petstore.gemspec +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/petstore.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/api_client_spec.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/api_client_spec.rb index 9798ce8766d..d2d7ad30930 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/api_client_spec.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/configuration_spec.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/configuration_spec.rb index 3b423d0b7f1..40e58da1a41 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/configuration_spec.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/spec_helper.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/spec_helper.rb index 898a5c464c6..0341ec79ac0 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/spec_helper.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.0 +OpenAPI Generator version: 5.2.1-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/go/go-petstore/.openapi-generator/VERSION b/samples/openapi3/client/petstore/go/go-petstore/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/go/go-petstore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/.openapi-generator/VERSION b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/.openapi-generator/VERSION b/samples/openapi3/client/petstore/java/jersey2-java8/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/java/jersey2-java8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/java/native/.openapi-generator/VERSION b/samples/openapi3/client/petstore/java/native/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/java/native/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/java/native/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/python-legacy/.openapi-generator/VERSION b/samples/openapi3/client/petstore/python-legacy/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100755 --- a/samples/openapi3/client/petstore/python-legacy/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/python-legacy/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/python/.openapi-generator/VERSION b/samples/openapi3/client/petstore/python/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/python/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/python/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/schema/petstore/ktorm/.openapi-generator/VERSION b/samples/schema/petstore/ktorm/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/schema/petstore/ktorm/.openapi-generator/VERSION +++ b/samples/schema/petstore/ktorm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/schema/petstore/mysql/.openapi-generator/VERSION b/samples/schema/petstore/mysql/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/schema/petstore/mysql/.openapi-generator/VERSION +++ b/samples/schema/petstore/mysql/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION b/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION +++ b/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore-3.0/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore-3.0/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/aspnetcore-3.0/.openapi-generator/VERSION +++ b/samples/server/petstore/aspnetcore-3.0/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore-3.1/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore-3.1/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/aspnetcore-3.1/.openapi-generator/VERSION +++ b/samples/server/petstore/aspnetcore-3.1/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION +++ b/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/aspnetcore/.openapi-generator/VERSION +++ b/samples/server/petstore/aspnetcore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION b/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION +++ b/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION b/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION +++ b/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/erlang-server/.openapi-generator/VERSION b/samples/server/petstore/erlang-server/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/erlang-server/.openapi-generator/VERSION +++ b/samples/server/petstore/erlang-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/go-api-server/.openapi-generator/VERSION b/samples/server/petstore/go-api-server/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/go-api-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-api-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/go-chi-server/.openapi-generator/VERSION b/samples/server/petstore/go-chi-server/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/go-chi-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-chi-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/go-echo-server/.openapi-generator/VERSION b/samples/server/petstore/go-echo-server/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/go-echo-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-echo-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/go-gin-api-server/.openapi-generator/VERSION b/samples/server/petstore/go-gin-api-server/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/go-gin-api-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-gin-api-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/haskell-servant/.openapi-generator/VERSION b/samples/server/petstore/haskell-servant/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/haskell-servant/.openapi-generator/VERSION +++ b/samples/server/petstore/haskell-servant/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-msf4j/.openapi-generator/VERSION b/samples/server/petstore/java-msf4j/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-msf4j/.openapi-generator/VERSION +++ b/samples/server/petstore/java-msf4j/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-api-package-override/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-api-package-override/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-play-framework-api-package-override/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-api-package-override/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-async/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-async/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-play-framework-async/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-controller-only/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-controller-only/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-play-framework-controller-only/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-controller-only/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-fake-endpoints/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-fake-endpoints/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-play-framework-fake-endpoints/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-fake-endpoints/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-bean-validation/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-bean-validation/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-play-framework-no-bean-validation/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-bean-validation/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-exception-handling/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-exception-handling/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-play-framework-no-exception-handling/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-exception-handling/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-interface/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-interface/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-play-framework-no-interface/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-interface/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-nullable/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-nullable/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-play-framework-no-nullable/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-swagger-ui/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-swagger-ui/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-play-framework-no-swagger-ui/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-swagger-ui/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-wrap-calls/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-wrap-calls/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-play-framework-no-wrap-calls/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-wrap-calls/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-play-framework/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-undertow/.openapi-generator/VERSION b/samples/server/petstore/java-undertow/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-undertow/.openapi-generator/VERSION +++ b/samples/server/petstore/java-undertow/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-vertx-web/.openapi-generator/VERSION b/samples/server/petstore/java-vertx-web/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/java-vertx-web/.openapi-generator/VERSION +++ b/samples/server/petstore/java-vertx-web/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/default-value/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/default-value/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-resteasy/default-value/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/default-value/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION b/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/kotlin-server/ktor/README.md b/samples/server/petstore/kotlin-server/ktor/README.md index 62451a4b1c1..6de4727b134 100644 --- a/samples/server/petstore/kotlin-server/ktor/README.md +++ b/samples/server/petstore/kotlin-server/ktor/README.md @@ -2,7 +2,7 @@ This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -Generated by OpenAPI Generator 5.2.0. +Generated by OpenAPI Generator 5.2.1-SNAPSHOT. ## Requires diff --git a/samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/VERSION b/samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/PetApi.kt b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/PetApi.kt index 05d6f55d30b..3a460d22d20 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/PetApi.kt +++ b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/PetApi.kt @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/StoreApi.kt b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/StoreApi.kt index 0906e8f3054..2e7ef4baf88 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/StoreApi.kt +++ b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/StoreApi.kt @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/UserApi.kt b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/UserApi.kt index 26ae6475199..681de2dadf9 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/UserApi.kt +++ b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/UserApi.kt @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION b/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION b/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-laravel/.openapi-generator/VERSION b/samples/server/petstore/php-laravel/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/php-laravel/.openapi-generator/VERSION +++ b/samples/server/petstore/php-laravel/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-lumen/.openapi-generator/VERSION b/samples/server/petstore/php-lumen/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/php-lumen/.openapi-generator/VERSION +++ b/samples/server/petstore/php-lumen/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION b/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION +++ b/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-mezzio-ph/.openapi-generator/VERSION b/samples/server/petstore/php-mezzio-ph/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/php-mezzio-ph/.openapi-generator/VERSION +++ b/samples/server/petstore/php-mezzio-ph/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-slim4/.openapi-generator/VERSION b/samples/server/petstore/php-slim4/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/php-slim4/.openapi-generator/VERSION +++ b/samples/server/petstore/php-slim4/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/.openapi-generator/VERSION b/samples/server/petstore/php-symfony/SymfonyBundle-php/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/php-symfony/SymfonyBundle-php/.openapi-generator/VERSION +++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/VERSION b/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/VERSION +++ b/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION b/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION +++ b/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-blueplanet/.openapi-generator/VERSION b/samples/server/petstore/python-blueplanet/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/python-blueplanet/.openapi-generator/VERSION +++ b/samples/server/petstore/python-blueplanet/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-fastapi/.openapi-generator/VERSION b/samples/server/petstore/python-fastapi/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/python-fastapi/.openapi-generator/VERSION +++ b/samples/server/petstore/python-fastapi/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-flask/.openapi-generator/VERSION b/samples/server/petstore/python-flask/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/python-flask/.openapi-generator/VERSION +++ b/samples/server/petstore/python-flask/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/multipart-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/multipart-v3/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/rust-server/output/multipart-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/multipart-v3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/no-example-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/no-example-v3/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/rust-server/output/no-example-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/no-example-v3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/openapi-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/openapi-v3/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/rust-server/output/openapi-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/openapi-v3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/ops-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/ops-v3/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/rust-server/output/ops-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/ops-v3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/ping-bearer-auth/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/ping-bearer-auth/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/rust-server/output/ping-bearer-auth/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/ping-bearer-auth/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/rust-server-test/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/rust-server-test/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/rust-server/output/rust-server-test/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/rust-server-test/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-default-value/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-default-value/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/spring-mvc-default-value/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-default-value/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestHeadersApi.java b/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestHeadersApi.java index 6389dec165b..302b53196c7 100644 --- a/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestHeadersApi.java +++ b/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestHeadersApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestQueryParamsApi.java b/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestQueryParamsApi.java index b4c3e2d567f..1238f1af6c0 100644 --- a/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestQueryParamsApi.java +++ b/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestQueryParamsApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java index 24fe4f55eb7..d7e4c9cba9e 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java index 1915ea23ed4..d06d27d099a 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index d198c07affe..f57e8fffab3 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java index 4c0d59e7452..7392891444f 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java index dcbcfa5d92b..a6a2f5bc9e3 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java index 3ca63c1ad21..cbc973173cb 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java index 8dd9d509edc..64cbfe9d780 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java index 1b9583461bb..8a06982a3fc 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 484d0f073fc..9c5f60b0692 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java index 4a411b45b62..ef12458e572 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java index 25046b7749f..60f43330244 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java index 078609a9eb4..999e354510c 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-no-nullable/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java index 8dd9d509edc..64cbfe9d780 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeApi.java index 16cb7abb947..771534d2d4f 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 484d0f073fc..9c5f60b0692 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/PetApi.java index 4a411b45b62..ef12458e572 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/StoreApi.java index 25046b7749f..60f43330244 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/UserApi.java index 078609a9eb4..999e354510c 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-spring-pageable/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-spring-pageable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java index 8dd9d509edc..64cbfe9d780 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java index c8c3a826206..7ebc773cf49 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 484d0f073fc..9c5f60b0692 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/PetApi.java index 92f03222402..2214da8b9fa 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java index 25046b7749f..60f43330244 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/UserApi.java index 078609a9eb4..999e354510c 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/spring-mvc/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java index 8dd9d509edc..64cbfe9d780 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java index 16cb7abb947..771534d2d4f 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 484d0f073fc..9c5f60b0692 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java index 4a411b45b62..ef12458e572 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java index 25046b7749f..60f43330244 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java index 078609a9eb4..999e354510c 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/.openapi-generator/VERSION b/samples/server/petstore/springboot-beanvalidation-no-nullable/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java index 75b941ee702..eebc98d2dfa 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeApi.java index 942f3a12782..70c9a533c63 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 6ebeeb85a7f..42cdda440d2 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/PetApi.java index 240be3642fd..150a5332459 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/StoreApi.java index 6fee2e320f4..8f23fb41091 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/UserApi.java index ccd92721348..cb03e6c990b 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION b/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java index 8dd9d509edc..64cbfe9d780 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java index 16cb7abb947..771534d2d4f 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 484d0f073fc..9c5f60b0692 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java index 4a411b45b62..ef12458e572 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java index 25046b7749f..60f43330244 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java index 078609a9eb4..999e354510c 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION b/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java index 585ebc274a1..d6b43670cdb 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java index d5c9cf0c564..6e5e680c167 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 38976592ee4..fcc94e9fea3 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java index 001e473ead0..4c6387ff522 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java index e666c58d5c3..ed840b0974f 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java index bfc32159fe4..5f320c6d887 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION b/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java index 585ebc274a1..d6b43670cdb 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java index d5c9cf0c564..6e5e680c167 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 38976592ee4..fcc94e9fea3 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java index 001e473ead0..4c6387ff522 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java index e666c58d5c3..ed840b0974f 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java index bfc32159fe4..5f320c6d887 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION b/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java index 25b0d32e0be..848d47ae9a7 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java index ae504056721..f1accae4815 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 87b9415fbba..a5be0ff3227 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java index f3556ff547b..cddc74a5094 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java index 6d588d2834b..c3b19cbc6b1 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java index 8035938bdbd..1413ef568dc 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION b/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java index 9520695b4b0..f5cbb82c92b 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java index e20e0a28a5d..3fc5eb07c99 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 730685efd02..00df7308c0f 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java index 87f977783b7..934e81c21e9 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java index b7fa836ab06..87e1ee73789 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java index f9082b244c6..46a734917ec 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/.openapi-generator/VERSION b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java index 75b941ee702..eebc98d2dfa 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeApi.java index c5a139dc436..b89152793eb 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 6ebeeb85a7f..42cdda440d2 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/PetApi.java index d426b618d9e..f51338dd3fb 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/StoreApi.java index 6fee2e320f4..8f23fb41091 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/UserApi.java index ccd92721348..cb03e6c990b 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/.openapi-generator/VERSION b/samples/server/petstore/springboot-spring-pageable-delegatePattern/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/AnotherFakeApi.java index 585ebc274a1..d6b43670cdb 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeApi.java index be334728b3d..fb71771602a 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 38976592ee4..fcc94e9fea3 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/PetApi.java index 507f1ee278f..08bd0711453 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/StoreApi.java index e666c58d5c3..ed840b0974f 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/UserApi.java index bfc32159fe4..5f320c6d887 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/.openapi-generator/VERSION b/samples/server/petstore/springboot-spring-pageable-without-j8/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java index 75b941ee702..eebc98d2dfa 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeApi.java index c5a139dc436..b89152793eb 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 6ebeeb85a7f..42cdda440d2 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/PetApi.java index d426b618d9e..f51338dd3fb 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/StoreApi.java index 6fee2e320f4..8f23fb41091 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/UserApi.java index ccd92721348..cb03e6c990b 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/.openapi-generator/VERSION b/samples/server/petstore/springboot-spring-pageable/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot-spring-pageable/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-spring-pageable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java index 8dd9d509edc..64cbfe9d780 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java index c8c3a826206..7ebc773cf49 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 484d0f073fc..9c5f60b0692 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/PetApi.java index 92f03222402..2214da8b9fa 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java index 25046b7749f..60f43330244 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/UserApi.java index 078609a9eb4..999e354510c 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION b/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java index 8dd9d509edc..64cbfe9d780 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java index 70fdd8fda37..4cb96cc56c6 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 484d0f073fc..9c5f60b0692 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java index 3574f7a9148..47b2cf0b3b1 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java index 25046b7749f..60f43330244 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java index 078609a9eb4..999e354510c 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION b/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java index 943b09771e3..e8237f4485c 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeApi.java index 957e6361ea3..e778761d53f 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeClassnameTestApi.java index 996120f725f..5cf1ad061c5 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/PetApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/PetApi.java index 22bcc1aa169..05e6deef8da 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/PetApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/StoreApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/StoreApi.java index 86a4cc864f3..4e5a9af464d 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/StoreApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/UserApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/UserApi.java index 8d72235c890..d323b358c64 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/UserApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/.openapi-generator/VERSION b/samples/server/petstore/springboot/.openapi-generator/VERSION index 7cbea073bea..862529f8cac 100644 --- a/samples/server/petstore/springboot/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.0 \ No newline at end of file +5.2.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java index 8dd9d509edc..64cbfe9d780 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java index 16cb7abb947..771534d2d4f 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 484d0f073fc..9c5f60b0692 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java index 4a411b45b62..ef12458e572 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java index 25046b7749f..60f43330244 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java index 078609a9eb4..999e354510c 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.0). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ From 39fbf53150456c20af038f4511a72dc986a06855 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 10 Jul 2021 00:12:23 +0800 Subject: [PATCH 192/192] create v5.3.0 --- modules/openapi-generator-cli/pom.xml | 2 +- modules/openapi-generator-core/pom.xml | 2 +- modules/openapi-generator-gradle-plugin/gradle.properties | 2 +- modules/openapi-generator-gradle-plugin/pom.xml | 2 +- modules/openapi-generator-maven-plugin/examples/java-client.xml | 2 +- .../examples/multi-module/java-client/pom.xml | 2 +- .../examples/non-java-invalid-spec.xml | 2 +- modules/openapi-generator-maven-plugin/examples/non-java.xml | 2 +- modules/openapi-generator-maven-plugin/pom.xml | 2 +- modules/openapi-generator-online/pom.xml | 2 +- modules/openapi-generator/pom.xml | 2 +- pom.xml | 2 +- samples/client/petstore/R/.openapi-generator/VERSION | 2 +- samples/client/petstore/apex/.openapi-generator/VERSION | 2 +- samples/client/petstore/bash/.openapi-generator/VERSION | 2 +- samples/client/petstore/c/.openapi-generator/VERSION | 2 +- samples/client/petstore/cpp-qt/.openapi-generator/VERSION | 2 +- .../petstore/cpp-restsdk/client/.openapi-generator/VERSION | 2 +- samples/client/petstore/cpp-restsdk/client/ApiClient.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/ApiClient.h | 2 +- samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h | 2 +- samples/client/petstore/cpp-restsdk/client/ApiException.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/ApiException.h | 2 +- samples/client/petstore/cpp-restsdk/client/HttpContent.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/HttpContent.h | 2 +- samples/client/petstore/cpp-restsdk/client/IHttpBody.h | 2 +- samples/client/petstore/cpp-restsdk/client/JsonBody.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/JsonBody.h | 2 +- samples/client/petstore/cpp-restsdk/client/ModelBase.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/ModelBase.h | 2 +- .../client/petstore/cpp-restsdk/client/MultipartFormData.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/MultipartFormData.h | 2 +- samples/client/petstore/cpp-restsdk/client/Object.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/Object.h | 2 +- samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/api/PetApi.h | 2 +- samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/api/StoreApi.h | 2 +- samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/api/UserApi.h | 2 +- .../client/petstore/cpp-restsdk/client/model/ApiResponse.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h | 2 +- samples/client/petstore/cpp-restsdk/client/model/Category.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/model/Category.h | 2 +- samples/client/petstore/cpp-restsdk/client/model/Order.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/model/Order.h | 2 +- samples/client/petstore/cpp-restsdk/client/model/Pet.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/model/Pet.h | 2 +- samples/client/petstore/cpp-restsdk/client/model/Tag.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/model/Tag.h | 2 +- samples/client/petstore/cpp-restsdk/client/model/User.cpp | 2 +- samples/client/petstore/cpp-restsdk/client/model/User.h | 2 +- samples/client/petstore/cpp-tiny/.openapi-generator/VERSION | 2 +- samples/client/petstore/crystal/.openapi-generator/VERSION | 2 +- samples/client/petstore/crystal/.travis.yml | 2 +- samples/client/petstore/crystal/spec/spec_helper.cr | 2 +- samples/client/petstore/crystal/src/petstore.cr | 2 +- samples/client/petstore/crystal/src/petstore/api/pet_api.cr | 2 +- samples/client/petstore/crystal/src/petstore/api/store_api.cr | 2 +- samples/client/petstore/crystal/src/petstore/api/user_api.cr | 2 +- samples/client/petstore/crystal/src/petstore/api_client.cr | 2 +- samples/client/petstore/crystal/src/petstore/api_error.cr | 2 +- samples/client/petstore/crystal/src/petstore/configuration.cr | 2 +- .../client/petstore/crystal/src/petstore/models/api_response.cr | 2 +- samples/client/petstore/crystal/src/petstore/models/category.cr | 2 +- samples/client/petstore/crystal/src/petstore/models/order.cr | 2 +- samples/client/petstore/crystal/src/petstore/models/pet.cr | 2 +- samples/client/petstore/crystal/src/petstore/models/tag.cr | 2 +- samples/client/petstore/crystal/src/petstore/models/user.cr | 2 +- .../.openapi-generator/VERSION | 2 +- .../OpenAPIClient-httpclient/.openapi-generator/VERSION | 2 +- .../OpenAPIClient-net47/.openapi-generator/VERSION | 2 +- .../OpenAPIClient-net5.0/.openapi-generator/VERSION | 2 +- .../csharp-netcore/OpenAPIClient/.openapi-generator/VERSION | 2 +- .../csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION | 2 +- .../OpenAPIClientCoreAndNet47/.openapi-generator/VERSION | 2 +- .../petstore/csharp/OpenAPIClient/.openapi-generator/VERSION | 2 +- samples/client/petstore/elixir/.openapi-generator/VERSION | 2 +- .../client/petstore/go/go-petstore/.openapi-generator/VERSION | 2 +- samples/client/petstore/groovy/.openapi-generator/VERSION | 2 +- .../petstore/haskell-http-client/.openapi-generator/VERSION | 2 +- .../petstore/java/feign-no-nullable/.openapi-generator/VERSION | 2 +- samples/client/petstore/java/feign/.openapi-generator/VERSION | 2 +- .../petstore/java/google-api-client/.openapi-generator/VERSION | 2 +- samples/client/petstore/java/jersey1/.openapi-generator/VERSION | 2 +- .../java/jersey2-java8-localdatetime/.openapi-generator/VERSION | 2 +- .../petstore/java/jersey2-java8/.openapi-generator/VERSION | 2 +- .../java/microprofile-rest-client/.openapi-generator/VERSION | 2 +- .../petstore/java/native-async/.openapi-generator/VERSION | 2 +- samples/client/petstore/java/native/.openapi-generator/VERSION | 2 +- .../okhttp-gson-dynamicOperations/.openapi-generator/VERSION | 2 +- .../java/okhttp-gson-parcelableModel/.openapi-generator/VERSION | 2 +- .../client/petstore/java/okhttp-gson/.openapi-generator/VERSION | 2 +- .../java/rest-assured-jackson/.openapi-generator/VERSION | 2 +- .../petstore/java/rest-assured/.openapi-generator/VERSION | 2 +- .../client/petstore/java/resteasy/.openapi-generator/VERSION | 2 +- .../java/resttemplate-withXml/.openapi-generator/VERSION | 2 +- .../petstore/java/resttemplate/.openapi-generator/VERSION | 2 +- .../petstore/java/retrofit2-play26/.openapi-generator/VERSION | 2 +- .../client/petstore/java/retrofit2/.openapi-generator/VERSION | 2 +- .../petstore/java/retrofit2rx2/.openapi-generator/VERSION | 2 +- .../petstore/java/retrofit2rx3/.openapi-generator/VERSION | 2 +- .../petstore/java/vertx-no-nullable/.openapi-generator/VERSION | 2 +- samples/client/petstore/java/vertx/.openapi-generator/VERSION | 2 +- .../client/petstore/java/webclient/.openapi-generator/VERSION | 2 +- .../client/petstore/javascript-es6/.openapi-generator/VERSION | 2 +- .../petstore/javascript-promise-es6/.openapi-generator/VERSION | 2 +- samples/client/petstore/kotlin-gson/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-jackson/.openapi-generator/VERSION | 2 +- .../kotlin-json-request-string/.openapi-generator/VERSION | 2 +- .../kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-moshi-codegen/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-multiplatform/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-nonpublic/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-nullable/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-okhttp3/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-retrofit2/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-string/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-threetenbp/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-uppercase-enum/.openapi-generator/VERSION | 2 +- samples/client/petstore/kotlin/.openapi-generator/VERSION | 2 +- samples/client/petstore/lua/.openapi-generator/VERSION | 2 +- samples/client/petstore/nim/.openapi-generator/VERSION | 2 +- .../client/petstore/objc/core-data/.openapi-generator/VERSION | 2 +- samples/client/petstore/objc/default/.openapi-generator/VERSION | 2 +- samples/client/petstore/perl/.openapi-generator/VERSION | 2 +- .../petstore/php/OpenAPIClient-php/.openapi-generator/VERSION | 2 +- .../petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php | 2 +- .../php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/ApiException.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Configuration.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/HeaderSelector.php | 2 +- .../OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php | 2 +- .../OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php | 2 +- .../php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php | 2 +- samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/Category.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/Client.php | 2 +- samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/File.php | 2 +- .../php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php | 2 +- samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php | 2 +- .../php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php | 2 +- .../php/OpenAPIClient-php/lib/Model/HealthCheckResult.php | 2 +- .../php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php | 2 +- .../lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Model200Response.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ModelList.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/Name.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/Order.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php | 2 +- .../php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php | 2 +- .../php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php | 2 +- .../lib/Model/OuterEnumIntegerDefaultValue.php | 2 +- .../OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php | 2 +- samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php | 2 +- .../php/OpenAPIClient-php/lib/Model/SpecialModelName.php | 2 +- samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php | 2 +- .../client/petstore/php/OpenAPIClient-php/lib/Model/User.php | 2 +- .../petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php | 2 +- samples/client/petstore/powershell/.openapi-generator/VERSION | 2 +- .../client/petstore/python-asyncio/.openapi-generator/VERSION | 2 +- .../client/petstore/python-legacy/.openapi-generator/VERSION | 2 +- .../client/petstore/python-tornado/.openapi-generator/VERSION | 2 +- samples/client/petstore/python/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- samples/client/petstore/ruby-faraday/.openapi-generator/VERSION | 2 +- samples/client/petstore/ruby-faraday/lib/petstore.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/api/default_api.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/api/store_api.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/api/user_api.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/configuration.rb | 2 +- .../lib/petstore/models/additional_properties_class.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/animal.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/api_response.rb | 2 +- .../lib/petstore/models/array_of_array_of_number_only.rb | 2 +- .../ruby-faraday/lib/petstore/models/array_of_number_only.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/array_test.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/capitalization.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/category.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/class_model.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/client.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/enum_class.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/enum_test.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/file.rb | 2 +- .../ruby-faraday/lib/petstore/models/file_schema_test_class.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/format_test.rb | 2 +- .../ruby-faraday/lib/petstore/models/has_only_read_only.rb | 2 +- .../ruby-faraday/lib/petstore/models/health_check_result.rb | 2 +- .../ruby-faraday/lib/petstore/models/inline_response_default.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/list.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/map_test.rb | 2 +- .../models/mixed_properties_and_additional_properties_class.rb | 2 +- .../ruby-faraday/lib/petstore/models/model200_response.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/model_return.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/name.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/nullable_class.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/number_only.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/order.rb | 2 +- .../ruby-faraday/lib/petstore/models/outer_composite.rb | 2 +- .../petstore/ruby-faraday/lib/petstore/models/outer_enum.rb | 2 +- .../lib/petstore/models/outer_enum_default_value.rb | 2 +- .../ruby-faraday/lib/petstore/models/outer_enum_integer.rb | 2 +- .../lib/petstore/models/outer_enum_integer_default_value.rb | 2 +- .../lib/petstore/models/outer_object_with_enum_property.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb | 2 +- .../ruby-faraday/lib/petstore/models/read_only_first.rb | 2 +- .../ruby-faraday/lib/petstore/models/special_model_name.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb | 2 +- .../client/petstore/ruby-faraday/lib/petstore/models/user.rb | 2 +- samples/client/petstore/ruby-faraday/lib/petstore/version.rb | 2 +- samples/client/petstore/ruby-faraday/petstore.gemspec | 2 +- samples/client/petstore/ruby-faraday/spec/api_client_spec.rb | 2 +- samples/client/petstore/ruby-faraday/spec/configuration_spec.rb | 2 +- samples/client/petstore/ruby-faraday/spec/spec_helper.rb | 2 +- samples/client/petstore/ruby/.openapi-generator/VERSION | 2 +- samples/client/petstore/ruby/lib/petstore.rb | 2 +- .../client/petstore/ruby/lib/petstore/api/another_fake_api.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api/default_api.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api/fake_api.rb | 2 +- .../ruby/lib/petstore/api/fake_classname_tags123_api.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api/pet_api.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api/store_api.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api/user_api.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api_client.rb | 2 +- samples/client/petstore/ruby/lib/petstore/api_error.rb | 2 +- samples/client/petstore/ruby/lib/petstore/configuration.rb | 2 +- .../ruby/lib/petstore/models/additional_properties_class.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/animal.rb | 2 +- .../client/petstore/ruby/lib/petstore/models/api_response.rb | 2 +- .../ruby/lib/petstore/models/array_of_array_of_number_only.rb | 2 +- .../petstore/ruby/lib/petstore/models/array_of_number_only.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/array_test.rb | 2 +- .../client/petstore/ruby/lib/petstore/models/capitalization.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/cat.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/category.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/class_model.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/client.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/dog.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/enum_class.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/enum_test.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/file.rb | 2 +- .../petstore/ruby/lib/petstore/models/file_schema_test_class.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/foo.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/format_test.rb | 2 +- .../petstore/ruby/lib/petstore/models/has_only_read_only.rb | 2 +- .../petstore/ruby/lib/petstore/models/health_check_result.rb | 2 +- .../ruby/lib/petstore/models/inline_response_default.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/list.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/map_test.rb | 2 +- .../models/mixed_properties_and_additional_properties_class.rb | 2 +- .../petstore/ruby/lib/petstore/models/model200_response.rb | 2 +- .../client/petstore/ruby/lib/petstore/models/model_return.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/name.rb | 2 +- .../client/petstore/ruby/lib/petstore/models/nullable_class.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/number_only.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/order.rb | 2 +- .../client/petstore/ruby/lib/petstore/models/outer_composite.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb | 2 +- .../ruby/lib/petstore/models/outer_enum_default_value.rb | 2 +- .../petstore/ruby/lib/petstore/models/outer_enum_integer.rb | 2 +- .../lib/petstore/models/outer_enum_integer_default_value.rb | 2 +- .../ruby/lib/petstore/models/outer_object_with_enum_property.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/pet.rb | 2 +- .../client/petstore/ruby/lib/petstore/models/read_only_first.rb | 2 +- .../petstore/ruby/lib/petstore/models/special_model_name.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/tag.rb | 2 +- samples/client/petstore/ruby/lib/petstore/models/user.rb | 2 +- samples/client/petstore/ruby/lib/petstore/version.rb | 2 +- samples/client/petstore/ruby/petstore.gemspec | 2 +- samples/client/petstore/ruby/spec/api_client_spec.rb | 2 +- samples/client/petstore/ruby/spec/configuration_spec.rb | 2 +- samples/client/petstore/ruby/spec/spec_helper.rb | 2 +- .../petstore/rust/hyper/petstore/.openapi-generator/VERSION | 2 +- .../rust/reqwest/petstore-async/.openapi-generator/VERSION | 2 +- .../petstore/rust/reqwest/petstore/.openapi-generator/VERSION | 2 +- samples/client/petstore/scala-akka/.openapi-generator/VERSION | 2 +- .../scala-httpclient-deprecated/.openapi-generator/VERSION | 2 +- samples/client/petstore/scala-sttp/.openapi-generator/VERSION | 2 +- .../petstore/spring-cloud-async/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../spring-cloud-no-nullable/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../spring-cloud-spring-pageable/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- samples/client/petstore/spring-cloud/.openapi-generator/VERSION | 2 +- .../spring-cloud/src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- samples/client/petstore/spring-stubs/.openapi-generator/VERSION | 2 +- .../spring-stubs/src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/swift5/alamofireLibrary/.openapi-generator/VERSION | 2 +- .../petstore/swift5/combineLibrary/.openapi-generator/VERSION | 2 +- .../client/petstore/swift5/default/.openapi-generator/VERSION | 2 +- .../petstore/swift5/deprecated/.openapi-generator/VERSION | 2 +- .../petstore/swift5/nonPublicApi/.openapi-generator/VERSION | 2 +- .../petstore/swift5/objcCompatible/.openapi-generator/VERSION | 2 +- samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION | 2 +- .../swift5/promisekitLibrary/.openapi-generator/VERSION | 2 +- .../swift5/readonlyProperties/.openapi-generator/VERSION | 2 +- .../petstore/swift5/resultLibrary/.openapi-generator/VERSION | 2 +- .../petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION | 2 +- .../swift5/urlsessionLibrary/.openapi-generator/VERSION | 2 +- .../petstore/swift5/vaporLibrary/.openapi-generator/VERSION | 2 +- .../petstore/swift5/x-swift-hashable/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/single-request-parameter/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../builds/with-prefixed-module-name/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/with-npm/.openapi-generator/VERSION | 2 +- .../typescript-aurelia/default/.openapi-generator/VERSION | 2 +- .../builds/composed-schemas/.openapi-generator/VERSION | 2 +- .../typescript-axios/builds/default/.openapi-generator/VERSION | 2 +- .../builds/es6-target/.openapi-generator/VERSION | 2 +- .../builds/with-complex-headers/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../builds/with-interfaces/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../builds/with-npm-version/.openapi-generator/VERSION | 2 +- .../with-single-request-parameters/.openapi-generator/VERSION | 2 +- .../builds/default-v3.0/.openapi-generator/VERSION | 2 +- .../typescript-fetch/builds/default/.openapi-generator/VERSION | 2 +- .../typescript-fetch/builds/enum/.openapi-generator/VERSION | 2 +- .../builds/es6-target/.openapi-generator/VERSION | 2 +- .../builds/multiple-parameters/.openapi-generator/VERSION | 2 +- .../prefix-parameter-interfaces/.openapi-generator/VERSION | 2 +- .../builds/sagas-and-records/.openapi-generator/VERSION | 2 +- .../builds/typescript-three-plus/.openapi-generator/VERSION | 2 +- .../builds/with-interfaces/.openapi-generator/VERSION | 2 +- .../builds/with-npm-version/.openapi-generator/VERSION | 2 +- .../builds/without-runtime-checks/.openapi-generator/VERSION | 2 +- .../petstore/typescript-inversify/.openapi-generator/VERSION | 2 +- .../typescript-jquery/default/.openapi-generator/VERSION | 2 +- .../petstore/typescript-jquery/npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../petstore/typescript-node/default/.openapi-generator/VERSION | 2 +- .../petstore/typescript-node/npm/.openapi-generator/VERSION | 2 +- .../builds/with-npm-version/.openapi-generator/VERSION | 2 +- .../typescript-rxjs/builds/default/.openapi-generator/VERSION | 2 +- .../builds/es6-target/.openapi-generator/VERSION | 2 +- .../builds/with-npm-version/.openapi-generator/VERSION | 2 +- .../builds/with-progress-subscriber/.openapi-generator/VERSION | 2 +- .../config/petstore/protobuf-schema/.openapi-generator/VERSION | 2 +- samples/meta-codegen/lib/pom.xml | 2 +- samples/meta-codegen/usage/.openapi-generator/VERSION | 2 +- samples/openapi3/client/elm/.openapi-generator/VERSION | 2 +- .../x-auth-id-alias/go-experimental/.openapi-generator/VERSION | 2 +- .../java/jersey2-java8/.openapi-generator/VERSION | 2 +- .../x-auth-id-alias/python/.openapi-generator/VERSION | 2 +- .../x-auth-id-alias/ruby-client/.openapi-generator/VERSION | 2 +- .../x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb | 2 +- .../ruby-client/lib/x_auth_id_alias/api/usage_api.rb | 2 +- .../ruby-client/lib/x_auth_id_alias/api_client.rb | 2 +- .../ruby-client/lib/x_auth_id_alias/api_error.rb | 2 +- .../ruby-client/lib/x_auth_id_alias/configuration.rb | 2 +- .../x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb | 2 +- .../x-auth-id-alias/ruby-client/spec/api_client_spec.rb | 2 +- .../x-auth-id-alias/ruby-client/spec/configuration_spec.rb | 2 +- .../extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb | 2 +- .../x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec | 2 +- .../features/dynamic-servers/python/.openapi-generator/VERSION | 2 +- .../features/dynamic-servers/ruby/.openapi-generator/VERSION | 2 +- .../features/dynamic-servers/ruby/dynamic_servers.gemspec | 2 +- .../client/features/dynamic-servers/ruby/lib/dynamic_servers.rb | 2 +- .../dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb | 2 +- .../dynamic-servers/ruby/lib/dynamic_servers/api_client.rb | 2 +- .../dynamic-servers/ruby/lib/dynamic_servers/api_error.rb | 2 +- .../dynamic-servers/ruby/lib/dynamic_servers/configuration.rb | 2 +- .../dynamic-servers/ruby/lib/dynamic_servers/version.rb | 2 +- .../features/dynamic-servers/ruby/spec/api_client_spec.rb | 2 +- .../features/dynamic-servers/ruby/spec/configuration_spec.rb | 2 +- .../client/features/dynamic-servers/ruby/spec/spec_helper.rb | 2 +- .../ruby-client/.openapi-generator/VERSION | 2 +- .../generate-alias-as-model/ruby-client/lib/petstore.rb | 2 +- .../ruby-client/lib/petstore/api/usage_api.rb | 2 +- .../ruby-client/lib/petstore/api_client.rb | 2 +- .../ruby-client/lib/petstore/api_error.rb | 2 +- .../ruby-client/lib/petstore/configuration.rb | 2 +- .../ruby-client/lib/petstore/models/array_alias.rb | 2 +- .../ruby-client/lib/petstore/models/map_alias.rb | 2 +- .../generate-alias-as-model/ruby-client/lib/petstore/version.rb | 2 +- .../generate-alias-as-model/ruby-client/petstore.gemspec | 2 +- .../generate-alias-as-model/ruby-client/spec/api_client_spec.rb | 2 +- .../ruby-client/spec/configuration_spec.rb | 2 +- .../generate-alias-as-model/ruby-client/spec/spec_helper.rb | 2 +- .../petstore_client_lib_fake/.openapi-generator/VERSION | 2 +- .../dart-dio/petstore_client_lib/.openapi-generator/VERSION | 2 +- .../petstore_client_lib_fake/.openapi-generator/VERSION | 2 +- .../dart2/petstore_client_lib/.openapi-generator/VERSION | 2 +- .../dart2/petstore_client_lib_fake/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../client/petstore/go/go-petstore/.openapi-generator/VERSION | 2 +- .../jersey2-java8-special-characters/.openapi-generator/VERSION | 2 +- .../petstore/java/jersey2-java8/.openapi-generator/VERSION | 2 +- .../client/petstore/java/native/.openapi-generator/VERSION | 2 +- .../client/petstore/python-legacy/.openapi-generator/VERSION | 2 +- .../openapi3/client/petstore/python/.openapi-generator/VERSION | 2 +- .../typescript/builds/default/.openapi-generator/VERSION | 2 +- .../petstore/typescript/builds/deno/.openapi-generator/VERSION | 2 +- .../typescript/builds/inversify/.openapi-generator/VERSION | 2 +- .../typescript/builds/jquery/.openapi-generator/VERSION | 2 +- .../typescript/builds/object_params/.openapi-generator/VERSION | 2 +- samples/schema/petstore/ktorm/.openapi-generator/VERSION | 2 +- samples/schema/petstore/mysql/.openapi-generator/VERSION | 2 +- samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION | 2 +- .../server/petstore/aspnetcore-3.0/.openapi-generator/VERSION | 2 +- .../server/petstore/aspnetcore-3.1/.openapi-generator/VERSION | 2 +- .../server/petstore/aspnetcore-5.0/.openapi-generator/VERSION | 2 +- samples/server/petstore/aspnetcore/.openapi-generator/VERSION | 2 +- samples/server/petstore/cpp-pistache/.openapi-generator/VERSION | 2 +- .../cpp-qt-qhttpengine-server/.openapi-generator/VERSION | 2 +- .../server/petstore/erlang-server/.openapi-generator/VERSION | 2 +- .../server/petstore/go-api-server/.openapi-generator/VERSION | 2 +- .../server/petstore/go-chi-server/.openapi-generator/VERSION | 2 +- .../server/petstore/go-echo-server/.openapi-generator/VERSION | 2 +- .../petstore/go-gin-api-server/.openapi-generator/VERSION | 2 +- .../server/petstore/haskell-servant/.openapi-generator/VERSION | 2 +- samples/server/petstore/java-msf4j/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java-play-framework-async/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../java-play-framework-no-interface/.openapi-generator/VERSION | 2 +- .../java-play-framework-no-nullable/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/java-play-framework/.openapi-generator/VERSION | 2 +- .../server/petstore/java-undertow/.openapi-generator/VERSION | 2 +- .../server/petstore/java-vertx-web/.openapi-generator/VERSION | 2 +- .../jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION | 2 +- .../jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION | 2 +- .../server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION | 2 +- .../jaxrs-cxf-non-spring-app/.openapi-generator/VERSION | 2 +- samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION | 2 +- .../server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION | 2 +- samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION | 2 +- .../jaxrs-resteasy/default-value/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-resteasy/default/.openapi-generator/VERSION | 2 +- .../jaxrs-resteasy/eap-java8/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs-spec-interface/.openapi-generator/VERSION | 2 +- samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION | 2 +- .../server/petstore/jaxrs/jersey1/.openapi-generator/VERSION | 2 +- .../petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION | 2 +- .../server/petstore/jaxrs/jersey2/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-server/ktor/.openapi-generator/VERSION | 2 +- samples/server/petstore/kotlin-server/ktor/README.md | 2 +- .../kotlin-springboot-delegate/.openapi-generator/VERSION | 2 +- .../src/main/kotlin/org/openapitools/api/PetApi.kt | 2 +- .../src/main/kotlin/org/openapitools/api/StoreApi.kt | 2 +- .../src/main/kotlin/org/openapitools/api/UserApi.kt | 2 +- .../kotlin-springboot-reactive/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-springboot/.openapi-generator/VERSION | 2 +- samples/server/petstore/php-laravel/.openapi-generator/VERSION | 2 +- samples/server/petstore/php-lumen/.openapi-generator/VERSION | 2 +- .../petstore/php-mezzio-ph-modern/.openapi-generator/VERSION | 2 +- .../server/petstore/php-mezzio-ph/.openapi-generator/VERSION | 2 +- samples/server/petstore/php-slim4/.openapi-generator/VERSION | 2 +- .../php-symfony/SymfonyBundle-php/.openapi-generator/VERSION | 2 +- .../python-aiohttp-srclayout/.openapi-generator/VERSION | 2 +- .../server/petstore/python-aiohttp/.openapi-generator/VERSION | 2 +- .../petstore/python-blueplanet/.openapi-generator/VERSION | 2 +- .../server/petstore/python-fastapi/.openapi-generator/VERSION | 2 +- samples/server/petstore/python-flask/.openapi-generator/VERSION | 2 +- .../rust-server/output/multipart-v3/.openapi-generator/VERSION | 2 +- .../rust-server/output/no-example-v3/.openapi-generator/VERSION | 2 +- .../rust-server/output/openapi-v3/.openapi-generator/VERSION | 2 +- .../rust-server/output/ops-v3/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../output/ping-bearer-auth/.openapi-generator/VERSION | 2 +- .../output/rust-server-test/.openapi-generator/VERSION | 2 +- .../spring-mvc-default-value/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/TestHeadersApi.java | 2 +- .../src/main/java/org/openapitools/api/TestQueryParamsApi.java | 2 +- .../petstore/spring-mvc-j8-async/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../spring-mvc-j8-localdatetime/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/spring-mvc-no-nullable/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../spring-mvc-spring-pageable/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- samples/server/petstore/spring-mvc/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../spring-mvc/src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../spring-mvc/src/main/java/org/openapitools/api/PetApi.java | 2 +- .../spring-mvc/src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../spring-mvc/src/main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../springboot-beanvalidation/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/springboot-delegate-j8/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/springboot-delegate/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../springboot-implicitHeaders/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/springboot-reactive/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../springboot-spring-pageable/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/springboot-useoptional/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/api/UserApi.java | 2 +- .../petstore/springboot-virtualan/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/virtualan/api/AnotherFakeApi.java | 2 +- .../src/main/java/org/openapitools/virtualan/api/FakeApi.java | 2 +- .../org/openapitools/virtualan/api/FakeClassnameTestApi.java | 2 +- .../src/main/java/org/openapitools/virtualan/api/PetApi.java | 2 +- .../src/main/java/org/openapitools/virtualan/api/StoreApi.java | 2 +- .../src/main/java/org/openapitools/virtualan/api/UserApi.java | 2 +- samples/server/petstore/springboot/.openapi-generator/VERSION | 2 +- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 2 +- .../springboot/src/main/java/org/openapitools/api/FakeApi.java | 2 +- .../main/java/org/openapitools/api/FakeClassnameTestApi.java | 2 +- .../springboot/src/main/java/org/openapitools/api/PetApi.java | 2 +- .../springboot/src/main/java/org/openapitools/api/StoreApi.java | 2 +- .../springboot/src/main/java/org/openapitools/api/UserApi.java | 2 +- 668 files changed, 668 insertions(+), 668 deletions(-) diff --git a/modules/openapi-generator-cli/pom.xml b/modules/openapi-generator-cli/pom.xml index ecf3c56c4e4..b8a76737e32 100644 --- a/modules/openapi-generator-cli/pom.xml +++ b/modules/openapi-generator-cli/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 5.2.1-SNAPSHOT + 5.3.0-SNAPSHOT ../.. diff --git a/modules/openapi-generator-core/pom.xml b/modules/openapi-generator-core/pom.xml index 81f86e9cb34..558f9ab56e7 100644 --- a/modules/openapi-generator-core/pom.xml +++ b/modules/openapi-generator-core/pom.xml @@ -6,7 +6,7 @@ openapi-generator-project org.openapitools - 5.2.1-SNAPSHOT + 5.3.0-SNAPSHOT ../.. diff --git a/modules/openapi-generator-gradle-plugin/gradle.properties b/modules/openapi-generator-gradle-plugin/gradle.properties index 2a71ae5459a..4c303de9b36 100644 --- a/modules/openapi-generator-gradle-plugin/gradle.properties +++ b/modules/openapi-generator-gradle-plugin/gradle.properties @@ -1,5 +1,5 @@ # RELEASE_VERSION -openApiGeneratorVersion=5.2.1-SNAPSHOT +openApiGeneratorVersion=5.3.0-SNAPSHOT # /RELEASE_VERSION # BEGIN placeholders diff --git a/modules/openapi-generator-gradle-plugin/pom.xml b/modules/openapi-generator-gradle-plugin/pom.xml index 11cb549c195..a21ff37cbd8 100644 --- a/modules/openapi-generator-gradle-plugin/pom.xml +++ b/modules/openapi-generator-gradle-plugin/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 5.2.1-SNAPSHOT + 5.3.0-SNAPSHOT ../.. diff --git a/modules/openapi-generator-maven-plugin/examples/java-client.xml b/modules/openapi-generator-maven-plugin/examples/java-client.xml index 368c2a89531..5a559d77aba 100644 --- a/modules/openapi-generator-maven-plugin/examples/java-client.xml +++ b/modules/openapi-generator-maven-plugin/examples/java-client.xml @@ -13,7 +13,7 @@ org.openapitools openapi-generator-maven-plugin - 5.2.1-SNAPSHOT + 5.3.0-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml b/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml index 2e0ad09aeee..693b2a6f431 100644 --- a/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml +++ b/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml @@ -19,7 +19,7 @@ org.openapitools openapi-generator-maven-plugin - 5.2.1-SNAPSHOT + 5.3.0-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml b/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml index a478bbb8527..a2408e81815 100644 --- a/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml +++ b/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml @@ -13,7 +13,7 @@ org.openapitools openapi-generator-maven-plugin - 5.2.1-SNAPSHOT + 5.3.0-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/non-java.xml b/modules/openapi-generator-maven-plugin/examples/non-java.xml index 56620b71e13..3dd66f500de 100644 --- a/modules/openapi-generator-maven-plugin/examples/non-java.xml +++ b/modules/openapi-generator-maven-plugin/examples/non-java.xml @@ -13,7 +13,7 @@ org.openapitools openapi-generator-maven-plugin - 5.2.1-SNAPSHOT + 5.3.0-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/pom.xml b/modules/openapi-generator-maven-plugin/pom.xml index 9252181f3f8..e5908b39f82 100644 --- a/modules/openapi-generator-maven-plugin/pom.xml +++ b/modules/openapi-generator-maven-plugin/pom.xml @@ -5,7 +5,7 @@ org.openapitools openapi-generator-project - 5.2.1-SNAPSHOT + 5.3.0-SNAPSHOT ../.. diff --git a/modules/openapi-generator-online/pom.xml b/modules/openapi-generator-online/pom.xml index be324c44a9c..c594694ead3 100644 --- a/modules/openapi-generator-online/pom.xml +++ b/modules/openapi-generator-online/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 5.2.1-SNAPSHOT + 5.3.0-SNAPSHOT ../.. diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index 1189eb81d53..08f2fdea691 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 5.2.1-SNAPSHOT + 5.3.0-SNAPSHOT ../.. diff --git a/pom.xml b/pom.xml index 63dbee00700..1132135eb94 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ pom openapi-generator-project - 5.2.1-SNAPSHOT + 5.3.0-SNAPSHOT https://github.com/openapitools/openapi-generator diff --git a/samples/client/petstore/R/.openapi-generator/VERSION b/samples/client/petstore/R/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/R/.openapi-generator/VERSION +++ b/samples/client/petstore/R/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/apex/.openapi-generator/VERSION b/samples/client/petstore/apex/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/apex/.openapi-generator/VERSION +++ b/samples/client/petstore/apex/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/bash/.openapi-generator/VERSION b/samples/client/petstore/bash/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/bash/.openapi-generator/VERSION +++ b/samples/client/petstore/bash/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/c/.openapi-generator/VERSION b/samples/client/petstore/c/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/c/.openapi-generator/VERSION +++ b/samples/client/petstore/c/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/cpp-qt/.openapi-generator/VERSION b/samples/client/petstore/cpp-qt/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/cpp-qt/.openapi-generator/VERSION +++ b/samples/client/petstore/cpp-qt/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/cpp-restsdk/client/.openapi-generator/VERSION b/samples/client/petstore/cpp-restsdk/client/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/cpp-restsdk/client/.openapi-generator/VERSION +++ b/samples/client/petstore/cpp-restsdk/client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/cpp-restsdk/client/ApiClient.cpp b/samples/client/petstore/cpp-restsdk/client/ApiClient.cpp index 9021b81920e..664f4e32e28 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiClient.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ApiClient.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiClient.h b/samples/client/petstore/cpp-restsdk/client/ApiClient.h index 75526d1acbb..de849524327 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiClient.h +++ b/samples/client/petstore/cpp-restsdk/client/ApiClient.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp b/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp index c17246718ff..0adab7c55cc 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h b/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h index 6306a60b64d..ab8035d0a59 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h +++ b/samples/client/petstore/cpp-restsdk/client/ApiConfiguration.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiException.cpp b/samples/client/petstore/cpp-restsdk/client/ApiException.cpp index 7eceea77a76..f4a6c154a83 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiException.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ApiException.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ApiException.h b/samples/client/petstore/cpp-restsdk/client/ApiException.h index 520d7fecab5..0f2a01ed901 100644 --- a/samples/client/petstore/cpp-restsdk/client/ApiException.h +++ b/samples/client/petstore/cpp-restsdk/client/ApiException.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/HttpContent.cpp b/samples/client/petstore/cpp-restsdk/client/HttpContent.cpp index 92e305aa0f6..c0433bd30bf 100644 --- a/samples/client/petstore/cpp-restsdk/client/HttpContent.cpp +++ b/samples/client/petstore/cpp-restsdk/client/HttpContent.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/HttpContent.h b/samples/client/petstore/cpp-restsdk/client/HttpContent.h index eff1d674374..87c4a21e2b5 100644 --- a/samples/client/petstore/cpp-restsdk/client/HttpContent.h +++ b/samples/client/petstore/cpp-restsdk/client/HttpContent.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/IHttpBody.h b/samples/client/petstore/cpp-restsdk/client/IHttpBody.h index 3e865324ea4..4c5e4d9125a 100644 --- a/samples/client/petstore/cpp-restsdk/client/IHttpBody.h +++ b/samples/client/petstore/cpp-restsdk/client/IHttpBody.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/JsonBody.cpp b/samples/client/petstore/cpp-restsdk/client/JsonBody.cpp index 4d0f3469bee..3894321c095 100644 --- a/samples/client/petstore/cpp-restsdk/client/JsonBody.cpp +++ b/samples/client/petstore/cpp-restsdk/client/JsonBody.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/JsonBody.h b/samples/client/petstore/cpp-restsdk/client/JsonBody.h index c1d9932961c..e47a638ba58 100644 --- a/samples/client/petstore/cpp-restsdk/client/JsonBody.h +++ b/samples/client/petstore/cpp-restsdk/client/JsonBody.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp b/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp index 0d95022705f..7807662a936 100644 --- a/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp +++ b/samples/client/petstore/cpp-restsdk/client/ModelBase.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/ModelBase.h b/samples/client/petstore/cpp-restsdk/client/ModelBase.h index ca86ae1bdfb..8acba94ae0a 100644 --- a/samples/client/petstore/cpp-restsdk/client/ModelBase.h +++ b/samples/client/petstore/cpp-restsdk/client/ModelBase.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/MultipartFormData.cpp b/samples/client/petstore/cpp-restsdk/client/MultipartFormData.cpp index a60c5669a5e..084cfe9c368 100644 --- a/samples/client/petstore/cpp-restsdk/client/MultipartFormData.cpp +++ b/samples/client/petstore/cpp-restsdk/client/MultipartFormData.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/MultipartFormData.h b/samples/client/petstore/cpp-restsdk/client/MultipartFormData.h index 6030824c841..31878138460 100644 --- a/samples/client/petstore/cpp-restsdk/client/MultipartFormData.h +++ b/samples/client/petstore/cpp-restsdk/client/MultipartFormData.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/Object.cpp b/samples/client/petstore/cpp-restsdk/client/Object.cpp index 16170c562c7..53caa5471ea 100644 --- a/samples/client/petstore/cpp-restsdk/client/Object.cpp +++ b/samples/client/petstore/cpp-restsdk/client/Object.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/Object.h b/samples/client/petstore/cpp-restsdk/client/Object.h index e851cfcf57c..e5bf374075d 100644 --- a/samples/client/petstore/cpp-restsdk/client/Object.h +++ b/samples/client/petstore/cpp-restsdk/client/Object.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp b/samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp index 07719ecfbbb..65229272629 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp +++ b/samples/client/petstore/cpp-restsdk/client/api/PetApi.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/PetApi.h b/samples/client/petstore/cpp-restsdk/client/api/PetApi.h index 503846b1282..4b3035d4127 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/PetApi.h +++ b/samples/client/petstore/cpp-restsdk/client/api/PetApi.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp index 5c4dca2fe1a..a9cb4b614b5 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp +++ b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h index 9c41e9ce380..3d3f874d290 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h +++ b/samples/client/petstore/cpp-restsdk/client/api/StoreApi.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp b/samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp index b8705d68c8e..ac11df2ac5b 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp +++ b/samples/client/petstore/cpp-restsdk/client/api/UserApi.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/api/UserApi.h b/samples/client/petstore/cpp-restsdk/client/api/UserApi.h index 37835849203..00d6b03a61a 100644 --- a/samples/client/petstore/cpp-restsdk/client/api/UserApi.h +++ b/samples/client/petstore/cpp-restsdk/client/api/UserApi.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.cpp b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.cpp index 56c5bb9e6e8..db324a2b319 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h index 94f852a1400..f41cdb59dfc 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h +++ b/samples/client/petstore/cpp-restsdk/client/model/ApiResponse.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Category.cpp b/samples/client/petstore/cpp-restsdk/client/model/Category.cpp index b76ddf693d7..6b72391d998 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Category.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/Category.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Category.h b/samples/client/petstore/cpp-restsdk/client/model/Category.h index 9e9373f6eb8..709ba6e1a7b 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Category.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Category.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Order.cpp b/samples/client/petstore/cpp-restsdk/client/model/Order.cpp index a9ce0599a4d..f0601164018 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Order.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/Order.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Order.h b/samples/client/petstore/cpp-restsdk/client/model/Order.h index 57e435365ed..dcb8a1fa50a 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Order.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Order.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Pet.cpp b/samples/client/petstore/cpp-restsdk/client/model/Pet.cpp index bdc51156762..e0c5468e83f 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Pet.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/Pet.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Pet.h b/samples/client/petstore/cpp-restsdk/client/model/Pet.h index b00832225ad..cb6954c5746 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Pet.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Pet.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Tag.cpp b/samples/client/petstore/cpp-restsdk/client/model/Tag.cpp index c44e9ed8f47..a20c1673e46 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Tag.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/Tag.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/Tag.h b/samples/client/petstore/cpp-restsdk/client/model/Tag.h index 98cb24fee2a..83be28813a7 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/Tag.h +++ b/samples/client/petstore/cpp-restsdk/client/model/Tag.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/User.cpp b/samples/client/petstore/cpp-restsdk/client/model/User.cpp index 371d4a91f97..3797bcfa1ce 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/User.cpp +++ b/samples/client/petstore/cpp-restsdk/client/model/User.cpp @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-restsdk/client/model/User.h b/samples/client/petstore/cpp-restsdk/client/model/User.h index 3018bc892db..8e2ad153e1c 100644 --- a/samples/client/petstore/cpp-restsdk/client/model/User.h +++ b/samples/client/petstore/cpp-restsdk/client/model/User.h @@ -4,7 +4,7 @@ * * The version of the OpenAPI document: 1.0.0 * - * NOTE: This class is auto generated by OpenAPI-Generator 5.2.1-SNAPSHOT. + * NOTE: This class is auto generated by OpenAPI-Generator 5.3.0-SNAPSHOT. * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION b/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION +++ b/samples/client/petstore/cpp-tiny/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/crystal/.openapi-generator/VERSION b/samples/client/petstore/crystal/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/crystal/.openapi-generator/VERSION +++ b/samples/client/petstore/crystal/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/crystal/.travis.yml b/samples/client/petstore/crystal/.travis.yml index 44fbaf197b1..d4ae06c0bdb 100644 --- a/samples/client/petstore/crystal/.travis.yml +++ b/samples/client/petstore/crystal/.travis.yml @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # language: crystal diff --git a/samples/client/petstore/crystal/spec/spec_helper.cr b/samples/client/petstore/crystal/spec/spec_helper.cr index 2941dec1e2e..8506b8ef398 100644 --- a/samples/client/petstore/crystal/spec/spec_helper.cr +++ b/samples/client/petstore/crystal/spec/spec_helper.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # # load modules diff --git a/samples/client/petstore/crystal/src/petstore.cr b/samples/client/petstore/crystal/src/petstore.cr index 23380adf3a9..6cd34276d80 100644 --- a/samples/client/petstore/crystal/src/petstore.cr +++ b/samples/client/petstore/crystal/src/petstore.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # # Dependencies diff --git a/samples/client/petstore/crystal/src/petstore/api/pet_api.cr b/samples/client/petstore/crystal/src/petstore/api/pet_api.cr index 444cb083b6b..fe57b6a3394 100644 --- a/samples/client/petstore/crystal/src/petstore/api/pet_api.cr +++ b/samples/client/petstore/crystal/src/petstore/api/pet_api.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # require "uri" diff --git a/samples/client/petstore/crystal/src/petstore/api/store_api.cr b/samples/client/petstore/crystal/src/petstore/api/store_api.cr index cd1aa5aaa02..7a1d0e197b2 100644 --- a/samples/client/petstore/crystal/src/petstore/api/store_api.cr +++ b/samples/client/petstore/crystal/src/petstore/api/store_api.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # require "uri" diff --git a/samples/client/petstore/crystal/src/petstore/api/user_api.cr b/samples/client/petstore/crystal/src/petstore/api/user_api.cr index 92be60047d7..ed913ab049a 100644 --- a/samples/client/petstore/crystal/src/petstore/api/user_api.cr +++ b/samples/client/petstore/crystal/src/petstore/api/user_api.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # require "uri" diff --git a/samples/client/petstore/crystal/src/petstore/api_client.cr b/samples/client/petstore/crystal/src/petstore/api_client.cr index 3862b59ffbf..94ebb4999ca 100644 --- a/samples/client/petstore/crystal/src/petstore/api_client.cr +++ b/samples/client/petstore/crystal/src/petstore/api_client.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/api_error.cr b/samples/client/petstore/crystal/src/petstore/api_error.cr index 0b67e79cfbb..f1e58d1c088 100644 --- a/samples/client/petstore/crystal/src/petstore/api_error.cr +++ b/samples/client/petstore/crystal/src/petstore/api_error.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # module Petstore diff --git a/samples/client/petstore/crystal/src/petstore/configuration.cr b/samples/client/petstore/crystal/src/petstore/configuration.cr index ef47e397dfa..1a666878e2a 100644 --- a/samples/client/petstore/crystal/src/petstore/configuration.cr +++ b/samples/client/petstore/crystal/src/petstore/configuration.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # require "log" diff --git a/samples/client/petstore/crystal/src/petstore/models/api_response.cr b/samples/client/petstore/crystal/src/petstore/models/api_response.cr index 020f88a8890..ddaa7004271 100644 --- a/samples/client/petstore/crystal/src/petstore/models/api_response.cr +++ b/samples/client/petstore/crystal/src/petstore/models/api_response.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/category.cr b/samples/client/petstore/crystal/src/petstore/models/category.cr index 26df74df71b..fd6907a1d3a 100644 --- a/samples/client/petstore/crystal/src/petstore/models/category.cr +++ b/samples/client/petstore/crystal/src/petstore/models/category.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/order.cr b/samples/client/petstore/crystal/src/petstore/models/order.cr index edd6396c322..97c5ee66391 100644 --- a/samples/client/petstore/crystal/src/petstore/models/order.cr +++ b/samples/client/petstore/crystal/src/petstore/models/order.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/pet.cr b/samples/client/petstore/crystal/src/petstore/models/pet.cr index f1d96ee1a98..061a980ea53 100644 --- a/samples/client/petstore/crystal/src/petstore/models/pet.cr +++ b/samples/client/petstore/crystal/src/petstore/models/pet.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/tag.cr b/samples/client/petstore/crystal/src/petstore/models/tag.cr index 5925f74557c..06e945cfbe0 100644 --- a/samples/client/petstore/crystal/src/petstore/models/tag.cr +++ b/samples/client/petstore/crystal/src/petstore/models/tag.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # require "json" diff --git a/samples/client/petstore/crystal/src/petstore/models/user.cr b/samples/client/petstore/crystal/src/petstore/models/user.cr index 717a3b1255f..67910a93943 100644 --- a/samples/client/petstore/crystal/src/petstore/models/user.cr +++ b/samples/client/petstore/crystal/src/petstore/models/user.cr @@ -5,7 +5,7 @@ #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech -#OpenAPI Generator version: 5.2.1-SNAPSHOT +#OpenAPI Generator version: 5.3.0-SNAPSHOT # require "json" diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net47/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-net5.0/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/VERSION b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp-netcore/OpenAPIClientCoreAndNet47/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION b/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION +++ b/samples/client/petstore/csharp/OpenAPIClient/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/elixir/.openapi-generator/VERSION b/samples/client/petstore/elixir/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/elixir/.openapi-generator/VERSION +++ b/samples/client/petstore/elixir/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION b/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION +++ b/samples/client/petstore/go/go-petstore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/groovy/.openapi-generator/VERSION b/samples/client/petstore/groovy/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/groovy/.openapi-generator/VERSION +++ b/samples/client/petstore/groovy/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION b/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION +++ b/samples/client/petstore/haskell-http-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/feign-no-nullable/.openapi-generator/VERSION b/samples/client/petstore/java/feign-no-nullable/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/feign-no-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/java/feign-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/feign/.openapi-generator/VERSION b/samples/client/petstore/java/feign/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/feign/.openapi-generator/VERSION +++ b/samples/client/petstore/java/feign/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION b/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION +++ b/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey1/.openapi-generator/VERSION b/samples/client/petstore/java/jersey1/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/jersey1/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey1/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2-java8-localdatetime/.openapi-generator/VERSION b/samples/client/petstore/java/jersey2-java8-localdatetime/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/jersey2-java8-localdatetime/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey2-java8-localdatetime/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION b/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION b/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION +++ b/samples/client/petstore/java/microprofile-rest-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/native-async/.openapi-generator/VERSION b/samples/client/petstore/java/native-async/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/native-async/.openapi-generator/VERSION +++ b/samples/client/petstore/java/native-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/native/.openapi-generator/VERSION b/samples/client/petstore/java/native/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/native/.openapi-generator/VERSION +++ b/samples/client/petstore/java/native/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/okhttp-gson-dynamicOperations/.openapi-generator/VERSION b/samples/client/petstore/java/okhttp-gson-dynamicOperations/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/okhttp-gson-dynamicOperations/.openapi-generator/VERSION +++ b/samples/client/petstore/java/okhttp-gson-dynamicOperations/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION b/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION b/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION +++ b/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/rest-assured-jackson/.openapi-generator/VERSION b/samples/client/petstore/java/rest-assured-jackson/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/rest-assured-jackson/.openapi-generator/VERSION +++ b/samples/client/petstore/java/rest-assured-jackson/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION b/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION +++ b/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/resteasy/.openapi-generator/VERSION b/samples/client/petstore/java/resteasy/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/resteasy/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resteasy/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION b/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION b/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2-play26/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2rx3/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2rx3/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/retrofit2rx3/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2rx3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/vertx-no-nullable/.openapi-generator/VERSION b/samples/client/petstore/java/vertx-no-nullable/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/vertx-no-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/java/vertx-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/vertx/.openapi-generator/VERSION b/samples/client/petstore/java/vertx/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/vertx/.openapi-generator/VERSION +++ b/samples/client/petstore/java/vertx/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/webclient/.openapi-generator/VERSION b/samples/client/petstore/java/webclient/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/java/webclient/.openapi-generator/VERSION +++ b/samples/client/petstore/java/webclient/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/javascript-es6/.openapi-generator/VERSION b/samples/client/petstore/javascript-es6/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/javascript-es6/.openapi-generator/VERSION +++ b/samples/client/petstore/javascript-es6/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION b/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION +++ b/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION b/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-gson/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION b/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-jackson/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION b/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-json-request-string/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION b/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-moshi-codegen/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION b/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-multiplatform/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION b/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-nonpublic/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION b/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/.openapi-generator/VERSION b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION b/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-retrofit2-rx3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION b/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-retrofit2/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-string/.openapi-generator/VERSION b/samples/client/petstore/kotlin-string/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-string/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-string/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION b/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin-uppercase-enum/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/kotlin/.openapi-generator/VERSION b/samples/client/petstore/kotlin/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/kotlin/.openapi-generator/VERSION +++ b/samples/client/petstore/kotlin/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/lua/.openapi-generator/VERSION b/samples/client/petstore/lua/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/lua/.openapi-generator/VERSION +++ b/samples/client/petstore/lua/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/nim/.openapi-generator/VERSION b/samples/client/petstore/nim/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/nim/.openapi-generator/VERSION +++ b/samples/client/petstore/nim/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/objc/core-data/.openapi-generator/VERSION b/samples/client/petstore/objc/core-data/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/objc/core-data/.openapi-generator/VERSION +++ b/samples/client/petstore/objc/core-data/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/objc/default/.openapi-generator/VERSION b/samples/client/petstore/objc/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/objc/default/.openapi-generator/VERSION +++ b/samples/client/petstore/objc/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/perl/.openapi-generator/VERSION b/samples/client/petstore/perl/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/perl/.openapi-generator/VERSION +++ b/samples/client/petstore/perl/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION +++ b/samples/client/petstore/php/OpenAPIClient-php/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php index 18f6dc801ce..134932c7018 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php index 675a7fafee8..bce4a119c6c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/DefaultApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php index 52cbb0ae79e..1ea330e6fff 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php index 7312f1e1b0d..eabafefa97b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php index 59e3bf28fcb..89d5d85a60c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php index 982cadd4c8f..9382de6bb8e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php index 9189423bf57..b25b6668d1e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php index 46f957e474b..84f25bcfa07 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php index 976d61a6ad4..1c79efe7792 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php index 26f7eb622fd..a9d81588f13 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php @@ -16,7 +16,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php index 6dd3a61637f..fa072f35923 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php index f5f9533cc0b..1b9254aaf7c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php index c72c5ed3519..109de67ef51 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php index 9d560cfb80a..8c8e76f7f89 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php index f445a5aa7cc..7d3f0d51f0b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php index bb75e996f8a..c8d7aa532ce 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php index cac15a056ab..3a37ce090a7 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php index c75f8def53e..eff9cc58ea9 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php index 00248db7aca..6f34a9814db 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/CatAllOf.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php index b2d606b17a6..e6c9dc99c3f 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php index 2f5f8aa50a4..e9d9b400180 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php index cf13437b7bf..b7dfec93aa0 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php index fd761dff5da..539ce5f63d9 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php index bd0b1bdf50d..6c3e120b835 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/DogAllOf.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php index 4ea8dbd5e8a..b0a13239b39 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php index 3c1dd121bf9..bd8bde26c45 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php index d9afb7d7910..3ec81f2a344 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php index 44bcedc6fd0..e17ee86e323 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/File.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php index c673343b577..f76894a953e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FileSchemaTestClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php index ecd23b4453e..87f866d8797 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Foo.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php index a529c2bbb7e..96506318979 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php index 4ecd0e9fa5e..fff4b230c8b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php index 59994c7a4a4..264b14c4490 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HealthCheckResult.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php index a9ee8ef4aeb..c7ae10298e3 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/InlineResponseDefault.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php index 15e499a810d..74ee65ecc14 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php index 338cbb970ba..d00eb005c9d 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php index ffe5cd510ef..21170687126 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php index 100ad55db79..71f160cc063 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php index 0a1638a3e66..f31e20ade4a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php index e34629c80f6..3c33454b1aa 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php index a4dcd0bc6bc..935664fbbb5 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php index f5081f1efdd..30e2692f7e9 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NullableClass.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php index ae31e4c734d..ab5f6dd4e88 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php index 0873a47c9d4..f6f13817fe5 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php index d393491bb84..33da1f94cb4 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php index 553e958abde..0c7e6d7114b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php index 3832c316a4c..f648f57e67c 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumDefaultValue.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php index 1239a82e12e..929a02345c6 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumInteger.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php index 32960269c03..d7823196ccf 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnumIntegerDefaultValue.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php index 2609a874dac..a6cde50fc00 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterObjectWithEnumProperty.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php index f7c49d9d88d..55d332d0e5a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php index 3cf0d460988..a29b39e2b36 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php index ed92ba90ee1..b4c70ad3602 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php index 224c173a463..198bf8ee124 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php index 13613409171..aec22b5228e 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php index 22d9ccbb26b..aa37ef5bf4b 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1-SNAPSHOT + * OpenAPI Generator version: 5.3.0-SNAPSHOT */ /** diff --git a/samples/client/petstore/powershell/.openapi-generator/VERSION b/samples/client/petstore/powershell/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/powershell/.openapi-generator/VERSION +++ b/samples/client/petstore/powershell/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python-asyncio/.openapi-generator/VERSION b/samples/client/petstore/python-asyncio/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/python-asyncio/.openapi-generator/VERSION +++ b/samples/client/petstore/python-asyncio/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python-legacy/.openapi-generator/VERSION b/samples/client/petstore/python-legacy/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/python-legacy/.openapi-generator/VERSION +++ b/samples/client/petstore/python-legacy/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python-tornado/.openapi-generator/VERSION b/samples/client/petstore/python-tornado/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/python-tornado/.openapi-generator/VERSION +++ b/samples/client/petstore/python-tornado/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python/.openapi-generator/VERSION b/samples/client/petstore/python/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/python/.openapi-generator/VERSION +++ b/samples/client/petstore/python/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/.openapi-generator/VERSION b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/.openapi-generator/VERSION +++ b/samples/client/petstore/python_disallowAdditionalPropertiesIfNotPresent/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION b/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION +++ b/samples/client/petstore/ruby-faraday/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/ruby-faraday/lib/petstore.rb b/samples/client/petstore/ruby-faraday/lib/petstore.rb index afa1babdce0..b2133123830 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb index 92b76e8e9a5..d06e76c4a08 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/another_fake_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb index 571880804d4..4830e411d29 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/default_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb index ecf8994c8ea..6aa5ea7e112 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb index 92ecb5bfe94..e2faaed5687 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/fake_classname_tags123_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb index 1fcac74ff88..caca60a361e 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/pet_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb index daef7c8ff1a..4effc6df5e4 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/store_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb index a8aebf97c02..9efa91f7944 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api/user_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb index 2f2b35b827a..648ce958774 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb index bcc7898d50c..233dfe4e631 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb b/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb index e193e1e4b10..a8f4570e56e 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb index 254ced42e0f..adbdfa34279 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/additional_properties_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/animal.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/animal.rb index ca97eb8167b..705a1e88bf1 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/animal.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/animal.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb index 5157e8e709a..04f7899d9c7 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/api_response.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb index 4e6ad34fd37..8f03eed87c1 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_array_of_number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb index 601bedc078b..3d61a32376b 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_of_number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb index 6b264080bde..b662149f10d 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/array_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb index 534d927d145..b3c3e7950b7 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/capitalization.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb index f6db6efe5aa..f253f57fdf0 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/cat.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb index c18d0b53bfa..8953ec6f2ba 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/cat_all_of.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/category.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/category.rb index 88ec6084dd8..052eee94b80 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/category.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/category.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb index 39aa024760f..1d4ddb272a4 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/class_model.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/client.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/client.rb index db7747b46bb..a353bdff788 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/client.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb index b1d6079c82f..17e7dce1508 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/dog.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb index 1cb84f0e61c..9737bc32054 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/dog_all_of.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb index 0a9cb55c0aa..74d31bd8ecc 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_arrays.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb index 16a9e4bf8b9..e2276f7a91e 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb index 1acb6f30c05..5b8f6a5f845 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/enum_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/file.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/file.rb index 4a7ff7aaa82..7e29ced7b54 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/file.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/file.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb index 9730ea35afd..956dfb2bbc6 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/file_schema_test_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb index 88efb8fa1e9..be95ba24650 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/foo.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb index f38dc93aa97..92af39f9d49 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/format_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb index 1182efcfb6c..2d533b4fd98 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/has_only_read_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb index 2b94909e5ae..4d492a313f2 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/health_check_result.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb index bb6a2f43f8f..5bb5cc70dca 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/inline_response_default.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/list.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/list.rb index f6caf7e1bf7..21f2c549e48 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/list.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/list.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb index f62e083fbf1..118e8996127 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/map_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb index 0b43eb18c5f..39705564f74 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/mixed_properties_and_additional_properties_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb index 2b621b39f98..cdc1769f1f3 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/model200_response.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb index c8329ddd21d..b311f40ea5f 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/model_return.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/name.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/name.rb index 0e04c8051e6..357df7b1c4c 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/name.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/name.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb index ca62f36112c..090bf841120 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/nullable_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb index 377b0ebd06d..9d4ff07978a 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/order.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/order.rb index eb69fcb2f65..230c5a33898 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/order.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/order.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb index 6ad098058e5..17fee120f6e 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_composite.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb index 8fcb778f0cd..e5898ebe61f 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb index 1e3a0d81e0d..45301a396f5 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_default_value.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb index 41223e725c1..811d2b6d425 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb index f78be4ae36a..a6cb98289a9 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_enum_integer_default_value.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_object_with_enum_property.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_object_with_enum_property.rb index 5999b9b7abd..f42a4535279 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_object_with_enum_property.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/outer_object_with_enum_property.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb index 6eeb1b9d31b..f4af7f2be4d 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/pet.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb index 49c5c4d0fd3..61024a2132f 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/read_only_first.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb index 6fec567d82b..4febcbb15c3 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/special_model_name.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb index 42413453a92..942a6e36a89 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/tag.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/models/user.rb b/samples/client/petstore/ruby-faraday/lib/petstore/models/user.rb index 381f8d7a7fc..b5e41d56f8d 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/models/user.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/models/user.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/version.rb b/samples/client/petstore/ruby-faraday/lib/petstore/version.rb index 7944842c999..9b8b6a904c3 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/version.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/petstore.gemspec b/samples/client/petstore/ruby-faraday/petstore.gemspec index d849d267391..d4a8cf22d1c 100644 --- a/samples/client/petstore/ruby-faraday/petstore.gemspec +++ b/samples/client/petstore/ruby-faraday/petstore.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/spec/api_client_spec.rb b/samples/client/petstore/ruby-faraday/spec/api_client_spec.rb index df65c967719..0f41c29b81b 100644 --- a/samples/client/petstore/ruby-faraday/spec/api_client_spec.rb +++ b/samples/client/petstore/ruby-faraday/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/spec/configuration_spec.rb b/samples/client/petstore/ruby-faraday/spec/configuration_spec.rb index d4ab07f49d1..c70985b736d 100644 --- a/samples/client/petstore/ruby-faraday/spec/configuration_spec.rb +++ b/samples/client/petstore/ruby-faraday/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby-faraday/spec/spec_helper.rb b/samples/client/petstore/ruby-faraday/spec/spec_helper.rb index d3f03e96b98..04bf32c24f3 100644 --- a/samples/client/petstore/ruby-faraday/spec/spec_helper.rb +++ b/samples/client/petstore/ruby-faraday/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/.openapi-generator/VERSION b/samples/client/petstore/ruby/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/ruby/.openapi-generator/VERSION +++ b/samples/client/petstore/ruby/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/ruby/lib/petstore.rb b/samples/client/petstore/ruby/lib/petstore.rb index afa1babdce0..b2133123830 100644 --- a/samples/client/petstore/ruby/lib/petstore.rb +++ b/samples/client/petstore/ruby/lib/petstore.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb b/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb index 92b76e8e9a5..d06e76c4a08 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/default_api.rb b/samples/client/petstore/ruby/lib/petstore/api/default_api.rb index 571880804d4..4830e411d29 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/default_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/default_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb index ecf8994c8ea..6aa5ea7e112 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb b/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb index 92ecb5bfe94..e2faaed5687 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb b/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb index 3cf75c585c9..60622b40f0e 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/store_api.rb b/samples/client/petstore/ruby/lib/petstore/api/store_api.rb index d82e8b07509..bba7581c174 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/store_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/store_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api/user_api.rb b/samples/client/petstore/ruby/lib/petstore/api/user_api.rb index d308b46ba51..f7d5ab75ac1 100644 --- a/samples/client/petstore/ruby/lib/petstore/api/user_api.rb +++ b/samples/client/petstore/ruby/lib/petstore/api/user_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api_client.rb b/samples/client/petstore/ruby/lib/petstore/api_client.rb index a814753e2e0..283736531dc 100644 --- a/samples/client/petstore/ruby/lib/petstore/api_client.rb +++ b/samples/client/petstore/ruby/lib/petstore/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/api_error.rb b/samples/client/petstore/ruby/lib/petstore/api_error.rb index bcc7898d50c..233dfe4e631 100644 --- a/samples/client/petstore/ruby/lib/petstore/api_error.rb +++ b/samples/client/petstore/ruby/lib/petstore/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/configuration.rb b/samples/client/petstore/ruby/lib/petstore/configuration.rb index c30c1e5ed20..12a52ebd2c5 100644 --- a/samples/client/petstore/ruby/lib/petstore/configuration.rb +++ b/samples/client/petstore/ruby/lib/petstore/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb index 254ced42e0f..adbdfa34279 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/animal.rb b/samples/client/petstore/ruby/lib/petstore/models/animal.rb index ca97eb8167b..705a1e88bf1 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/animal.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/animal.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/api_response.rb b/samples/client/petstore/ruby/lib/petstore/models/api_response.rb index 5157e8e709a..04f7899d9c7 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/api_response.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/api_response.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb b/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb index 4e6ad34fd37..8f03eed87c1 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb b/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb index 601bedc078b..3d61a32376b 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/array_test.rb b/samples/client/petstore/ruby/lib/petstore/models/array_test.rb index 6b264080bde..b662149f10d 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/array_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/array_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb b/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb index 534d927d145..b3c3e7950b7 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/cat.rb b/samples/client/petstore/ruby/lib/petstore/models/cat.rb index f6db6efe5aa..f253f57fdf0 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/cat.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/cat.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb b/samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb index c18d0b53bfa..8953ec6f2ba 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/cat_all_of.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/category.rb b/samples/client/petstore/ruby/lib/petstore/models/category.rb index 88ec6084dd8..052eee94b80 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/category.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/category.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/class_model.rb b/samples/client/petstore/ruby/lib/petstore/models/class_model.rb index 39aa024760f..1d4ddb272a4 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/class_model.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/class_model.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/client.rb b/samples/client/petstore/ruby/lib/petstore/models/client.rb index db7747b46bb..a353bdff788 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/client.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/dog.rb b/samples/client/petstore/ruby/lib/petstore/models/dog.rb index b1d6079c82f..17e7dce1508 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/dog.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/dog.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb b/samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb index 1cb84f0e61c..9737bc32054 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/dog_all_of.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb b/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb index 0a9cb55c0aa..74d31bd8ecc 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb b/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb index 16a9e4bf8b9..e2276f7a91e 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb b/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb index 1acb6f30c05..5b8f6a5f845 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/file.rb b/samples/client/petstore/ruby/lib/petstore/models/file.rb index 4a7ff7aaa82..7e29ced7b54 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/file.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/file.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb b/samples/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb index 9730ea35afd..956dfb2bbc6 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/file_schema_test_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/foo.rb b/samples/client/petstore/ruby/lib/petstore/models/foo.rb index 88efb8fa1e9..be95ba24650 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/foo.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/foo.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/format_test.rb b/samples/client/petstore/ruby/lib/petstore/models/format_test.rb index f38dc93aa97..92af39f9d49 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/format_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/format_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb b/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb index 1182efcfb6c..2d533b4fd98 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/health_check_result.rb b/samples/client/petstore/ruby/lib/petstore/models/health_check_result.rb index 2b94909e5ae..4d492a313f2 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/health_check_result.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/health_check_result.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/inline_response_default.rb b/samples/client/petstore/ruby/lib/petstore/models/inline_response_default.rb index bb6a2f43f8f..5bb5cc70dca 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/inline_response_default.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/inline_response_default.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/list.rb b/samples/client/petstore/ruby/lib/petstore/models/list.rb index f6caf7e1bf7..21f2c549e48 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/list.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/list.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/map_test.rb b/samples/client/petstore/ruby/lib/petstore/models/map_test.rb index f62e083fbf1..118e8996127 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/map_test.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/map_test.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb b/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb index 0b43eb18c5f..39705564f74 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb b/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb index 2b621b39f98..cdc1769f1f3 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/model_return.rb b/samples/client/petstore/ruby/lib/petstore/models/model_return.rb index c8329ddd21d..b311f40ea5f 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/model_return.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/model_return.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/name.rb b/samples/client/petstore/ruby/lib/petstore/models/name.rb index 0e04c8051e6..357df7b1c4c 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/name.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/name.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/nullable_class.rb b/samples/client/petstore/ruby/lib/petstore/models/nullable_class.rb index ca62f36112c..090bf841120 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/nullable_class.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/nullable_class.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/number_only.rb b/samples/client/petstore/ruby/lib/petstore/models/number_only.rb index 377b0ebd06d..9d4ff07978a 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/number_only.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/number_only.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/order.rb b/samples/client/petstore/ruby/lib/petstore/models/order.rb index eb69fcb2f65..230c5a33898 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/order.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/order.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb index 6ad098058e5..17fee120f6e 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb index 8fcb778f0cd..e5898ebe61f 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb index 1e3a0d81e0d..45301a396f5 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_default_value.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb index 41223e725c1..811d2b6d425 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb index f78be4ae36a..a6cb98289a9 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum_integer_default_value.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_object_with_enum_property.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_object_with_enum_property.rb index 5999b9b7abd..f42a4535279 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/outer_object_with_enum_property.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/outer_object_with_enum_property.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/pet.rb b/samples/client/petstore/ruby/lib/petstore/models/pet.rb index 6eeb1b9d31b..f4af7f2be4d 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/pet.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/pet.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb b/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb index 49c5c4d0fd3..61024a2132f 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb b/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb index 6fec567d82b..4febcbb15c3 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/tag.rb b/samples/client/petstore/ruby/lib/petstore/models/tag.rb index 42413453a92..942a6e36a89 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/tag.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/tag.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/models/user.rb b/samples/client/petstore/ruby/lib/petstore/models/user.rb index 381f8d7a7fc..b5e41d56f8d 100644 --- a/samples/client/petstore/ruby/lib/petstore/models/user.rb +++ b/samples/client/petstore/ruby/lib/petstore/models/user.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/lib/petstore/version.rb b/samples/client/petstore/ruby/lib/petstore/version.rb index 7944842c999..9b8b6a904c3 100644 --- a/samples/client/petstore/ruby/lib/petstore/version.rb +++ b/samples/client/petstore/ruby/lib/petstore/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/petstore.gemspec b/samples/client/petstore/ruby/petstore.gemspec index 39a3335d994..001a6483c22 100644 --- a/samples/client/petstore/ruby/petstore.gemspec +++ b/samples/client/petstore/ruby/petstore.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/api_client_spec.rb b/samples/client/petstore/ruby/spec/api_client_spec.rb index c08c2c07b98..b91cd25d81f 100644 --- a/samples/client/petstore/ruby/spec/api_client_spec.rb +++ b/samples/client/petstore/ruby/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/configuration_spec.rb b/samples/client/petstore/ruby/spec/configuration_spec.rb index d4ab07f49d1..c70985b736d 100644 --- a/samples/client/petstore/ruby/spec/configuration_spec.rb +++ b/samples/client/petstore/ruby/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/ruby/spec/spec_helper.rb b/samples/client/petstore/ruby/spec/spec_helper.rb index d3f03e96b98..04bf32c24f3 100644 --- a/samples/client/petstore/ruby/spec/spec_helper.rb +++ b/samples/client/petstore/ruby/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/client/petstore/rust/hyper/petstore/.openapi-generator/VERSION b/samples/client/petstore/rust/hyper/petstore/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/rust/hyper/petstore/.openapi-generator/VERSION +++ b/samples/client/petstore/rust/hyper/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/VERSION b/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/VERSION +++ b/samples/client/petstore/rust/reqwest/petstore-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/VERSION b/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/VERSION +++ b/samples/client/petstore/rust/reqwest/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/scala-akka/.openapi-generator/VERSION b/samples/client/petstore/scala-akka/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/scala-akka/.openapi-generator/VERSION +++ b/samples/client/petstore/scala-akka/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION b/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION +++ b/samples/client/petstore/scala-httpclient-deprecated/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/scala-sttp/.openapi-generator/VERSION b/samples/client/petstore/scala-sttp/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/scala-sttp/.openapi-generator/VERSION +++ b/samples/client/petstore/scala-sttp/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/PetApi.java index f0942e6db7d..acad72c7657 100644 --- a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/StoreApi.java index 4bae8225606..78e766c052d 100644 --- a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/UserApi.java index d796bc41a17..87e7ea4116a 100644 --- a/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-cloud-async/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-no-nullable/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud-no-nullable/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/spring-cloud-no-nullable/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/PetApi.java index 93eefd68af0..eb90c9897bf 100644 --- a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/StoreApi.java index 5a23e71468e..96e69aa2cb7 100644 --- a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/UserApi.java index 0e813129335..016252e8c97 100644 --- a/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-cloud-no-nullable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-spring-pageable/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud-spring-pageable/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/spring-cloud-spring-pageable/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud-spring-pageable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/PetApi.java index 398ff133bc0..492fa43936d 100644 --- a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java index 81c7b71de1c..4f55c97335f 100644 --- a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/UserApi.java index 9d0f30811ff..f02012da623 100644 --- a/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/spring-cloud/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-cloud/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java index 93eefd68af0..eb90c9897bf 100644 --- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java index 5a23e71468e..96e69aa2cb7 100644 --- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java index 0e813129335..016252e8c97 100644 --- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-stubs/.openapi-generator/VERSION b/samples/client/petstore/spring-stubs/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/spring-stubs/.openapi-generator/VERSION +++ b/samples/client/petstore/spring-stubs/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java index 9fd9bb27849..d766a6d9efe 100644 --- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java index 673f1f6b32b..202326f88b5 100644 --- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java index 5a6d3ac6934..3120dd99c13 100644 --- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/client/petstore/swift5/alamofireLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/alamofireLibrary/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/alamofireLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/combineLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/combineLibrary/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/combineLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/combineLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/default/.openapi-generator/VERSION b/samples/client/petstore/swift5/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/default/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/deprecated/.openapi-generator/VERSION b/samples/client/petstore/swift5/deprecated/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/deprecated/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/deprecated/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/nonPublicApi/.openapi-generator/VERSION b/samples/client/petstore/swift5/nonPublicApi/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/nonPublicApi/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/nonPublicApi/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/objcCompatible/.openapi-generator/VERSION b/samples/client/petstore/swift5/objcCompatible/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/objcCompatible/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/objcCompatible/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION b/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/oneOf/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/promisekitLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/promisekitLibrary/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/promisekitLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/readonlyProperties/.openapi-generator/VERSION b/samples/client/petstore/swift5/readonlyProperties/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/readonlyProperties/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/readonlyProperties/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/resultLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/resultLibrary/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/resultLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/resultLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/rxswiftLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/urlsessionLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/urlsessionLibrary/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/urlsessionLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION b/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/vaporLibrary/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION b/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION +++ b/samples/client/petstore/swift5/x-swift-hashable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v11-oneOf/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v7-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v7-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/single-request-parameter/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-prefixed-module-name/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-aurelia/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/composed-schemas/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/composed-schemas/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-axios/builds/composed-schemas/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/composed-schemas/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-axios/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/es6-target/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/es6-target/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-axios/builds/es6-target/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/es6-target/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-complex-headers/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-complex-headers/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-axios/builds/with-complex-headers/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-complex-headers/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-interfaces/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-interfaces/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-axios/builds/with-interfaces/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-interfaces/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-npm-version-and-separate-models-and-api/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-npm-version/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-npm-version/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-axios/builds/with-npm-version/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-npm-version/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/.openapi-generator/VERSION b/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-axios/builds/with-single-request-parameters/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/default-v3.0/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-fetch/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/enum/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/enum/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-fetch/builds/enum/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/enum/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/es6-target/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-fetch/builds/es6-target/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/typescript-three-plus/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/with-interfaces/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/with-npm-version/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/.openapi-generator/VERSION b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION b/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-inversify/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-jquery/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-jquery/npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-nestjs-v6-provided-in-root/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-node/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-node/npm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-redux-query/builds/with-npm-version/.openapi-generator/VERSION b/samples/client/petstore/typescript-redux-query/builds/with-npm-version/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-redux-query/builds/with-npm-version/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-redux-query/builds/with-npm-version/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-rxjs/builds/default/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/es6-target/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/.openapi-generator/VERSION b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/.openapi-generator/VERSION +++ b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/config/petstore/protobuf-schema/.openapi-generator/VERSION b/samples/config/petstore/protobuf-schema/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/config/petstore/protobuf-schema/.openapi-generator/VERSION +++ b/samples/config/petstore/protobuf-schema/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/meta-codegen/lib/pom.xml b/samples/meta-codegen/lib/pom.xml index 87c5bee9003..054e23f77a1 100644 --- a/samples/meta-codegen/lib/pom.xml +++ b/samples/meta-codegen/lib/pom.xml @@ -121,7 +121,7 @@ UTF-8 - 5.2.1-SNAPSHOT + 5.3.0-SNAPSHOT 1.0.0 4.8.1 diff --git a/samples/meta-codegen/usage/.openapi-generator/VERSION b/samples/meta-codegen/usage/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/meta-codegen/usage/.openapi-generator/VERSION +++ b/samples/meta-codegen/usage/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/elm/.openapi-generator/VERSION b/samples/openapi3/client/elm/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/elm/.openapi-generator/VERSION +++ b/samples/openapi3/client/elm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/.openapi-generator/VERSION b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/.openapi-generator/VERSION +++ b/samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/.openapi-generator/VERSION b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/.openapi-generator/VERSION +++ b/samples/openapi3/client/extensions/x-auth-id-alias/java/jersey2-java8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/python/.openapi-generator/VERSION b/samples/openapi3/client/extensions/x-auth-id-alias/python/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/python/.openapi-generator/VERSION +++ b/samples/openapi3/client/extensions/x-auth-id-alias/python/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/.openapi-generator/VERSION b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/.openapi-generator/VERSION +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb index 27209ee6258..83d0282783c 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api/usage_api.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api/usage_api.rb index b6902d57386..79f8eea8901 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api/usage_api.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api/usage_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb index a519f802521..f9d94ce3f18 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_error.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_error.rb index 5644ddf70be..01930080d4d 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_error.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb index 76aa275da34..615cfc8f10c 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb index 246a195574d..0926871b76d 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/api_client_spec.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/api_client_spec.rb index f5832089793..c8cc875c8a8 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/api_client_spec.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/configuration_spec.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/configuration_spec.rb index adf1f285ea7..af36fcf688c 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/configuration_spec.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb index 4ceaf1842c6..8c1b483f8bd 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec index e47461deb74..a7d7fe4fdc1 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/x_auth_id_alias.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/python/.openapi-generator/VERSION b/samples/openapi3/client/features/dynamic-servers/python/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/features/dynamic-servers/python/.openapi-generator/VERSION +++ b/samples/openapi3/client/features/dynamic-servers/python/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/.openapi-generator/VERSION b/samples/openapi3/client/features/dynamic-servers/ruby/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/.openapi-generator/VERSION +++ b/samples/openapi3/client/features/dynamic-servers/ruby/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/dynamic_servers.gemspec b/samples/openapi3/client/features/dynamic-servers/ruby/dynamic_servers.gemspec index fe927f40c59..430554e828c 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/dynamic_servers.gemspec +++ b/samples/openapi3/client/features/dynamic-servers/ruby/dynamic_servers.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers.rb index f54cf39e8c9..ac392c37c44 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb index dbacab75927..c028a8f36ad 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api/usage_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb index a12f32b07bf..99f39214ecc 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_error.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_error.rb index 36de5507244..f81b30296ed 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_error.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb index 658a9776051..ef4d3ada5db 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/version.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/version.rb index b794287804e..3ed57ed41db 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/version.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/spec/api_client_spec.rb b/samples/openapi3/client/features/dynamic-servers/ruby/spec/api_client_spec.rb index c7e800a0662..febf50772fe 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/spec/api_client_spec.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/spec/configuration_spec.rb b/samples/openapi3/client/features/dynamic-servers/ruby/spec/configuration_spec.rb index 582cdc3f690..a015390525b 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/spec/configuration_spec.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/spec/spec_helper.rb b/samples/openapi3/client/features/dynamic-servers/ruby/spec/spec_helper.rb index 953cdfb66fd..eb099feadc3 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/spec/spec_helper.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/.openapi-generator/VERSION b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/.openapi-generator/VERSION +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore.rb index 6af98b16026..ad99d7e562d 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api/usage_api.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api/usage_api.rb index 192cc874225..28bd76342d0 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api/usage_api.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api/usage_api.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb index 4f2db3ad597..77109ac5853 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_client.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_error.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_error.rb index 020c22a7eca..160b69074fe 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_error.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/api_error.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb index a2e04a83d6f..f8557cbb519 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/array_alias.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/array_alias.rb index 2be4aff06aa..650277a0c86 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/array_alias.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/array_alias.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/map_alias.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/map_alias.rb index 07ea0f110d8..8147ceab4a2 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/map_alias.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/models/map_alias.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/version.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/version.rb index 84e0ae869a4..399a9a566b2 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/version.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/version.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/petstore.gemspec b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/petstore.gemspec index 101c98cef78..4d536b06fc0 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/petstore.gemspec +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/petstore.gemspec @@ -8,7 +8,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/api_client_spec.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/api_client_spec.rb index d2d7ad30930..13029f22c6d 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/api_client_spec.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/api_client_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/configuration_spec.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/configuration_spec.rb index 40e58da1a41..71d78cdd0da 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/configuration_spec.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/configuration_spec.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/spec_helper.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/spec_helper.rb index 0341ec79ac0..38a08202116 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/spec_helper.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/spec/spec_helper.rb @@ -6,7 +6,7 @@ The version of the OpenAPI document: 1.0.0 Generated by: https://openapi-generator.tech -OpenAPI Generator version: 5.2.1-SNAPSHOT +OpenAPI Generator version: 5.3.0-SNAPSHOT =end diff --git a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart-dio-next/petstore_client_lib_fake/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart-dio/petstore_client_lib_fake/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart2/petstore_client_lib_fake/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/dart2/petstore_json_serializable_client_lib_fake/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/go/go-petstore/.openapi-generator/VERSION b/samples/openapi3/client/petstore/go/go-petstore/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/go/go-petstore/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/go/go-petstore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/.openapi-generator/VERSION b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/java/jersey2-java8-special-characters/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/java/jersey2-java8/.openapi-generator/VERSION b/samples/openapi3/client/petstore/java/jersey2-java8/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/java/jersey2-java8/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/java/jersey2-java8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/java/native/.openapi-generator/VERSION b/samples/openapi3/client/petstore/java/native/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/java/native/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/java/native/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/python-legacy/.openapi-generator/VERSION b/samples/openapi3/client/petstore/python-legacy/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100755 --- a/samples/openapi3/client/petstore/python-legacy/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/python-legacy/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/python/.openapi-generator/VERSION b/samples/openapi3/client/petstore/python/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/python/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/python/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/deno/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/VERSION b/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/schema/petstore/ktorm/.openapi-generator/VERSION b/samples/schema/petstore/ktorm/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/schema/petstore/ktorm/.openapi-generator/VERSION +++ b/samples/schema/petstore/ktorm/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/schema/petstore/mysql/.openapi-generator/VERSION b/samples/schema/petstore/mysql/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/schema/petstore/mysql/.openapi-generator/VERSION +++ b/samples/schema/petstore/mysql/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION b/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION +++ b/samples/schema/petstore/wsdl-schema/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore-3.0/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore-3.0/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/aspnetcore-3.0/.openapi-generator/VERSION +++ b/samples/server/petstore/aspnetcore-3.0/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore-3.1/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore-3.1/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/aspnetcore-3.1/.openapi-generator/VERSION +++ b/samples/server/petstore/aspnetcore-3.1/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION +++ b/samples/server/petstore/aspnetcore-5.0/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/aspnetcore/.openapi-generator/VERSION b/samples/server/petstore/aspnetcore/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/aspnetcore/.openapi-generator/VERSION +++ b/samples/server/petstore/aspnetcore/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION b/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION +++ b/samples/server/petstore/cpp-pistache/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION b/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION +++ b/samples/server/petstore/cpp-qt-qhttpengine-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/erlang-server/.openapi-generator/VERSION b/samples/server/petstore/erlang-server/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/erlang-server/.openapi-generator/VERSION +++ b/samples/server/petstore/erlang-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/go-api-server/.openapi-generator/VERSION b/samples/server/petstore/go-api-server/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/go-api-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-api-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/go-chi-server/.openapi-generator/VERSION b/samples/server/petstore/go-chi-server/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/go-chi-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-chi-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/go-echo-server/.openapi-generator/VERSION b/samples/server/petstore/go-echo-server/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/go-echo-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-echo-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/go-gin-api-server/.openapi-generator/VERSION b/samples/server/petstore/go-gin-api-server/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/go-gin-api-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-gin-api-server/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/haskell-servant/.openapi-generator/VERSION b/samples/server/petstore/haskell-servant/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/haskell-servant/.openapi-generator/VERSION +++ b/samples/server/petstore/haskell-servant/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-msf4j/.openapi-generator/VERSION b/samples/server/petstore/java-msf4j/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-msf4j/.openapi-generator/VERSION +++ b/samples/server/petstore/java-msf4j/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-api-package-override/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-api-package-override/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-play-framework-api-package-override/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-api-package-override/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-async/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-async/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-play-framework-async/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-controller-only/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-controller-only/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-play-framework-controller-only/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-controller-only/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-fake-endpoints/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-fake-endpoints/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-play-framework-fake-endpoints/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-fake-endpoints/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-bean-validation/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-bean-validation/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-play-framework-no-bean-validation/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-bean-validation/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-exception-handling/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-exception-handling/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-play-framework-no-exception-handling/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-exception-handling/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-interface/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-interface/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-play-framework-no-interface/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-interface/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-nullable/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-nullable/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-play-framework-no-nullable/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-swagger-ui/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-swagger-ui/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-play-framework-no-swagger-ui/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-swagger-ui/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework-no-wrap-calls/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework-no-wrap-calls/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-play-framework-no-wrap-calls/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework-no-wrap-calls/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-play-framework/.openapi-generator/VERSION b/samples/server/petstore/java-play-framework/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-play-framework/.openapi-generator/VERSION +++ b/samples/server/petstore/java-play-framework/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-undertow/.openapi-generator/VERSION b/samples/server/petstore/java-undertow/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-undertow/.openapi-generator/VERSION +++ b/samples/server/petstore/java-undertow/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/java-vertx-web/.openapi-generator/VERSION b/samples/server/petstore/java-vertx-web/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/java-vertx-web/.openapi-generator/VERSION +++ b/samples/server/petstore/java-vertx-web/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-cdi-default-value/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-jersey/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/default-value/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/default-value/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-resteasy/default-value/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/default-value/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION b/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-server/ktor/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/kotlin-server/ktor/README.md b/samples/server/petstore/kotlin-server/ktor/README.md index 6de4727b134..e556a598af9 100644 --- a/samples/server/petstore/kotlin-server/ktor/README.md +++ b/samples/server/petstore/kotlin-server/ktor/README.md @@ -2,7 +2,7 @@ This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -Generated by OpenAPI Generator 5.2.1-SNAPSHOT. +Generated by OpenAPI Generator 5.3.0-SNAPSHOT. ## Requires diff --git a/samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/VERSION b/samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/PetApi.kt b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/PetApi.kt index 3a460d22d20..fdd893ecc20 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/PetApi.kt +++ b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/PetApi.kt @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/StoreApi.kt b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/StoreApi.kt index 2e7ef4baf88..d5200def55a 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/StoreApi.kt +++ b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/StoreApi.kt @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/UserApi.kt b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/UserApi.kt index 681de2dadf9..f9e54b11fca 100644 --- a/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/UserApi.kt +++ b/samples/server/petstore/kotlin-springboot-delegate/src/main/kotlin/org/openapitools/api/UserApi.kt @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION b/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-springboot-reactive/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION b/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION +++ b/samples/server/petstore/kotlin-springboot/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-laravel/.openapi-generator/VERSION b/samples/server/petstore/php-laravel/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/php-laravel/.openapi-generator/VERSION +++ b/samples/server/petstore/php-laravel/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-lumen/.openapi-generator/VERSION b/samples/server/petstore/php-lumen/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/php-lumen/.openapi-generator/VERSION +++ b/samples/server/petstore/php-lumen/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION b/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION +++ b/samples/server/petstore/php-mezzio-ph-modern/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-mezzio-ph/.openapi-generator/VERSION b/samples/server/petstore/php-mezzio-ph/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/php-mezzio-ph/.openapi-generator/VERSION +++ b/samples/server/petstore/php-mezzio-ph/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-slim4/.openapi-generator/VERSION b/samples/server/petstore/php-slim4/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/php-slim4/.openapi-generator/VERSION +++ b/samples/server/petstore/php-slim4/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/.openapi-generator/VERSION b/samples/server/petstore/php-symfony/SymfonyBundle-php/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/php-symfony/SymfonyBundle-php/.openapi-generator/VERSION +++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/VERSION b/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/VERSION +++ b/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION b/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION +++ b/samples/server/petstore/python-aiohttp/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-blueplanet/.openapi-generator/VERSION b/samples/server/petstore/python-blueplanet/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/python-blueplanet/.openapi-generator/VERSION +++ b/samples/server/petstore/python-blueplanet/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-fastapi/.openapi-generator/VERSION b/samples/server/petstore/python-fastapi/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/python-fastapi/.openapi-generator/VERSION +++ b/samples/server/petstore/python-fastapi/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/python-flask/.openapi-generator/VERSION b/samples/server/petstore/python-flask/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/python-flask/.openapi-generator/VERSION +++ b/samples/server/petstore/python-flask/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/multipart-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/multipart-v3/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/rust-server/output/multipart-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/multipart-v3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/no-example-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/no-example-v3/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/rust-server/output/no-example-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/no-example-v3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/openapi-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/openapi-v3/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/rust-server/output/openapi-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/openapi-v3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/ops-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/ops-v3/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/rust-server/output/ops-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/ops-v3/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/ping-bearer-auth/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/ping-bearer-auth/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/rust-server/output/ping-bearer-auth/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/ping-bearer-auth/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/output/rust-server-test/.openapi-generator/VERSION b/samples/server/petstore/rust-server/output/rust-server-test/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/rust-server/output/rust-server-test/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/output/rust-server-test/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-default-value/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-default-value/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/spring-mvc-default-value/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-default-value/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestHeadersApi.java b/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestHeadersApi.java index 302b53196c7..f887d13e7e2 100644 --- a/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestHeadersApi.java +++ b/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestHeadersApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestQueryParamsApi.java b/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestQueryParamsApi.java index 1238f1af6c0..a60eb42044e 100644 --- a/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestQueryParamsApi.java +++ b/samples/server/petstore/spring-mvc-default-value/src/main/java/org/openapitools/api/TestQueryParamsApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java index d7e4c9cba9e..1cc0204be0e 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java index d06d27d099a..f174b2f447d 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index f57e8fffab3..14a9423d37c 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java index 7392891444f..5c45b85f2c0 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java index a6a2f5bc9e3..d8d7da0f217 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java index cbc973173cb..45ae7ec69eb 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java index 64cbfe9d780..7ce634d1be0 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java index 8a06982a3fc..4d9e5b8760a 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 9c5f60b0692..052364629c6 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java index ef12458e572..221a09ec378 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java index 60f43330244..38fb04584a9 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java index 999e354510c..1e2214e9870 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-no-nullable/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java index 64cbfe9d780..7ce634d1be0 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeApi.java index 771534d2d4f..bcd856c9bf5 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 9c5f60b0692..052364629c6 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/PetApi.java index ef12458e572..221a09ec378 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/StoreApi.java index 60f43330244..38fb04584a9 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/UserApi.java index 999e354510c..1e2214e9870 100644 --- a/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-no-nullable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-spring-pageable/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-spring-pageable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java index 64cbfe9d780..7ce634d1be0 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java index 7ebc773cf49..35b2af2e786 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 9c5f60b0692..052364629c6 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/PetApi.java index 2214da8b9fa..f9fe1194c59 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java index 60f43330244..38fb04584a9 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/UserApi.java index 999e354510c..1e2214e9870 100644 --- a/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-spring-pageable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/spring-mvc/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java index 64cbfe9d780..7ce634d1be0 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java index 771534d2d4f..bcd856c9bf5 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 9c5f60b0692..052364629c6 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java index ef12458e572..221a09ec378 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java index 60f43330244..38fb04584a9 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java index 999e354510c..1e2214e9870 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/.openapi-generator/VERSION b/samples/server/petstore/springboot-beanvalidation-no-nullable/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java index eebc98d2dfa..c021efc558e 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeApi.java index 70c9a533c63..349d23471c5 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 42cdda440d2..79449a43a48 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/PetApi.java index 150a5332459..d0771cb7f66 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/StoreApi.java index 8f23fb41091..8981df90f26 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/UserApi.java index cb03e6c990b..f32e5bee8ad 100644 --- a/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION b/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java index 64cbfe9d780..7ce634d1be0 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java index 771534d2d4f..bcd856c9bf5 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 9c5f60b0692..052364629c6 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java index ef12458e572..221a09ec378 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java index 60f43330244..38fb04584a9 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java index 999e354510c..1e2214e9870 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION b/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java index d6b43670cdb..7b47a59ab74 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java index 6e5e680c167..4c18809b0af 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index fcc94e9fea3..a24e53dae1b 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java index 4c6387ff522..756ca756134 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java index ed840b0974f..5ecd718348b 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java index 5f320c6d887..5351d210bd3 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION b/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java index d6b43670cdb..7b47a59ab74 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java index 6e5e680c167..4c18809b0af 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index fcc94e9fea3..a24e53dae1b 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java index 4c6387ff522..756ca756134 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java index ed840b0974f..5ecd718348b 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java index 5f320c6d887..5351d210bd3 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION b/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java index 848d47ae9a7..0d4f43b923e 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java index f1accae4815..d6035b0cf08 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index a5be0ff3227..7385b9eeda9 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java index cddc74a5094..4308ec69fa7 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java index c3b19cbc6b1..16cf585d957 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java index 1413ef568dc..c45be29d1da 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION b/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java index f5cbb82c92b..191baa688e6 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java index 3fc5eb07c99..06f431328db 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 00df7308c0f..b0dc4499cd8 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java index 934e81c21e9..fc8d74e30c6 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java index 87e1ee73789..2fcf6da6081 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java index 46a734917ec..380b6b52620 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/.openapi-generator/VERSION b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java index eebc98d2dfa..c021efc558e 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeApi.java index b89152793eb..06d6555f91d 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 42cdda440d2..79449a43a48 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/PetApi.java index f51338dd3fb..66c57499547 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/StoreApi.java index 8f23fb41091..8981df90f26 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/UserApi.java index cb03e6c990b..f32e5bee8ad 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/.openapi-generator/VERSION b/samples/server/petstore/springboot-spring-pageable-delegatePattern/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/AnotherFakeApi.java index d6b43670cdb..7b47a59ab74 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeApi.java index fb71771602a..c1a5b866f29 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index fcc94e9fea3..a24e53dae1b 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/PetApi.java index 08bd0711453..c707e12741a 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/StoreApi.java index ed840b0974f..5ecd718348b 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/UserApi.java index 5f320c6d887..5351d210bd3 100644 --- a/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/.openapi-generator/VERSION b/samples/server/petstore/springboot-spring-pageable-without-j8/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java index eebc98d2dfa..c021efc558e 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeApi.java index b89152793eb..06d6555f91d 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 42cdda440d2..79449a43a48 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/PetApi.java index f51338dd3fb..66c57499547 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/StoreApi.java index 8f23fb41091..8981df90f26 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/UserApi.java index cb03e6c990b..f32e5bee8ad 100644 --- a/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-spring-pageable-without-j8/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/.openapi-generator/VERSION b/samples/server/petstore/springboot-spring-pageable/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot-spring-pageable/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-spring-pageable/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java index 64cbfe9d780..7ce634d1be0 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java index 7ebc773cf49..35b2af2e786 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 9c5f60b0692..052364629c6 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/PetApi.java index 2214da8b9fa..f9fe1194c59 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java index 60f43330244..38fb04584a9 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/UserApi.java index 999e354510c..1e2214e9870 100644 --- a/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-spring-pageable/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION b/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java index 64cbfe9d780..7ce634d1be0 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java index 4cb96cc56c6..9d8edbbe6df 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 9c5f60b0692..052364629c6 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java index 47b2cf0b3b1..92868639514 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java index 60f43330244..38fb04584a9 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java index 999e354510c..1e2214e9870 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION b/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-virtualan/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java index e8237f4485c..83b9db848ef 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeApi.java index e778761d53f..31b97c95566 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeClassnameTestApi.java index 5cf1ad061c5..4321e9b55f6 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/PetApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/PetApi.java index 05e6deef8da..7e58caa64cb 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/PetApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/StoreApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/StoreApi.java index 4e5a9af464d..1175067299c 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/StoreApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/UserApi.java b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/UserApi.java index d323b358c64..81f28c1771a 100644 --- a/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/UserApi.java +++ b/samples/server/petstore/springboot-virtualan/src/main/java/org/openapitools/virtualan/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/.openapi-generator/VERSION b/samples/server/petstore/springboot/.openapi-generator/VERSION index 862529f8cac..4b448de535c 100644 --- a/samples/server/petstore/springboot/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1-SNAPSHOT \ No newline at end of file +5.3.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java index 64cbfe9d780..7ce634d1be0 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java index 771534d2d4f..bcd856c9bf5 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 9c5f60b0692..052364629c6 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java index ef12458e572..221a09ec378 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java index 60f43330244..38fb04584a9 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java index 999e354510c..1e2214e9870 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.2.1-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (5.3.0-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */

    m+=12=9k&=d&7^p|Bm!(&7ZaY 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

  • $xC{#v7+N0p9amkVWI=`4^;7&jmSYZYGU- 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

  • `|OdZeZuu1h-^8pm#jciHk?~&Tp5O&Eg@&Ar<3+ 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%0AkeNb?L(B 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 DSU7Lt literal 7907132 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%0Aaw6c00 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